@vkontakte/vkui 7.3.7 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/dist/components/ActionSheet/ActionSheet.d.ts +1 -1
  2. package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  3. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  4. package/dist/components/AppRoot/ScrollContext.js +2 -2
  5. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  6. package/dist/components/Banner/Banner.d.ts +2 -2
  7. package/dist/components/Banner/Banner.d.ts.map +1 -1
  8. package/dist/components/Banner/Banner.js.map +1 -1
  9. package/dist/components/Button/Button.d.ts +2 -2
  10. package/dist/components/Button/Button.d.ts.map +1 -1
  11. package/dist/components/Button/Button.js.map +1 -1
  12. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  13. package/dist/components/Calendar/Calendar.js +9 -7
  14. package/dist/components/Calendar/Calendar.js.map +1 -1
  15. package/dist/components/CalendarRange/CalendarRange.d.ts +9 -2
  16. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  17. package/dist/components/CalendarRange/CalendarRange.js +48 -35
  18. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  19. package/dist/components/CalendarRange/types.d.ts +2 -0
  20. package/dist/components/CalendarRange/types.d.ts.map +1 -0
  21. package/dist/components/CalendarRange/types.js +3 -0
  22. package/dist/components/CalendarRange/types.js.map +1 -0
  23. package/dist/components/CalendarRange/utils.d.ts +29 -0
  24. package/dist/components/CalendarRange/utils.d.ts.map +1 -0
  25. package/dist/components/CalendarRange/utils.js +123 -0
  26. package/dist/components/CalendarRange/utils.js.map +1 -0
  27. package/dist/components/Checkbox/Checkbox.d.ts +2 -2
  28. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  29. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  30. package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  31. package/dist/components/ChipsInput/useChipsInput.js +21 -2
  32. package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
  33. package/dist/components/ChipsInputBase/types.d.ts +5 -1
  34. package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
  35. package/dist/components/ChipsInputBase/types.js.map +1 -1
  36. package/dist/components/Clickable/Clickable.d.ts +4 -0
  37. package/dist/components/Clickable/Clickable.d.ts.map +1 -1
  38. package/dist/components/Clickable/Clickable.js +9 -5
  39. package/dist/components/Clickable/Clickable.js.map +1 -1
  40. package/dist/components/Clickable/RealClickable.d.ts +1 -1
  41. package/dist/components/Clickable/RealClickable.d.ts.map +1 -1
  42. package/dist/components/Clickable/RealClickable.js +3 -2
  43. package/dist/components/Clickable/RealClickable.js.map +1 -1
  44. package/dist/components/ContentCard/ContentCard.d.ts +2 -2
  45. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
  46. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  47. package/dist/components/CustomSelect/CustomSelect.d.ts +4 -1
  48. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  49. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  50. package/dist/components/DateInput/DateInput.d.ts +1 -1
  51. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  52. package/dist/components/DateInput/DateInput.js +48 -50
  53. package/dist/components/DateInput/DateInput.js.map +1 -1
  54. package/dist/components/DateRangeInput/DateRangeInput.d.ts +22 -2
  55. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  56. package/dist/components/DateRangeInput/DateRangeInput.js +159 -66
  57. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  58. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  59. package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  60. package/dist/components/FocusTrap/FocusTrap.js +6 -3
  61. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  62. package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -2
  63. package/dist/components/HorizontalCell/HorizontalCell.d.ts.map +1 -1
  64. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  65. package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +2 -2
  66. package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts.map +1 -1
  67. package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
  68. package/dist/components/IconButton/IconButton.d.ts +2 -2
  69. package/dist/components/IconButton/IconButton.d.ts.map +1 -1
  70. package/dist/components/IconButton/IconButton.js.map +1 -1
  71. package/dist/components/InputLike/InputLike.d.ts +1 -1
  72. package/dist/components/InputLike/InputLike.d.ts.map +1 -1
  73. package/dist/components/InputLike/InputLike.js +7 -6
  74. package/dist/components/InputLike/InputLike.js.map +1 -1
  75. package/dist/components/Link/Link.d.ts +2 -2
  76. package/dist/components/Link/Link.d.ts.map +1 -1
  77. package/dist/components/Link/Link.js +2 -1
  78. package/dist/components/Link/Link.js.map +1 -1
  79. package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
  80. package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -8
  81. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  82. package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts +2 -2
  83. package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts.map +1 -1
  84. package/dist/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
  85. package/dist/components/NumberInputLike/NumberInputLike.d.ts +8 -0
  86. package/dist/components/NumberInputLike/NumberInputLike.d.ts.map +1 -0
  87. package/dist/components/NumberInputLike/NumberInputLike.js +45 -0
  88. package/dist/components/NumberInputLike/NumberInputLike.js.map +1 -0
  89. package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts +2 -2
  90. package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
  91. package/dist/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
  92. package/dist/components/PanelHeader/PanelHeader.d.ts +3 -1
  93. package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
  94. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  95. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts +2 -2
  96. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  97. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  98. package/dist/components/Radio/Radio.d.ts +2 -2
  99. package/dist/components/Radio/Radio.d.ts.map +1 -1
  100. package/dist/components/Radio/Radio.js.map +1 -1
  101. package/dist/components/Removable/Removable.d.ts +1 -4
  102. package/dist/components/Removable/Removable.d.ts.map +1 -1
  103. package/dist/components/Removable/Removable.js +39 -116
  104. package/dist/components/Removable/Removable.js.map +1 -1
  105. package/dist/components/Removable/RemovableIos.d.ts +10 -0
  106. package/dist/components/Removable/RemovableIos.d.ts.map +1 -0
  107. package/dist/components/Removable/RemovableIos.js +124 -0
  108. package/dist/components/Removable/RemovableIos.js.map +1 -0
  109. package/dist/components/RichCell/RichCell.d.ts +2 -2
  110. package/dist/components/RichCell/RichCell.d.ts.map +1 -1
  111. package/dist/components/RichCell/RichCell.js.map +1 -1
  112. package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  113. package/dist/components/ScreenSpinner/ScreenSpinner.js +4 -2
  114. package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  115. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +2 -2
  116. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  117. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js +4 -3
  118. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  119. package/dist/components/SelectionControl/SelectionControl.d.ts +2 -2
  120. package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
  121. package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
  122. package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
  123. package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  124. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  125. package/dist/components/Skeleton/Skeleton.d.ts +5 -1
  126. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
  127. package/dist/components/Skeleton/Skeleton.js +7 -4
  128. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  129. package/dist/components/Spinner/Spinner.d.ts +5 -1
  130. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  131. package/dist/components/Spinner/Spinner.js +6 -3
  132. package/dist/components/Spinner/Spinner.js.map +1 -1
  133. package/dist/components/SubnavigationButton/SubnavigationButton.d.ts +2 -2
  134. package/dist/components/SubnavigationButton/SubnavigationButton.d.ts.map +1 -1
  135. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  136. package/dist/components/Tabs/Tabs.d.ts +13 -9
  137. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  138. package/dist/components/Tabs/Tabs.js +14 -10
  139. package/dist/components/Tabs/Tabs.js.map +1 -1
  140. package/dist/components/Tabs/TabsController.d.ts +7 -0
  141. package/dist/components/Tabs/TabsController.d.ts.map +1 -0
  142. package/dist/components/Tabs/TabsController.js +19 -0
  143. package/dist/components/Tabs/TabsController.js.map +1 -0
  144. package/dist/components/Tabs/TabsModeContext.d.ts +13 -0
  145. package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -0
  146. package/dist/components/Tabs/TabsModeContext.js +11 -0
  147. package/dist/components/Tabs/TabsModeContext.js.map +1 -0
  148. package/dist/components/TabsItem/TabsItem.d.ts +3 -3
  149. package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
  150. package/dist/components/TabsItem/TabsItem.js +21 -6
  151. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  152. package/dist/components/Tappable/Tappable.d.ts +1 -0
  153. package/dist/components/Tappable/Tappable.d.ts.map +1 -1
  154. package/dist/components/Tappable/Tappable.js.map +1 -1
  155. package/dist/components/ToolButton/ToolButton.d.ts +2 -2
  156. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  157. package/dist/components/ToolButton/ToolButton.js.map +1 -1
  158. package/dist/components/UsersStack/UsersStack.d.ts +1 -1
  159. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  160. package/dist/components/View/ViewInfinite.js.map +1 -1
  161. package/dist/components.css +1 -1
  162. package/dist/components.css.map +1 -1
  163. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  164. package/dist/cssm/components/AppRoot/ScrollContext.js +2 -2
  165. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  166. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  167. package/dist/cssm/components/Button/Button.js.map +1 -1
  168. package/dist/cssm/components/Calendar/Calendar.js +9 -7
  169. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  170. package/dist/cssm/components/CalendarRange/CalendarRange.js +44 -31
  171. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  172. package/dist/cssm/components/CalendarRange/types.js +3 -0
  173. package/dist/cssm/components/CalendarRange/types.js.map +1 -0
  174. package/dist/cssm/components/CalendarRange/utils.js +122 -0
  175. package/dist/cssm/components/CalendarRange/utils.js.map +1 -0
  176. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  177. package/dist/cssm/components/ChipsInput/useChipsInput.js +21 -2
  178. package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
  179. package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
  180. package/dist/cssm/components/Clickable/Clickable.js +4 -3
  181. package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
  182. package/dist/cssm/components/Clickable/RealClickable.js +1 -1
  183. package/dist/cssm/components/Clickable/RealClickable.js.map +1 -1
  184. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  185. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  186. package/dist/cssm/components/DateInput/DateInput.js +45 -46
  187. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  188. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +148 -58
  189. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  190. package/dist/cssm/components/FocusTrap/FocusTrap.js +4 -2
  191. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  192. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  193. package/dist/cssm/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
  194. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  195. package/dist/cssm/components/InputLike/InputLike.js +3 -3
  196. package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
  197. package/dist/cssm/components/Link/Link.js +1 -0
  198. package/dist/cssm/components/Link/Link.js.map +1 -1
  199. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -8
  200. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  201. package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
  202. package/dist/cssm/components/NumberInputLike/NumberInputLike.js +33 -0
  203. package/dist/cssm/components/NumberInputLike/NumberInputLike.js.map +1 -0
  204. package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
  205. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  206. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  207. package/dist/cssm/components/Radio/Radio.js.map +1 -1
  208. package/dist/cssm/components/Removable/Removable.js +39 -115
  209. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  210. package/dist/cssm/components/Removable/Removable.module.css +9 -0
  211. package/dist/cssm/components/Removable/RemovableIos.js +118 -0
  212. package/dist/cssm/components/Removable/RemovableIos.js.map +1 -0
  213. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  214. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -1
  215. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  216. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js +3 -2
  217. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  218. package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
  219. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  220. package/dist/cssm/components/Skeleton/Skeleton.js +6 -3
  221. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  222. package/dist/cssm/components/Spinner/Spinner.js +5 -2
  223. package/dist/cssm/components/Spinner/Spinner.js.map +1 -1
  224. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  225. package/dist/cssm/components/Tabs/Tabs.js +10 -9
  226. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  227. package/dist/cssm/components/Tabs/TabsController.js +19 -0
  228. package/dist/cssm/components/Tabs/TabsController.js.map +1 -0
  229. package/dist/cssm/components/Tabs/TabsModeContext.js +11 -0
  230. package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -0
  231. package/dist/cssm/components/TabsItem/TabsItem.js +17 -4
  232. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  233. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  234. package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
  235. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  236. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  237. package/dist/cssm/hooks/useCalendar.js +0 -10
  238. package/dist/cssm/hooks/useCalendar.js.map +1 -1
  239. package/dist/cssm/hooks/useDateInput.js +28 -17
  240. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  241. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  242. package/dist/cssm/hooks/useExternRef.js.map +1 -1
  243. package/dist/cssm/hooks/useFocusTrap.js +2 -2
  244. package/dist/cssm/hooks/useFocusTrap.js.map +1 -1
  245. package/dist/cssm/hooks/useMutationObserver.js +6 -5
  246. package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
  247. package/dist/cssm/index.js +1 -0
  248. package/dist/cssm/index.js.map +1 -1
  249. package/dist/cssm/lib/dom.js +7 -1
  250. package/dist/cssm/lib/dom.js.map +1 -1
  251. package/dist/cssm/lib/floating/customResizeObserver.js.map +1 -1
  252. package/dist/cssm/lib/floating/index.js.map +1 -1
  253. package/dist/cssm/lib/floating/types/common.js.map +1 -1
  254. package/dist/cssm/lib/object.js +12 -0
  255. package/dist/cssm/lib/object.js.map +1 -1
  256. package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -1
  257. package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
  258. package/dist/cssm/styles/animationVisibilityDelay.js +10 -0
  259. package/dist/cssm/styles/animationVisibilityDelay.js.map +1 -0
  260. package/dist/cssm/styles/animationVisibilityDelay.module.css +13 -0
  261. package/dist/cssm/styles/themes.css +4 -2
  262. package/dist/hooks/useCalendar.d.ts +0 -3
  263. package/dist/hooks/useCalendar.d.ts.map +1 -1
  264. package/dist/hooks/useCalendar.js +0 -10
  265. package/dist/hooks/useCalendar.js.map +1 -1
  266. package/dist/hooks/useDateInput.d.ts.map +1 -1
  267. package/dist/hooks/useDateInput.js +29 -18
  268. package/dist/hooks/useDateInput.js.map +1 -1
  269. package/dist/hooks/useEventListener.js.map +1 -1
  270. package/dist/hooks/useExternRef.js.map +1 -1
  271. package/dist/hooks/useFocusTrap.d.ts +5 -1
  272. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  273. package/dist/hooks/useFocusTrap.js +2 -2
  274. package/dist/hooks/useFocusTrap.js.map +1 -1
  275. package/dist/hooks/useMutationObserver.d.ts +2 -1
  276. package/dist/hooks/useMutationObserver.d.ts.map +1 -1
  277. package/dist/hooks/useMutationObserver.js +6 -5
  278. package/dist/hooks/useMutationObserver.js.map +1 -1
  279. package/dist/index.d.ts +2 -0
  280. package/dist/index.d.ts.map +1 -1
  281. package/dist/index.js +1 -0
  282. package/dist/index.js.map +1 -1
  283. package/dist/lib/dom.d.ts.map +1 -1
  284. package/dist/lib/dom.js +7 -1
  285. package/dist/lib/dom.js.map +1 -1
  286. package/dist/lib/floating/customResizeObserver.js.map +1 -1
  287. package/dist/lib/floating/index.d.ts +1 -1
  288. package/dist/lib/floating/index.d.ts.map +1 -1
  289. package/dist/lib/floating/index.js.map +1 -1
  290. package/dist/lib/floating/types/common.d.ts +1 -1
  291. package/dist/lib/floating/types/common.d.ts.map +1 -1
  292. package/dist/lib/floating/types/common.js.map +1 -1
  293. package/dist/lib/object.d.ts +1 -0
  294. package/dist/lib/object.d.ts.map +1 -1
  295. package/dist/lib/object.js +12 -0
  296. package/dist/lib/object.js.map +1 -1
  297. package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -1
  298. package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
  299. package/dist/styles/animationVisibilityDelay.d.ts +3 -0
  300. package/dist/styles/animationVisibilityDelay.d.ts.map +1 -0
  301. package/dist/styles/animationVisibilityDelay.js +10 -0
  302. package/dist/styles/animationVisibilityDelay.js.map +1 -0
  303. package/dist/vkui.css +1 -1
  304. package/dist/vkui.css.map +1 -1
  305. package/package.json +3 -6
  306. package/src/components/ActionSheet/ActionSheet.tsx +4 -1
  307. package/src/components/AppRoot/AppRoot.mdx +1 -1
  308. package/src/components/AppRoot/ScrollContext.tsx +2 -2
  309. package/src/components/Banner/Banner.tsx +2 -2
  310. package/src/components/Button/Button.tsx +2 -2
  311. package/src/components/Calendar/Calendar.tsx +8 -7
  312. package/src/components/CalendarRange/CalendarRange.tsx +65 -42
  313. package/src/components/CalendarRange/types.ts +1 -0
  314. package/src/components/CalendarRange/utils.ts +190 -0
  315. package/src/components/Checkbox/Checkbox.tsx +2 -2
  316. package/src/components/ChipsInput/useChipsInput.ts +23 -2
  317. package/src/components/ChipsInputBase/types.ts +5 -1
  318. package/src/components/Clickable/Clickable.tsx +12 -4
  319. package/src/components/Clickable/RealClickable.tsx +1 -0
  320. package/src/components/ContentCard/ContentCard.tsx +2 -2
  321. package/src/components/CustomSelect/CustomSelect.tsx +11 -7
  322. package/src/components/DateInput/DateInput.tsx +41 -43
  323. package/src/components/DateRangeInput/DateRangeInput.tsx +183 -65
  324. package/src/components/FocusTrap/FocusTrap.tsx +3 -0
  325. package/src/components/FormItem/FormItemTop/FormItemTop.mdx +1 -1
  326. package/src/components/HorizontalCell/HorizontalCell.tsx +2 -2
  327. package/src/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.tsx +2 -2
  328. package/src/components/IconButton/IconButton.tsx +2 -2
  329. package/src/components/InputLike/InputLike.tsx +4 -3
  330. package/src/components/Link/Link.tsx +3 -2
  331. package/src/components/MiniInfoCell/MiniInfoCell.tsx +2 -7
  332. package/src/components/ModalOutsideButton/ModalOutsideButton.tsx +2 -2
  333. package/src/components/NumberInputLike/NumberInputLike.tsx +56 -0
  334. package/src/components/Pagination/PaginationPage/PaginationPageButton.tsx +2 -2
  335. package/src/components/PanelHeader/PanelHeader.tsx +3 -1
  336. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +2 -2
  337. package/src/components/Radio/Radio.tsx +2 -2
  338. package/src/components/Removable/Removable.module.css +9 -0
  339. package/src/components/Removable/Removable.module.css.d.ts.map +1 -1
  340. package/src/components/Removable/Removable.tsx +50 -120
  341. package/src/components/Removable/RemovableIos.tsx +135 -0
  342. package/src/components/RichCell/RichCell.tsx +2 -2
  343. package/src/components/ScreenSpinner/ScreenSpinner.tsx +8 -1
  344. package/src/components/ScreenSpinner/ScreenSpinnerContainer.tsx +4 -1
  345. package/src/components/SelectionControl/SelectionControl.tsx +2 -2
  346. package/src/components/SimpleCell/SimpleCell.tsx +2 -2
  347. package/src/components/Skeleton/Skeleton.tsx +15 -2
  348. package/src/components/Spinner/Spinner.tsx +13 -1
  349. package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -2
  350. package/src/components/Tabs/Tabs.tsx +23 -19
  351. package/src/components/Tabs/TabsController.ts +37 -0
  352. package/src/components/Tabs/TabsModeContext.ts +24 -0
  353. package/src/components/TabsItem/TabsItem.tsx +22 -5
  354. package/src/components/Tappable/Tappable.tsx +5 -0
  355. package/src/components/ToolButton/ToolButton.tsx +2 -2
  356. package/src/components/UnstyledTextField/UnstyledTextField.mdx +1 -1
  357. package/src/components/UsersStack/UsersStack.tsx +1 -1
  358. package/src/hooks/useCalendar.ts +0 -12
  359. package/src/hooks/useDateInput.ts +21 -12
  360. package/src/hooks/useFocusTrap.ts +10 -1
  361. package/src/hooks/useMutationObserver.ts +7 -4
  362. package/src/index.ts +2 -0
  363. package/src/lib/dom.tsx +7 -1
  364. package/src/lib/floating/index.ts +2 -0
  365. package/src/lib/floating/types/common.ts +2 -0
  366. package/src/lib/object.ts +19 -0
  367. package/src/styles/animationVisibilityDelay.module.css +13 -0
  368. package/src/styles/animationVisibilityDelay.module.css.d.ts.map +1 -0
  369. package/src/styles/animationVisibilityDelay.ts +13 -0
