@skbkontur/react-ui 4.21.2 → 4.21.4

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 (598) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
  3. package/cjs/components/Autocomplete/Autocomplete.js +2 -1
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +1 -0
  6. package/cjs/components/Button/Button.js +2 -1
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Calendar/Calendar.d.ts +1 -0
  9. package/cjs/components/Calendar/Calendar.js +2 -1
  10. package/cjs/components/Calendar/Calendar.js.map +1 -1
  11. package/cjs/components/Calendar/DayCellView.js +8 -5
  12. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  13. package/cjs/components/Center/Center.d.ts +1 -0
  14. package/cjs/components/Center/Center.js +2 -1
  15. package/cjs/components/Center/Center.js.map +1 -1
  16. package/cjs/components/Checkbox/Checkbox.d.ts +1 -0
  17. package/cjs/components/Checkbox/Checkbox.js +2 -1
  18. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  19. package/cjs/components/ComboBox/ComboBox.d.ts +1 -0
  20. package/cjs/components/ComboBox/ComboBox.js +2 -1
  21. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  22. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -0
  23. package/cjs/components/CurrencyInput/CurrencyInput.js +2 -1
  24. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  25. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +1 -0
  26. package/cjs/components/CurrencyLabel/CurrencyLabel.js +1 -0
  27. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  28. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  29. package/cjs/components/DateInput/DateInput.js +2 -1
  30. package/cjs/components/DateInput/DateInput.js.map +1 -1
  31. package/cjs/components/DatePicker/DatePicker.d.ts +1 -0
  32. package/cjs/components/DatePicker/DatePicker.js +2 -1
  33. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  34. package/cjs/components/DatePicker/Picker.d.ts +1 -0
  35. package/cjs/components/DatePicker/Picker.js +2 -1
  36. package/cjs/components/DatePicker/Picker.js.map +1 -1
  37. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  38. package/cjs/components/Dropdown/Dropdown.js +2 -1
  39. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  40. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  41. package/cjs/components/DropdownMenu/DropdownMenu.js +2 -1
  42. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  43. package/cjs/components/FileUploader/FileUploader.js +2 -1
  44. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  45. package/cjs/components/FxInput/FxInput.d.ts +1 -0
  46. package/cjs/components/FxInput/FxInput.js +2 -1
  47. package/cjs/components/FxInput/FxInput.js.map +1 -1
  48. package/cjs/components/Gapped/Gapped.d.ts +1 -0
  49. package/cjs/components/Gapped/Gapped.js +2 -1
  50. package/cjs/components/Gapped/Gapped.js.map +1 -1
  51. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  52. package/cjs/components/GlobalLoader/GlobalLoader.js +4 -1
  53. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  54. package/cjs/components/Group/Group.d.ts +1 -0
  55. package/cjs/components/Group/Group.js +3 -1
  56. package/cjs/components/Group/Group.js.map +1 -1
  57. package/cjs/components/Hint/Hint.d.ts +1 -0
  58. package/cjs/components/Hint/Hint.js +2 -1
  59. package/cjs/components/Hint/Hint.js.map +1 -1
  60. package/cjs/components/Input/Input.d.ts +1 -0
  61. package/cjs/components/Input/Input.js +2 -1
  62. package/cjs/components/Input/Input.js.map +1 -1
  63. package/cjs/components/Kebab/Kebab.d.ts +1 -0
  64. package/cjs/components/Kebab/Kebab.js +2 -1
  65. package/cjs/components/Kebab/Kebab.js.map +1 -1
  66. package/cjs/components/Link/Link.d.ts +1 -0
  67. package/cjs/components/Link/Link.js +2 -1
  68. package/cjs/components/Link/Link.js.map +1 -1
  69. package/cjs/components/Loader/Loader.d.ts +1 -0
  70. package/cjs/components/Loader/Loader.js +2 -1
  71. package/cjs/components/Loader/Loader.js.map +1 -1
  72. package/cjs/components/MenuFooter/MenuFooter.d.ts +1 -0
  73. package/cjs/components/MenuFooter/MenuFooter.js +1 -0
  74. package/cjs/components/MenuFooter/MenuFooter.js.map +1 -1
  75. package/cjs/components/MenuHeader/MenuHeader.d.ts +1 -0
  76. package/cjs/components/MenuHeader/MenuHeader.js +1 -0
  77. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  78. package/cjs/components/MenuItem/MenuItem.d.ts +4 -0
  79. package/cjs/components/MenuItem/MenuItem.js +29 -10
  80. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  81. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +1 -0
  82. package/cjs/components/MenuSeparator/MenuSeparator.js +2 -1
  83. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  84. package/cjs/components/MiniModal/MiniModal.js +0 -2
  85. package/cjs/components/MiniModal/MiniModal.js.map +1 -1
  86. package/cjs/components/Modal/Modal.d.ts +1 -0
  87. package/cjs/components/Modal/Modal.js +2 -1
  88. package/cjs/components/Modal/Modal.js.map +1 -1
  89. package/cjs/components/Modal/ModalBody.d.ts +1 -0
  90. package/cjs/components/Modal/ModalBody.js +2 -1
  91. package/cjs/components/Modal/ModalBody.js.map +1 -1
  92. package/cjs/components/Modal/ModalClose.d.ts +4 -0
  93. package/cjs/components/Modal/ModalClose.js +4 -1
  94. package/cjs/components/Modal/ModalClose.js.map +1 -1
  95. package/cjs/components/Modal/ModalFooter.d.ts +1 -0
  96. package/cjs/components/Modal/ModalFooter.js +1 -0
  97. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  98. package/cjs/components/Modal/ModalHeader.d.ts +1 -0
  99. package/cjs/components/Modal/ModalHeader.js +1 -0
  100. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  101. package/cjs/components/Modal/ModalSeparator.d.ts +4 -0
  102. package/cjs/components/Modal/ModalSeparator.js +4 -1
  103. package/cjs/components/Modal/ModalSeparator.js.map +1 -1
  104. package/cjs/components/Paging/Paging.d.ts +1 -0
  105. package/cjs/components/Paging/Paging.js +10 -6
  106. package/cjs/components/Paging/Paging.js.map +1 -1
  107. package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -0
  108. package/cjs/components/PasswordInput/PasswordInput.js +2 -1
  109. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  110. package/cjs/components/Radio/Radio.d.ts +1 -0
  111. package/cjs/components/Radio/Radio.js +2 -1
  112. package/cjs/components/Radio/Radio.js.map +1 -1
  113. package/cjs/components/RadioGroup/RadioGroup.d.ts +1 -0
  114. package/cjs/components/RadioGroup/RadioGroup.js +2 -1
  115. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  116. package/cjs/components/ResponsiveLayout/ResponsiveLayout.d.ts +4 -0
  117. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +4 -1
  118. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  119. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  120. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  121. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  122. package/cjs/components/Select/Item.d.ts +1 -0
  123. package/cjs/components/Select/Item.js +2 -1
  124. package/cjs/components/Select/Item.js.map +1 -1
  125. package/cjs/components/Select/Select.d.ts +2 -0
  126. package/cjs/components/Select/Select.js +5 -2
  127. package/cjs/components/Select/Select.js.map +1 -1
  128. package/cjs/components/SidePage/SidePage.d.ts +1 -0
  129. package/cjs/components/SidePage/SidePage.js +2 -1
  130. package/cjs/components/SidePage/SidePage.js.map +1 -1
  131. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  132. package/cjs/components/SidePage/SidePageBody.js +2 -1
  133. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  134. package/cjs/components/SidePage/SidePageCloseButton.d.ts +5 -1
  135. package/cjs/components/SidePage/SidePageCloseButton.js +4 -1
  136. package/cjs/components/SidePage/SidePageCloseButton.js.map +1 -1
  137. package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
  138. package/cjs/components/SidePage/SidePageContainer.js +2 -1
  139. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  140. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -0
  141. package/cjs/components/SidePage/SidePageFooter.js +2 -1
  142. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  143. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  144. package/cjs/components/SidePage/SidePageHeader.js +2 -1
  145. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  146. package/cjs/components/SingleToast/SingleToast.d.ts +2 -0
  147. package/cjs/components/SingleToast/SingleToast.js +4 -1
  148. package/cjs/components/SingleToast/SingleToast.js.map +1 -1
  149. package/cjs/components/Spinner/Spinner.d.ts +1 -0
  150. package/cjs/components/Spinner/Spinner.js +2 -1
  151. package/cjs/components/Spinner/Spinner.js.map +1 -1
  152. package/cjs/components/Sticky/Sticky.d.ts +1 -0
  153. package/cjs/components/Sticky/Sticky.js +2 -1
  154. package/cjs/components/Sticky/Sticky.js.map +1 -1
  155. package/cjs/components/Switcher/Switcher.d.ts +1 -0
  156. package/cjs/components/Switcher/Switcher.js +2 -1
  157. package/cjs/components/Switcher/Switcher.js.map +1 -1
  158. package/cjs/components/Tabs/Tab.d.ts +1 -0
  159. package/cjs/components/Tabs/Tab.js +7 -1
  160. package/cjs/components/Tabs/Tab.js.map +1 -1
  161. package/cjs/components/Tabs/Tabs.d.ts +1 -0
  162. package/cjs/components/Tabs/Tabs.js +2 -1
  163. package/cjs/components/Tabs/Tabs.js.map +1 -1
  164. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  165. package/cjs/components/Textarea/Textarea.js +2 -1
  166. package/cjs/components/Textarea/Textarea.js.map +1 -1
  167. package/cjs/components/Toast/Toast.d.ts +1 -0
  168. package/cjs/components/Toast/Toast.js +3 -1
  169. package/cjs/components/Toast/Toast.js.map +1 -1
  170. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  171. package/cjs/components/Toggle/Toggle.js +2 -1
  172. package/cjs/components/Toggle/Toggle.js.map +1 -1
  173. package/cjs/components/Token/Token.d.ts +1 -0
  174. package/cjs/components/Token/Token.js +9 -1
  175. package/cjs/components/Token/Token.js.map +1 -1
  176. package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
  177. package/cjs/components/TokenInput/TokenInput.js +2 -1
  178. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  179. package/cjs/components/TokenInput/TokenInputMenu.d.ts +1 -0
  180. package/cjs/components/TokenInput/TokenInputMenu.js +2 -1
  181. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  182. package/cjs/components/Tooltip/Tooltip.d.ts +1 -0
  183. package/cjs/components/Tooltip/Tooltip.js +2 -1
  184. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  185. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  186. package/cjs/components/TooltipMenu/TooltipMenu.js +3 -1
  187. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  188. package/cjs/internal/CloseButtonIcon/CloseButtonIcon.js +4 -1
  189. package/cjs/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  190. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +5 -26
  191. package/cjs/internal/CommonWrapper/CommonWrapper.js +7 -56
  192. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  193. package/cjs/internal/CommonWrapper/extractCommonProps.d.ts +3 -0
  194. package/cjs/internal/CommonWrapper/extractCommonProps.js +34 -0
  195. package/cjs/internal/CommonWrapper/extractCommonProps.js.map +1 -0
  196. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.d.ts +2 -0
  197. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js +12 -0
  198. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +1 -0
  199. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.d.ts +3 -0
  200. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js +23 -0
  201. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +1 -0
  202. package/cjs/internal/CommonWrapper/index.d.ts +2 -0
  203. package/cjs/internal/CommonWrapper/index.js.map +1 -1
  204. package/cjs/internal/CommonWrapper/types.d.ts +25 -0
  205. package/cjs/internal/CommonWrapper/types.js +1 -0
  206. package/cjs/internal/CommonWrapper/types.js.map +1 -0
  207. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  208. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -1
  209. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  210. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
  211. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
  212. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  213. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  214. package/cjs/internal/CustomComboBox/CustomComboBox.js +2 -1
  215. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  216. package/cjs/internal/DateSelect/DateSelect.d.ts +1 -0
  217. package/cjs/internal/DateSelect/DateSelect.js +2 -1
  218. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  219. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
  220. package/cjs/internal/DropdownContainer/DropdownContainer.js +2 -1
  221. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  222. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  223. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +1 -0
  224. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  225. package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
  226. package/cjs/internal/FocusTrap/FocusTrap.js +3 -1
  227. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  228. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -0
  229. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  230. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  231. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
  232. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  233. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  234. package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
  235. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  236. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.d.ts +1 -0
  237. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +2 -1
  238. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  239. package/cjs/internal/InternalMenu/InternalMenu.d.ts +1 -0
  240. package/cjs/internal/InternalMenu/InternalMenu.js +2 -1
  241. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  242. package/cjs/internal/Menu/Menu.d.ts +1 -0
  243. package/cjs/internal/Menu/Menu.js +2 -1
  244. package/cjs/internal/Menu/Menu.js.map +1 -1
  245. package/cjs/internal/MobilePopup/MobilePopup.d.ts +1 -0
  246. package/cjs/internal/MobilePopup/MobilePopup.js +2 -1
  247. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  248. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +1 -0
  249. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +2 -1
  250. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  251. package/cjs/internal/NativeDateInput/NativeDateInput.d.ts +1 -0
  252. package/cjs/internal/NativeDateInput/NativeDateInput.js +3 -1
  253. package/cjs/internal/NativeDateInput/NativeDateInput.js.map +1 -1
  254. package/cjs/internal/Popup/Popup.d.ts +1 -0
  255. package/cjs/internal/Popup/Popup.js +2 -1
  256. package/cjs/internal/Popup/Popup.js.map +1 -1
  257. package/cjs/internal/Popup/PopupPin.d.ts +1 -0
  258. package/cjs/internal/Popup/PopupPin.js +2 -1
  259. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  260. package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -0
  261. package/cjs/internal/PopupMenu/PopupMenu.js +2 -1
  262. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  263. package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -0
  264. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  265. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  266. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +3 -0
  267. package/cjs/internal/RenderContainer/RenderInnerContainer.js +7 -2
  268. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  269. package/cjs/internal/RenderLayer/RenderLayer.d.ts +1 -0
  270. package/cjs/internal/RenderLayer/RenderLayer.js +2 -1
  271. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  272. package/cjs/internal/ResizeDetector/ResizeDetector.d.ts +1 -0
  273. package/cjs/internal/ResizeDetector/ResizeDetector.js +2 -1
  274. package/cjs/internal/ResizeDetector/ResizeDetector.js.map +1 -1
  275. package/cjs/internal/ZIndex/ZIndex.d.ts +1 -0
  276. package/cjs/internal/ZIndex/ZIndex.js +2 -1
  277. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  278. package/cjs/internal/icons/20px/Icon.d.ts +1 -0
  279. package/cjs/internal/icons/20px/Icon.js +2 -1
  280. package/cjs/internal/icons/20px/Icon.js.map +1 -1
  281. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  282. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  283. package/cjs/lib/locale/LocaleContext.js +2 -1
  284. package/cjs/lib/locale/LocaleContext.js.map +1 -1
  285. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -0
  286. package/cjs/lib/rootNode/rootNodeDecorator.js +4 -1
  287. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  288. package/cjs/lib/theming/ThemeContext.js +2 -1
  289. package/cjs/lib/theming/ThemeContext.js.map +1 -1
  290. package/cjs/lib/toKebabCase.d.ts +1 -0
  291. package/cjs/lib/toKebabCase.js +10 -0
  292. package/cjs/lib/toKebabCase.js.map +1 -0
  293. package/cjs/lib/utils.d.ts +0 -7
  294. package/cjs/lib/utils.js +2 -25
  295. package/cjs/lib/utils.js.map +1 -1
  296. package/cjs/typings/global-react.d.ts +12 -0
  297. package/components/Autocomplete/Autocomplete/Autocomplete.js +1 -1
  298. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  299. package/components/Autocomplete/Autocomplete.d.ts +1 -0
  300. package/components/Button/Button/Button.js +1 -1
  301. package/components/Button/Button/Button.js.map +1 -1
  302. package/components/Button/Button.d.ts +1 -0
  303. package/components/Calendar/Calendar/Calendar.js +1 -1
  304. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  305. package/components/Calendar/Calendar.d.ts +1 -0
  306. package/components/Calendar/DayCellView/DayCellView.js +9 -3
  307. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  308. package/components/Center/Center/Center.js +1 -1
  309. package/components/Center/Center/Center.js.map +1 -1
  310. package/components/Center/Center.d.ts +1 -0
  311. package/components/Checkbox/Checkbox/Checkbox.js +1 -1
  312. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  313. package/components/Checkbox/Checkbox.d.ts +1 -0
  314. package/components/ComboBox/ComboBox/ComboBox.js +1 -1
  315. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  316. package/components/ComboBox/ComboBox.d.ts +1 -0
  317. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +1 -1
  318. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  319. package/components/CurrencyInput/CurrencyInput.d.ts +1 -0
  320. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +1 -0
  321. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  322. package/components/CurrencyLabel/CurrencyLabel.d.ts +1 -0
  323. package/components/DateInput/DateInput/DateInput.js +1 -1
  324. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  325. package/components/DateInput/DateInput.d.ts +1 -0
  326. package/components/DatePicker/DatePicker/DatePicker.js +1 -1
  327. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  328. package/components/DatePicker/DatePicker.d.ts +1 -0
  329. package/components/DatePicker/Picker/Picker.js +1 -1
  330. package/components/DatePicker/Picker/Picker.js.map +1 -1
  331. package/components/DatePicker/Picker.d.ts +1 -0
  332. package/components/Dropdown/Dropdown/Dropdown.js +1 -1
  333. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  334. package/components/Dropdown/Dropdown.d.ts +1 -0
  335. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
  336. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  337. package/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  338. package/components/FileUploader/FileUploader/FileUploader.js +2 -1
  339. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  340. package/components/FxInput/FxInput/FxInput.js +1 -1
  341. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  342. package/components/FxInput/FxInput.d.ts +1 -0
  343. package/components/Gapped/Gapped/Gapped.js +1 -1
  344. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  345. package/components/Gapped/Gapped.d.ts +1 -0
  346. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +1 -1
  347. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  348. package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  349. package/components/Group/Group/Group.js +1 -1
  350. package/components/Group/Group/Group.js.map +1 -1
  351. package/components/Group/Group.d.ts +1 -0
  352. package/components/Hint/Hint/Hint.js +1 -1
  353. package/components/Hint/Hint/Hint.js.map +1 -1
  354. package/components/Hint/Hint.d.ts +1 -0
  355. package/components/Input/Input/Input.js +1 -1
  356. package/components/Input/Input/Input.js.map +1 -1
  357. package/components/Input/Input.d.ts +1 -0
  358. package/components/Kebab/Kebab/Kebab.js +1 -1
  359. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  360. package/components/Kebab/Kebab.d.ts +1 -0
  361. package/components/Link/Link/Link.js +1 -1
  362. package/components/Link/Link/Link.js.map +1 -1
  363. package/components/Link/Link.d.ts +1 -0
  364. package/components/Loader/Loader/Loader.js +1 -1
  365. package/components/Loader/Loader/Loader.js.map +1 -1
  366. package/components/Loader/Loader.d.ts +1 -0
  367. package/components/MenuFooter/MenuFooter/MenuFooter.js +1 -0
  368. package/components/MenuFooter/MenuFooter/MenuFooter.js.map +1 -1
  369. package/components/MenuFooter/MenuFooter.d.ts +1 -0
  370. package/components/MenuHeader/MenuHeader/MenuHeader.js +1 -0
  371. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  372. package/components/MenuHeader/MenuHeader.d.ts +1 -0
  373. package/components/MenuItem/MenuItem/MenuItem.js +29 -6
  374. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  375. package/components/MenuItem/MenuItem.d.ts +4 -0
  376. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +1 -0
  377. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  378. package/components/MenuSeparator/MenuSeparator.d.ts +1 -0
  379. package/components/MiniModal/MiniModal/MiniModal.js +0 -1
  380. package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
  381. package/components/Modal/Modal/Modal.js +1 -0
  382. package/components/Modal/Modal/Modal.js.map +1 -1
  383. package/components/Modal/Modal.d.ts +1 -0
  384. package/components/Modal/ModalBody/ModalBody.js +1 -1
  385. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  386. package/components/Modal/ModalBody.d.ts +1 -0
  387. package/components/Modal/ModalClose/ModalClose.js +3 -1
  388. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  389. package/components/Modal/ModalClose.d.ts +4 -0
  390. package/components/Modal/ModalFooter/ModalFooter.js +1 -0
  391. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  392. package/components/Modal/ModalFooter.d.ts +1 -0
  393. package/components/Modal/ModalHeader/ModalHeader.js +1 -0
  394. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  395. package/components/Modal/ModalHeader.d.ts +1 -0
  396. package/components/Modal/ModalSeparator/ModalSeparator.js +3 -1
  397. package/components/Modal/ModalSeparator/ModalSeparator.js.map +1 -1
  398. package/components/Modal/ModalSeparator.d.ts +4 -0
  399. package/components/Paging/Paging/Paging.js +11 -5
  400. package/components/Paging/Paging/Paging.js.map +1 -1
  401. package/components/Paging/Paging.d.ts +1 -0
  402. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -1
  403. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  404. package/components/PasswordInput/PasswordInput.d.ts +1 -0
  405. package/components/Radio/Radio/Radio.js +1 -1
  406. package/components/Radio/Radio/Radio.js.map +1 -1
  407. package/components/Radio/Radio.d.ts +1 -0
  408. package/components/RadioGroup/RadioGroup/RadioGroup.js +1 -1
  409. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  410. package/components/RadioGroup/RadioGroup.d.ts +1 -0
  411. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +3 -1
  412. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  413. package/components/ResponsiveLayout/ResponsiveLayout.d.ts +4 -0
  414. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
  415. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  416. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  417. package/components/Select/Item/Item.js +2 -1
  418. package/components/Select/Item/Item.js.map +1 -1
  419. package/components/Select/Item.d.ts +1 -0
  420. package/components/Select/Select/Select.js +4 -2
  421. package/components/Select/Select/Select.js.map +1 -1
  422. package/components/Select/Select.d.ts +2 -0
  423. package/components/SidePage/SidePage/SidePage.js +1 -0
  424. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  425. package/components/SidePage/SidePage.d.ts +1 -0
  426. package/components/SidePage/SidePageBody/SidePageBody.js +1 -1
  427. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  428. package/components/SidePage/SidePageBody.d.ts +1 -0
  429. package/components/SidePage/SidePageCloseButton/SidePageCloseButton.js +3 -1
  430. package/components/SidePage/SidePageCloseButton/SidePageCloseButton.js.map +1 -1
  431. package/components/SidePage/SidePageCloseButton.d.ts +5 -1
  432. package/components/SidePage/SidePageContainer/SidePageContainer.js +1 -1
  433. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  434. package/components/SidePage/SidePageContainer.d.ts +1 -0
  435. package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -1
  436. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  437. package/components/SidePage/SidePageFooter.d.ts +1 -0
  438. package/components/SidePage/SidePageHeader/SidePageHeader.js +1 -1
  439. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  440. package/components/SidePage/SidePageHeader.d.ts +1 -0
  441. package/components/SingleToast/SingleToast/SingleToast.js +2 -0
  442. package/components/SingleToast/SingleToast/SingleToast.js.map +1 -1
  443. package/components/SingleToast/SingleToast.d.ts +2 -0
  444. package/components/Spinner/Spinner/Spinner.js +1 -1
  445. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  446. package/components/Spinner/Spinner.d.ts +1 -0
  447. package/components/Sticky/Sticky/Sticky.js +1 -1
  448. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  449. package/components/Sticky/Sticky.d.ts +1 -0
  450. package/components/Switcher/Switcher/Switcher.js +1 -1
  451. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  452. package/components/Switcher/Switcher.d.ts +1 -0
  453. package/components/Tabs/Tab/Tab.js +6 -2
  454. package/components/Tabs/Tab/Tab.js.map +1 -1
  455. package/components/Tabs/Tab.d.ts +1 -0
  456. package/components/Tabs/Tabs/Tabs.js +1 -1
  457. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  458. package/components/Tabs/Tabs.d.ts +1 -0
  459. package/components/Textarea/Textarea/Textarea.js +1 -1
  460. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  461. package/components/Textarea/Textarea.d.ts +1 -0
  462. package/components/Toast/Toast/Toast.js +1 -1
  463. package/components/Toast/Toast/Toast.js.map +1 -1
  464. package/components/Toast/Toast.d.ts +1 -0
  465. package/components/Toggle/Toggle/Toggle.js +1 -1
  466. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  467. package/components/Toggle/Toggle.d.ts +1 -0
  468. package/components/Token/Token/Token.js +5 -4
  469. package/components/Token/Token/Token.js.map +1 -1
  470. package/components/Token/Token.d.ts +1 -0
  471. package/components/TokenInput/TokenInput/TokenInput.js +1 -1
  472. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  473. package/components/TokenInput/TokenInput.d.ts +1 -0
  474. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -1
  475. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  476. package/components/TokenInput/TokenInputMenu.d.ts +1 -0
  477. package/components/Tooltip/Tooltip/Tooltip.js +1 -1
  478. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  479. package/components/Tooltip/Tooltip.d.ts +1 -0
  480. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +1 -1
  481. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  482. package/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  483. package/internal/CloseButtonIcon/CloseButtonIcon/CloseButtonIcon.js +3 -1
  484. package/internal/CloseButtonIcon/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  485. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +8 -38
  486. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  487. package/internal/CommonWrapper/CommonWrapper.d.ts +5 -26
  488. package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js +31 -0
  489. package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +1 -0
  490. package/internal/CommonWrapper/extractCommonProps/package.json +6 -0
  491. package/internal/CommonWrapper/extractCommonProps.d.ts +3 -0
  492. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js +12 -0
  493. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
  494. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/package.json +6 -0
  495. package/internal/CommonWrapper/getCommonVisualStateDataAttributes.d.ts +2 -0
  496. package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js +16 -0
  497. package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
  498. package/internal/CommonWrapper/getVisualStateDataAttributes/package.json +6 -0
  499. package/internal/CommonWrapper/getVisualStateDataAttributes.d.ts +3 -0
  500. package/internal/CommonWrapper/index/index.js +2 -1
  501. package/internal/CommonWrapper/index/index.js.map +1 -1
  502. package/internal/CommonWrapper/index.d.ts +2 -0
  503. package/internal/CommonWrapper/types/package.json +6 -0
  504. package/internal/CommonWrapper/types/types.js +1 -0
  505. package/internal/CommonWrapper/types/types.js.map +1 -0
  506. package/internal/CommonWrapper/types.d.ts +25 -0
  507. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +1 -1
  508. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  509. package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  510. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +1 -1
  511. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  512. package/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
  513. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +1 -1
  514. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  515. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  516. package/internal/DateSelect/DateSelect/DateSelect.js +1 -1
  517. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  518. package/internal/DateSelect/DateSelect.d.ts +1 -0
  519. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +1 -0
  520. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  521. package/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
  522. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +1 -0
  523. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  524. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  525. package/internal/FocusTrap/FocusTrap/FocusTrap.js +1 -1
  526. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  527. package/internal/FocusTrap/FocusTrap.d.ts +1 -0
  528. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +1 -0
  529. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  530. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -0
  531. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +1 -1
  532. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  533. package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
  534. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  535. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  536. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -1
  537. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  538. package/internal/InternalMaskedInput/InternalMaskedInput.d.ts +1 -0
  539. package/internal/InternalMenu/InternalMenu/InternalMenu.js +1 -1
  540. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  541. package/internal/InternalMenu/InternalMenu.d.ts +1 -0
  542. package/internal/Menu/Menu/Menu.js +1 -1
  543. package/internal/Menu/Menu/Menu.js.map +1 -1
  544. package/internal/Menu/Menu.d.ts +1 -0
  545. package/internal/MobilePopup/MobilePopup/MobilePopup.js +2 -1
  546. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  547. package/internal/MobilePopup/MobilePopup.d.ts +1 -0
  548. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -1
  549. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  550. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +1 -0
  551. package/internal/NativeDateInput/NativeDateInput/NativeDateInput.js +2 -1
  552. package/internal/NativeDateInput/NativeDateInput/NativeDateInput.js.map +1 -1
  553. package/internal/NativeDateInput/NativeDateInput.d.ts +1 -0
  554. package/internal/Popup/Popup/Popup.js +1 -1
  555. package/internal/Popup/Popup/Popup.js.map +1 -1
  556. package/internal/Popup/Popup.d.ts +1 -0
  557. package/internal/Popup/PopupPin/PopupPin.js +1 -0
  558. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  559. package/internal/Popup/PopupPin.d.ts +1 -0
  560. package/internal/PopupMenu/PopupMenu/PopupMenu.js +1 -1
  561. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  562. package/internal/PopupMenu/PopupMenu.d.ts +1 -0
  563. package/internal/RenderContainer/RenderContainer/RenderContainer.js +1 -0
  564. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  565. package/internal/RenderContainer/RenderContainer.d.ts +1 -0
  566. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +4 -1
  567. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  568. package/internal/RenderContainer/RenderInnerContainer.d.ts +3 -0
  569. package/internal/RenderLayer/RenderLayer/RenderLayer.js +1 -1
  570. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  571. package/internal/RenderLayer/RenderLayer.d.ts +1 -0
  572. package/internal/ResizeDetector/ResizeDetector/ResizeDetector.js +2 -1
  573. package/internal/ResizeDetector/ResizeDetector/ResizeDetector.js.map +1 -1
  574. package/internal/ResizeDetector/ResizeDetector.d.ts +1 -0
  575. package/internal/ZIndex/ZIndex/ZIndex.js +1 -1
  576. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  577. package/internal/ZIndex/ZIndex.d.ts +1 -0
  578. package/internal/icons/20px/Icon/Icon.js +1 -0
  579. package/internal/icons/20px/Icon/Icon.js.map +1 -1
  580. package/internal/icons/20px/Icon.d.ts +1 -0
  581. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  582. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  583. package/lib/locale/LocaleContext/LocaleContext.js +2 -1
  584. package/lib/locale/LocaleContext/LocaleContext.js.map +1 -1
  585. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +1 -1
  586. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  587. package/lib/rootNode/rootNodeDecorator.d.ts +2 -0
  588. package/lib/theming/ThemeContext/ThemeContext.js +2 -1
  589. package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
  590. package/lib/toKebabCase/package.json +6 -0
  591. package/lib/toKebabCase/toKebabCase.js +7 -0
  592. package/lib/toKebabCase/toKebabCase.js.map +1 -0
  593. package/lib/toKebabCase.d.ts +1 -0
  594. package/lib/utils/utils.js +1 -27
  595. package/lib/utils/utils.js.map +1 -1
  596. package/lib/utils.d.ts +0 -7
  597. package/package.json +9 -9
  598. package/typings/global-react.d.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["Popup.tsx"],"names":["POPUP_BORDER_DEFAULT_COLOR","TRANSITION_TIMEOUT","enter","exit","PopupPositions","DefaultPosition","DUMMY_LOCATION","position","coordinates","top","left","PopupDataTids","root","content","contentInner","popupPin","PopupIds","Popup","responsiveLayout","rootNode","getProps","defaultProps","state","location","props","opened","locationUpdateId","refForTransition","React","createRef","hasAnchorElementListeners","rootId","anchorElement","updateAnchorElement","instance","childDomNode","getAnchorElement","removeEventListeners","addEventListeners","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","anchorWidth","Math","floor","parseFloat","children","backgroundColor","styles","theme","resetLocation","cancelDelayedUpdateLocation","setState","refPopupElement","element","lastPopupElement","handleLayoutEvent","updateLocation","popupElement","getLocation","onPositionChange","locationEquals","componentDidMount","layoutEventsToken","LayoutEvents","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","isMobileLayout","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","renderMain","renderMobile","renderChildren","mobileOnCloseRequest","useWrapper","anchor","globalObject","Element","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","withoutMobile","renderContent","addEventListener","removeEventListener","maxWidth","hasShadow","disableAnimations","ignoreHover","PopupHelper","getPositionObject","direction","rootStyle","shouldFallbackShadow","isIE11","isEdge","isSafari","Boolean","setRootNode","id","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","renderPin","positionName","isDefaultBorderColor","popupBorderColor","pinBorder","pinSize","borderColor","hasPin","parseInt","popupPinSize","getPinOffset","align","popupBackground","requestAnimationFrame","cancelAnimationFrame","x","y","abs","positions","tryPreserveFirstRenderedPosition","anchorRect","getElementAbsoluteRect","popupRect","getCoordinates","isFullyVisible","canBecomeVisible","canBecomeFullyVisible","getPinnedPopupOffset","test","anchorSize","height","max","marginFromProps","margin","isNaN","popupMargin","popupOffset","getHorizontalPosition","getVerticalPosition","Error","pinOffset","popupPinOffset","popupPinOffsetY","popupPinOffsetX","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","oneOfType","HTMLElement","node","isRequired","string","func","bool","number","array","isTestEnv","defaultRootNode"],"mappings":"0bAAA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uC;;AAEA,IAAMA,0BAA0B,GAAG,aAAnC;AACA,IAAMC,kBAAkB,GAAG,EAAEC,KAAK,EAAE,CAAT,EAAYC,IAAI,EAAE,GAAlB,EAA3B;;AAEO,IAAMC,cAAc,GAAG;AAC5B,UAD4B;AAE5B,YAF4B;AAG5B,WAH4B;AAI5B,WAJ4B;AAK5B,cAL4B;AAM5B,cAN4B;AAO5B,cAP4B;AAQ5B,eAR4B;AAS5B,aAT4B;AAU5B,aAV4B;AAW5B,aAX4B;AAY5B,UAZ4B,CAAvB,C;;AAcA,IAAMC,eAAe,GAAGD,cAAc,CAAC,CAAD,CAAtC,C;;;;AAIA,IAAME,cAA6B,GAAG;AAC3CC,EAAAA,QAAQ,EAAEF,eADiC;AAE3CG,EAAAA,WAAW,EAAE;AACXC,IAAAA,GAAG,EAAE,CAAC,IADK;AAEXC,IAAAA,IAAI,EAAE,CAAC,IAFI,EAF8B,EAAtC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,IAAMC,aAAa,GAAG;AAC3BC,EAAAA,IAAI,EAAE,aADqB;AAE3BC,EAAAA,OAAO,EAAE,cAFkB;AAG3BC,EAAAA,YAAY,EAAE,mBAHa;AAI3BC,EAAAA,QAAQ,EAAE,gBAJiB,EAAtB,C;;;AAOA,IAAMC,QAAQ,GAAG;AACtBJ,EAAAA,IAAI,EAAED,aAAa,CAACC,IADE,EAAjB,C;;;;;;;;;;;;AAaMK,K,OAFZC,2B,eACAC,kB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4ESC,IAAAA,Q,GAAW,0CAAkBH,KAAK,CAACI,YAAxB,C;;;;;AAKZC,IAAAA,K,GAAoB,EAAEC,QAAQ,EAAE,MAAKC,KAAL,CAAWC,MAAX,GAAoBnB,cAApB,GAAqC,IAAjD,E;;;AAGnBoB,IAAAA,gB,GAAqC,I;;;;AAIrCC,IAAAA,gB,gBAAmBC,eAAMC,SAAN,E;AACnBC,IAAAA,yB,GAA4B,K;AAC5BC,IAAAA,M,GAASf,QAAQ,CAACJ,IAAT,GAAgB,yB;;AAE1BoB,IAAAA,a,GAAmC,I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HlCC,IAAAA,mB,GAAsB,UAACC,QAAD,EAA6C;AACzE,UAAMC,YAAY,GAAG,4DAA4BD,QAA5B,IAAwCA,QAAQ,CAACE,gBAAT,EAAxC,GAAsE,2BAAYF,QAAZ,CAA3F;AACA,UAAMF,aAAa,GAAG,MAAKA,aAA3B;;AAEA,UAAIG,YAAY,KAAKH,aAArB,EAAoC;AAClC,cAAKK,oBAAL,CAA0BL,aAA1B;AACA,cAAKA,aAAL,GAAqBG,YAArB;AACA,cAAKG,iBAAL,CAAuBH,YAAvB;AACD;AACF,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCOI,IAAAA,gB,GAAmB,UAACC,KAAD,EAA2B;AACpD,UAAI,MAAKhB,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,cAAKjB,KAAL,CAAWiB,YAAX,CAAwBD,KAAxB;AACD;AACF,K;;AAEOE,IAAAA,gB,GAAmB,UAACF,KAAD,EAA2B;AACpD,UAAI,MAAKhB,KAAL,CAAWmB,YAAf,EAA6B;AAC3B,cAAKnB,KAAL,CAAWmB,YAAX,CAAwBH,KAAxB;AACD;AACF,K;;AAEOI,IAAAA,W,GAAc,UAACJ,KAAD,EAA2B;AAC/C,UAAI,MAAKhB,KAAL,CAAWqB,OAAf,EAAwB;AACtB,cAAKrB,KAAL,CAAWqB,OAAX,CAAmBL,KAAnB;AACD;AACF,K;;AAEOM,IAAAA,W,GAAc,UAACN,KAAD,EAA2B;AAC/C,UAAI,MAAKhB,KAAL,CAAWuB,OAAf,EAAwB;AACtB,cAAKvB,KAAL,CAAWuB,OAAX,CAAmBP,KAAnB;AACD;AACF,K;;AAEOQ,IAAAA,U,GAAa,UAACR,KAAD,EAA2B;AAC9C,UAAI,MAAKhB,KAAL,CAAWyB,MAAf,EAAuB;AACrB,cAAKzB,KAAL,CAAWyB,MAAX,CAAkBT,KAAlB;AACD;AACF,K;;AAEOU,IAAAA,c,GAAiB,UAACC,KAAD,EAAgC;AACvD,UAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACC,QAAN,CAAe,GAAf,CAAjC,EAAsD;AACpD,YAAMC,WAAW,GAAGC,IAAI,CAACC,KAAL,CAAW,4BAAW,MAAKvB,aAAhB,EAA+BmB,KAA1C,CAApB;AACA,eAAO,MAAKnB,aAAL,GAAsBqB,WAAW,GAAGG,UAAU,CAACL,KAAD,CAAzB,GAAoC,GAAzD,GAA+D,CAAtE;AACD;AACD,aAAOA,KAAP;AACD,K;;AAEOtC,IAAAA,O,GAAU,UAAC4C,QAAD,EAA+B;AAC/C,UAAQC,eAAR,GAA4B,MAAKlC,KAAjC,CAAQkC,eAAR;AACA,UAAMP,KAAK,GAAG,MAAK/B,QAAL,GAAgB+B,KAA9B;;AAEA;AACE,8CAAK,SAAS,EAAEQ,cAAO9C,OAAP,CAAe,MAAK+C,KAApB,CAAhB,EAA4C,YAAUjD,aAAa,CAACE,OAApE,EAA6E,GAAG,EAAE,MAAKc,gBAAvF;AACE;AACE,UAAA,SAAS,EAAEgC,cAAO7C,YAAP,CAAoB,MAAK8C,KAAzB,CADb;AAEE,UAAA,KAAK,EAAE,EAAEF,eAAe,EAAfA,eAAF,EAAmBP,KAAK,EAAE,MAAKD,cAAL,CAAoBC,KAApB,CAA1B,EAFT;AAGE,sBAAUxC,aAAa,CAACG,YAH1B;;AAKG2C,QAAAA,QALH,CADF,CADF;;;;AAWD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DOI,IAAAA,a,GAAgB,YAAM;AAC5B,YAAKC,2BAAL;AACA,YAAKxC,KAAL,CAAWC,QAAX,KAAwB,IAAxB,IAAgC,MAAKwC,QAAL,CAAc,EAAExC,QAAQ,EAAE,IAAZ,EAAd,CAAhC;AACD,K;;;;;;AAMOyC,IAAAA,e,GAAkB,UAACC,OAAD,EAAgC;AACxD,YAAKC,gBAAL,GAAwBD,OAAxB;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BOE,IAAAA,iB,GAAoB,YAAM;AAChC,UAAI,CAAC,MAAK7C,KAAL,CAAWC,QAAhB,EAA0B;AACxB;AACD;AACD,YAAK6C,cAAL;AACD,K;;;;;;;;;;;;;;AAcOA,IAAAA,c,GAAiB,YAAM;AAC7B,UAAMC,YAAY,GAAG,MAAKH,gBAA1B;;AAEA,UAAI,CAACG,YAAL,EAAmB;AACjB;AACD;;AAED,UAAM9C,QAAQ,GAAG,MAAK+C,WAAL,CAAiBD,YAAjB,EAA+B,MAAK/C,KAAL,CAAWC,QAA1C,CAAjB;AACA,UAAIA,QAAJ,EAAc;AACZ,cAAKC,KAAL,CAAW+C,gBAAX,0BAAK/C,KAAL,CAAW+C,gBAAX,CAA8BhD,QAA9B,oBAA8BA,QAAQ,CAAEhB,QAAxC;AACD;;AAED,UAAI,CAAC,MAAKiE,cAAL,CAAoB,MAAKlD,KAAL,CAAWC,QAA/B,EAAyCA,QAAzC,CAAL,EAAyD;AACvD,cAAKwC,QAAL,CAAc,EAAExC,QAAQ,EAARA,QAAF,EAAd;AACD;AACF,K,mDA5VMkD,iB,GAAP,6BAA2B,CACzB,KAAKL,cAAL,GACA,KAAKM,iBAAL,GAAyBC,YAAY,CAACC,WAAb,CAAyB,KAAKT,iBAA9B,CAAzB,CAEA,IAAI,CAAC,KAAKrC,yBAAV,EAAqC,CACnC,KAAKQ,iBAAL,CAAuB,KAAKN,aAA5B,EACD,CACF,C,OAEa6C,wB,GAAd,kCAAuCrD,KAAvC,EAAoEF,KAApE,EAAuF,CACrF;AACJ;AACA,OACI,IAAIE,KAAK,CAACC,MAAV,EAAkB,CAChB,IAAI,CAACH,KAAK,CAACC,QAAX,EAAqB,CACnB,OAAO,EAAEA,QAAQ,EAAEjB,cAAZ,EAAP,CACD,CACF,CAJD,MAIO,IAAIgB,KAAK,CAACC,QAAV,EAAoB,CACzB,OAAO,EAAEA,QAAQ,EAAEjB,cAAZ,EAAP,CACD,CACD,OAAOgB,KAAP,CACD,C,QAEMwD,kB,GAAP,4BAA0BC,SAA1B,EAAiDC,SAAjD,EAAwE,CACtE,IAAMC,aAAa,GAAGD,SAAS,CAACzD,QAAV,KAAuBjB,cAA7C,CACA,IAAM4E,WAAW,GAAG,KAAK5D,KAAL,CAAWC,QAAX,KAAwBjB,cAA5C,CACA,IAAM6E,SAAS,GAAGJ,SAAS,CAACtD,MAAV,IAAoB,CAAC,KAAKD,KAAL,CAAWC,MAAlD,CAEA,IAAI,KAAK2D,cAAL,IAAuBJ,SAAS,CAACzD,QAAV,KAAuB,IAA9C,IAAsD,KAAKD,KAAL,CAAWC,QAAX,KAAwB,IAAlF,EAAwF,CACtF,KAAKwC,QAAL,CAAc,EAAExC,QAAQ,EAAEjB,cAAZ,EAAd,EACD,CAED,IAAI,KAAKkB,KAAL,CAAWC,MAAX,IAAqBwD,aAArB,IAAsCC,WAAtC,IAAqD,KAAK1D,KAAL,CAAW6D,MAApE,EAA4E,CAC1E,KAAK7D,KAAL,CAAW6D,MAAX,GACD,CACD,IAAIF,SAAS,IAAI,CAACD,WAAd,IAA6B,KAAK1D,KAAL,CAAW8D,OAA5C,EAAqD,CACnD,KAAK9D,KAAL,CAAW8D,OAAX,GACD,CACD,IAAI,KAAK9D,KAAL,CAAWC,MAAf,EAAuB,CACrB,KAAK8D,mBAAL,GACD,CACF,C,QAEMC,oB,GAAP,gCAA8B,CAC5B,KAAK1B,2BAAL,GACA,IAAI,KAAKhC,yBAAT,EAAoC,CAClC,KAAKO,oBAAL,CAA0B,KAAKL,aAA/B,EACD,CACD,IAAI,KAAK0C,iBAAT,EAA4B,CAC1B,KAAKA,iBAAL,CAAuBe,MAAvB,GACA,KAAKf,iBAAL,GAAyB,IAAzB,CACD,CACD,IAAI,KAAKpD,KAAL,CAAWC,QAAX,IAAuB,KAAKC,KAAL,CAAW8D,OAAtC,EAA+C,CAC7C,KAAK9D,KAAL,CAAW8D,OAAX,GACD,CACF,C,QAEMI,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAAC9B,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAAC+B,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOC,Y,GAAR,wBAAuB,CACrB,IAAQnE,MAAR,GAAmB,KAAKD,KAAxB,CAAQC,MAAR,CACA,IAAMgC,QAAQ,GAAG,KAAKoC,cAAL,EAAjB,CAEA,OAAOpC,QAAQ,gBACb,6BAAC,wBAAD,IAAa,MAAM,EAAEhC,MAArB,EAA6B,sBAAsB,MAAnD,EAAoD,cAAc,EAAE,KAAKD,KAAL,CAAWsE,oBAA/E,IACG,KAAKjF,OAAL,CAAa4C,QAAb,CADH,CADa,GAIX,IAJJ,CAKD,C,QAEOkC,U,GAAR,sBAAqB,mBACnB,IAAQpE,QAAR,GAAqB,KAAKD,KAA1B,CAAQC,QAAR,CACA,IAAQS,aAAR,GAA0B,KAAKR,KAA/B,CAAQQ,aAAR,CACA,IAAM+D,UAAU,GAAG,KAAK3E,QAAL,GAAgB2E,UAAnC,CAEA,IAAIC,MAAiC,GAAG,IAAxC,CACA,IAAI,gCAAahE,aAAb,EAA4BiE,2BAAaC,OAAzC,CAAJ,EAAuD,CACrD,KAAKjE,mBAAL,CAAyBD,aAAzB,EACD,CAFD,MAEO,kBAAIJ,eAAMuE,cAAN,CAAqBnE,aAArB,CAAJ,EAAyC,CAC9CgE,MAAM,GAAGD,UAAU,gBAAG,2CAAO/D,aAAP,CAAH,GAAkCA,aAArD,CACD,CAFM,MAEA,CACLgE,MAAM,gBAAG,2CAAOhE,aAAP,CAAT,CACD,CAED,IAAMoE,aAAa,GACjBJ,MAAM,iBAAIpE,eAAMuE,cAAN,CAAqBH,MAArB,CAAV,IAA0C,6BAAiBA,MAAjB,CAA1C,gBACIpE,eAAMyE,YAAN,CAAmBL,MAAnB,EAA2B,EACzBM,GAAG,EAAE,aAACpE,QAAD,EAA6C,aAChD,MAAI,CAACD,mBAAL,CAAyBC,QAAzB,EACA,IAAMqE,WAAW,cAAIP,MAAJ,qBAAG,QAAsCM,GAA1D,CACAC,WAAW,IAAI,gCAAaA,WAAb,EAA0BrE,QAA1B,CAAf,CACD,CALwB,EAA3B,CADJ,GAQI,IATN,CAdmB,CAyBnB;AACA;AACA;AACA;AACA;AAEA,QAAMsE,gBAAgB,GAAG,CAAC,CAACJ,aAAF,IAAmB,gCAAapE,aAAb,EAA4BiE,2BAAaC,OAAzC,CAA5C,CAEA,oBACE,6BAAC,gCAAD,IAAiB,MAAM,EAAEE,aAAa,IAAIJ,MAA1C,EAAkD,GAAG,EAAEQ,gBAAgB,GAAG,IAAH,GAAU,KAAKvE,mBAAtF,IACG,KAAKmD,cAAL,IAAuB,CAAC,KAAK5D,KAAL,CAAWiF,aAAnC,GACG,KAAKb,YAAL,EADH,GAEGrE,QAAQ,IAAI,KAAKmF,aAAL,CAAmBnF,QAAnB,CAHlB,CADF,CAOD,C,QAaOe,iB,GAAR,2BAA0B2B,OAA1B,EAAsD,CACpD,IAAIA,OAAO,IAAI,gCAAaA,OAAb,EAAsBgC,2BAAaC,OAAnC,CAAf,EAA4D,CAC1D;AACAjC,MAAAA,OAAO,CAAC0C,gBAAR,CAAyB,YAAzB,EAAuC,KAAKpE,gBAA5C,EAF0D,CAG1D;AACA0B,MAAAA,OAAO,CAAC0C,gBAAR,CAAyB,YAAzB,EAAuC,KAAKjE,gBAA5C,EAJ0D,CAK1D;AACAuB,MAAAA,OAAO,CAAC0C,gBAAR,CAAyB,OAAzB,EAAkC,KAAK/D,WAAvC,EACAqB,OAAO,CAAC0C,gBAAR,CAAyB,SAAzB,EAAoC,KAAK7D,WAAzC,EACAmB,OAAO,CAAC0C,gBAAR,CAAyB,UAAzB,EAAqC,KAAK3D,UAA1C,EAEA,KAAKlB,yBAAL,GAAiC,IAAjC,CACD,CACF,C,QAEOO,oB,GAAR,8BAA6B4B,OAA7B,EAAyD,CACvD,IAAIA,OAAO,IAAI,gCAAaA,OAAb,EAAsBgC,2BAAaC,OAAnC,CAAf,EAA4D,CAC1D;AACAjC,MAAAA,OAAO,CAAC2C,mBAAR,CAA4B,YAA5B,EAA0C,KAAKrE,gBAA/C,EAF0D,CAG1D;AACA0B,MAAAA,OAAO,CAAC2C,mBAAR,CAA4B,YAA5B,EAA0C,KAAKlE,gBAA/C,EAJ0D,CAK1D;AACAuB,MAAAA,OAAO,CAAC2C,mBAAR,CAA4B,OAA5B,EAAqC,KAAKhE,WAA1C,EACAqB,OAAO,CAAC2C,mBAAR,CAA4B,SAA5B,EAAuC,KAAK9D,WAA5C,EACAmB,OAAO,CAAC2C,mBAAR,CAA4B,UAA5B,EAAwC,KAAK5D,UAA7C,EAEA,KAAKlB,yBAAL,GAAiC,KAAjC,CACD,CACF,C,QAyDO4E,a,GAAR,uBAAsBnF,QAAtB,EAA+C,mBAC7C,kBAA6B,KAAKC,KAAlC,CAAQqF,QAAR,eAAQA,QAAR,CAAkBpF,MAAlB,eAAkBA,MAAlB,CACA,qBAAsD,KAAKL,QAAL,EAAtD,CAAQ0F,SAAR,kBAAQA,SAAR,CAAmBC,iBAAnB,kBAAmBA,iBAAnB,CAAsCC,WAAtC,kBAAsCA,WAAtC,CACA,IAAMvD,QAAQ,GAAG,KAAKoC,cAAL,EAAjB,CAEA,4BAAsBoB,yBAAYC,iBAAZ,CAA8B3F,QAAQ,CAAChB,QAAvC,CAAtB,CAAQ4G,SAAR,yBAAQA,SAAR,CACA,IAAMC,SAA8B,8BAAQ7F,QAAQ,CAACf,WAAjB,IAA8BqG,QAAQ,EAARA,QAA9B,GAApC,CAEA,IAAMQ,oBAAoB,GAAGC,kBAAUC,cAAV,IAAoBC,gBAAjD,CAEA,oBACE,6BAAC,gCAAD,IACE,OAAO,EAAEvH,kBADX,EAEE,MAAM,EAAE,CAAC8G,iBAFX,EAGE,EAAE,EAAEU,OAAO,CAAChG,MAAM,IAAIgC,QAAX,CAHb,EAIE,YAAY,MAJd,EAKE,aAAa,MALf,EAME,KAAK,EAAE,CAACsD,iBANV,EAOE,IAAI,EAAE,CAACA,iBAPT,EAQE,QAAQ,EAAE,KAAKlD,aARjB,EASE,OAAO,EAAE,KAAKlC,gBAThB,IAWG,UAACL,KAAD,4DACC,6BAAC,4BAAD,6BAAmB,MAAI,CAACE,KAAxB,IAA+B,WAAW,EAAE,MAAI,CAACkG,WAAjD,kBACE,6BAAC,cAAD,IACE,EAAE,qBAAE,MAAI,CAAClG,KAAL,CAAWmG,EAAb,8BAAmB,MAAI,CAAC5F,MAD5B,EAEE,YAAUpB,aAAa,CAACC,IAF1B,EAGE,UAAU,EAAE,MAAI,CAACoD,eAHnB,EAIE,QAAQ,EAAE,OAJZ,EAKE,SAAS,EAAE,mEACRL,cAAOiE,KAAP,CAAa,MAAI,CAAChE,KAAlB,CADQ,IACmB,IADnB,YAERD,cAAOkE,MAAP,CAAc,MAAI,CAACjE,KAAnB,CAFQ,IAEoBkD,SAAS,IAAI,CAACO,oBAFlC,YAGR1D,cAAOmE,cAAP,CAAsB,MAAI,CAAClE,KAA3B,CAHQ,IAG4BkD,SAAS,IAAIO,oBAHzC,YAIR1D,cAAOoE,gBAAP,EAJQ,IAIoBf,WAJpB,cAKLD,iBAAiB,GACjB,EADiB,oBAGdpD,oCAA2BwD,SAA3B,EAA+D,MAAI,CAACvD,KAApE,CAHc,IAG+D,IAH/D,OAIdD,cAAOqE,eAAP,EAJc,IAIa1G,KAAK,KAAK,UAJvB,OAKdqC,cAAOsE,qBAAP,EALc,IAKmB3G,KAAK,KAAK,SAL7B,OAMdqC,cAAOuE,cAAP,EANc,IAMY5G,KAAK,KAAK,SANtB,OALZ,EALb,EAmBE,KAAK,EAAE8F,SAnBT,EAoBE,YAAY,EAAE,MAAI,CAAC7E,gBApBrB,EAqBE,YAAY,EAAE,MAAI,CAACG,gBArBrB,IAuBG,MAAI,CAAC7B,OAAL,CAAa4C,QAAb,CAvBH,EAwBG,CAAC,CAAC,MAAI,CAAC2B,cAAN,IAAwB,MAAI,CAAC5D,KAAL,CAAWiF,aAApC,KAAsD,MAAI,CAAC0B,SAAL,CAAe5G,QAAQ,CAAChB,QAAxB,CAxBzD,CADF,CADD,EAXH,CADF,CA4CD,C,QAOOsF,c,GAAR,0BAAyB,CACvB,OAAO,uBAAW,KAAKrE,KAAL,CAAWiC,QAAtB,IAAkC,KAAKjC,KAAL,CAAWiC,QAAX,EAAlC,GAA0D,KAAKjC,KAAL,CAAWiC,QAA5E,CACD,C,QAMO0E,S,GAAR,mBAAkBC,YAAlB,EAAyD,CACvD;AACJ;AACA;AACA;AACA,OACI,IAAMC,oBAAoB,GAAG,KAAKzE,KAAL,CAAW0E,gBAAX,KAAgCtI,0BAA7D,CACA,IAAMuI,SAAS,GAAGjB,kBAAUe,oBAAV,GAAiC,qBAAjC,GAAyD,KAAKzE,KAAL,CAAW0E,gBAAtF,CAEA,mBAAkD,KAAK9G,KAAvD,CAAQgH,OAAR,gBAAQA,OAAR,CAAiB9E,eAAjB,gBAAiBA,eAAjB,CAAkC+E,WAAlC,gBAAkCA,WAAlC,CACA,sBAA8B,KAAKrH,QAAL,EAA9B,CAAQ0F,SAAR,mBAAQA,SAAR,CAAmB4B,MAAnB,mBAAmBA,MAAnB,CACA,IAAMnI,QAAQ,GAAG0G,yBAAYC,iBAAZ,CAA8BkB,YAA9B,CAAjB,CAEA,OACEM,MAAM,iBACJ,6BAAC,kBAAD,IACE,YAAY,EAAE,KAAKxE,gBADrB,EAEE,aAAa,EAAEkE,YAFjB,EAGE,IAAI,EAAEI,OAAO,IAAIG,QAAQ,CAAC,KAAK/E,KAAL,CAAWgF,YAAZ,CAH3B,EAIE,MAAM,EAAE,KAAKC,YAAL,CAAkBtI,QAAQ,CAACuI,KAA3B,CAJV,EAKE,WAAW,EAAEhC,SAAS,GAAG,CAAH,GAAO,CAL/B,EAME,eAAe,EAAEpD,eAAe,IAAI,KAAKE,KAAL,CAAWmF,eANjD,EAOE,WAAW,EAAEN,WAAW,IAAIF,SAP9B,GAFJ,CAaD,C,QASOhD,mB,GAAR,+BAA8B,CAC5B,KAAKzB,2BAAL,GACA,KAAKpC,gBAAL,GAAwBuE,2BAAa+C,qBAArC,oBAAwB/C,2BAAa+C,qBAAb,CAAqC,KAAK5E,cAA1C,CAAxB,CACD,C,QAEON,2B,GAAR,uCAAsC,CACpC,IAAI,KAAKpC,gBAAT,EAA2B,CACzBuE,2BAAagD,oBAAb,+CAAaA,oBAAb,CAAoC,KAAKvH,gBAAzC,EACA,KAAKA,gBAAL,GAAwB,IAAxB,CACD,CACF,C,QAmBO8C,c,GAAR,wBAAuB0E,CAAvB,EAAmDC,CAAnD,EAA+E,CAC7E,IAAID,CAAC,KAAKC,CAAV,EAAa,CACX,OAAO,IAAP,CACD,CAED,IAAI,uBAAWD,CAAX,KAAiB,uBAAWC,CAAX,CAArB,EAAoC,CAClC,OAAO,KAAP,CACD,CAED,IAAI,CAAC7B,cAAD,IAAW,CAACC,cAAhB,EAAwB,CACtB,OACE2B,CAAC,CAAC1I,WAAF,CAAcE,IAAd,KAAuByI,CAAC,CAAC3I,WAAF,CAAcE,IAArC,IACAwI,CAAC,CAAC1I,WAAF,CAAcC,GAAd,KAAsB0I,CAAC,CAAC3I,WAAF,CAAcC,GADpC,IAEAyI,CAAC,CAAC3I,QAAF,KAAe4I,CAAC,CAAC5I,QAHnB,CAKD;;AAED;AACA;;AAEA;AACE2I,MAAAA,CAAC,CAAC3I,QAAF,KAAe4I,CAAC,CAAC5I,QAAjB;AACA+C,MAAAA,IAAI,CAAC8F,GAAL,CAASF,CAAC,CAAC1I,WAAF,CAAcC,GAAd,GAAoB0I,CAAC,CAAC3I,WAAF,CAAcC,GAA3C,KAAmD,CADnD;AAEA6C,MAAAA,IAAI,CAAC8F,GAAL,CAASF,CAAC,CAAC1I,WAAF,CAAcE,IAAd,GAAqByI,CAAC,CAAC3I,WAAF,CAAcE,IAA5C,KAAqD,CAHvD;;AAKD,G;;AAEO4D,EAAAA,W,GAAR,qBAAoBD,YAApB,EAA2C9C,QAA3C,EAA+E;AAC7E,uBAAwD,KAAKC,KAA7D,CAAQ6H,SAAR,gBAAQA,SAAR,CAAmBC,gCAAnB,gBAAmBA,gCAAnB;AACA,QAAMtH,aAAa,GAAG,KAAKA,aAA3B;;AAEA;AACEA,IAAAA,aAAa,IAAI,gCAAaA,aAAb,EAA4BiE,2BAAaC,OAAzC,CADnB;AAEE,8DAFF;;;AAKA,QAAI,EAAElE,aAAa,IAAI,gCAAaA,aAAb,EAA4BiE,2BAAaC,OAAzC,CAAnB,CAAJ,EAA2E;AACzE,aAAO3E,QAAP;AACD;;AAED,QAAMgI,UAAU,GAAGtC,yBAAYuC,sBAAZ,CAAmCxH,aAAnC,CAAnB;AACA,QAAMyH,SAAS,GAAGxC,yBAAYuC,sBAAZ,CAAmCnF,YAAnC,CAAlB;;AAEA,QAAI9D,QAAJ;AACA,QAAIC,WAAJ;;AAEA,QAAIe,QAAQ,IAAIA,QAAQ,KAAKjB,cAAzB,IAA2CiB,QAAQ,CAAChB,QAAxD,EAAkE;AAChEA,MAAAA,QAAQ,GAAGgB,QAAQ,CAAChB,QAApB;AACAC,MAAAA,WAAW,GAAG,KAAKkJ,cAAL,CAAoBH,UAApB,EAAgCE,SAAhC,EAA2ClJ,QAA3C,CAAd;;AAEA,UAAMoJ,cAAc,GAAG1C,yBAAY0C,cAAZ,CAA2BnJ,WAA3B,EAAwCiJ,SAAxC,CAAvB;AACA,UAAMG,gBAAgB,GAAG,CAACD,cAAD,IAAmB1C,yBAAY4C,qBAAZ,CAAkCtJ,QAAlC,EAA4CC,WAA5C,CAA5C;;AAEA;AACE;AACA;AACC8I,MAAAA,gCAAgC,KAAKK,cAAc,IAAIC,gBAAvB,CAAjC;AACA;AACA;AACCD,MAAAA,cAAc,IAAIpJ,QAAQ,KAAK8I,SAAS,CAAC,CAAD,CAN3C;AAOE;AACA;AACA,eAAO,EAAE7I,WAAW,EAAXA,WAAF,EAAeD,QAAQ,EAARA,QAAf,EAAP;AACD;AACF;;AAED,yDAAiB8I,SAAjB,wCAA4B,CAAvB9I,QAAuB;AAC1BC,MAAAA,WAAW,GAAG,KAAKkJ,cAAL,CAAoBH,UAApB,EAAgCE,SAAhC,EAA2ClJ,QAA3C,CAAd;AACA,UAAI0G,yBAAY0C,cAAZ,CAA2BnJ,WAA3B,EAAwCiJ,SAAxC,CAAJ,EAAwD;AACtD,eAAO,EAAEjJ,WAAW,EAAXA,WAAF,EAAeD,QAAQ,EAARA,QAAf,EAAP;AACD;AACF;;AAEDA,IAAAA,QAAQ,GAAG8I,SAAS,CAAC,CAAD,CAApB;AACA7I,IAAAA,WAAW,GAAG,KAAKkJ,cAAL,CAAoBH,UAApB,EAAgCE,SAAhC,EAA2ClJ,QAA3C,CAAd;AACA,WAAO,EAAEC,WAAW,EAAXA,WAAF,EAAeD,QAAQ,EAARA,QAAf,EAAP;AACD,G;;AAEOuJ,EAAAA,oB,GAAR,8BAA6BP,UAA7B,EAA+ChJ,QAA/C,EAAyE;AACvE,QAAI,CAAC,KAAKa,QAAL,GAAgBsH,MAAjB,IAA2B,gBAAgBqB,IAAhB,CAAqBxJ,QAAQ,CAACuI,KAA9B,CAA/B,EAAqE;AACnE,aAAO,CAAP;AACD;;AAED,QAAMkB,UAAU,GAAG,aAAaD,IAAb,CAAkBxJ,QAAQ,CAAC4G,SAA3B,IAAwCoC,UAAU,CAACpG,KAAnD,GAA2DoG,UAAU,CAACU,MAAzF;;AAEA,QAAQzB,OAAR,GAAoB,KAAKhH,KAAzB,CAAQgH,OAAR;;AAEA,WAAOlF,IAAI,CAAC4G,GAAL;AACL,KADK;AAEL,SAAKrB,YAAL,CAAkBtI,QAAQ,CAACuI,KAA3B,KAAqCN,OAAO,IAAIG,QAAQ,CAAC,KAAK/E,KAAL,CAAWgF,YAAZ,CAAxD,IAAqFoB,UAAU,GAAG,CAF7F,CAAP;;AAID,G;;AAEON,EAAAA,c,GAAR,wBAAuBH,UAAvB,EAAyCE,SAAzC,EAA0DrB,YAA1D,EAAgF;AAC9E,QAAgB+B,eAAhB,GAAoC,KAAK3I,KAAzC,CAAQ4I,MAAR;AACA,QAAMA,MAAM;AACV,8BAAcD,eAAd,KAAkC,CAACE,KAAK,CAACF,eAAD,CAAxC;AACIA,IAAAA,eADJ;AAEIxB,IAAAA,QAAQ,CAAC,KAAK/E,KAAL,CAAW0G,WAAZ,CAAR,IAAoC,CAH1C;AAIA,QAAM/J,QAAQ,GAAG0G,yBAAYC,iBAAZ,CAA8BkB,YAA9B,CAAjB;AACA,QAAMmC,WAAW,GAAG,KAAKnJ,QAAL,GAAgBmJ,WAAhB,GAA8B,KAAKT,oBAAL,CAA0BP,UAA1B,EAAsChJ,QAAtC,CAAlD;;AAEA,YAAQA,QAAQ,CAAC4G,SAAjB;AACE,WAAK,KAAL;AACE,eAAO;AACL1G,UAAAA,GAAG,EAAE8I,UAAU,CAAC9I,GAAX,GAAiBgJ,SAAS,CAACQ,MAA3B,GAAoCG,MADpC;AAEL1J,UAAAA,IAAI,EAAE,KAAK8J,qBAAL,CAA2BjB,UAA3B,EAAuCE,SAAvC,EAAkDlJ,QAAQ,CAACuI,KAA3D,EAAkEyB,WAAlE,CAFD,EAAP;;AAIF,WAAK,QAAL;AACE,eAAO;AACL9J,UAAAA,GAAG,EAAE8I,UAAU,CAAC9I,GAAX,GAAiB8I,UAAU,CAACU,MAA5B,GAAqCG,MADrC;AAEL1J,UAAAA,IAAI,EAAE,KAAK8J,qBAAL,CAA2BjB,UAA3B,EAAuCE,SAAvC,EAAkDlJ,QAAQ,CAACuI,KAA3D,EAAkEyB,WAAlE,CAFD,EAAP;;AAIF,WAAK,MAAL;AACE,eAAO;AACL9J,UAAAA,GAAG,EAAE,KAAKgK,mBAAL,CAAyBlB,UAAzB,EAAqCE,SAArC,EAAgDlJ,QAAQ,CAACuI,KAAzD,EAAgEyB,WAAhE,CADA;AAEL7J,UAAAA,IAAI,EAAE6I,UAAU,CAAC7I,IAAX,GAAkB+I,SAAS,CAACtG,KAA5B,GAAoCiH,MAFrC,EAAP;;AAIF,WAAK,OAAL;AACE,eAAO;AACL3J,UAAAA,GAAG,EAAE,KAAKgK,mBAAL,CAAyBlB,UAAzB,EAAqCE,SAArC,EAAgDlJ,QAAQ,CAACuI,KAAzD,EAAgEyB,WAAhE,CADA;AAEL7J,UAAAA,IAAI,EAAE6I,UAAU,CAAC7I,IAAX,GAAkB6I,UAAU,CAACpG,KAA7B,GAAqCiH,MAFtC,EAAP;;AAIF;AACE,cAAM,IAAIM,KAAJ,4BAAmCnK,QAAQ,CAAC4G,SAA5C,OAAN,CAtBJ;;AAwBD,G;;AAEO0B,EAAAA,Y,GAAR,sBAAqBC,KAArB,EAAoC;AAClC,QAAQ6B,SAAR,GAAsB,KAAKnJ,KAA3B,CAAQmJ,SAAR;;AAEA,YAAQ7B,KAAR;AACE,WAAK,KAAL;AACA,WAAK,QAAL;AACE,eAAO6B,SAAS,IAAIhC,QAAQ,CAAC,KAAK/E,KAAL,CAAWgH,cAAZ,CAArB,IAAoDjC,QAAQ,CAAC,KAAK/E,KAAL,CAAWiH,eAAZ,CAAnE;AACF,WAAK,MAAL;AACA,WAAK,OAAL;AACE,eAAOF,SAAS,IAAIhC,QAAQ,CAAC,KAAK/E,KAAL,CAAWgH,cAAZ,CAArB,IAAoDjC,QAAQ,CAAC,KAAK/E,KAAL,CAAWkH,eAAZ,CAAnE;AACF,WAAK,QAAL;AACA,WAAK,QAAL;AACE,eAAO,CAAP;AACF;AACE,cAAM,IAAIJ,KAAJ,wBAA+B5B,KAA/B,OAAN,CAXJ;;AAaD,G;;AAEO0B,EAAAA,qB,GAAR,+BAA8BjB,UAA9B,EAAgDE,SAAhD,EAAiEX,KAAjE,EAAgFyB,WAAhF,EAAqG;AACnG,YAAQzB,KAAR;AACE,WAAK,MAAL;AACE,eAAOS,UAAU,CAAC7I,IAAX,GAAkB6J,WAAzB;AACF,WAAK,QAAL;AACE,eAAOhB,UAAU,CAAC7I,IAAX,GAAkB,CAAC+I,SAAS,CAACtG,KAAV,GAAkBoG,UAAU,CAACpG,KAA9B,IAAuC,CAAhE;AACF,WAAK,OAAL;AACE,eAAOoG,UAAU,CAAC7I,IAAX,IAAmB+I,SAAS,CAACtG,KAAV,GAAkBoG,UAAU,CAACpG,KAAhD,IAAyDoH,WAAhE;AACF;AACE,cAAM,IAAIG,KAAJ,wBAA+B5B,KAA/B,OAAN,CARJ;;AAUD,G;;AAEO2B,EAAAA,mB,GAAR,6BAA4BlB,UAA5B,EAA8CE,SAA9C,EAA+DX,KAA/D,EAA8EyB,WAA9E,EAAmG;AACjG,YAAQzB,KAAR;AACE,WAAK,KAAL;AACE,eAAOS,UAAU,CAAC9I,GAAX,GAAiB8J,WAAxB;AACF,WAAK,QAAL;AACE,eAAOhB,UAAU,CAAC9I,GAAX,GAAiB,CAACgJ,SAAS,CAACQ,MAAV,GAAmBV,UAAU,CAACU,MAA/B,IAAyC,CAAjE;AACF,WAAK,QAAL;AACE,eAAOV,UAAU,CAAC9I,GAAX,IAAkBgJ,SAAS,CAACQ,MAAV,GAAmBV,UAAU,CAACU,MAAhD,IAA0DM,WAAjE;AACF;AACE,cAAM,IAAIG,KAAJ,wBAA+B5B,KAA/B,OAAN,CARJ;;AAUD,G,gBArmBwBlH,eAAMmJ,S,WACjBC,mB,GAAsB,O,UAEtBC,S,GAAY,EACxB;AACJ;AACA,KACIjJ,aAAa,EAAEkJ,mBAAUC,SAAV,CAAoB,CAAC,sCAAwBlF,2BAAamF,WAArC,CAAD,EAAoDF,mBAAUG,IAA9D,CAApB,EAAyFC,UAJhF,EAMxB;AACJ;AACA,KACI5H,eAAe,EAAEwH,mBAAUK,MATH,EAWxB9H,QAAQ,EAAEyH,mBAAUC,SAAV,CAAoB,CAACD,mBAAUG,IAAX,EAAiBH,mBAAUM,IAA3B,CAApB,CAXc,EAaxB;AACJ;AACA,KACI9C,MAAM,EAAEwC,mBAAUO,IAhBM,EAkBxB;AACJ;AACA,KACI3E,SAAS,EAAEoE,mBAAUO,IArBG,EAuBxB;AACJ;AACA,KACIrB,MAAM,EAAEc,mBAAUQ,MA1BM,EA4BxB;AACJ;AACA,KACIjK,MAAM,EAAEyJ,mBAAUO,IA/BM,EAiCxB;AACJ;AACA,KACId,SAAS,EAAEO,mBAAUQ,MApCG,EAsCxB;AACJ;AACA;AACA;AACA,KACIlD,OAAO,EAAE0C,mBAAUQ,MA3CK,EA6CxB;AACJ;AACA,KACInB,WAAW,EAAEW,mBAAUQ,MAhDC,EAkDxB;AACJ;AACA;AACA,KACIrC,SAAS,EAAE6B,mBAAUS,KAtDG,EAwDxB;AACJ;AACA,KACI3E,WAAW,EAAEkE,mBAAUO,IA3DC,E,UA8DZpK,Y,GAA6B,EACzCkJ,WAAW,EAAE,CAD4B,EAEzC7B,MAAM,EAAE,KAFiC,EAGzC5B,SAAS,EAAE,KAH8B,EAIzCC,iBAAiB,EAAE6E,6BAJsB,EAKzC7F,UAAU,EAAE,KAL6B,EAMzCiB,WAAW,EAAE,KAN4B,EAOzC7D,KAAK,EAAE,MAPkC,E,UAapB0I,e,GAAkB,I","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport warning from 'warning';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { Nullable } from '../../typings/utility-types';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ZIndex } from '../ZIndex';\nimport { RenderContainer } from '../RenderContainer';\nimport { FocusEventType, MouseEventType } from '../../typings/event-types';\nimport { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { MobilePopup } from '../MobilePopup';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { PopupPin } from './PopupPin';\nimport { Offset, PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './Popup.styles';\n\nconst POPUP_BORDER_DEFAULT_COLOR = 'transparent';\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupPositions = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom right',\n 'bottom center',\n 'bottom left',\n 'left bottom',\n 'left middle',\n 'left top',\n] as const;\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = typeof PopupPositions[number];\n\nexport const DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps\n extends Omit<CommonProps, 'children'>,\n PopupHandlerProps,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n anchorElement: React.ReactNode | HTMLElement;\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n hasPin?: boolean;\n hasShadow?: boolean;\n disableAnimations?: boolean;\n margin?: number;\n maxWidth?: number | string;\n opened: boolean;\n pinOffset?: number;\n pinSize?: number;\n popupOffset?: number;\n positions: Readonly<PopupPositionsType[]>;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n ignoreHover?: boolean;\n width?: React.CSSProperties['width'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n withoutMobile?: boolean;\n mobileOnCloseRequest?: () => void;\n /**\n * Возвращает текущую позицию попапа\n */\n onPositionChange?: (pos: PopupPositionsType) => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\nexport const PopupDataTids = {\n root: 'Popup__root',\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n} as const;\n\nexport const PopupIds = {\n root: PopupDataTids.root,\n};\n\ntype DefaultProps = Required<\n Pick<\n PopupProps,\n 'popupOffset' | 'hasPin' | 'hasShadow' | 'disableAnimations' | 'useWrapper' | 'ignoreHover' | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n\n public static propTypes = {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: PropTypes.oneOfType([safePropTypesInstanceOf(globalObject.HTMLElement), PropTypes.node]).isRequired,\n\n /**\n * Фон попапа и пина\n */\n backgroundColor: PropTypes.string,\n\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Показывать ли пин\n */\n hasPin: PropTypes.bool,\n\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow: PropTypes.bool,\n\n /**\n * Отступ попапа от элемента\n */\n margin: PropTypes.number,\n\n /**\n * Показан или скрыт попап\n */\n opened: PropTypes.bool,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset: PropTypes.number,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n pinSize: PropTypes.number,\n\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset: PropTypes.number,\n\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions: PropTypes.array,\n\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover: PropTypes.bool,\n };\n\n public static defaultProps: DefaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n width: 'auto',\n };\n\n private getProps = createPropsGetter(Popup.defaultProps);\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private theme!: Theme;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupElement: Nullable<Element>;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n private hasAnchorElementListeners = false;\n private rootId = PopupIds.root + getRandomID();\n\n public anchorElement: Nullable<Element> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);\n\n if (!this.hasAnchorElementListeners) {\n this.addEventListeners(this.anchorElement);\n }\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n if (this.hasAnchorElementListeners) {\n this.removeEventListeners(this.anchorElement);\n }\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\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 renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n ) : null;\n }\n\n private renderMain() {\n const { location } = this.state;\n const { anchorElement } = this.props;\n const useWrapper = this.getProps().useWrapper;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isInstanceOf(anchorElement, globalObject.Element)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: (instance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(instance);\n const originalRef = (anchor as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n },\n })\n : null;\n\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isInstanceOf(anchorElement, globalObject.Element);\n\n return (\n <RenderContainer anchor={anchorWithRef || anchor} ref={canGetAnchorNode ? null : this.updateAnchorElement}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private addEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.addEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.addEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = true;\n }\n }\n\n private removeEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = false;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n const anchorWidth = Math.floor(getDOMRect(this.anchorElement).width);\n return this.anchorElement ? (anchorWidth * parseFloat(width)) / 100 : 0;\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor } = this.props;\n const width = this.getProps().width;\n\n return (\n <div className={styles.content(this.theme)} data-tid={PopupDataTids.content} ref={this.refForTransition}>\n <div\n className={styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { maxWidth, opened } = this.props;\n const { hasShadow, disableAnimations, ignoreHover } = this.getProps();\n const children = this.renderChildren();\n\n const { direction } = PopupHelper.getPositionObject(location.position);\n const rootStyle: React.CSSProperties = { ...location.coordinates, maxWidth };\n\n const shouldFallbackShadow = isIE11 || isEdge || isSafari;\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode}>\n <ZIndex\n id={this.props.id ?? this.rootId}\n data-tid={PopupDataTids.root}\n wrapperRef={this.refPopupElement}\n priority={'Popup'}\n className={cx({\n [styles.popup(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow && !shouldFallbackShadow,\n [styles.shadowFallback(this.theme)]: hasShadow && shouldFallbackShadow,\n [styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [styles[`transition-enter-${direction}` as keyof typeof styles](this.theme)]: true,\n [styles.transitionEnter()]: state === 'entering',\n [styles.transitionEnterActive()]: state === 'entered',\n [styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {(!this.isMobileLayout || this.props.withoutMobile) && this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupElement = (element: Nullable<Element>) => {\n this.lastPopupElement = element;\n };\n\n private renderPin(positionName: string): React.ReactNode {\n /**\n * Box-shadow does not appear under the pin. Borders are used instead.\n * In non-ie browsers drop-shadow filter is used. It is applying\n * shadow to the pin too.\n */\n const isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;\n const pinBorder = isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;\n\n const { pinSize, backgroundColor, borderColor } = this.props;\n const { hasShadow, hasPin } = this.getProps();\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n hasPin && (\n <PopupPin\n popupElement={this.lastPopupElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n borderWidth={hasShadow ? 1 : 0}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n borderColor={borderColor || pinBorder}\n />\n )\n );\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = globalObject.requestAnimationFrame?.(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n globalObject.cancelAnimationFrame?.(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupElement = this.lastPopupElement;\n\n if (!popupElement) {\n return;\n }\n\n const location = this.getLocation(popupElement, this.state.location);\n if (location) {\n this.props.onPositionChange?.(location?.position);\n }\n\n if (!this.locationEquals(this.state.location, location)) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n if (!isIE11 && !isEdge) {\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position\n );\n }\n\n // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность\n // уйти в бесконечный ререндер\n\n return (\n x.position === y.position &&\n Math.abs(x.coordinates.top - y.coordinates.top) <= 1 &&\n Math.abs(x.coordinates.left - y.coordinates.left) <= 1\n );\n }\n\n private getLocation(popupElement: Element, location?: Nullable<PopupLocation>) {\n const { positions, tryPreserveFirstRenderedPosition } = this.props;\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isInstanceOf(anchorElement, globalObject.Element),\n 'Anchor element is not defined or not instance of Element',\n );\n\n if (!(anchorElement && isInstanceOf(anchorElement, globalObject.Element))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n let position: PopupPositionsType;\n let coordinates: Offset;\n\n if (location && location !== DUMMY_LOCATION && location.position) {\n position = location.position;\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect);\n const canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates);\n\n if (\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0])\n ) {\n // сохраняем текущую позицию\n return { coordinates, position };\n }\n }\n\n for (position of positions) {\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n if (PopupHelper.isFullyVisible(coordinates, popupRect)) {\n return { coordinates, position };\n }\n }\n\n position = positions[0];\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n return { coordinates, position };\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.getProps().hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const { margin: marginFromProps } = this.props;\n const margin =\n isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n switch (position.direction) {\n case 'top':\n return {\n top: anchorRect.top - popupRect.height - margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n throw new Error(`Unexpected direction '${position.direction}'`);\n }\n }\n\n private getPinOffset(align: string) {\n const { pinOffset } = this.props;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetY);\n case 'left':\n case 'right':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetX);\n case 'center':\n case 'middle':\n return 0;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getHorizontalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'left':\n return anchorRect.left - popupOffset;\n case 'center':\n return anchorRect.left - (popupRect.width - anchorRect.width) / 2;\n case 'right':\n return anchorRect.left - (popupRect.width - anchorRect.width) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getVerticalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'top':\n return anchorRect.top - popupOffset;\n case 'middle':\n return anchorRect.top - (popupRect.height - anchorRect.height) / 2;\n case 'bottom':\n return anchorRect.top - (popupRect.height - anchorRect.height) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["Popup.tsx"],"names":["POPUP_BORDER_DEFAULT_COLOR","TRANSITION_TIMEOUT","enter","exit","PopupPositions","DefaultPosition","DUMMY_LOCATION","position","coordinates","top","left","PopupDataTids","root","content","contentInner","popupPin","PopupIds","Popup","responsiveLayout","rootNode","getProps","defaultProps","state","location","props","opened","locationUpdateId","refForTransition","React","createRef","hasAnchorElementListeners","rootId","anchorElement","updateAnchorElement","instance","childDomNode","getAnchorElement","removeEventListeners","addEventListeners","handleMouseEnter","event","onMouseEnter","handleMouseLeave","onMouseLeave","handleClick","onClick","handleFocus","onFocus","handleBlur","onBlur","calculateWidth","width","includes","anchorWidth","Math","floor","parseFloat","children","backgroundColor","styles","theme","resetLocation","cancelDelayedUpdateLocation","setState","refPopupElement","element","lastPopupElement","handleLayoutEvent","updateLocation","popupElement","getLocation","onPositionChange","locationEquals","componentDidMount","layoutEventsToken","LayoutEvents","addListener","getDerivedStateFromProps","componentDidUpdate","prevProps","prevState","hadNoLocation","hasLocation","wasClosed","isMobileLayout","onOpen","onClose","delayUpdateLocation","componentWillUnmount","remove","render","renderMain","renderMobile","renderChildren","mobileOnCloseRequest","useWrapper","anchor","globalObject","Element","isValidElement","anchorWithRef","cloneElement","ref","originalRef","canGetAnchorNode","withoutMobile","renderContent","addEventListener","removeEventListener","maxWidth","hasShadow","disableAnimations","ignoreHover","PopupHelper","getPositionObject","direction","rootStyle","shouldFallbackShadow","isIE11","isEdge","isSafari","Boolean","setRootNode","id","popup","shadow","shadowFallback","popupIgnoreHover","transitionEnter","transitionEnterActive","transitionExit","renderPin","positionName","isDefaultBorderColor","popupBorderColor","pinBorder","pinSize","borderColor","hasPin","parseInt","popupPinSize","getPinOffset","align","popupBackground","requestAnimationFrame","cancelAnimationFrame","x","y","abs","positions","tryPreserveFirstRenderedPosition","anchorRect","getElementAbsoluteRect","popupRect","getCoordinates","isFullyVisible","canBecomeVisible","canBecomeFullyVisible","getPinnedPopupOffset","test","anchorSize","height","max","marginFromProps","margin","isNaN","popupMargin","popupOffset","getHorizontalPosition","getVerticalPosition","Error","pinOffset","popupPinOffset","popupPinOffsetY","popupPinOffsetX","Component","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","oneOfType","HTMLElement","node","isRequired","string","func","bool","number","array","isTestEnv","defaultRootNode"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport warning from 'warning';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { Nullable } from '../../typings/utility-types';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ZIndex } from '../ZIndex';\nimport { RenderContainer } from '../RenderContainer';\nimport { FocusEventType, MouseEventType } from '../../typings/event-types';\nimport { getRandomID, isFunction, isNonNullable, isNullable, isRefableElement } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { MobilePopup } from '../MobilePopup';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { isInstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { PopupPin } from './PopupPin';\nimport { Offset, PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './Popup.styles';\n\nconst POPUP_BORDER_DEFAULT_COLOR = 'transparent';\nconst TRANSITION_TIMEOUT = { enter: 0, exit: 200 };\n\nexport const PopupPositions = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom right',\n 'bottom center',\n 'bottom left',\n 'left bottom',\n 'left middle',\n 'left top',\n] as const;\nexport const DefaultPosition = PopupPositions[0];\n\nexport type PopupPositionsType = typeof PopupPositions[number];\n\nexport const DUMMY_LOCATION: PopupLocation = {\n position: DefaultPosition,\n coordinates: {\n top: -9999,\n left: -9999,\n },\n};\n\nexport interface PopupHandlerProps {\n onMouseEnter?: (event: MouseEventType) => void;\n onMouseLeave?: (event: MouseEventType) => void;\n onClick?: (event: MouseEventType) => void;\n onFocus?: (event: FocusEventType) => void;\n onBlur?: (event: FocusEventType) => void;\n onOpen?: () => void;\n onClose?: () => void;\n}\n\nexport interface PopupProps\n extends Omit<CommonProps, 'children'>,\n PopupHandlerProps,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n anchorElement: React.ReactNode | HTMLElement;\n backgroundColor?: React.CSSProperties['backgroundColor'];\n borderColor?: React.CSSProperties['borderColor'];\n children: React.ReactNode | (() => React.ReactNode);\n hasPin?: boolean;\n hasShadow?: boolean;\n disableAnimations?: boolean;\n margin?: number;\n maxWidth?: number | string;\n opened: boolean;\n pinOffset?: number;\n pinSize?: number;\n popupOffset?: number;\n positions: Readonly<PopupPositionsType[]>;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n ignoreHover?: boolean;\n width?: React.CSSProperties['width'];\n /**\n * При очередном рендере пытаться сохранить первоначальную позицию попапа\n * (в числе числе, когда он выходит за пределы экрана, но может быть проскролен в него).\n *\n * Нужен только для Tooltip. В остальных случаях позиция перестраивается автоматически.\n * @see https://github.com/skbkontur/retail-ui/pull/1195\n */\n tryPreserveFirstRenderedPosition?: boolean;\n withoutMobile?: boolean;\n mobileOnCloseRequest?: () => void;\n /**\n * Возвращает текущую позицию попапа\n */\n onPositionChange?: (pos: PopupPositionsType) => void;\n}\n\ninterface PopupLocation {\n coordinates: {\n left: number;\n top: number;\n };\n position: PopupPositionsType;\n}\n\nexport interface PopupState {\n location: Nullable<PopupLocation>;\n}\n\nexport const PopupDataTids = {\n root: 'Popup__root',\n content: 'PopupContent',\n contentInner: 'PopupContentInner',\n popupPin: 'PopupPin__root',\n} as const;\n\nexport const PopupIds = {\n root: PopupDataTids.root,\n};\n\ntype DefaultProps = Required<\n Pick<\n PopupProps,\n 'popupOffset' | 'hasPin' | 'hasShadow' | 'disableAnimations' | 'useWrapper' | 'ignoreHover' | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class Popup extends React.Component<PopupProps, PopupState> {\n public static __KONTUR_REACT_UI__ = 'Popup';\n public static displayName = 'Popup';\n\n public static propTypes = {\n /**\n * Ссылка (ref) на элемент или React компонент, для которого рисуется попап\n */\n anchorElement: PropTypes.oneOfType([safePropTypesInstanceOf(globalObject.HTMLElement), PropTypes.node]).isRequired,\n\n /**\n * Фон попапа и пина\n */\n backgroundColor: PropTypes.string,\n\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Показывать ли пин\n */\n hasPin: PropTypes.bool,\n\n /**\n * Применять ли box-shadow на попапе. При false отключает границу на пине\n */\n hasShadow: PropTypes.bool,\n\n /**\n * Отступ попапа от элемента\n */\n margin: PropTypes.number,\n\n /**\n * Показан или скрыт попап\n */\n opened: PropTypes.bool,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n pinOffset: PropTypes.number,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n pinSize: PropTypes.number,\n\n /**\n * смещение попапа относительно родительского элемента\n */\n popupOffset: PropTypes.number,\n\n /**\n * С какой стороны показывать попап и край попапа,\n * на котором будет отображаться пин\n */\n positions: PropTypes.array,\n\n /**\n * Игнорировать ли события hover/click\n */\n ignoreHover: PropTypes.bool,\n };\n\n public static defaultProps: DefaultProps = {\n popupOffset: 0,\n hasPin: false,\n hasShadow: false,\n disableAnimations: isTestEnv,\n useWrapper: false,\n ignoreHover: false,\n width: 'auto',\n };\n\n private getProps = createPropsGetter(Popup.defaultProps);\n\n // see #2873 and #2895\n public static readonly defaultRootNode = null;\n\n public state: PopupState = { location: this.props.opened ? DUMMY_LOCATION : null };\n private theme!: Theme;\n private layoutEventsToken: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private locationUpdateId: Nullable<number> = null;\n private lastPopupElement: Nullable<Element>;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n private refForTransition = React.createRef<HTMLDivElement>();\n private hasAnchorElementListeners = false;\n private rootId = PopupIds.root + getRandomID();\n\n public anchorElement: Nullable<Element> = null;\n\n public componentDidMount() {\n this.updateLocation();\n this.layoutEventsToken = LayoutEvents.addListener(this.handleLayoutEvent);\n\n if (!this.hasAnchorElementListeners) {\n this.addEventListeners(this.anchorElement);\n }\n }\n\n public static getDerivedStateFromProps(props: Readonly<PopupProps>, state: PopupState) {\n /**\n * Delaying updateLocation to ensure it happens after props update\n */\n if (props.opened) {\n if (!state.location) {\n return { location: DUMMY_LOCATION };\n }\n } else if (state.location) {\n return { location: DUMMY_LOCATION };\n }\n return state;\n }\n\n public componentDidUpdate(prevProps: PopupProps, prevState: PopupState) {\n const hadNoLocation = prevState.location === DUMMY_LOCATION;\n const hasLocation = this.state.location !== DUMMY_LOCATION;\n const wasClosed = prevProps.opened && !this.props.opened;\n\n if (this.isMobileLayout && prevState.location === null && this.state.location === null) {\n this.setState({ location: DUMMY_LOCATION });\n }\n\n if (this.props.opened && hadNoLocation && hasLocation && this.props.onOpen) {\n this.props.onOpen();\n }\n if (wasClosed && !hasLocation && this.props.onClose) {\n this.props.onClose();\n }\n if (this.props.opened) {\n this.delayUpdateLocation();\n }\n }\n\n public componentWillUnmount() {\n this.cancelDelayedUpdateLocation();\n if (this.hasAnchorElementListeners) {\n this.removeEventListeners(this.anchorElement);\n }\n if (this.layoutEventsToken) {\n this.layoutEventsToken.remove();\n this.layoutEventsToken = null;\n }\n if (this.state.location && this.props.onClose) {\n this.props.onClose();\n }\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 renderMobile() {\n const { opened } = this.props;\n const children = this.renderChildren();\n\n return children ? (\n <MobilePopup opened={opened} withoutRenderContainer onCloseRequest={this.props.mobileOnCloseRequest}>\n {this.content(children)}\n </MobilePopup>\n ) : null;\n }\n\n private renderMain() {\n const { location } = this.state;\n const { anchorElement } = this.props;\n const useWrapper = this.getProps().useWrapper;\n\n let anchor: Nullable<React.ReactNode> = null;\n if (isInstanceOf(anchorElement, globalObject.Element)) {\n this.updateAnchorElement(anchorElement);\n } else if (React.isValidElement(anchorElement)) {\n anchor = useWrapper ? <span>{anchorElement}</span> : anchorElement;\n } else {\n anchor = <span>{anchorElement}</span>;\n }\n\n const anchorWithRef =\n anchor && React.isValidElement(anchor) && isRefableElement(anchor)\n ? React.cloneElement(anchor, {\n ref: (instance: Nullable<React.ReactInstance>) => {\n this.updateAnchorElement(instance);\n const originalRef = (anchor as React.RefAttributes<any>)?.ref;\n originalRef && callChildRef(originalRef, instance);\n },\n })\n : null;\n\n // we need to get anchor's DOM node\n // so we either set our own ref on it via cloning\n // or relay on findDOMNode (inside getRootNode)\n // which should be called within updateAnchorElement\n // in the case when the anchor is not refable\n\n const canGetAnchorNode = !!anchorWithRef || isInstanceOf(anchorElement, globalObject.Element);\n\n return (\n <RenderContainer anchor={anchorWithRef || anchor} ref={canGetAnchorNode ? null : this.updateAnchorElement}>\n {this.isMobileLayout && !this.props.withoutMobile\n ? this.renderMobile()\n : location && this.renderContent(location)}\n </RenderContainer>\n );\n }\n\n private updateAnchorElement = (instance: Nullable<React.ReactInstance>) => {\n const childDomNode = isInstanceWithAnchorElement(instance) ? instance.getAnchorElement() : getRootNode(instance);\n const anchorElement = this.anchorElement;\n\n if (childDomNode !== anchorElement) {\n this.removeEventListeners(anchorElement);\n this.anchorElement = childDomNode;\n this.addEventListeners(childDomNode);\n }\n };\n\n private addEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.addEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.addEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.addEventListener('click', this.handleClick);\n element.addEventListener('focusin', this.handleFocus as EventListener);\n element.addEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = true;\n }\n }\n\n private removeEventListeners(element: Nullable<Element>) {\n if (element && isInstanceOf(element, globalObject.Element)) {\n // @ts-expect-error: Type ElementEventMap is missing events: https://github.com/skbkontur/retail-ui/pull/2946#discussion_r931072657\n element.removeEventListener('mouseenter', this.handleMouseEnter);\n // @ts-expect-error: See the comment above\n element.removeEventListener('mouseleave', this.handleMouseLeave);\n // @ts-expect-error: See the comment above\n element.removeEventListener('click', this.handleClick);\n element.removeEventListener('focusin', this.handleFocus as EventListener);\n element.removeEventListener('focusout', this.handleBlur as EventListener);\n\n this.hasAnchorElementListeners = false;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(event);\n }\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(event);\n }\n };\n\n private handleClick = (event: MouseEventType) => {\n if (this.props.onClick) {\n this.props.onClick(event);\n }\n };\n\n private handleFocus = (event: FocusEventType) => {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = (event: FocusEventType) => {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private calculateWidth = (width: PopupProps['width']) => {\n if (typeof width === 'string' && width.includes('%')) {\n const anchorWidth = Math.floor(getDOMRect(this.anchorElement).width);\n return this.anchorElement ? (anchorWidth * parseFloat(width)) / 100 : 0;\n }\n return width;\n };\n\n private content = (children: React.ReactNode) => {\n const { backgroundColor } = this.props;\n const width = this.getProps().width;\n\n return (\n <div className={styles.content(this.theme)} data-tid={PopupDataTids.content} ref={this.refForTransition}>\n <div\n className={styles.contentInner(this.theme)}\n style={{ backgroundColor, width: this.calculateWidth(width) }}\n data-tid={PopupDataTids.contentInner}\n >\n {children}\n </div>\n </div>\n );\n };\n\n private renderContent(location: PopupLocation) {\n const { maxWidth, opened } = this.props;\n const { hasShadow, disableAnimations, ignoreHover } = this.getProps();\n const children = this.renderChildren();\n\n const { direction } = PopupHelper.getPositionObject(location.position);\n const rootStyle: React.CSSProperties = { ...location.coordinates, maxWidth };\n\n const shouldFallbackShadow = isIE11 || isEdge || isSafari;\n\n return (\n <Transition\n timeout={TRANSITION_TIMEOUT}\n appear={!disableAnimations}\n in={Boolean(opened && children)}\n mountOnEnter\n unmountOnExit\n enter={!disableAnimations}\n exit={!disableAnimations}\n onExited={this.resetLocation}\n nodeRef={this.refForTransition}\n >\n {(state: string) => (\n <CommonWrapper {...this.props} rootNodeRef={this.setRootNode}>\n <ZIndex\n id={this.props.id ?? this.rootId}\n data-tid={PopupDataTids.root}\n wrapperRef={this.refPopupElement}\n priority={'Popup'}\n className={cx({\n [styles.popup(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow && !shouldFallbackShadow,\n [styles.shadowFallback(this.theme)]: hasShadow && shouldFallbackShadow,\n [styles.popupIgnoreHover()]: ignoreHover,\n ...(disableAnimations\n ? {}\n : {\n [styles[`transition-enter-${direction}` as keyof typeof styles](this.theme)]: true,\n [styles.transitionEnter()]: state === 'entering',\n [styles.transitionEnterActive()]: state === 'entered',\n [styles.transitionExit()]: state === 'exiting',\n }),\n })}\n style={rootStyle}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {this.content(children)}\n {(!this.isMobileLayout || this.props.withoutMobile) && this.renderPin(location.position)}\n </ZIndex>\n </CommonWrapper>\n )}\n </Transition>\n );\n }\n\n private resetLocation = () => {\n this.cancelDelayedUpdateLocation();\n this.state.location !== null && this.setState({ location: null });\n };\n\n private renderChildren() {\n return isFunction(this.props.children) ? this.props.children() : this.props.children;\n }\n\n private refPopupElement = (element: Nullable<Element>) => {\n this.lastPopupElement = element;\n };\n\n private renderPin(positionName: string): React.ReactNode {\n /**\n * Box-shadow does not appear under the pin. Borders are used instead.\n * In non-ie browsers drop-shadow filter is used. It is applying\n * shadow to the pin too.\n */\n const isDefaultBorderColor = this.theme.popupBorderColor === POPUP_BORDER_DEFAULT_COLOR;\n const pinBorder = isIE11 && isDefaultBorderColor ? 'rgba(0, 0, 0, 0.09)' : this.theme.popupBorderColor;\n\n const { pinSize, backgroundColor, borderColor } = this.props;\n const { hasShadow, hasPin } = this.getProps();\n const position = PopupHelper.getPositionObject(positionName);\n\n return (\n hasPin && (\n <PopupPin\n popupElement={this.lastPopupElement}\n popupPosition={positionName}\n size={pinSize || parseInt(this.theme.popupPinSize)}\n offset={this.getPinOffset(position.align)}\n borderWidth={hasShadow ? 1 : 0}\n backgroundColor={backgroundColor || this.theme.popupBackground}\n borderColor={borderColor || pinBorder}\n />\n )\n );\n }\n\n private handleLayoutEvent = () => {\n if (!this.state.location) {\n return;\n }\n this.updateLocation();\n };\n\n private delayUpdateLocation() {\n this.cancelDelayedUpdateLocation();\n this.locationUpdateId = globalObject.requestAnimationFrame?.(this.updateLocation);\n }\n\n private cancelDelayedUpdateLocation() {\n if (this.locationUpdateId) {\n globalObject.cancelAnimationFrame?.(this.locationUpdateId);\n this.locationUpdateId = null;\n }\n }\n\n private updateLocation = () => {\n const popupElement = this.lastPopupElement;\n\n if (!popupElement) {\n return;\n }\n\n const location = this.getLocation(popupElement, this.state.location);\n if (location) {\n this.props.onPositionChange?.(location?.position);\n }\n\n if (!this.locationEquals(this.state.location, location)) {\n this.setState({ location });\n }\n };\n\n private locationEquals(x: Nullable<PopupLocation>, y: Nullable<PopupLocation>) {\n if (x === y) {\n return true;\n }\n\n if (isNullable(x) || isNullable(y)) {\n return false;\n }\n\n if (!isIE11 && !isEdge) {\n return (\n x.coordinates.left === y.coordinates.left &&\n x.coordinates.top === y.coordinates.top &&\n x.position === y.position\n );\n }\n\n // Для ie/edge обновляем позицию только при разнице минимум в 1. Иначе есть вероятность\n // уйти в бесконечный ререндер\n\n return (\n x.position === y.position &&\n Math.abs(x.coordinates.top - y.coordinates.top) <= 1 &&\n Math.abs(x.coordinates.left - y.coordinates.left) <= 1\n );\n }\n\n private getLocation(popupElement: Element, location?: Nullable<PopupLocation>) {\n const { positions, tryPreserveFirstRenderedPosition } = this.props;\n const anchorElement = this.anchorElement;\n\n warning(\n anchorElement && isInstanceOf(anchorElement, globalObject.Element),\n 'Anchor element is not defined or not instance of Element',\n );\n\n if (!(anchorElement && isInstanceOf(anchorElement, globalObject.Element))) {\n return location;\n }\n\n const anchorRect = PopupHelper.getElementAbsoluteRect(anchorElement);\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n\n let position: PopupPositionsType;\n let coordinates: Offset;\n\n if (location && location !== DUMMY_LOCATION && location.position) {\n position = location.position;\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n\n const isFullyVisible = PopupHelper.isFullyVisible(coordinates, popupRect);\n const canBecomeVisible = !isFullyVisible && PopupHelper.canBecomeFullyVisible(position, coordinates);\n\n if (\n // если нужно сохранить первоначальную позицию и Попап целиком\n // находится в пределах вьюпорта (или может быть проскроллен в него)\n (tryPreserveFirstRenderedPosition && (isFullyVisible || canBecomeVisible)) ||\n // если Попап целиком во вьюпорте и в самой приоритетной позиции\n // (иначе нужно попытаться позицию сменить)\n (isFullyVisible && position === positions[0])\n ) {\n // сохраняем текущую позицию\n return { coordinates, position };\n }\n }\n\n for (position of positions) {\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n if (PopupHelper.isFullyVisible(coordinates, popupRect)) {\n return { coordinates, position };\n }\n }\n\n position = positions[0];\n coordinates = this.getCoordinates(anchorRect, popupRect, position);\n return { coordinates, position };\n }\n\n private getPinnedPopupOffset(anchorRect: Rect, position: PositionObject) {\n if (!this.getProps().hasPin || /center|middle/.test(position.align)) {\n return 0;\n }\n\n const anchorSize = /top|bottom/.test(position.direction) ? anchorRect.width : anchorRect.height;\n\n const { pinSize } = this.props;\n\n return Math.max(\n 0,\n this.getPinOffset(position.align) + (pinSize || parseInt(this.theme.popupPinSize)) - anchorSize / 2,\n );\n }\n\n private getCoordinates(anchorRect: Rect, popupRect: Rect, positionName: string) {\n const { margin: marginFromProps } = this.props;\n const margin =\n isNonNullable(marginFromProps) && !isNaN(marginFromProps)\n ? marginFromProps\n : parseInt(this.theme.popupMargin) || 0;\n const position = PopupHelper.getPositionObject(positionName);\n const popupOffset = this.getProps().popupOffset + this.getPinnedPopupOffset(anchorRect, position);\n\n switch (position.direction) {\n case 'top':\n return {\n top: anchorRect.top - popupRect.height - margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'bottom':\n return {\n top: anchorRect.top + anchorRect.height + margin,\n left: this.getHorizontalPosition(anchorRect, popupRect, position.align, popupOffset),\n };\n case 'left':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left - popupRect.width - margin,\n };\n case 'right':\n return {\n top: this.getVerticalPosition(anchorRect, popupRect, position.align, popupOffset),\n left: anchorRect.left + anchorRect.width + margin,\n };\n default:\n throw new Error(`Unexpected direction '${position.direction}'`);\n }\n }\n\n private getPinOffset(align: string) {\n const { pinOffset } = this.props;\n\n switch (align) {\n case 'top':\n case 'bottom':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetY);\n case 'left':\n case 'right':\n return pinOffset || parseInt(this.theme.popupPinOffset) || parseInt(this.theme.popupPinOffsetX);\n case 'center':\n case 'middle':\n return 0;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getHorizontalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'left':\n return anchorRect.left - popupOffset;\n case 'center':\n return anchorRect.left - (popupRect.width - anchorRect.width) / 2;\n case 'right':\n return anchorRect.left - (popupRect.width - anchorRect.width) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getVerticalPosition(anchorRect: Rect, popupRect: Rect, align: string, popupOffset: number) {\n switch (align) {\n case 'top':\n return anchorRect.top - popupOffset;\n case 'middle':\n return anchorRect.top - (popupRect.height - anchorRect.height) / 2;\n case 'bottom':\n return anchorRect.top - (popupRect.height - anchorRect.height) + popupOffset;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
