@vkontakte/vkui 7.1.3 → 7.2.1

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 (1202) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +2 -2
  2. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/components/ActionSheet/ActionSheet.d.ts +1 -1
  5. package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  6. package/dist/components/ActionSheet/ActionSheet.js +1 -1
  7. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  8. package/dist/components/ActionSheet/ActionSheetDefaultIosCloseItem.d.ts.map +1 -1
  9. package/dist/components/ActionSheet/ActionSheetDropdownMenu.d.ts +1 -1
  10. package/dist/components/ActionSheet/ActionSheetDropdownMenu.d.ts.map +1 -1
  11. package/dist/components/ActionSheet/ActionSheetDropdownMenu.js +10 -4
  12. package/dist/components/ActionSheet/ActionSheetDropdownMenu.js.map +1 -1
  13. package/dist/components/ActionSheet/ActionSheetDropdownSheet.d.ts +1 -1
  14. package/dist/components/ActionSheet/ActionSheetDropdownSheet.d.ts.map +1 -1
  15. package/dist/components/ActionSheet/ActionSheetDropdownSheet.js +10 -4
  16. package/dist/components/ActionSheet/ActionSheetDropdownSheet.js.map +1 -1
  17. package/dist/components/ActionSheet/types.d.ts +4 -0
  18. package/dist/components/ActionSheet/types.d.ts.map +1 -1
  19. package/dist/components/ActionSheet/types.js.map +1 -1
  20. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts.map +1 -1
  21. package/dist/components/ActionSheetItem/helpers.d.ts.map +1 -1
  22. package/dist/components/ActionSheetItem/subcomponents/Radio/Radio.d.ts.map +1 -1
  23. package/dist/components/AdaptiveIconRenderer/AdaptiveIconRenderer.d.ts.map +1 -1
  24. package/dist/components/AdaptivityProvider/AdaptivityProvider.d.ts.map +1 -1
  25. package/dist/components/Alert/Alert.d.ts +14 -2
  26. package/dist/components/Alert/Alert.d.ts.map +1 -1
  27. package/dist/components/Alert/Alert.js +15 -104
  28. package/dist/components/Alert/Alert.js.map +1 -1
  29. package/dist/components/Alert/AlertAction.d.ts.map +1 -1
  30. package/dist/components/Alert/AlertActions.d.ts.map +1 -1
  31. package/dist/components/Alert/AlertBase.d.ts +7 -0
  32. package/dist/components/Alert/AlertBase.d.ts.map +1 -0
  33. package/dist/components/Alert/AlertBase.js +131 -0
  34. package/dist/components/Alert/AlertBase.js.map +1 -0
  35. package/dist/components/Alert/AlertTypography.d.ts +2 -1
  36. package/dist/components/Alert/AlertTypography.d.ts.map +1 -1
  37. package/dist/components/Alert/AlertTypography.js.map +1 -1
  38. package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
  39. package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
  40. package/dist/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js +1 -1
  41. package/dist/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js.map +1 -1
  42. package/dist/components/AppRoot/ScrollContext.d.ts +1 -0
  43. package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
  44. package/dist/components/AppRoot/ScrollContext.js +127 -39
  45. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  46. package/dist/components/AppRoot/helpers.d.ts.map +1 -1
  47. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts.map +1 -1
  48. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +4 -1
  49. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  50. package/dist/components/Avatar/AvatarBadge/icons.d.ts.map +1 -1
  51. package/dist/components/Badge/Badge.d.ts.map +1 -1
  52. package/dist/components/Banner/Banner.d.ts.map +1 -1
  53. package/dist/components/Button/Button.d.ts.map +1 -1
  54. package/dist/components/ButtonGroup/ButtonGroup.d.ts +4 -1
  55. package/dist/components/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  56. package/dist/components/ButtonGroup/ButtonGroup.js +1 -0
  57. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -1
  58. package/dist/components/Calendar/Calendar.d.ts +8 -3
  59. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  60. package/dist/components/Calendar/Calendar.js +98 -92
  61. package/dist/components/Calendar/Calendar.js.map +1 -1
  62. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  63. package/dist/components/CalendarDay/CalendarDay.js +1 -3
  64. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  65. package/dist/components/CalendarDays/CalendarDays.d.ts +1 -1
  66. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  67. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  68. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  69. package/dist/components/CalendarHeader/CalendarHeader.js +1 -3
  70. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  71. package/dist/components/CalendarRange/CalendarRange.d.ts +4 -3
  72. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  73. package/dist/components/CalendarRange/CalendarRange.js +105 -108
  74. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  75. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  76. package/dist/components/CalendarTime/CalendarTime.js +16 -13
  77. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  78. package/dist/components/Card/Card.d.ts.map +1 -1
  79. package/dist/components/CardGrid/CardGrid.d.ts.map +1 -1
  80. package/dist/components/CardScroll/CardScroll.d.ts +5 -1
  81. package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
  82. package/dist/components/CardScroll/CardScroll.js +32 -29
  83. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  84. package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -1
  85. package/dist/components/CarouselBase/CarouselBase.js +71 -46
  86. package/dist/components/CarouselBase/CarouselBase.js.map +1 -1
  87. package/dist/components/CarouselBase/ScrollArrows.d.ts.map +1 -1
  88. package/dist/components/CarouselBase/helpers.d.ts +20 -5
  89. package/dist/components/CarouselBase/helpers.d.ts.map +1 -1
  90. package/dist/components/CarouselBase/helpers.js +70 -44
  91. package/dist/components/CarouselBase/helpers.js.map +1 -1
  92. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts.map +1 -1
  93. package/dist/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
  94. package/dist/components/CellButton/CellButton.d.ts.map +1 -1
  95. package/dist/components/CellButtonGroup/CellButtonGroup.d.ts +300 -0
  96. package/dist/components/CellButtonGroup/CellButtonGroup.d.ts.map +1 -0
  97. package/dist/components/CellButtonGroup/CellButtonGroup.js +20 -0
  98. package/dist/components/CellButtonGroup/CellButtonGroup.js.map +1 -0
  99. package/dist/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.d.ts +8 -0
  100. package/dist/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.d.ts.map +1 -0
  101. package/dist/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.js +20 -0
  102. package/dist/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.js.map +1 -0
  103. package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  104. package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  105. package/dist/components/ChipsInputBase/Chip/Chip.d.ts.map +1 -1
  106. package/dist/components/ChipsInputBase/ChipsInputBase.d.ts.map +1 -1
  107. package/dist/components/ChipsInputBase/ChipsInputBase.js +1 -0
  108. package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  109. package/dist/components/ChipsInputBase/helpers.d.ts +1 -1
  110. package/dist/components/ChipsInputBase/helpers.d.ts.map +1 -1
  111. package/dist/components/ChipsInputBase/helpers.js +4 -0
  112. package/dist/components/ChipsInputBase/helpers.js.map +1 -1
  113. package/dist/components/ChipsInputBase/types.d.ts +1 -1
  114. package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
  115. package/dist/components/ChipsInputBase/types.js.map +1 -1
  116. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  117. package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  118. package/dist/components/ChipsSelect/ChipsSelect.js +9 -2
  119. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  120. package/dist/components/ChipsSelect/constants.d.ts.map +1 -1
  121. package/dist/components/ChipsSelect/useChipsSelect.d.ts +3 -2
  122. package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  123. package/dist/components/ChipsSelect/useChipsSelect.js +9 -3
  124. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  125. package/dist/components/Clickable/Clickable.d.ts +1 -1
  126. package/dist/components/Clickable/Clickable.d.ts.map +1 -1
  127. package/dist/components/Clickable/Clickable.js +28 -28
  128. package/dist/components/Clickable/Clickable.js.map +1 -1
  129. package/dist/components/Clickable/RealClickable.d.ts.map +1 -1
  130. package/dist/components/ColorSchemeProvider/ColorSchemeProvider.d.ts.map +1 -1
  131. package/dist/components/ColorSchemeProvider/ColorSchemeProvider.js +1 -1
  132. package/dist/components/ColorSchemeProvider/ColorSchemeProvider.js.map +1 -1
  133. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  134. package/dist/components/ConfigProvider/ConfigProvider.js +5 -2
  135. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  136. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +11 -1
  137. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts.map +1 -1
  138. package/dist/components/ConfigProvider/ConfigProviderContext.js +12 -7
  139. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  140. package/dist/components/ContentCard/ContentCard.d.ts +6 -1
  141. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
  142. package/dist/components/ContentCard/ContentCard.js +6 -4
  143. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  144. package/dist/components/Counter/Counter.d.ts.map +1 -1
  145. package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  146. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  147. package/dist/components/CustomSelect/CustomSelect.js +108 -71
  148. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  149. package/dist/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
  150. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts.map +1 -1
  151. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  152. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +3 -1
  153. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  154. package/dist/components/CustomSelectOption/CustomSelectOption.d.ts.map +1 -1
  155. package/dist/components/DateInput/DateInput.d.ts +19 -2
  156. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  157. package/dist/components/DateInput/DateInput.js +118 -82
  158. package/dist/components/DateInput/DateInput.js.map +1 -1
  159. package/dist/components/DateInput/hooks.d.ts +16 -0
  160. package/dist/components/DateInput/hooks.d.ts.map +1 -0
  161. package/dist/components/DateInput/hooks.js +61 -0
  162. package/dist/components/DateInput/hooks.js.map +1 -0
  163. package/dist/components/DateRangeInput/DateRangeInput.d.ts +10 -2
  164. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  165. package/dist/components/DateRangeInput/DateRangeInput.js +110 -82
  166. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  167. package/dist/components/DirectionProvider/DirectionProvider.d.ts +13 -0
  168. package/dist/components/DirectionProvider/DirectionProvider.d.ts.map +1 -0
  169. package/dist/components/DirectionProvider/DirectionProvider.js +15 -0
  170. package/dist/components/DirectionProvider/DirectionProvider.js.map +1 -0
  171. package/dist/components/Div/Div.d.ts.map +1 -1
  172. package/dist/components/DropdownIcon/DropdownIcon.d.ts.map +1 -1
  173. package/dist/components/Epic/Epic.d.ts.map +1 -1
  174. package/dist/components/Epic/ScrollSaver.d.ts.map +1 -1
  175. package/dist/components/File/File.d.ts.map +1 -1
  176. package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  177. package/dist/components/Flex/Flex.d.ts.map +1 -1
  178. package/dist/components/Flex/Flex.js +3 -5
  179. package/dist/components/Flex/Flex.js.map +1 -1
  180. package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  181. package/dist/components/FloatingArrow/DefaultIcon.d.ts.map +1 -1
  182. package/dist/components/FloatingArrow/FloatingArrow.d.ts.map +1 -1
  183. package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  184. package/dist/components/Footer/Footer.d.ts.map +1 -1
  185. package/dist/components/FormField/FormField.d.ts.map +1 -1
  186. package/dist/components/FormFieldClearButton/FormFieldClearButton.d.ts.map +1 -1
  187. package/dist/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
  188. package/dist/components/FormStatus/FormStatus.d.ts.map +1 -1
  189. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  190. package/dist/components/Gradient/Gradient.d.ts.map +1 -1
  191. package/dist/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.d.ts.map +1 -1
  192. package/dist/components/Header/Header.d.ts.map +1 -1
  193. package/dist/components/HorizontalCell/HorizontalCell.d.ts.map +1 -1
  194. package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts.map +1 -1
  195. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +13 -1
  196. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  197. package/dist/components/HorizontalScroll/HorizontalScroll.js +32 -24
  198. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  199. package/dist/components/IconButton/IconButton.d.ts.map +1 -1
  200. package/dist/components/ImageBase/ImageBase.d.ts +5 -0
  201. package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
  202. package/dist/components/ImageBase/ImageBase.js +6 -4
  203. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  204. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts.map +1 -1
  205. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.d.ts.map +1 -1
  206. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +3 -4
  207. package/dist/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
  208. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts +1 -0
  209. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -1
  210. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js +25 -0
  211. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  212. package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts +4 -0
  213. package/dist/components/ImageBase/ImageBaseOverlay/types.d.ts.map +1 -1
  214. package/dist/components/ImageBase/ImageBaseOverlay/types.js.map +1 -1
  215. package/dist/components/InfoRow/InfoRow.d.ts.map +1 -1
  216. package/dist/components/Input/Input.d.ts.map +1 -1
  217. package/dist/components/InputLike/InputLikeDivider.d.ts.map +1 -1
  218. package/dist/components/Link/Link.d.ts.map +1 -1
  219. package/dist/components/List/List.d.ts.map +1 -1
  220. package/dist/components/Mark/Mark.d.ts.map +1 -1
  221. package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
  222. package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
  223. package/dist/components/ModalCard/ModalCard.js +6 -13
  224. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  225. package/dist/components/ModalCard/ModalCardInternal.d.ts +1 -1
  226. package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -1
  227. package/dist/components/ModalCard/ModalCardInternal.js +4 -2
  228. package/dist/components/ModalCard/ModalCardInternal.js.map +1 -1
  229. package/dist/components/ModalCard/types.d.ts +1 -1
  230. package/dist/components/ModalCard/types.d.ts.map +1 -1
  231. package/dist/components/ModalCard/types.js.map +1 -1
  232. package/dist/components/ModalCardBase/ModalCardBase.d.ts +9 -1
  233. package/dist/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
  234. package/dist/components/ModalCardBase/ModalCardBase.js +33 -8
  235. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  236. package/dist/components/ModalDismissButton/ModalDismissButton.d.ts +5 -3
  237. package/dist/components/ModalDismissButton/ModalDismissButton.d.ts.map +1 -1
  238. package/dist/components/ModalDismissButton/ModalDismissButton.js +7 -7
  239. package/dist/components/ModalDismissButton/ModalDismissButton.js.map +1 -1
  240. package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -1
  241. package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts +17 -0
  242. package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts.map +1 -0
  243. package/dist/components/ModalOutsideButton/ModalOutsideButton.js +30 -0
  244. package/dist/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -0
  245. package/dist/components/ModalOutsideButtons/ModalOutsideButtons.d.ts +6 -0
  246. package/dist/components/ModalOutsideButtons/ModalOutsideButtons.d.ts.map +1 -0
  247. package/dist/components/ModalOutsideButtons/ModalOutsideButtons.js +22 -0
  248. package/dist/components/ModalOutsideButtons/ModalOutsideButtons.js.map +1 -0
  249. package/dist/components/ModalOverlay/ModalOverlay.d.ts.map +1 -1
  250. package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
  251. package/dist/components/ModalPage/ModalPage.js +5 -12
  252. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  253. package/dist/components/ModalPage/ModalPageBase.d.ts +8 -0
  254. package/dist/components/ModalPage/ModalPageBase.d.ts.map +1 -0
  255. package/dist/components/ModalPage/ModalPageBase.js +66 -0
  256. package/dist/components/ModalPage/ModalPageBase.js.map +1 -0
  257. package/dist/components/ModalPage/ModalPageInternal.d.ts +1 -1
  258. package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -1
  259. package/dist/components/ModalPage/ModalPageInternal.js +24 -32
  260. package/dist/components/ModalPage/ModalPageInternal.js.map +1 -1
  261. package/dist/components/ModalPage/types.d.ts +12 -1
  262. package/dist/components/ModalPage/types.d.ts.map +1 -1
  263. package/dist/components/ModalPage/types.js.map +1 -1
  264. package/dist/components/ModalPageContent/ModalPageContent.d.ts.map +1 -1
  265. package/dist/components/ModalPageFooter/ModalPageFooter.d.ts.map +1 -1
  266. package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
  267. package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  268. package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.d.ts.map +1 -1
  269. package/dist/components/ModalRoot/types.d.ts +1 -0
  270. package/dist/components/ModalRoot/types.d.ts.map +1 -1
  271. package/dist/components/ModalRoot/types.js.map +1 -1
  272. package/dist/components/ModalRoot/useModalManager.d.ts +4 -2
  273. package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
  274. package/dist/components/ModalRoot/useModalManager.js +12 -3
  275. package/dist/components/ModalRoot/useModalManager.js.map +1 -1
  276. package/dist/components/ModalRoot/useModalRootContext.js +1 -0
  277. package/dist/components/ModalRoot/useModalRootContext.js.map +1 -1
  278. package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
  279. package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
  280. package/dist/components/NavTransitionDirectionContext/NavTransitionDirectionContext.d.ts.map +1 -1
  281. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +2 -2
  282. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  283. package/dist/components/OnboardingTooltip/OnboardingTooltip.js +22 -8
  284. package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  285. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.d.ts.map +1 -1
  286. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js +12 -3
  287. package/dist/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
  288. package/dist/components/OnboardingTooltip/OnboardingTooltipContext.d.ts +7 -0
  289. package/dist/components/OnboardingTooltip/OnboardingTooltipContext.d.ts.map +1 -0
  290. package/dist/components/OnboardingTooltip/OnboardingTooltipContext.js +9 -0
  291. package/dist/components/OnboardingTooltip/OnboardingTooltipContext.js.map +1 -0
  292. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  293. package/dist/components/Pagination/Pagination.js +5 -2
  294. package/dist/components/Pagination/Pagination.js.map +1 -1
  295. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts.map +1 -1
  296. package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
  297. package/dist/components/Pagination/PaginationPage/PaginationPageEllipsis.d.ts.map +1 -1
  298. package/dist/components/Pagination/PaginationPage/usePaginationPageClasses.d.ts.map +1 -1
  299. package/dist/components/Panel/Panel.d.ts.map +1 -1
  300. package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
  301. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts.map +1 -1
  302. package/dist/components/PanelHeaderBack/PanelHeaderBack.js +3 -1
  303. package/dist/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
  304. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  305. package/dist/components/PanelHeaderClose/PanelHeaderClose.d.ts.map +1 -1
  306. package/dist/components/PanelHeaderContent/PanelHeaderContent.d.ts.map +1 -1
  307. package/dist/components/PanelHeaderContext/PanelHeaderContext.d.ts.map +1 -1
  308. package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts.map +1 -1
  309. package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.d.ts.map +1 -1
  310. package/dist/components/Placeholder/Placeholder.d.ts.map +1 -1
  311. package/dist/components/PlatformProvider/PlatformProvider.js +1 -1
  312. package/dist/components/PlatformProvider/PlatformProvider.js.map +1 -1
  313. package/dist/components/PopoutWrapper/PopoutWrapper.d.ts +15 -2
  314. package/dist/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
  315. package/dist/components/PopoutWrapper/PopoutWrapper.js +10 -2
  316. package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  317. package/dist/components/Popover/Popover.d.ts +1 -1
  318. package/dist/components/Popover/Popover.d.ts.map +1 -1
  319. package/dist/components/Popover/Popover.js +4 -4
  320. package/dist/components/Popover/Popover.js.map +1 -1
  321. package/dist/components/Popover/usePopover.d.ts +1 -1
  322. package/dist/components/Popover/usePopover.d.ts.map +1 -1
  323. package/dist/components/Popover/usePopover.js +69 -44
  324. package/dist/components/Popover/usePopover.js.map +1 -1
  325. package/dist/components/Popper/Popper.d.ts +2 -2
  326. package/dist/components/Popper/Popper.d.ts.map +1 -1
  327. package/dist/components/Popper/Popper.js +18 -5
  328. package/dist/components/Popper/Popper.js.map +1 -1
  329. package/dist/components/Progress/Progress.d.ts +7 -3
  330. package/dist/components/Progress/Progress.d.ts.map +1 -1
  331. package/dist/components/Progress/Progress.js +30 -11
  332. package/dist/components/Progress/Progress.js.map +1 -1
  333. package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  334. package/dist/components/PullToRefresh/PullToRefreshSpinner.d.ts.map +1 -1
  335. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  336. package/dist/components/Removable/Removable.d.ts.map +1 -1
  337. package/dist/components/Removable/Removable.js +8 -4
  338. package/dist/components/Removable/Removable.js.map +1 -1
  339. package/dist/components/RichCell/RichCellIcon/RichCellIcon.d.ts.map +1 -1
  340. package/dist/components/Root/Root.d.ts.map +1 -1
  341. package/dist/components/RootComponent/RootComponent.d.ts.map +1 -1
  342. package/dist/components/ScreenSpinner/Icon48CancelCircle.d.ts.map +1 -1
  343. package/dist/components/ScreenSpinner/Icon48DoneOutline.d.ts.map +1 -1
  344. package/dist/components/ScreenSpinner/ScreenSpinner.js +1 -0
  345. package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  346. package/dist/components/ScrollArrow/ScrollArrow.d.ts.map +1 -1
  347. package/dist/components/ScrollArrow/ScrollArrow.js +4 -1
  348. package/dist/components/ScrollArrow/ScrollArrow.js.map +1 -1
  349. package/dist/components/Search/Search.d.ts +9 -1
  350. package/dist/components/Search/Search.d.ts.map +1 -1
  351. package/dist/components/Search/Search.js +9 -2
  352. package/dist/components/Search/Search.js.map +1 -1
  353. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  354. package/dist/components/SegmentedControl/SegmentedControl.js +10 -7
  355. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  356. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  357. package/dist/components/Select/Select.d.ts.map +1 -1
  358. package/dist/components/SelectMimicry/SelectMimicry.d.ts.map +1 -1
  359. package/dist/components/SelectTypography/SelectTypography.d.ts.map +1 -1
  360. package/dist/components/Separator/Separator.d.ts.map +1 -1
  361. package/dist/components/SimpleCell/Chevron/Chevron.d.ts.map +1 -1
  362. package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  363. package/dist/components/SimpleGrid/SimpleGrid.d.ts.map +1 -1
  364. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
  365. package/dist/components/Slider/Slider.d.ts +1 -1
  366. package/dist/components/Slider/Slider.d.ts.map +1 -1
  367. package/dist/components/Slider/Slider.js +22 -18
  368. package/dist/components/Slider/Slider.js.map +1 -1
  369. package/dist/components/Slider/SliderThumb/SliderThumb.d.ts.map +1 -1
  370. package/dist/components/Slider/SliderThumb/SliderThumb.js +5 -1
  371. package/dist/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
  372. package/dist/components/Slider/helpers.d.ts.map +1 -1
  373. package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
  374. package/dist/components/Snackbar/Snackbar.js +6 -3
  375. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  376. package/dist/components/Snackbar/utils.d.ts +3 -2
  377. package/dist/components/Snackbar/utils.d.ts.map +1 -1
  378. package/dist/components/Snackbar/utils.js +11 -8
  379. package/dist/components/Snackbar/utils.js.map +1 -1
  380. package/dist/components/Spacing/Spacing.d.ts.map +1 -1
  381. package/dist/components/SplitCol/SplitCol.d.ts.map +1 -1
  382. package/dist/components/SplitLayout/SplitLayout.d.ts.map +1 -1
  383. package/dist/components/SubnavigationBar/SubnavigationBar.d.ts.map +1 -1
  384. package/dist/components/SubnavigationButton/SubnavigationButton.d.ts.map +1 -1
  385. package/dist/components/SubnavigationButton/SubnavigationButton.js +1 -1
  386. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  387. package/dist/components/Switch/Switch.d.ts.map +1 -1
  388. package/dist/components/Switch/Switch.js +4 -1
  389. package/dist/components/Switch/Switch.js.map +1 -1
  390. package/dist/components/Tabbar/Tabbar.d.ts.map +1 -1
  391. package/dist/components/TabbarItem/TabbarItem.d.ts.map +1 -1
  392. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  393. package/dist/components/Tabs/Tabs.js +3 -1
  394. package/dist/components/Tabs/Tabs.js.map +1 -1
  395. package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
  396. package/dist/components/Tappable/Ripple.d.ts.map +1 -1
  397. package/dist/components/Tappable/Tappable.d.ts.map +1 -1
  398. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  399. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  400. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  401. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  402. package/dist/components/Tooltip/Tooltip.js +8 -101
  403. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  404. package/dist/components/Tooltip/useTooltip.d.ts +14 -0
  405. package/dist/components/Tooltip/useTooltip.d.ts.map +1 -0
  406. package/dist/components/Tooltip/useTooltip.js +126 -0
  407. package/dist/components/Tooltip/useTooltip.js.map +1 -0
  408. package/dist/components/TooltipBase/TooltipBase.d.ts.map +1 -1
  409. package/dist/components/Touch/Touch.d.ts.map +1 -1
  410. package/dist/components/Touch/Touch.js +2 -2
  411. package/dist/components/Touch/Touch.js.map +1 -1
  412. package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
  413. package/dist/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  414. package/dist/components/Typography/EllipsisText/EllipsisText.d.ts.map +1 -1
  415. package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  416. package/dist/components/Typography/Headline/Headline.d.ts.map +1 -1
  417. package/dist/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  418. package/dist/components/Typography/Subhead/Subhead.d.ts.map +1 -1
  419. package/dist/components/Typography/Text/Text.d.ts.map +1 -1
  420. package/dist/components/Typography/Title/Title.d.ts.map +1 -1
  421. package/dist/components/Typography/Typography.d.ts.map +1 -1
  422. package/dist/components/UnstyledTextField/UnstyledTextField.d.ts.map +1 -1
  423. package/dist/components/UsersStack/UsersStack.d.ts +1 -1
  424. package/dist/components/UsersStack/UsersStack.d.ts.map +1 -1
  425. package/dist/components/UsersStack/UsersStack.js +5 -9
  426. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  427. package/dist/components/View/View.d.ts.map +1 -1
  428. package/dist/components/View/utils.d.ts.map +1 -1
  429. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  430. package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
  431. package/dist/components/WriteBarIcon/WriteBarIcon.d.ts.map +1 -1
  432. package/dist/components.css +1 -1
  433. package/dist/components.css.map +1 -1
  434. package/dist/context/CalendarDirectionContext.d.ts +1 -1
  435. package/dist/context/CalendarDirectionContext.d.ts.map +1 -1
  436. package/dist/context/CalendarDirectionContext.js.map +1 -1
  437. package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
  438. package/dist/cssm/components/Accordion/Accordion.module.css +6 -6
  439. package/dist/cssm/components/ActionSheet/ActionSheet.js +1 -1
  440. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  441. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +9 -9
  442. package/dist/cssm/components/ActionSheet/ActionSheetDropdownMenu.js +7 -3
  443. package/dist/cssm/components/ActionSheet/ActionSheetDropdownMenu.js.map +1 -1
  444. package/dist/cssm/components/ActionSheet/ActionSheetDropdownSheet.js +7 -3
  445. package/dist/cssm/components/ActionSheet/ActionSheetDropdownSheet.js.map +1 -1
  446. package/dist/cssm/components/ActionSheet/types.js.map +1 -1
  447. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +18 -18
  448. package/dist/cssm/components/Alert/Alert.js +12 -92
  449. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  450. package/dist/cssm/components/Alert/Alert.module.css +27 -29
  451. package/dist/cssm/components/Alert/AlertBase.js +111 -0
  452. package/dist/cssm/components/Alert/AlertBase.js.map +1 -0
  453. package/dist/cssm/components/Alert/AlertTypography.js.map +1 -1
  454. package/dist/cssm/components/AppRoot/AppRoot.module.css +2 -2
  455. package/dist/cssm/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js +1 -1
  456. package/dist/cssm/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.js.map +1 -1
  457. package/dist/cssm/components/AppRoot/ScrollContext.js +129 -37
  458. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  459. package/dist/cssm/components/AspectRatio/AspectRatio.module.css +2 -2
  460. package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
  461. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadge.module.css +8 -3
  462. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +4 -1
  463. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  464. package/dist/cssm/components/Banner/Banner.module.css +19 -19
  465. package/dist/cssm/components/Button/Button.module.css +11 -11
  466. package/dist/cssm/components/ButtonGroup/ButtonGroup.js +1 -0
  467. package/dist/cssm/components/ButtonGroup/ButtonGroup.js.map +1 -1
  468. package/dist/cssm/components/Calendar/Calendar.js +96 -92
  469. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  470. package/dist/cssm/components/Calendar/Calendar.module.css +8 -8
  471. package/dist/cssm/components/CalendarDay/CalendarDay.js +1 -3
  472. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  473. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +11 -11
  474. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  475. package/dist/cssm/components/CalendarDays/CalendarDays.module.css +7 -7
  476. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +1 -3
  477. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  478. package/dist/cssm/components/CalendarHeader/CalendarHeader.module.css +4 -4
  479. package/dist/cssm/components/CalendarRange/CalendarRange.js +106 -110
  480. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  481. package/dist/cssm/components/CalendarRange/CalendarRange.module.css +5 -5
  482. package/dist/cssm/components/CalendarTime/CalendarTime.js +16 -13
  483. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  484. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
  485. package/dist/cssm/components/Card/Card.module.css +7 -7
  486. package/dist/cssm/components/CardGrid/CardGrid.module.css +3 -3
  487. package/dist/cssm/components/CardScroll/CardScroll.js +30 -28
  488. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  489. package/dist/cssm/components/CardScroll/CardScroll.module.css +16 -16
  490. package/dist/cssm/components/CarouselBase/CarouselBase.js +71 -44
  491. package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -1
  492. package/dist/cssm/components/CarouselBase/CarouselBase.module.css +11 -11
  493. package/dist/cssm/components/CarouselBase/helpers.js +70 -44
  494. package/dist/cssm/components/CarouselBase/helpers.js.map +1 -1
  495. package/dist/cssm/components/Cell/Cell.module.css +18 -2
  496. package/dist/cssm/components/Cell/CellDragger/CellDragger.module.css +2 -2
  497. package/dist/cssm/components/CellButton/CellButton.module.css +8 -8
  498. package/dist/cssm/components/CellButtonGroup/CellButtonGroup.js +20 -0
  499. package/dist/cssm/components/CellButtonGroup/CellButtonGroup.js.map +1 -0
  500. package/dist/cssm/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.js +15 -0
  501. package/dist/cssm/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.js.map +1 -0
  502. package/dist/cssm/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.module.css +5 -0
  503. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +2 -2
  504. package/dist/cssm/components/ChipsInputBase/Chip/Chip.module.css +16 -16
  505. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +1 -0
  506. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  507. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.module.css +12 -12
  508. package/dist/cssm/components/ChipsInputBase/helpers.js +4 -0
  509. package/dist/cssm/components/ChipsInputBase/helpers.js.map +1 -1
  510. package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
  511. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +8 -2
  512. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  513. package/dist/cssm/components/ChipsSelect/ChipsSelect.module.css +1 -1
  514. package/dist/cssm/components/ChipsSelect/useChipsSelect.js +9 -3
  515. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  516. package/dist/cssm/components/Clickable/Clickable.js +29 -22
  517. package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
  518. package/dist/cssm/components/Clickable/Clickable.module.css +1 -1
  519. package/dist/cssm/components/ColorSchemeProvider/ColorSchemeProvider.js +1 -1
  520. package/dist/cssm/components/ColorSchemeProvider/ColorSchemeProvider.js.map +1 -1
  521. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +5 -2
  522. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  523. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +12 -7
  524. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  525. package/dist/cssm/components/ContentBadge/ContentBadge.module.css +7 -7
  526. package/dist/cssm/components/ContentCard/ContentCard.js +5 -4
  527. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  528. package/dist/cssm/components/ContentCard/ContentCard.module.css +6 -6
  529. package/dist/cssm/components/Counter/Counter.module.css +4 -4
  530. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +2 -2
  531. package/dist/cssm/components/CustomSelect/CustomSelect.js +108 -70
  532. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  533. package/dist/cssm/components/CustomSelect/CustomSelect.module.css +2 -2
  534. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +13 -13
  535. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -0
  536. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  537. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.module.css +2 -2
  538. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +9 -9
  539. package/dist/cssm/components/DateInput/DateInput.js +112 -81
  540. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  541. package/dist/cssm/components/DateInput/DateInput.module.css +40 -6
  542. package/dist/cssm/components/DateInput/hooks.js +61 -0
  543. package/dist/cssm/components/DateInput/hooks.js.map +1 -0
  544. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +107 -82
  545. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  546. package/dist/cssm/components/DateRangeInput/DateRangeInput.module.css +3 -3
  547. package/dist/cssm/components/DirectionProvider/DirectionProvider.js +15 -0
  548. package/dist/cssm/components/DirectionProvider/DirectionProvider.js.map +1 -0
  549. package/dist/cssm/components/DropZone/DropZone.module.css +2 -2
  550. package/dist/cssm/components/FixedLayout/FixedLayout.module.css +3 -3
  551. package/dist/cssm/components/Flex/Flex.js +3 -5
  552. package/dist/cssm/components/Flex/Flex.js.map +1 -1
  553. package/dist/cssm/components/Flex/Flex.module.css +40 -23
  554. package/dist/cssm/components/FloatingArrow/FloatingArrow.module.css +1 -1
  555. package/dist/cssm/components/Footer/Footer.module.css +1 -1
  556. package/dist/cssm/components/FormField/FormField.module.css +24 -24
  557. package/dist/cssm/components/FormItem/FormItem.module.css +11 -10
  558. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.module.css +5 -5
  559. package/dist/cssm/components/GridAvatar/GridAvatar.module.css +2 -2
  560. package/dist/cssm/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.module.css +2 -2
  561. package/dist/cssm/components/Group/Group.module.css +16 -16
  562. package/dist/cssm/components/Header/Header.module.css +6 -6
  563. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +3 -3
  564. package/dist/cssm/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.module.css +2 -2
  565. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +28 -23
  566. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  567. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.module.css +10 -4
  568. package/dist/cssm/components/IconButton/IconButton.module.css +11 -11
  569. package/dist/cssm/components/ImageBase/ImageBase.js +5 -4
  570. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  571. package/dist/cssm/components/ImageBase/ImageBase.module.css +15 -6
  572. package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.module.css +5 -5
  573. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +8 -8
  574. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js +3 -4
  575. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.js.map +1 -1
  576. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +2 -2
  577. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js +25 -0
  578. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  579. package/dist/cssm/components/ImageBase/ImageBaseOverlay/types.js.map +1 -1
  580. package/dist/cssm/components/InfoRow/InfoRow.module.css +3 -3
  581. package/dist/cssm/components/Input/Input.module.css +5 -5
  582. package/dist/cssm/components/InputLike/InputLike.module.css +3 -3
  583. package/dist/cssm/components/Link/Link.module.css +6 -6
  584. package/dist/cssm/components/Mark/Mark.module.css +2 -2
  585. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.module.css +5 -5
  586. package/dist/cssm/components/ModalCard/ModalCard.js +3 -11
  587. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  588. package/dist/cssm/components/ModalCard/ModalCard.module.css +4 -4
  589. package/dist/cssm/components/ModalCard/ModalCardInternal.js +3 -2
  590. package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -1
  591. package/dist/cssm/components/ModalCard/types.js.map +1 -1
  592. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +30 -7
  593. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  594. package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +7 -7
  595. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.js +5 -6
  596. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.js.map +1 -1
  597. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.module.css +0 -29
  598. package/dist/cssm/components/ModalOutlet/ModalOutlet.module.css +1 -1
  599. package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.js +24 -0
  600. package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -0
  601. package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.module.css +31 -0
  602. package/dist/cssm/components/ModalOutsideButtons/ModalOutsideButtons.js +16 -0
  603. package/dist/cssm/components/ModalOutsideButtons/ModalOutsideButtons.js.map +1 -0
  604. package/dist/cssm/components/ModalOutsideButtons/ModalOutsideButtons.module.css +6 -0
  605. package/dist/cssm/components/ModalOverlay/ModalOverlay.module.css +2 -2
  606. package/dist/cssm/components/ModalPage/ModalPage.js +3 -11
  607. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  608. package/dist/cssm/components/ModalPage/ModalPage.module.css +15 -16
  609. package/dist/cssm/components/ModalPage/ModalPageBase.js +49 -0
  610. package/dist/cssm/components/ModalPage/ModalPageBase.js.map +1 -0
  611. package/dist/cssm/components/ModalPage/ModalPageInternal.js +21 -32
  612. package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -1
  613. package/dist/cssm/components/ModalPage/types.js.map +1 -1
  614. package/dist/cssm/components/ModalPageFooter/ModalPageFooter.module.css +4 -4
  615. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +2 -3
  616. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  617. package/dist/cssm/components/ModalRoot/useModalManager.js +12 -3
  618. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
  619. package/dist/cssm/components/ModalRoot/useModalRootContext.js +1 -0
  620. package/dist/cssm/components/ModalRoot/useModalRootContext.js.map +1 -1
  621. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +20 -7
  622. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  623. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.module.css +1 -1
  624. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js +13 -4
  625. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContainer.js.map +1 -1
  626. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContext.js +9 -0
  627. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltipContext.js.map +1 -0
  628. package/dist/cssm/components/Pagination/Pagination.js +5 -2
  629. package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
  630. package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
  631. package/dist/cssm/components/Pagination/PaginationPage/PaginationPage.module.css +9 -9
  632. package/dist/cssm/components/Panel/Panel.module.css +3 -3
  633. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +30 -30
  634. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js +3 -1
  635. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
  636. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +16 -8
  637. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +10 -10
  638. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +7 -7
  639. package/dist/cssm/components/Placeholder/Placeholder.module.css +3 -3
  640. package/dist/cssm/components/PlatformProvider/PlatformProvider.js +1 -1
  641. package/dist/cssm/components/PlatformProvider/PlatformProvider.js.map +1 -1
  642. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +9 -2
  643. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  644. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +14 -9
  645. package/dist/cssm/components/Popover/Popover.js +4 -4
  646. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  647. package/dist/cssm/components/Popover/Popover.module.css +1 -1
  648. package/dist/cssm/components/Popover/usePopover.js +62 -44
  649. package/dist/cssm/components/Popover/usePopover.js.map +1 -1
  650. package/dist/cssm/components/Popper/Popper.js +15 -5
  651. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  652. package/dist/cssm/components/Progress/Progress.js +29 -9
  653. package/dist/cssm/components/Progress/Progress.js.map +1 -1
  654. package/dist/cssm/components/Progress/Progress.module.css +20 -9
  655. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +14 -14
  656. package/dist/cssm/components/Radio/Radio.module.css +1 -1
  657. package/dist/cssm/components/Radio/RadioInput/RadioInput.module.css +1 -1
  658. package/dist/cssm/components/RadioGroup/RadioGroup.module.css +1 -1
  659. package/dist/cssm/components/Removable/Removable.js +8 -4
  660. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  661. package/dist/cssm/components/Removable/Removable.module.css +19 -6
  662. package/dist/cssm/components/RichCell/RichCell.module.css +10 -10
  663. package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.module.css +4 -4
  664. package/dist/cssm/components/Root/Root.module.css +10 -10
  665. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +1 -0
  666. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  667. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +12 -12
  668. package/dist/cssm/components/ScrollArrow/ScrollArrow.js +4 -1
  669. package/dist/cssm/components/ScrollArrow/ScrollArrow.js.map +1 -1
  670. package/dist/cssm/components/ScrollArrow/ScrollArrow.module.css +15 -14
  671. package/dist/cssm/components/Search/Search.js +7 -2
  672. package/dist/cssm/components/Search/Search.js.map +1 -1
  673. package/dist/cssm/components/Search/Search.module.css +44 -32
  674. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +10 -7
  675. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  676. package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +16 -7
  677. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +14 -14
  678. package/dist/cssm/components/Select/Select.module.css +15 -15
  679. package/dist/cssm/components/SelectionControl/SelectionControl.module.css +2 -2
  680. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +5 -5
  681. package/dist/cssm/components/Separator/Separator.module.css +3 -3
  682. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +18 -16
  683. package/dist/cssm/components/SimpleGrid/SimpleGrid.module.css +2 -2
  684. package/dist/cssm/components/Skeleton/Skeleton.module.css +8 -8
  685. package/dist/cssm/components/Slider/Slider.js +20 -17
  686. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  687. package/dist/cssm/components/Slider/Slider.module.css +25 -4
  688. package/dist/cssm/components/Slider/SliderThumb/SliderThumb.js +5 -1
  689. package/dist/cssm/components/Slider/SliderThumb/SliderThumb.js.map +1 -1
  690. package/dist/cssm/components/Slider/SliderThumb/SliderThumb.module.css +8 -8
  691. package/dist/cssm/components/Snackbar/Snackbar.js +6 -3
  692. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  693. package/dist/cssm/components/Snackbar/Snackbar.module.css +23 -6
  694. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.module.css +9 -8
  695. package/dist/cssm/components/Snackbar/utils.js +11 -8
  696. package/dist/cssm/components/Snackbar/utils.js.map +1 -1
  697. package/dist/cssm/components/Spacing/Spacing.module.css +1 -1
  698. package/dist/cssm/components/Spinner/Spinner.module.css +2 -2
  699. package/dist/cssm/components/SplitCol/SplitCol.module.css +9 -9
  700. package/dist/cssm/components/SplitLayout/SplitLayout.module.css +2 -2
  701. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.module.css +4 -4
  702. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +1 -1
  703. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  704. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +10 -6
  705. package/dist/cssm/components/Switch/Switch.js +4 -1
  706. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  707. package/dist/cssm/components/Switch/Switch.module.css +25 -17
  708. package/dist/cssm/components/Tabbar/Tabbar.module.css +5 -5
  709. package/dist/cssm/components/TabbarItem/TabbarItem.module.css +16 -16
  710. package/dist/cssm/components/Tabs/Tabs.js +3 -1
  711. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  712. package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
  713. package/dist/cssm/components/TabsItem/TabsItem.module.css +21 -20
  714. package/dist/cssm/components/Tappable/Tappable.module.css +7 -7
  715. package/dist/cssm/components/Textarea/Textarea.module.css +7 -3
  716. package/dist/cssm/components/ToolButton/ToolButton.module.css +7 -7
  717. package/dist/cssm/components/Tooltip/Tooltip.js +7 -80
  718. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  719. package/dist/cssm/components/Tooltip/useTooltip.js +97 -0
  720. package/dist/cssm/components/Tooltip/useTooltip.js.map +1 -0
  721. package/dist/cssm/components/TooltipBase/TooltipBase.module.css +9 -9
  722. package/dist/cssm/components/Touch/Touch.js +2 -2
  723. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  724. package/dist/cssm/components/Typography/Caption/Caption.module.css +96 -96
  725. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.module.css +64 -64
  726. package/dist/cssm/components/Typography/EllipsisText/EllipsisText.module.css +3 -3
  727. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +32 -32
  728. package/dist/cssm/components/Typography/Headline/Headline.module.css +20 -20
  729. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +16 -16
  730. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +16 -16
  731. package/dist/cssm/components/Typography/Text/Text.module.css +16 -16
  732. package/dist/cssm/components/Typography/Title/Title.module.css +48 -48
  733. package/dist/cssm/components/Typography/Typography.module.css +1 -1
  734. package/dist/cssm/components/UnstyledTextField/UnstyledTextField.module.css +5 -5
  735. package/dist/cssm/components/UsersStack/UsersStack.js +4 -7
  736. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  737. package/dist/cssm/components/UsersStack/UsersStack.module.css +4 -4
  738. package/dist/cssm/components/View/View.module.css +8 -8
  739. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.module.css +10 -10
  740. package/dist/cssm/components/WriteBar/WriteBar.module.css +10 -11
  741. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +9 -9
  742. package/dist/cssm/context/CalendarDirectionContext.js.map +1 -1
  743. package/dist/cssm/helpers/getValueByKey.js +17 -0
  744. package/dist/cssm/helpers/getValueByKey.js.map +1 -0
  745. package/dist/cssm/hooks/useAutoDetectDirection.js +21 -0
  746. package/dist/cssm/hooks/useAutoDetectDirection.js.map +1 -0
  747. package/dist/cssm/hooks/useCalendar.js.map +1 -1
  748. package/dist/cssm/hooks/useConfigDirection.js +7 -0
  749. package/dist/cssm/hooks/useConfigDirection.js.map +1 -0
  750. package/dist/cssm/hooks/useDateInput.js +3 -3
  751. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  752. package/dist/cssm/hooks/useFloatingElement.js +70 -0
  753. package/dist/cssm/hooks/useFloatingElement.js.map +1 -0
  754. package/dist/cssm/hooks/useFocusVisible.js +10 -1
  755. package/dist/cssm/hooks/useFocusVisible.js.map +1 -1
  756. package/dist/cssm/hooks/useReferenceElement.js +13 -0
  757. package/dist/cssm/hooks/useReferenceElement.js.map +1 -0
  758. package/dist/cssm/hooks/useTabsNavigation.js +3 -3
  759. package/dist/cssm/hooks/useTabsNavigation.js.map +1 -1
  760. package/dist/cssm/hooks/useTodayDate.js +4 -4
  761. package/dist/cssm/hooks/useTodayDate.js.map +1 -1
  762. package/dist/cssm/index.js +6 -1
  763. package/dist/cssm/index.js.map +1 -1
  764. package/dist/cssm/lib/SSR.js +2 -1
  765. package/dist/cssm/lib/SSR.js.map +1 -1
  766. package/dist/cssm/lib/date.js +21 -0
  767. package/dist/cssm/lib/date.js.map +1 -1
  768. package/dist/cssm/lib/direction/index.js +3 -0
  769. package/dist/cssm/lib/direction/index.js.map +1 -0
  770. package/dist/cssm/lib/dom.js +6 -0
  771. package/dist/cssm/lib/dom.js.map +1 -1
  772. package/dist/cssm/lib/floating/adapters.js.map +1 -1
  773. package/dist/cssm/lib/floating/customResizeObserver.js +2 -5
  774. package/dist/cssm/lib/floating/customResizeObserver.js.map +1 -1
  775. package/dist/cssm/lib/floating/functions.js +1 -1
  776. package/dist/cssm/lib/floating/functions.js.map +1 -1
  777. package/dist/cssm/lib/floating/types/component.js.map +1 -1
  778. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -2
  779. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  780. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +6 -1
  781. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  782. package/dist/cssm/lib/floating/useReferenceHiddenChangeCallback.js +21 -0
  783. package/dist/cssm/lib/floating/useReferenceHiddenChangeCallback.js.map +1 -0
  784. package/dist/cssm/lib/object.js +9 -0
  785. package/dist/cssm/lib/object.js.map +1 -0
  786. package/dist/cssm/lib/select.js.map +1 -1
  787. package/dist/cssm/lib/sheet/controllers/BottomSheetController.js +13 -23
  788. package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -1
  789. package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js +4 -5
  790. package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
  791. package/dist/cssm/lib/tokens/TokensClassProvider.module.css +1 -1
  792. package/dist/cssm/styles/common.css +2 -2
  793. package/dist/cssm/styles/constants.css +2 -2
  794. package/dist/cssm/styles/themes.css +22 -5
  795. package/dist/helpers/getMergedSameEventsByProps.d.ts.map +1 -1
  796. package/dist/helpers/getValueByKey.d.ts +5 -0
  797. package/dist/helpers/getValueByKey.d.ts.map +1 -0
  798. package/dist/helpers/getValueByKey.js +17 -0
  799. package/dist/helpers/getValueByKey.js.map +1 -0
  800. package/dist/helpers/math.d.ts.map +1 -1
  801. package/dist/hooks/useAdaptivityConditionalRender/helpers.d.ts.map +1 -1
  802. package/dist/hooks/useAutoDetectColorScheme.d.ts.map +1 -1
  803. package/dist/hooks/useAutoDetectDirection.d.ts +3 -0
  804. package/dist/hooks/useAutoDetectDirection.d.ts.map +1 -0
  805. package/dist/hooks/useAutoDetectDirection.js +21 -0
  806. package/dist/hooks/useAutoDetectDirection.js.map +1 -0
  807. package/dist/hooks/useBooleanState.d.ts.map +1 -1
  808. package/dist/hooks/useCalendar.d.ts +1 -1
  809. package/dist/hooks/useCalendar.d.ts.map +1 -1
  810. package/dist/hooks/useCalendar.js.map +1 -1
  811. package/dist/hooks/useConfigDirection.d.ts +3 -0
  812. package/dist/hooks/useConfigDirection.d.ts.map +1 -0
  813. package/dist/hooks/useConfigDirection.js +7 -0
  814. package/dist/hooks/useConfigDirection.js.map +1 -0
  815. package/dist/hooks/useDateInput.d.ts +4 -4
  816. package/dist/hooks/useDateInput.d.ts.map +1 -1
  817. package/dist/hooks/useDateInput.js +3 -3
  818. package/dist/hooks/useDateInput.js.map +1 -1
  819. package/dist/hooks/useDraggableWithDomApi/autoScroll.d.ts.map +1 -1
  820. package/dist/hooks/useDraggableWithDomApi/useDraggableWithDomApi.d.ts.map +1 -1
  821. package/dist/hooks/useDraggableWithDomApi/utils.d.ts.map +1 -1
  822. package/dist/hooks/useFloatingElement.d.ts +26 -0
  823. package/dist/hooks/useFloatingElement.d.ts.map +1 -0
  824. package/dist/hooks/useFloatingElement.js +71 -0
  825. package/dist/hooks/useFloatingElement.js.map +1 -0
  826. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  827. package/dist/hooks/useFocusVisible.d.ts +9 -1
  828. package/dist/hooks/useFocusVisible.d.ts.map +1 -1
  829. package/dist/hooks/useFocusVisible.js +10 -1
  830. package/dist/hooks/useFocusVisible.js.map +1 -1
  831. package/dist/hooks/useGlobalEscKeyDown.d.ts.map +1 -1
  832. package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
  833. package/dist/hooks/useMutationObserver.d.ts.map +1 -1
  834. package/dist/hooks/useNativeFormResetListener.d.ts.map +1 -1
  835. package/dist/hooks/usePagination.d.ts.map +1 -1
  836. package/dist/hooks/usePatchChildren.d.ts.map +1 -1
  837. package/dist/hooks/useReferenceElement.d.ts +3 -0
  838. package/dist/hooks/useReferenceElement.d.ts.map +1 -0
  839. package/dist/hooks/useReferenceElement.js +13 -0
  840. package/dist/hooks/useReferenceElement.js.map +1 -0
  841. package/dist/hooks/useTabsNavigation.d.ts +1 -1
  842. package/dist/hooks/useTabsNavigation.d.ts.map +1 -1
  843. package/dist/hooks/useTabsNavigation.js +3 -3
  844. package/dist/hooks/useTabsNavigation.js.map +1 -1
  845. package/dist/hooks/useTodayDate.d.ts.map +1 -1
  846. package/dist/hooks/useTodayDate.js +4 -4
  847. package/dist/hooks/useTodayDate.js.map +1 -1
  848. package/dist/index.d.ts +9 -2
  849. package/dist/index.d.ts.map +1 -1
  850. package/dist/index.js +6 -1
  851. package/dist/index.js.map +1 -1
  852. package/dist/lib/SSR.d.ts +2 -0
  853. package/dist/lib/SSR.d.ts.map +1 -1
  854. package/dist/lib/SSR.js +2 -1
  855. package/dist/lib/SSR.js.map +1 -1
  856. package/dist/lib/accessibility.d.ts.map +1 -1
  857. package/dist/lib/animation/useCSSKeyframesAnimationController.d.ts.map +1 -1
  858. package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
  859. package/dist/lib/calendar.d.ts.map +1 -1
  860. package/dist/lib/callMultiple.d.ts.map +1 -1
  861. package/dist/lib/children.d.ts.map +1 -1
  862. package/dist/lib/createPortal.d.ts.map +1 -1
  863. package/dist/lib/date.d.ts +2 -0
  864. package/dist/lib/date.d.ts.map +1 -1
  865. package/dist/lib/date.js +21 -0
  866. package/dist/lib/date.js.map +1 -1
  867. package/dist/lib/direction/index.d.ts +2 -0
  868. package/dist/lib/direction/index.d.ts.map +1 -0
  869. package/dist/lib/direction/index.js +3 -0
  870. package/dist/lib/direction/index.js.map +1 -0
  871. package/dist/lib/dom.d.ts +1 -0
  872. package/dist/lib/dom.d.ts.map +1 -1
  873. package/dist/lib/dom.js +6 -0
  874. package/dist/lib/dom.js.map +1 -1
  875. package/dist/lib/floating/adapters.d.ts +1 -0
  876. package/dist/lib/floating/adapters.d.ts.map +1 -1
  877. package/dist/lib/floating/adapters.js.map +1 -1
  878. package/dist/lib/floating/customResizeObserver.d.ts +1 -1
  879. package/dist/lib/floating/customResizeObserver.d.ts.map +1 -1
  880. package/dist/lib/floating/customResizeObserver.js +2 -5
  881. package/dist/lib/floating/customResizeObserver.js.map +1 -1
  882. package/dist/lib/floating/functions.d.ts +8 -1
  883. package/dist/lib/floating/functions.d.ts.map +1 -1
  884. package/dist/lib/floating/functions.js +1 -1
  885. package/dist/lib/floating/functions.js.map +1 -1
  886. package/dist/lib/floating/types/component.d.ts +10 -0
  887. package/dist/lib/floating/types/component.d.ts.map +1 -1
  888. package/dist/lib/floating/types/component.js.map +1 -1
  889. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +3 -1
  890. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
  891. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -2
  892. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  893. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  894. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +6 -1
  895. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  896. package/dist/lib/floating/useFloatingWithInteractions/useResolveTriggerType.d.ts.map +1 -1
  897. package/dist/lib/floating/useReferenceHiddenChangeCallback.d.ts +4 -0
  898. package/dist/lib/floating/useReferenceHiddenChangeCallback.d.ts.map +1 -0
  899. package/dist/lib/floating/useReferenceHiddenChangeCallback.js +21 -0
  900. package/dist/lib/floating/useReferenceHiddenChangeCallback.js.map +1 -0
  901. package/dist/lib/fx.d.ts.map +1 -1
  902. package/dist/lib/isRefObject.d.ts.map +1 -1
  903. package/dist/lib/object.d.ts +2 -0
  904. package/dist/lib/object.d.ts.map +1 -0
  905. package/dist/lib/object.js +9 -0
  906. package/dist/lib/object.js.map +1 -0
  907. package/dist/lib/rafSchd.d.ts.map +1 -1
  908. package/dist/lib/react/simulateReactInput.d.ts.map +1 -1
  909. package/dist/lib/select.d.ts +1 -0
  910. package/dist/lib/select.d.ts.map +1 -1
  911. package/dist/lib/select.js.map +1 -1
  912. package/dist/lib/sheet/controllers/BottomSheetController.d.ts.map +1 -1
  913. package/dist/lib/sheet/controllers/BottomSheetController.js +13 -23
  914. package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -1
  915. package/dist/lib/sheet/controllers/CSSTransitionController.d.ts.map +1 -1
  916. package/dist/lib/sheet/controllers/CSSTransitionController.js +4 -5
  917. package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
  918. package/dist/lib/sheet/useBottomSheet.d.ts.map +1 -1
  919. package/dist/lib/touch/functions.d.ts.map +1 -1
  920. package/dist/lib/utils.d.ts.map +1 -1
  921. package/dist/vkui.css +1 -1
  922. package/dist/vkui.css.map +1 -1
  923. package/package.json +5 -4
  924. package/src/components/Accordion/Accordion.module.css +6 -6
  925. package/src/components/Accordion/Accordion.tsx +2 -2
  926. package/src/components/ActionSheet/ActionSheet.module.css +9 -9
  927. package/src/components/ActionSheet/ActionSheet.tsx +5 -2
  928. package/src/components/ActionSheet/ActionSheetDropdownMenu.tsx +11 -3
  929. package/src/components/ActionSheet/ActionSheetDropdownSheet.tsx +11 -3
  930. package/src/components/ActionSheet/types.ts +4 -0
  931. package/src/components/ActionSheetItem/ActionSheetItem.module.css +17 -17
  932. package/src/components/Alert/Alert.module.css +25 -25
  933. package/src/components/Alert/Alert.tsx +33 -118
  934. package/src/components/Alert/AlertBase.tsx +156 -0
  935. package/src/components/Alert/AlertTypography.tsx +2 -1
  936. package/src/components/AppRoot/AppRoot.module.css +2 -2
  937. package/src/components/AppRoot/AppRootStyleContainer/AppRootStyleContainer.tsx +1 -1
  938. package/src/components/AppRoot/ScrollContext.tsx +162 -50
  939. package/src/components/AspectRatio/AspectRatio.module.css +2 -2
  940. package/src/components/Avatar/Avatar.module.css +1 -1
  941. package/src/components/Avatar/AvatarBadge/AvatarBadge.module.css +8 -3
  942. package/src/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.tsx +4 -1
  943. package/src/components/Banner/Banner.module.css +17 -17
  944. package/src/components/Button/Button.module.css +11 -11
  945. package/src/components/ButtonGroup/ButtonGroup.tsx +2 -0
  946. package/src/components/Calendar/Calendar.module.css +7 -7
  947. package/src/components/Calendar/Calendar.tsx +110 -100
  948. package/src/components/CalendarDay/CalendarDay.module.css +11 -11
  949. package/src/components/CalendarDay/CalendarDay.tsx +1 -3
  950. package/src/components/CalendarDays/CalendarDays.module.css +7 -7
  951. package/src/components/CalendarDays/CalendarDays.tsx +1 -1
  952. package/src/components/CalendarHeader/CalendarHeader.module.css +4 -4
  953. package/src/components/CalendarHeader/CalendarHeader.tsx +1 -3
  954. package/src/components/CalendarRange/CalendarRange.module.css +5 -5
  955. package/src/components/CalendarRange/CalendarRange.tsx +105 -109
  956. package/src/components/CalendarTime/CalendarTime.module.css +1 -1
  957. package/src/components/CalendarTime/CalendarTime.tsx +17 -9
  958. package/src/components/Card/Card.module.css +7 -7
  959. package/src/components/CardGrid/CardGrid.module.css +3 -3
  960. package/src/components/CardScroll/CardScroll.module.css +16 -16
  961. package/src/components/CardScroll/CardScroll.tsx +49 -29
  962. package/src/components/CarouselBase/CarouselBase.module.css +11 -11
  963. package/src/components/CarouselBase/CarouselBase.tsx +107 -44
  964. package/src/components/CarouselBase/helpers.ts +108 -46
  965. package/src/components/Cell/Cell.module.css +16 -2
  966. package/src/components/Cell/CellDragger/CellDragger.module.css +2 -2
  967. package/src/components/CellButton/CellButton.module.css +7 -7
  968. package/src/components/CellButtonGroup/CellButtonGroup.tsx +20 -0
  969. package/src/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.module.css +5 -0
  970. package/src/components/CellButtonGroup/CellButtonGroupSeparator/CellButtonGroupSeparator.tsx +21 -0
  971. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +2 -2
  972. package/src/components/ChipsInputBase/Chip/Chip.module.css +16 -16
  973. package/src/components/ChipsInputBase/ChipsInputBase.module.css +10 -10
  974. package/src/components/ChipsInputBase/ChipsInputBase.tsx +1 -0
  975. package/src/components/ChipsInputBase/helpers.ts +5 -1
  976. package/src/components/ChipsInputBase/types.ts +1 -1
  977. package/src/components/ChipsSelect/ChipsSelect.module.css +1 -1
  978. package/src/components/ChipsSelect/ChipsSelect.tsx +8 -1
  979. package/src/components/ChipsSelect/useChipsSelect.ts +12 -1
  980. package/src/components/Clickable/Clickable.module.css +1 -1
  981. package/src/components/Clickable/Clickable.tsx +37 -25
  982. package/src/components/ColorSchemeProvider/ColorSchemeProvider.tsx +1 -1
  983. package/src/components/ConfigProvider/ConfigProvider.tsx +4 -1
  984. package/src/components/ConfigProvider/ConfigProviderContext.tsx +29 -15
  985. package/src/components/ContentBadge/ContentBadge.module.css +7 -7
  986. package/src/components/ContentCard/ContentCard.module.css +6 -6
  987. package/src/components/ContentCard/ContentCard.tsx +9 -3
  988. package/src/components/Counter/Counter.module.css +4 -4
  989. package/src/components/CustomScrollView/CustomScrollView.module.css +2 -2
  990. package/src/components/CustomSelect/CustomSelect.module.css +2 -2
  991. package/src/components/CustomSelect/CustomSelect.tsx +153 -93
  992. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -12
  993. package/src/components/CustomSelectDropdown/CustomSelectDropdown.module.css +2 -2
  994. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +2 -0
  995. package/src/components/CustomSelectOption/CustomSelectOption.module.css +8 -8
  996. package/src/components/DateInput/DateInput.module.css +38 -5
  997. package/src/components/DateInput/DateInput.tsx +152 -89
  998. package/src/components/DateInput/hooks.ts +93 -0
  999. package/src/components/DateRangeInput/DateRangeInput.module.css +3 -3
  1000. package/src/components/DateRangeInput/DateRangeInput.tsx +127 -83
  1001. package/src/components/DirectionProvider/DirectionProvider.tsx +17 -0
  1002. package/src/components/DropZone/DropZone.module.css +2 -2
  1003. package/src/components/FixedLayout/FixedLayout.module.css +3 -3
  1004. package/src/components/Flex/Flex.module.css +26 -14
  1005. package/src/components/Flex/Flex.tsx +3 -6
  1006. package/src/components/FloatingArrow/FloatingArrow.module.css +1 -1
  1007. package/src/components/Footer/Footer.module.css +1 -1
  1008. package/src/components/FormField/FormField.module.css +24 -24
  1009. package/src/components/FormItem/FormItem.module.css +11 -10
  1010. package/src/components/FormLayoutGroup/FormLayoutGroup.module.css +5 -5
  1011. package/src/components/GridAvatar/GridAvatar.module.css +2 -2
  1012. package/src/components/GridAvatar/GridAvatarBadge/GridAvatarBadge.module.css +2 -2
  1013. package/src/components/Group/Group.module.css +16 -16
  1014. package/src/components/Header/Header.module.css +5 -5
  1015. package/src/components/HorizontalCell/HorizontalCell.module.css +3 -3
  1016. package/src/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.module.css +2 -2
  1017. package/src/components/HorizontalScroll/HorizontalScroll.module.css +10 -4
  1018. package/src/components/HorizontalScroll/HorizontalScroll.tsx +47 -19
  1019. package/src/components/IconButton/IconButton.module.css +9 -9
  1020. package/src/components/ImageBase/ImageBase.module.css +15 -6
  1021. package/src/components/ImageBase/ImageBase.tsx +16 -5
  1022. package/src/components/ImageBase/ImageBaseBadge/ImageBaseBadge.module.css +5 -5
  1023. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +8 -8
  1024. package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +2 -2
  1025. package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.tsx +5 -4
  1026. package/src/components/ImageBase/ImageBaseOverlay/hooks.ts +31 -0
  1027. package/src/components/ImageBase/ImageBaseOverlay/types.ts +4 -0
  1028. package/src/components/InfoRow/InfoRow.module.css +3 -3
  1029. package/src/components/Input/Input.module.css +5 -5
  1030. package/src/components/InputLike/InputLike.module.css +3 -3
  1031. package/src/components/Link/Link.module.css +6 -6
  1032. package/src/components/Mark/Mark.module.css +2 -2
  1033. package/src/components/MiniInfoCell/MiniInfoCell.module.css +5 -5
  1034. package/src/components/ModalCard/ModalCard.module.css +4 -4
  1035. package/src/components/ModalCard/ModalCard.tsx +3 -9
  1036. package/src/components/ModalCard/ModalCardInternal.tsx +2 -0
  1037. package/src/components/ModalCard/types.ts +2 -1
  1038. package/src/components/ModalCardBase/ModalCardBase.module.css +7 -7
  1039. package/src/components/ModalCardBase/ModalCardBase.tsx +50 -10
  1040. package/src/components/ModalDismissButton/ModalDismissButton.module.css +0 -28
  1041. package/src/components/ModalDismissButton/ModalDismissButton.tsx +11 -9
  1042. package/src/components/ModalOutlet/ModalOutlet.module.css +1 -1
  1043. package/src/components/ModalOutsideButton/ModalOutsideButton.module.css +30 -0
  1044. package/src/components/ModalOutsideButton/ModalOutsideButton.tsx +38 -0
  1045. package/src/components/ModalOutsideButtons/ModalOutsideButtons.module.css +6 -0
  1046. package/src/components/ModalOutsideButtons/ModalOutsideButtons.tsx +14 -0
  1047. package/src/components/ModalOverlay/ModalOverlay.module.css +2 -2
  1048. package/src/components/ModalPage/ModalPage.module.css +15 -16
  1049. package/src/components/ModalPage/ModalPage.tsx +3 -10
  1050. package/src/components/ModalPage/ModalPageBase.tsx +92 -0
  1051. package/src/components/ModalPage/ModalPageInternal.tsx +23 -42
  1052. package/src/components/ModalPage/types.ts +12 -0
  1053. package/src/components/ModalPageFooter/ModalPageFooter.module.css +4 -4
  1054. package/src/components/ModalPageHeader/ModalPageHeader.module.css +2 -3
  1055. package/src/components/ModalRoot/types.ts +1 -0
  1056. package/src/components/ModalRoot/useModalManager.tsx +12 -5
  1057. package/src/components/ModalRoot/useModalRootContext.ts +1 -1
  1058. package/src/components/OnboardingTooltip/OnboardingTooltip.module.css +1 -1
  1059. package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +21 -12
  1060. package/src/components/OnboardingTooltip/OnboardingTooltipContainer.tsx +10 -1
  1061. package/src/components/OnboardingTooltip/OnboardingTooltipContext.tsx +11 -0
  1062. package/src/components/Pagination/Pagination.module.css +1 -1
  1063. package/src/components/Pagination/Pagination.tsx +5 -2
  1064. package/src/components/Pagination/PaginationPage/PaginationPage.module.css +8 -8
  1065. package/src/components/Panel/Panel.module.css +3 -3
  1066. package/src/components/PanelHeader/PanelHeader.module.css +27 -27
  1067. package/src/components/PanelHeaderBack/PanelHeaderBack.tsx +3 -0
  1068. package/src/components/PanelHeaderButton/PanelHeaderButton.module.css +14 -8
  1069. package/src/components/PanelHeaderContent/PanelHeaderContent.module.css +10 -10
  1070. package/src/components/PanelHeaderContext/PanelHeaderContext.module.css +7 -7
  1071. package/src/components/Placeholder/Placeholder.module.css +3 -3
  1072. package/src/components/PlatformProvider/PlatformProvider.tsx +1 -1
  1073. package/src/components/PopoutWrapper/PopoutWrapper.module.css +14 -9
  1074. package/src/components/PopoutWrapper/PopoutWrapper.tsx +25 -2
  1075. package/src/components/Popover/Popover.module.css +1 -1
  1076. package/src/components/Popover/Popover.tsx +6 -4
  1077. package/src/components/Popover/usePopover.tsx +106 -85
  1078. package/src/components/Popper/Popper.tsx +17 -6
  1079. package/src/components/Progress/Progress.module.css +20 -9
  1080. package/src/components/Progress/Progress.tsx +38 -9
  1081. package/src/components/PullToRefresh/PullToRefresh.module.css +14 -14
  1082. package/src/components/Radio/Radio.module.css +1 -1
  1083. package/src/components/Radio/RadioInput/RadioInput.module.css +1 -1
  1084. package/src/components/RadioGroup/RadioGroup.module.css +1 -1
  1085. package/src/components/Removable/Removable.module.css +19 -6
  1086. package/src/components/Removable/Removable.tsx +10 -3
  1087. package/src/components/RichCell/RichCell.module.css +10 -10
  1088. package/src/components/RichCell/RichCellIcon/RichCellIcon.module.css +4 -4
  1089. package/src/components/Root/Root.module.css +10 -10
  1090. package/src/components/ScreenSpinner/ScreenSpinner.module.css +11 -11
  1091. package/src/components/ScreenSpinner/ScreenSpinner.tsx +1 -1
  1092. package/src/components/ScrollArrow/ScrollArrow.module.css +15 -14
  1093. package/src/components/ScrollArrow/ScrollArrow.tsx +10 -1
  1094. package/src/components/Search/Search.module.css +40 -28
  1095. package/src/components/Search/Search.tsx +16 -0
  1096. package/src/components/SegmentedControl/SegmentedControl.module.css +16 -7
  1097. package/src/components/SegmentedControl/SegmentedControl.tsx +11 -13
  1098. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +11 -11
  1099. package/src/components/Select/Select.module.css +14 -14
  1100. package/src/components/SelectionControl/SelectionControl.module.css +2 -2
  1101. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +5 -5
  1102. package/src/components/Separator/Separator.module.css +3 -3
  1103. package/src/components/SimpleCell/SimpleCell.module.css +18 -16
  1104. package/src/components/SimpleGrid/SimpleGrid.module.css +2 -2
  1105. package/src/components/Skeleton/Skeleton.module.css +8 -8
  1106. package/src/components/Slider/Slider.module.css +25 -4
  1107. package/src/components/Slider/Slider.tsx +23 -15
  1108. package/src/components/Slider/SliderThumb/SliderThumb.module.css +7 -7
  1109. package/src/components/Slider/SliderThumb/SliderThumb.tsx +5 -5
  1110. package/src/components/Snackbar/Snackbar.module.css +23 -6
  1111. package/src/components/Snackbar/Snackbar.tsx +7 -0
  1112. package/src/components/Snackbar/subcomponents/Basic/Basic.module.css +9 -8
  1113. package/src/components/Snackbar/utils.ts +24 -6
  1114. package/src/components/Spacing/Spacing.module.css +1 -1
  1115. package/src/components/Spinner/Spinner.module.css +2 -2
  1116. package/src/components/SplitCol/SplitCol.module.css +9 -9
  1117. package/src/components/SplitLayout/SplitLayout.module.css +2 -2
  1118. package/src/components/SubnavigationBar/SubnavigationBar.module.css +4 -4
  1119. package/src/components/SubnavigationButton/SubnavigationButton.module.css +9 -5
  1120. package/src/components/SubnavigationButton/SubnavigationButton.tsx +1 -0
  1121. package/src/components/Switch/Switch.module.css +25 -17
  1122. package/src/components/Switch/Switch.tsx +4 -0
  1123. package/src/components/Tabbar/Tabbar.module.css +5 -5
  1124. package/src/components/TabbarItem/TabbarItem.module.css +16 -16
  1125. package/src/components/Tabs/Tabs.module.css +1 -1
  1126. package/src/components/Tabs/Tabs.tsx +3 -1
  1127. package/src/components/TabsItem/TabsItem.module.css +21 -20
  1128. package/src/components/Tappable/Tappable.module.css +7 -7
  1129. package/src/components/Textarea/Textarea.module.css +7 -3
  1130. package/src/components/ToolButton/ToolButton.module.css +7 -7
  1131. package/src/components/Tooltip/Tooltip.tsx +9 -142
  1132. package/src/components/Tooltip/useTooltip.tsx +168 -0
  1133. package/src/components/TooltipBase/TooltipBase.module.css +9 -9
  1134. package/src/components/Touch/Touch.tsx +35 -3
  1135. package/src/components/Typography/Caption/Caption.module.css +96 -96
  1136. package/src/components/Typography/DisplayTitle/DisplayTitle.module.css +64 -64
  1137. package/src/components/Typography/EllipsisText/EllipsisText.module.css +3 -3
  1138. package/src/components/Typography/Footnote/Footnote.module.css +32 -32
  1139. package/src/components/Typography/Headline/Headline.module.css +20 -20
  1140. package/src/components/Typography/Paragraph/Paragraph.module.css +16 -16
  1141. package/src/components/Typography/Subhead/Subhead.module.css +16 -16
  1142. package/src/components/Typography/Text/Text.module.css +16 -16
  1143. package/src/components/Typography/Title/Title.module.css +48 -48
  1144. package/src/components/Typography/Typography.module.css +1 -1
  1145. package/src/components/UnstyledTextField/UnstyledTextField.module.css +4 -4
  1146. package/src/components/UsersStack/UsersStack.module.css +4 -4
  1147. package/src/components/UsersStack/UsersStack.tsx +3 -7
  1148. package/src/components/View/View.module.css +8 -8
  1149. package/src/components/VisuallyHidden/VisuallyHidden.module.css +8 -8
  1150. package/src/components/WriteBar/WriteBar.module.css +10 -10
  1151. package/src/components/WriteBarIcon/WriteBarIcon.module.css +9 -9
  1152. package/src/context/CalendarDirectionContext.ts +1 -1
  1153. package/src/helpers/getValueByKey.ts +25 -0
  1154. package/src/hooks/useAutoDetectDirection.ts +18 -0
  1155. package/src/hooks/useCalendar.ts +1 -1
  1156. package/src/hooks/useConfigDirection.ts +8 -0
  1157. package/src/hooks/useDateInput.ts +6 -6
  1158. package/src/hooks/useFloatingElement.tsx +172 -0
  1159. package/src/hooks/useFocusVisible.ts +12 -1
  1160. package/src/hooks/useReferenceElement.tsx +13 -0
  1161. package/src/hooks/useTabsNavigation.ts +5 -3
  1162. package/src/hooks/useTodayDate.ts +34 -31
  1163. package/src/index.ts +9 -2
  1164. package/src/lib/SSR.tsx +11 -2
  1165. package/src/lib/date.ts +29 -0
  1166. package/src/lib/direction/index.ts +1 -0
  1167. package/src/lib/dom.tsx +8 -0
  1168. package/src/lib/floating/adapters.ts +2 -0
  1169. package/src/lib/floating/customResizeObserver.ts +2 -1
  1170. package/src/lib/floating/functions.ts +15 -7
  1171. package/src/lib/floating/types/component.ts +10 -0
  1172. package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +6 -1
  1173. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +2 -3
  1174. package/src/lib/floating/useReferenceHiddenChangeCallback.ts +26 -0
  1175. package/src/lib/object.ts +14 -0
  1176. package/src/lib/select.ts +2 -0
  1177. package/src/lib/sheet/controllers/BottomSheetController.ts +4 -1
  1178. package/src/lib/sheet/controllers/CSSTransitionController.ts +7 -4
  1179. package/src/lib/tokens/TokensClassProvider.module.css +1 -1
  1180. package/src/styles/common.css +2 -2
  1181. package/src/styles/constants.css +2 -2
  1182. package/dist/components/ModalCardBase/ModalCardBaseCloseButton.d.ts +0 -10
  1183. package/dist/components/ModalCardBase/ModalCardBaseCloseButton.d.ts.map +0 -1
  1184. package/dist/components/ModalCardBase/ModalCardBaseCloseButton.js +0 -38
  1185. package/dist/components/ModalCardBase/ModalCardBaseCloseButton.js.map +0 -1
  1186. package/dist/cssm/components/ModalCardBase/ModalCardBaseCloseButton.js +0 -39
  1187. package/dist/cssm/components/ModalCardBase/ModalCardBaseCloseButton.js.map +0 -1
  1188. package/dist/cssm/hooks/useDirection.js +0 -55
  1189. package/dist/cssm/hooks/useDirection.js.map +0 -1
  1190. package/dist/cssm/lib/tokens/index.js +0 -5
  1191. package/dist/cssm/lib/tokens/index.js.map +0 -1
  1192. package/dist/hooks/useDirection.d.ts +0 -39
  1193. package/dist/hooks/useDirection.d.ts.map +0 -1
  1194. package/dist/hooks/useDirection.js +0 -55
  1195. package/dist/hooks/useDirection.js.map +0 -1
  1196. package/dist/lib/tokens/index.d.ts +0 -5
  1197. package/dist/lib/tokens/index.d.ts.map +0 -1
  1198. package/dist/lib/tokens/index.js +0 -5
  1199. package/dist/lib/tokens/index.js.map +0 -1
  1200. package/src/components/ModalCardBase/ModalCardBaseCloseButton.tsx +0 -51
  1201. package/src/hooks/useDirection.ts +0 -63
  1202. package/src/lib/tokens/index.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/dom.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { canUseDOM } from '@vkontakte/vkjs';\nimport { rectToClientRect } from '@vkontakte/vkui-floating-ui/core';\nimport {\n getParentNode,\n getWindow,\n isElement,\n isHTMLElement,\n isLastTraversableNode,\n isOverflowElement,\n} from '@vkontakte/vkui-floating-ui/utils/dom';\n\nexport {\n getWindow,\n getNodeScroll,\n isHTMLElement,\n isElement,\n getParentNode,\n} from '@vkontakte/vkui-floating-ui/utils/dom';\n\nexport { canUseDOM, canUseEventListeners, onDOMLoaded } from '@vkontakte/vkjs';\nexport interface DOMContextInterface {\n /**\n * @ignore\n */\n window?: Window;\n /**\n * @ignore\n */\n document?: Document;\n}\n\nexport type DOMProps = DOMContextInterface;\n\n/* eslint-disable no-restricted-globals */\nconst getDOM = (): DOMContextInterface => ({\n window: canUseDOM ? window : undefined,\n document: canUseDOM ? document : undefined,\n});\n/* eslint-enable no-restricted-globals */\n\nexport const DOMContext: React.Context<DOMContextInterface> =\n React.createContext<DOMContextInterface>(getDOM());\n\nexport const useDOM = (): DOMContextInterface => {\n return React.useContext(DOMContext);\n};\n\n/**\n * В случае, если используется DOMContext, при проверке 'node instanceOf Window' – Window может быть\n * другим объектом.\n */\nexport const isWindow = (\n node: Element | Window | VisualViewport | undefined | null,\n): node is Window => {\n return node !== null && node !== undefined && 'navigator' in node;\n};\n\nexport const isBody = (\n node: Element | Window | VisualViewport | undefined | null,\n): node is HTMLBodyElement => {\n return node !== null && node !== undefined && 'tagName' in node && node.tagName === 'BODY';\n};\n\nexport const isDocumentElement = (\n node: Element | Window | VisualViewport | undefined | null,\n): node is HTMLHtmlElement => {\n return node !== null && node !== undefined && 'tagName' in node && node.tagName === 'HTML';\n};\n\nexport function withDOM<Props>(\n Component: React.ComponentType<Props & DOMProps>,\n): React.ComponentType<Props> {\n const WithDOM = (props: Props) => {\n const dom = useDOM();\n return <Component {...props} {...dom} />;\n };\n return WithDOM;\n}\n\nexport function blurActiveElement(document: Document | undefined): void {\n if (document && document.activeElement) {\n (document.activeElement as HTMLElement).blur();\n }\n}\n\nexport const TRANSFORM_DEFAULT_VALUES: string[] = ['none', 'initial', 'inherit', 'unset'];\nexport const WILL_CHANGE_DEFAULT_VALUES: string[] = ['auto', 'initial', 'inherit', 'unset'];\nexport function getTransformedParentCoords(element: Element): {\n x: number;\n y: number;\n} {\n let parentNode = element.parentNode;\n while (parentNode !== null) {\n if (isHTMLElement(parentNode)) {\n const { transform, willChange } = getComputedStyle(parentNode);\n if (\n !TRANSFORM_DEFAULT_VALUES.includes(transform) ||\n !WILL_CHANGE_DEFAULT_VALUES.includes(willChange)\n ) {\n const { x, y } = parentNode.getBoundingClientRect();\n return { x, y };\n }\n }\n parentNode = parentNode.parentNode;\n }\n return { x: 0, y: 0 };\n}\n\nexport const getBoundingClientRect = (node: Element | Window, isFixedStrategy = false) => {\n const element = isWindow(node) ? node.document.documentElement : node;\n const clientRect = element.getBoundingClientRect();\n\n if (isDocumentElement(element)) {\n /**\n * Если на странице не используется `html, body { height: 100% }` (или `height: 100vh`), то\n * `height`, полученный из `document.documentElement.getBoundingClientRect()`, будет возвращать\n * `scrollHeight`, а не `clientHeight`. Поэтому перебиваем `height` на `clientHeight`.\n */\n clientRect.height = element.clientHeight;\n }\n\n let offsetX = 0;\n let offsetY = 0;\n if (isFixedStrategy) {\n const { x, y } = getTransformedParentCoords(element);\n offsetX = x;\n offsetY = y;\n }\n\n return rectToClientRect({\n x: clientRect.left - offsetX,\n y: clientRect.top - offsetY,\n width: clientRect.width,\n height: clientRect.height,\n }) as DOMRect;\n};\n\nexport const getRelativeBoundingClientRect = (parent: Element, child: Element) => {\n const parentRect = getBoundingClientRect(parent);\n const childRect = getBoundingClientRect(child);\n return rectToClientRect({\n x: childRect.left - parentRect.left,\n y: childRect.top - parentRect.top,\n width: childRect.width,\n height: childRect.height,\n }) as DOMRect;\n};\n\n/**\n * Переписанный `getNearestOverflowAncestor` из @floating-ui/utils/dom.\n *\n * [1] добавляем ноду, на которой нужно остановить рекурсию\n * [2] document.body подменяем на window, т.к. на document.body нельзя применить скролл.\n *\n * @link https://github.com/floating-ui/floating-ui/blob/%40floating-ui/dom%401.6.3/packages/utils/src/dom.ts#L143\n */\nexport function getNearestOverflowAncestor(node: Node): HTMLElement | Window | null;\nexport function getNearestOverflowAncestor(node: Node, terminalNode: Node): HTMLElement | null;\nexport function getNearestOverflowAncestor(node: Node, terminalNode?: any): any {\n const parentNode = getParentNode(node);\n\n if (terminalNode === parentNode) {\n return null; /* [1] */\n }\n\n if (isLastTraversableNode(parentNode)) {\n return getWindow(parentNode); /* [2] */\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode, terminalNode);\n}\n\nexport const getScrollHeight = (node: Element | Window): number => {\n return isWindow(node) ? node.document.documentElement.scrollHeight : node.scrollHeight;\n};\n\nexport const getScrollRect = (\n node: Element | Window,\n): {\n relative: DOMRect;\n edges: {\n y: [number, number];\n };\n} => {\n const window = isElement(node) ? getWindow(node) : node;\n const scrollElRect = getBoundingClientRect(node);\n\n const edgeTop = window.scrollY + scrollElRect.top;\n const edgeBottom = edgeTop + scrollElRect.height;\n const y: [number, number] = [edgeTop, edgeBottom];\n\n return {\n relative: scrollElRect,\n edges: { y },\n };\n};\n\nexport const getDocumentBody = (node?: any): HTMLElement => getWindow(node).document.body;\n\nexport const getActiveElementByAnotherElement = (el: Element | null): Element | null =>\n el ? el.ownerDocument.activeElement : null;\n\nexport const contains = (parent?: Element | null, child?: Element | null): boolean => {\n return parent && child ? parent.contains(child) : false;\n};\n\nexport const getFirstTouchEventData = (\n event: UIEvent | React.UIEvent<HTMLElement>,\n): {\n screenX: number;\n screenY: number;\n clientX: number;\n clientY: number;\n pageX: number;\n pageY: number;\n} => {\n let dataRaw = (function resolveData() {\n switch (event.type) {\n case 'touchend':\n return (event as TouchEvent).changedTouches[0];\n case 'touchstart':\n case 'touchmove':\n case 'touchcancel':\n return (event as TouchEvent).touches[0];\n case 'mousedown':\n case 'mousemove':\n case 'mouseup':\n case 'mouseleave':\n return event as MouseEvent;\n default:\n return { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0 };\n }\n })();\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'test') {\n dataRaw = dataRaw\n ? dataRaw\n : { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0 };\n }\n return {\n screenX: dataRaw.screenX || 0,\n screenY: dataRaw.screenY || 0,\n clientX: dataRaw.clientX || 0,\n clientY: dataRaw.clientY || 0,\n pageX: dataRaw.pageX || 0,\n pageY: dataRaw.pageY || 0,\n };\n};\n\n/**\n * ⚠️ В частности, необходимо для iOS 15. Начиная с этой версии в Safari добавили\n * pull-to-refresh. CSS св-во `overflow-behavior` появился только с iOS 16.\n *\n * Во вторую очередь, полезна блокированием скролла, чтобы пользователь дождался обновления\n * данных.\n */\nexport const initializeBrowserGesturePreventionEffect = (window: Window): VoidFunction => {\n const options: AddEventListenerOptions & EventListenerOptions = { passive: false };\n const handleWindowTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n window.document.documentElement.classList.add('vkui--disable-overscroll-behavior'); // eslint-disable-line no-restricted-properties\n window.addEventListener('touchmove', handleWindowTouchMove, options);\n\n return function dispose() {\n window.document.documentElement.classList.remove('vkui--disable-overscroll-behavior'); // eslint-disable-line no-restricted-properties\n window.removeEventListener('touchmove', handleWindowTouchMove, options);\n };\n};\n\nconst nonTextInputTypes = { button: true, submit: true, reset: true, color: true, file: true, image: true, checkbox: true, radio: true }; // prettier-ignore\n\nexport const isHTMLContentEditableElement = (\n el: Element | null,\n): el is HTMLInputElement | HTMLTextAreaElement | HTMLElement => {\n if (el === null) {\n return false;\n }\n\n if (el.tagName === 'INPUT') {\n // @ts-expect-error: TS2339 за счёт `tagName` удовлетворяемся, что это `HTMLInputElement`\n return !nonTextInputTypes[el.type]; // prettier-ignore\n }\n\n return (\n el.tagName === 'TEXTAREA' ||\n // eslint-disable-next-line no-restricted-properties\n el.closest('[contenteditable=true]') !== null\n );\n};\n\nexport type VisualViewport = {\n offsetTop: number;\n offsetLeft: number;\n width: number;\n height: number;\n};\n\n/**\n * Фоллбек `visualViewport` для **Safari 12**.\n */\nexport function getVisualViewport(win: Window): VisualViewport {\n const result: VisualViewport = { offsetTop: 0, offsetLeft: 0, width: 0, height: 0 };\n if (win.visualViewport) {\n const { offsetTop, offsetLeft, width, height } = win.visualViewport;\n result.offsetTop = Math.round(offsetTop);\n result.offsetLeft = offsetLeft;\n result.width = width;\n result.height = Math.round(height);\n\n return result;\n }\n\n // TODO[Safari@>=13] Удалить фоллбек\n result.offsetTop = win.pageYOffset;\n result.offsetLeft = win.pageXOffset;\n result.width = win.innerWidth; // note: вызывает reflow в отличии от visualViewport\n result.height = win.innerHeight; // note: вызывает reflow в отличии от visualViewport\n return result;\n}\n\nexport const hasSelectionWithRangeType = (node: unknown) => {\n const selection = getWindow(node).getSelection();\n return selection ? selection.type === 'Range' : false;\n};\n"],"names":["React","canUseDOM","rectToClientRect","getParentNode","getWindow","isElement","isHTMLElement","isLastTraversableNode","isOverflowElement","getNodeScroll","canUseEventListeners","onDOMLoaded","getDOM","window","undefined","document","DOMContext","createContext","useDOM","useContext","isWindow","node","isBody","tagName","isDocumentElement","withDOM","Component","WithDOM","props","dom","blurActiveElement","activeElement","blur","TRANSFORM_DEFAULT_VALUES","WILL_CHANGE_DEFAULT_VALUES","getTransformedParentCoords","element","parentNode","transform","willChange","getComputedStyle","includes","x","y","getBoundingClientRect","isFixedStrategy","documentElement","clientRect","height","clientHeight","offsetX","offsetY","left","top","width","getRelativeBoundingClientRect","parent","child","parentRect","childRect","getNearestOverflowAncestor","terminalNode","getScrollHeight","scrollHeight","getScrollRect","scrollElRect","edgeTop","scrollY","edgeBottom","relative","edges","getDocumentBody","body","getActiveElementByAnotherElement","el","ownerDocument","contains","getFirstTouchEventData","event","dataRaw","resolveData","type","changedTouches","touches","screenX","screenY","clientX","clientY","pageX","pageY","process","env","NODE_ENV","initializeBrowserGesturePreventionEffect","options","passive","handleWindowTouchMove","preventDefault","stopPropagation","classList","add","addEventListener","dispose","remove","removeEventListener","nonTextInputTypes","button","submit","reset","color","file","image","checkbox","radio","isHTMLContentEditableElement","closest","getVisualViewport","win","result","offsetTop","offsetLeft","visualViewport","Math","round","pageYOffset","pageXOffset","innerWidth","innerHeight","hasSelectionWithRangeType","selection","getSelection"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/lib/dom.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { canUseDOM } from '@vkontakte/vkjs';\nimport { rectToClientRect } from '@vkontakte/vkui-floating-ui/core';\nimport {\n getParentNode,\n getWindow,\n isElement,\n isHTMLElement,\n isLastTraversableNode,\n isOverflowElement,\n} from '@vkontakte/vkui-floating-ui/utils/dom';\n\nexport {\n getWindow,\n getNodeScroll,\n isHTMLElement,\n isElement,\n getParentNode,\n} from '@vkontakte/vkui-floating-ui/utils/dom';\n\nexport { canUseDOM, canUseEventListeners, onDOMLoaded } from '@vkontakte/vkjs';\nexport interface DOMContextInterface {\n /**\n * @ignore\n */\n window?: Window;\n /**\n * @ignore\n */\n document?: Document;\n}\n\nexport type DOMProps = DOMContextInterface;\n\n/* eslint-disable no-restricted-globals */\nconst getDOM = (): DOMContextInterface => ({\n window: canUseDOM ? window : undefined,\n document: canUseDOM ? document : undefined,\n});\n/* eslint-enable no-restricted-globals */\n\nexport const DOMContext: React.Context<DOMContextInterface> =\n React.createContext<DOMContextInterface>(getDOM());\n\nexport const useDOM = (): DOMContextInterface => {\n return React.useContext(DOMContext);\n};\n\n/**\n * В случае, если используется DOMContext, при проверке 'node instanceOf Window' – Window может быть\n * другим объектом.\n */\nexport const isWindow = (\n node: Element | Window | VisualViewport | undefined | null,\n): node is Window => {\n return node !== null && node !== undefined && 'navigator' in node;\n};\n\nexport const isBody = (\n node: Element | Window | VisualViewport | undefined | null,\n): node is HTMLBodyElement => {\n return node !== null && node !== undefined && 'tagName' in node && node.tagName === 'BODY';\n};\n\nexport const isDocumentElement = (\n node: Element | Window | VisualViewport | undefined | null,\n): node is HTMLHtmlElement => {\n return node !== null && node !== undefined && 'tagName' in node && node.tagName === 'HTML';\n};\n\nexport function withDOM<Props>(\n Component: React.ComponentType<Props & DOMProps>,\n): React.ComponentType<Props> {\n const WithDOM = (props: Props) => {\n const dom = useDOM();\n return <Component {...props} {...dom} />;\n };\n return WithDOM;\n}\n\nexport function blurActiveElement(document: Document | undefined): void {\n if (document && document.activeElement) {\n (document.activeElement as HTMLElement).blur();\n }\n}\n\nexport const TRANSFORM_DEFAULT_VALUES: string[] = ['none', 'initial', 'inherit', 'unset'];\nexport const WILL_CHANGE_DEFAULT_VALUES: string[] = ['auto', 'initial', 'inherit', 'unset'];\nexport function getTransformedParentCoords(element: Element): {\n x: number;\n y: number;\n} {\n let parentNode = element.parentNode;\n while (parentNode !== null) {\n if (isHTMLElement(parentNode)) {\n const { transform, willChange } = getComputedStyle(parentNode);\n if (\n !TRANSFORM_DEFAULT_VALUES.includes(transform) ||\n !WILL_CHANGE_DEFAULT_VALUES.includes(willChange)\n ) {\n const { x, y } = parentNode.getBoundingClientRect();\n return { x, y };\n }\n }\n parentNode = parentNode.parentNode;\n }\n return { x: 0, y: 0 };\n}\n\nexport const getBoundingClientRect = (node: Element | Window, isFixedStrategy = false) => {\n const element = isWindow(node) ? node.document.documentElement : node;\n const clientRect = element.getBoundingClientRect();\n\n if (isDocumentElement(element)) {\n /**\n * Если на странице не используется `html, body { height: 100% }` (или `height: 100vh`), то\n * `height`, полученный из `document.documentElement.getBoundingClientRect()`, будет возвращать\n * `scrollHeight`, а не `clientHeight`. Поэтому перебиваем `height` на `clientHeight`.\n */\n clientRect.height = element.clientHeight;\n }\n\n let offsetX = 0;\n let offsetY = 0;\n if (isFixedStrategy) {\n const { x, y } = getTransformedParentCoords(element);\n offsetX = x;\n offsetY = y;\n }\n\n return rectToClientRect({\n x: clientRect.left - offsetX,\n y: clientRect.top - offsetY,\n width: clientRect.width,\n height: clientRect.height,\n }) as DOMRect;\n};\n\nexport const getRelativeBoundingClientRect = (parent: Element, child: Element) => {\n const parentRect = getBoundingClientRect(parent);\n const childRect = getBoundingClientRect(child);\n return rectToClientRect({\n x: childRect.left - parentRect.left,\n y: childRect.top - parentRect.top,\n width: childRect.width,\n height: childRect.height,\n }) as DOMRect;\n};\n\n/**\n * Переписанный `getNearestOverflowAncestor` из @floating-ui/utils/dom.\n *\n * [1] добавляем ноду, на которой нужно остановить рекурсию\n * [2] document.body подменяем на window, т.к. на document.body нельзя применить скролл.\n *\n * @link https://github.com/floating-ui/floating-ui/blob/%40floating-ui/dom%401.6.3/packages/utils/src/dom.ts#L143\n */\nexport function getNearestOverflowAncestor(node: Node): HTMLElement | Window | null;\nexport function getNearestOverflowAncestor(node: Node, terminalNode: Node): HTMLElement | null;\nexport function getNearestOverflowAncestor(node: Node, terminalNode?: any): any {\n const parentNode = getParentNode(node);\n\n if (terminalNode === parentNode) {\n return null; /* [1] */\n }\n\n if (isLastTraversableNode(parentNode)) {\n return getWindow(parentNode); /* [2] */\n }\n\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n\n return getNearestOverflowAncestor(parentNode, terminalNode);\n}\n\nexport const getScrollHeight = (node: Element | Window): number => {\n return isWindow(node) ? node.document.documentElement.scrollHeight : node.scrollHeight;\n};\n\nexport const getScrollRect = (\n node: Element | Window,\n): {\n relative: DOMRect;\n edges: {\n y: [number, number];\n };\n} => {\n const window = isElement(node) ? getWindow(node) : node;\n const scrollElRect = getBoundingClientRect(node);\n\n const edgeTop = window.scrollY + scrollElRect.top;\n const edgeBottom = edgeTop + scrollElRect.height;\n const y: [number, number] = [edgeTop, edgeBottom];\n\n return {\n relative: scrollElRect,\n edges: { y },\n };\n};\n\nexport const getDocumentBody = (node?: any): HTMLElement => getWindow(node).document.body;\n\nexport const getActiveElementByAnotherElement = (el: Element | null): Element | null =>\n el ? el.ownerDocument.activeElement : null;\n\nexport const contains = (parent?: Element | null, child?: Element | null): boolean => {\n return parent && child ? parent.contains(child) : false;\n};\n\nexport const getFirstTouchEventData = (\n event: UIEvent | React.UIEvent<HTMLElement>,\n): {\n screenX: number;\n screenY: number;\n clientX: number;\n clientY: number;\n pageX: number;\n pageY: number;\n} => {\n let dataRaw = (function resolveData() {\n switch (event.type) {\n case 'touchend':\n return (event as TouchEvent).changedTouches[0];\n case 'touchstart':\n case 'touchmove':\n case 'touchcancel':\n return (event as TouchEvent).touches[0];\n case 'mousedown':\n case 'mousemove':\n case 'mouseup':\n case 'mouseleave':\n return event as MouseEvent;\n default:\n return { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0 };\n }\n })();\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'test') {\n dataRaw = dataRaw\n ? dataRaw\n : { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0 };\n }\n return {\n screenX: dataRaw.screenX || 0,\n screenY: dataRaw.screenY || 0,\n clientX: dataRaw.clientX || 0,\n clientY: dataRaw.clientY || 0,\n pageX: dataRaw.pageX || 0,\n pageY: dataRaw.pageY || 0,\n };\n};\n\n/**\n * ⚠️ В частности, необходимо для iOS 15. Начиная с этой версии в Safari добавили\n * pull-to-refresh. CSS св-во `overflow-behavior` появился только с iOS 16.\n *\n * Во вторую очередь, полезна блокированием скролла, чтобы пользователь дождался обновления\n * данных.\n */\nexport const initializeBrowserGesturePreventionEffect = (window: Window): VoidFunction => {\n const options: AddEventListenerOptions & EventListenerOptions = { passive: false };\n const handleWindowTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n window.document.documentElement.classList.add('vkui--disable-overscroll-behavior'); // eslint-disable-line no-restricted-properties\n window.addEventListener('touchmove', handleWindowTouchMove, options);\n\n return function dispose() {\n window.document.documentElement.classList.remove('vkui--disable-overscroll-behavior'); // eslint-disable-line no-restricted-properties\n window.removeEventListener('touchmove', handleWindowTouchMove, options);\n };\n};\n\nconst nonTextInputTypes = { button: true, submit: true, reset: true, color: true, file: true, image: true, checkbox: true, radio: true }; // prettier-ignore\n\nexport const isHTMLContentEditableElement = (\n el: Element | null,\n): el is HTMLInputElement | HTMLTextAreaElement | HTMLElement => {\n if (el === null) {\n return false;\n }\n\n if (el.tagName === 'INPUT') {\n // @ts-expect-error: TS2339 за счёт `tagName` удовлетворяемся, что это `HTMLInputElement`\n return !nonTextInputTypes[el.type]; // prettier-ignore\n }\n\n return (\n el.tagName === 'TEXTAREA' ||\n // eslint-disable-next-line no-restricted-properties\n el.closest('[contenteditable=true]') !== null\n );\n};\n\nexport type VisualViewport = {\n offsetTop: number;\n offsetLeft: number;\n width: number;\n height: number;\n};\n\n/**\n * Фоллбек `visualViewport` для **Safari 12**.\n */\nexport function getVisualViewport(win: Window): VisualViewport {\n const result: VisualViewport = { offsetTop: 0, offsetLeft: 0, width: 0, height: 0 };\n if (win.visualViewport) {\n const { offsetTop, offsetLeft, width, height } = win.visualViewport;\n result.offsetTop = Math.round(offsetTop);\n result.offsetLeft = offsetLeft;\n result.width = width;\n result.height = Math.round(height);\n\n return result;\n }\n\n // TODO[Safari@>=13] Удалить фоллбек\n result.offsetTop = win.pageYOffset;\n result.offsetLeft = win.pageXOffset;\n result.width = win.innerWidth; // note: вызывает reflow в отличии от visualViewport\n result.height = win.innerHeight; // note: вызывает reflow в отличии от visualViewport\n return result;\n}\n\nexport const hasSelectionWithRangeType = (node: unknown) => {\n const selection = getWindow(node).getSelection();\n return selection ? selection.type === 'Range' : false;\n};\n\nexport function isSVGElement(value: unknown): value is SVGElement {\n if (!canUseDOM) {\n return false;\n }\n\n return value instanceof SVGElement || value instanceof getWindow(value).SVGElement;\n}\n"],"names":["React","canUseDOM","rectToClientRect","getParentNode","getWindow","isElement","isHTMLElement","isLastTraversableNode","isOverflowElement","getNodeScroll","canUseEventListeners","onDOMLoaded","getDOM","window","undefined","document","DOMContext","createContext","useDOM","useContext","isWindow","node","isBody","tagName","isDocumentElement","withDOM","Component","WithDOM","props","dom","blurActiveElement","activeElement","blur","TRANSFORM_DEFAULT_VALUES","WILL_CHANGE_DEFAULT_VALUES","getTransformedParentCoords","element","parentNode","transform","willChange","getComputedStyle","includes","x","y","getBoundingClientRect","isFixedStrategy","documentElement","clientRect","height","clientHeight","offsetX","offsetY","left","top","width","getRelativeBoundingClientRect","parent","child","parentRect","childRect","getNearestOverflowAncestor","terminalNode","getScrollHeight","scrollHeight","getScrollRect","scrollElRect","edgeTop","scrollY","edgeBottom","relative","edges","getDocumentBody","body","getActiveElementByAnotherElement","el","ownerDocument","contains","getFirstTouchEventData","event","dataRaw","resolveData","type","changedTouches","touches","screenX","screenY","clientX","clientY","pageX","pageY","process","env","NODE_ENV","initializeBrowserGesturePreventionEffect","options","passive","handleWindowTouchMove","preventDefault","stopPropagation","classList","add","addEventListener","dispose","remove","removeEventListener","nonTextInputTypes","button","submit","reset","color","file","image","checkbox","radio","isHTMLContentEditableElement","closest","getVisualViewport","win","result","offsetTop","offsetLeft","visualViewport","Math","round","pageYOffset","pageXOffset","innerWidth","innerHeight","hasSelectionWithRangeType","selection","getSelection","isSVGElement","value","SVGElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/adapters.ts"],"sourcesContent":["import {\n autoUpdate as autoUpdateLib,\n type AutoUpdateOptions,\n type FloatingElement,\n type ReferenceType,\n} from '@vkontakte/vkui-floating-ui/react-dom';\nimport { isHTMLElement } from '../dom';\nimport { CustomResizeObserver } from './customResizeObserver';\n\nexport {\n useFloating,\n offset as offsetMiddleware,\n flip as flipMiddleware,\n shift as shiftMiddleware,\n autoPlacement as autoPlacementMiddleware,\n arrow as arrowMiddleware,\n size as sizeMiddleware,\n hide as hideMiddleware,\n getOverflowAncestors,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nconst defaultOptions = {\n ancestorScroll: true,\n ancestorResize: true,\n // По умолчанию отключаем, т.к. навешивать `CustomResizeObserver` может быть дорого.\n // В `autoUpdateLib` по умолчанию опция включена. Там используется ResizeObserver, но и он не менее дорогостоящий.\n // https://github.com/floating-ui/floating-ui/blob/0a34fe9cc2c7483976785a71bd0777cd7c3f2a6a/packages/dom/src/autoUpdate.ts#L6-L33\n elementResize: false,\n animationFrame: false,\n};\n\nexport function autoUpdateFloatingElement(\n reference: ReferenceType,\n floating: FloatingElement,\n update: () => void,\n options: Partial<AutoUpdateOptions> = defaultOptions,\n): ReturnType<typeof autoUpdateLib> {\n const { elementResize = false, ...restOptions } = options;\n\n // eslint-disable-next-line no-restricted-globals, compat/compat\n const canUseResizeObserver = window.ResizeObserver !== undefined;\n const autoUpdateLibDisposer = autoUpdateLib(reference, floating, update, {\n ...restOptions,\n elementResize: elementResize && canUseResizeObserver,\n });\n\n // В случае если `ResizeObserver` будет полифилиться или он будет покрываться нашим `browserlist`, то надо удалить\n // код с `CustomResizeObserver`.\n let observer: CustomResizeObserver | null = null;\n if (elementResize && !canUseResizeObserver) {\n observer = new CustomResizeObserver(update);\n\n if (isHTMLElement(reference)) {\n observer.observe(reference);\n }\n\n observer.observe(floating);\n\n observer.appendToTheDOM();\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n autoUpdateLibDisposer();\n };\n}\n"],"names":["autoUpdate","autoUpdateLib","isHTMLElement","CustomResizeObserver","useFloating","offset","offsetMiddleware","flip","flipMiddleware","shift","shiftMiddleware","autoPlacement","autoPlacementMiddleware","arrow","arrowMiddleware","size","sizeMiddleware","hide","hideMiddleware","getOverflowAncestors","defaultOptions","ancestorScroll","ancestorResize","elementResize","animationFrame","autoUpdateFloatingElement","reference","floating","update","options","restOptions","canUseResizeObserver","window","ResizeObserver","undefined","autoUpdateLibDisposer","observer","observe","appendToTheDOM","disconnect"],"mappings":"AAAA,SACEA,cAAcC,aAAa,QAItB,wCAAwC;AAC/C,SAASC,aAAa,QAAQ,YAAS;AACvC,SAASC,oBAAoB,QAAQ,4BAAyB;AAE9D,SACEC,WAAW,EACXC,UAAUC,gBAAgB,EAC1BC,QAAQC,cAAc,EACtBC,SAASC,eAAe,EACxBC,iBAAiBC,uBAAuB,EACxCC,SAASC,eAAe,EACxBC,QAAQC,cAAc,EACtBC,QAAQC,cAAc,EACtBC,oBAAoB,QACf,wCAAwC;AAE/C,MAAMC,iBAAiB;IACrBC,gBAAgB;IAChBC,gBAAgB;IAChB,oFAAoF;IACpF,kHAAkH;IAClH,iIAAiI;IACjIC,eAAe;IACfC,gBAAgB;AAClB;AAEA,OAAO,SAASC,0BACdC,SAAwB,EACxBC,QAAyB,EACzBC,MAAkB,EAClBC,UAAsCT,cAAc;IAEpD,MAAM,EAAEG,gBAAgB,KAAK,EAAE,GAAGO,aAAa,GAAGD;IAElD,gEAAgE;IAChE,MAAME,uBAAuBC,OAAOC,cAAc,KAAKC;IACvD,MAAMC,wBAAwBlC,cAAcyB,WAAWC,UAAUC,QAAQ;QACvE,GAAGE,WAAW;QACdP,eAAeA,iBAAiBQ;IAClC;IAEA,kHAAkH;IAClH,gCAAgC;IAChC,IAAIK,WAAwC;IAC5C,IAAIb,iBAAiB,CAACQ,sBAAsB;QAC1CK,WAAW,IAAIjC,qBAAqByB;QAEpC,IAAI1B,cAAcwB,YAAY;YAC5BU,SAASC,OAAO,CAACX;QACnB;QAEAU,SAASC,OAAO,CAACV;QAEjBS,SAASE,cAAc;IACzB;IAEA,OAAO;QACL,IAAIF,UAAU;YACZA,SAASG,UAAU;YACnBH,WAAW;QACb;QACAD;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../src/lib/floating/adapters.ts"],"sourcesContent":["import {\n autoUpdate as autoUpdateLib,\n type AutoUpdateOptions,\n type FloatingElement,\n type ReferenceType,\n} from '@vkontakte/vkui-floating-ui/react-dom';\nimport { isHTMLElement } from '../dom';\nimport { CustomResizeObserver } from './customResizeObserver';\n\nexport {\n useFloating,\n offset as offsetMiddleware,\n flip as flipMiddleware,\n shift as shiftMiddleware,\n autoPlacement as autoPlacementMiddleware,\n arrow as arrowMiddleware,\n size as sizeMiddleware,\n hide as hideMiddleware,\n getOverflowAncestors,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type { FlipOptions as FlipMiddlewareOptions } from '@vkontakte/vkui-floating-ui/react-dom';\n\nconst defaultOptions = {\n ancestorScroll: true,\n ancestorResize: true,\n // По умолчанию отключаем, т.к. навешивать `CustomResizeObserver` может быть дорого.\n // В `autoUpdateLib` по умолчанию опция включена. Там используется ResizeObserver, но и он не менее дорогостоящий.\n // https://github.com/floating-ui/floating-ui/blob/0a34fe9cc2c7483976785a71bd0777cd7c3f2a6a/packages/dom/src/autoUpdate.ts#L6-L33\n elementResize: false,\n animationFrame: false,\n};\n\nexport function autoUpdateFloatingElement(\n reference: ReferenceType,\n floating: FloatingElement,\n update: () => void,\n options: Partial<AutoUpdateOptions> = defaultOptions,\n): ReturnType<typeof autoUpdateLib> {\n const { elementResize = false, ...restOptions } = options;\n\n // eslint-disable-next-line no-restricted-globals, compat/compat\n const canUseResizeObserver = window.ResizeObserver !== undefined;\n const autoUpdateLibDisposer = autoUpdateLib(reference, floating, update, {\n ...restOptions,\n elementResize: elementResize && canUseResizeObserver,\n });\n\n // В случае если `ResizeObserver` будет полифилиться или он будет покрываться нашим `browserlist`, то надо удалить\n // код с `CustomResizeObserver`.\n let observer: CustomResizeObserver | null = null;\n if (elementResize && !canUseResizeObserver) {\n observer = new CustomResizeObserver(update);\n\n if (isHTMLElement(reference)) {\n observer.observe(reference);\n }\n\n observer.observe(floating);\n\n observer.appendToTheDOM();\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n autoUpdateLibDisposer();\n };\n}\n"],"names":["autoUpdate","autoUpdateLib","isHTMLElement","CustomResizeObserver","useFloating","offset","offsetMiddleware","flip","flipMiddleware","shift","shiftMiddleware","autoPlacement","autoPlacementMiddleware","arrow","arrowMiddleware","size","sizeMiddleware","hide","hideMiddleware","getOverflowAncestors","defaultOptions","ancestorScroll","ancestorResize","elementResize","animationFrame","autoUpdateFloatingElement","reference","floating","update","options","restOptions","canUseResizeObserver","window","ResizeObserver","undefined","autoUpdateLibDisposer","observer","observe","appendToTheDOM","disconnect"],"mappings":"AAAA,SACEA,cAAcC,aAAa,QAItB,wCAAwC;AAC/C,SAASC,aAAa,QAAQ,YAAS;AACvC,SAASC,oBAAoB,QAAQ,4BAAyB;AAE9D,SACEC,WAAW,EACXC,UAAUC,gBAAgB,EAC1BC,QAAQC,cAAc,EACtBC,SAASC,eAAe,EACxBC,iBAAiBC,uBAAuB,EACxCC,SAASC,eAAe,EACxBC,QAAQC,cAAc,EACtBC,QAAQC,cAAc,EACtBC,oBAAoB,QACf,wCAAwC;AAI/C,MAAMC,iBAAiB;IACrBC,gBAAgB;IAChBC,gBAAgB;IAChB,oFAAoF;IACpF,kHAAkH;IAClH,iIAAiI;IACjIC,eAAe;IACfC,gBAAgB;AAClB;AAEA,OAAO,SAASC,0BACdC,SAAwB,EACxBC,QAAyB,EACzBC,MAAkB,EAClBC,UAAsCT,cAAc;IAEpD,MAAM,EAAEG,gBAAgB,KAAK,EAAE,GAAGO,aAAa,GAAGD;IAElD,gEAAgE;IAChE,MAAME,uBAAuBC,OAAOC,cAAc,KAAKC;IACvD,MAAMC,wBAAwBlC,cAAcyB,WAAWC,UAAUC,QAAQ;QACvE,GAAGE,WAAW;QACdP,eAAeA,iBAAiBQ;IAClC;IAEA,kHAAkH;IAClH,gCAAgC;IAChC,IAAIK,WAAwC;IAC5C,IAAIb,iBAAiB,CAACQ,sBAAsB;QAC1CK,WAAW,IAAIjC,qBAAqByB;QAEpC,IAAI1B,cAAcwB,YAAY;YAC5BU,SAASC,OAAO,CAACX;QACnB;QAEAU,SAASC,OAAO,CAACV;QAEjBS,SAASE,cAAc;IACzB;IAEA,OAAO;QACL,IAAIF,UAAU;YACZA,SAASG,UAAU;YACnBH,WAAW;QACb;QACAD;IACF;AACF"}
@@ -24,14 +24,11 @@ const defaultIframeStyles = {
24
24
  *
25
25
  * Применяется только если нету поддержики или полифила ResizeObserver.
26
26
  * */ export class CustomResizeObserver {
27
+ records = [];
28
+ mutationObserverFallback = null;
27
29
  updateFunction;
28
- records;
29
- mutationObserverFallback;
30
30
  constructor(updateFunction){
31
31
  this.updateFunction = updateFunction;
32
- this.records = [];
33
- this.mutationObserverFallback = null;
34
- this.updateFunction = updateFunction;
35
32
  }
36
33
  observe(element) {
37
34
  if (isPositioned(element)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/customResizeObserver.ts"],"sourcesContent":["const defaultIframeStyles: Pick<\n CSSStyleDeclaration,\n | 'position'\n | 'left'\n | 'top'\n | 'zIndex'\n | 'width'\n | 'height'\n | 'pointerEvents'\n | 'opacity'\n | 'border'\n> = {\n position: 'absolute',\n left: '0',\n top: '0',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: '0',\n border: '0',\n};\n\n/*\n * Специальный CustomResizeObserver как fallback для ResizeObserver\n * Используется для вызова update() функции (перерисовка плавающего окна) floating-ui\n * при изменении размера reference или floating элементов.\n *\n * По умолчанию пытаемся нарисовать скрытый, абсолютно позиционированный относительно\n * наблюдаемого элемента iframe.\n * В случае же, если наблюдаемый элемент имеет position: static, то правильно спозиционировать\n * iframe у нас не получится, поэтому в такой ситуации мы используем MutationObserver.\n *\n * Использовать только MutationObserver мы не можем, потому что с помощью него нельзя отследить\n * изменение размера вызванное переполнением текста.\n *\n * Применяется только если нету поддержики или полифила ResizeObserver.\n * */\nexport class CustomResizeObserver {\n records: Array<{\n target: HTMLElement;\n iframe: HTMLIFrameElement;\n }> = [];\n mutationObserverFallback: MutationObserver | null = null;\n\n constructor(private readonly updateFunction: () => void) {\n this.updateFunction = updateFunction;\n }\n\n observe(element: HTMLElement): void {\n if (isPositioned(element)) {\n return this.observeUsingIframe(element);\n }\n return this.observeUsingMutationObserver(element);\n }\n\n appendToTheDOM(): void {\n for (let record of this.records) {\n record.target.appendChild(record.iframe);\n }\n\n for (let record of this.records) {\n if (record.iframe.contentWindow) {\n record.iframe.contentWindow.addEventListener('resize', this.updateFunction);\n }\n }\n }\n\n observeUsingIframe(element: HTMLElement): void {\n const iframe = element.ownerDocument.createElement('iframe');\n iframe.ariaHidden = 'true';\n iframe.tabIndex = -1;\n Object.assign(iframe.style, defaultIframeStyles);\n\n this.records.push({ target: element, iframe });\n }\n\n observeUsingMutationObserver(element: HTMLElement): void {\n if (!this.mutationObserverFallback) {\n this.mutationObserverFallback = new MutationObserver(this.updateFunction);\n }\n\n this.mutationObserverFallback.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnect(): void {\n this.records.map(({ target, iframe }) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.removeEventListener('resize', this.updateFunction);\n }\n\n target.removeChild(iframe);\n });\n this.records = [];\n\n if (this.mutationObserverFallback) {\n this.mutationObserverFallback.disconnect();\n }\n this.mutationObserverFallback = null;\n }\n}\n\nfunction isPositioned(element: HTMLElement): boolean {\n return getComputedStyle(element).position !== 'static';\n}\n"],"names":["defaultIframeStyles","position","left","top","zIndex","width","height","pointerEvents","opacity","border","CustomResizeObserver","records","mutationObserverFallback","constructor","updateFunction","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","target","appendChild","iframe","contentWindow","addEventListener","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","getComputedStyle"],"mappings":"AAAA,MAAMA,sBAWF;IACFC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,SAAS;IACTC,QAAQ;AACV;AAEA;;;;;;;;;;;;;;GAcG,GACH,OAAO,MAAMC;;IACXC,QAGQ;IACRC,yBAAyD;IAEzDC,YAAY,AAAiBC,cAA0B,CAAE;aAA5BA,iBAAAA;aAN7BH,UAGK,EAAE;aACPC,2BAAoD;QAGlD,IAAI,CAACE,cAAc,GAAGA;IACxB;IAEAC,QAAQC,OAAoB,EAAQ;QAClC,IAAIC,aAAaD,UAAU;YACzB,OAAO,IAAI,CAACE,kBAAkB,CAACF;QACjC;QACA,OAAO,IAAI,CAACG,4BAA4B,CAACH;IAC3C;IAEAI,iBAAuB;QACrB,KAAK,IAAIC,UAAU,IAAI,CAACV,OAAO,CAAE;YAC/BU,OAAOC,MAAM,CAACC,WAAW,CAACF,OAAOG,MAAM;QACzC;QAEA,KAAK,IAAIH,UAAU,IAAI,CAACV,OAAO,CAAE;YAC/B,IAAIU,OAAOG,MAAM,CAACC,aAAa,EAAE;gBAC/BJ,OAAOG,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACZ,cAAc;YAC5E;QACF;IACF;IAEAI,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMQ,SAASR,QAAQW,aAAa,CAACC,aAAa,CAAC;QACnDJ,OAAOK,UAAU,GAAG;QACpBL,OAAOM,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACR,OAAOS,KAAK,EAAEjC;QAE5B,IAAI,CAACW,OAAO,CAACuB,IAAI,CAAC;YAAEZ,QAAQN;YAASQ;QAAO;IAC9C;IAEAL,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACJ,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIuB,iBAAiB,IAAI,CAACrB,cAAc;QAC1E;QAEA,IAAI,CAACF,wBAAwB,CAACG,OAAO,CAACC,SAAS;YAC7CoB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAAC3B,OAAO,CAAC4B,GAAG,CAAC,CAAC,EAAEjB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACe,mBAAmB,CAAC,UAAU,IAAI,CAAC1B,cAAc;YACxE;YAEAQ,OAAOmB,WAAW,CAACjB;QACrB;QACA,IAAI,CAACb,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACC,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAAC0B,UAAU;QAC1C;QACA,IAAI,CAAC1B,wBAAwB,GAAG;IAClC;AACF;AAEA,SAASK,aAAaD,OAAoB;IACxC,OAAO0B,iBAAiB1B,SAASf,QAAQ,KAAK;AAChD"}
1
+ {"version":3,"sources":["../../../../src/lib/floating/customResizeObserver.ts"],"sourcesContent":["const defaultIframeStyles: Pick<\n CSSStyleDeclaration,\n | 'position'\n | 'left'\n | 'top'\n | 'zIndex'\n | 'width'\n | 'height'\n | 'pointerEvents'\n | 'opacity'\n | 'border'\n> = {\n position: 'absolute',\n left: '0',\n top: '0',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: '0',\n border: '0',\n};\n\n/*\n * Специальный CustomResizeObserver как fallback для ResizeObserver\n * Используется для вызова update() функции (перерисовка плавающего окна) floating-ui\n * при изменении размера reference или floating элементов.\n *\n * По умолчанию пытаемся нарисовать скрытый, абсолютно позиционированный относительно\n * наблюдаемого элемента iframe.\n * В случае же, если наблюдаемый элемент имеет position: static, то правильно спозиционировать\n * iframe у нас не получится, поэтому в такой ситуации мы используем MutationObserver.\n *\n * Использовать только MutationObserver мы не можем, потому что с помощью него нельзя отследить\n * изменение размера вызванное переполнением текста.\n *\n * Применяется только если нету поддержики или полифила ResizeObserver.\n * */\nexport class CustomResizeObserver {\n records: Array<{\n target: HTMLElement;\n iframe: HTMLIFrameElement;\n }> = [];\n mutationObserverFallback: MutationObserver | null = null;\n private readonly updateFunction: () => void;\n\n constructor(updateFunction: () => void) {\n this.updateFunction = updateFunction;\n }\n\n observe(element: HTMLElement): void {\n if (isPositioned(element)) {\n return this.observeUsingIframe(element);\n }\n return this.observeUsingMutationObserver(element);\n }\n\n appendToTheDOM(): void {\n for (let record of this.records) {\n record.target.appendChild(record.iframe);\n }\n\n for (let record of this.records) {\n if (record.iframe.contentWindow) {\n record.iframe.contentWindow.addEventListener('resize', this.updateFunction);\n }\n }\n }\n\n observeUsingIframe(element: HTMLElement): void {\n const iframe = element.ownerDocument.createElement('iframe');\n iframe.ariaHidden = 'true';\n iframe.tabIndex = -1;\n Object.assign(iframe.style, defaultIframeStyles);\n\n this.records.push({ target: element, iframe });\n }\n\n observeUsingMutationObserver(element: HTMLElement): void {\n if (!this.mutationObserverFallback) {\n this.mutationObserverFallback = new MutationObserver(this.updateFunction);\n }\n\n this.mutationObserverFallback.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnect(): void {\n this.records.map(({ target, iframe }) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.removeEventListener('resize', this.updateFunction);\n }\n\n target.removeChild(iframe);\n });\n this.records = [];\n\n if (this.mutationObserverFallback) {\n this.mutationObserverFallback.disconnect();\n }\n this.mutationObserverFallback = null;\n }\n}\n\nfunction isPositioned(element: HTMLElement): boolean {\n return getComputedStyle(element).position !== 'static';\n}\n"],"names":["defaultIframeStyles","position","left","top","zIndex","width","height","pointerEvents","opacity","border","CustomResizeObserver","records","mutationObserverFallback","updateFunction","constructor","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","target","appendChild","iframe","contentWindow","addEventListener","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","getComputedStyle"],"mappings":"AAAA,MAAMA,sBAWF;IACFC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,SAAS;IACTC,QAAQ;AACV;AAEA;;;;;;;;;;;;;;GAcG,GACH,OAAO,MAAMC;IACXC,UAGK,EAAE,CAAC;IACRC,2BAAoD,KAAK;IACxCC,eAA2B;IAE5CC,YAAYD,cAA0B,CAAE;QACtC,IAAI,CAACA,cAAc,GAAGA;IACxB;IAEAE,QAAQC,OAAoB,EAAQ;QAClC,IAAIC,aAAaD,UAAU;YACzB,OAAO,IAAI,CAACE,kBAAkB,CAACF;QACjC;QACA,OAAO,IAAI,CAACG,4BAA4B,CAACH;IAC3C;IAEAI,iBAAuB;QACrB,KAAK,IAAIC,UAAU,IAAI,CAACV,OAAO,CAAE;YAC/BU,OAAOC,MAAM,CAACC,WAAW,CAACF,OAAOG,MAAM;QACzC;QAEA,KAAK,IAAIH,UAAU,IAAI,CAACV,OAAO,CAAE;YAC/B,IAAIU,OAAOG,MAAM,CAACC,aAAa,EAAE;gBAC/BJ,OAAOG,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACb,cAAc;YAC5E;QACF;IACF;IAEAK,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMQ,SAASR,QAAQW,aAAa,CAACC,aAAa,CAAC;QACnDJ,OAAOK,UAAU,GAAG;QACpBL,OAAOM,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACR,OAAOS,KAAK,EAAEjC;QAE5B,IAAI,CAACW,OAAO,CAACuB,IAAI,CAAC;YAAEZ,QAAQN;YAASQ;QAAO;IAC9C;IAEAL,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACJ,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIuB,iBAAiB,IAAI,CAACtB,cAAc;QAC1E;QAEA,IAAI,CAACD,wBAAwB,CAACG,OAAO,CAACC,SAAS;YAC7CoB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAAC3B,OAAO,CAAC4B,GAAG,CAAC,CAAC,EAAEjB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACe,mBAAmB,CAAC,UAAU,IAAI,CAAC3B,cAAc;YACxE;YAEAS,OAAOmB,WAAW,CAACjB;QACrB;QACA,IAAI,CAACb,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACC,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAAC0B,UAAU;QAC1C;QACA,IAAI,CAAC1B,wBAAwB,GAAG;IAClC;AACF;AAEA,SAASK,aAAaD,OAAoB;IACxC,OAAO0B,iBAAiB1B,SAASf,QAAQ,KAAK;AAChD"}
@@ -9,7 +9,7 @@ export function getAutoPlacementAlign(placement) {
9
9
  * Note: не используем `translate3d`, чтобы в лишний раз не выносить в отдельный слой и не занимать память в GPU.
10
10
  *
11
11
  * см. https://floating-ui.com/docs/react#positioning
12
- */ export function convertFloatingDataToReactCSSProperties(strategy, x, y, initialWidth = 'max-content', middlewareData) {
12
+ */ export function convertFloatingDataToReactCSSProperties({ strategy, x, y, initialWidth = 'max-content', middlewareData }) {
13
13
  const styles = {
14
14
  position: strategy,
15
15
  top: y,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/functions.ts"],"sourcesContent":["import type * as React from 'react';\nimport type {\n AutoPlacementType,\n FloatingPositionStrategy,\n Placement,\n PlacementWithAuto,\n UseFloatingData,\n} from './types/common';\n\nexport function checkIsNotAutoPlacement(placement: PlacementWithAuto): placement is Placement {\n return !placement.startsWith('auto');\n}\n\nexport function getAutoPlacementAlign(placement: AutoPlacementType): 'start' | 'end' | null {\n const align = placement.replace(/auto-|auto/, '');\n return align === 'start' || align === 'end' ? align : null;\n}\n\n/**\n * Note: не используем `translate3d`, чтобы в лишний раз не выносить в отдельный слой и не занимать память в GPU.\n *\n * см. https://floating-ui.com/docs/react#positioning\n */\nexport function convertFloatingDataToReactCSSProperties(\n strategy: FloatingPositionStrategy,\n x: UseFloatingData['x'],\n y: UseFloatingData['y'],\n initialWidth: React.CSSProperties['width'] | null = 'max-content',\n middlewareData?: UseFloatingData['middlewareData'],\n): React.CSSProperties {\n const styles: React.CSSProperties = {\n position: strategy,\n top: y,\n right: 'auto',\n bottom: 'auto',\n left: x,\n };\n if (initialWidth !== null) {\n styles.width = initialWidth;\n }\n if (middlewareData) {\n const hide = middlewareData.hide;\n if (hide && hide.referenceHidden) {\n styles['visibility'] = 'hidden';\n }\n }\n return styles;\n}\n\nexport const getArrowCoordsByMiddlewareData = (\n middlewareData: UseFloatingData['middlewareData'],\n): {\n x: number;\n y: number;\n} => {\n const coords = { x: 0, y: 0 };\n if (middlewareData.arrow) {\n const { x = 0, y = 0 } = middlewareData.arrow;\n coords.x = x;\n coords.y = y;\n }\n return coords;\n};\n"],"names":["checkIsNotAutoPlacement","placement","startsWith","getAutoPlacementAlign","align","replace","convertFloatingDataToReactCSSProperties","strategy","x","y","initialWidth","middlewareData","styles","position","top","right","bottom","left","width","hide","referenceHidden","getArrowCoordsByMiddlewareData","coords","arrow"],"mappings":"AASA,OAAO,SAASA,wBAAwBC,SAA4B;IAClE,OAAO,CAACA,UAAUC,UAAU,CAAC;AAC/B;AAEA,OAAO,SAASC,sBAAsBF,SAA4B;IAChE,MAAMG,QAAQH,UAAUI,OAAO,CAAC,cAAc;IAC9C,OAAOD,UAAU,WAAWA,UAAU,QAAQA,QAAQ;AACxD;AAEA;;;;CAIC,GACD,OAAO,SAASE,wCACdC,QAAkC,EAClCC,CAAuB,EACvBC,CAAuB,EACvBC,eAAoD,aAAa,EACjEC,cAAkD;IAElD,MAAMC,SAA8B;QAClCC,UAAUN;QACVO,KAAKL;QACLM,OAAO;QACPC,QAAQ;QACRC,MAAMT;IACR;IACA,IAAIE,iBAAiB,MAAM;QACzBE,OAAOM,KAAK,GAAGR;IACjB;IACA,IAAIC,gBAAgB;QAClB,MAAMQ,OAAOR,eAAeQ,IAAI;QAChC,IAAIA,QAAQA,KAAKC,eAAe,EAAE;YAChCR,MAAM,CAAC,aAAa,GAAG;QACzB;IACF;IACA,OAAOA;AACT;AAEA,OAAO,MAAMS,iCAAiC,CAC5CV;IAKA,MAAMW,SAAS;QAAEd,GAAG;QAAGC,GAAG;IAAE;IAC5B,IAAIE,eAAeY,KAAK,EAAE;QACxB,MAAM,EAAEf,IAAI,CAAC,EAAEC,IAAI,CAAC,EAAE,GAAGE,eAAeY,KAAK;QAC7CD,OAAOd,CAAC,GAAGA;QACXc,OAAOb,CAAC,GAAGA;IACb;IACA,OAAOa;AACT,EAAE"}
1
+ {"version":3,"sources":["../../../../src/lib/floating/functions.ts"],"sourcesContent":["import type * as React from 'react';\nimport type {\n AutoPlacementType,\n FloatingPositionStrategy,\n Placement,\n PlacementWithAuto,\n UseFloatingData,\n} from './types/common';\n\nexport function checkIsNotAutoPlacement(placement: PlacementWithAuto): placement is Placement {\n return !placement.startsWith('auto');\n}\n\nexport function getAutoPlacementAlign(placement: AutoPlacementType): 'start' | 'end' | null {\n const align = placement.replace(/auto-|auto/, '');\n return align === 'start' || align === 'end' ? align : null;\n}\n\nexport type ConvertFloatingDataArgs = {\n strategy: FloatingPositionStrategy;\n x: UseFloatingData['x'];\n y: UseFloatingData['y'];\n initialWidth?: React.CSSProperties['width'] | null;\n middlewareData?: UseFloatingData['middlewareData'];\n};\n\n/**\n * Note: не используем `translate3d`, чтобы в лишний раз не выносить в отдельный слой и не занимать память в GPU.\n *\n * см. https://floating-ui.com/docs/react#positioning\n */\nexport function convertFloatingDataToReactCSSProperties({\n strategy,\n x,\n y,\n initialWidth = 'max-content',\n middlewareData,\n}: ConvertFloatingDataArgs): React.CSSProperties {\n const styles: React.CSSProperties = {\n position: strategy,\n top: y,\n right: 'auto',\n bottom: 'auto',\n left: x,\n };\n if (initialWidth !== null) {\n styles.width = initialWidth;\n }\n if (middlewareData) {\n const hide = middlewareData.hide;\n if (hide && hide.referenceHidden) {\n styles['visibility'] = 'hidden';\n }\n }\n return styles;\n}\n\nexport const getArrowCoordsByMiddlewareData = (\n middlewareData: UseFloatingData['middlewareData'],\n): {\n x: number;\n y: number;\n} => {\n const coords = { x: 0, y: 0 };\n if (middlewareData.arrow) {\n const { x = 0, y = 0 } = middlewareData.arrow;\n coords.x = x;\n coords.y = y;\n }\n return coords;\n};\n"],"names":["checkIsNotAutoPlacement","placement","startsWith","getAutoPlacementAlign","align","replace","convertFloatingDataToReactCSSProperties","strategy","x","y","initialWidth","middlewareData","styles","position","top","right","bottom","left","width","hide","referenceHidden","getArrowCoordsByMiddlewareData","coords","arrow"],"mappings":"AASA,OAAO,SAASA,wBAAwBC,SAA4B;IAClE,OAAO,CAACA,UAAUC,UAAU,CAAC;AAC/B;AAEA,OAAO,SAASC,sBAAsBF,SAA4B;IAChE,MAAMG,QAAQH,UAAUI,OAAO,CAAC,cAAc;IAC9C,OAAOD,UAAU,WAAWA,UAAU,QAAQA,QAAQ;AACxD;AAUA;;;;CAIC,GACD,OAAO,SAASE,wCAAwC,EACtDC,QAAQ,EACRC,CAAC,EACDC,CAAC,EACDC,eAAe,aAAa,EAC5BC,cAAc,EACU;IACxB,MAAMC,SAA8B;QAClCC,UAAUN;QACVO,KAAKL;QACLM,OAAO;QACPC,QAAQ;QACRC,MAAMT;IACR;IACA,IAAIE,iBAAiB,MAAM;QACzBE,OAAOM,KAAK,GAAGR;IACjB;IACA,IAAIC,gBAAgB;QAClB,MAAMQ,OAAOR,eAAeQ,IAAI;QAChC,IAAIA,QAAQA,KAAKC,eAAe,EAAE;YAChCR,MAAM,CAAC,aAAa,GAAG;QACzB;IACF;IACA,OAAOA;AACT;AAEA,OAAO,MAAMS,iCAAiC,CAC5CV;IAKA,MAAMW,SAAS;QAAEd,GAAG;QAAGC,GAAG;IAAE;IAC5B,IAAIE,eAAeY,KAAK,EAAE;QACxB,MAAM,EAAEf,IAAI,CAAC,EAAEC,IAAI,CAAC,EAAE,GAAGE,eAAeY,KAAK;QAC7CD,OAAOd,CAAC,GAAGA;QACXc,OAAOb,CAAC,GAAGA;IACb;IACA,OAAOa;AACT,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/types/component.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { UseFloatingMiddlewaresBootstrapOptions } from '../useFloatingMiddlewaresBootstrap';\nimport type {\n RestoreFocusType,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from '../useFloatingWithInteractions';\nimport type { OnPlacementChange } from './common';\n\n/**\n * @private используйте алиасы, если для какого-то компонента нужно экспортировать тип\n */\nexport type FloatingContentRenderProp = (\n props: Pick<UseFloatingWithInteractionsReturn, 'onClose'>,\n) => React.ReactNode;\n\n/**\n * Общий API для всплывающих элементов.\n *\n * @private\n */\nexport interface FloatingComponentProps\n extends UseFloatingMiddlewaresBootstrapOptions,\n Omit<UseFloatingWithInteractionsProps, 'placement' | 'middlewares'> {\n /**\n * Содержимое всплывающего окна.\n *\n * При передаче контента в виде [render prop](https://react.dev/reference/react/cloneElement#passing-data-with-a-render-prop),\n * в аргументе функции можно получить метод `onClose`, с помощью которого можно программно закрывать\n * всплывающее окно.\n */\n content?: React.ReactNode | FloatingContentRenderProp;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен:\n * > 1. предоставлять параметры либо `getRootRef`, либо `ref` (cм. `React.forwardRef()`) для получения ссылки на DOM-узел;\n * > 2. принимать DOM атрибуты и события.\n */\n children?: React.ReactElement;\n /**\n * Нужно ли при навигации с клавиатуры авто-фокусироваться на всплывающий элемент.\n */\n autoFocus?: boolean;\n /**\n * Нужно ли после закрытия всплывающего элемента возвращать фокус на предыдущий активный элемент.\n */\n restoreFocus?: RestoreFocusType;\n /**\n * Перебивает zIndex заданный по умолчанию.\n */\n zIndex?: number | string;\n /**\n * По умолчанию используется document.body.\n */\n usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement>;\n /**\n * В зависимости от области видимости, позиция может смениться на более оптимальную,\n * чтобы всплывающий элемент вместился в эту область видимости.\n */\n onPlacementChange?: OnPlacementChange;\n}\n"],"names":[],"mappings":"AAgBA;;;;CAIC,GACD,WAwCC"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/types/component.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { UseFloatingMiddlewaresBootstrapOptions } from '../useFloatingMiddlewaresBootstrap';\nimport type {\n RestoreFocusType,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from '../useFloatingWithInteractions';\nimport type { OnPlacementChange } from './common';\n\n/**\n * @private используйте алиасы, если для какого-то компонента нужно экспортировать тип\n */\nexport type FloatingContentRenderProp = (\n props: Pick<UseFloatingWithInteractionsReturn, 'onClose'>,\n) => React.ReactNode;\n\n/**\n * Общий API для всплывающих элементов.\n *\n * @private\n */\nexport interface FloatingComponentProps\n extends UseFloatingMiddlewaresBootstrapOptions,\n Omit<UseFloatingWithInteractionsProps, 'placement' | 'middlewares'> {\n /**\n * Содержимое всплывающего окна.\n *\n * При передаче контента в виде [render prop](https://react.dev/reference/react/cloneElement#passing-data-with-a-render-prop),\n * в аргументе функции можно получить метод `onClose`, с помощью которого можно программно закрывать\n * всплывающее окно.\n */\n content?: React.ReactNode | FloatingContentRenderProp;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен:\n * > 1. предоставлять параметры либо `getRootRef`, либо `ref` (cм. `React.forwardRef()`) для получения ссылки на DOM-узел;\n * > 2. принимать DOM атрибуты и события.\n */\n children?: React.ReactElement;\n /**\n * Нужно ли при навигации с клавиатуры авто-фокусироваться на всплывающий элемент.\n */\n autoFocus?: boolean;\n /**\n * Нужно ли после закрытия всплывающего элемента возвращать фокус на предыдущий активный элемент.\n */\n restoreFocus?: RestoreFocusType;\n /**\n * Перебивает zIndex заданный по умолчанию.\n */\n zIndex?: number | string;\n /**\n * По умолчанию используется document.body.\n */\n usePortal?: boolean | HTMLElement | React.RefObject<HTMLElement>;\n /**\n * В зависимости от области видимости, позиция может смениться на более оптимальную,\n * чтобы всплывающий элемент вместился в эту область видимости.\n */\n onPlacementChange?: OnPlacementChange;\n /**\n * Событие скрытия / раскрытия компонента при использовании свойства `hideWhenReferenceHidden`.\n *\n * > Стоит иметь ввиду, что событие также будет вызвано и при новом рендере компонента\n */\n onReferenceHiddenChange?: (hidden: boolean) => void;\n /**\n * Позволяет отключить захват фокуса.\n */\n disableFocusTrap?: boolean;\n}\n"],"names":[],"mappings":"AAgBA;;;;CAIC,GACD,WAkDC"}
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { arrowMiddleware, autoPlacementMiddleware, flipMiddleware, hideMiddleware, offsetMiddleware, shiftMiddleware, sizeMiddleware } from "../adapters.js";
3
3
  import { checkIsNotAutoPlacement, getAutoPlacementAlign } from "../functions.js";
4
- export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false })=>{
4
+ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', arrowRef = null, arrow, arrowHeight, arrowPadding, sameWidth, offsetByMainAxis = 0, offsetByCrossAxis = 0, customMiddlewares, hideWhenReferenceHidden, disableFlipMiddleware = false, flipMiddlewareFallbackAxisSideDirection = 'start' })=>{
5
5
  return React.useMemo(()=>{
6
6
  const isAutoPlacement = !checkIsNotAutoPlacement(placement);
7
7
  const middlewares = [
@@ -17,7 +17,8 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
17
17
  }));
18
18
  } else if (!disableFlipMiddleware) {
19
19
  middlewares.push(flipMiddleware({
20
- fallbackAxisSideDirection: 'start'
20
+ fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,
21
+ crossAxis: false
21
22
  }));
22
23
  }
23
24
  middlewares.push(shiftMiddleware());
@@ -54,6 +55,7 @@ export const useFloatingMiddlewaresBootstrap = ({ placement = 'bottom-start', ar
54
55
  arrowHeight,
55
56
  offsetByMainAxis,
56
57
  disableFlipMiddleware,
58
+ flipMiddlewareFallbackAxisSideDirection,
57
59
  sameWidth,
58
60
  customMiddlewares,
59
61
  hideWhenReferenceHidden,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isAutoPlacement) {\n middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));\n } else if (!disableFlipMiddleware) {\n middlewares.push(\n flipMiddleware({\n fallbackAxisSideDirection: 'start',\n }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","push","alignment","fallbackAxisSideDirection","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EACdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AAqD9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EACU;IAIvC,OAAOrB,MAAMsB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAACf,wBAAwBG;QACjD,MAAMa,cAAuC;YAC3CnB,iBAAiB;gBACfoB,WAAWP;gBACXQ,UAAUb,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,oEAAoE;QACpE,IAAIM,iBAAiB;YACnBC,YAAYG,IAAI,CAACzB,wBAAwB;gBAAE0B,WAAWnB,sBAAsBE;YAAW;QACzF,OAAO,IAAI,CAACU,uBAAuB;YACjCG,YAAYG,IAAI,CACdxB,eAAe;gBACb0B,2BAA2B;YAC7B;QAEJ;QAEAL,YAAYG,IAAI,CAACrB;QAEjB,IAAIU,WAAW;YACbQ,YAAYG,IAAI,CACdpB,eAAe;gBACbuB,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAIlB,mBAAmB;YACrBK,YAAYG,IAAI,IAAIR;QACtB;QAEA,+CAA+C;QAC/C,IAAIN,OAAO;YACTW,YAAYG,IAAI,CACd1B,gBAAgB;gBACdsC,SAAS3B;gBACT4B,SAASzB;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BI,YAAYG,IAAI,CAACvB;QACnB;QAEA,OAAO;YAAEoB;YAAaiB,iBAAiBlB,kBAAkBmB,YAAY/B;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAL;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n arrowMiddleware,\n autoPlacementMiddleware,\n flipMiddleware,\n type FlipMiddlewareOptions,\n hideMiddleware,\n offsetMiddleware,\n shiftMiddleware,\n sizeMiddleware,\n} from '../adapters';\nimport { checkIsNotAutoPlacement, getAutoPlacementAlign } from '../functions';\nimport {\n type ArrowOptions,\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n} from '../types/common';\n\nexport interface UseFloatingMiddlewaresBootstrapOptions {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам, но приоритетное можно задать с помощью этого свойства.\n */\n placement?: PlacementWithAuto;\n /**\n * Указанное значение `placement` форсируется, даже если для выпадающего элемента недостаточно места.\n * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`\n */\n disableFlipMiddleware?: boolean;\n flipMiddlewareFallbackAxisSideDirection?: FlipMiddlewareOptions['fallbackAxisSideDirection'];\n /**\n * Отступ по главной оси.\n */\n offsetByMainAxis?: number;\n /**\n * Отступ по вспомогательной оси.\n */\n offsetByCrossAxis?: number;\n arrowRef?: ArrowOptions['element'];\n /**\n * Отображать ли стрелку, указывающую на якорный элемент.\n */\n arrow?: boolean;\n /**\n * Высота стрелки. Складывается с `mainAxis`, чтобы стрелка не залезала на якорный элемент.\n */\n arrowHeight?: number;\n /**\n * Безопасная зона вокруг стрелки, чтобы та не выходила за края контента.\n */\n arrowPadding?: number;\n /**\n * Выставлять ширину равной target элементу.\n */\n sameWidth?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать).\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * Принудительно скрывает компонент если целевой элемент вышел за область видимости.\n */\n hideWhenReferenceHidden?: boolean;\n}\n\nexport const useFloatingMiddlewaresBootstrap = ({\n placement = 'bottom-start',\n arrowRef = null,\n arrow,\n arrowHeight,\n arrowPadding,\n sameWidth,\n offsetByMainAxis = 0,\n offsetByCrossAxis = 0,\n customMiddlewares,\n hideWhenReferenceHidden,\n disableFlipMiddleware = false,\n flipMiddlewareFallbackAxisSideDirection = 'start',\n}: UseFloatingMiddlewaresBootstrapOptions): {\n middlewares: UseFloatingMiddleware[];\n strictPlacement: Placement | undefined;\n} => {\n return React.useMemo(() => {\n const isAutoPlacement = !checkIsNotAutoPlacement(placement);\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetByCrossAxis,\n mainAxis: arrow && arrowHeight ? offsetByMainAxis + arrowHeight : offsetByMainAxis,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isAutoPlacement) {\n middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));\n } else if (!disableFlipMiddleware) {\n middlewares.push(\n flipMiddleware({\n fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,\n crossAxis: false,\n }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: arrowPadding,\n }),\n );\n }\n\n if (hideWhenReferenceHidden) {\n middlewares.push(hideMiddleware());\n }\n\n return { middlewares, strictPlacement: isAutoPlacement ? undefined : placement };\n }, [\n placement,\n offsetByCrossAxis,\n arrow,\n arrowHeight,\n offsetByMainAxis,\n disableFlipMiddleware,\n flipMiddlewareFallbackAxisSideDirection,\n sameWidth,\n customMiddlewares,\n hideWhenReferenceHidden,\n arrowRef,\n arrowPadding,\n ]);\n};\n"],"names":["React","arrowMiddleware","autoPlacementMiddleware","flipMiddleware","hideMiddleware","offsetMiddleware","shiftMiddleware","sizeMiddleware","checkIsNotAutoPlacement","getAutoPlacementAlign","useFloatingMiddlewaresBootstrap","placement","arrowRef","arrow","arrowHeight","arrowPadding","sameWidth","offsetByMainAxis","offsetByCrossAxis","customMiddlewares","hideWhenReferenceHidden","disableFlipMiddleware","flipMiddlewareFallbackAxisSideDirection","useMemo","isAutoPlacement","middlewares","crossAxis","mainAxis","push","alignment","fallbackAxisSideDirection","apply","rects","elements","Object","assign","floating","style","width","reference","element","padding","strictPlacement","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SACEC,eAAe,EACfC,uBAAuB,EACvBC,cAAc,EAEdC,cAAc,EACdC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,iBAAc;AACrB,SAASC,uBAAuB,EAAEC,qBAAqB,QAAQ,kBAAe;AAsD9E,OAAO,MAAMC,kCAAkC,CAAC,EAC9CC,YAAY,cAAc,EAC1BC,WAAW,IAAI,EACfC,KAAK,EACLC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,mBAAmB,CAAC,EACpBC,oBAAoB,CAAC,EACrBC,iBAAiB,EACjBC,uBAAuB,EACvBC,wBAAwB,KAAK,EAC7BC,0CAA0C,OAAO,EACV;IAIvC,OAAOtB,MAAMuB,OAAO,CAAC;QACnB,MAAMC,kBAAkB,CAAChB,wBAAwBG;QACjD,MAAMc,cAAuC;YAC3CpB,iBAAiB;gBACfqB,WAAWR;gBACXS,UAAUd,SAASC,cAAcG,mBAAmBH,cAAcG;YACpE;SACD;QAED,oEAAoE;QACpE,IAAIO,iBAAiB;YACnBC,YAAYG,IAAI,CAAC1B,wBAAwB;gBAAE2B,WAAWpB,sBAAsBE;YAAW;QACzF,OAAO,IAAI,CAACU,uBAAuB;YACjCI,YAAYG,IAAI,CACdzB,eAAe;gBACb2B,2BAA2BR;gBAC3BI,WAAW;YACb;QAEJ;QAEAD,YAAYG,IAAI,CAACtB;QAEjB,IAAIU,WAAW;YACbS,YAAYG,IAAI,CACdrB,eAAe;gBACbwB,OAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE;oBACvBC,OAAOC,MAAM,CAACF,SAASG,QAAQ,CAACC,KAAK,EAAE;wBACrCC,OAAO,GAAGN,MAAMO,SAAS,CAACD,KAAK,CAAC,EAAE,CAAC;oBACrC;gBACF;YACF;QAEJ;QAEA,IAAInB,mBAAmB;YACrBM,YAAYG,IAAI,IAAIT;QACtB;QAEA,+CAA+C;QAC/C,IAAIN,OAAO;YACTY,YAAYG,IAAI,CACd3B,gBAAgB;gBACduC,SAAS5B;gBACT6B,SAAS1B;YACX;QAEJ;QAEA,IAAIK,yBAAyB;YAC3BK,YAAYG,IAAI,CAACxB;QACnB;QAEA,OAAO;YAAEqB;YAAaiB,iBAAiBlB,kBAAkBmB,YAAYhC;QAAU;IACjF,GAAG;QACDA;QACAO;QACAL;QACAC;QACAG;QACAI;QACAC;QACAN;QACAG;QACAC;QACAR;QACAG;KACD;AACH,EAAE"}
@@ -255,7 +255,12 @@ shown: shownProp, onShownChange: onShownChangeProp, onShownChanged: onShownChang
255
255
  triggerOnClick
256
256
  ]);
257
257
  if (shownFinalState) {
258
- floatingPropsRef.current.style = convertFloatingDataToReactCSSProperties(strategy, x, y, undefined, middlewareData);
258
+ floatingPropsRef.current.style = convertFloatingDataToReactCSSProperties({
259
+ strategy,
260
+ x,
261
+ y,
262
+ middlewareData
263
+ });
259
264
  if (disableInteractive) {
260
265
  floatingPropsRef.current.style.pointerEvents = 'none';
261
266
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"sourcesContent":["import * as React from 'react';\nimport { debounce, noop } from '@vkontakte/vkjs';\nimport { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';\nimport { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';\nimport { useStableCallback } from '../../../hooks/useStableCallback';\nimport { contains, getActiveElementByAnotherElement } from '../../dom';\nimport { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';\nimport { autoUpdateFloatingElement, useFloating } from '../adapters';\nimport { convertFloatingDataToReactCSSProperties } from '../functions';\nimport { type UseFloatingOptions } from '../types/common';\nimport { DEFAULT_TRIGGER } from './constants';\nimport type {\n FloatingProps,\n ReferenceProps,\n ShownChangeReason,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\nimport { useResolveTriggerType } from './useResolveTriggerType';\n\ntype LocalState = { shown: boolean; reason?: ShownChangeReason };\n\nconst whileElementsMounted: UseFloatingOptions['whileElementsMounted'] = (...args) =>\n /* istanbul ignore next: не знаю как проверить */\n autoUpdateFloatingElement(...args, { elementResize: true });\n\n/**\n * @private\n */\nexport const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>({\n trigger = DEFAULT_TRIGGER,\n\n // UseFloating\n placement: placementProp = 'bottom',\n strategy: strategyProp = 'fixed',\n middlewares,\n hoverDelay = 0,\n closeAfterClick = false,\n\n // disables\n disabled = false,\n disableInteractive = false,\n disableCloseOnClickOutside = false,\n disableCloseOnEscKey = false,\n\n // uncontrolled\n defaultShown = false,\n\n // controlled\n shown: shownProp,\n onShownChange: onShownChangeProp,\n onShownChanged: onShownChangedProp,\n}: UseFloatingWithInteractionsProps): UseFloatingWithInteractionsReturn<T> => {\n const memoizedValue = React.useMemo<LocalState | undefined>(\n () => (shownProp !== undefined ? { shown: shownProp } : undefined),\n [shownProp],\n );\n const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({\n value: memoizedValue,\n disabled,\n defaultValue: { shown: defaultShown },\n onChange: useStableCallback(({ shown, reason }) => {\n if (onShownChangeProp) {\n onShownChangeProp(shown, reason);\n }\n }),\n });\n const onShownChanged = useStableCallback(onShownChangedProp ? onShownChangedProp : noop);\n const [shownFinalState, setShownFinalState] = React.useState(() => shownLocalState.shown);\n const [willBeHide, setWillBeHide] = React.useState(false);\n\n const hasCSSAnimation = React.useRef(false);\n\n const blockMouseEnterRef = React.useRef(false);\n const blockFocusRef = React.useRef(false);\n const blurTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const handleCloseOnReferenceClickOutsideDisabled =\n disabled || disableCloseOnClickOutside || willBeHide || !shownLocalState.shown;\n const handleCloseOnFloatingClickOutsideDisabled =\n disableInteractive || handleCloseOnReferenceClickOutsideDisabled;\n\n const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);\n\n // Библиотека `floating-ui`\n const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({\n strategy: strategyProp,\n placement: placementProp,\n middleware: middlewares,\n whileElementsMounted,\n });\n\n const commitShownLocalState = React.useCallback(\n (nextShown: boolean, reason: ShownChangeReason) => {\n setShownLocalState((prevState) => {\n if (prevState.shown !== nextShown || prevState.reason !== reason) {\n return {\n shown: nextShown,\n reason,\n };\n }\n /* istanbul ignore next: страховка, если вдруг на момент вызова обновления состояния, оно уже будет актуальным */\n return prevState;\n });\n },\n [setShownLocalState],\n );\n\n const [mouseEnterDelay, mouseLeaveDelay] =\n typeof hoverDelay === 'number' ? [hoverDelay, hoverDelay] : hoverDelay;\n\n const showWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(true, 'hover'), mouseEnterDelay),\n [mouseEnterDelay, commitShownLocalState],\n );\n\n const hideWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(false, 'hover'), mouseLeaveDelay),\n [mouseLeaveDelay, commitShownLocalState],\n );\n\n const handleFocusOnReference = useStableCallback(() => {\n // Повторный вызов события фокуса - следствие клика на reference-элемент\n if (shownLocalState.shown) {\n if (!closeAfterClick && shownLocalState.reason === 'hover') {\n return;\n }\n commitShownLocalState(false, 'focus');\n return;\n }\n if (blockFocusRef.current) {\n /* istanbul ignore next: в Jest не воспроизводится баг на вебе (cм. onRestoreFocus) */\n blockFocusRef.current = false;\n return;\n }\n\n commitShownLocalState(true, 'focus');\n });\n\n const handleBlurOnReference = useStableCallback((event: React.FocusEvent) => {\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (!shownLocalState.shown) {\n clearTimeout(blurTimeoutRef.current);\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n blurTimeoutRef.current = setTimeout(function waitWindowBlurFire() {\n const reference = refs.reference.current;\n // Если пользователь покинул текущее окно в открытом состоянии, то\n // не закрываем всплывающий элемент.\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (!relatedTarget && getActiveElementByAnotherElement(reference) === reference) {\n /* istanbul ignore next */\n return;\n }\n\n // Если пользователь нажал на всплывающий элемент, то не закрываем всплывающий элемент.\n // Note: для этого элемент должен быть фокусируемый (например, за счёт `tabindex=\"-1\"`).\n if (contains(refs.floating.current, relatedTarget) || contains(reference, relatedTarget)) {\n return;\n }\n\n commitShownLocalState(false, 'focus');\n });\n });\n\n const handleClickOnReference = useStableCallback(() => {\n // Предыдущий триггер (фокус) уже вызвал открытие/закрытие всплывающего окна, игнорируем вызов\n if (shownLocalState.reason === 'focus') {\n commitShownLocalState(shownLocalState.shown, 'click');\n return;\n }\n commitShownLocalState(!shownLocalState.shown, 'click');\n });\n\n const handleClickOnReferenceForOnlyClose = useStableCallback(() => {\n blockMouseEnterRef.current = true;\n commitShownLocalState(false, 'click');\n });\n\n const handleMouseEnterOnBoth = useStableCallback((event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n if (!blockMouseEnterRef.current && !shownLocalState.shown) {\n showWithDelay();\n }\n });\n\n const handleMouseLeaveOnBothForHoverAndFocusStates = useStableCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (triggerOnHover) {\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n hideWithDelay();\n }\n },\n );\n\n const handleFloatingAnimationStart = () => {\n hasCSSAnimation.current = true;\n };\n\n const handleFloatingAnimationEnd = () => {\n if (willBeHide) {\n setShownFinalState(false);\n setWillBeHide(false);\n onShownChanged(false, shownLocalState.reason);\n }\n };\n\n const handleOnClose = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'callback');\n }, [commitShownLocalState]);\n\n const handleRestoreFocus: UseFloatingWithInteractionsReturn['onRestoreFocus'] = React.useCallback(\n (restoreFocus = true) => {\n if (!restoreFocus) {\n return false;\n }\n if (restoreFocus === true) {\n return triggerOnFocus ? blockFocusRef.current : true;\n } else if (restoreFocus === 'anchor-element') {\n return refs.reference.current as HTMLElement;\n } else if (restoreFocus instanceof HTMLElement) {\n return restoreFocus;\n }\n return false;\n },\n [refs.reference, triggerOnFocus],\n );\n\n const handleEscapeKeyDown = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'escape-key');\n }, [commitShownLocalState]);\n\n const handleClickOutside = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'click-outside');\n }, [commitShownLocalState]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n handleCloseOnReferenceClickOutsideDisabled ? null : refs.reference,\n handleCloseOnFloatingClickOutsideDisabled ? null : refs.floating,\n );\n\n useIsomorphicLayoutEffect(\n /**\n * Если пользователь покинул активное окно и:\n * 1. целевой элемент был в состоянии фокуса;\n * 2. всплывающий элемент был закрытом состоянии;\n * то фокус должен быть заблокирован, когда пользователь вернётся обратно. Иначе покажется\n * всплывающий элемент.\n */\n function setGlobalBlurForTriggerOnFocus() {\n if (!triggerOnFocus || !refs.reference.current) {\n return;\n }\n\n const handleGlobalBlur = () => {\n /* istanbul ignore next */\n const reference = refs.reference.current;\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (\n !shownLocalState.shown &&\n isHTMLElement(reference) &&\n reference === getActiveElementByAnotherElement(reference)\n ) {\n /* istanbul ignore next */\n blockFocusRef.current = true;\n }\n };\n\n const win = getWindow(refs.reference.current);\n win.addEventListener('blur', handleGlobalBlur);\n return () => {\n win.removeEventListener('blur', handleGlobalBlur);\n };\n },\n [triggerOnFocus, refs.reference, shownLocalState],\n );\n\n useIsomorphicLayoutEffect(\n function resolveShownStates() {\n if (willBeHide || shownLocalState.shown === shownFinalState) {\n return;\n }\n\n if (shownLocalState.shown) {\n setShownFinalState(true);\n onShownChanged(true, shownLocalState.reason);\n } else if (hasCSSAnimation.current && !willBeHide) {\n setWillBeHide(true);\n } else {\n setShownFinalState(false);\n }\n\n return () => {\n clearTimeout(blurTimeoutRef.current);\n };\n },\n [shownLocalState, shownFinalState, willBeHide, onShownChanged],\n );\n\n const referencePropsRef = React.useRef<ReferenceProps>({});\n const floatingPropsRef = React.useRef<FloatingProps>({ style: {} });\n\n useIsomorphicLayoutEffect(() => {\n referencePropsRef.current = {};\n }, [triggerOnHover, triggerOnFocus, triggerOnClick]);\n\n if (shownFinalState) {\n floatingPropsRef.current.style = convertFloatingDataToReactCSSProperties(\n strategy,\n x,\n y,\n undefined,\n middlewareData,\n );\n\n if (disableInteractive) {\n floatingPropsRef.current.style.pointerEvents = 'none';\n }\n }\n\n if (triggerOnFocus) {\n referencePropsRef.current.onFocus = handleFocusOnReference;\n referencePropsRef.current.onBlur = handleBlurOnReference;\n }\n\n if (triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReference;\n }\n\n if (triggerOnHover) {\n referencePropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n\n if (closeAfterClick && !triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReferenceForOnlyClose;\n }\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n }\n }\n\n if (triggerOnHover || triggerOnFocus) {\n referencePropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n }\n }\n\n if (shownFinalState) {\n floatingPropsRef.current.onAnimationStart = handleFloatingAnimationStart;\n floatingPropsRef.current.onAnimationEnd = handleFloatingAnimationEnd;\n }\n\n return {\n placement,\n shown: shownFinalState,\n willBeHide,\n refs,\n referenceProps: referencePropsRef.current,\n floatingProps: floatingPropsRef.current,\n middlewareData,\n onClose: handleOnClose,\n // FocusTrap уже определяет нажатие на ESC, поэтому название события содержит конкретный код\n // кнопки вместо просто onKeyDown.\n onEscapeKeyDown: !shownFinalState || disableCloseOnEscKey ? undefined : handleEscapeKeyDown,\n // [Обход баги с FocusTrap]\n //\n // Если сфокусироваться на целевой элемент через нажатие, а потом нажать в область за пределами\n // целевого и всплывающего элемента, то появляется моргание из-за того, что FocusTrap\n // восстанавливает фокус, из-за чего всплывающий элемент снова показывается за счёт\n // `handleFocusOnReference`, а потом скрывается за счёт `handleBlurOnReference`.\n onRestoreFocus: handleRestoreFocus,\n };\n};\n"],"names":["React","debounce","noop","getWindow","isHTMLElement","useCustomEnsuredControl","useGlobalOnClickOutside","useStableCallback","contains","getActiveElementByAnotherElement","useIsomorphicLayoutEffect","autoUpdateFloatingElement","useFloating","convertFloatingDataToReactCSSProperties","DEFAULT_TRIGGER","useResolveTriggerType","whileElementsMounted","args","elementResize","useFloatingWithInteractions","trigger","placement","placementProp","strategy","strategyProp","middlewares","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChangeProp","onShownChanged","onShownChangedProp","memoizedValue","useMemo","undefined","shownLocalState","setShownLocalState","value","defaultValue","onChange","reason","shownFinalState","setShownFinalState","useState","willBeHide","setWillBeHide","hasCSSAnimation","useRef","blockMouseEnterRef","blockFocusRef","blurTimeoutRef","handleCloseOnReferenceClickOutsideDisabled","handleCloseOnFloatingClickOutsideDisabled","triggerOnFocus","triggerOnClick","triggerOnHover","x","y","refs","middlewareData","middleware","commitShownLocalState","useCallback","nextShown","prevState","mouseEnterDelay","mouseLeaveDelay","showWithDelay","hideWithDelay","handleFocusOnReference","current","handleBlurOnReference","event","clearTimeout","relatedTarget","setTimeout","waitWindowBlurFire","reference","floating","handleClickOnReference","handleClickOnReferenceForOnlyClose","handleMouseEnterOnBoth","currentTarget","cancel","handleMouseLeaveOnBothForHoverAndFocusStates","handleFloatingAnimationStart","handleFloatingAnimationEnd","handleOnClose","handleRestoreFocus","restoreFocus","HTMLElement","handleEscapeKeyDown","handleClickOutside","setGlobalBlurForTriggerOnFocus","handleGlobalBlur","win","addEventListener","removeEventListener","resolveShownStates","referencePropsRef","floatingPropsRef","style","pointerEvents","onFocus","onBlur","onClick","onMouseOver","onMouseLeave","onAnimationStart","onAnimationEnd","referenceProps","floatingProps","onClose","onEscapeKeyDown","onRestoreFocus"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"sourcesContent":["import * as React from 'react';\nimport { debounce, noop } from '@vkontakte/vkjs';\nimport { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';\nimport { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';\nimport { useStableCallback } from '../../../hooks/useStableCallback';\nimport { contains, getActiveElementByAnotherElement } from '../../dom';\nimport { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';\nimport { autoUpdateFloatingElement, useFloating } from '../adapters';\nimport { convertFloatingDataToReactCSSProperties } from '../functions';\nimport { type UseFloatingOptions } from '../types/common';\nimport { DEFAULT_TRIGGER } from './constants';\nimport type {\n FloatingProps,\n ReferenceProps,\n ShownChangeReason,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\nimport { useResolveTriggerType } from './useResolveTriggerType';\n\ntype LocalState = { shown: boolean; reason?: ShownChangeReason };\n\nconst whileElementsMounted: UseFloatingOptions['whileElementsMounted'] = (...args) =>\n /* istanbul ignore next: не знаю как проверить */\n autoUpdateFloatingElement(...args, { elementResize: true });\n\n/**\n * @private\n */\nexport const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>({\n trigger = DEFAULT_TRIGGER,\n\n // UseFloating\n placement: placementProp = 'bottom',\n strategy: strategyProp = 'fixed',\n middlewares,\n hoverDelay = 0,\n closeAfterClick = false,\n\n // disables\n disabled = false,\n disableInteractive = false,\n disableCloseOnClickOutside = false,\n disableCloseOnEscKey = false,\n\n // uncontrolled\n defaultShown = false,\n\n // controlled\n shown: shownProp,\n onShownChange: onShownChangeProp,\n onShownChanged: onShownChangedProp,\n}: UseFloatingWithInteractionsProps): UseFloatingWithInteractionsReturn<T> => {\n const memoizedValue = React.useMemo<LocalState | undefined>(\n () => (shownProp !== undefined ? { shown: shownProp } : undefined),\n [shownProp],\n );\n const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({\n value: memoizedValue,\n disabled,\n defaultValue: { shown: defaultShown },\n onChange: useStableCallback(({ shown, reason }) => {\n if (onShownChangeProp) {\n onShownChangeProp(shown, reason);\n }\n }),\n });\n const onShownChanged = useStableCallback(onShownChangedProp ? onShownChangedProp : noop);\n const [shownFinalState, setShownFinalState] = React.useState(() => shownLocalState.shown);\n const [willBeHide, setWillBeHide] = React.useState(false);\n\n const hasCSSAnimation = React.useRef(false);\n\n const blockMouseEnterRef = React.useRef(false);\n const blockFocusRef = React.useRef(false);\n const blurTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const handleCloseOnReferenceClickOutsideDisabled =\n disabled || disableCloseOnClickOutside || willBeHide || !shownLocalState.shown;\n const handleCloseOnFloatingClickOutsideDisabled =\n disableInteractive || handleCloseOnReferenceClickOutsideDisabled;\n\n const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);\n\n // Библиотека `floating-ui`\n const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({\n strategy: strategyProp,\n placement: placementProp,\n middleware: middlewares,\n whileElementsMounted,\n });\n\n const commitShownLocalState = React.useCallback(\n (nextShown: boolean, reason: ShownChangeReason) => {\n setShownLocalState((prevState) => {\n if (prevState.shown !== nextShown || prevState.reason !== reason) {\n return {\n shown: nextShown,\n reason,\n };\n }\n /* istanbul ignore next: страховка, если вдруг на момент вызова обновления состояния, оно уже будет актуальным */\n return prevState;\n });\n },\n [setShownLocalState],\n );\n\n const [mouseEnterDelay, mouseLeaveDelay] =\n typeof hoverDelay === 'number' ? [hoverDelay, hoverDelay] : hoverDelay;\n\n const showWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(true, 'hover'), mouseEnterDelay),\n [mouseEnterDelay, commitShownLocalState],\n );\n\n const hideWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(false, 'hover'), mouseLeaveDelay),\n [mouseLeaveDelay, commitShownLocalState],\n );\n\n const handleFocusOnReference = useStableCallback(() => {\n // Повторный вызов события фокуса - следствие клика на reference-элемент\n if (shownLocalState.shown) {\n if (!closeAfterClick && shownLocalState.reason === 'hover') {\n return;\n }\n commitShownLocalState(false, 'focus');\n return;\n }\n if (blockFocusRef.current) {\n /* istanbul ignore next: в Jest не воспроизводится баг на вебе (cм. onRestoreFocus) */\n blockFocusRef.current = false;\n return;\n }\n\n commitShownLocalState(true, 'focus');\n });\n\n const handleBlurOnReference = useStableCallback((event: React.FocusEvent) => {\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (!shownLocalState.shown) {\n clearTimeout(blurTimeoutRef.current);\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n blurTimeoutRef.current = setTimeout(function waitWindowBlurFire() {\n const reference = refs.reference.current;\n // Если пользователь покинул текущее окно в открытом состоянии, то\n // не закрываем всплывающий элемент.\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (!relatedTarget && getActiveElementByAnotherElement(reference) === reference) {\n /* istanbul ignore next */\n return;\n }\n\n // Если пользователь нажал на всплывающий элемент, то не закрываем всплывающий элемент.\n // Note: для этого элемент должен быть фокусируемый (например, за счёт `tabindex=\"-1\"`).\n if (contains(refs.floating.current, relatedTarget) || contains(reference, relatedTarget)) {\n return;\n }\n\n commitShownLocalState(false, 'focus');\n });\n });\n\n const handleClickOnReference = useStableCallback(() => {\n // Предыдущий триггер (фокус) уже вызвал открытие/закрытие всплывающего окна, игнорируем вызов\n if (shownLocalState.reason === 'focus') {\n commitShownLocalState(shownLocalState.shown, 'click');\n return;\n }\n commitShownLocalState(!shownLocalState.shown, 'click');\n });\n\n const handleClickOnReferenceForOnlyClose = useStableCallback(() => {\n blockMouseEnterRef.current = true;\n commitShownLocalState(false, 'click');\n });\n\n const handleMouseEnterOnBoth = useStableCallback((event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n if (!blockMouseEnterRef.current && !shownLocalState.shown) {\n showWithDelay();\n }\n });\n\n const handleMouseLeaveOnBothForHoverAndFocusStates = useStableCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (triggerOnHover) {\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n hideWithDelay();\n }\n },\n );\n\n const handleFloatingAnimationStart = () => {\n hasCSSAnimation.current = true;\n };\n\n const handleFloatingAnimationEnd = () => {\n if (willBeHide) {\n setShownFinalState(false);\n setWillBeHide(false);\n onShownChanged(false, shownLocalState.reason);\n }\n };\n\n const handleOnClose = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'callback');\n }, [commitShownLocalState]);\n\n const handleRestoreFocus: UseFloatingWithInteractionsReturn['onRestoreFocus'] = React.useCallback(\n (restoreFocus = true) => {\n if (!restoreFocus) {\n return false;\n }\n if (restoreFocus === true) {\n return triggerOnFocus ? blockFocusRef.current : true;\n } else if (restoreFocus === 'anchor-element') {\n return refs.reference.current as HTMLElement;\n } else if (restoreFocus instanceof HTMLElement) {\n return restoreFocus;\n }\n return false;\n },\n [refs.reference, triggerOnFocus],\n );\n\n const handleEscapeKeyDown = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'escape-key');\n }, [commitShownLocalState]);\n\n const handleClickOutside = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'click-outside');\n }, [commitShownLocalState]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n handleCloseOnReferenceClickOutsideDisabled ? null : refs.reference,\n handleCloseOnFloatingClickOutsideDisabled ? null : refs.floating,\n );\n\n useIsomorphicLayoutEffect(\n /**\n * Если пользователь покинул активное окно и:\n * 1. целевой элемент был в состоянии фокуса;\n * 2. всплывающий элемент был закрытом состоянии;\n * то фокус должен быть заблокирован, когда пользователь вернётся обратно. Иначе покажется\n * всплывающий элемент.\n */\n function setGlobalBlurForTriggerOnFocus() {\n if (!triggerOnFocus || !refs.reference.current) {\n return;\n }\n\n const handleGlobalBlur = () => {\n /* istanbul ignore next */\n const reference = refs.reference.current;\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (\n !shownLocalState.shown &&\n isHTMLElement(reference) &&\n reference === getActiveElementByAnotherElement(reference)\n ) {\n /* istanbul ignore next */\n blockFocusRef.current = true;\n }\n };\n\n const win = getWindow(refs.reference.current);\n win.addEventListener('blur', handleGlobalBlur);\n return () => {\n win.removeEventListener('blur', handleGlobalBlur);\n };\n },\n [triggerOnFocus, refs.reference, shownLocalState],\n );\n\n useIsomorphicLayoutEffect(\n function resolveShownStates() {\n if (willBeHide || shownLocalState.shown === shownFinalState) {\n return;\n }\n\n if (shownLocalState.shown) {\n setShownFinalState(true);\n onShownChanged(true, shownLocalState.reason);\n } else if (hasCSSAnimation.current && !willBeHide) {\n setWillBeHide(true);\n } else {\n setShownFinalState(false);\n }\n\n return () => {\n clearTimeout(blurTimeoutRef.current);\n };\n },\n [shownLocalState, shownFinalState, willBeHide, onShownChanged],\n );\n\n const referencePropsRef = React.useRef<ReferenceProps>({});\n const floatingPropsRef = React.useRef<FloatingProps>({ style: {} });\n\n useIsomorphicLayoutEffect(() => {\n referencePropsRef.current = {};\n }, [triggerOnHover, triggerOnFocus, triggerOnClick]);\n\n if (shownFinalState) {\n floatingPropsRef.current.style = convertFloatingDataToReactCSSProperties({\n strategy,\n x,\n y,\n middlewareData,\n });\n\n if (disableInteractive) {\n floatingPropsRef.current.style.pointerEvents = 'none';\n }\n }\n\n if (triggerOnFocus) {\n referencePropsRef.current.onFocus = handleFocusOnReference;\n referencePropsRef.current.onBlur = handleBlurOnReference;\n }\n\n if (triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReference;\n }\n\n if (triggerOnHover) {\n referencePropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n\n if (closeAfterClick && !triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReferenceForOnlyClose;\n }\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n }\n }\n\n if (triggerOnHover || triggerOnFocus) {\n referencePropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n }\n }\n\n if (shownFinalState) {\n floatingPropsRef.current.onAnimationStart = handleFloatingAnimationStart;\n floatingPropsRef.current.onAnimationEnd = handleFloatingAnimationEnd;\n }\n\n return {\n placement,\n shown: shownFinalState,\n willBeHide,\n refs,\n referenceProps: referencePropsRef.current,\n floatingProps: floatingPropsRef.current,\n middlewareData,\n onClose: handleOnClose,\n // FocusTrap уже определяет нажатие на ESC, поэтому название события содержит конкретный код\n // кнопки вместо просто onKeyDown.\n onEscapeKeyDown: !shownFinalState || disableCloseOnEscKey ? undefined : handleEscapeKeyDown,\n // [Обход баги с FocusTrap]\n //\n // Если сфокусироваться на целевой элемент через нажатие, а потом нажать в область за пределами\n // целевого и всплывающего элемента, то появляется моргание из-за того, что FocusTrap\n // восстанавливает фокус, из-за чего всплывающий элемент снова показывается за счёт\n // `handleFocusOnReference`, а потом скрывается за счёт `handleBlurOnReference`.\n onRestoreFocus: handleRestoreFocus,\n };\n};\n"],"names":["React","debounce","noop","getWindow","isHTMLElement","useCustomEnsuredControl","useGlobalOnClickOutside","useStableCallback","contains","getActiveElementByAnotherElement","useIsomorphicLayoutEffect","autoUpdateFloatingElement","useFloating","convertFloatingDataToReactCSSProperties","DEFAULT_TRIGGER","useResolveTriggerType","whileElementsMounted","args","elementResize","useFloatingWithInteractions","trigger","placement","placementProp","strategy","strategyProp","middlewares","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChangeProp","onShownChanged","onShownChangedProp","memoizedValue","useMemo","undefined","shownLocalState","setShownLocalState","value","defaultValue","onChange","reason","shownFinalState","setShownFinalState","useState","willBeHide","setWillBeHide","hasCSSAnimation","useRef","blockMouseEnterRef","blockFocusRef","blurTimeoutRef","handleCloseOnReferenceClickOutsideDisabled","handleCloseOnFloatingClickOutsideDisabled","triggerOnFocus","triggerOnClick","triggerOnHover","x","y","refs","middlewareData","middleware","commitShownLocalState","useCallback","nextShown","prevState","mouseEnterDelay","mouseLeaveDelay","showWithDelay","hideWithDelay","handleFocusOnReference","current","handleBlurOnReference","event","clearTimeout","relatedTarget","setTimeout","waitWindowBlurFire","reference","floating","handleClickOnReference","handleClickOnReferenceForOnlyClose","handleMouseEnterOnBoth","currentTarget","cancel","handleMouseLeaveOnBothForHoverAndFocusStates","handleFloatingAnimationStart","handleFloatingAnimationEnd","handleOnClose","handleRestoreFocus","restoreFocus","HTMLElement","handleEscapeKeyDown","handleClickOutside","setGlobalBlurForTriggerOnFocus","handleGlobalBlur","win","addEventListener","removeEventListener","resolveShownStates","referencePropsRef","floatingPropsRef","style","pointerEvents","onFocus","onBlur","onClick","onMouseOver","onMouseLeave","onAnimationStart","onAnimationEnd","referenceProps","floatingProps","onClose","onEscapeKeyDown","onRestoreFocus"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect.js";
3
+ export function useReferenceHiddenChangeCallback(hideMiddleware, onReferenceHiddenChange) {
4
+ const prevHiddenRef = React.useRef(hideMiddleware?.referenceHidden);
5
+ React.useEffect(()=>{
6
+ prevHiddenRef.current = hideMiddleware?.referenceHidden;
7
+ });
8
+ useIsomorphicLayoutEffect(function checkHiddenChanged() {
9
+ if (!onReferenceHiddenChange) {
10
+ return;
11
+ }
12
+ if (hideMiddleware?.referenceHidden !== prevHiddenRef.current) {
13
+ onReferenceHiddenChange(hideMiddleware?.referenceHidden || false);
14
+ }
15
+ }, [
16
+ hideMiddleware?.referenceHidden,
17
+ onReferenceHiddenChange
18
+ ]);
19
+ }
20
+
21
+ //# sourceMappingURL=useReferenceHiddenChangeCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/floating/useReferenceHiddenChangeCallback.ts"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\nimport { type UseFloatingData } from './types/common';\nimport { type FloatingComponentProps } from './types/component';\n\nexport function useReferenceHiddenChangeCallback(\n hideMiddleware: UseFloatingData['middlewareData']['hide'],\n onReferenceHiddenChange: FloatingComponentProps['onReferenceHiddenChange'],\n) {\n const prevHiddenRef = React.useRef<boolean | undefined>(hideMiddleware?.referenceHidden);\n React.useEffect(() => {\n prevHiddenRef.current = hideMiddleware?.referenceHidden;\n });\n\n useIsomorphicLayoutEffect(\n function checkHiddenChanged() {\n if (!onReferenceHiddenChange) {\n return;\n }\n if (hideMiddleware?.referenceHidden !== prevHiddenRef.current) {\n onReferenceHiddenChange(hideMiddleware?.referenceHidden || false);\n }\n },\n [hideMiddleware?.referenceHidden, onReferenceHiddenChange],\n );\n}\n"],"names":["React","useIsomorphicLayoutEffect","useReferenceHiddenChangeCallback","hideMiddleware","onReferenceHiddenChange","prevHiddenRef","useRef","referenceHidden","useEffect","current","checkHiddenChanged"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,yBAAyB,QAAQ,kCAA+B;AAIzE,OAAO,SAASC,iCACdC,cAAyD,EACzDC,uBAA0E;IAE1E,MAAMC,gBAAgBL,MAAMM,MAAM,CAAsBH,gBAAgBI;IACxEP,MAAMQ,SAAS,CAAC;QACdH,cAAcI,OAAO,GAAGN,gBAAgBI;IAC1C;IAEAN,0BACE,SAASS;QACP,IAAI,CAACN,yBAAyB;YAC5B;QACF;QACA,IAAID,gBAAgBI,oBAAoBF,cAAcI,OAAO,EAAE;YAC7DL,wBAAwBD,gBAAgBI,mBAAmB;QAC7D;IACF,GACA;QAACJ,gBAAgBI;QAAiBH;KAAwB;AAE9D"}
@@ -0,0 +1,9 @@
1
+ // eslint-disable-next-line @typescript-eslint/ban-types
2
+ export function mapObject(object, map) {
3
+ return Object.entries(object).reduce((acc, [key, value])=>Object.assign(acc, {
4
+ [key]: map(value, key)
5
+ }), // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter
6
+ {});
7
+ }
8
+
9
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/object.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-types\nexport function mapObject<T extends Object, R extends Record<keyof T, any>>(\n object: T,\n map: (value: T[keyof T], key: keyof T) => R[keyof T],\n): R {\n return Object.entries(object).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: map(value, key as keyof T),\n }),\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter\n {} as R,\n );\n}\n"],"names":["mapObject","object","map","Object","entries","reduce","acc","key","value","assign"],"mappings":"AAAA,wDAAwD;AACxD,OAAO,SAASA,UACdC,MAAS,EACTC,GAAoD;IAEpD,OAAOC,OAAOC,OAAO,CAACH,QAAQI,MAAM,CAClC,CAACC,KAAK,CAACC,KAAKC,MAAM,GAChBL,OAAOM,MAAM,CAACH,KAAK;YACjB,CAACC,IAAI,EAAEL,IAAIM,OAAOD;QACpB,IACF,0HAA0H;IAC1H,CAAC;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/select.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { SelectType } from '../components/Select/Select';\nimport { getTextFromChildren } from './children';\n\nexport type Option = {\n value?: unknown;\n label?: React.ReactNode;\n [index: string]: any;\n};\n\nexport type GetOptionLabel<O extends Option> = (option: O) => O['label'];\n\nexport type FilterFn<O extends Option> = (\n inputValue: string,\n option: O,\n getOptionsLabel?: GetOptionLabel<O>,\n) => boolean;\n\nfunction getOptionLabelDefault<O extends Option>(option: O): O['label'] {\n return option.label;\n}\n\nexport function defaultFilterFn<O extends Option>(\n ...args: Parameters<FilterFn<O>>\n): ReturnType<FilterFn<O>> {\n const [rawSearchQuery = '', option, getOptionLabel] = args;\n const foundRawLabel = getOptionLabel ? getOptionLabel(option) : getOptionLabelDefault(option);\n\n if (foundRawLabel === undefined) {\n return false;\n }\n\n const searchQuery = rawSearchQuery.toLocaleLowerCase();\n const label = getTextFromChildren(foundRawLabel).toLocaleLowerCase();\n\n if (label.startsWith(searchQuery)) {\n return true;\n }\n\n const findAllIncludes = (target = '', search = '') => {\n const includes = [];\n let i = target.indexOf(search);\n while (i !== -1) {\n includes.push(i);\n i = target.indexOf(search, i + 1);\n }\n return includes;\n };\n\n const includes = findAllIncludes(label, searchQuery);\n\n if (includes.length) {\n // Ищем вхождение перед началом которого не буква\n const letterRegexp = new RegExp('\\\\p{L}', 'u');\n\n for (const index of includes) {\n if (!letterRegexp.test(label[index - 1])) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport const getFormFieldModeFromSelectType = (\n selectType: SelectType = 'default',\n): 'default' | 'plain' => {\n return selectType === 'default' ? 'default' : 'plain';\n};\n"],"names":["getTextFromChildren","getOptionLabelDefault","option","label","defaultFilterFn","args","rawSearchQuery","getOptionLabel","foundRawLabel","undefined","searchQuery","toLocaleLowerCase","startsWith","findAllIncludes","target","search","includes","i","indexOf","push","length","letterRegexp","RegExp","index","test","getFormFieldModeFromSelectType","selectType"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,gBAAa;AAgBjD,SAASC,sBAAwCC,MAAS;IACxD,OAAOA,OAAOC,KAAK;AACrB;AAEA,OAAO,SAASC,gBACd,GAAGC,IAA6B;IAEhC,MAAM,CAACC,iBAAiB,EAAE,EAAEJ,QAAQK,eAAe,GAAGF;IACtD,MAAMG,gBAAgBD,iBAAiBA,eAAeL,UAAUD,sBAAsBC;IAEtF,IAAIM,kBAAkBC,WAAW;QAC/B,OAAO;IACT;IAEA,MAAMC,cAAcJ,eAAeK,iBAAiB;IACpD,MAAMR,QAAQH,oBAAoBQ,eAAeG,iBAAiB;IAElE,IAAIR,MAAMS,UAAU,CAACF,cAAc;QACjC,OAAO;IACT;IAEA,MAAMG,kBAAkB,CAACC,SAAS,EAAE,EAAEC,SAAS,EAAE;QAC/C,MAAMC,WAAW,EAAE;QACnB,IAAIC,IAAIH,OAAOI,OAAO,CAACH;QACvB,MAAOE,MAAM,CAAC,EAAG;YACfD,SAASG,IAAI,CAACF;YACdA,IAAIH,OAAOI,OAAO,CAACH,QAAQE,IAAI;QACjC;QACA,OAAOD;IACT;IAEA,MAAMA,WAAWH,gBAAgBV,OAAOO;IAExC,IAAIM,SAASI,MAAM,EAAE;QACnB,iDAAiD;QACjD,MAAMC,eAAe,IAAIC,OAAO,UAAU;QAE1C,KAAK,MAAMC,SAASP,SAAU;YAC5B,IAAI,CAACK,aAAaG,IAAI,CAACrB,KAAK,CAACoB,QAAQ,EAAE,GAAG;gBACxC,OAAO;YACT;QACF;IACF;IAEA,OAAO;AACT;AAEA,OAAO,MAAME,iCAAiC,CAC5CC,aAAyB,SAAS;IAElC,OAAOA,eAAe,YAAY,YAAY;AAChD,EAAE"}
1
+ {"version":3,"sources":["../../../src/lib/select.ts"],"sourcesContent":["import type * as React from 'react';\nimport type { SelectType } from '../components/Select/Select';\nimport { getTextFromChildren } from './children';\n\nexport type Option = {\n value?: unknown;\n label?: React.ReactNode;\n [index: string]: any;\n};\n\nexport type GetOptionLabel<O extends Option> = (option: O) => O['label'];\n\nexport type FilterFn<O extends Option> = (\n inputValue: string,\n option: O,\n getOptionsLabel?: GetOptionLabel<O>,\n) => boolean;\n\nexport type SortFn<O extends Option> = (optionA: O, optionB: O, inputValue: string) => number;\n\nfunction getOptionLabelDefault<O extends Option>(option: O): O['label'] {\n return option.label;\n}\n\nexport function defaultFilterFn<O extends Option>(\n ...args: Parameters<FilterFn<O>>\n): ReturnType<FilterFn<O>> {\n const [rawSearchQuery = '', option, getOptionLabel] = args;\n const foundRawLabel = getOptionLabel ? getOptionLabel(option) : getOptionLabelDefault(option);\n\n if (foundRawLabel === undefined) {\n return false;\n }\n\n const searchQuery = rawSearchQuery.toLocaleLowerCase();\n const label = getTextFromChildren(foundRawLabel).toLocaleLowerCase();\n\n if (label.startsWith(searchQuery)) {\n return true;\n }\n\n const findAllIncludes = (target = '', search = '') => {\n const includes = [];\n let i = target.indexOf(search);\n while (i !== -1) {\n includes.push(i);\n i = target.indexOf(search, i + 1);\n }\n return includes;\n };\n\n const includes = findAllIncludes(label, searchQuery);\n\n if (includes.length) {\n // Ищем вхождение перед началом которого не буква\n const letterRegexp = new RegExp('\\\\p{L}', 'u');\n\n for (const index of includes) {\n if (!letterRegexp.test(label[index - 1])) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport const getFormFieldModeFromSelectType = (\n selectType: SelectType = 'default',\n): 'default' | 'plain' => {\n return selectType === 'default' ? 'default' : 'plain';\n};\n"],"names":["getTextFromChildren","getOptionLabelDefault","option","label","defaultFilterFn","args","rawSearchQuery","getOptionLabel","foundRawLabel","undefined","searchQuery","toLocaleLowerCase","startsWith","findAllIncludes","target","search","includes","i","indexOf","push","length","letterRegexp","RegExp","index","test","getFormFieldModeFromSelectType","selectType"],"mappings":"AAEA,SAASA,mBAAmB,QAAQ,gBAAa;AAkBjD,SAASC,sBAAwCC,MAAS;IACxD,OAAOA,OAAOC,KAAK;AACrB;AAEA,OAAO,SAASC,gBACd,GAAGC,IAA6B;IAEhC,MAAM,CAACC,iBAAiB,EAAE,EAAEJ,QAAQK,eAAe,GAAGF;IACtD,MAAMG,gBAAgBD,iBAAiBA,eAAeL,UAAUD,sBAAsBC;IAEtF,IAAIM,kBAAkBC,WAAW;QAC/B,OAAO;IACT;IAEA,MAAMC,cAAcJ,eAAeK,iBAAiB;IACpD,MAAMR,QAAQH,oBAAoBQ,eAAeG,iBAAiB;IAElE,IAAIR,MAAMS,UAAU,CAACF,cAAc;QACjC,OAAO;IACT;IAEA,MAAMG,kBAAkB,CAACC,SAAS,EAAE,EAAEC,SAAS,EAAE;QAC/C,MAAMC,WAAW,EAAE;QACnB,IAAIC,IAAIH,OAAOI,OAAO,CAACH;QACvB,MAAOE,MAAM,CAAC,EAAG;YACfD,SAASG,IAAI,CAACF;YACdA,IAAIH,OAAOI,OAAO,CAACH,QAAQE,IAAI;QACjC;QACA,OAAOD;IACT;IAEA,MAAMA,WAAWH,gBAAgBV,OAAOO;IAExC,IAAIM,SAASI,MAAM,EAAE;QACnB,iDAAiD;QACjD,MAAMC,eAAe,IAAIC,OAAO,UAAU;QAE1C,KAAK,MAAMC,SAASP,SAAU;YAC5B,IAAI,CAACK,aAAaG,IAAI,CAACrB,KAAK,CAACoB,QAAQ,EAAE,GAAG;gBACxC,OAAO;YACT;QACF;IACF;IAEA,OAAO;AACT;AAEA,OAAO,MAAME,iCAAiC,CAC5CC,aAAyB,SAAS;IAElC,OAAOA,eAAe,YAAY,YAAY;AAChD,EAAE"}
@@ -8,19 +8,6 @@ export class BottomSheetController {
8
8
  sheetEl;
9
9
  constructor(sheetEl, { sheetScrollEl, sheetTransitionController, backdropTransitionController, onSnapPointChange, onDismiss }){
10
10
  this.sheetEl = sheetEl;
11
- this.isInitialized = false;
12
- this.panState = 'idle';
13
- this.pannedEl = null;
14
- this.sheetHeight = 0;
15
- this.rafId = null;
16
- this.currentSnapPoint = 0;
17
- this.nextSnapPoint = 0;
18
- this.snapPointDetents = [
19
- 0,
20
- 0
21
- ];
22
- this.unit = '%';
23
- this.disableVerticalScrollBouncingDispose = noop;
24
11
  this.onSnapPointChange = onSnapPointChange;
25
12
  this.onDismiss = onDismiss;
26
13
  this.panGestureRecognizer = new UIPanGestureRecognizer();
@@ -111,19 +98,22 @@ export class BottomSheetController {
111
98
  this.disableVerticalScrollBouncingDispose();
112
99
  this.disableVerticalScrollBouncingDispose = noop;
113
100
  }
114
- isInitialized;
115
- panState;
116
- pannedEl;
117
- sheetHeight;
118
- rafId;
119
- currentSnapPoint;
120
- nextSnapPoint;
121
- snapPointDetents;
122
- unit;
101
+ isInitialized = false;
102
+ panState = 'idle';
103
+ pannedEl = null;
104
+ sheetHeight = 0;
105
+ rafId = null;
106
+ currentSnapPoint = 0;
107
+ nextSnapPoint = 0;
108
+ snapPointDetents = [
109
+ 0,
110
+ 0
111
+ ];
112
+ unit = '%';
123
113
  get isDynamicSnapPoint() {
124
114
  return this.unit === 'px';
125
115
  }
126
- disableVerticalScrollBouncingDispose;
116
+ disableVerticalScrollBouncingDispose = noop;
127
117
  sheetScrollEl;
128
118
  sheetTransitionController;
129
119
  backdropTransitionController;