@@ -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 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","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","records","target","appendChild","iframe","contentWindow","addEventListener","updateFunction","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","mutationObserverFallback","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","constructor","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;IAYXC,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,CAACC,OAAO,CAAE;YAC/BD,OAAOE,MAAM,CAACC,WAAW,CAACH,OAAOI,MAAM;QACzC;QAEA,KAAK,IAAIJ,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/B,IAAID,OAAOI,MAAM,CAACC,aAAa,EAAE;gBAC/BL,OAAOI,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACC,cAAc;YAC5E;QACF;IACF;IAEAV,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMS,SAAST,QAAQa,aAAa,CAACC,aAAa,CAAC;QACnDL,OAAOM,UAAU,GAAG;QACpBN,OAAOO,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACT,OAAOU,KAAK,EAAE/B;QAE5B,IAAI,CAACkB,OAAO,CAACc,IAAI,CAAC;YAAEb,QAAQP;YAASS;QAAO;IAC9C;IAEAN,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACqB,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIC,iBAAiB,IAAI,CAACV,cAAc;QAC1E;QAEA,IAAI,CAACS,wBAAwB,CAACtB,OAAO,CAACC,SAAS;YAC7CuB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAACnB,OAAO,CAACoB,GAAG,CAAC,CAAC,EAAEnB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACiB,mBAAmB,CAAC,UAAU,IAAI,CAACf,cAAc;YACxE;YAEAL,OAAOqB,WAAW,CAACnB;QACrB;QACA,IAAI,CAACH,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACe,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAACI,UAAU;QAC1C;QACA,IAAI,CAACJ,wBAAwB,GAAG;IAClC;IAzDAQ,YAAYjB,cAA0B,CAAE;QAPxCN,uBAAAA,WAGK,EAAE;QACPe,uBAAAA,4BAAoD;QACpD,uBAAiBT,kBAAjB,KAAA;QAGE,IAAI,CAACA,cAAc,GAAGA;IACxB;AAwDF;AAEA,SAASX,aAAaD,OAAoB;IACxC,OAAO8B,iBAAiB9B,SAASX,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","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","records","target","appendChild","iframe","contentWindow","addEventListener","updateFunction","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","mutationObserverFallback","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;IAYXC,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,CAACC,OAAO,CAAE;YAC/BD,OAAOE,MAAM,CAACC,WAAW,CAACH,OAAOI,MAAM;QACzC;QAEA,KAAK,IAAIJ,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/B,IAAID,OAAOI,MAAM,CAACC,aAAa,EAAE;gBAC/BL,OAAOI,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACC,cAAc;YAC5E;QACF;IACF;IAEAV,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMS,SAAST,QAAQa,aAAa,CAACC,aAAa,CAAC;QACnDL,OAAOM,UAAU,GAAG;QACpBN,OAAOO,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACT,OAAOU,KAAK,EAAE/B;QAE5B,IAAI,CAACkB,OAAO,CAACc,IAAI,CAAC;YAAEb,QAAQP;YAASS;QAAO;IAC9C;IAEAN,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACqB,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIC,iBAAiB,IAAI,CAACV,cAAc;QAC1E;QAEA,IAAI,CAACS,wBAAwB,CAACtB,OAAO,CAACC,SAAS;YAC7CuB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAACnB,OAAO,CAACoB,GAAG,CAAC,CAAC,EAAEnB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACiB,mBAAmB,CAAC,UAAU,IAAI,CAACf,cAAc;YACxE;YAEAL,OAAOqB,WAAW,CAACnB;QACrB;QACA,IAAI,CAACH,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACe,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAACI,UAAU;QAC1C;QACA,IAAI,CAACJ,wBAAwB,GAAG;IAClC;IAzDA,YAAYT,cAA0B,CAAE;QAPxCN,uBAAAA,WAGK,EAAE;QACPe,uBAAAA,4BAAoD;QACpD,uBAAiBT,kBAAjB,KAAA;QAGE,IAAI,CAACA,cAAc,GAAGA;IACxB;AAwDF;AAEA,SAASX,aAAaD,OAAoB;IACxC,OAAO6B,iBAAiB7B,SAASX,QAAQ,KAAK;AAChD"}
@@ -1,4 +1,4 @@
1
- export type { UseFloatingOptions, Placement, VirtualElement, PlacementWithAuto, AutoPlacementType, UseFloatingMiddleware, OnPlacementChange, } from './types/common';
1
+ export type { UseFloatingOptions, Placement, Side, Alignment, VirtualElement, PlacementWithAuto, AutoPlacementType, UseFloatingMiddleware, OnPlacementChange, } from './types/common';
2
2
  export type { FloatingComponentProps, FloatingContentRenderProp } from './types/component';