@@ -12,6 +12,7 @@ interface Props {
12
12
  }
13
13
  export declare class PopupPin extends React.Component<Props> {
14
14
  static __KONTUR_REACT_UI__: string;
15
+ static displayName: string;
15
16
  static propTypes: {
16
17
  /**
17
18
  * Цвет фон пина
@@ -66,6 +66,7 @@ PopupPin = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
66
66
 
67
67
 
68
68
 
69
+
69
70
 
70
71
 
71
72
  render = function render() {
@@ -272,7 +273,7 @@ PopupPin = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
272
273
  default:
273
274
  throw new Error("Unexpected align '" + align + "'");}
274
275
 
275
- };return PopupPin;}(_react.default.Component);exports.PopupPin = PopupPin;PopupPin.__KONTUR_REACT_UI__ = 'PopupPin';PopupPin.propTypes = { /**
276
+ };return PopupPin;}(_react.default.Component);exports.PopupPin = PopupPin;PopupPin.__KONTUR_REACT_UI__ = 'PopupPin';PopupPin.displayName = 'PopupPin';PopupPin.propTypes = { /**
276
277
  * Цвет фон пина
277
278
  */backgroundColor: _propTypes.default.string, /**
278
279
  * Цвет границы пина
@@ -1 +1 @@
1
- {"version":3,"sources":["PopupPin.tsx"],"names":["borderStyles","position","borderStyle","borderTopColor","borderBottomColor","borderLeftColor","borderRightColor","PopupPin","render","props","popupElement","options","getPinOptions","PopupHelper","getElementAbsoluteRect","getPositionObject","popupPosition","size","offset","borderWidth","styleOuter","getOuterStyle","activeBorder","outerSize","borderColor","styleInner","getInnerStyle","backgroundColor","styleWrapper","getWrapperStyle","outerLeft","outerTop","PopupDataTids","popupPin","styles","wrapper","getPopupOppositeDirection","popupDirection","direction","TypeError","left","top","width","height","borderWitdth","popupRect","pinSize","pinOffset","bordersDelta","getPinLeftCoordinate","align","innerTop","innerLeft","getPinTopCoordinate","Error","pinHeight","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","string","number","any"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './PopupPin.styles';\nimport { PopupDataTids } from './Popup';\n\nconst borderStyles = {\n position: 'absolute',\n borderStyle: 'solid',\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n borderRightColor: 'transparent',\n};\n\ninterface Props {\n backgroundColor: string;\n borderColor: string;\n borderWidth: number;\n offset: number;\n popupElement: Nullable<Element>;\n popupPosition: string;\n size: number;\n}\n\nexport class PopupPin extends React.Component<Props> {\n public static __KONTUR_REACT_UI__ = 'PopupPin';\n\n public static propTypes = {\n /**\n * Цвет фон пина\n */\n backgroundColor: PropTypes.string,\n\n /**\n * Цвет границы пина\n */\n borderColor: PropTypes.string,\n\n /**\n * Ширина границы пина\n */\n borderWidth: PropTypes.number,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n offset: PropTypes.number,\n\n /**\n * Ссылка на попап\n */\n popupElement: PropTypes.any,\n\n /**\n * Позиция поапа, по которой будет вычеслено положение пина\n */\n popupPosition: PropTypes.string,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n size: PropTypes.number,\n };\n\n public render() {\n if (!this.props.popupElement) {\n return null;\n }\n\n const options = this.getPinOptions(\n PopupHelper.getElementAbsoluteRect(this.props.popupElement),\n PopupHelper.getPositionObject(this.props.popupPosition),\n this.props.size,\n this.props.offset,\n this.props.borderWidth,\n );\n\n const styleOuter: React.CSSProperties = this.getOuterStyle(\n options.activeBorder,\n options.outerSize,\n this.props.borderColor,\n );\n\n const styleInner: React.CSSProperties = this.getInnerStyle(\n options.activeBorder,\n this.props.size,\n this.props.backgroundColor,\n );\n\n const styleWrapper = this.getWrapperStyle(options.outerLeft, options.outerTop, options.outerSize);\n\n return (\n <div data-tid={PopupDataTids.popupPin} className={styles.wrapper()} style={styleWrapper}>\n <div style={styleOuter}>\n <div style={styleInner} />\n </div>\n </div>\n );\n }\n\n private getPopupOppositeDirection(): 'bottom' | 'top' | 'left' | 'right' {\n const popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;\n switch (popupDirection) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n throw new TypeError('Unknown direction ' + popupDirection);\n }\n }\n\n private getWrapperStyle(left: number, top: number, borderWidth: number) {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n [direction]: -borderWidth + 'px',\n left: left + 'px',\n width: borderWidth * 2 + 'px',\n height: borderWidth + 'px',\n };\n case 'left':\n case 'right':\n return {\n [direction]: -borderWidth + 'px',\n top: top + 'px',\n height: borderWidth * 2 + 'px',\n width: borderWidth + 'px',\n };\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getOuterStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n left: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n top: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getInnerStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n left: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n top: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getPinOptions(\n popupRect: Rect,\n popupPosition: PositionObject,\n pinSize: number,\n pinOffset: number,\n borderWidth: number,\n ) {\n const bordersDelta = 2 * borderWidth;\n const outerSize = pinSize + bordersDelta;\n\n switch (popupPosition.direction) {\n case 'top':\n return {\n outerTop: popupRect.height,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Top',\n outerSize,\n };\n case 'bottom':\n return {\n outerTop: -2 * outerSize,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize + 2 * bordersDelta,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Bottom',\n outerSize,\n };\n case 'left':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: popupRect.width,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize,\n activeBorder: 'Left',\n outerSize,\n };\n case 'right':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: -2 * outerSize,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize + 2 * bordersDelta,\n activeBorder: 'Right',\n outerSize,\n };\n default:\n throw new Error('Direction must be one of top, right, bottom, left');\n }\n }\n\n private getPinTopCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'top':\n return pinOffset;\n case 'middle':\n return popupRect.height / 2 - pinHeight;\n case 'bottom':\n return popupRect.height - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getPinLeftCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'left':\n return pinOffset;\n case 'center':\n return popupRect.width / 2 - pinHeight;\n case 'right':\n return popupRect.width - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["PopupPin.tsx"],"names":["borderStyles","position","borderStyle","borderTopColor","borderBottomColor","borderLeftColor","borderRightColor","PopupPin","render","props","popupElement","options","getPinOptions","PopupHelper","getElementAbsoluteRect","getPositionObject","popupPosition","size","offset","borderWidth","styleOuter","getOuterStyle","activeBorder","outerSize","borderColor","styleInner","getInnerStyle","backgroundColor","styleWrapper","getWrapperStyle","outerLeft","outerTop","PopupDataTids","popupPin","styles","wrapper","getPopupOppositeDirection","popupDirection","direction","TypeError","left","top","width","height","borderWitdth","popupRect","pinSize","pinOffset","bordersDelta","getPinLeftCoordinate","align","innerTop","innerLeft","getPinTopCoordinate","Error","pinHeight","React","Component","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","string","number","any"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { PopupHelper, PositionObject, Rect } from './PopupHelper';\nimport { styles } from './PopupPin.styles';\nimport { PopupDataTids } from './Popup';\n\nconst borderStyles = {\n position: 'absolute',\n borderStyle: 'solid',\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n borderRightColor: 'transparent',\n};\n\ninterface Props {\n backgroundColor: string;\n borderColor: string;\n borderWidth: number;\n offset: number;\n popupElement: Nullable<Element>;\n popupPosition: string;\n size: number;\n}\n\nexport class PopupPin extends React.Component<Props> {\n public static __KONTUR_REACT_UI__ = 'PopupPin';\n public static displayName = 'PopupPin';\n\n public static propTypes = {\n /**\n * Цвет фон пина\n */\n backgroundColor: PropTypes.string,\n\n /**\n * Цвет границы пина\n */\n borderColor: PropTypes.string,\n\n /**\n * Ширина границы пина\n */\n borderWidth: PropTypes.number,\n\n /**\n * Смещение пина от края попапа. Край задаётся в пропе position вторым словом\n */\n offset: PropTypes.number,\n\n /**\n * Ссылка на попап\n */\n popupElement: PropTypes.any,\n\n /**\n * Позиция поапа, по которой будет вычеслено положение пина\n */\n popupPosition: PropTypes.string,\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n size: PropTypes.number,\n };\n\n public render() {\n if (!this.props.popupElement) {\n return null;\n }\n\n const options = this.getPinOptions(\n PopupHelper.getElementAbsoluteRect(this.props.popupElement),\n PopupHelper.getPositionObject(this.props.popupPosition),\n this.props.size,\n this.props.offset,\n this.props.borderWidth,\n );\n\n const styleOuter: React.CSSProperties = this.getOuterStyle(\n options.activeBorder,\n options.outerSize,\n this.props.borderColor,\n );\n\n const styleInner: React.CSSProperties = this.getInnerStyle(\n options.activeBorder,\n this.props.size,\n this.props.backgroundColor,\n );\n\n const styleWrapper = this.getWrapperStyle(options.outerLeft, options.outerTop, options.outerSize);\n\n return (\n <div data-tid={PopupDataTids.popupPin} className={styles.wrapper()} style={styleWrapper}>\n <div style={styleOuter}>\n <div style={styleInner} />\n </div>\n </div>\n );\n }\n\n private getPopupOppositeDirection(): 'bottom' | 'top' | 'left' | 'right' {\n const popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;\n switch (popupDirection) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n throw new TypeError('Unknown direction ' + popupDirection);\n }\n }\n\n private getWrapperStyle(left: number, top: number, borderWidth: number) {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n [direction]: -borderWidth + 'px',\n left: left + 'px',\n width: borderWidth * 2 + 'px',\n height: borderWidth + 'px',\n };\n case 'left':\n case 'right':\n return {\n [direction]: -borderWidth + 'px',\n top: top + 'px',\n height: borderWidth * 2 + 'px',\n width: borderWidth + 'px',\n };\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getOuterStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n left: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 'px',\n top: '0px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getInnerStyle(activeBorder: string, borderWitdth: number, borderColor: string): React.CSSProperties {\n const direction = this.getPopupOppositeDirection();\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n left: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n case 'left':\n case 'right':\n return {\n ...borderStyles,\n [direction]: -borderWitdth + 2 + 'px',\n top: -borderWitdth + 'px',\n borderWidth: borderWitdth + 'px',\n ['border' + activeBorder + 'Color']: borderColor,\n } as React.CSSProperties;\n default:\n throw new TypeError('Unknown direction ' + direction);\n }\n }\n\n private getPinOptions(\n popupRect: Rect,\n popupPosition: PositionObject,\n pinSize: number,\n pinOffset: number,\n borderWidth: number,\n ) {\n const bordersDelta = 2 * borderWidth;\n const outerSize = pinSize + bordersDelta;\n\n switch (popupPosition.direction) {\n case 'top':\n return {\n outerTop: popupRect.height,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Top',\n outerSize,\n };\n case 'bottom':\n return {\n outerTop: -2 * outerSize,\n outerLeft: this.getPinLeftCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n innerTop: -outerSize + 2 * bordersDelta,\n innerLeft: -outerSize + bordersDelta,\n activeBorder: 'Bottom',\n outerSize,\n };\n case 'left':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: popupRect.width,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize,\n activeBorder: 'Left',\n outerSize,\n };\n case 'right':\n return {\n outerTop: this.getPinTopCoordinate(popupRect, popupPosition.align, pinSize, pinOffset) - bordersDelta,\n outerLeft: -2 * outerSize,\n innerTop: -outerSize + bordersDelta,\n innerLeft: -outerSize + 2 * bordersDelta,\n activeBorder: 'Right',\n outerSize,\n };\n default:\n throw new Error('Direction must be one of top, right, bottom, left');\n }\n }\n\n private getPinTopCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'top':\n return pinOffset;\n case 'middle':\n return popupRect.height / 2 - pinHeight;\n case 'bottom':\n return popupRect.height - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n\n private getPinLeftCoordinate(popupRect: Rect, align: string, pinHeight: number, pinOffset: number) {\n switch (align) {\n case 'left':\n return pinOffset;\n case 'center':\n return popupRect.width / 2 - pinHeight;\n case 'right':\n return popupRect.width - pinOffset - 2 * pinHeight;\n default:\n throw new Error(`Unexpected align '${align}'`);\n }\n }\n}\n"]}
@@ -62,6 +62,7 @@ export declare const PopupMenuDataTids: {
62
62
  declare type DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;
63
63
  export declare class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {
64
64
  static __KONTUR_REACT_UI__: string;
65
+ static displayName: string;
65
66
  private isMobileLayout;
66
67
  private rootId;
67
68
  static defaultProps: DefaultProps;
@@ -114,6 +114,7 @@ PopupMenu = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_c
114
114
 
115
115
 
116
116
 
117
+
117
118
  rootId = _Popup.PopupIds.root + (0, _utils.getRandomID)();_this.
118
119
 
119
120
 
@@ -362,4 +363,4 @@ PopupMenu = (0, _rootNode.rootNode)(_class = (0, _decorator.responsiveLayout)(_c
362
363
 
363
364
  var restoreFocus = event.type === 'keydown';
364
365
  _this.hideMenu(restoreFocus);
365
- };return _this;}var _proto = PopupMenu.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ menuOffsetY: theme.popupMenuMenuOffsetY }, theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var _this$props$popupMenu2;var _this$getProps = this.getProps(),popupHasPin = _this$getProps.popupHasPin,disableAnimations = _this$getProps.disableAnimations;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.hideMenuWithoutFocusing, onFocusOutside: this.hideMenuWithoutFocusing, active: this.state.menuVisible }, /*#__PURE__*/_react.default.createElement("div", { "data-tid": PopupMenuDataTids.root, className: _PopupMenu.styles.container(), style: { width: this.props.width } }, this.renderCaption(), this.captionWrapper && this.props.children && /*#__PURE__*/_react.default.createElement(_Popup.Popup, { id: (_this$props$popupMenu2 = this.props.popupMenuId) != null ? _this$props$popupMenu2 : this.rootId, anchorElement: this.captionWrapper, opened: this.state.menuVisible, hasShadow: true, margin: this.props.popupMargin, hasPin: popupHasPin, pinOffset: this.props.popupPinOffset, positions: this.getPositions(), disableAnimations: disableAnimations, onOpen: this.handleOpen, mobileOnCloseRequest: this.hideMenu, width: this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto' }, /*#__PURE__*/_react.default.createElement(_Menu.Menu, { hasShadow: false, maxHeight: this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none', onKeyDown: this.handleKeyDown, onItemClick: this.handleItemSelection, preventIconsOffset: this.props.preventIconsOffset, cyclicSelection: false, ref: this.refInternalMenu, initialSelectedItemIndex: this.state.firstItemShouldBeSelected ? 0 : -1, header: this.props.header, footer: this.props.footer }, this.props.children)))));};_proto.getPositions = function getPositions() {var positions = this.getProps().positions;if (positions && (0, _validatePositions.isValidPositions)(positions)) {return positions;}return Positions;};return PopupMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'PopupMenu', _class2.defaultProps = { positions: Positions, type: PopupMenuType.Tooltip, popupHasPin: true, disableAnimations: false }, _class2.Type = PopupMenuType, _temp)) || _class) || _class;exports.PopupMenu = PopupMenu;
366
+ };return _this;}var _proto = PopupMenu.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ menuOffsetY: theme.popupMenuMenuOffsetY }, theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var _this$props$popupMenu2;var _this$getProps = this.getProps(),popupHasPin = _this$getProps.popupHasPin,disableAnimations = _this$getProps.disableAnimations;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.hideMenuWithoutFocusing, onFocusOutside: this.hideMenuWithoutFocusing, active: this.state.menuVisible }, /*#__PURE__*/_react.default.createElement("div", { "data-tid": PopupMenuDataTids.root, className: _PopupMenu.styles.container(), style: { width: this.props.width } }, this.renderCaption(), this.captionWrapper && this.props.children && /*#__PURE__*/_react.default.createElement(_Popup.Popup, { id: (_this$props$popupMenu2 = this.props.popupMenuId) != null ? _this$props$popupMenu2 : this.rootId, anchorElement: this.captionWrapper, opened: this.state.menuVisible, hasShadow: true, margin: this.props.popupMargin, hasPin: popupHasPin, pinOffset: this.props.popupPinOffset, positions: this.getPositions(), disableAnimations: disableAnimations, onOpen: this.handleOpen, mobileOnCloseRequest: this.hideMenu, width: this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto' }, /*#__PURE__*/_react.default.createElement(_Menu.Menu, { hasShadow: false, maxHeight: this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none', onKeyDown: this.handleKeyDown, onItemClick: this.handleItemSelection, preventIconsOffset: this.props.preventIconsOffset, cyclicSelection: false, ref: this.refInternalMenu, initialSelectedItemIndex: this.state.firstItemShouldBeSelected ? 0 : -1, header: this.props.header, footer: this.props.footer }, this.props.children)))));};_proto.getPositions = function getPositions() {var positions = this.getProps().positions;if (positions && (0, _validatePositions.isValidPositions)(positions)) {return positions;}return Positions;};return PopupMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'PopupMenu', _class2.displayName = 'PopupMenu', _class2.defaultProps = { positions: Positions, type: PopupMenuType.Tooltip, popupHasPin: true, disableAnimations: false }, _class2.Type = PopupMenuType, _temp)) || _class) || _class;exports.PopupMenu = PopupMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["PopupMenu.tsx"],"names":["PopupMenuType","Dropdown","Tooltip","PopupMenuDataTids","root","caption","Positions","PopupMenu","rootNode","responsiveLayout","rootId","PopupIds","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","passPropsToCaption","React","cloneElement","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","styles","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","theme","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","popupHasPin","disableAnimations","setRootNode","container","width","children","popupMargin","popupPinOffset","getPositions","isMobileLayout","menuWidth","menuMaxHeight","preventIconsOffset","header","footer","positions","Component","__KONTUR_REACT_UI__","Type"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup, PopupIds, PopupPositionsType } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Menu, MenuProps } from '../Menu';\n\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\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<AriaAttributes, 'aria-label'> {\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?: PopupPositionsType[];\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 onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nexport const PopupMenuDataTids = {\n root: 'PopupMenu__root',\n caption: 'PopupMenu__caption',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\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<Menu> = null;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\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 data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n hasShadow={false}\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\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 </Menu>\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<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\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={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\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 (globalObject.document) {\n this.savedFocusableElement = globalObject.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\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\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":["PopupMenuType","Dropdown","Tooltip","PopupMenuDataTids","root","caption","Positions","PopupMenu","rootNode","responsiveLayout","rootId","PopupIds","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","refInternalMenu","element","handleOpen","focus","passPropsToCaption","React","cloneElement","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","styles","handleCaptionClick","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleKeyDown","globalObject","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","render","theme","ThemeFactory","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","popupHasPin","disableAnimations","setRootNode","container","width","children","popupMargin","popupPinOffset","getPositions","isMobileLayout","menuWidth","menuMaxHeight","preventIconsOffset","header","footer","positions","Component","__KONTUR_REACT_UI__","displayName","Type"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup, PopupIds, PopupPositionsType } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport { Nullable } from '../../typings/utility-types';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Menu, MenuProps } from '../Menu';\n\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\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<AriaAttributes, 'aria-label'> {\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?: PopupPositionsType[];\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 onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nexport const PopupMenuDataTids = {\n root: 'PopupMenu__root',\n caption: 'PopupMenu__caption',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\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<Menu> = null;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\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 data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n hasShadow={false}\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\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 </Menu>\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<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\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={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\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 (globalObject.document) {\n this.savedFocusableElement = globalObject.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\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\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"]}
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { RenderContainerProps } from './RenderContainerTypes';
3
3
  export declare class RenderContainer extends React.Component<RenderContainerProps> {
4
4
  static __KONTUR_REACT_UI__: string;
5
+ static displayName: string;
5
6
  private static getRootId;
6
7
  private domContainer;
7
8
  private readonly rootId;
@@ -13,6 +13,7 @@ RenderContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
13
13
 
14
14
 
15
15
 
16
+
16
17
  domContainer = null;_this.
17
18
 
18
19
  rootId = RenderContainer.getRootId();return _this;}var _proto = RenderContainer.prototype;_proto.
@@ -83,4 +84,4 @@ RenderContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
83
84
  _globalObject.globalObject.ReactTesting.removeRenderContainer(this.rootId);
84
85
  }
85
86
  }