3
3
  export { checkIsNotAutoPlacement, getAutoPlacementAlign, convertFloatingDataToReactCSSProperties, getArrowCoordsByMiddlewareData, } from './functions';
4
4
  export { useFloating, offsetMiddleware, flipMiddleware, shiftMiddleware, autoPlacementMiddleware, arrowMiddleware, sizeMiddleware, hideMiddleware, getOverflowAncestors, autoUpdateFloatingElement, } from './adapters';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/floating/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uCAAuC,EACvC,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,sCAAsC,EAC3C,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,cAAc,+BAA+B,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/floating/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uCAAuC,EACvC,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,sCAAsC,EAC3C,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,cAAc,+BAA+B,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/floating/index.ts"],"sourcesContent":["export type {\n UseFloatingOptions,\n Placement,\n VirtualElement,\n PlacementWithAuto,\n AutoPlacementType,\n UseFloatingMiddleware,\n OnPlacementChange,\n} from './types/common';\n\nexport type { FloatingComponentProps, FloatingContentRenderProp } from './types/component';\n\nexport {\n checkIsNotAutoPlacement,\n getAutoPlacementAlign,\n convertFloatingDataToReactCSSProperties,\n getArrowCoordsByMiddlewareData,\n} from './functions';\n\nexport {\n useFloating,\n offsetMiddleware,\n flipMiddleware,\n shiftMiddleware,\n autoPlacementMiddleware,\n arrowMiddleware,\n sizeMiddleware,\n hideMiddleware,\n getOverflowAncestors,\n autoUpdateFloatingElement,\n} from './adapters';\n\nexport {\n type UseFloatingMiddlewaresBootstrapOptions,\n useFloatingMiddlewaresBootstrap,\n} from './useFloatingMiddlewaresBootstrap';\n\nexport * from './useFloatingWithInteractions';\n\nexport { usePlacementChangeCallback } from './usePlacementChangeCallback';\n"],"names":["checkIsNotAutoPlacement","getAutoPlacementAlign","convertFloatingDataToReactCSSProperties","getArrowCoordsByMiddlewareData","useFloating","offsetMiddleware","flipMiddleware","shiftMiddleware","autoPlacementMiddleware","arrowMiddleware","sizeMiddleware","hideMiddleware","getOverflowAncestors","autoUpdateFloatingElement","useFloatingMiddlewaresBootstrap","usePlacementChangeCallback"],"mappings":"AAYA,SACEA,uBAAuB,EACvBC,qBAAqB,EACrBC,uCAAuC,EACvCC,8BAA8B,QACzB,iBAAc;AAErB,SACEC,WAAW,EACXC,gBAAgB,EAChBC,cAAc,EACdC,eAAe,EACfC,uBAAuB,EACvBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,oBAAoB,EACpBC,yBAAyB,QACpB,gBAAa;AAEpB,SAEEC,+BAA+B,QAC1B,6CAAoC;AAE3C,cAAc,yCAAgC;AAE9C,SAASC,0BAA0B,QAAQ,kCAA+B"}
1
+ {"version":3,"sources":["../../../src/lib/floating/index.ts"],"sourcesContent":["export type {\n UseFloatingOptions,\n Placement,\n Side,\n Alignment,\n VirtualElement,\n PlacementWithAuto,\n AutoPlacementType,\n UseFloatingMiddleware,\n OnPlacementChange,\n} from './types/common';\n\nexport type { FloatingComponentProps, FloatingContentRenderProp } from './types/component';\n\nexport {\n checkIsNotAutoPlacement,\n getAutoPlacementAlign,\n convertFloatingDataToReactCSSProperties,\n getArrowCoordsByMiddlewareData,\n} from './functions';\n\nexport {\n useFloating,\n offsetMiddleware,\n flipMiddleware,\n shiftMiddleware,\n autoPlacementMiddleware,\n arrowMiddleware,\n sizeMiddleware,\n hideMiddleware,\n getOverflowAncestors,\n autoUpdateFloatingElement,\n} from './adapters';\n\nexport {\n type UseFloatingMiddlewaresBootstrapOptions,\n useFloatingMiddlewaresBootstrap,\n} from './useFloatingMiddlewaresBootstrap';\n\nexport * from './useFloatingWithInteractions';\n\nexport { usePlacementChangeCallback } from './usePlacementChangeCallback';\n"],"names":["checkIsNotAutoPlacement","getAutoPlacementAlign","convertFloatingDataToReactCSSProperties","getArrowCoordsByMiddlewareData","useFloating","offsetMiddleware","flipMiddleware","shiftMiddleware","autoPlacementMiddleware","arrowMiddleware","sizeMiddleware","hideMiddleware","getOverflowAncestors","autoUpdateFloatingElement","useFloatingMiddlewaresBootstrap","usePlacementChangeCallback"],"mappings":"AAcA,SACEA,uBAAuB,EACvBC,qBAAqB,EACrBC,uCAAuC,EACvCC,8BAA8B,QACzB,iBAAc;AAErB,SACEC,WAAW,EACXC,gBAAgB,EAChBC,cAAc,EACdC,eAAe,EACfC,uBAAuB,EACvBC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,oBAAoB,EACpBC,yBAAyB,QACpB,gBAAa;AAEpB,SAEEC,+BAA+B,QAC1B,6CAAoC;AAE3C,cAAc,yCAAgC;AAE9C,SAASC,0BAA0B,QAAQ,kCAA+B"}
@@ -1,7 +1,7 @@
1
1
  import type { Placement, ReferenceType, UseFloatingReturn } from '@vkontakte/vkui-floating-ui/react-dom';
2
2
  export type AutoPlacementType = 'auto' | 'auto-start' | 'auto-end';
3
3
  export type PlacementWithAuto = AutoPlacementType | Placement;
4
- export type { VirtualElement, UseFloatingOptions, ReferenceType, ArrowOptions, UseFloatingReturn, Placement, Middleware as UseFloatingMiddleware, UseFloatingData, Strategy as FloatingPositionStrategy, } from '@vkontakte/vkui-floating-ui/react-dom';
4
+ export type { VirtualElement, UseFloatingOptions, ReferenceType, ArrowOptions, UseFloatingReturn, Placement, Side, Alignment, Middleware as UseFloatingMiddleware, UseFloatingData, Strategy as FloatingPositionStrategy, } from '@vkontakte/vkui-floating-ui/react-dom';
5
5
  export type UseFloatingRefs<RT extends ReferenceType = ReferenceType> = UseFloatingReturn<RT>['refs'];
6
6
  export type OnPlacementChange = (nextPlacement: Placement) => void;
7
7
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE9D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,UAAU,IAAI,qBAAqB,EACnC,eAAe,EACf,QAAQ,IAAI,wBAAwB,GACrC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,aAAa,GAAG,aAAa,IAClE,iBAAiB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK,IAAI,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE9D,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,IAAI,qBAAqB,EACnC,eAAe,EACf,QAAQ,IAAI,wBAAwB,GACrC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,aAAa,GAAG,aAAa,IAClE,iBAAiB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/types/common.ts"],"sourcesContent":["import type {\n Placement,\n ReferenceType,\n UseFloatingReturn,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type AutoPlacementType = 'auto' | 'auto-start' | 'auto-end';\n\nexport type PlacementWithAuto = AutoPlacementType | Placement;\n\nexport type {\n VirtualElement,\n UseFloatingOptions,\n ReferenceType,\n ArrowOptions,\n UseFloatingReturn,\n Placement,\n Middleware as UseFloatingMiddleware,\n UseFloatingData,\n Strategy as FloatingPositionStrategy,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type UseFloatingRefs<RT extends ReferenceType = ReferenceType> =\n UseFloatingReturn<RT>['refs'];\n\nexport type OnPlacementChange = (nextPlacement: Placement) => void;\n"],"names":[],"mappings":"AAyBA,WAAmE"}
1
+ {"version":3,"sources":["../../../../src/lib/floating/types/common.ts"],"sourcesContent":["import type {\n Placement,\n ReferenceType,\n UseFloatingReturn,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type AutoPlacementType = 'auto' | 'auto-start' | 'auto-end';\n\nexport type PlacementWithAuto = AutoPlacementType | Placement;\n\nexport type {\n VirtualElement,\n UseFloatingOptions,\n ReferenceType,\n ArrowOptions,\n UseFloatingReturn,\n Placement,\n Side,\n Alignment,\n Middleware as UseFloatingMiddleware,\n UseFloatingData,\n Strategy as FloatingPositionStrategy,\n} from '@vkontakte/vkui-floating-ui/react-dom';\n\nexport type UseFloatingRefs<RT extends ReferenceType = ReferenceType> =\n UseFloatingReturn<RT>['refs'];\n\nexport type OnPlacementChange = (nextPlacement: Placement) => void;\n"],"names":[],"mappings":"AA2BA,WAAmE"}
@@ -1,2 +1,3 @@
1
1
  export declare function mapObject<T extends Object, R extends Record<keyof T, any>>(object: T, map: (value: T[keyof T], key: keyof T) => R[keyof T]): R;
2
+ export declare function filterObject<T extends Object, R extends Record<keyof T, any>>(object: T, filter: (value: T[keyof T], key: keyof T) => boolean): R;
2
3
  //# sourceMappingURL=object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/lib/object.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EACxE,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GACnD,CAAC,CASH"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/lib/object.ts"],"names":[],"mappings":"AACA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EACxE,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GACnD,CAAC,CASH;AAGD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAC3E,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,OAAO,GACnD,CAAC,CAaH"}
@@ -5,5 +5,17 @@ export function mapObject(object, map) {
5
5
  }), // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter
6
6
  {});
7
7
  }
8
+ // eslint-disable-next-line @typescript-eslint/ban-types
9
+ export function filterObject(object, filter) {
10
+ return Object.entries(object).reduce((acc, [key, value])=>{
11
+ if (filter(value, key)) {
12
+ Object.assign(acc, {
13
+ [key]: value
14
+ });
15
+ }
16
+ return acc;
17
+ }, // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/prefer-reduce-type-parameter
18
+ {});
19
+ }
8
20
 
9
21
  //# sourceMappingURL=object.js.map