86
- };return RenderContainer;}(_react.default.Component);exports.RenderContainer = RenderContainer;RenderContainer.__KONTUR_REACT_UI__ = 'RenderContainer';RenderContainer.getRootId = function () {return (0, _utils.getRandomID)();};
87
+ };return RenderContainer;}(_react.default.Component);exports.RenderContainer = RenderContainer;RenderContainer.__KONTUR_REACT_UI__ = 'RenderContainer';RenderContainer.displayName = 'RenderContainer';RenderContainer.getRootId = function () {return (0, _utils.getRandomID)();};
@@ -1 +1 @@
1
- {"version":3,"sources":["RenderContainer.tsx"],"names":["RenderContainer","domContainer","rootId","getRootId","shouldComponentUpdate","nextProps","props","children","mountContainer","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","globalObject","document","createElement","setAttribute","Upgrade","getSpecificityClassName","parentNode","body","appendChild","containerRef","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","React","Component","__KONTUR_REACT_UI__"],"mappings":"6UAAA;AACA;;;AAGA;AACA;AACA;;AAEA,8D;;;AAGaA,e;;;;AAIHC,IAAAA,Y,GAAsC,I;;AAE7BC,IAAAA,M,GAAiBF,eAAe,CAACG,SAAhB,E;;AAE3BC,EAAAA,qB,GAAP,+BAA6BC,SAA7B,EAA8D;AAC5D,QAAI,CAAC,KAAKC,KAAL,CAAWC,QAAZ,IAAwBF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKC,cAAL;AACD;AACD,QAAI,KAAKF,KAAL,CAAWC,QAAX,IAAuB,CAACF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKE,gBAAL;AACD;AACD,WAAO,IAAP;AACD,G;;AAEMC,EAAAA,oB,GAAP,gCAA8B;AAC5B,SAAKC,gBAAL;AACD,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd,QAAI,KAAKN,KAAL,CAAWC,QAAf,EAAyB;AACvB,WAAKC,cAAL;AACD;;AAED,wBAAO,6BAAC,0CAAD,6BAA0B,KAAKF,KAA/B,IAAsC,YAAY,EAAE,KAAKL,YAAzD,EAAuE,MAAM,EAAE,KAAKC,MAApF,IAAP;AACD,G;;AAEOW,EAAAA,e,GAAR,2BAA0B;AACxB,QAAMZ,YAAY,4BAAGa,2BAAaC,QAAhB,qBAAG,sBAAuBC,aAAvB,CAAqC,KAArC,CAArB;AACA,QAAIf,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,CAACgB,YAAb,CAA0B,OAA1B,EAAmCC,kBAAQC,uBAAR,EAAnC;AACAlB,MAAAA,YAAY,CAACgB,YAAb,CAA0B,4BAA1B,OAA2D,KAAKf,MAAhE;AACA,WAAKD,YAAL,GAAoBA,YAApB;AACD;AACF,G;;AAEOO,EAAAA,c,GAAR,0BAAyB;AACvB,QAAI,CAAC,KAAKP,YAAV,EAAwB;AACtB,WAAKY,eAAL;AACD;AACD,QAAI,KAAKZ,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAAlB,gCAAiCN,2BAAaC,QAA9C,qBAAiC,uBAAuBM,IAAxD,CAAzB,EAAuF;AACrF,2DAAaN,QAAb,4CAAuBM,IAAvB,CAA4BC,WAA5B,CAAwC,KAAKrB,YAA7C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,KAAKtB,YAA3C;AACD;AACD,UAAIa,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BC,kBAA1B,CAA6C,KAAKvB,MAAlD,EAA0D,IAA1D;AACD;AACF;AACF,G;;AAEOS,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKV,YAAT,EAAuB;AACrB,WAAKQ,gBAAL;AACA,WAAKR,YAAL,GAAoB,IAApB;AACD;AACF,G;;AAEOQ,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKR,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAA3C,EAAuD;AACrD,WAAKnB,YAAL,CAAkBmB,UAAlB,CAA6BM,WAA7B,CAAyC,KAAKzB,YAA9C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,IAAtC;AACD;;AAED,UAAIT,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BG,qBAA1B,CAAgD,KAAKzB,MAArD;AACD;AACF;AACF,G,0BA1EkC0B,eAAMC,S,4CAA9B7B,e,CACG8B,mB,GAAsB,iB,CADzB9B,e,CAGIG,S,GAAY,oBAAM,yBAAN,E","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\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 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 if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n const domContainer = globalObject.document?.createElement('div');\n if (domContainer) {\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 !== globalObject.document?.body) {\n globalObject.document?.body.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalObject.ReactTesting) {\n globalObject.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 (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["RenderContainer.tsx"],"names":["RenderContainer","domContainer","rootId","getRootId","shouldComponentUpdate","nextProps","props","children","mountContainer","unmountContainer","componentWillUnmount","destroyContainer","render","createContainer","globalObject","document","createElement","setAttribute","Upgrade","getSpecificityClassName","parentNode","body","appendChild","containerRef","ReactTesting","addRenderContainer","removeChild","removeRenderContainer","React","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"6UAAA;AACA;;;AAGA;AACA;AACA;;AAEA,8D;;;AAGaA,e;;;;;AAKHC,IAAAA,Y,GAAsC,I;;AAE7BC,IAAAA,M,GAAiBF,eAAe,CAACG,SAAhB,E;;AAE3BC,EAAAA,qB,GAAP,+BAA6BC,SAA7B,EAA8D;AAC5D,QAAI,CAAC,KAAKC,KAAL,CAAWC,QAAZ,IAAwBF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKC,cAAL;AACD;AACD,QAAI,KAAKF,KAAL,CAAWC,QAAX,IAAuB,CAACF,SAAS,CAACE,QAAtC,EAAgD;AAC9C,WAAKE,gBAAL;AACD;AACD,WAAO,IAAP;AACD,G;;AAEMC,EAAAA,oB,GAAP,gCAA8B;AAC5B,SAAKC,gBAAL;AACD,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd,QAAI,KAAKN,KAAL,CAAWC,QAAf,EAAyB;AACvB,WAAKC,cAAL;AACD;;AAED,wBAAO,6BAAC,0CAAD,6BAA0B,KAAKF,KAA/B,IAAsC,YAAY,EAAE,KAAKL,YAAzD,EAAuE,MAAM,EAAE,KAAKC,MAApF,IAAP;AACD,G;;AAEOW,EAAAA,e,GAAR,2BAA0B;AACxB,QAAMZ,YAAY,4BAAGa,2BAAaC,QAAhB,qBAAG,sBAAuBC,aAAvB,CAAqC,KAArC,CAArB;AACA,QAAIf,YAAJ,EAAkB;AAChBA,MAAAA,YAAY,CAACgB,YAAb,CAA0B,OAA1B,EAAmCC,kBAAQC,uBAAR,EAAnC;AACAlB,MAAAA,YAAY,CAACgB,YAAb,CAA0B,4BAA1B,OAA2D,KAAKf,MAAhE;AACA,WAAKD,YAAL,GAAoBA,YAApB;AACD;AACF,G;;AAEOO,EAAAA,c,GAAR,0BAAyB;AACvB,QAAI,CAAC,KAAKP,YAAV,EAAwB;AACtB,WAAKY,eAAL;AACD;AACD,QAAI,KAAKZ,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAAlB,gCAAiCN,2BAAaC,QAA9C,qBAAiC,uBAAuBM,IAAxD,CAAzB,EAAuF;AACrF,2DAAaN,QAAb,4CAAuBM,IAAvB,CAA4BC,WAA5B,CAAwC,KAAKrB,YAA7C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,KAAKtB,YAA3C;AACD;AACD,UAAIa,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BC,kBAA1B,CAA6C,KAAKvB,MAAlD,EAA0D,IAA1D;AACD;AACF;AACF,G;;AAEOS,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKV,YAAT,EAAuB;AACrB,WAAKQ,gBAAL;AACA,WAAKR,YAAL,GAAoB,IAApB;AACD;AACF,G;;AAEOQ,EAAAA,gB,GAAR,4BAA2B;AACzB,QAAI,KAAKR,YAAL,IAAqB,KAAKA,YAAL,CAAkBmB,UAA3C,EAAuD;AACrD,WAAKnB,YAAL,CAAkBmB,UAAlB,CAA6BM,WAA7B,CAAyC,KAAKzB,YAA9C;;AAEA,UAAI,KAAKK,KAAL,CAAWiB,YAAf,EAA6B;AAC3B,wCAAa,KAAKjB,KAAL,CAAWiB,YAAxB,EAAsC,IAAtC;AACD;;AAED,UAAIT,2BAAaU,YAAjB,EAA+B;AAC7BV,mCAAaU,YAAb,CAA0BG,qBAA1B,CAAgD,KAAKzB,MAArD;AACD;AACF;AACF,G,0BA3EkC0B,eAAMC,S,4CAA9B7B,e,CACG8B,mB,GAAsB,iB,CADzB9B,e,CAEG+B,W,GAAc,iB,CAFjB/B,e,CAIIG,S,GAAY,oBAAM,yBAAN,E","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { getRandomID } from '../../lib/utils';\nimport { Upgrade } from '../../lib/Upgrades';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\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 public static displayName = 'RenderContainer';\n\n private static getRootId = () => getRandomID();\n private domContainer: Nullable<HTMLElement> = null;\n\n private readonly rootId: string = RenderContainer.getRootId();\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 if (this.props.children) {\n this.mountContainer();\n }\n\n return <RenderInnerContainer {...this.props} domContainer={this.domContainer} rootId={this.rootId} />;\n }\n\n private createContainer() {\n const domContainer = globalObject.document?.createElement('div');\n if (domContainer) {\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 !== globalObject.document?.body) {\n globalObject.document?.body.appendChild(this.domContainer);\n\n if (this.props.containerRef) {\n callChildRef(this.props.containerRef, this.domContainer);\n }\n if (globalObject.ReactTesting) {\n globalObject.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 (this.props.containerRef) {\n callChildRef(this.props.containerRef, null);\n }\n\n if (globalObject.ReactTesting) {\n globalObject.ReactTesting.removeRenderContainer(this.rootId);\n }\n }\n }\n}\n"]}
@@ -13,9 +13,12 @@ export declare const Portal: {
13
13
  rt_rootID: propTypes.Validator<string>;
14
14
  children: propTypes.Validator<string | number | boolean | {} | propTypes.ReactElementLike | propTypes.ReactNodeArray>;
15
15
  };