@@ -1 +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
+ {"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\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function filterObject<T extends Object, R extends Record<keyof T, any>>(\n object: T,\n filter: (value: T[keyof T], key: keyof T) => boolean,\n): R {\n return Object.entries(object).reduce(\n (acc, [key, value]) => {\n if (filter(value, key as keyof T)) {\n Object.assign(acc, {\n [key]: value,\n });\n }\n return acc;\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","filterObject","filter"],"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;AAEA,wDAAwD;AACxD,OAAO,SAASG,aACdT,MAAS,EACTU,MAAoD;IAEpD,OAAOR,OAAOC,OAAO,CAACH,QAAQI,MAAM,CAClC,CAACC,KAAK,CAACC,KAAKC,MAAM;QAChB,IAAIG,OAAOH,OAAOD,MAAiB;YACjCJ,OAAOM,MAAM,CAACH,KAAK;gBACjB,CAACC,IAAI,EAAEC;YACT;QACF;QACA,OAAOF;IACT,GACA,0HAA0H;IAC1H,CAAC;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/sheet/controllers/BottomSheetController.ts"],"sourcesContent":["import { noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../../helpers/math';\nimport { rubberbandIfOutOfBounds } from '../../animation';\nimport { getNearestOverflowAncestor, hasSelectionWithRangeType } from '../../dom';\nimport { UIPanGestureRecognizer } from '../../touch/UIPanGestureRecognizer';\nimport {\n BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY,\n DRAG_THRESHOLDS,\n DYNAMIC_SNAP_POINT_DATA,\n SNAP_POINT_DETENTS,\n} from '../constants';\nimport type { CSSTransitionController } from './CSSTransitionController';\n\nexport type SnapPointDetents = [number, number] | [number, number, number];\n\nexport type SnapPoint = 'auto' | { initial: number; detents: SnapPointDetents };\n\nexport type SnapPointChange = (snapPoint: number) => void;\n\nexport type BottomSheetControllerOptions = {\n sheetScrollEl: HTMLElement | null;\n sheetTransitionController: CSSTransitionController<string>;\n backdropTransitionController: CSSTransitionController | null;\n onSnapPointChange: SnapPointChange;\n onDismiss: VoidFunction;\n};\n\nexport class BottomSheetController {\n private readonly sheetEl: HTMLElement;\n\n constructor(\n sheetEl: HTMLElement,\n {\n sheetScrollEl,\n sheetTransitionController,\n backdropTransitionController,\n onSnapPointChange,\n onDismiss,\n }: BottomSheetControllerOptions,\n ) {\n this.sheetEl = sheetEl;\n this.onSnapPointChange = onSnapPointChange;\n this.onDismiss = onDismiss;\n this.panGestureRecognizer = new UIPanGestureRecognizer();\n this.sheetScrollEl = sheetScrollEl;\n this.sheetTransitionController = sheetTransitionController;\n this.backdropTransitionController = backdropTransitionController;\n }\n\n init(snapPoint: SnapPoint) {\n this.isInitialized = true;\n\n if (snapPoint === 'auto') {\n this.unit = 'px';\n this.currentSnapPoint = DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE;\n this.snapPointDetents = [SNAP_POINT_DETENTS.MIN, DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE];\n } else {\n this.unit = '%';\n this.currentSnapPoint = snapPoint.initial;\n this.snapPointDetents = snapPoint.detents;\n }\n }\n\n destroy() {\n this.isInitialized = false;\n this.pannedEl = null;\n this.sheetTransitionController.cleanup();\n this.backdropTransitionController?.cleanup();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n panStart(event: UIEvent) {\n if (\n !this.isInitialized ||\n this.panState !== 'idle' ||\n hasSelectionWithRangeType(event.target)\n ) {\n return;\n }\n\n this.panState = 'start';\n this.pannedEl = event.target as HTMLElement;\n this.panGestureRecognizer.setStartCoords(event);\n }\n\n panMove(event: UIEvent) {\n switch (this.panState) {\n case 'start':\n this.panGestureRecognizer.setInitialTimeOnce();\n this.panGestureRecognizer.setEndCoords(event);\n\n if (this.preventUntilPanGestureBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfPannedElIsNotValid()) {\n this.panState = 'idle';\n return;\n }\n\n if (this.preventUntilVerticalScrollingOnSheetScrollElBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled()) {\n this.panState = 'idle';\n return;\n }\n\n this.panState = 'moving';\n this.panGestureRecognizer.setStartCoords(event);\n\n this.sheetHeight = this.sheetEl.offsetHeight;\n\n this.disableVerticalScrollBouncingDispose =\n BottomSheetController.disableVerticalScrollBouncingIfNeeded(\n this.sheetScrollEl,\n this.pannedEl,\n );\n\n if (this.isDynamicSnapPoint) {\n this.currentSnapPoint = this.sheetHeight;\n this.snapPointDetents[DYNAMIC_SNAP_POINT_DATA.COMPUTED_INDEX] = this.sheetHeight;\n }\n break;\n case 'moving':\n this.panGestureRecognizer.setEndCoords(event);\n\n const { y1, y2 } = this.panGestureRecognizer;\n\n this.nextSnapPoint = rubberbandIfOutOfBounds(\n this.currentSnapPoint - ((y2 - y1) / this.sheetHeight) * this.currentSnapPoint,\n SNAP_POINT_DETENTS.MIN,\n this.isDynamicSnapPoint ? this.sheetHeight : SNAP_POINT_DETENTS.LARGE,\n );\n\n this.calculateSnapPoint(this.nextSnapPoint, true);\n break;\n }\n }\n\n panEnd() {\n switch (this.panState) {\n case 'moving':\n const prevCurrentSnapPoint = this.currentSnapPoint;\n this.currentSnapPoint = this.getSnapPointTo(this.nextSnapPoint);\n\n if (\n prevCurrentSnapPoint !== this.currentSnapPoint &&\n this.currentSnapPoint > SNAP_POINT_DETENTS.MIN\n ) {\n this.onSnapPointChange(this.currentSnapPoint);\n }\n\n this.calculateSnapPoint(this.currentSnapPoint);\n break;\n }\n\n this.panState = 'idle';\n this.panGestureRecognizer.reset();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n private isInitialized = false;\n private panState: 'idle' | 'start' | 'moving' = 'idle';\n private pannedEl: HTMLElement | null = null;\n private sheetHeight = 0;\n private rafId: number | null = null;\n private currentSnapPoint = 0;\n private nextSnapPoint = 0;\n private snapPointDetents: SnapPointDetents = [0, 0];\n private unit: 'px' | '%' = '%';\n private get isDynamicSnapPoint() {\n return this.unit === 'px';\n }\n private disableVerticalScrollBouncingDispose = noop;\n private readonly sheetScrollEl: HTMLElement | null;\n private readonly sheetTransitionController: CSSTransitionController<string>;\n private readonly backdropTransitionController: CSSTransitionController | null;\n private readonly panGestureRecognizer: UIPanGestureRecognizer;\n private readonly onSnapPointChange: SnapPointChange;\n private readonly onDismiss: VoidFunction;\n\n private calculateSnapPoint(nextSnapPoint: number, immediately = false) {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n\n if (nextSnapPoint <= SNAP_POINT_DETENTS.MIN) {\n this.sheetTransitionController.enableTransition();\n this.backdropTransitionController?.enableTransition();\n this.panState = 'idle';\n this.onDismiss();\n return;\n }\n\n const backdropOpacity = clamp(\n this.isDynamicSnapPoint\n ? nextSnapPoint / this.sheetHeight\n : (nextSnapPoint * 2) / SNAP_POINT_DETENTS.LARGE,\n 0,\n 1,\n );\n\n this.rafId = requestAnimationFrame(() => {\n if (immediately) {\n this.backdropTransitionController?.disableTransition().set(backdropOpacity);\n this.sheetTransitionController.disableTransition().set(`${nextSnapPoint}${this.unit}`);\n return;\n }\n\n if (this.isDynamicSnapPoint) {\n this.sheetTransitionController.cleanupOnTransitionEnd();\n }\n\n this.backdropTransitionController?.unset();\n this.sheetTransitionController.enableTransition().set(`${this.currentSnapPoint}${this.unit}`);\n });\n }\n\n private getSnapPointTo(nextSnapPoint: number) {\n const closestSnapPoint = BottomSheetController.getClosestSnapPoint(\n this.snapPointDetents,\n nextSnapPoint,\n );\n if (closestSnapPoint !== this.currentSnapPoint) {\n return closestSnapPoint;\n }\n\n const panDirection = this.panGestureRecognizer.direction();\n if (panDirection.axis !== 'y' || panDirection.direction === null) {\n return this.currentSnapPoint;\n }\n\n const velocity = this.panGestureRecognizer.velocity();\n if (Math.abs(velocity.y) < DRAG_THRESHOLDS.VELOCITY) {\n return this.currentSnapPoint;\n }\n\n const closestSnapPointByDirection = BottomSheetController.getClosestSnapPointByDirection(\n this.snapPointDetents,\n closestSnapPoint,\n panDirection.direction,\n );\n\n return closestSnapPointByDirection;\n }\n\n private preventUntilPanGestureBecomesExpected() {\n return (\n this.panGestureRecognizer.direction().axis === 'x' ||\n this.panGestureRecognizer.distance() < DRAG_THRESHOLDS.DISTANCE_FOR_MOVING_START\n );\n }\n\n private preventImmediatelyIfPannedElIsNotValid() {\n return (\n this.pannedEl === null ||\n // Элемент со специальным атрибутом\n this.pannedEl.closest(`[${BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY}=true]`) !== null || // eslint-disable-line no-restricted-properties\n // Элемент за пределами панели.\n !this.sheetEl.contains(this.pannedEl)\n );\n }\n\n private preventUntilVerticalScrollingOnSheetScrollElBecomesExpected() {\n if (\n this.sheetScrollEl === null ||\n !this.sheetScrollEl.contains(this.pannedEl) ||\n this.sheetScrollEl.scrollHeight <= this.sheetScrollEl.clientHeight\n ) {\n return false;\n }\n\n if (this.sheetScrollEl.scrollTop === 0) {\n return (\n this.panGestureRecognizer.direction().direction === -1 &&\n BottomSheetController.isLastSnapPointDetents(this.snapPointDetents, this.currentSnapPoint)\n );\n }\n\n return true;\n }\n\n private preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled() {\n if (\n /* istanbul ignore next: покрываем TypeScript */\n this.pannedEl === null ||\n this.pannedEl === this.sheetEl ||\n this.pannedEl === this.sheetScrollEl\n ) {\n return false;\n }\n\n const overflowAncestor = getNearestOverflowAncestor(this.pannedEl, this.sheetEl);\n\n if (\n overflowAncestor === null ||\n this.sheetScrollEl === overflowAncestor ||\n overflowAncestor.scrollHeight <= overflowAncestor.clientHeight\n ) {\n return false;\n }\n\n return (\n overflowAncestor.scrollTop !== 0 || this.panGestureRecognizer.direction().direction === -1\n );\n }\n\n private static disableVerticalScrollBouncingIfNeeded(\n sheetScrollEl: HTMLElement | null,\n targetEl: HTMLElement | null,\n ) {\n if (\n sheetScrollEl !== null &&\n sheetScrollEl.scrollTop <= 0 &&\n sheetScrollEl.contains(targetEl) &&\n sheetScrollEl.scrollHeight > sheetScrollEl.clientHeight\n ) {\n sheetScrollEl.style.setProperty('overflow-y', 'hidden');\n return function dispose() {\n sheetScrollEl.style.removeProperty('overflow-y');\n };\n }\n return noop;\n }\n\n private static isLastSnapPointDetents(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n ): boolean {\n return currentY === snapPointDetents[snapPointDetents.length - 1];\n }\n\n private static getClosestSnapPointByDirection(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n direction: -1 | 1,\n ): number {\n const foundIndex = snapPointDetents.findIndex((i) => i === currentY);\n switch (direction) {\n case -1:\n return snapPointDetents[foundIndex + 1] ?? snapPointDetents[snapPointDetents.length - 1];\n case 1:\n return snapPointDetents[foundIndex - 1] ?? snapPointDetents[0];\n }\n }\n\n private static getClosestSnapPoint(snapPointDetents: SnapPointDetents, currentY: number) {\n let closest = snapPointDetents[0];\n let minDifference = Math.abs(snapPointDetents[0] - currentY);\n\n for (let i = 1; i < snapPointDetents.length; i += 1) {\n const difference = Math.abs(snapPointDetents[i] - currentY);\n if (difference < minDifference) {\n closest = snapPointDetents[i];\n minDifference = difference;\n }\n }\n\n return closest;\n }\n}\n"],"names":["noop","clamp","rubberbandIfOutOfBounds","getNearestOverflowAncestor","hasSelectionWithRangeType","UIPanGestureRecognizer","BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY","DRAG_THRESHOLDS","DYNAMIC_SNAP_POINT_DATA","SNAP_POINT_DETENTS","BottomSheetController","init","snapPoint","isInitialized","unit","currentSnapPoint","IDLE_POINT_VALUE","snapPointDetents","MIN","initial","detents","destroy","pannedEl","sheetTransitionController","cleanup","backdropTransitionController","disableVerticalScrollBouncingDispose","panStart","event","panState","target","panGestureRecognizer","setStartCoords","panMove","setInitialTimeOnce","setEndCoords","preventUntilPanGestureBecomesExpected","preventImmediatelyIfPannedElIsNotValid","preventUntilVerticalScrollingOnSheetScrollElBecomesExpected","preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled","sheetHeight","sheetEl","offsetHeight","disableVerticalScrollBouncingIfNeeded","sheetScrollEl","isDynamicSnapPoint","COMPUTED_INDEX","y1","y2","nextSnapPoint","LARGE","calculateSnapPoint","panEnd","prevCurrentSnapPoint","getSnapPointTo","onSnapPointChange","reset","immediately","rafId","cancelAnimationFrame","enableTransition","onDismiss","backdropOpacity","requestAnimationFrame","disableTransition","set","cleanupOnTransitionEnd","unset","closestSnapPoint","getClosestSnapPoint","panDirection","direction","axis","velocity","Math","abs","y","VELOCITY","closestSnapPointByDirection","getClosestSnapPointByDirection","distance","DISTANCE_FOR_MOVING_START","closest","contains","scrollHeight","clientHeight","scrollTop","isLastSnapPointDetents","overflowAncestor","targetEl","style","setProperty","dispose","removeProperty","currentY","length","foundIndex","findIndex","i","minDifference","difference","constructor"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/lib/sheet/controllers/BottomSheetController.ts"],"sourcesContent":["import { noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../../helpers/math';\nimport { rubberbandIfOutOfBounds } from '../../animation';\nimport { getNearestOverflowAncestor, hasSelectionWithRangeType } from '../../dom';\nimport { UIPanGestureRecognizer } from '../../touch/UIPanGestureRecognizer';\nimport {\n BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY,\n DRAG_THRESHOLDS,\n DYNAMIC_SNAP_POINT_DATA,\n SNAP_POINT_DETENTS,\n} from '../constants';\nimport type { CSSTransitionController } from './CSSTransitionController';\n\nexport type SnapPointDetents = [number, number] | [number, number, number];\n\nexport type SnapPoint = 'auto' | { initial: number; detents: SnapPointDetents };\n\nexport type SnapPointChange = (snapPoint: number) => void;\n\nexport type BottomSheetControllerOptions = {\n sheetScrollEl: HTMLElement | null;\n sheetTransitionController: CSSTransitionController<string>;\n backdropTransitionController: CSSTransitionController | null;\n onSnapPointChange: SnapPointChange;\n onDismiss: VoidFunction;\n};\n\nexport class BottomSheetController {\n private readonly sheetEl: HTMLElement;\n\n constructor(\n sheetEl: HTMLElement,\n {\n sheetScrollEl,\n sheetTransitionController,\n backdropTransitionController,\n onSnapPointChange,\n onDismiss,\n }: BottomSheetControllerOptions,\n ) {\n this.sheetEl = sheetEl;\n this.onSnapPointChange = onSnapPointChange;\n this.onDismiss = onDismiss;\n this.panGestureRecognizer = new UIPanGestureRecognizer();\n this.sheetScrollEl = sheetScrollEl;\n this.sheetTransitionController = sheetTransitionController;\n this.backdropTransitionController = backdropTransitionController;\n }\n\n init(snapPoint: SnapPoint) {\n this.isInitialized = true;\n\n if (snapPoint === 'auto') {\n this.unit = 'px';\n this.currentSnapPoint = DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE;\n this.snapPointDetents = [SNAP_POINT_DETENTS.MIN, DYNAMIC_SNAP_POINT_DATA.IDLE_POINT_VALUE];\n } else {\n this.unit = '%';\n this.currentSnapPoint = snapPoint.initial;\n this.snapPointDetents = snapPoint.detents;\n }\n }\n\n destroy() {\n this.isInitialized = false;\n this.pannedEl = null;\n this.sheetTransitionController.cleanup();\n this.backdropTransitionController?.cleanup();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n panStart(event: UIEvent) {\n if (\n !this.isInitialized ||\n this.panState !== 'idle' ||\n hasSelectionWithRangeType(event.target)\n ) {\n return;\n }\n\n this.panState = 'start';\n this.pannedEl = event.target as HTMLElement;\n this.panGestureRecognizer.setStartCoords(event);\n }\n\n panMove(event: UIEvent) {\n switch (this.panState) {\n case 'start':\n this.panGestureRecognizer.setInitialTimeOnce();\n this.panGestureRecognizer.setEndCoords(event);\n\n if (this.preventUntilPanGestureBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfPannedElIsNotValid()) {\n this.panState = 'idle';\n return;\n }\n\n if (this.preventUntilVerticalScrollingOnSheetScrollElBecomesExpected()) {\n return;\n }\n\n if (this.preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled()) {\n this.panState = 'idle';\n return;\n }\n\n this.panState = 'moving';\n this.panGestureRecognizer.setStartCoords(event);\n\n this.sheetHeight = this.sheetEl.offsetHeight;\n\n this.disableVerticalScrollBouncingDispose =\n BottomSheetController.disableVerticalScrollBouncingIfNeeded(\n this.sheetScrollEl,\n this.pannedEl,\n );\n\n if (this.isDynamicSnapPoint) {\n this.currentSnapPoint = this.sheetHeight;\n this.snapPointDetents[DYNAMIC_SNAP_POINT_DATA.COMPUTED_INDEX] = this.sheetHeight;\n }\n break;\n case 'moving':\n this.panGestureRecognizer.setEndCoords(event);\n\n const { y1, y2 } = this.panGestureRecognizer;\n\n this.nextSnapPoint = rubberbandIfOutOfBounds(\n this.currentSnapPoint - ((y2 - y1) / this.sheetHeight) * this.currentSnapPoint,\n SNAP_POINT_DETENTS.MIN,\n this.isDynamicSnapPoint ? this.sheetHeight : SNAP_POINT_DETENTS.LARGE,\n );\n\n this.calculateSnapPoint(this.nextSnapPoint, true);\n break;\n }\n }\n\n panEnd() {\n switch (this.panState) {\n case 'moving':\n const prevCurrentSnapPoint = this.currentSnapPoint;\n this.currentSnapPoint = this.getSnapPointTo(this.nextSnapPoint);\n\n if (\n prevCurrentSnapPoint !== this.currentSnapPoint &&\n this.currentSnapPoint > SNAP_POINT_DETENTS.MIN\n ) {\n this.onSnapPointChange(this.currentSnapPoint);\n }\n\n this.calculateSnapPoint(this.currentSnapPoint);\n break;\n }\n\n this.panState = 'idle';\n this.panGestureRecognizer.reset();\n\n this.disableVerticalScrollBouncingDispose();\n this.disableVerticalScrollBouncingDispose = noop;\n }\n\n private isInitialized = false;\n private panState: 'idle' | 'start' | 'moving' = 'idle';\n private pannedEl: HTMLElement | null = null;\n private sheetHeight = 0;\n private rafId: number | null = null;\n private currentSnapPoint = 0;\n private nextSnapPoint = 0;\n private snapPointDetents: SnapPointDetents = [0, 0];\n private unit: 'px' | '%' = '%';\n private get isDynamicSnapPoint() {\n return this.unit === 'px';\n }\n private disableVerticalScrollBouncingDispose = noop;\n private readonly sheetScrollEl: HTMLElement | null;\n private readonly sheetTransitionController: CSSTransitionController<string>;\n private readonly backdropTransitionController: CSSTransitionController | null;\n private readonly panGestureRecognizer: UIPanGestureRecognizer;\n private readonly onSnapPointChange: SnapPointChange;\n private readonly onDismiss: VoidFunction;\n\n private calculateSnapPoint(nextSnapPoint: number, immediately = false) {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n }\n\n if (nextSnapPoint <= SNAP_POINT_DETENTS.MIN) {\n this.sheetTransitionController.enableTransition();\n this.backdropTransitionController?.enableTransition();\n this.panState = 'idle';\n this.onDismiss();\n return;\n }\n\n const backdropOpacity = clamp(\n this.isDynamicSnapPoint\n ? nextSnapPoint / this.sheetHeight\n : (nextSnapPoint * 2) / SNAP_POINT_DETENTS.LARGE,\n 0,\n 1,\n );\n\n this.rafId = requestAnimationFrame(() => {\n if (immediately) {\n this.backdropTransitionController?.disableTransition().set(backdropOpacity);\n this.sheetTransitionController.disableTransition().set(`${nextSnapPoint}${this.unit}`);\n return;\n }\n\n if (this.isDynamicSnapPoint) {\n this.sheetTransitionController.cleanupOnTransitionEnd();\n }\n\n this.backdropTransitionController?.unset();\n this.sheetTransitionController.enableTransition().set(`${this.currentSnapPoint}${this.unit}`);\n });\n }\n\n private getSnapPointTo(nextSnapPoint: number) {\n const closestSnapPoint = BottomSheetController.getClosestSnapPoint(\n this.snapPointDetents,\n nextSnapPoint,\n );\n if (closestSnapPoint !== this.currentSnapPoint) {\n return closestSnapPoint;\n }\n\n const panDirection = this.panGestureRecognizer.direction();\n if (panDirection.axis !== 'y' || panDirection.direction === null) {\n return this.currentSnapPoint;\n }\n\n const velocity = this.panGestureRecognizer.velocity();\n if (Math.abs(velocity.y) < DRAG_THRESHOLDS.VELOCITY) {\n return this.currentSnapPoint;\n }\n\n const closestSnapPointByDirection = BottomSheetController.getClosestSnapPointByDirection(\n this.snapPointDetents,\n closestSnapPoint,\n panDirection.direction,\n );\n\n return closestSnapPointByDirection;\n }\n\n private preventUntilPanGestureBecomesExpected() {\n return (\n this.panGestureRecognizer.direction().axis === 'x' ||\n this.panGestureRecognizer.distance() < DRAG_THRESHOLDS.DISTANCE_FOR_MOVING_START\n );\n }\n\n private preventImmediatelyIfPannedElIsNotValid() {\n return (\n this.pannedEl === null ||\n // Элемент со специальным атрибутом\n this.pannedEl.closest(`[${BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY}=true]`) !== null || // eslint-disable-line no-restricted-properties\n // Элемент за пределами панели.\n !this.sheetEl.contains(this.pannedEl)\n );\n }\n\n private preventUntilVerticalScrollingOnSheetScrollElBecomesExpected() {\n if (\n this.sheetScrollEl === null ||\n !this.sheetScrollEl.contains(this.pannedEl) ||\n this.sheetScrollEl.scrollHeight <= this.sheetScrollEl.clientHeight\n ) {\n return false;\n }\n\n if (this.sheetScrollEl.scrollTop === 0) {\n return (\n this.panGestureRecognizer.direction().direction === -1 &&\n BottomSheetController.isLastSnapPointDetents(this.snapPointDetents, this.currentSnapPoint)\n );\n }\n\n return true;\n }\n\n private preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled() {\n if (\n /* istanbul ignore next: покрываем TypeScript */\n this.pannedEl === null ||\n this.pannedEl === this.sheetEl ||\n this.pannedEl === this.sheetScrollEl\n ) {\n return false;\n }\n\n const overflowAncestor = getNearestOverflowAncestor(this.pannedEl, this.sheetEl);\n\n if (\n overflowAncestor === null ||\n this.sheetScrollEl === overflowAncestor ||\n overflowAncestor.scrollHeight <= overflowAncestor.clientHeight\n ) {\n return false;\n }\n\n return (\n overflowAncestor.scrollTop !== 0 || this.panGestureRecognizer.direction().direction === -1\n );\n }\n\n private static disableVerticalScrollBouncingIfNeeded(\n sheetScrollEl: HTMLElement | null,\n targetEl: HTMLElement | null,\n ) {\n if (\n sheetScrollEl !== null &&\n sheetScrollEl.scrollTop <= 0 &&\n sheetScrollEl.contains(targetEl) &&\n sheetScrollEl.scrollHeight > sheetScrollEl.clientHeight\n ) {\n sheetScrollEl.style.setProperty('overflow-y', 'hidden');\n return function dispose() {\n sheetScrollEl.style.removeProperty('overflow-y');\n };\n }\n return noop;\n }\n\n private static isLastSnapPointDetents(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n ): boolean {\n return currentY === snapPointDetents[snapPointDetents.length - 1];\n }\n\n private static getClosestSnapPointByDirection(\n snapPointDetents: SnapPointDetents,\n currentY: number,\n direction: -1 | 1,\n ): number {\n const foundIndex = snapPointDetents.findIndex((i) => i === currentY);\n switch (direction) {\n case -1:\n return snapPointDetents[foundIndex + 1] ?? snapPointDetents[snapPointDetents.length - 1];\n case 1:\n return snapPointDetents[foundIndex - 1] ?? snapPointDetents[0];\n }\n }\n\n private static getClosestSnapPoint(snapPointDetents: SnapPointDetents, currentY: number) {\n let closest = snapPointDetents[0];\n let minDifference = Math.abs(snapPointDetents[0] - currentY);\n\n for (let i = 1; i < snapPointDetents.length; i += 1) {\n const difference = Math.abs(snapPointDetents[i] - currentY);\n if (difference < minDifference) {\n closest = snapPointDetents[i];\n minDifference = difference;\n }\n }\n\n return closest;\n }\n}\n"],"names":["noop","clamp","rubberbandIfOutOfBounds","getNearestOverflowAncestor","hasSelectionWithRangeType","UIPanGestureRecognizer","BLOCK_SHEET_BEHAVIOR_DATA_ATTRIBUTE_KEY","DRAG_THRESHOLDS","DYNAMIC_SNAP_POINT_DATA","SNAP_POINT_DETENTS","BottomSheetController","init","snapPoint","isInitialized","unit","currentSnapPoint","IDLE_POINT_VALUE","snapPointDetents","MIN","initial","detents","destroy","pannedEl","sheetTransitionController","cleanup","backdropTransitionController","disableVerticalScrollBouncingDispose","panStart","event","panState","target","panGestureRecognizer","setStartCoords","panMove","setInitialTimeOnce","setEndCoords","preventUntilPanGestureBecomesExpected","preventImmediatelyIfPannedElIsNotValid","preventUntilVerticalScrollingOnSheetScrollElBecomesExpected","preventImmediatelyIfVerticalScrollingOnPannedElIsScrolled","sheetHeight","sheetEl","offsetHeight","disableVerticalScrollBouncingIfNeeded","sheetScrollEl","isDynamicSnapPoint","COMPUTED_INDEX","y1","y2","nextSnapPoint","LARGE","calculateSnapPoint","panEnd","prevCurrentSnapPoint","getSnapPointTo","onSnapPointChange","reset","immediately","rafId","cancelAnimationFrame","enableTransition","onDismiss","backdropOpacity","requestAnimationFrame","disableTransition","set","cleanupOnTransitionEnd","unset","closestSnapPoint","getClosestSnapPoint","panDirection","direction","axis","velocity","Math","abs","y","VELOCITY","closestSnapPointByDirection","getClosestSnapPointByDirection","distance","DISTANCE_FOR_MOVING_START","closest","contains","scrollHeight","clientHeight","scrollTop","isLastSnapPointDetents","overflowAncestor","targetEl","style","setProperty","dispose","removeProperty","currentY","length","foundIndex","findIndex","i","minDifference","difference"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/sheet/controllers/CSSTransitionController.ts"],"sourcesContent":["export type CSSTransitionControllerUnit = 'px' | '%' | '';\n\nexport class CSSTransitionController<V extends number | string = number> {\n public readonly el: HTMLElement;\n public readonly property: string;\n\n constructor(el: HTMLElement, property: string) {\n this.el = el;\n this.property = property;\n }\n\n set(to: V) {\n this.el.style.setProperty(this.property, `${to}`);\n return this;\n }\n\n unset() {\n return this.cleanup();\n }\n\n enableTransition() {\n this.el.style.removeProperty('transition');\n return this;\n }\n\n disableTransition() {\n this.el.style.setProperty('transition', 'none');\n return this;\n }\n\n cleanup() {\n this.el.removeEventListener('transitionend', this.handleTransitionEnd);\n this.el.style.removeProperty('transition');\n this.el.style.removeProperty(this.property);\n return this;\n }\n\n cleanupOnTransitionEnd() {\n this.el.addEventListener('transitionend', this.handleTransitionEnd, { once: true });\n return this;\n }\n\n private readonly handleTransitionEnd = () => {\n this.cleanup();\n return this;\n };\n}\n"],"names":["CSSTransitionController","set","to","el","style","setProperty","property","unset","cleanup","enableTransition","removeProperty","disableTransition","removeEventListener","handleTransitionEnd","cleanupOnTransitionEnd","addEventListener","once","constructor"],"mappings":";AAEA,OAAO,MAAMA;IASXC,IAAIC,EAAK,EAAE;QACT,IAAI,CAACC,EAAE,CAACC,KAAK,CAACC,WAAW,CAAC,IAAI,CAACC,QAAQ,EAAE,GAAGJ,IAAI;QAChD,OAAO,IAAI;IACb;IAEAK,QAAQ;QACN,OAAO,IAAI,CAACC,OAAO;IACrB;IAEAC,mBAAmB;QACjB,IAAI,CAACN,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC;QAC7B,OAAO,IAAI;IACb;IAEAC,oBAAoB;QAClB,IAAI,CAACR,EAAE,CAACC,KAAK,CAACC,WAAW,CAAC,cAAc;QACxC,OAAO,IAAI;IACb;IAEAG,UAAU;QACR,IAAI,CAACL,EAAE,CAACS,mBAAmB,CAAC,iBAAiB,IAAI,CAACC,mBAAmB;QACrE,IAAI,CAACV,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC;QAC7B,IAAI,CAACP,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC,IAAI,CAACJ,QAAQ;QAC1C,OAAO,IAAI;IACb;IAEAQ,yBAAyB;QACvB,IAAI,CAACX,EAAE,CAACY,gBAAgB,CAAC,iBAAiB,IAAI,CAACF,mBAAmB,EAAE;YAAEG,MAAM;QAAK;QACjF,OAAO,IAAI;IACb;IAlCAC,YAAYd,EAAe,EAAEG,QAAgB,CAAE;QAH/C,uBAAgBH,MAAhB,KAAA;QACA,uBAAgBG,YAAhB,KAAA;QAsCA,uBAAiBO,uBAAsB;YACrC,IAAI,CAACL,OAAO;YACZ,OAAO,IAAI;QACb;QAtCE,IAAI,CAACL,EAAE,GAAGA;QACV,IAAI,CAACG,QAAQ,GAAGA;IAClB;AAqCF"}
1
+ {"version":3,"sources":["../../../../src/lib/sheet/controllers/CSSTransitionController.ts"],"sourcesContent":["export type CSSTransitionControllerUnit = 'px' | '%' | '';\n\nexport class CSSTransitionController<V extends number | string = number> {\n public readonly el: HTMLElement;\n public readonly property: string;\n\n constructor(el: HTMLElement, property: string) {\n this.el = el;\n this.property = property;\n }\n\n set(to: V) {\n this.el.style.setProperty(this.property, `${to}`);\n return this;\n }\n\n unset() {\n return this.cleanup();\n }\n\n enableTransition() {\n this.el.style.removeProperty('transition');\n return this;\n }\n\n disableTransition() {\n this.el.style.setProperty('transition', 'none');\n return this;\n }\n\n cleanup() {\n this.el.removeEventListener('transitionend', this.handleTransitionEnd);\n this.el.style.removeProperty('transition');\n this.el.style.removeProperty(this.property);\n return this;\n }\n\n cleanupOnTransitionEnd() {\n this.el.addEventListener('transitionend', this.handleTransitionEnd, { once: true });\n return this;\n }\n\n private readonly handleTransitionEnd = () => {\n this.cleanup();\n return this;\n };\n}\n"],"names":["CSSTransitionController","set","to","el","style","setProperty","property","unset","cleanup","enableTransition","removeProperty","disableTransition","removeEventListener","handleTransitionEnd","cleanupOnTransitionEnd","addEventListener","once"],"mappings":";AAEA,OAAO,MAAMA;IASXC,IAAIC,EAAK,EAAE;QACT,IAAI,CAACC,EAAE,CAACC,KAAK,CAACC,WAAW,CAAC,IAAI,CAACC,QAAQ,EAAE,GAAGJ,IAAI;QAChD,OAAO,IAAI;IACb;IAEAK,QAAQ;QACN,OAAO,IAAI,CAACC,OAAO;IACrB;IAEAC,mBAAmB;QACjB,IAAI,CAACN,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC;QAC7B,OAAO,IAAI;IACb;IAEAC,oBAAoB;QAClB,IAAI,CAACR,EAAE,CAACC,KAAK,CAACC,WAAW,CAAC,cAAc;QACxC,OAAO,IAAI;IACb;IAEAG,UAAU;QACR,IAAI,CAACL,EAAE,CAACS,mBAAmB,CAAC,iBAAiB,IAAI,CAACC,mBAAmB;QACrE,IAAI,CAACV,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC;QAC7B,IAAI,CAACP,EAAE,CAACC,KAAK,CAACM,cAAc,CAAC,IAAI,CAACJ,QAAQ;QAC1C,OAAO,IAAI;IACb;IAEAQ,yBAAyB;QACvB,IAAI,CAACX,EAAE,CAACY,gBAAgB,CAAC,iBAAiB,IAAI,CAACF,mBAAmB,EAAE;YAAEG,MAAM;QAAK;QACjF,OAAO,IAAI;IACb;IAlCA,YAAYb,EAAe,EAAEG,QAAgB,CAAE;QAH/C,uBAAgBH,MAAhB,KAAA;QACA,uBAAgBG,YAAhB,KAAA;QAsCA,uBAAiBO,uBAAsB;YACrC,IAAI,CAACL,OAAO;YACZ,OAAO,IAAI;QACb;QAtCE,IAAI,CAACL,EAAE,GAAGA;QACV,IAAI,CAACG,QAAQ,GAAGA;IAClB;AAqCF"}
@@ -0,0 +1,3 @@
1
+ import { type CSSCustomProperties } from '../types';
2
+ export declare function animationVisibilityDelayStyles(delay: number | undefined): CSSCustomProperties | undefined;
3
+ //# sourceMappingURL=animationVisibilityDelay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationVisibilityDelay.d.ts","sourceRoot":"","sources":["../../src/styles/animationVisibilityDelay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,mBAAmB,GAAG,SAAS,CAQjC"}
@@ -0,0 +1,10 @@
1
+ export function animationVisibilityDelayStyles(delay) {
2
+ if (delay === undefined) {
3
+ return undefined;
4
+ }
5
+ return {
6
+ '--vkui_internal--animation_delay_visibility': `${delay}ms`
7
+ };
8
+ }
9
+
10
+ //# sourceMappingURL=animationVisibilityDelay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/styles/animationVisibilityDelay.ts"],"sourcesContent":["import { type CSSCustomProperties } from '../types';\n\nexport function animationVisibilityDelayStyles(\n delay: number | undefined,\n): CSSCustomProperties | undefined {\n if (delay === undefined) {\n return undefined;\n }\n\n return {\n '--vkui_internal--animation_delay_visibility': `${delay}ms`,\n };\n}\n"],"names":["animationVisibilityDelayStyles","delay","undefined"],"mappings":"AAEA,OAAO,SAASA,+BACdC,KAAyB;IAEzB,IAAIA,UAAUC,WAAW;QACvB,OAAOA;IACT;IAEA,OAAO;QACL,+CAA+C,GAAGD,MAAM,EAAE,CAAC;IAC7D;AACF"}