16
+ __KONTUR_REACT_UI__: string;
17
+ displayName: string;
16
18
  };
17
19
  export declare class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {
18
20
  static __KONTUR_REACT_UI__: string;
21
+ static displayName: string;
19
22
  render(): React.ReactNode;
20
23
  }
21
24
  export {};
@@ -46,6 +46,7 @@ var Portal = function Portal(_ref) {var container = _ref.container,rt_rootID = _
46
46
  RenderInnerContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(RenderInnerContainer, _React$Component);function RenderInnerContainer() {return _React$Component.apply(this, arguments) || this;}var _proto = RenderInnerContainer.prototype;_proto.
47
47
 
48
48
 
49
+
49
50
  render = function render() {
50
51
  var _this$props = this.props,anchor = _this$props.anchor,children = _this$props.children,domContainer = _this$props.domContainer,rootId = _this$props.rootId;
51
52
  var inner = anchor;
@@ -62,10 +63,14 @@ RenderInnerContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLo
62
63
  }
63
64
 
64
65
  return inner;
65
- };return RenderInnerContainer;}(_react.default.Component);exports.RenderInnerContainer = RenderInnerContainer;RenderInnerContainer.__KONTUR_REACT_UI__ = 'RenderInnerContainer';
66
+ };return RenderInnerContainer;}(_react.default.Component);exports.RenderInnerContainer = RenderInnerContainer;RenderInnerContainer.__KONTUR_REACT_UI__ = 'RenderInnerContainer';RenderInnerContainer.displayName = 'RenderInnerContainer';
66
67
 
67
68
 
68
69
  Portal.propTypes = {
69
70
  container: (0, _SSRSafe.safePropTypesInstanceOf)(_globalObject.globalObject.HTMLElement),
70
71
  rt_rootID: _propTypes.default.string.isRequired,
71
- children: _propTypes.default.node.isRequired };
72
+ children: _propTypes.default.node.isRequired };
73
+
74
+
75
+ Portal.__KONTUR_REACT_UI__ = 'Portal';
76
+ Portal.displayName = 'Portal';