@consta/uikit 5.13.0 → 5.15.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 (403) hide show
  1. package/FieldComponents/index.d.ts +1 -0
  2. package/FieldComponents/index.js +1 -0
  3. package/TextFieldCanary/index.d.ts +1 -0
  4. package/TextFieldCanary/index.js +1 -0
  5. package/__internal__/src/components/AutoComplete/helpers.d.ts +1 -1
  6. package/__internal__/src/components/AutoComplete/types.d.ts +1 -1
  7. package/__internal__/src/components/AutoComplete/types.js.map +1 -1
  8. package/__internal__/src/components/AutoComplete/useAutoComplete.d.ts +1 -1
  9. package/__internal__/src/components/AutoComplete/useAutoComplete.js +1 -1
  10. package/__internal__/src/components/AutoComplete/useAutoComplete.js.map +1 -1
  11. package/__internal__/src/components/AutoCompleteCanary/helpers.d.ts +1 -1
  12. package/__internal__/src/components/AutoCompleteCanary/types.d.ts +1 -1
  13. package/__internal__/src/components/AutoCompleteCanary/types.js.map +1 -1
  14. package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.d.ts +1 -1
  15. package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js +1 -1
  16. package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js.map +1 -1
  17. package/__internal__/src/components/AvatarGroup/AvatarGroup.js.map +1 -1
  18. package/__internal__/src/components/Badge/Badge.css +1 -1
  19. package/__internal__/src/components/Badge/Badge.d.ts +2 -31
  20. package/__internal__/src/components/Badge/Badge.js +1 -1
  21. package/__internal__/src/components/Badge/Badge.js.map +1 -1
  22. package/__internal__/src/components/Badge/cn.d.ts +1 -0
  23. package/__internal__/src/components/Badge/cn.js +2 -0
  24. package/__internal__/src/components/Badge/cn.js.map +1 -0
  25. package/__internal__/src/components/Badge/guardStatus.d.ts +2 -0
  26. package/__internal__/src/components/Badge/guardStatus.js +2 -0
  27. package/__internal__/src/components/Badge/guardStatus.js.map +1 -0
  28. package/__internal__/src/components/Badge/index.d.ts +2 -0
  29. package/__internal__/src/components/Badge/index.js +1 -1
  30. package/__internal__/src/components/Badge/index.js.map +1 -1
  31. package/__internal__/src/components/Badge/maps.d.ts +9 -0
  32. package/__internal__/src/components/Badge/maps.js +2 -0
  33. package/__internal__/src/components/Badge/maps.js.map +1 -0
  34. package/__internal__/src/components/Badge/types.d.ts +31 -0
  35. package/__internal__/src/components/Badge/types.js +2 -0
  36. package/__internal__/src/components/Badge/types.js.map +1 -0
  37. package/__internal__/src/components/BadgeGroup/BadgeGroup.js +1 -1
  38. package/__internal__/src/components/BadgeGroup/BadgeGroup.js.map +1 -1
  39. package/__internal__/src/components/BadgeGroup/types.d.ts +4 -1
  40. package/__internal__/src/components/BadgeGroup/types.js.map +1 -1
  41. package/__internal__/src/components/BookmarkTabs/BookmarkTabs.js.map +1 -1
  42. package/__internal__/src/components/Breadcrumbs/BreadcrumbsItem/BreadcrumbsItem.css +1 -1
  43. package/__internal__/src/components/Checkbox/Checkbox.css +1 -1
  44. package/__internal__/src/components/CheckboxDeprecated/Checkbox.css +2 -2
  45. package/__internal__/src/components/CheckboxGroup/CheckboxGroup.js.map +1 -1
  46. package/__internal__/src/components/Chips/types.d.ts +8 -2
  47. package/__internal__/src/components/Chips/types.js.map +1 -1
  48. package/__internal__/src/components/Collapse/types.d.ts +1 -1
  49. package/__internal__/src/components/Collapse/types.js.map +1 -1
  50. package/__internal__/src/components/Combobox/Combobox.js +1 -1
  51. package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
  52. package/__internal__/src/components/Combobox/helpers.d.ts +2 -2
  53. package/__internal__/src/components/Combobox/helpers.js.map +1 -1
  54. package/__internal__/src/components/ComboboxDeprecated/ComboboxDeprecated.js +1 -1
  55. package/__internal__/src/components/ComboboxDeprecated/ComboboxDeprecated.js.map +1 -1
  56. package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js +1 -1
  57. package/__internal__/src/components/ContextMenu/ContextMenuLevel/ContextMenuLevel.js.map +1 -1
  58. package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js +1 -1
  59. package/__internal__/src/components/ContextMenu/ContextMenuLevelWrapper/ContextMenuLevelWrapper.js.map +1 -1
  60. package/__internal__/src/components/ContextMenu/ContextMenuWrapper/ContextMenuWrapper.css +1 -1
  61. package/__internal__/src/components/ContextMenu/ContextMenuWrapper/ContextMenuWrapper.js +1 -1
  62. package/__internal__/src/components/ContextMenu/ContextMenuWrapper/ContextMenuWrapper.js.map +1 -1
  63. package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.css +1 -1
  64. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
  65. package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
  66. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
  67. package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
  68. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
  69. package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
  70. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
  71. package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
  72. package/__internal__/src/components/DateTime/DateTime10Years/DateTime10Years.css +1 -1
  73. package/__internal__/src/components/DateTime/DateTimeCell/DateTimeCell.css +1 -1
  74. package/__internal__/src/components/DateTime/DateTimeMonth/DateTimeMonth.css +1 -1
  75. package/__internal__/src/components/DateTime/DateTimeTimeColumn/DateTimeTimeColumn.css +1 -1
  76. package/__internal__/src/components/DateTime/DateTimeTimeColumn/DateTimeTimeColumn.js +1 -1
  77. package/__internal__/src/components/DateTime/DateTimeTimeColumn/DateTimeTimeColumn.js.map +1 -1
  78. package/__internal__/src/components/DateTime/DateTimeTimeColumn/useScrollToElement/useScrollToElement.js.map +1 -1
  79. package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.css +1 -1
  80. package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.js.map +1 -1
  81. package/__internal__/src/components/DateTime/DateTimeYear/DateTimeYear.css +1 -1
  82. package/__internal__/src/components/DateTime/helpers/getSliderValueRange.js +1 -1
  83. package/__internal__/src/components/DateTime/helpers/getSliderValueRange.js.map +1 -1
  84. package/__internal__/src/components/DragNDropField/DragNDropField.js +1 -1
  85. package/__internal__/src/components/DragNDropField/DragNDropField.js.map +1 -1
  86. package/__internal__/src/components/DragNDropField/formatAccept.js.map +1 -1
  87. package/__internal__/src/components/DragNDropField/locale.d.ts +1 -1
  88. package/__internal__/src/components/DragNDropField/locale.js +1 -1
  89. package/__internal__/src/components/DragNDropField/locale.js.map +1 -1
  90. package/__internal__/src/components/DragNDropFieldCanary/DragNDropFieldCanary.js +1 -1
  91. package/__internal__/src/components/DragNDropFieldCanary/DragNDropFieldCanary.js.map +1 -1
  92. package/__internal__/src/components/DragNDropFieldCanary/renderChildren.d.ts +3 -0
  93. package/__internal__/src/components/DragNDropFieldCanary/renderChildren.js +2 -0
  94. package/__internal__/src/components/DragNDropFieldCanary/renderChildren.js.map +1 -0
  95. package/__internal__/src/components/FieldComponents/FieldArrayValueInlineControl/FieldArrayValueInlineControl.js +1 -1
  96. package/__internal__/src/components/FieldComponents/FieldArrayValueInlineControl/FieldArrayValueInlineControl.js.map +1 -1
  97. package/__internal__/src/components/FieldComponents/FieldArrayValueInlineControl/types.d.ts +2 -1
  98. package/__internal__/src/components/FieldComponents/FieldArrayValueInlineControl/types.js.map +1 -1
  99. package/__internal__/src/components/FieldComponents/FieldComponents.d.ts +15 -0
  100. package/__internal__/src/components/FieldComponents/FieldComponents.js +2 -0
  101. package/__internal__/src/components/FieldComponents/FieldComponents.js.map +1 -0
  102. package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.css +1 -1
  103. package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js +1 -1
  104. package/__internal__/src/components/FieldComponents/FieldControlLayout/FieldControlLayout.js.map +1 -1
  105. package/__internal__/src/components/FieldComponents/FieldControlLayout/helpers.js.map +1 -1
  106. package/__internal__/src/components/FieldComponents/FieldWrapper/FieldWrapper.js +1 -1
  107. package/__internal__/src/components/FieldComponents/FieldWrapper/FieldWrapper.js.map +1 -1
  108. package/__internal__/src/components/FieldComponents/index.d.ts +1 -15
  109. package/__internal__/src/components/FieldComponents/index.js +1 -1
  110. package/__internal__/src/components/FieldComponents/index.js.map +1 -1
  111. package/__internal__/src/components/Grid/helpers.js.map +1 -1
  112. package/__internal__/src/components/Informer/Informer.css +1 -1
  113. package/__internal__/src/components/Informer/Informer.d.ts +1 -1
  114. package/__internal__/src/components/Informer/Informer.js +1 -1
  115. package/__internal__/src/components/Informer/Informer.js.map +1 -1
  116. package/__internal__/src/components/Layout/useFixed.js +1 -1
  117. package/__internal__/src/components/Layout/useFixed.js.map +1 -1
  118. package/__internal__/src/components/ListCanary/ListAddItem/ListAddItem.js +1 -1
  119. package/__internal__/src/components/ListCanary/ListAddItem/ListAddItem.js.map +1 -1
  120. package/__internal__/src/components/ListCanary/ListBox/ListBox.js +1 -1
  121. package/__internal__/src/components/ListCanary/ListBox/ListBox.js.map +1 -1
  122. package/__internal__/src/components/ListCanary/ListBox/index.d.ts +1 -1
  123. package/__internal__/src/components/ListCanary/ListBox/index.js +1 -1
  124. package/__internal__/src/components/ListCanary/ListBox/index.js.map +1 -1
  125. package/__internal__/src/components/ListCanary/ListBox/{mapVerticalSpase.d.ts → mapVerticalSpace.d.ts} +1 -1
  126. package/__internal__/src/components/ListCanary/ListBox/mapVerticalSpace.js +2 -0
  127. package/__internal__/src/components/ListCanary/ListBox/mapVerticalSpace.js.map +1 -0
  128. package/__internal__/src/components/ListCanary/ListCanary.js +1 -1
  129. package/__internal__/src/components/ListCanary/ListCanary.js.map +1 -1
  130. package/__internal__/src/components/ListCanary/ListDivider/ListDivider.js +1 -1
  131. package/__internal__/src/components/ListCanary/ListDivider/ListDivider.js.map +1 -1
  132. package/__internal__/src/components/ListCanary/ListGroupLabel/ListGroupLabel.js +1 -1
  133. package/__internal__/src/components/ListCanary/ListGroupLabel/ListGroupLabel.js.map +1 -1
  134. package/__internal__/src/components/ListCanary/ListItem/ListItem.js +1 -1
  135. package/__internal__/src/components/ListCanary/ListItem/ListItem.js.map +1 -1
  136. package/__internal__/src/components/ListCanary/ListLoader/ListLoader.js +1 -1
  137. package/__internal__/src/components/ListCanary/ListLoader/ListLoader.js.map +1 -1
  138. package/__internal__/src/components/ListCanary/helper.d.ts +3 -3
  139. package/__internal__/src/components/ListCanary/maps.d.ts +4 -4
  140. package/__internal__/src/components/ListCanary/maps.js +1 -1
  141. package/__internal__/src/components/ListCanary/maps.js.map +1 -1
  142. package/__internal__/src/components/ListCanary/renderHeader.d.ts +1 -1
  143. package/__internal__/src/components/ListCanary/renderHeader.js.map +1 -1
  144. package/__internal__/src/components/ListCanary/types.d.ts +3 -3
  145. package/__internal__/src/components/ListCanary/types.js.map +1 -1
  146. package/__internal__/src/components/Pagination/Pagination.js.map +1 -1
  147. package/__internal__/src/components/Pagination/PaginationList/PaginationList.css +1 -1
  148. package/__internal__/src/components/Pagination/PaginationList/PaginationList.js +1 -1
  149. package/__internal__/src/components/Pagination/PaginationList/PaginationList.js.map +1 -1
  150. package/__internal__/src/components/Pagination/helpers.js.map +1 -1
  151. package/__internal__/src/components/Pagination/usePaginationItems.js.map +1 -1
  152. package/__internal__/src/components/Popover/Popover.d.ts +2 -1
  153. package/__internal__/src/components/Popover/Popover.js +1 -1
  154. package/__internal__/src/components/Popover/Popover.js.map +1 -1
  155. package/__internal__/src/components/Popover/helpers.d.ts +1 -1
  156. package/__internal__/src/components/Popover/helpers.js +1 -1
  157. package/__internal__/src/components/Popover/helpers.js.map +1 -1
  158. package/__internal__/src/components/Popover/usePopoverReposition.d.ts +2 -2
  159. package/__internal__/src/components/Popover/usePopoverReposition.js.map +1 -1
  160. package/__internal__/src/components/PortalWithTheme/PortalWithTheme.js.map +1 -1
  161. package/__internal__/src/components/PortalWithTheme/PortalWithThemeContext/PortalWithThemeContext.d.ts +4 -4
  162. package/__internal__/src/components/PortalWithTheme/PortalWithThemeContext/PortalWithThemeContext.js.map +1 -1
  163. package/__internal__/src/components/ProgressLine/helpers.js.map +1 -1
  164. package/__internal__/src/components/ProgressLine/types.d.ts +2 -2
  165. package/__internal__/src/components/ProgressLine/types.js.map +1 -1
  166. package/__internal__/src/components/ProgressStepBar/helpers.d.ts +3 -3
  167. package/__internal__/src/components/ProgressStepBar/helpers.js.map +1 -1
  168. package/__internal__/src/components/Select/helpers.d.ts +2 -2
  169. package/__internal__/src/components/Select/helpers.js.map +1 -1
  170. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +3 -3
  171. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js +1 -1
  172. package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
  173. package/__internal__/src/components/SelectComponents/helpers.d.ts +2 -2
  174. package/__internal__/src/components/SelectComponents/helpers.js +1 -1
  175. package/__internal__/src/components/SelectComponents/helpers.js.map +1 -1
  176. package/__internal__/src/components/SelectComponents/useSelect/useSelect.d.ts +1 -1
  177. package/__internal__/src/components/SelectComponents/useSelect/useSelect.js +1 -1
  178. package/__internal__/src/components/SelectComponents/useSelect/useSelect.js.map +1 -1
  179. package/__internal__/src/components/SelectComponentsDeprecated/SelectDropdown/SelectDropdown.d.ts +2 -2
  180. package/__internal__/src/components/SelectComponentsDeprecated/SelectDropdown/SelectDropdown.js +1 -1
  181. package/__internal__/src/components/SelectComponentsDeprecated/SelectDropdown/SelectDropdown.js.map +1 -1
  182. package/__internal__/src/components/SelectComponentsDeprecated/helpers.d.ts +2 -2
  183. package/__internal__/src/components/SelectComponentsDeprecated/helpers.js +1 -1
  184. package/__internal__/src/components/SelectComponentsDeprecated/helpers.js.map +1 -1
  185. package/__internal__/src/components/Slider/Slider.js +1 -1
  186. package/__internal__/src/components/Slider/Slider.js.map +1 -1
  187. package/__internal__/src/components/Slider/helper.d.ts +6 -6
  188. package/__internal__/src/components/Slider/helper.js +1 -1
  189. package/__internal__/src/components/Slider/helper.js.map +1 -1
  190. package/__internal__/src/components/Slider/useSlider/helper.d.ts +2 -2
  191. package/__internal__/src/components/Slider/useSlider/helper.js +1 -1
  192. package/__internal__/src/components/Slider/useSlider/helper.js.map +1 -1
  193. package/__internal__/src/components/Slider/useSlider/useSlider.js +1 -1
  194. package/__internal__/src/components/Slider/useSlider/useSlider.js.map +1 -1
  195. package/__internal__/src/components/Slider/useSliderStationing.js.map +1 -1
  196. package/__internal__/src/components/SnackBar/SnackBar.js +1 -1
  197. package/__internal__/src/components/SnackBar/SnackBar.js.map +1 -1
  198. package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js +1 -1
  199. package/__internal__/src/components/SnackBar/SnackBarActionButton/SnackBarActionButton.js.map +1 -1
  200. package/__internal__/src/components/SnackBar/SnackBarActionButton/index.d.ts +1 -0
  201. package/__internal__/src/components/SnackBar/SnackBarActionButton/index.js +2 -0
  202. package/__internal__/src/components/SnackBar/SnackBarActionButton/index.js.map +1 -0
  203. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.css +1 -1
  204. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.d.ts +0 -1
  205. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js +1 -1
  206. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js.map +1 -1
  207. package/__internal__/src/components/SnackBar/SnackBarItem/index.d.ts +1 -0
  208. package/__internal__/src/components/SnackBar/SnackBarItem/index.js +2 -0
  209. package/__internal__/src/components/SnackBar/SnackBarItem/index.js.map +1 -0
  210. package/__internal__/src/components/SnackBar/SnackBarLine/SnackBarLine.js.map +1 -1
  211. package/__internal__/src/components/SnackBar/SnackBarLine/index.d.ts +1 -0
  212. package/__internal__/src/components/SnackBar/SnackBarLine/index.js +2 -0
  213. package/__internal__/src/components/SnackBar/SnackBarLine/index.js.map +1 -0
  214. package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.css +1 -0
  215. package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.d.ts +4 -0
  216. package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.js +2 -0
  217. package/__internal__/src/components/SnackBar/SnackBarProgress/SnackBarProgress.js.map +1 -0
  218. package/__internal__/src/components/SnackBar/SnackBarProgress/index.d.ts +1 -0
  219. package/__internal__/src/components/SnackBar/SnackBarProgress/index.js +2 -0
  220. package/__internal__/src/components/SnackBar/SnackBarProgress/index.js.map +1 -0
  221. package/__internal__/src/components/SnackBar/SnackBarTimer/SnackBarTimer.js +1 -1
  222. package/__internal__/src/components/SnackBar/SnackBarTimer/SnackBarTimer.js.map +1 -1
  223. package/__internal__/src/components/SnackBar/SnackBarTimer/index.d.ts +1 -0
  224. package/__internal__/src/components/SnackBar/SnackBarTimer/index.js +2 -0
  225. package/__internal__/src/components/SnackBar/SnackBarTimer/index.js.map +1 -0
  226. package/__internal__/src/components/SnackBar/helper.d.ts +4 -1
  227. package/__internal__/src/components/SnackBar/helper.js +1 -1
  228. package/__internal__/src/components/SnackBar/helper.js.map +1 -1
  229. package/__internal__/src/components/SnackBar/types.d.ts +15 -0
  230. package/__internal__/src/components/SnackBar/types.js +1 -1
  231. package/__internal__/src/components/SnackBar/types.js.map +1 -1
  232. package/__internal__/src/components/Spoiler/types.d.ts +4 -4
  233. package/__internal__/src/components/Spoiler/types.js +1 -1
  234. package/__internal__/src/components/Spoiler/types.js.map +1 -1
  235. package/__internal__/src/components/Steps/Steps.d.ts +2 -2
  236. package/__internal__/src/components/Steps/Steps.js.map +1 -1
  237. package/__internal__/src/components/Steps/StepsStep/StepsStep.js +1 -1
  238. package/__internal__/src/components/Steps/StepsStep/StepsStep.js.map +1 -1
  239. package/__internal__/src/components/Steps/types.d.ts +1 -1
  240. package/__internal__/src/components/Steps/types.js.map +1 -1
  241. package/__internal__/src/components/Table/Header/TableHeader.js +1 -1
  242. package/__internal__/src/components/Table/Header/TableHeader.js.map +1 -1
  243. package/__internal__/src/components/Table/Resizer/TableResizer.js.map +1 -1
  244. package/__internal__/src/components/Table/Table.css +1 -1
  245. package/__internal__/src/components/Table/Table.js +1 -1
  246. package/__internal__/src/components/Table/Table.js.map +1 -1
  247. package/__internal__/src/components/Table/__mock__/data.mock.d.ts +1 -1
  248. package/__internal__/src/components/Table/__mock__/data.mock.js +1 -1
  249. package/__internal__/src/components/Table/__mock__/data.mock.js.map +1 -1
  250. package/__internal__/src/components/Table/helpers.d.ts +2 -2
  251. package/__internal__/src/components/Table/helpers.js +1 -1
  252. package/__internal__/src/components/Table/helpers.js.map +1 -1
  253. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/__test__/helpers.test.js +1 -1
  254. package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/__test__/helpers.test.js.map +1 -1
  255. package/__internal__/src/components/TagBase/TagBase.css +1 -1
  256. package/__internal__/src/components/TextField/TextField.js +1 -1
  257. package/__internal__/src/components/TextField/TextField.js.map +1 -1
  258. package/__internal__/src/components/TextField/helpers.d.ts +1 -1
  259. package/__internal__/src/components/TextField/helpers.js.map +1 -1
  260. package/__internal__/src/components/TextFieldCanary/{TextField.js → TextFieldCanary.js} +1 -1
  261. package/__internal__/src/components/TextFieldCanary/TextFieldCanary.js.map +1 -0
  262. package/__internal__/src/components/TextFieldCanary/TextFieldTypeNumber/TextFieldTypeNumber.js +1 -1
  263. package/__internal__/src/components/TextFieldCanary/TextFieldTypeNumber/TextFieldTypeNumber.js.map +1 -1
  264. package/__internal__/src/components/TextFieldCanary/TextFieldTypePassword/TextFieldTypePassword.js +1 -1
  265. package/__internal__/src/components/TextFieldCanary/TextFieldTypePassword/TextFieldTypePassword.js.map +1 -1
  266. package/__internal__/src/components/TextFieldCanary/TextFieldTypeText/TextFieldTypeText.js +1 -1
  267. package/__internal__/src/components/TextFieldCanary/TextFieldTypeText/TextFieldTypeText.js.map +1 -1
  268. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.css +3 -3
  269. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js +1 -1
  270. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArea/TextFieldTypeTextArea.js.map +1 -1
  271. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArray/TextFieldTypeTextArray.css +1 -1
  272. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArray/TextFieldTypeTextArray.js +1 -1
  273. package/__internal__/src/components/TextFieldCanary/TextFieldTypeTextArray/TextFieldTypeTextArray.js.map +1 -1
  274. package/__internal__/src/components/TextFieldCanary/index.d.ts +1 -1
  275. package/__internal__/src/components/TextFieldCanary/index.js +1 -1
  276. package/__internal__/src/components/TextFieldCanary/index.js.map +1 -1
  277. package/__internal__/src/components/TextFieldCanary/types.d.ts +1 -0
  278. package/__internal__/src/components/TextFieldCanary/types.js.map +1 -1
  279. package/__internal__/src/components/UserSelect/UserSelect.js +1 -1
  280. package/__internal__/src/components/UserSelect/UserSelect.js.map +1 -1
  281. package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.js +1 -1
  282. package/__internal__/src/components/UserSelect/UserSelectItem/UserSelectItem.js.map +1 -1
  283. package/__internal__/src/components/UserSelect/helpers.d.ts +2 -2
  284. package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
  285. package/__internal__/src/components/UserSelectDeprecated/UserSelectDeprecated.js +1 -1
  286. package/__internal__/src/components/UserSelectDeprecated/UserSelectDeprecated.js.map +1 -1
  287. package/__internal__/src/components/UserSelectDeprecated/UserSelectItem/UserSelectItem.js +1 -1
  288. package/__internal__/src/components/UserSelectDeprecated/UserSelectItem/UserSelectItem.js.map +1 -1
  289. package/__internal__/src/hocs/withTooltip/withTooltip.js.map +1 -1
  290. package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/addPrefix.js.map +1 -1
  291. package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/getLastPoint.js.map +1 -1
  292. package/__internal__/src/hooks/useBreakpointsDeprecated/index.d.ts +3 -0
  293. package/__internal__/src/hooks/useBreakpointsDeprecated/index.js +2 -0
  294. package/__internal__/src/hooks/useBreakpointsDeprecated/index.js.map +1 -0
  295. package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/mapping.js.map +1 -1
  296. package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/types.js.map +1 -1
  297. package/__internal__/src/hooks/useBreakpointsDeprecated/useBreakpointsDeprecated.d.ts +2 -0
  298. package/__internal__/src/hooks/useBreakpointsDeprecated/useBreakpointsDeprecated.js +2 -0
  299. package/__internal__/src/hooks/useBreakpointsDeprecated/useBreakpointsDeprecated.js.map +1 -0
  300. package/__internal__/src/hooks/useBreakpointsDepricated/index.d.ts +0 -2
  301. package/__internal__/src/hooks/useBreakpointsDepricated/index.js +1 -1
  302. package/__internal__/src/hooks/useBreakpointsDepricated/index.js.map +1 -1
  303. package/__internal__/src/hooks/useBreakpointsDepricated/useBreakpointsDepricated.d.ts +1 -2
  304. package/__internal__/src/hooks/useBreakpointsDepricated/useBreakpointsDepricated.js +1 -1
  305. package/__internal__/src/hooks/useBreakpointsDepricated/useBreakpointsDepricated.js.map +1 -1
  306. package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js.map +1 -1
  307. package/__internal__/src/hooks/useClickOutside/useClickOutside.js.map +1 -1
  308. package/__internal__/src/hooks/useComponentBreakpointsDeprecated/index.d.ts +2 -0
  309. package/__internal__/src/hooks/useComponentBreakpointsDeprecated/index.js +2 -0
  310. package/__internal__/src/hooks/useComponentBreakpointsDeprecated/index.js.map +1 -0
  311. package/__internal__/src/hooks/useComponentBreakpointsDeprecated/useComponentBreakpointsDeprecated.d.ts +2 -0
  312. package/__internal__/src/hooks/useComponentBreakpointsDeprecated/useComponentBreakpointsDeprecated.js +2 -0
  313. package/__internal__/src/hooks/useComponentBreakpointsDeprecated/useComponentBreakpointsDeprecated.js.map +1 -0
  314. package/__internal__/src/hooks/useComponentBreakpointsDepricated/index.d.ts +0 -1
  315. package/__internal__/src/hooks/useComponentBreakpointsDepricated/index.js +1 -1
  316. package/__internal__/src/hooks/useComponentBreakpointsDepricated/index.js.map +1 -1
  317. package/__internal__/src/hooks/useComponentBreakpointsDepricated/useComponentBreakpointsDepricated.d.ts +1 -2
  318. package/__internal__/src/hooks/useComponentBreakpointsDepricated/useComponentBreakpointsDepricated.js +1 -1
  319. package/__internal__/src/hooks/useComponentBreakpointsDepricated/useComponentBreakpointsDepricated.js.map +1 -1
  320. package/__internal__/src/hooks/useHideElementsInLineDeprecated/index.d.ts +1 -0
  321. package/__internal__/src/hooks/useHideElementsInLineDeprecated/index.js +2 -0
  322. package/__internal__/src/hooks/useHideElementsInLineDeprecated/index.js.map +1 -0
  323. package/__internal__/src/hooks/useHideElementsInLineDeprecated/useHideElementsInLineDeprecated.d.ts +10 -0
  324. package/__internal__/src/hooks/useHideElementsInLineDeprecated/useHideElementsInLineDeprecated.js +2 -0
  325. package/__internal__/src/hooks/useHideElementsInLineDeprecated/useHideElementsInLineDeprecated.js.map +1 -0
  326. package/__internal__/src/hooks/useHideElementsInLineDepricated/index.js.map +1 -1
  327. package/__internal__/src/hooks/useHideElementsInLineDepricated/useHideElementsInLineDepricated.d.ts +1 -10
  328. package/__internal__/src/hooks/useHideElementsInLineDepricated/useHideElementsInLineDepricated.js +1 -1
  329. package/__internal__/src/hooks/useHideElementsInLineDepricated/useHideElementsInLineDepricated.js.map +1 -1
  330. package/__internal__/src/hooks/useKeysDeprecated/index.d.ts +1 -0
  331. package/__internal__/src/hooks/useKeysDeprecated/index.js +2 -0
  332. package/__internal__/src/hooks/useKeysDeprecated/index.js.map +1 -0
  333. package/__internal__/src/hooks/useKeysDeprecated/useKeysDeprecated.d.ts +18 -0
  334. package/__internal__/src/hooks/useKeysDeprecated/useKeysDeprecated.js +2 -0
  335. package/__internal__/src/hooks/useKeysDeprecated/useKeysDeprecated.js.map +1 -0
  336. package/__internal__/src/hooks/useKeysDepricated/index.js.map +1 -1
  337. package/__internal__/src/hooks/useKeysDepricated/useKeysDepricated.d.ts +1 -18
  338. package/__internal__/src/hooks/useKeysDepricated/useKeysDepricated.js +1 -1
  339. package/__internal__/src/hooks/useKeysDepricated/useKeysDepricated.js.map +1 -1
  340. package/__internal__/src/hooks/useResizableContent/helpers.d.ts +1 -1
  341. package/__internal__/src/hooks/useResizableContent/helpers.js +1 -1
  342. package/__internal__/src/hooks/useResizableContent/helpers.js.map +1 -1
  343. package/__internal__/src/hooks/useResizableContent/useResizableContent.js +1 -1
  344. package/__internal__/src/hooks/useResizableContent/useResizableContent.js.map +1 -1
  345. package/__internal__/src/hooks/useSelect/useSelect.d.ts +1 -1
  346. package/__internal__/src/hooks/useSelect/useSelect.js +1 -1
  347. package/__internal__/src/hooks/useSelect/useSelect.js.map +1 -1
  348. package/__internal__/src/hooks/useVirtualScroll/helpers.js +2 -0
  349. package/__internal__/src/hooks/useVirtualScroll/helpers.js.map +1 -0
  350. package/__internal__/src/hooks/useVirtualScroll/useVirtualScroll.d.ts +1 -1
  351. package/__internal__/src/hooks/useVirtualScroll/useVirtualScroll.js +1 -1
  352. package/__internal__/src/hooks/useVirtualScroll/useVirtualScroll.js.map +1 -1
  353. package/__internal__/src/mixs/MixPopoverAnimate/MixPopoverAnimate.css +1 -1
  354. package/__internal__/src/uiKit/components/ThemePreview/ThemePreview.js +1 -1
  355. package/__internal__/src/uiKit/components/ThemePreview/ThemePreview.js.map +1 -1
  356. package/__internal__/src/uiKit/components/ThemePreview/helpers.d.ts +4 -4
  357. package/__internal__/src/uiKit/components/ThemePreview/helpers.js +1 -1
  358. package/__internal__/src/uiKit/components/ThemePreview/helpers.js.map +1 -1
  359. package/__internal__/src/utils/date/index.d.ts +1 -1
  360. package/__internal__/src/utils/date/index.js +1 -1
  361. package/__internal__/src/utils/date/index.js.map +1 -1
  362. package/__internal__/src/utils/date/isDisableDate.js +1 -1
  363. package/__internal__/src/utils/date/isDisableDate.js.map +1 -1
  364. package/__internal__/src/utils/date/{isInMinMaxDade.js → isInMinMaxDate.js} +1 -1
  365. package/__internal__/src/utils/date/{isInMinMaxDade.js.map → isInMinMaxDate.js.map} +1 -1
  366. package/__internal__/src/utils/getGroups.d.ts +3 -3
  367. package/__internal__/src/utils/getGroups.js +1 -1
  368. package/__internal__/src/utils/getGroups.js.map +1 -1
  369. package/__internal__/src/utils/types/AutoComplete.js.map +1 -1
  370. package/__internal__/src/utils/types/KeyCode.d.ts +3 -3
  371. package/__internal__/src/utils/types/KeyCode.js.map +1 -1
  372. package/package.json +1 -1
  373. package/useBreakpointsDeprecated/index.d.ts +1 -0
  374. package/useBreakpointsDeprecated/index.js +1 -0
  375. package/useComponentBreakpointsDeprecated/index.d.ts +1 -0
  376. package/useComponentBreakpointsDeprecated/index.js +1 -0
  377. package/useHideElementsInLineDeprecated/index.d.ts +1 -0
  378. package/useHideElementsInLineDeprecated/index.js +1 -0
  379. package/useKeysDeprecated/index.d.ts +1 -0
  380. package/useKeysDeprecated/index.js +1 -0
  381. package/__internal__/src/components/DragNDropFieldCanary/renderCildren.d.ts +0 -3
  382. package/__internal__/src/components/DragNDropFieldCanary/renderCildren.js +0 -2
  383. package/__internal__/src/components/DragNDropFieldCanary/renderCildren.js.map +0 -1
  384. package/__internal__/src/components/ListCanary/ListBox/mapVerticalSpase.js +0 -2
  385. package/__internal__/src/components/ListCanary/ListBox/mapVerticalSpase.js.map +0 -1
  386. package/__internal__/src/components/TextFieldCanary/TextField.js.map +0 -1
  387. package/__internal__/src/hooks/useVirtualScroll/hellpers.js +0 -2
  388. package/__internal__/src/hooks/useVirtualScroll/hellpers.js.map +0 -1
  389. package/__internal__/src/uiKit/components/StoryBookExample/StoryBookExample.css +0 -1
  390. package/__internal__/src/uiKit/components/StoryBookExample/StoryBookExample.d.ts +0 -6
  391. package/__internal__/src/uiKit/components/StoryBookExample/StoryBookExample.js +0 -2
  392. package/__internal__/src/uiKit/components/StoryBookExample/StoryBookExample.js.map +0 -1
  393. /package/__internal__/src/components/TextFieldCanary/{TextField.d.ts → TextFieldCanary.d.ts} +0 -0
  394. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/addPrefix.d.ts +0 -0
  395. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/addPrefix.js +0 -0
  396. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/getLastPoint.d.ts +0 -0
  397. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/getLastPoint.js +0 -0
  398. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/mapping.d.ts +0 -0
  399. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/mapping.js +0 -0
  400. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/types.d.ts +0 -0
  401. /package/__internal__/src/hooks/{useBreakpointsDepricated → useBreakpointsDeprecated}/types.js +0 -0
  402. /package/__internal__/src/hooks/useVirtualScroll/{hellpers.d.ts → helpers.d.ts} +0 -0
  403. /package/__internal__/src/utils/date/{isInMinMaxDade.d.ts → isInMinMaxDate.d.ts} +0 -0
@@ -1,2 +1,2 @@
1
- import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","getItemLabel","getItemRef","getItemAs","getItemKey","getItemAttributes","getItemClickable","getItemOnClick","onItemClick","value","size","form","className"];import"./PaginationList.css";import React,{forwardRef}from"react";import{cn}from"../../../utils/bem";import{defaultGetItemLabel,pageSeparatorLabel}from"../helpers";import{PaginationItem}from"../PaginationItem";import{paginationPropFormDefault,paginationPropSizeDefault}from"../types";var cnPaginationList=cn("PaginationList"),PaginationListRender=function(a,b){var c=a.items,d=a.getItemLabel,e=void 0===d?defaultGetItemLabel:d,f=a.getItemRef,g=a.getItemAs,h=a.getItemKey,i=a.getItemAttributes,j=a.getItemClickable,k=a.getItemOnClick,l=a.onItemClick,m=a.value,n=a.size,o=void 0===n?paginationPropSizeDefault:n,p=a.form,q=void 0===p?paginationPropFormDefault:p,r=a.className,s=_objectWithoutProperties(a,_excluded);return React.createElement("div",Object.assign({},s,{ref:b,className:cnPaginationList(null,[r])}),c.map(function(a){var b,c=(null===i||void 0===i?void 0:i(a))||{};return React.createElement(PaginationItem,Object.assign({},c,{className:cnPaginationList("Item",[null===c||void 0===c?void 0:c.className]),form:q,size:o,onClick:function onClick(b){var c;null===k||void 0===k||null===(c=k(a))||void 0===c?void 0:c(b),null===l||void 0===l?void 0:l(a,{e:b})},label:e(a),active:!!m&&(null===h||void 0===h?void 0:h(a))===(null===h||void 0===h?void 0:h(m)),ref:null===f||void 0===f?void 0:f(a),as:null===g||void 0===g?void 0:g(a),clickable:null===j||void 0===j?void 0:j(a),key:h(a),style:_defineProperty({},"--pagination-item-label-lenght",a.label===pageSeparatorLabel?1:null===(b=a.label)||void 0===b?void 0:b.length)}))}))};export var PaginationList=forwardRef(PaginationListRender);
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","getItemLabel","getItemRef","getItemAs","getItemKey","getItemAttributes","getItemClickable","getItemOnClick","onItemClick","value","size","form","className"];import"./PaginationList.css";import React,{forwardRef}from"react";import{cn}from"../../../utils/bem";import{defaultGetItemLabel,pageSeparatorLabel}from"../helpers";import{PaginationItem}from"../PaginationItem";import{paginationPropFormDefault,paginationPropSizeDefault}from"../types";var cnPaginationList=cn("PaginationList"),PaginationListRender=function(a,b){var c=a.items,d=a.getItemLabel,e=void 0===d?defaultGetItemLabel:d,f=a.getItemRef,g=a.getItemAs,h=a.getItemKey,i=a.getItemAttributes,j=a.getItemClickable,k=a.getItemOnClick,l=a.onItemClick,m=a.value,n=a.size,o=void 0===n?paginationPropSizeDefault:n,p=a.form,q=void 0===p?paginationPropFormDefault:p,r=a.className,s=_objectWithoutProperties(a,_excluded);return React.createElement("div",Object.assign({},s,{ref:b,className:cnPaginationList(null,[r])}),c.map(function(a){var b,c=(null===i||void 0===i?void 0:i(a))||{};return React.createElement(PaginationItem,Object.assign({},c,{className:cnPaginationList("Item",[null===c||void 0===c?void 0:c.className]),form:q,size:o,onClick:function onClick(b){var c;null===k||void 0===k||null===(c=k(a))||void 0===c?void 0:c(b),null===l||void 0===l?void 0:l(a,{e:b})},label:e(a),active:!!m&&(null===h||void 0===h?void 0:h(a))===(null===h||void 0===h?void 0:h(m)),ref:null===f||void 0===f?void 0:f(a),as:null===g||void 0===g?void 0:g(a),clickable:null===j||void 0===j?void 0:j(a),key:h(a),style:_defineProperty({},"--pagination-item-label-length",a.label===pageSeparatorLabel?1:null===(b=a.label)||void 0===b?void 0:b.length)}))}))};export var PaginationList=forwardRef(PaginationListRender);
2
2
  //# sourceMappingURL=PaginationList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationList.js","names":["React","forwardRef","cn","defaultGetItemLabel","pageSeparatorLabel","PaginationItem","paginationPropFormDefault","paginationPropSizeDefault","cnPaginationList","PaginationListRender","props","ref","items","getItemLabel","getItemRef","getItemAs","getItemKey","getItemAttributes","getItemClickable","getItemOnClick","onItemClick","value","size","form","className","otherProps","map","item","attr","e","label","length","PaginationList"],"sources":["../../../../../../src/components/Pagination/PaginationList/PaginationList.tsx"],"sourcesContent":["import './PaginationList.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { cn } from '##/utils/bem';\n\nimport { defaultGetItemLabel, pageSeparatorLabel } from '../helpers';\nimport { PaginationItem } from '../PaginationItem';\nimport {\n PaginationBaseItemDefault,\n PaginationListComponent,\n PaginationListProps,\n paginationPropFormDefault,\n paginationPropSizeDefault,\n} from '../types';\n\nconst cnPaginationList = cn('PaginationList');\n\nconst PaginationListRender = <ITEM extends PaginationBaseItemDefault>(\n props: PaginationListProps<ITEM>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n items,\n getItemLabel = defaultGetItemLabel,\n getItemRef,\n getItemAs,\n getItemKey,\n getItemAttributes,\n getItemClickable,\n getItemOnClick,\n onItemClick,\n value,\n size = paginationPropSizeDefault,\n form = paginationPropFormDefault,\n className,\n ...otherProps\n } = props;\n\n return (\n <div\n {...otherProps}\n ref={ref}\n className={cnPaginationList(null, [className])}\n >\n {items.map((item) => {\n const attr = getItemAttributes?.(item) || {};\n return (\n <PaginationItem\n {...attr}\n className={cnPaginationList('Item', [attr?.className])}\n form={form}\n size={size}\n onClick={(e: React.MouseEvent<Element, MouseEvent>) => {\n getItemOnClick?.(item)?.(e);\n onItemClick?.(item, { e });\n }}\n label={getItemLabel(item)}\n active={value ? getItemKey?.(item) === getItemKey?.(value) : false}\n ref={getItemRef?.(item)}\n as={getItemAs?.(item)}\n clickable={getItemClickable?.(item)}\n key={getItemKey(item)}\n style={{\n ['--pagination-item-label-lenght' as string]:\n item.label === pageSeparatorLabel ? 1 : item.label?.length,\n }}\n />\n );\n })}\n </div>\n );\n};\n\nexport const PaginationList = forwardRef(\n PaginationListRender,\n) as PaginationListComponent;\n"],"mappings":"6UAAA,6BAEA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,EAAT,0BAEA,OAASC,mBAAT,CAA8BC,kBAA9B,kBACA,OAASC,cAAT,yBACA,OAIEC,yBAJF,CAKEC,yBALF,gB,GAQMC,iBAAgB,CAAGN,EAAE,CAAC,gBAAD,C,CAErBO,oBAAoB,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAGxB,CACH,GACEC,EADF,CAeIF,CAfJ,CACEE,KADF,GAeIF,CAfJ,CAEEG,YAFF,CAEEA,CAFF,YAEiBV,mBAFjB,GAGEW,CAHF,CAeIJ,CAfJ,CAGEI,UAHF,CAIEC,CAJF,CAeIL,CAfJ,CAIEK,SAJF,CAKEC,CALF,CAeIN,CAfJ,CAKEM,UALF,CAMEC,CANF,CAeIP,CAfJ,CAMEO,iBANF,CAOEC,CAPF,CAeIR,CAfJ,CAOEQ,gBAPF,CAQEC,CARF,CAeIT,CAfJ,CAQES,cARF,CASEC,CATF,CAeIV,CAfJ,CASEU,WATF,CAUEC,CAVF,CAeIX,CAfJ,CAUEW,KAVF,GAeIX,CAfJ,CAWEY,IAXF,CAWEA,CAXF,YAWSf,yBAXT,KAeIG,CAfJ,CAYEa,IAZF,CAYEA,CAZF,YAYSjB,yBAZT,GAaEkB,CAbF,CAeId,CAfJ,CAaEc,SAbF,CAcKC,CAdL,0BAeIf,CAfJ,YAiBA,MACE,4CACMe,CADN,EAEE,GAAG,CAAEd,CAFP,CAGE,SAAS,CAAEH,gBAAgB,CAAC,IAAD,CAAO,CAACgB,CAAD,CAAP,CAH7B,GAKGZ,CAAK,CAACc,GAAN,CAAU,SAACC,CAAD,CAAU,OACbC,CAAI,CAAG,QAAAX,CAAiB,WAAjBA,CAAA,QAAAA,CAAiB,CAAGU,CAAH,CAAjB,GAA6B,EADvB,CAEnB,MACE,qBAAC,cAAD,kBACMC,CADN,EAEE,SAAS,CAAEpB,gBAAgB,CAAC,MAAD,CAAS,QAACoB,CAAD,WAACA,CAAD,QAACA,CAAI,CAAEJ,SAAP,CAAT,CAF7B,CAGE,IAAI,CAAED,CAHR,CAIE,IAAI,CAAED,CAJR,CAKE,OAAO,CAAE,iBAACO,CAAD,CAA8C,cACrDV,CADqD,WACrDA,CADqD,YACrDA,CAAc,CAAGQ,CAAH,CADuC,qBACrD,EAAyBE,CAAzB,CADqD,QAErDT,CAFqD,WAErDA,CAFqD,QAErDA,CAAW,CAAGO,CAAH,CAAS,CAAEE,CAAC,CAADA,CAAF,CAAT,CACZ,CARH,CASE,KAAK,CAAEhB,CAAY,CAACc,CAAD,CATrB,CAUE,MAAM,GAAEN,CAAF,EAAU,QAAAL,CAAU,WAAVA,CAAA,QAAAA,CAAU,CAAGW,CAAH,CAAV,YAAuBX,CAAvB,WAAuBA,CAAvB,QAAuBA,CAAU,CAAGK,CAAH,CAAjC,CAVlB,CAWE,GAAG,QAAEP,CAAF,WAAEA,CAAF,QAAEA,CAAU,CAAGa,CAAH,CAXjB,CAYE,EAAE,QAAEZ,CAAF,WAAEA,CAAF,QAAEA,CAAS,CAAGY,CAAH,CAZf,CAaE,SAAS,QAAET,CAAF,WAAEA,CAAF,QAAEA,CAAgB,CAAGS,CAAH,CAb7B,CAcE,GAAG,CAAEX,CAAU,CAACW,CAAD,CAdjB,CAeE,KAAK,oBACF,gCADE,CAEDA,CAAI,CAACG,KAAL,GAAe1B,kBAAf,CAAoC,CAApC,WAAwCuB,CAAI,CAACG,KAA7C,qBAAwC,EAAYC,MAFnD,CAfP,GAqBH,CAxBA,CALH,CAgCH,C,CAED,MAAO,IAAMC,eAAc,CAAG/B,UAAU,CACtCQ,oBADsC,CAAjC"}
1
+ {"version":3,"file":"PaginationList.js","names":["React","forwardRef","cn","defaultGetItemLabel","pageSeparatorLabel","PaginationItem","paginationPropFormDefault","paginationPropSizeDefault","cnPaginationList","PaginationListRender","props","ref","items","getItemLabel","getItemRef","getItemAs","getItemKey","getItemAttributes","getItemClickable","getItemOnClick","onItemClick","value","size","form","className","otherProps","map","item","attr","e","label","length","PaginationList"],"sources":["../../../../../../src/components/Pagination/PaginationList/PaginationList.tsx"],"sourcesContent":["import './PaginationList.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { cn } from '##/utils/bem';\n\nimport { defaultGetItemLabel, pageSeparatorLabel } from '../helpers';\nimport { PaginationItem } from '../PaginationItem';\nimport {\n PaginationBaseItemDefault,\n PaginationListComponent,\n PaginationListProps,\n paginationPropFormDefault,\n paginationPropSizeDefault,\n} from '../types';\n\nconst cnPaginationList = cn('PaginationList');\n\nconst PaginationListRender = <ITEM extends PaginationBaseItemDefault>(\n props: PaginationListProps<ITEM>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n items,\n getItemLabel = defaultGetItemLabel,\n getItemRef,\n getItemAs,\n getItemKey,\n getItemAttributes,\n getItemClickable,\n getItemOnClick,\n onItemClick,\n value,\n size = paginationPropSizeDefault,\n form = paginationPropFormDefault,\n className,\n ...otherProps\n } = props;\n\n return (\n <div\n {...otherProps}\n ref={ref}\n className={cnPaginationList(null, [className])}\n >\n {items.map((item) => {\n const attr = getItemAttributes?.(item) || {};\n return (\n <PaginationItem\n {...attr}\n className={cnPaginationList('Item', [attr?.className])}\n form={form}\n size={size}\n onClick={(e: React.MouseEvent<Element, MouseEvent>) => {\n getItemOnClick?.(item)?.(e);\n onItemClick?.(item, { e });\n }}\n label={getItemLabel(item)}\n active={value ? getItemKey?.(item) === getItemKey?.(value) : false}\n ref={getItemRef?.(item)}\n as={getItemAs?.(item)}\n clickable={getItemClickable?.(item)}\n key={getItemKey(item)}\n style={{\n ['--pagination-item-label-length' as string]:\n item.label === pageSeparatorLabel ? 1 : item.label?.length,\n }}\n />\n );\n })}\n </div>\n );\n};\n\nexport const PaginationList = forwardRef(\n PaginationListRender,\n) as PaginationListComponent;\n"],"mappings":"6UAAA,6BAEA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,EAAT,0BAEA,OAASC,mBAAT,CAA8BC,kBAA9B,kBACA,OAASC,cAAT,yBACA,OAIEC,yBAJF,CAKEC,yBALF,gB,GAQMC,iBAAgB,CAAGN,EAAE,CAAC,gBAAD,C,CAErBO,oBAAoB,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAGxB,CACH,GACEC,EADF,CAeIF,CAfJ,CACEE,KADF,GAeIF,CAfJ,CAEEG,YAFF,CAEEA,CAFF,YAEiBV,mBAFjB,GAGEW,CAHF,CAeIJ,CAfJ,CAGEI,UAHF,CAIEC,CAJF,CAeIL,CAfJ,CAIEK,SAJF,CAKEC,CALF,CAeIN,CAfJ,CAKEM,UALF,CAMEC,CANF,CAeIP,CAfJ,CAMEO,iBANF,CAOEC,CAPF,CAeIR,CAfJ,CAOEQ,gBAPF,CAQEC,CARF,CAeIT,CAfJ,CAQES,cARF,CASEC,CATF,CAeIV,CAfJ,CASEU,WATF,CAUEC,CAVF,CAeIX,CAfJ,CAUEW,KAVF,GAeIX,CAfJ,CAWEY,IAXF,CAWEA,CAXF,YAWSf,yBAXT,KAeIG,CAfJ,CAYEa,IAZF,CAYEA,CAZF,YAYSjB,yBAZT,GAaEkB,CAbF,CAeId,CAfJ,CAaEc,SAbF,CAcKC,CAdL,0BAeIf,CAfJ,YAiBA,MACE,4CACMe,CADN,EAEE,GAAG,CAAEd,CAFP,CAGE,SAAS,CAAEH,gBAAgB,CAAC,IAAD,CAAO,CAACgB,CAAD,CAAP,CAH7B,GAKGZ,CAAK,CAACc,GAAN,CAAU,SAACC,CAAD,CAAU,OACbC,CAAI,CAAG,QAAAX,CAAiB,WAAjBA,CAAA,QAAAA,CAAiB,CAAGU,CAAH,CAAjB,GAA6B,EADvB,CAEnB,MACE,qBAAC,cAAD,kBACMC,CADN,EAEE,SAAS,CAAEpB,gBAAgB,CAAC,MAAD,CAAS,QAACoB,CAAD,WAACA,CAAD,QAACA,CAAI,CAAEJ,SAAP,CAAT,CAF7B,CAGE,IAAI,CAAED,CAHR,CAIE,IAAI,CAAED,CAJR,CAKE,OAAO,CAAE,iBAACO,CAAD,CAA8C,cACrDV,CADqD,WACrDA,CADqD,YACrDA,CAAc,CAAGQ,CAAH,CADuC,qBACrD,EAAyBE,CAAzB,CADqD,QAErDT,CAFqD,WAErDA,CAFqD,QAErDA,CAAW,CAAGO,CAAH,CAAS,CAAEE,CAAC,CAADA,CAAF,CAAT,CACZ,CARH,CASE,KAAK,CAAEhB,CAAY,CAACc,CAAD,CATrB,CAUE,MAAM,GAAEN,CAAF,EAAU,QAAAL,CAAU,WAAVA,CAAA,QAAAA,CAAU,CAAGW,CAAH,CAAV,YAAuBX,CAAvB,WAAuBA,CAAvB,QAAuBA,CAAU,CAAGK,CAAH,CAAjC,CAVlB,CAWE,GAAG,QAAEP,CAAF,WAAEA,CAAF,QAAEA,CAAU,CAAGa,CAAH,CAXjB,CAYE,EAAE,QAAEZ,CAAF,WAAEA,CAAF,QAAEA,CAAS,CAAGY,CAAH,CAZf,CAaE,SAAS,QAAET,CAAF,WAAEA,CAAF,QAAEA,CAAgB,CAAGS,CAAH,CAb7B,CAcE,GAAG,CAAEX,CAAU,CAACW,CAAD,CAdjB,CAeE,KAAK,oBACF,gCADE,CAEDA,CAAI,CAACG,KAAL,GAAe1B,kBAAf,CAAoC,CAApC,WAAwCuB,CAAI,CAACG,KAA7C,qBAAwC,EAAYC,MAFnD,CAfP,GAqBH,CAxBA,CALH,CAgCH,C,CAED,MAAO,IAAMC,eAAc,CAAG/B,UAAU,CACtCQ,oBADsC,CAAjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["IconArrowFirst","IconArrowLast","IconArrowLeft","IconArrowRight","range","defaultGetItemLabel","item","label","defaultGetItemKey","key","defaultGetItemClickable","clickable","firstPageSeparator","lastPageSeparator","pageSeparatorLabel","guardCurrentPage","currentPage","totalPages","Math","floor","max","min","getPagesArrayByVisibleCount","visibleCountProp","showFirstPage","showLastPage","visibleCount","page","visibleSegmentStartToCenter","ceil","visibleSegmentEndToCenter","slideStart","map","i","el","toString","getPagesArrayByWidth","currentPageArg","gap","buttonPadding","buttonMinWidth","maxSymbolSize","totalWidth","w","direction","leftIndex","rightIndex","pages","getButtonWidth","withGap","length","add","buttonWidth","push","unshift","moreButtonWidth","firstButtonWidth","lastButtonWidth","isAddFirstPage","isAddlastPage","slicedArray","array","slice","reduce","previous","currentValue","returned","getPagesArray","paginationArrowIconsMap","first","next","last"],"sources":["../../../../../src/components/Pagination/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport { IconArrowFirst } from '@consta/icons/IconArrowFirst';\nimport { IconArrowLast } from '@consta/icons/IconArrowLast';\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\n\nimport { range } from '##/utils/array';\n\nimport {\n PaginationArrowTypes,\n PaginationBaseItemDefault,\n PaginationItem,\n PaginationPropGetItemClickable,\n PaginationPropGetItemKey,\n PaginationPropGetItemLabel,\n} from './types';\n\nexport const defaultGetItemLabel: PaginationPropGetItemLabel<\n PaginationBaseItemDefault\n> = (item) => item.label;\nexport const defaultGetItemKey: PaginationPropGetItemKey<\n PaginationBaseItemDefault\n> = (item) => item.key;\nexport const defaultGetItemClickable: PaginationPropGetItemClickable<\n PaginationBaseItemDefault\n> = (item) => item.clickable ?? true;\n\nexport const firstPageSeparator = '<_';\nexport const lastPageSeparator = '_>';\nexport const pageSeparatorLabel = '...';\nexport const guardCurrentPage = (\n currentPage: number | undefined,\n totalPages: number,\n) => Math.floor(Math.max(1, Math.min(currentPage || 0, totalPages)));\n\nexport const getPagesArrayByVisibleCount = (\n currentPage: number,\n totalPages: number,\n visibleCountProp: number,\n showFirstPage?: boolean,\n showLastPage?: boolean,\n): PaginationItem[] => {\n const visibleCount = Math.floor(Math.min(visibleCountProp, totalPages));\n const page = guardCurrentPage(currentPage, totalPages);\n const visibleSegmentStartToCenter = Math.ceil(visibleCount / 2);\n const visibleSegmentEndToCenter = visibleCount - visibleSegmentStartToCenter;\n const slideStart = Math.max(0, page - visibleSegmentStartToCenter);\n\n return range(visibleCount).map((i) => {\n const el =\n i +\n slideStart +\n 1 -\n Math.max(0, page + visibleSegmentEndToCenter - totalPages);\n\n if (visibleCount >= 5 && visibleCount < totalPages) {\n if (showFirstPage && i === 0 && page - visibleSegmentStartToCenter > 0) {\n return {\n key: 1,\n label: '1',\n clickable: true,\n };\n }\n if (showFirstPage && i === 1 && page - visibleSegmentStartToCenter > 0) {\n return {\n key: firstPageSeparator,\n label: pageSeparatorLabel,\n clickable: false,\n };\n }\n if (\n showLastPage &&\n i === visibleCount - 1 &&\n page + visibleSegmentEndToCenter < totalPages\n ) {\n return {\n key: totalPages,\n label: totalPages.toString(),\n clickable: true,\n };\n }\n if (\n showLastPage &&\n i === visibleCount - 2 &&\n page + visibleSegmentEndToCenter < totalPages\n ) {\n return {\n key: lastPageSeparator,\n label: pageSeparatorLabel,\n clickable: false,\n };\n }\n }\n\n return {\n key: el,\n label: el.toString(),\n clickable: true,\n };\n });\n};\n\ntype GetPagesArray = (\n currentPage: number,\n totalPages: number,\n visibleCount: number,\n showFirstPage: boolean,\n showLastPage: boolean,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => PaginationItem[];\n\ntype GetPagesArrayByWidth = (\n currentPage: number,\n totalPages: number,\n showFirstPage: boolean,\n showLastPage: boolean,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => PaginationItem[];\n\nexport const getPagesArrayByWidth: GetPagesArrayByWidth = (\n currentPageArg,\n totalPages,\n showFirstPage,\n showLastPage,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => {\n const currentPage = guardCurrentPage(currentPageArg, totalPages);\n\n let w = totalWidth;\n // направлеине добавления кнопки, true - влево, false - вправо\n let direction = false;\n // индекс добавляемой кнопки относительно от выбранной\n let leftIndex = 0;\n let rightIndex = 1;\n let pages: (PaginationItem & { buttonWidth: number })[] = [];\n\n const getButtonWidth = (label: number, withGap: boolean) => {\n return (\n Math.max(\n label.toString().length * maxSymbolSize + buttonPadding,\n buttonMinWidth,\n ) + (withGap ? gap : 0)\n );\n };\n\n while (w > 0 && pages.length < totalPages) {\n const add = direction ? currentPage + rightIndex : currentPage - leftIndex;\n\n const buttonWidth: number = getButtonWidth(add, Boolean(pages.length));\n\n if (w - buttonWidth >= 0 && add <= totalPages && add >= 1) {\n const el = {\n key: add,\n label: add.toString(),\n clickable: true,\n buttonWidth,\n };\n\n if (direction) {\n pages.push(el);\n rightIndex += 1;\n } else {\n pages.unshift(el);\n leftIndex += 1;\n }\n }\n direction = !direction;\n\n w -= add <= totalPages && add >= 1 ? buttonWidth : 0;\n }\n\n if ((showFirstPage || showLastPage) && pages.length >= 5) {\n const moreButtonWidth = getButtonWidth(1, true);\n const firstButtonWidth = getButtonWidth(1, true);\n const lastButtonWidth = getButtonWidth(totalPages, true);\n\n let isAddFirstPage = false;\n let isAddlastPage = false;\n\n if (showFirstPage && pages[0].key !== 1) {\n let array = [...pages];\n\n while (array.length > 3) {\n if (array[0].key === currentPage) {\n break;\n }\n\n const slicedArray = array.slice(1);\n\n if (\n slicedArray\n .map((el) => el.buttonWidth)\n .reduce((previous, currentValue) => previous + currentValue) +\n firstButtonWidth +\n moreButtonWidth <=\n totalWidth\n ) {\n isAddFirstPage = true;\n pages = [...slicedArray];\n break;\n }\n\n array = slicedArray;\n }\n }\n\n if (showLastPage && pages[pages.length - 1].key !== totalPages) {\n let array = [...pages];\n\n while (array.length > 3) {\n if (array[array.length - 1].key === totalPages) {\n break;\n }\n\n const slicedArray = array.slice(0, -1);\n\n if (\n slicedArray\n .map((el) => el.buttonWidth)\n .reduce((previous, currentValue) => previous + currentValue) +\n lastButtonWidth +\n moreButtonWidth +\n (isAddFirstPage ? firstButtonWidth + moreButtonWidth : 0) <=\n totalWidth\n ) {\n isAddlastPage = true;\n pages = [...slicedArray];\n break;\n }\n\n array = slicedArray;\n }\n }\n\n pages = [\n ...(isAddFirstPage\n ? [\n {\n key: 1,\n label: '1',\n clickable: true,\n buttonWidth: firstButtonWidth,\n },\n {\n key: firstPageSeparator,\n label: pageSeparatorLabel,\n buttonWidth: moreButtonWidth,\n clickable: false,\n },\n ]\n : []),\n ...pages,\n ...(isAddlastPage\n ? [\n {\n key: lastPageSeparator,\n label: pageSeparatorLabel,\n buttonWidth: moreButtonWidth,\n clickable: false,\n },\n {\n key: totalPages,\n label: totalPages.toString(),\n clickable: true,\n buttonWidth: firstButtonWidth,\n },\n ]\n : []),\n ];\n }\n\n const returned: PaginationItem[] = pages.map(({ key, label, clickable }) => ({\n key,\n label,\n clickable,\n }));\n\n return returned;\n};\n\nexport const getPagesArray: GetPagesArray = (\n currentPage,\n totalPages = 1,\n visibleCount,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n) => {\n return visibleCount\n ? getPagesArrayByVisibleCount(\n currentPage,\n totalPages,\n visibleCount,\n showFirstPage,\n showLastPage,\n )\n : getPagesArrayByWidth(\n currentPage,\n totalPages,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n );\n};\n\nexport const paginationArrowIconsMap: Record<\n PaginationArrowTypes,\n IconComponent\n> = {\n first: IconArrowFirst,\n previous: IconArrowLeft,\n next: IconArrowRight,\n last: IconArrowLast,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["IconArrowFirst","IconArrowLast","IconArrowLeft","IconArrowRight","range","defaultGetItemLabel","item","label","defaultGetItemKey","key","defaultGetItemClickable","clickable","firstPageSeparator","lastPageSeparator","pageSeparatorLabel","guardCurrentPage","currentPage","totalPages","Math","floor","max","min","getPagesArrayByVisibleCount","visibleCountProp","showFirstPage","showLastPage","visibleCount","page","visibleSegmentStartToCenter","ceil","visibleSegmentEndToCenter","slideStart","map","i","el","toString","getPagesArrayByWidth","currentPageArg","gap","buttonPadding","buttonMinWidth","maxSymbolSize","totalWidth","w","direction","leftIndex","rightIndex","pages","getButtonWidth","withGap","length","add","buttonWidth","push","unshift","moreButtonWidth","firstButtonWidth","lastButtonWidth","isAddFirstPage","isAddLastPage","slicedArray","array","slice","reduce","previous","currentValue","returned","getPagesArray","paginationArrowIconsMap","first","next","last"],"sources":["../../../../../src/components/Pagination/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport { IconArrowFirst } from '@consta/icons/IconArrowFirst';\nimport { IconArrowLast } from '@consta/icons/IconArrowLast';\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\n\nimport { range } from '##/utils/array';\n\nimport {\n PaginationArrowTypes,\n PaginationBaseItemDefault,\n PaginationItem,\n PaginationPropGetItemClickable,\n PaginationPropGetItemKey,\n PaginationPropGetItemLabel,\n} from './types';\n\nexport const defaultGetItemLabel: PaginationPropGetItemLabel<\n PaginationBaseItemDefault\n> = (item) => item.label;\nexport const defaultGetItemKey: PaginationPropGetItemKey<\n PaginationBaseItemDefault\n> = (item) => item.key;\nexport const defaultGetItemClickable: PaginationPropGetItemClickable<\n PaginationBaseItemDefault\n> = (item) => item.clickable ?? true;\n\nexport const firstPageSeparator = '<_';\nexport const lastPageSeparator = '_>';\nexport const pageSeparatorLabel = '...';\nexport const guardCurrentPage = (\n currentPage: number | undefined,\n totalPages: number,\n) => Math.floor(Math.max(1, Math.min(currentPage || 0, totalPages)));\n\nexport const getPagesArrayByVisibleCount = (\n currentPage: number,\n totalPages: number,\n visibleCountProp: number,\n showFirstPage?: boolean,\n showLastPage?: boolean,\n): PaginationItem[] => {\n const visibleCount = Math.floor(Math.min(visibleCountProp, totalPages));\n const page = guardCurrentPage(currentPage, totalPages);\n const visibleSegmentStartToCenter = Math.ceil(visibleCount / 2);\n const visibleSegmentEndToCenter = visibleCount - visibleSegmentStartToCenter;\n const slideStart = Math.max(0, page - visibleSegmentStartToCenter);\n\n return range(visibleCount).map((i) => {\n const el =\n i +\n slideStart +\n 1 -\n Math.max(0, page + visibleSegmentEndToCenter - totalPages);\n\n if (visibleCount >= 5 && visibleCount < totalPages) {\n if (showFirstPage && i === 0 && page - visibleSegmentStartToCenter > 0) {\n return {\n key: 1,\n label: '1',\n clickable: true,\n };\n }\n if (showFirstPage && i === 1 && page - visibleSegmentStartToCenter > 0) {\n return {\n key: firstPageSeparator,\n label: pageSeparatorLabel,\n clickable: false,\n };\n }\n if (\n showLastPage &&\n i === visibleCount - 1 &&\n page + visibleSegmentEndToCenter < totalPages\n ) {\n return {\n key: totalPages,\n label: totalPages.toString(),\n clickable: true,\n };\n }\n if (\n showLastPage &&\n i === visibleCount - 2 &&\n page + visibleSegmentEndToCenter < totalPages\n ) {\n return {\n key: lastPageSeparator,\n label: pageSeparatorLabel,\n clickable: false,\n };\n }\n }\n\n return {\n key: el,\n label: el.toString(),\n clickable: true,\n };\n });\n};\n\ntype GetPagesArray = (\n currentPage: number,\n totalPages: number,\n visibleCount: number,\n showFirstPage: boolean,\n showLastPage: boolean,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => PaginationItem[];\n\ntype GetPagesArrayByWidth = (\n currentPage: number,\n totalPages: number,\n showFirstPage: boolean,\n showLastPage: boolean,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => PaginationItem[];\n\nexport const getPagesArrayByWidth: GetPagesArrayByWidth = (\n currentPageArg,\n totalPages,\n showFirstPage,\n showLastPage,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => {\n const currentPage = guardCurrentPage(currentPageArg, totalPages);\n\n let w = totalWidth;\n // направление добавления кнопки, true - влево, false - вправо\n let direction = false;\n // индекс добавляемой кнопки относительно от выбранной\n let leftIndex = 0;\n let rightIndex = 1;\n let pages: (PaginationItem & { buttonWidth: number })[] = [];\n\n const getButtonWidth = (label: number, withGap: boolean) => {\n return (\n Math.max(\n label.toString().length * maxSymbolSize + buttonPadding,\n buttonMinWidth,\n ) + (withGap ? gap : 0)\n );\n };\n\n while (w > 0 && pages.length < totalPages) {\n const add = direction ? currentPage + rightIndex : currentPage - leftIndex;\n\n const buttonWidth: number = getButtonWidth(add, Boolean(pages.length));\n\n if (w - buttonWidth >= 0 && add <= totalPages && add >= 1) {\n const el = {\n key: add,\n label: add.toString(),\n clickable: true,\n buttonWidth,\n };\n\n if (direction) {\n pages.push(el);\n rightIndex += 1;\n } else {\n pages.unshift(el);\n leftIndex += 1;\n }\n }\n direction = !direction;\n\n w -= add <= totalPages && add >= 1 ? buttonWidth : 0;\n }\n\n if ((showFirstPage || showLastPage) && pages.length >= 5) {\n const moreButtonWidth = getButtonWidth(1, true);\n const firstButtonWidth = getButtonWidth(1, true);\n const lastButtonWidth = getButtonWidth(totalPages, true);\n\n let isAddFirstPage = false;\n let isAddLastPage = false;\n\n if (showFirstPage && pages[0].key !== 1) {\n let array = [...pages];\n\n while (array.length > 3) {\n if (array[0].key === currentPage) {\n break;\n }\n\n const slicedArray = array.slice(1);\n\n if (\n slicedArray\n .map((el) => el.buttonWidth)\n .reduce((previous, currentValue) => previous + currentValue) +\n firstButtonWidth +\n moreButtonWidth <=\n totalWidth\n ) {\n isAddFirstPage = true;\n pages = [...slicedArray];\n break;\n }\n\n array = slicedArray;\n }\n }\n\n if (showLastPage && pages[pages.length - 1].key !== totalPages) {\n let array = [...pages];\n\n while (array.length > 3) {\n if (array[array.length - 1].key === totalPages) {\n break;\n }\n\n const slicedArray = array.slice(0, -1);\n\n if (\n slicedArray\n .map((el) => el.buttonWidth)\n .reduce((previous, currentValue) => previous + currentValue) +\n lastButtonWidth +\n moreButtonWidth +\n (isAddFirstPage ? firstButtonWidth + moreButtonWidth : 0) <=\n totalWidth\n ) {\n isAddLastPage = true;\n pages = [...slicedArray];\n break;\n }\n\n array = slicedArray;\n }\n }\n\n pages = [\n ...(isAddFirstPage\n ? [\n {\n key: 1,\n label: '1',\n clickable: true,\n buttonWidth: firstButtonWidth,\n },\n {\n key: firstPageSeparator,\n label: pageSeparatorLabel,\n buttonWidth: moreButtonWidth,\n clickable: false,\n },\n ]\n : []),\n ...pages,\n ...(isAddLastPage\n ? [\n {\n key: lastPageSeparator,\n label: pageSeparatorLabel,\n buttonWidth: moreButtonWidth,\n clickable: false,\n },\n {\n key: totalPages,\n label: totalPages.toString(),\n clickable: true,\n buttonWidth: firstButtonWidth,\n },\n ]\n : []),\n ];\n }\n\n const returned: PaginationItem[] = pages.map(({ key, label, clickable }) => ({\n key,\n label,\n clickable,\n }));\n\n return returned;\n};\n\nexport const getPagesArray: GetPagesArray = (\n currentPage,\n totalPages = 1,\n visibleCount,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n) => {\n return visibleCount\n ? getPagesArrayByVisibleCount(\n currentPage,\n totalPages,\n visibleCount,\n showFirstPage,\n showLastPage,\n )\n : getPagesArrayByWidth(\n currentPage,\n totalPages,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n );\n};\n\nexport const paginationArrowIconsMap: Record<\n PaginationArrowTypes,\n IconComponent\n> = {\n first: IconArrowFirst,\n previous: IconArrowLeft,\n next: IconArrowRight,\n last: IconArrowLast,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePaginationItems.js","names":["useMemo","useRefs","useResizeObserved","getPagesArray","usePaginationKeys","itemSizeMap","l","m","s","xs","getElementWidth","el","getBoundingClientRect","width","hashArrows","arrows","map","Boolean","join","usePaginationItems","props","visibleCount","value","items","showFirstPage","showLastPage","containerEventListener","hotKeys","outerMostArrows","type","handleNext","handlePrevious","refs","gap","buttonPadding","buttonMinWidth","maxSymbolSize","Math","max","totalWidth","pages"],"sources":["../../../../../src/components/Pagination/usePaginationItems.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { useResizeObserved } from '##/hooks/useResizeObserved';\n\nimport { getPagesArray } from './helpers';\nimport {\n PaginationPropArrow,\n PaginationPropHotKey,\n PaginationPropSize,\n PaginationPropType,\n} from './types';\nimport { usePaginationKeys } from './usePaginationKeys';\n\ntype UsePaginationItemsProps = {\n visibleCount?: number;\n value: number;\n items: number;\n showFirstPage?: boolean;\n showLastPage?: boolean;\n containerEventListener?: HTMLElement | Window;\n size: PaginationPropSize;\n hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];\n arrows?: [PaginationPropArrow?, PaginationPropArrow?];\n outerMostArrows?: [PaginationPropArrow?, PaginationPropArrow?];\n type?: PaginationPropType;\n handleNext: (e: React.MouseEvent | KeyboardEvent) => void;\n handlePrevious: (e: React.MouseEvent | KeyboardEvent) => void;\n};\n\nexport const itemSizeMap: Record<PaginationPropSize, number> = {\n l: 48,\n m: 40,\n s: 32,\n xs: 24,\n};\n\nconst getElementWidth = (el: HTMLElement | null) =>\n el?.getBoundingClientRect().width ?? 0;\n\nconst hashArrows = (\n arrows: [PaginationPropArrow?, PaginationPropArrow?] | undefined,\n) => arrows?.map(Boolean).join('-') || 'false-false';\n\nexport const usePaginationItems = (props: UsePaginationItemsProps) => {\n const {\n visibleCount,\n value,\n items,\n showFirstPage,\n showLastPage,\n containerEventListener,\n hotKeys,\n outerMostArrows,\n type,\n arrows,\n handleNext,\n handlePrevious,\n } = props;\n\n const refs = useRefs<HTMLDivElement>(20, [\n items,\n type,\n hashArrows(outerMostArrows),\n hashArrows(arrows),\n ]);\n\n const width = useResizeObserved(refs, getElementWidth);\n\n // расстояние между кнопками\n const gap = width[7] - width[5] - width[6];\n // внутренний отступ кнопки\n const buttonPadding = width[18] - width[19];\n // минимальная ширина кнопки\n const buttonMinWidth = width[5];\n // Максималяная ширина символа\n const maxSymbolSize = Math.max(\n width[8],\n width[9],\n width[10],\n width[11],\n width[12],\n width[13],\n width[14],\n width[15],\n width[16],\n width[17],\n );\n // разрешенная ширина\n const totalWidth =\n width[4] -\n (width[0] ? width[0] + gap : 0) -\n (width[1] ? width[1] + gap : 0) -\n (width[2] ? width[2] + gap : 0) -\n (width[3] ? width[3] + gap : 0);\n\n const pages = useMemo(\n () =>\n type === 'default' && buttonMinWidth\n ? getPagesArray(\n value,\n items,\n visibleCount || 0,\n showFirstPage || false,\n showLastPage || false,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n )\n : [],\n [\n type,\n value,\n items,\n visibleCount,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n ],\n );\n\n usePaginationKeys({\n containerEventListener,\n hotKeys,\n handleNext,\n handlePrevious,\n });\n\n return [pages, refs, maxSymbolSize] as const;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"usePaginationItems.js","names":["useMemo","useRefs","useResizeObserved","getPagesArray","usePaginationKeys","itemSizeMap","l","m","s","xs","getElementWidth","el","getBoundingClientRect","width","hashArrows","arrows","map","Boolean","join","usePaginationItems","props","visibleCount","value","items","showFirstPage","showLastPage","containerEventListener","hotKeys","outerMostArrows","type","handleNext","handlePrevious","refs","gap","buttonPadding","buttonMinWidth","maxSymbolSize","Math","max","totalWidth","pages"],"sources":["../../../../../src/components/Pagination/usePaginationItems.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { useResizeObserved } from '##/hooks/useResizeObserved';\n\nimport { getPagesArray } from './helpers';\nimport {\n PaginationPropArrow,\n PaginationPropHotKey,\n PaginationPropSize,\n PaginationPropType,\n} from './types';\nimport { usePaginationKeys } from './usePaginationKeys';\n\ntype UsePaginationItemsProps = {\n visibleCount?: number;\n value: number;\n items: number;\n showFirstPage?: boolean;\n showLastPage?: boolean;\n containerEventListener?: HTMLElement | Window;\n size: PaginationPropSize;\n hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];\n arrows?: [PaginationPropArrow?, PaginationPropArrow?];\n outerMostArrows?: [PaginationPropArrow?, PaginationPropArrow?];\n type?: PaginationPropType;\n handleNext: (e: React.MouseEvent | KeyboardEvent) => void;\n handlePrevious: (e: React.MouseEvent | KeyboardEvent) => void;\n};\n\nexport const itemSizeMap: Record<PaginationPropSize, number> = {\n l: 48,\n m: 40,\n s: 32,\n xs: 24,\n};\n\nconst getElementWidth = (el: HTMLElement | null) =>\n el?.getBoundingClientRect().width ?? 0;\n\nconst hashArrows = (\n arrows: [PaginationPropArrow?, PaginationPropArrow?] | undefined,\n) => arrows?.map(Boolean).join('-') || 'false-false';\n\nexport const usePaginationItems = (props: UsePaginationItemsProps) => {\n const {\n visibleCount,\n value,\n items,\n showFirstPage,\n showLastPage,\n containerEventListener,\n hotKeys,\n outerMostArrows,\n type,\n arrows,\n handleNext,\n handlePrevious,\n } = props;\n\n const refs = useRefs<HTMLDivElement>(20, [\n items,\n type,\n hashArrows(outerMostArrows),\n hashArrows(arrows),\n ]);\n\n const width = useResizeObserved(refs, getElementWidth);\n\n // расстояние между кнопками\n const gap = width[7] - width[5] - width[6];\n // внутренний отступ кнопки\n const buttonPadding = width[18] - width[19];\n // минимальная ширина кнопки\n const buttonMinWidth = width[5];\n // Максимальная ширина символа\n const maxSymbolSize = Math.max(\n width[8],\n width[9],\n width[10],\n width[11],\n width[12],\n width[13],\n width[14],\n width[15],\n width[16],\n width[17],\n );\n // разрешенная ширина\n const totalWidth =\n width[4] -\n (width[0] ? width[0] + gap : 0) -\n (width[1] ? width[1] + gap : 0) -\n (width[2] ? width[2] + gap : 0) -\n (width[3] ? width[3] + gap : 0);\n\n const pages = useMemo(\n () =>\n type === 'default' && buttonMinWidth\n ? getPagesArray(\n value,\n items,\n visibleCount || 0,\n showFirstPage || false,\n showLastPage || false,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n )\n : [],\n [\n type,\n value,\n items,\n visibleCount,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n ],\n );\n\n usePaginationKeys({\n containerEventListener,\n hotKeys,\n handleNext,\n handlePrevious,\n });\n\n return [pages, refs, maxSymbolSize] as const;\n};\n"],"mappings":"AAAA,OAASA,OAAT,KAAwB,OAAxB,CAEA,OAASC,OAAT,2BACA,OAASC,iBAAT,qCAEA,OAASC,aAAT,iBAOA,OAASC,iBAAT,2BAkBA,MAAO,IAAMC,YAA+C,CAAG,CAC7DC,CAAC,CAAE,EAD0D,CAE7DC,CAAC,CAAE,EAF0D,CAG7DC,CAAC,CAAE,EAH0D,CAI7DC,EAAE,CAAE,EAJyD,CAAxD,C,GAODC,gBAAe,CAAG,SAACC,CAAD,gCACtBA,CADsB,WACtBA,CADsB,QACtBA,CAAE,CAAEC,qBAAJ,GAA4BC,KADN,gBACe,CADf,C,CAGlBC,UAAU,CAAG,SACjBC,CADiB,QAEd,QAAAA,CAAM,WAANA,CAAA,QAAAA,CAAM,CAAEC,GAAR,CAAYC,OAAZ,EAAqBC,IAArB,CAA0B,GAA1B,IAAkC,aAFpB,C,CAInB,MAAO,IAAMC,mBAAkB,CAAG,SAACC,CAAD,CAAoC,IAElEC,EAFkE,CAchED,CAdgE,CAElEC,YAFkE,CAGlEC,CAHkE,CAchEF,CAdgE,CAGlEE,KAHkE,CAIlEC,CAJkE,CAchEH,CAdgE,CAIlEG,KAJkE,CAKlEC,CALkE,CAchEJ,CAdgE,CAKlEI,aALkE,CAMlEC,CANkE,CAchEL,CAdgE,CAMlEK,YANkE,CAOlEC,CAPkE,CAchEN,CAdgE,CAOlEM,sBAPkE,CAQlEC,CARkE,CAchEP,CAdgE,CAQlEO,OARkE,CASlEC,CATkE,CAchER,CAdgE,CASlEQ,eATkE,CAUlEC,CAVkE,CAchET,CAdgE,CAUlES,IAVkE,CAWlEd,CAXkE,CAchEK,CAdgE,CAWlEL,MAXkE,CAYlEe,CAZkE,CAchEV,CAdgE,CAYlEU,UAZkE,CAalEC,CAbkE,CAchEX,CAdgE,CAalEW,cAbkE,CAgB9DC,CAAI,CAAG/B,OAAO,CAAiB,EAAjB,CAAqB,CACvCsB,CADuC,CAEvCM,CAFuC,CAGvCf,UAAU,CAACc,CAAD,CAH6B,CAIvCd,UAAU,CAACC,CAAD,CAJ6B,CAArB,CAhBgD,CAuB9DF,CAAK,CAAGX,iBAAiB,CAAC8B,CAAD,CAAOtB,eAAP,CAvBqC,CA0B9DuB,CAAG,CAAGpB,CAAK,CAAC,CAAD,CAAL,CAAWA,CAAK,CAAC,CAAD,CAAhB,CAAsBA,CAAK,CAAC,CAAD,CA1B6B,CA4B9DqB,CAAa,CAAGrB,CAAK,CAAC,EAAD,CAAL,CAAYA,CAAK,CAAC,EAAD,CA5B6B,CA8B9DsB,CAAc,CAAGtB,CAAK,CAAC,CAAD,CA9BwC,CAgC9DuB,CAAa,CAAGC,IAAI,CAACC,GAAL,CACpBzB,CAAK,CAAC,CAAD,CADe,CAEpBA,CAAK,CAAC,CAAD,CAFe,CAGpBA,CAAK,CAAC,EAAD,CAHe,CAIpBA,CAAK,CAAC,EAAD,CAJe,CAKpBA,CAAK,CAAC,EAAD,CALe,CAMpBA,CAAK,CAAC,EAAD,CANe,CAOpBA,CAAK,CAAC,EAAD,CAPe,CAQpBA,CAAK,CAAC,EAAD,CARe,CASpBA,CAAK,CAAC,EAAD,CATe,CAUpBA,CAAK,CAAC,EAAD,CAVe,CAhC8C,CA6C9D0B,CAAU,CACd1B,CAAK,CAAC,CAAD,CAAL,EACCA,CAAK,CAAC,CAAD,CAAL,CAAWA,CAAK,CAAC,CAAD,CAAL,CAAWoB,CAAtB,CAA4B,CAD7B,GAECpB,CAAK,CAAC,CAAD,CAAL,CAAWA,CAAK,CAAC,CAAD,CAAL,CAAWoB,CAAtB,CAA4B,CAF7B,GAGCpB,CAAK,CAAC,CAAD,CAAL,CAAWA,CAAK,CAAC,CAAD,CAAL,CAAWoB,CAAtB,CAA4B,CAH7B,GAICpB,CAAK,CAAC,CAAD,CAAL,CAAWA,CAAK,CAAC,CAAD,CAAL,CAAWoB,CAAtB,CAA4B,CAJ7B,CA9CkE,CAoD9DO,CAAK,CAAGxC,OAAO,CACnB,iBACW,SAAT,GAAA6B,CAAI,EAAkBM,CAAtB,CACIhC,aAAa,CACXmB,CADW,CAEXC,CAFW,CAGXF,CAAY,EAAI,CAHL,CAIXG,CAAa,IAJF,CAKXC,CAAY,IALD,CAMXQ,CANW,CAOXC,CAPW,CAQXC,CARW,CASXC,CATW,CAUXG,CAVW,CADjB,CAaI,EAdN,CADmB,CAgBnB,CACEV,CADF,CAEEP,CAFF,CAGEC,CAHF,CAIEF,CAJF,CAKEG,CALF,CAMEC,CANF,CAOEQ,CAPF,CAQEC,CARF,CASEC,CATF,CAUEC,CAVF,CAWEG,CAXF,CAhBmB,CApD+C,CA0FpE,MAPAnC,kBAAiB,CAAC,CAChBsB,sBAAsB,CAAtBA,CADgB,CAEhBC,OAAO,CAAPA,CAFgB,CAGhBG,UAAU,CAAVA,CAHgB,CAIhBC,cAAc,CAAdA,CAJgB,CAAD,CAOjB,CAAO,CAACS,CAAD,CAAQR,CAAR,CAAcI,CAAd,CACR,CA3FM"}
@@ -37,7 +37,8 @@ export declare type PopoverProps = PropsWithJsxAttributes<{
37
37
  onClickOutside?: ClickOutsideHandler;
38
38
  onSetDirection?: (direction: Direction) => void;
39
39
  viewportRef?: React.RefObject<HTMLElement>;
40
+ container?: Element;
40
41
  } & PositioningProps>;
41
42
  export declare type Props = PopoverProps;
42
- export declare const Popover: React.ForwardRefExoticComponent<Pick<PopoverProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "position" | "arrowOffset" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "viewportRef" | "anchorRef" | "equalAnchorWidth"> & React.RefAttributes<HTMLDivElement>>;
43
+ export declare const Popover: React.ForwardRefExoticComponent<Pick<PopoverProps, "slot" | "style" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "position" | "container" | "arrowOffset" | "offset" | "direction" | "possibleDirections" | "spareDirection" | "isInteractive" | "onClickOutside" | "onSetDirection" | "viewportRef" | "anchorRef" | "equalAnchorWidth"> & React.RefAttributes<HTMLDivElement>>;
43
44
  export {};
@@ -1,2 +1,2 @@
1
- import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var _excluded=["children","direction","offset","arrowOffset","possibleDirections","isInteractive","onClickOutside","spareDirection","style","className","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Popover.css";import React,{forwardRef,useEffect,useLayoutEffect,useMemo}from"react";import{PortalWithTheme,usePortalContext}from"../PortalWithTheme";import{useTheme}from"../Theme/Theme";import{useClickOutside}from"../../hooks/useClickOutside";import{useComponentSize}from"../../hooks/useComponentSize";import{useForkRef}from"../../hooks/useForkRef";import{cn}from"../../utils/bem";import{isRenderProp}from"../../utils/isRenderProp";import{isNumber,isString}from"../../utils/type-guards";import{getComputedPositionAndDirection,getPointPossition,getRenderPosition}from"./helpers";import{usePopoverReposition}from"./usePopoverReposition";export var directionsStartCenter=["downCenter","upCenter","downRight","downLeft","upRight","upLeft","leftUp","leftCenter","leftDown","rightUp","rightCenter","rightDown"];export var directionsStartEdge=["downStartLeft","upStartLeft","downStartRight","upStartRight","leftStartUp","leftStartDown","rightStartUp","rightStartDown"];export var popoverPropOffset=["3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl","6xl"];export var directions=[].concat(directionsStartCenter,directionsStartEdge);var getOffset=function(a,b){if(isNumber(b))return b;if(isString(b)&&a.current){var g=getComputedStyle(a.current).getPropertyValue("--space-".concat(b));if(g&&/px$/.test(g))return+g.slice(0,g.length-2);if(g&&/rem$/.test(g)){var c=parseFloat(getComputedStyle(document.documentElement).fontSize),d=+g.slice(0,g.length-3);return c*d}if(g&&/em$/.test(g)){var e=parseFloat(getComputedStyle(a.current).fontSize),f=+g.slice(0,g.length-2);return e*f}return 0}return 0},ContextConsumer=function(a){var b=a.onClickOutside,c=a.children,d=a.ignoreClicksInsideRefs,e=usePortalContext(),f=e.refs;return useClickOutside({isActive:!!b,ignoreClicksInsideRefs:[].concat(_toConsumableArray(d||[]),_toConsumableArray(f||[])),handler:b}),c},cnPopover=cn("Popover");export var Popover=forwardRef(function(a,b){var c,d=a.children,e=a.direction,f=void 0===e?"upCenter":e,g=a.offset,h=void 0===g?0:g,i=a.arrowOffset,j=a.possibleDirections,k=void 0===j?directions:j,l=a.isInteractive,m=a.onClickOutside,n=a.spareDirection,o=void 0===n?"downStartLeft":n,p=a.style,q=a.className,r=a.position,s=a.anchorRef,t=a.equalAnchorWidth,u=a.onSetDirection,v=a.viewportRef,w=_objectWithoutProperties(a,_excluded),x=(null===v||void 0===v?void 0:v.current)||document.documentElement,y=React.useRef(null),z=useTheme(),A=z.theme,B=React.useState(),C=_slicedToArray(B,2),D=C[0],E=C[1],F=useComponentSize(y),G=F.width,H=F.height,I=useComponentSize(s||{current:null}),J=React.useRef(null),K=React.useState([]),L=_slicedToArray(K,2),M=L[0],N=L[1],O=function(){N(function(a){return a.length?[]:a}),J.current=null},P=function(){var a;return E(null===s||void 0===s||null===(a=s.current)||void 0===a?void 0:a.getBoundingClientRect())},Q=useMemo(function(){return getOffset(y,h)},[h,!!y.current]),R=getComputedPositionAndDirection({contentSize:{width:G,height:H},viewportSize:{width:x.clientWidth,height:x.clientHeight},arrowOffset:i,offset:Q,direction:f,possibleDirections:k,bannedDirections:M,position:getPointPossition(x,D?{x:D.left,y:D.top}:r,!!(null!==v&&void 0!==v&&v.current)),anchorSize:I,spareDirection:o}),S=R.position,T=R.direction;useEffect(function(){return null===u||void 0===u?void 0:u(T)},[T]),useEffect(P,[I]),usePopoverReposition({isActive:!0,scrollAnchorRef:s||{current:null},onRequestReposition:function onRequestReposition(){O(),P()}}),useLayoutEffect(function(){J.current!==T&&(J.current&&!M.includes(J.current)&&!M.includes(T)&&T!==o&&N(function(a){return J.current?[].concat(_toConsumableArray(a),[J.current]):a}),J.current=T)},[T]),useLayoutEffect(O,[a]);var U=getRenderPosition(x,S,!!(null!==v&&void 0!==v&&v.current),G,H),V=!U||!H||!G;return React.createElement(PortalWithTheme,Object.assign({},w,{preset:A,className:cnPopover({direction:T,notVisible:V},[q]),container:window.document.body,ref:useForkRef([y,b]),style:_objectSpread(_objectSpread({},p),V?{}:(c={},_defineProperty(c,"--popover-left","".concat(U.x,"px")),_defineProperty(c,"--popover-top","".concat(U.y,"px")),_defineProperty(c,"--popover-width",t?"".concat(I.width,"px"):void 0),_defineProperty(c,"--popover-pointer-events",!(void 0!==l)||l?void 0:"none"),_defineProperty(c,"--popover-visibility",S?void 0:"hidden"),c))}),React.createElement(ContextConsumer,{onClickOutside:m,ignoreClicksInsideRefs:[y,s||{current:null}]},isRenderProp(d)?d(T):d))});
1
+ import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var _excluded=["children","direction","offset","arrowOffset","possibleDirections","isInteractive","onClickOutside","spareDirection","style","className","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef","container"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Popover.css";import React,{forwardRef,useEffect,useLayoutEffect,useMemo}from"react";import{PortalWithTheme,usePortalContext}from"../PortalWithTheme";import{useTheme}from"../Theme/Theme";import{useClickOutside}from"../../hooks/useClickOutside";import{useComponentSize}from"../../hooks/useComponentSize";import{useForkRef}from"../../hooks/useForkRef";import{cn}from"../../utils/bem";import{isRenderProp}from"../../utils/isRenderProp";import{isNumber,isString}from"../../utils/type-guards";import{getComputedPositionAndDirection,getPointPosition,getRenderPosition}from"./helpers";import{usePopoverReposition}from"./usePopoverReposition";export var directionsStartCenter=["downCenter","upCenter","downRight","downLeft","upRight","upLeft","leftUp","leftCenter","leftDown","rightUp","rightCenter","rightDown"];export var directionsStartEdge=["downStartLeft","upStartLeft","downStartRight","upStartRight","leftStartUp","leftStartDown","rightStartUp","rightStartDown"];export var popoverPropOffset=["3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl","6xl"];export var directions=[].concat(directionsStartCenter,directionsStartEdge);var getOffset=function(a,b){if(isNumber(b))return b;if(isString(b)&&a.current){var g=getComputedStyle(a.current).getPropertyValue("--space-".concat(b));if(g&&/px$/.test(g))return+g.slice(0,g.length-2);if(g&&/rem$/.test(g)){var c=parseFloat(getComputedStyle(document.documentElement).fontSize),d=+g.slice(0,g.length-3);return c*d}if(g&&/em$/.test(g)){var e=parseFloat(getComputedStyle(a.current).fontSize),f=+g.slice(0,g.length-2);return e*f}return 0}return 0},ContextConsumer=function(a){var b=a.onClickOutside,c=a.children,d=a.ignoreClicksInsideRefs,e=usePortalContext(),f=e.refs;return useClickOutside({isActive:!!b,ignoreClicksInsideRefs:[].concat(_toConsumableArray(d||[]),_toConsumableArray(f||[])),handler:b}),c},cnPopover=cn("Popover");export var Popover=forwardRef(function(a,b){var c,d=a.children,e=a.direction,f=void 0===e?"upCenter":e,g=a.offset,h=void 0===g?0:g,i=a.arrowOffset,j=a.possibleDirections,k=void 0===j?directions:j,l=a.isInteractive,m=a.onClickOutside,n=a.spareDirection,o=void 0===n?"downStartLeft":n,p=a.style,q=a.className,r=a.position,s=a.anchorRef,t=a.equalAnchorWidth,u=a.onSetDirection,v=a.viewportRef,w=a.container,x=void 0===w?window.document.body:w,y=_objectWithoutProperties(a,_excluded),z=(null===v||void 0===v?void 0:v.current)||document.documentElement,A=React.useRef(null),B=useTheme(),C=B.theme,D=React.useState(),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useComponentSize(A),I=H.width,J=H.height,K=useComponentSize(s||{current:null}),L=React.useRef(null),M=React.useState([]),N=_slicedToArray(M,2),O=N[0],P=N[1],Q=function(){P(function(a){return a.length?[]:a}),L.current=null},R=function(){var a;return G(null===s||void 0===s||null===(a=s.current)||void 0===a?void 0:a.getBoundingClientRect())},S=useMemo(function(){return getOffset(A,h)},[h,!!A.current]),T=getComputedPositionAndDirection({contentSize:{width:I,height:J},viewportSize:{width:z.clientWidth,height:z.clientHeight},arrowOffset:i,offset:S,direction:f,possibleDirections:k,bannedDirections:O,position:getPointPosition(z,F?{x:F.left,y:F.top}:r,!!(null!==v&&void 0!==v&&v.current)),anchorSize:K,spareDirection:o}),U=T.position,V=T.direction;useEffect(function(){return null===u||void 0===u?void 0:u(V)},[V]),useEffect(R,[K]),usePopoverReposition({isActive:!0,scrollAnchorRef:s||{current:null},onRequestReposition:function onRequestReposition(){Q(),R()}}),useLayoutEffect(function(){L.current!==V&&(L.current&&!O.includes(L.current)&&!O.includes(V)&&V!==o&&P(function(a){return L.current?[].concat(_toConsumableArray(a),[L.current]):a}),L.current=V)},[V]),useLayoutEffect(Q,[a]);var W=getRenderPosition(z,U,!!(null!==v&&void 0!==v&&v.current),I,J),X=!W||!J||!I;return React.createElement(PortalWithTheme,Object.assign({},y,{preset:C,className:cnPopover({direction:V,notVisible:X},[q]),container:x,ref:useForkRef([A,b]),style:_objectSpread(_objectSpread({},p),X?{}:(c={},_defineProperty(c,"--popover-left","".concat(W.x,"px")),_defineProperty(c,"--popover-top","".concat(W.y,"px")),_defineProperty(c,"--popover-width",t?"".concat(K.width,"px"):void 0),_defineProperty(c,"--popover-pointer-events",!(void 0!==l)||l?void 0:"none"),_defineProperty(c,"--popover-visibility",U?void 0:"hidden"),c))}),React.createElement(ContextConsumer,{onClickOutside:m,ignoreClicksInsideRefs:[A,s||{current:null}]},isRenderProp(d)?d(V):d))});
2
2
  //# sourceMappingURL=Popover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","names":["React","forwardRef","useEffect","useLayoutEffect","useMemo","PortalWithTheme","usePortalContext","useTheme","useClickOutside","useComponentSize","useForkRef","cn","isRenderProp","isNumber","isString","getComputedPositionAndDirection","getPointPossition","getRenderPosition","usePopoverReposition","directionsStartCenter","directionsStartEdge","popoverPropOffset","directions","getOffset","ref","propOffset","current","cssVar","getComputedStyle","getPropertyValue","test","slice","length","fontSize","parseFloat","document","documentElement","rem","em","ContextConsumer","onClickOutside","children","ignoreClicksInsideRefs","refs","isActive","handler","cnPopover","Popover","props","componentRef","direction","passedDirection","offset","arrowOffset","possibleDirections","isInteractive","spareDirection","style","className","passedPosition","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef","otherProps","viewportElement","useRef","theme","useState","anchorClientRect","setAnchorClientRect","width","height","anchorSize","previousDirectionRef","bannedDirections","setBannedDirections","resetBannedDirections","state","updateAnchorClientRect","getBoundingClientRect","contentSize","viewportSize","clientWidth","clientHeight","x","left","y","top","scrollAnchorRef","onRequestReposition","includes","renderPosition","notVisible","window","body"],"sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import './Popover.css';\n\nimport React, { forwardRef, useEffect, useLayoutEffect, useMemo } from 'react';\n\nimport {\n PortalWithTheme,\n usePortalContext,\n} from '##/components/PortalWithTheme';\nimport { useTheme } from '##/components/Theme/Theme';\nimport { ClickOutsideHandler, useClickOutside } from '##/hooks/useClickOutside';\nimport { useComponentSize } from '##/hooks/useComponentSize';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cn } from '##/utils/bem';\nimport { isRenderProp } from '##/utils/isRenderProp';\nimport { isNumber, isString } from '##/utils/type-guards';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport {\n getComputedPositionAndDirection,\n getPointPossition,\n getRenderPosition,\n} from './helpers';\nimport { usePopoverReposition } from './usePopoverReposition';\n\n/**\n * Стороны упорядочены по приоритету:\n * Используется первая сторона, в которую смог вписаться поповер.\n */\nexport const directionsStartCenter = [\n 'downCenter',\n 'upCenter',\n\n 'downRight',\n 'downLeft',\n 'upRight',\n 'upLeft',\n\n 'leftUp',\n 'leftCenter',\n 'leftDown',\n\n 'rightUp',\n 'rightCenter',\n 'rightDown',\n] as const;\n\nexport const directionsStartEdge = [\n 'downStartLeft',\n 'upStartLeft',\n\n 'downStartRight',\n 'upStartRight',\n\n 'leftStartUp',\n 'leftStartDown',\n\n 'rightStartUp',\n 'rightStartDown',\n] as const;\n\nexport const popoverPropOffset = [\n '3xs',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl',\n] as const;\nexport type PopoverPropOffset = typeof popoverPropOffset[number] | number;\n\nexport const directions = [...directionsStartCenter, ...directionsStartEdge];\n\nexport type Direction = typeof directions[number];\n\nexport type Position = { x: number; y: number } | undefined;\n\nexport type PositioningProps =\n | {\n anchorRef: React.RefObject<HTMLElement>;\n equalAnchorWidth?: boolean;\n position?: never;\n }\n | {\n anchorRef?: never;\n equalAnchorWidth?: never;\n position: Position;\n };\n\ntype ChildrenRenderProp = (direction: Direction) => React.ReactNode;\n\nexport type PopoverProps = PropsWithJsxAttributes<\n {\n direction?: Direction;\n spareDirection?: Direction;\n offset?: PopoverPropOffset;\n arrowOffset?: number;\n possibleDirections?: readonly Direction[];\n isInteractive?: boolean;\n children: React.ReactNode | ChildrenRenderProp;\n onClickOutside?: ClickOutsideHandler;\n onSetDirection?: (direction: Direction) => void;\n viewportRef?: React.RefObject<HTMLElement>;\n } & PositioningProps\n>;\n\nexport type Props = PopoverProps; // удалить при мажере\n\nconst getOffset = (\n ref: React.RefObject<HTMLDivElement>,\n propOffset: PopoverPropOffset,\n) => {\n if (isNumber(propOffset)) {\n return propOffset;\n }\n\n if (isString(propOffset) && ref.current) {\n const cssVar = getComputedStyle(ref.current).getPropertyValue(\n `--space-${propOffset}`,\n );\n\n if (cssVar && /px$/.test(cssVar)) {\n return Number(cssVar.slice(0, cssVar.length - 2));\n }\n\n if (cssVar && /rem$/.test(cssVar)) {\n const fontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize,\n );\n const rem = Number(cssVar.slice(0, cssVar.length - 3));\n\n return fontSize * rem;\n }\n\n if (cssVar && /em$/.test(cssVar)) {\n const fontSize = parseFloat(getComputedStyle(ref.current).fontSize);\n const em = Number(cssVar.slice(0, cssVar.length - 2));\n\n return fontSize * em;\n }\n\n return 0;\n }\n\n return 0;\n};\n\n/**\n * Подписчик на PortalWithThemeProvider\n * получает рефы всех вложенных порталов в модалку\n * для дальнейшего исключения их из useClickOutside\n */\nconst ContextConsumer: React.FC<{\n onClickOutside?: (event: MouseEvent) => void;\n ignoreClicksInsideRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n children: React.ReactNode;\n}> = ({ onClickOutside, children, ignoreClicksInsideRefs }) => {\n const { refs } = usePortalContext();\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [\n ...(ignoreClicksInsideRefs || []),\n ...(refs || []),\n ],\n handler: onClickOutside,\n });\n\n return children as React.ReactElement;\n};\n\nconst cnPopover = cn('Popover');\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, componentRef) => {\n const {\n children,\n direction: passedDirection = 'upCenter',\n offset: propOffset = 0,\n arrowOffset,\n possibleDirections = directions,\n isInteractive = true,\n onClickOutside,\n spareDirection = 'downStartLeft',\n style,\n className,\n position: passedPosition,\n anchorRef,\n equalAnchorWidth,\n onSetDirection,\n viewportRef,\n ...otherProps\n } = props;\n\n // console.log(viewportRef);\n\n const viewportElement = viewportRef?.current || document.documentElement;\n\n const ref = React.useRef<HTMLDivElement>(null);\n const { theme } = useTheme();\n\n const [anchorClientRect, setAnchorClientRect] = React.useState<\n DOMRect | undefined\n >();\n const { width, height } = useComponentSize(ref);\n const anchorSize = useComponentSize(anchorRef || { current: null });\n const previousDirectionRef = React.useRef<Direction | null>(null);\n const [bannedDirections, setBannedDirections] = React.useState<\n readonly Direction[]\n >([]);\n\n const resetBannedDirections = () => {\n setBannedDirections((state) => (state.length ? [] : state));\n previousDirectionRef.current = null;\n };\n\n const updateAnchorClientRect = () =>\n setAnchorClientRect(anchorRef?.current?.getBoundingClientRect());\n\n const offset = useMemo(\n () => getOffset(ref, propOffset),\n [propOffset, Boolean(ref.current)],\n );\n\n const { position, direction } = getComputedPositionAndDirection({\n contentSize: { width, height },\n viewportSize: {\n // Размер вьюпорта без скроллбаров\n width: viewportElement.clientWidth,\n height: viewportElement.clientHeight,\n },\n arrowOffset,\n offset,\n direction: passedDirection,\n possibleDirections,\n bannedDirections,\n position: getPointPossition(\n viewportElement,\n anchorClientRect\n ? { x: anchorClientRect.left, y: anchorClientRect.top }\n : passedPosition,\n !!viewportRef?.current,\n ),\n anchorSize,\n spareDirection,\n });\n\n useEffect(() => onSetDirection?.(direction), [direction]);\n\n useEffect(updateAnchorClientRect, [anchorSize]);\n\n usePopoverReposition({\n isActive: true,\n scrollAnchorRef: anchorRef || { current: null },\n onRequestReposition: () => {\n resetBannedDirections();\n updateAnchorClientRect();\n },\n });\n\n /**\n * Может возникнуть ситуация, когда перерасчет поповера всегда будет выдавать 2 направления\n * и бесконечно зацикливать себя. Для избежания таких кейсов мы запоминаем стороны,\n * которые не подошли, чтобы не возвращаться к ним и предотвратить бесконечный ререндер.\n * См. PopoverBannedPositionsStory\n */\n\n useLayoutEffect(() => {\n if (previousDirectionRef.current !== direction) {\n if (\n previousDirectionRef.current &&\n !bannedDirections.includes(previousDirectionRef.current) &&\n !bannedDirections.includes(direction) &&\n direction !== spareDirection\n ) {\n setBannedDirections((state) =>\n previousDirectionRef.current\n ? [...state, previousDirectionRef.current]\n : state,\n );\n }\n previousDirectionRef.current = direction;\n }\n }, [direction]);\n\n // Сбрасываем при любом изменении пропсов, чтобы заново начать перебор направлений\n // Главное не сбрасывать при изменении размеров поповера, т.к. именно оно может вызвать бесконечный перебор\n\n useLayoutEffect(resetBannedDirections, [props]);\n\n const renderPosition = getRenderPosition(\n viewportElement,\n position,\n !!viewportRef?.current,\n width,\n height,\n );\n\n const notVisible = !renderPosition || !height || !width;\n\n return (\n <PortalWithTheme\n {...otherProps}\n preset={theme}\n className={cnPopover({ direction, notVisible }, [className])}\n container={window.document.body}\n ref={useForkRef([ref, componentRef])}\n style={{\n ...style,\n ...(notVisible\n ? {}\n : {\n ['--popover-left' as string]: `${renderPosition.x}px`,\n ['--popover-top' as string]: `${renderPosition.y}px`,\n [`--popover-width` as string]: equalAnchorWidth\n ? `${anchorSize.width}px`\n : undefined,\n [`--popover-pointer-events` as string]: isInteractive\n ? undefined\n : 'none',\n [`--popover-visibility` as string]: position\n ? undefined\n : 'hidden',\n }),\n }}\n >\n <ContextConsumer\n onClickOutside={onClickOutside}\n ignoreClicksInsideRefs={[ref, anchorRef || { current: null }]}\n >\n {isRenderProp(children) ? children(direction) : children}\n </ContextConsumer>\n </PortalWithTheme>\n );\n },\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","names":["React","forwardRef","useEffect","useLayoutEffect","useMemo","PortalWithTheme","usePortalContext","useTheme","useClickOutside","useComponentSize","useForkRef","cn","isRenderProp","isNumber","isString","getComputedPositionAndDirection","getPointPosition","getRenderPosition","usePopoverReposition","directionsStartCenter","directionsStartEdge","popoverPropOffset","directions","getOffset","ref","propOffset","current","cssVar","getComputedStyle","getPropertyValue","test","slice","length","fontSize","parseFloat","document","documentElement","rem","em","ContextConsumer","onClickOutside","children","ignoreClicksInsideRefs","refs","isActive","handler","cnPopover","Popover","props","componentRef","direction","passedDirection","offset","arrowOffset","possibleDirections","isInteractive","spareDirection","style","className","passedPosition","position","anchorRef","equalAnchorWidth","onSetDirection","viewportRef","container","window","body","otherProps","viewportElement","useRef","theme","useState","anchorClientRect","setAnchorClientRect","width","height","anchorSize","previousDirectionRef","bannedDirections","setBannedDirections","resetBannedDirections","state","updateAnchorClientRect","getBoundingClientRect","contentSize","viewportSize","clientWidth","clientHeight","x","left","y","top","scrollAnchorRef","onRequestReposition","includes","renderPosition","notVisible"],"sources":["../../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import './Popover.css';\n\nimport React, { forwardRef, useEffect, useLayoutEffect, useMemo } from 'react';\n\nimport {\n PortalWithTheme,\n usePortalContext,\n} from '##/components/PortalWithTheme';\nimport { useTheme } from '##/components/Theme/Theme';\nimport { ClickOutsideHandler, useClickOutside } from '##/hooks/useClickOutside';\nimport { useComponentSize } from '##/hooks/useComponentSize';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { cn } from '##/utils/bem';\nimport { isRenderProp } from '##/utils/isRenderProp';\nimport { isNumber, isString } from '##/utils/type-guards';\nimport { PropsWithJsxAttributes } from '##/utils/types/PropsWithJsxAttributes';\n\nimport {\n getComputedPositionAndDirection,\n getPointPosition,\n getRenderPosition,\n} from './helpers';\nimport { usePopoverReposition } from './usePopoverReposition';\n\n/**\n * Стороны упорядочены по приоритету:\n * Используется первая сторона, в которую смог вписаться поповер.\n */\nexport const directionsStartCenter = [\n 'downCenter',\n 'upCenter',\n\n 'downRight',\n 'downLeft',\n 'upRight',\n 'upLeft',\n\n 'leftUp',\n 'leftCenter',\n 'leftDown',\n\n 'rightUp',\n 'rightCenter',\n 'rightDown',\n] as const;\n\nexport const directionsStartEdge = [\n 'downStartLeft',\n 'upStartLeft',\n\n 'downStartRight',\n 'upStartRight',\n\n 'leftStartUp',\n 'leftStartDown',\n\n 'rightStartUp',\n 'rightStartDown',\n] as const;\n\nexport const popoverPropOffset = [\n '3xs',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n '6xl',\n] as const;\nexport type PopoverPropOffset = typeof popoverPropOffset[number] | number;\n\nexport const directions = [...directionsStartCenter, ...directionsStartEdge];\n\nexport type Direction = typeof directions[number];\n\nexport type Position = { x: number; y: number } | undefined;\n\nexport type PositioningProps =\n | {\n anchorRef: React.RefObject<HTMLElement>;\n equalAnchorWidth?: boolean;\n position?: never;\n }\n | {\n anchorRef?: never;\n equalAnchorWidth?: never;\n position: Position;\n };\n\ntype ChildrenRenderProp = (direction: Direction) => React.ReactNode;\n\nexport type PopoverProps = PropsWithJsxAttributes<\n {\n direction?: Direction;\n spareDirection?: Direction;\n offset?: PopoverPropOffset;\n arrowOffset?: number;\n possibleDirections?: readonly Direction[];\n isInteractive?: boolean;\n children: React.ReactNode | ChildrenRenderProp;\n onClickOutside?: ClickOutsideHandler;\n onSetDirection?: (direction: Direction) => void;\n viewportRef?: React.RefObject<HTMLElement>;\n container?: Element;\n } & PositioningProps\n>;\n\nexport type Props = PopoverProps; // удалить при мажоре\n\nconst getOffset = (\n ref: React.RefObject<HTMLDivElement>,\n propOffset: PopoverPropOffset,\n) => {\n if (isNumber(propOffset)) {\n return propOffset;\n }\n\n if (isString(propOffset) && ref.current) {\n const cssVar = getComputedStyle(ref.current).getPropertyValue(\n `--space-${propOffset}`,\n );\n\n if (cssVar && /px$/.test(cssVar)) {\n return Number(cssVar.slice(0, cssVar.length - 2));\n }\n\n if (cssVar && /rem$/.test(cssVar)) {\n const fontSize = parseFloat(\n getComputedStyle(document.documentElement).fontSize,\n );\n const rem = Number(cssVar.slice(0, cssVar.length - 3));\n\n return fontSize * rem;\n }\n\n if (cssVar && /em$/.test(cssVar)) {\n const fontSize = parseFloat(getComputedStyle(ref.current).fontSize);\n const em = Number(cssVar.slice(0, cssVar.length - 2));\n\n return fontSize * em;\n }\n\n return 0;\n }\n\n return 0;\n};\n\n/**\n * Подписчик на PortalWithThemeProvider\n * получает рефы всех вложенных порталов в модалку\n * для дальнейшего исключения их из useClickOutside\n */\nconst ContextConsumer: React.FC<{\n onClickOutside?: (event: MouseEvent) => void;\n ignoreClicksInsideRefs?: ReadonlyArray<React.RefObject<HTMLElement>>;\n children: React.ReactNode;\n}> = ({ onClickOutside, children, ignoreClicksInsideRefs }) => {\n const { refs } = usePortalContext();\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [\n ...(ignoreClicksInsideRefs || []),\n ...(refs || []),\n ],\n handler: onClickOutside,\n });\n\n return children as React.ReactElement;\n};\n\nconst cnPopover = cn('Popover');\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (props, componentRef) => {\n const {\n children,\n direction: passedDirection = 'upCenter',\n offset: propOffset = 0,\n arrowOffset,\n possibleDirections = directions,\n isInteractive = true,\n onClickOutside,\n spareDirection = 'downStartLeft',\n style,\n className,\n position: passedPosition,\n anchorRef,\n equalAnchorWidth,\n onSetDirection,\n viewportRef,\n container = window.document.body,\n ...otherProps\n } = props;\n\n // console.log(viewportRef);\n\n const viewportElement = viewportRef?.current || document.documentElement;\n\n const ref = React.useRef<HTMLDivElement>(null);\n const { theme } = useTheme();\n\n const [anchorClientRect, setAnchorClientRect] = React.useState<\n DOMRect | undefined\n >();\n const { width, height } = useComponentSize(ref);\n const anchorSize = useComponentSize(anchorRef || { current: null });\n const previousDirectionRef = React.useRef<Direction | null>(null);\n const [bannedDirections, setBannedDirections] = React.useState<\n readonly Direction[]\n >([]);\n\n const resetBannedDirections = () => {\n setBannedDirections((state) => (state.length ? [] : state));\n previousDirectionRef.current = null;\n };\n\n const updateAnchorClientRect = () =>\n setAnchorClientRect(anchorRef?.current?.getBoundingClientRect());\n\n const offset = useMemo(\n () => getOffset(ref, propOffset),\n [propOffset, Boolean(ref.current)],\n );\n\n const { position, direction } = getComputedPositionAndDirection({\n contentSize: { width, height },\n viewportSize: {\n // Размер вьюпорта без скроллбаров\n width: viewportElement.clientWidth,\n height: viewportElement.clientHeight,\n },\n arrowOffset,\n offset,\n direction: passedDirection,\n possibleDirections,\n bannedDirections,\n position: getPointPosition(\n viewportElement,\n anchorClientRect\n ? { x: anchorClientRect.left, y: anchorClientRect.top }\n : passedPosition,\n !!viewportRef?.current,\n ),\n anchorSize,\n spareDirection,\n });\n\n useEffect(() => onSetDirection?.(direction), [direction]);\n\n useEffect(updateAnchorClientRect, [anchorSize]);\n\n usePopoverReposition({\n isActive: true,\n scrollAnchorRef: anchorRef || { current: null },\n onRequestReposition: () => {\n resetBannedDirections();\n updateAnchorClientRect();\n },\n });\n\n /**\n * Может возникнуть ситуация, когда перерасчет поповера всегда будет выдавать 2 направления\n * и бесконечно зацикливать себя. Для избежания таких кейсов мы запоминаем стороны,\n * которые не подошли, чтобы не возвращаться к ним и предотвратить бесконечный ререндер.\n * См. PopoverBannedPositionsStory\n */\n\n useLayoutEffect(() => {\n if (previousDirectionRef.current !== direction) {\n if (\n previousDirectionRef.current &&\n !bannedDirections.includes(previousDirectionRef.current) &&\n !bannedDirections.includes(direction) &&\n direction !== spareDirection\n ) {\n setBannedDirections((state) =>\n previousDirectionRef.current\n ? [...state, previousDirectionRef.current]\n : state,\n );\n }\n previousDirectionRef.current = direction;\n }\n }, [direction]);\n\n // Сбрасываем при любом изменении пропсов, чтобы заново начать перебор направлений\n // Главное не сбрасывать при изменении размеров поповера, т.к. именно оно может вызвать бесконечный перебор\n\n useLayoutEffect(resetBannedDirections, [props]);\n\n const renderPosition = getRenderPosition(\n viewportElement,\n position,\n !!viewportRef?.current,\n width,\n height,\n );\n\n const notVisible = !renderPosition || !height || !width;\n\n return (\n <PortalWithTheme\n {...otherProps}\n preset={theme}\n className={cnPopover({ direction, notVisible }, [className])}\n container={container}\n ref={useForkRef([ref, componentRef])}\n style={{\n ...style,\n ...(notVisible\n ? {}\n : {\n ['--popover-left' as string]: `${renderPosition.x}px`,\n ['--popover-top' as string]: `${renderPosition.y}px`,\n [`--popover-width` as string]: equalAnchorWidth\n ? `${anchorSize.width}px`\n : undefined,\n [`--popover-pointer-events` as string]: isInteractive\n ? undefined\n : 'none',\n [`--popover-visibility` as string]: position\n ? undefined\n : 'hidden',\n }),\n }}\n >\n <ContextConsumer\n onClickOutside={onClickOutside}\n ignoreClicksInsideRefs={[ref, anchorRef || { current: null }]}\n >\n {isRenderProp(children) ? children(direction) : children}\n </ContextConsumer>\n </PortalWithTheme>\n );\n },\n);\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Direction, Position } from './Popover';
2
2
  declare type Size = Pick<DOMRect, 'width' | 'height'>;
3
3
  declare type PositionsByDirection = Record<Direction, NonNullable<Position>>;
4
- export declare const getPointPossition: (viewportElement: HTMLElement, positionInDocument: Position, withCustomViewPort: boolean) => Position;
4
+ export declare const getPointPosition: (viewportElement: HTMLElement, positionInDocument: Position, withCustomViewPort: boolean) => Position;
5
5
  export declare const getRenderPosition: (viewportElement: HTMLElement, position: Position, withCustomViewPort: Boolean, width: number | undefined, height: number | undefined) => {
6
6
  x: number;
7
7
  y: number;
@@ -1,2 +1,2 @@
1
- import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var getPosition=function(a,b){return{x:Math.round(a),y:Math.round(b)}};export var getPointPossition=function(a,b,c){if(b){if(!c)return b;var d=a.getBoundingClientRect(),e=getPosition(b.x-d.left,b.y-d.top);return e}};export var getRenderPosition=function(a,b,c,d,e){if(d&&e){if(!c)return getPosition(((null===b||void 0===b?void 0:b.x)||0)+window.scrollX,((null===b||void 0===b?void 0:b.y)||0)+window.scrollY);var f=a.getBoundingClientRect();return!b||0>b.x||0>b.y||b.x+d>a.clientWidth||b.y+e>a.clientHeight?void 0:getPosition(((null===b||void 0===b?void 0:b.x)||0)+window.scrollX+f.left,((null===b||void 0===b?void 0:b.y)||0)+window.scrollY+f.top)}};export var getPositionsByDirection=function(a){var b=a.contentSize,c=a.anchorSize,d=a.position,e=d.x,f=d.y,g=a.arrowOffset,h=void 0===g?0:g,i=a.offset,j=void 0===i?0:i,k=b.width,l=b.height,m=c.width,n=c.height,o={x:e+m/2,y:f+n/2},p=e+m+j,q=e-k-j,r={right:o.x-h,center:o.x-k/2,left:o.x-k+h},s=f+n+j,t=f-l-j,u={up:o.y-l+h,center:o.y-l/2,down:o.y-h},v=e,w=e-k+m,x=f,y=f-l+n;return{upLeft:getPosition(r.left,t),upCenter:getPosition(r.center,t),upRight:getPosition(r.right,t),downLeft:getPosition(r.left,s),downCenter:getPosition(r.center,s),downRight:getPosition(r.right,s),rightUp:getPosition(p,u.up),rightCenter:getPosition(p,u.center),rightDown:getPosition(p,u.down),leftUp:getPosition(q,u.up),leftCenter:getPosition(q,u.center),leftDown:getPosition(q,u.down),downStartLeft:getPosition(v,s),downStartRight:getPosition(w,s),upStartLeft:getPosition(v,t),upStartRight:getPosition(w,t),leftStartUp:getPosition(q,x),leftStartDown:getPosition(q,y),rightStartUp:getPosition(p,x),rightStartDown:getPosition(p,y)}};export var getComputedPositionAndDirection=function(a){var b=a.position,c=a.contentSize,d=a.viewportSize,e=a.anchorSize,f=void 0===e?{width:0,height:0}:e,g=a.arrowOffset,h=a.direction,i=a.possibleDirections,j=a.bannedDirections,k=a.spareDirection,l=a.offset,m=void 0===l?0:l;if(!b)return{position:b,direction:h};var n=getPositionsByDirection({contentSize:c,anchorSize:f,position:b,arrowOffset:g,offset:m}),o=[h].concat(_toConsumableArray(i)).filter(function(a){return!j.includes(a)}).find(function(a){var b=n[a],e=c.width,f=c.height,g=b.y+f<=d.height,h=0<=b.y,i=0<=b.x,j=b.x+e<=d.width;return h&&g&&i&&j})||k;return{direction:o,position:n[o]}};
1
+ import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";var getPosition=function(a,b){return{x:Math.round(a),y:Math.round(b)}};export var getPointPosition=function(a,b,c){if(b){if(!c)return b;var d=a.getBoundingClientRect(),e=getPosition(b.x-d.left,b.y-d.top);return e}};export var getRenderPosition=function(a,b,c,d,e){if(d&&e){if(!c)return getPosition(((null===b||void 0===b?void 0:b.x)||0)+window.scrollX,((null===b||void 0===b?void 0:b.y)||0)+window.scrollY);var f=a.getBoundingClientRect();return!b||0>b.x||0>b.y||b.x+d>a.clientWidth||b.y+e>a.clientHeight?void 0:getPosition(((null===b||void 0===b?void 0:b.x)||0)+window.scrollX+f.left,((null===b||void 0===b?void 0:b.y)||0)+window.scrollY+f.top)}};export var getPositionsByDirection=function(a){var b=a.contentSize,c=a.anchorSize,d=a.position,e=d.x,f=d.y,g=a.arrowOffset,h=void 0===g?0:g,i=a.offset,j=void 0===i?0:i,k=b.width,l=b.height,m=c.width,n=c.height,o={x:e+m/2,y:f+n/2},p=e+m+j,q=e-k-j,r={right:o.x-h,center:o.x-k/2,left:o.x-k+h},s=f+n+j,t=f-l-j,u={up:o.y-l+h,center:o.y-l/2,down:o.y-h},v=e,w=e-k+m,x=f,y=f-l+n;return{upLeft:getPosition(r.left,t),upCenter:getPosition(r.center,t),upRight:getPosition(r.right,t),downLeft:getPosition(r.left,s),downCenter:getPosition(r.center,s),downRight:getPosition(r.right,s),rightUp:getPosition(p,u.up),rightCenter:getPosition(p,u.center),rightDown:getPosition(p,u.down),leftUp:getPosition(q,u.up),leftCenter:getPosition(q,u.center),leftDown:getPosition(q,u.down),downStartLeft:getPosition(v,s),downStartRight:getPosition(w,s),upStartLeft:getPosition(v,t),upStartRight:getPosition(w,t),leftStartUp:getPosition(q,x),leftStartDown:getPosition(q,y),rightStartUp:getPosition(p,x),rightStartDown:getPosition(p,y)}};export var getComputedPositionAndDirection=function(a){var b=a.position,c=a.contentSize,d=a.viewportSize,e=a.anchorSize,f=void 0===e?{width:0,height:0}:e,g=a.arrowOffset,h=a.direction,i=a.possibleDirections,j=a.bannedDirections,k=a.spareDirection,l=a.offset,m=void 0===l?0:l;if(!b)return{position:b,direction:h};var n=getPositionsByDirection({contentSize:c,anchorSize:f,position:b,arrowOffset:g,offset:m}),o=[h].concat(_toConsumableArray(i)).filter(function(a){return!j.includes(a)}).find(function(a){var b=n[a],e=c.width,f=c.height,g=b.y+f<=d.height,h=0<=b.y,i=0<=b.x,j=b.x+e<=d.width;return h&&g&&i&&j})||k;return{direction:o,position:n[o]}};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["getPosition","x","y","Math","round","getPointPossition","viewportElement","positionInDocument","withCustomViewPort","viewportRect","getBoundingClientRect","position","left","top","getRenderPosition","width","height","window","scrollX","scrollY","clientWidth","clientHeight","getPositionsByDirection","contentSize","anchorSize","arrowOffset","offset","contentWidth","contentHeight","anchorWidth","anchorHeight","anchorCenter","xForRightDirections","xForLeftDirections","xForVerticalDirections","right","center","yForDownDirections","yForUpDirections","yForHorizontalDirections","up","down","xForStartLeftDirections","xForStartRightDirections","yForStartUpDirections","yForStartDownDirections","upLeft","upCenter","upRight","downLeft","downCenter","downRight","rightUp","rightCenter","rightDown","leftUp","leftCenter","leftDown","downStartLeft","downStartRight","upStartLeft","upStartRight","leftStartUp","leftStartDown","rightStartUp","rightStartDown","getComputedPositionAndDirection","initialPosition","viewportSize","initialDirection","direction","possibleDirections","bannedDirections","spareDirection","positionsByDirection","filter","dir","includes","find","pos","isFittingDown","isFittingUp","isFittingLeft","isFittingRight"],"sources":["../../../../../src/components/Popover/helpers.ts"],"sourcesContent":["import { Direction, Position } from './Popover';\n\ntype Size = Pick<DOMRect, 'width' | 'height'>;\n\ntype PositionsByDirection = Record<Direction, NonNullable<Position>>;\n\nconst getPosition = (x: number, y: number): NonNullable<Position> => ({\n x: Math.round(x),\n y: Math.round(y),\n});\n\nexport const getPointPossition = (\n viewportElement: HTMLElement,\n positionInDocument: Position,\n withCustomViewPort: boolean,\n): Position => {\n if (!positionInDocument) {\n return undefined;\n }\n\n if (!withCustomViewPort) {\n return positionInDocument;\n }\n\n const viewportRect = viewportElement.getBoundingClientRect();\n\n const position: Position = getPosition(\n positionInDocument.x - viewportRect.left,\n positionInDocument.y - viewportRect.top,\n );\n\n return position;\n};\n\nexport const getRenderPosition = (\n viewportElement: HTMLElement,\n position: Position,\n withCustomViewPort: Boolean,\n width: number | undefined,\n height: number | undefined,\n) => {\n if (!width || !height) {\n return undefined;\n }\n\n if (!withCustomViewPort) {\n return getPosition(\n (position?.x || 0) + window.scrollX,\n (position?.y || 0) + window.scrollY,\n );\n }\n\n const viewportRect = viewportElement.getBoundingClientRect();\n\n if (\n !position ||\n position.x < 0 ||\n position.y < 0 ||\n position.x + width > viewportElement.clientWidth ||\n position.y + height > viewportElement.clientHeight\n ) {\n return undefined;\n }\n\n return getPosition(\n (position?.x || 0) + window.scrollX + viewportRect.left,\n (position?.y || 0) + window.scrollY + viewportRect.top,\n );\n};\n\nexport const getPositionsByDirection = ({\n contentSize,\n anchorSize,\n position: { x, y },\n arrowOffset = 0,\n offset = 0,\n}: {\n contentSize: Size;\n anchorSize: Size;\n position: NonNullable<Position>;\n arrowOffset?: number;\n offset?: number;\n}): PositionsByDirection => {\n const { width: contentWidth, height: contentHeight } = contentSize;\n const { width: anchorWidth, height: anchorHeight } = anchorSize;\n const anchorCenter = {\n x: x + anchorWidth / 2,\n y: y + anchorHeight / 2,\n };\n\n const xForRightDirections = x + anchorWidth + offset;\n const xForLeftDirections = x - contentWidth - offset;\n const xForVerticalDirections = {\n right: anchorCenter.x - arrowOffset,\n center: anchorCenter.x - contentWidth / 2,\n left: anchorCenter.x - contentWidth + arrowOffset,\n };\n\n const yForDownDirections = y + anchorHeight + offset;\n const yForUpDirections = y - contentHeight - offset;\n const yForHorizontalDirections = {\n up: anchorCenter.y - contentHeight + arrowOffset,\n center: anchorCenter.y - contentHeight / 2,\n down: anchorCenter.y - arrowOffset,\n };\n\n const xForStartLeftDirections = x;\n const xForStartRightDirections = x - contentWidth + anchorWidth;\n\n const yForStartUpDirections = y;\n const yForStartDownDirections = y - contentHeight + anchorHeight;\n\n return {\n upLeft: getPosition(xForVerticalDirections.left, yForUpDirections),\n upCenter: getPosition(xForVerticalDirections.center, yForUpDirections),\n upRight: getPosition(xForVerticalDirections.right, yForUpDirections),\n\n downLeft: getPosition(xForVerticalDirections.left, yForDownDirections),\n downCenter: getPosition(xForVerticalDirections.center, yForDownDirections),\n downRight: getPosition(xForVerticalDirections.right, yForDownDirections),\n\n rightUp: getPosition(xForRightDirections, yForHorizontalDirections.up),\n rightCenter: getPosition(\n xForRightDirections,\n yForHorizontalDirections.center,\n ),\n rightDown: getPosition(xForRightDirections, yForHorizontalDirections.down),\n\n leftUp: getPosition(xForLeftDirections, yForHorizontalDirections.up),\n leftCenter: getPosition(\n xForLeftDirections,\n yForHorizontalDirections.center,\n ),\n leftDown: getPosition(xForLeftDirections, yForHorizontalDirections.down),\n\n downStartLeft: getPosition(xForStartLeftDirections, yForDownDirections),\n downStartRight: getPosition(xForStartRightDirections, yForDownDirections),\n\n upStartLeft: getPosition(xForStartLeftDirections, yForUpDirections),\n upStartRight: getPosition(xForStartRightDirections, yForUpDirections),\n\n leftStartUp: getPosition(xForLeftDirections, yForStartUpDirections),\n leftStartDown: getPosition(xForLeftDirections, yForStartDownDirections),\n\n rightStartUp: getPosition(xForRightDirections, yForStartUpDirections),\n rightStartDown: getPosition(xForRightDirections, yForStartDownDirections),\n };\n};\n\ntype ComputedPositionAndDirectionParams = {\n // Координата точки, к которой крепится поповер. Для якоря — координата левой верхней точки якоря\n position: Position;\n contentSize: Size;\n viewportSize: Size;\n anchorSize?: Size;\n offset?: number;\n arrowOffset?: number;\n direction: Direction;\n spareDirection: Direction;\n possibleDirections: readonly Direction[];\n bannedDirections: readonly Direction[];\n};\n\nexport const getComputedPositionAndDirection = ({\n position: initialPosition,\n contentSize,\n viewportSize,\n anchorSize = { width: 0, height: 0 },\n arrowOffset,\n direction: initialDirection,\n possibleDirections,\n bannedDirections,\n spareDirection,\n offset = 0,\n}: ComputedPositionAndDirectionParams): {\n direction: Direction;\n position: Position;\n} => {\n if (!initialPosition) {\n return { position: initialPosition, direction: initialDirection };\n }\n\n const positionsByDirection = getPositionsByDirection({\n contentSize,\n anchorSize,\n position: initialPosition,\n arrowOffset,\n offset,\n });\n\n const direction =\n [initialDirection, ...possibleDirections]\n .filter((dir) => !bannedDirections.includes(dir))\n .find((dir) => {\n const pos = positionsByDirection[dir];\n const { width, height } = contentSize;\n\n const isFittingDown = pos.y + height <= viewportSize.height;\n const isFittingUp = pos.y >= 0;\n\n const isFittingLeft = pos.x >= 0;\n const isFittingRight = pos.x + width <= viewportSize.width;\n\n return isFittingUp && isFittingDown && isFittingLeft && isFittingRight;\n }) || spareDirection;\n\n return {\n direction,\n position: positionsByDirection[direction],\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","names":["getPosition","x","y","Math","round","getPointPosition","viewportElement","positionInDocument","withCustomViewPort","viewportRect","getBoundingClientRect","position","left","top","getRenderPosition","width","height","window","scrollX","scrollY","clientWidth","clientHeight","getPositionsByDirection","contentSize","anchorSize","arrowOffset","offset","contentWidth","contentHeight","anchorWidth","anchorHeight","anchorCenter","xForRightDirections","xForLeftDirections","xForVerticalDirections","right","center","yForDownDirections","yForUpDirections","yForHorizontalDirections","up","down","xForStartLeftDirections","xForStartRightDirections","yForStartUpDirections","yForStartDownDirections","upLeft","upCenter","upRight","downLeft","downCenter","downRight","rightUp","rightCenter","rightDown","leftUp","leftCenter","leftDown","downStartLeft","downStartRight","upStartLeft","upStartRight","leftStartUp","leftStartDown","rightStartUp","rightStartDown","getComputedPositionAndDirection","initialPosition","viewportSize","initialDirection","direction","possibleDirections","bannedDirections","spareDirection","positionsByDirection","filter","dir","includes","find","pos","isFittingDown","isFittingUp","isFittingLeft","isFittingRight"],"sources":["../../../../../src/components/Popover/helpers.ts"],"sourcesContent":["import { Direction, Position } from './Popover';\n\ntype Size = Pick<DOMRect, 'width' | 'height'>;\n\ntype PositionsByDirection = Record<Direction, NonNullable<Position>>;\n\nconst getPosition = (x: number, y: number): NonNullable<Position> => ({\n x: Math.round(x),\n y: Math.round(y),\n});\n\nexport const getPointPosition = (\n viewportElement: HTMLElement,\n positionInDocument: Position,\n withCustomViewPort: boolean,\n): Position => {\n if (!positionInDocument) {\n return undefined;\n }\n\n if (!withCustomViewPort) {\n return positionInDocument;\n }\n\n const viewportRect = viewportElement.getBoundingClientRect();\n\n const position: Position = getPosition(\n positionInDocument.x - viewportRect.left,\n positionInDocument.y - viewportRect.top,\n );\n\n return position;\n};\n\nexport const getRenderPosition = (\n viewportElement: HTMLElement,\n position: Position,\n withCustomViewPort: Boolean,\n width: number | undefined,\n height: number | undefined,\n) => {\n if (!width || !height) {\n return undefined;\n }\n\n if (!withCustomViewPort) {\n return getPosition(\n (position?.x || 0) + window.scrollX,\n (position?.y || 0) + window.scrollY,\n );\n }\n\n const viewportRect = viewportElement.getBoundingClientRect();\n\n if (\n !position ||\n position.x < 0 ||\n position.y < 0 ||\n position.x + width > viewportElement.clientWidth ||\n position.y + height > viewportElement.clientHeight\n ) {\n return undefined;\n }\n\n return getPosition(\n (position?.x || 0) + window.scrollX + viewportRect.left,\n (position?.y || 0) + window.scrollY + viewportRect.top,\n );\n};\n\nexport const getPositionsByDirection = ({\n contentSize,\n anchorSize,\n position: { x, y },\n arrowOffset = 0,\n offset = 0,\n}: {\n contentSize: Size;\n anchorSize: Size;\n position: NonNullable<Position>;\n arrowOffset?: number;\n offset?: number;\n}): PositionsByDirection => {\n const { width: contentWidth, height: contentHeight } = contentSize;\n const { width: anchorWidth, height: anchorHeight } = anchorSize;\n const anchorCenter = {\n x: x + anchorWidth / 2,\n y: y + anchorHeight / 2,\n };\n\n const xForRightDirections = x + anchorWidth + offset;\n const xForLeftDirections = x - contentWidth - offset;\n const xForVerticalDirections = {\n right: anchorCenter.x - arrowOffset,\n center: anchorCenter.x - contentWidth / 2,\n left: anchorCenter.x - contentWidth + arrowOffset,\n };\n\n const yForDownDirections = y + anchorHeight + offset;\n const yForUpDirections = y - contentHeight - offset;\n const yForHorizontalDirections = {\n up: anchorCenter.y - contentHeight + arrowOffset,\n center: anchorCenter.y - contentHeight / 2,\n down: anchorCenter.y - arrowOffset,\n };\n\n const xForStartLeftDirections = x;\n const xForStartRightDirections = x - contentWidth + anchorWidth;\n\n const yForStartUpDirections = y;\n const yForStartDownDirections = y - contentHeight + anchorHeight;\n\n return {\n upLeft: getPosition(xForVerticalDirections.left, yForUpDirections),\n upCenter: getPosition(xForVerticalDirections.center, yForUpDirections),\n upRight: getPosition(xForVerticalDirections.right, yForUpDirections),\n\n downLeft: getPosition(xForVerticalDirections.left, yForDownDirections),\n downCenter: getPosition(xForVerticalDirections.center, yForDownDirections),\n downRight: getPosition(xForVerticalDirections.right, yForDownDirections),\n\n rightUp: getPosition(xForRightDirections, yForHorizontalDirections.up),\n rightCenter: getPosition(\n xForRightDirections,\n yForHorizontalDirections.center,\n ),\n rightDown: getPosition(xForRightDirections, yForHorizontalDirections.down),\n\n leftUp: getPosition(xForLeftDirections, yForHorizontalDirections.up),\n leftCenter: getPosition(\n xForLeftDirections,\n yForHorizontalDirections.center,\n ),\n leftDown: getPosition(xForLeftDirections, yForHorizontalDirections.down),\n\n downStartLeft: getPosition(xForStartLeftDirections, yForDownDirections),\n downStartRight: getPosition(xForStartRightDirections, yForDownDirections),\n\n upStartLeft: getPosition(xForStartLeftDirections, yForUpDirections),\n upStartRight: getPosition(xForStartRightDirections, yForUpDirections),\n\n leftStartUp: getPosition(xForLeftDirections, yForStartUpDirections),\n leftStartDown: getPosition(xForLeftDirections, yForStartDownDirections),\n\n rightStartUp: getPosition(xForRightDirections, yForStartUpDirections),\n rightStartDown: getPosition(xForRightDirections, yForStartDownDirections),\n };\n};\n\ntype ComputedPositionAndDirectionParams = {\n // Координата точки, к которой крепится поповер. Для якоря — координата левой верхней точки якоря\n position: Position;\n contentSize: Size;\n viewportSize: Size;\n anchorSize?: Size;\n offset?: number;\n arrowOffset?: number;\n direction: Direction;\n spareDirection: Direction;\n possibleDirections: readonly Direction[];\n bannedDirections: readonly Direction[];\n};\n\nexport const getComputedPositionAndDirection = ({\n position: initialPosition,\n contentSize,\n viewportSize,\n anchorSize = { width: 0, height: 0 },\n arrowOffset,\n direction: initialDirection,\n possibleDirections,\n bannedDirections,\n spareDirection,\n offset = 0,\n}: ComputedPositionAndDirectionParams): {\n direction: Direction;\n position: Position;\n} => {\n if (!initialPosition) {\n return { position: initialPosition, direction: initialDirection };\n }\n\n const positionsByDirection = getPositionsByDirection({\n contentSize,\n anchorSize,\n position: initialPosition,\n arrowOffset,\n offset,\n });\n\n const direction =\n [initialDirection, ...possibleDirections]\n .filter((dir) => !bannedDirections.includes(dir))\n .find((dir) => {\n const pos = positionsByDirection[dir];\n const { width, height } = contentSize;\n\n const isFittingDown = pos.y + height <= viewportSize.height;\n const isFittingUp = pos.y >= 0;\n\n const isFittingLeft = pos.x >= 0;\n const isFittingRight = pos.x + width <= viewportSize.width;\n\n return isFittingUp && isFittingDown && isFittingLeft && isFittingRight;\n }) || spareDirection;\n\n return {\n direction,\n position: positionsByDirection[direction],\n };\n};\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- /** Запрос репозиции поповера при ресайзе окна и скролле */
2
+ /** Запрос репозиции поповера при ресайзе окна и прокрутке */
3
3
  export declare const usePopoverReposition: ({ isActive, scrollAnchorRef, onRequestReposition, }: {
4
4
  isActive: boolean;
5
- /** При скролле родителей этого элемента будет запрашиваться репозиция поповера */
5
+ /** При прокрутке родителей этого элемента будет запрашиваться репозиция поповера */
6
6
  scrollAnchorRef: React.RefObject<HTMLElement | null>;
7
7
  onRequestReposition: () => void;
8
8
  }) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"usePopoverReposition.js","names":["useEffect","useMutableRef","getAllParents","element","mutableParents","currentNode","push","parentNode","usePopoverReposition","isActive","scrollAnchorRef","onRequestReposition","onRequestRepositionRef","fn","current","window","addEventListener","allParents","forEach","parentEl","removeEventListener"],"sources":["../../../../../src/components/Popover/usePopoverReposition.ts"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\n\nconst getAllParents = (element: HTMLElement): readonly Node[] => {\n const mutableParents: Node[] = [];\n let currentNode: Node | null = element;\n\n while (currentNode) {\n currentNode !== element && mutableParents.push(currentNode);\n currentNode = currentNode.parentNode;\n }\n\n return mutableParents;\n};\n\n/** Запрос репозиции поповера при ресайзе окна и скролле */\nexport const usePopoverReposition = ({\n isActive,\n scrollAnchorRef,\n onRequestReposition,\n}: {\n isActive: boolean;\n /** При скролле родителей этого элемента будет запрашиваться репозиция поповера */\n scrollAnchorRef: React.RefObject<HTMLElement | null>;\n onRequestReposition: () => void;\n}) => {\n const onRequestRepositionRef = useMutableRef(onRequestReposition);\n\n useEffect(() => {\n const fn = () => onRequestRepositionRef.current();\n if (isActive) {\n window.addEventListener('resize', fn);\n\n const allParents = scrollAnchorRef?.current\n ? getAllParents(scrollAnchorRef.current)\n : [];\n allParents.forEach((parentEl) => parentEl.addEventListener('scroll', fn));\n\n return () => {\n window.removeEventListener('resize', fn);\n\n allParents.forEach((parentEl) =>\n parentEl.removeEventListener('scroll', fn),\n );\n };\n }\n return undefined;\n }, [scrollAnchorRef]);\n};\n"],"mappings":"AAAA,OAAgBA,SAAhB,KAAiC,OAAjC,CAEA,OAASC,aAAT,+CAEA,GAAMC,cAAa,CAAG,SAACC,CAAD,CAA2C,QACzDC,EAAsB,CAAG,EADgC,CAE3DC,CAAwB,CAAGF,CAFgC,CAIxDE,CAJwD,EAK7DA,CAAW,GAAKF,CAAhB,EAA2BC,CAAc,CAACE,IAAf,CAAoBD,CAApB,CALkC,CAM7DA,CAAW,CAAGA,CAAW,CAACE,UANmC,CAS/D,MAAOH,EACR,CAVD,CAaA,MAAO,IAAMI,qBAAoB,CAAG,WAS9B,IARJC,EAQI,GARJA,QAQI,CAPJC,CAOI,GAPJA,eAOI,CANJC,CAMI,GANJA,mBAMI,CACEC,CAAsB,CAAGX,aAAa,CAACU,CAAD,CADxC,CAGJX,SAAS,CAAC,UAAM,CACd,GAAMa,EAAE,CAAG,iBAAMD,EAAsB,CAACE,OAAvB,EAAN,CAAX,CACA,GAAIL,CAAJ,CAAc,CACZM,MAAM,CAACC,gBAAP,CAAwB,QAAxB,CAAkCH,CAAlC,CADY,CAGZ,GAAMI,EAAU,CAAG,OAAAP,CAAe,WAAfA,CAAA,EAAAA,CAAe,CAAEI,OAAjB,CACfZ,aAAa,CAACQ,CAAe,CAACI,OAAjB,CADE,CAEf,EAFJ,CAKA,MAFAG,EAAU,CAACC,OAAX,CAAmB,SAACC,CAAD,QAAcA,EAAQ,CAACH,gBAAT,CAA0B,QAA1B,CAAoCH,CAApC,CAAd,CAAnB,CAEA,CAAO,UAAM,CACXE,MAAM,CAACK,mBAAP,CAA2B,QAA3B,CAAqCP,CAArC,CADW,CAGXI,CAAU,CAACC,OAAX,CAAmB,SAACC,CAAD,QACjBA,EAAQ,CAACC,mBAAT,CAA6B,QAA7B,CAAuCP,CAAvC,CADiB,CAAnB,CAGD,CACF,CAEF,CAnBQ,CAmBN,CAACH,CAAD,CAnBM,CAoBV,CAhCM"}
1
+ {"version":3,"file":"usePopoverReposition.js","names":["useEffect","useMutableRef","getAllParents","element","mutableParents","currentNode","push","parentNode","usePopoverReposition","isActive","scrollAnchorRef","onRequestReposition","onRequestRepositionRef","fn","current","window","addEventListener","allParents","forEach","parentEl","removeEventListener"],"sources":["../../../../../src/components/Popover/usePopoverReposition.ts"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\n\nconst getAllParents = (element: HTMLElement): readonly Node[] => {\n const mutableParents: Node[] = [];\n let currentNode: Node | null = element;\n\n while (currentNode) {\n currentNode !== element && mutableParents.push(currentNode);\n currentNode = currentNode.parentNode;\n }\n\n return mutableParents;\n};\n\n/** Запрос репозиции поповера при ресайзе окна и прокрутке */\nexport const usePopoverReposition = ({\n isActive,\n scrollAnchorRef,\n onRequestReposition,\n}: {\n isActive: boolean;\n /** При прокрутке родителей этого элемента будет запрашиваться репозиция поповера */\n scrollAnchorRef: React.RefObject<HTMLElement | null>;\n onRequestReposition: () => void;\n}) => {\n const onRequestRepositionRef = useMutableRef(onRequestReposition);\n\n useEffect(() => {\n const fn = () => onRequestRepositionRef.current();\n if (isActive) {\n window.addEventListener('resize', fn);\n\n const allParents = scrollAnchorRef?.current\n ? getAllParents(scrollAnchorRef.current)\n : [];\n allParents.forEach((parentEl) => parentEl.addEventListener('scroll', fn));\n\n return () => {\n window.removeEventListener('resize', fn);\n\n allParents.forEach((parentEl) =>\n parentEl.removeEventListener('scroll', fn),\n );\n };\n }\n return undefined;\n }, [scrollAnchorRef]);\n};\n"],"mappings":"AAAA,OAAgBA,SAAhB,KAAiC,OAAjC,CAEA,OAASC,aAAT,+CAEA,GAAMC,cAAa,CAAG,SAACC,CAAD,CAA2C,QACzDC,EAAsB,CAAG,EADgC,CAE3DC,CAAwB,CAAGF,CAFgC,CAIxDE,CAJwD,EAK7DA,CAAW,GAAKF,CAAhB,EAA2BC,CAAc,CAACE,IAAf,CAAoBD,CAApB,CALkC,CAM7DA,CAAW,CAAGA,CAAW,CAACE,UANmC,CAS/D,MAAOH,EACR,CAVD,CAaA,MAAO,IAAMI,qBAAoB,CAAG,WAS9B,IARJC,EAQI,GARJA,QAQI,CAPJC,CAOI,GAPJA,eAOI,CANJC,CAMI,GANJA,mBAMI,CACEC,CAAsB,CAAGX,aAAa,CAACU,CAAD,CADxC,CAGJX,SAAS,CAAC,UAAM,CACd,GAAMa,EAAE,CAAG,iBAAMD,EAAsB,CAACE,OAAvB,EAAN,CAAX,CACA,GAAIL,CAAJ,CAAc,CACZM,MAAM,CAACC,gBAAP,CAAwB,QAAxB,CAAkCH,CAAlC,CADY,CAGZ,GAAMI,EAAU,CAAG,OAAAP,CAAe,WAAfA,CAAA,EAAAA,CAAe,CAAEI,OAAjB,CACfZ,aAAa,CAACQ,CAAe,CAACI,OAAjB,CADE,CAEf,EAFJ,CAKA,MAFAG,EAAU,CAACC,OAAX,CAAmB,SAACC,CAAD,QAAcA,EAAQ,CAACH,gBAAT,CAA0B,QAA1B,CAAoCH,CAApC,CAAd,CAAnB,CAEA,CAAO,UAAM,CACXE,MAAM,CAACK,mBAAP,CAA2B,QAA3B,CAAqCP,CAArC,CADW,CAGXI,CAAU,CAACC,OAAX,CAAmB,SAACC,CAAD,QACjBA,EAAQ,CAACC,mBAAT,CAA6B,QAA7B,CAAuCP,CAAvC,CADiB,CAAnB,CAGD,CACF,CAEF,CAnBQ,CAmBN,CAACH,CAAD,CAnBM,CAoBV,CAhCM"}
@@ -1 +1 @@
1
- {"version":3,"file":"PortalWithTheme.js","names":["React","useEffect","useRef","ReactDOM","useForkRef","Theme","PortalWithThemeProvider","usePortalContext","getZIndex","contextZindex","propZindex","PortalWithTheme","forwardRef","ref","children","container","window","document","body","styleProp","style","rest","addRefs","zIndexContext","zIndex","themeRef","createPortal"],"sources":["../../../../../src/components/PortalWithTheme/PortalWithTheme.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { Theme, ThemeProps } from '../Theme/Theme';\nimport {\n PortalWithThemeProvider,\n usePortalContext,\n} from './PortalWithThemeContext/PortalWithThemeContext';\n\nexport { usePortalContext };\n\ntype Props = {\n container?: Element;\n} & ThemeProps;\n\nconst getZIndex = (contextZindex?: number, propZindex?: number | string) => {\n if (typeof propZindex === 'number') {\n return propZindex;\n }\n\n if (contextZindex) {\n return contextZindex + 1;\n }\n\n return undefined;\n};\n\nexport const PortalWithTheme = React.forwardRef<HTMLDivElement, Props>(\n (\n { children, container = window.document.body, style: styleProp, ...rest },\n ref,\n ) => {\n const { addRefs, zIndex: zIndexContext } = usePortalContext();\n\n const themeRef = useRef(null);\n\n const zIndex = getZIndex(zIndexContext, styleProp?.zIndex);\n\n const style = {\n ...styleProp,\n zIndex,\n };\n\n useEffect(() => {\n addRefs && addRefs([themeRef]);\n }, [themeRef]);\n\n return ReactDOM.createPortal(\n <PortalWithThemeProvider zIndex={zIndex}>\n <Theme {...rest} ref={useForkRef([themeRef, ref])} style={style}>\n {children}\n </Theme>\n </PortalWithThemeProvider>,\n container,\n );\n },\n);\n"],"mappings":"yyBAAA,MAAOA,MAAP,EAAgBC,SAAhB,CAA2BC,MAA3B,KAAyC,OAAzC,CACA,MAAOC,SAAP,KAAqB,WAArB,CAEA,OAASC,UAAT,yCACA,OAASC,KAAT,sBACA,OACEC,uBADF,CAEEC,gBAFF,uDAKA,OAASA,gBAAT,EAMA,GAAMC,UAAS,CAAG,SAACC,CAAD,CAAyBC,CAAzB,CAA0D,OAChD,QAAtB,QAAOA,EAD+D,CAEjEA,CAFiE,CAKtED,CALsE,CAMjEA,CAAa,CAAG,CANiD,OAU3E,CAVD,CAYA,MAAO,IAAME,gBAAe,CAAGX,KAAK,CAACY,UAAN,CAC7B,WAEEC,CAFF,CAGK,IAFDC,EAEC,GAFDA,QAEC,KAFSC,SAET,CAFSA,CAET,YAFqBC,MAAM,CAACC,QAAP,CAAgBC,IAErC,GAFkDC,CAElD,GAF2CC,KAE3C,CAFgEC,CAEhE,yCACwCd,gBAAgB,EADxD,CACKe,CADL,GACKA,OADL,CACsBC,CADtB,GACcC,MADd,CAGGC,CAAQ,CAAGvB,MAAM,CAAC,IAAD,CAHpB,CAKGsB,CAAM,CAAGhB,SAAS,CAACe,CAAD,QAAgBJ,CAAhB,WAAgBA,CAAhB,QAAgBA,CAAS,CAAEK,MAA3B,CALrB,CAOGJ,CAAK,gCACND,CADM,MAETK,MAAM,CAANA,CAFS,EAPR,CAgBH,MAJAvB,UAAS,CAAC,UAAM,CACdqB,CAAO,EAAIA,CAAO,CAAC,CAACG,CAAD,CAAD,CACnB,CAFQ,CAEN,CAACA,CAAD,CAFM,CAIT,CAAOtB,QAAQ,CAACuB,YAAT,CACL,oBAAC,uBAAD,EAAyB,MAAM,CAAEF,CAAjC,EACE,oBAAC,KAAD,kBAAWH,CAAX,EAAiB,GAAG,CAAEjB,UAAU,CAAC,CAACqB,CAAD,CAAWZ,CAAX,CAAD,CAAhC,CAAmD,KAAK,CAAEO,CAA1D,GACGN,CADH,CADF,CADK,CAMLC,CANK,CAQR,CA5B4B,CAAxB"}
1
+ {"version":3,"file":"PortalWithTheme.js","names":["React","useEffect","useRef","ReactDOM","useForkRef","Theme","PortalWithThemeProvider","usePortalContext","getZIndex","contextZIndex","propZIndex","PortalWithTheme","forwardRef","ref","children","container","window","document","body","styleProp","style","rest","addRefs","zIndexContext","zIndex","themeRef","createPortal"],"sources":["../../../../../src/components/PortalWithTheme/PortalWithTheme.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { Theme, ThemeProps } from '../Theme/Theme';\nimport {\n PortalWithThemeProvider,\n usePortalContext,\n} from './PortalWithThemeContext/PortalWithThemeContext';\n\nexport { usePortalContext };\n\ntype Props = {\n container?: Element;\n} & ThemeProps;\n\nconst getZIndex = (contextZIndex?: number, propZIndex?: number | string) => {\n if (typeof propZIndex === 'number') {\n return propZIndex;\n }\n\n if (contextZIndex) {\n return contextZIndex + 1;\n }\n\n return undefined;\n};\n\nexport const PortalWithTheme = React.forwardRef<HTMLDivElement, Props>(\n (\n { children, container = window.document.body, style: styleProp, ...rest },\n ref,\n ) => {\n const { addRefs, zIndex: zIndexContext } = usePortalContext();\n\n const themeRef = useRef(null);\n\n const zIndex = getZIndex(zIndexContext, styleProp?.zIndex);\n\n const style = {\n ...styleProp,\n zIndex,\n };\n\n useEffect(() => {\n addRefs && addRefs([themeRef]);\n }, [themeRef]);\n\n return ReactDOM.createPortal(\n <PortalWithThemeProvider zIndex={zIndex}>\n <Theme {...rest} ref={useForkRef([themeRef, ref])} style={style}>\n {children}\n </Theme>\n </PortalWithThemeProvider>,\n container,\n );\n },\n);\n"],"mappings":"yyBAAA,MAAOA,MAAP,EAAgBC,SAAhB,CAA2BC,MAA3B,KAAyC,OAAzC,CACA,MAAOC,SAAP,KAAqB,WAArB,CAEA,OAASC,UAAT,yCACA,OAASC,KAAT,sBACA,OACEC,uBADF,CAEEC,gBAFF,uDAKA,OAASA,gBAAT,EAMA,GAAMC,UAAS,CAAG,SAACC,CAAD,CAAyBC,CAAzB,CAA0D,OAChD,QAAtB,QAAOA,EAD+D,CAEjEA,CAFiE,CAKtED,CALsE,CAMjEA,CAAa,CAAG,CANiD,OAU3E,CAVD,CAYA,MAAO,IAAME,gBAAe,CAAGX,KAAK,CAACY,UAAN,CAC7B,WAEEC,CAFF,CAGK,IAFDC,EAEC,GAFDA,QAEC,KAFSC,SAET,CAFSA,CAET,YAFqBC,MAAM,CAACC,QAAP,CAAgBC,IAErC,GAFkDC,CAElD,GAF2CC,KAE3C,CAFgEC,CAEhE,yCACwCd,gBAAgB,EADxD,CACKe,CADL,GACKA,OADL,CACsBC,CADtB,GACcC,MADd,CAGGC,CAAQ,CAAGvB,MAAM,CAAC,IAAD,CAHpB,CAKGsB,CAAM,CAAGhB,SAAS,CAACe,CAAD,QAAgBJ,CAAhB,WAAgBA,CAAhB,QAAgBA,CAAS,CAAEK,MAA3B,CALrB,CAOGJ,CAAK,gCACND,CADM,MAETK,MAAM,CAANA,CAFS,EAPR,CAgBH,MAJAvB,UAAS,CAAC,UAAM,CACdqB,CAAO,EAAIA,CAAO,CAAC,CAACG,CAAD,CAAD,CACnB,CAFQ,CAEN,CAACA,CAAD,CAFM,CAIT,CAAOtB,QAAQ,CAACuB,YAAT,CACL,oBAAC,uBAAD,EAAyB,MAAM,CAAEF,CAAjC,EACE,oBAAC,KAAD,kBAAWH,CAAX,EAAiB,GAAG,CAAEjB,UAAU,CAAC,CAACqB,CAAD,CAAWZ,CAAX,CAAD,CAAhC,CAAmD,KAAK,CAAEO,CAA1D,GACGN,CADH,CADF,CADK,CAMLC,CANK,CAQR,CA5B4B,CAAxB"}
@@ -7,11 +7,11 @@ export declare function usePortalContext(): {
7
7
  /**
8
8
  * PortalWithThemeProvider
9
9
  * нужен для того чтобы получать рефы дочерних порталов и прокидывать их в родительские порталы
10
- * Это нужно чтобы в компонетах использовать usePortalContext()
10
+ * Это нужно чтобы в компонентах использовать usePortalContext()
11
11
  * и получать рефы всех вложенных порталов в компонент, чтобы без ошибочно реализовать onOutsideClick.
12
- * Проблема заклбчалась в том что при нажатии на любой вложенный портал,
13
- * компонент думал ччто клик произашел вне компонента и срабатывал onOutsideClick.
14
- * Сечас когда мы знаем рефы всех вложенных порталов мы можем игнорировать события кликов на вложенных порталах
12
+ * Проблема заключалась в том что при нажатии на любой вложенный портал,
13
+ * компонент думал что клик произошел вне компонента и срабатывал onOutsideClick.
14
+ * Сейчас когда мы знаем рефы всех вложенных порталов мы можем игнорировать события кликов на вложенных порталах
15
15
  */
16
16
  export declare const PortalWithThemeProvider: React.FC<{
17
17
  zIndex?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"PortalWithThemeContext.js","names":["React","createContext","useContext","useEffect","useState","Context","refs","zIndex","usePortalContext","PortalWithThemeProvider","props","setRefs","contextAddRefs","addRefs","addRef","length","newRefs","filter","item","current","addItem","find","children"],"sources":["../../../../../../src/components/PortalWithTheme/PortalWithThemeContext/PortalWithThemeContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react';\n\nconst Context = createContext<{\n refs: React.RefObject<HTMLElement>[];\n addRefs?: (ref: React.RefObject<HTMLElement>[]) => void;\n zIndex?: number;\n}>({\n refs: [],\n zIndex: undefined,\n});\n\nexport function usePortalContext() {\n return useContext(Context);\n}\n/**\n * PortalWithThemeProvider\n * нужен для того чтобы получать рефы дочерних порталов и прокидывать их в родительские порталы\n * Это нужно чтобы в компонетах использовать usePortalContext()\n * и получать рефы всех вложенных порталов в компонент, чтобы без ошибочно реализовать onOutsideClick.\n * Проблема заклбчалась в том что при нажатии на любой вложенный портал,\n * компонент думал ччто клик произашел вне компонента и срабатывал onOutsideClick.\n * Сечас когда мы знаем рефы всех вложенных порталов мы можем игнорировать события кликов на вложенных порталах\n */\nexport const PortalWithThemeProvider: React.FC<{\n zIndex?: number;\n children?: React.ReactNode;\n}> = (props) => {\n const [refs, setRefs] = useState<React.RefObject<HTMLElement>[]>([]);\n const { addRefs: contextAddRefs } = usePortalContext();\n\n /**\n * фукция для добавления рефов дочерних порталов\n * @param {React.RefObject<HTMLElement>[]} addRef массив ссылок\n */\n const addRefs = (addRef: React.RefObject<HTMLElement>[]) => {\n if (addRef.length > 0) {\n const newRefs = [\n ...refs.filter((item) => item.current),\n ...addRef.filter((addItem) => {\n if (!addItem.current) {\n return false;\n }\n return !refs.find((item) => item.current === addItem.current);\n }),\n ];\n setRefs(newRefs);\n }\n };\n\n /**\n * при изменении дочерних рефов необходимо добавить их в родительские порталы\n */\n useEffect(() => {\n contextAddRefs && contextAddRefs(refs);\n }, [refs]);\n\n useEffect(() => () => setRefs([]), []);\n\n return (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <Context.Provider value={{ refs, addRefs, zIndex: props.zIndex }}>\n {props.children}\n </Context.Provider>\n );\n};\n"],"mappings":"0IAAA,MAAOA,MAAP,EAAgBC,aAAhB,CAA+BC,UAA/B,CAA2CC,SAA3C,CAAsDC,QAAtD,KAAsE,OAAtE,CAEA,GAAMC,QAAO,CAAGJ,aAAa,CAI1B,CACDK,IAAI,CAAE,EADL,CAEDC,MAAM,OAFL,CAJ0B,CAA7B,CASA,MAAO,SAASC,iBAAT,EAA4B,CACjC,MAAON,WAAU,CAACG,OAAD,CAClB,CAUD,MAAO,IAAMI,wBAGX,CAAG,SAACC,CAAD,CAAW,OACUN,QAAQ,CAAiC,EAAjC,CADlB,uBACPE,CADO,MACDK,CADC,QAEsBH,gBAAgB,EAFtC,CAEGI,CAFH,GAENC,OAFM,CAgCd,MANAV,UAAS,CAAC,UAAM,CACdS,CAAc,EAAIA,CAAc,CAACN,CAAD,CACjC,CAFQ,CAEN,CAACA,CAAD,CAFM,CAMT,CAFAH,SAAS,CAAC,iBAAM,kBAAMQ,EAAO,CAAC,EAAD,CAAb,CAAN,CAAD,CAA0B,EAA1B,CAET,CAEE,oBAAC,OAAD,CAAS,QAAT,EAAkB,KAAK,CAAE,CAAEL,IAAI,CAAJA,CAAF,CAAQO,OAAO,CA1B1B,QAAVA,QAAU,CAACC,CAAD,CAA4C,CAC1D,GAAoB,CAAhB,CAAAA,CAAM,CAACC,MAAX,CAAuB,CACrB,GAAMC,EAAO,8BACRV,CAAI,CAACW,MAAL,CAAY,SAACC,CAAD,QAAUA,EAAI,CAACC,OAAf,CAAZ,CADQ,qBAERL,CAAM,CAACG,MAAP,CAAc,SAACG,CAAD,CAAa,SACvBA,CAAO,CAACD,OADe,EAIrB,CAACb,CAAI,CAACe,IAAL,CAAU,SAACH,CAAD,QAAUA,EAAI,CAACC,OAAL,GAAiBC,CAAO,CAACD,OAAnC,CAAV,CACT,CALE,CAFQ,EAAb,CASAR,CAAO,CAACK,CAAD,CACR,CACF,CAa0B,CAAiBT,MAAM,CAAEG,CAAK,CAACH,MAA/B,CAAzB,EACGG,CAAK,CAACY,QADT,CAIH,CAzCM"}
1
+ {"version":3,"file":"PortalWithThemeContext.js","names":["React","createContext","useContext","useEffect","useState","Context","refs","zIndex","usePortalContext","PortalWithThemeProvider","props","setRefs","contextAddRefs","addRefs","addRef","length","newRefs","filter","item","current","addItem","find","children"],"sources":["../../../../../../src/components/PortalWithTheme/PortalWithThemeContext/PortalWithThemeContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react';\n\nconst Context = createContext<{\n refs: React.RefObject<HTMLElement>[];\n addRefs?: (ref: React.RefObject<HTMLElement>[]) => void;\n zIndex?: number;\n}>({\n refs: [],\n zIndex: undefined,\n});\n\nexport function usePortalContext() {\n return useContext(Context);\n}\n/**\n * PortalWithThemeProvider\n * нужен для того чтобы получать рефы дочерних порталов и прокидывать их в родительские порталы\n * Это нужно чтобы в компонентах использовать usePortalContext()\n * и получать рефы всех вложенных порталов в компонент, чтобы без ошибочно реализовать onOutsideClick.\n * Проблема заключалась в том что при нажатии на любой вложенный портал,\n * компонент думал что клик произошел вне компонента и срабатывал onOutsideClick.\n * Сейчас когда мы знаем рефы всех вложенных порталов мы можем игнорировать события кликов на вложенных порталах\n */\nexport const PortalWithThemeProvider: React.FC<{\n zIndex?: number;\n children?: React.ReactNode;\n}> = (props) => {\n const [refs, setRefs] = useState<React.RefObject<HTMLElement>[]>([]);\n const { addRefs: contextAddRefs } = usePortalContext();\n\n /**\n * функция для добавления рефов дочерних порталов\n * @param {React.RefObject<HTMLElement>[]} addRef массив ссылок\n */\n const addRefs = (addRef: React.RefObject<HTMLElement>[]) => {\n if (addRef.length > 0) {\n const newRefs = [\n ...refs.filter((item) => item.current),\n ...addRef.filter((addItem) => {\n if (!addItem.current) {\n return false;\n }\n return !refs.find((item) => item.current === addItem.current);\n }),\n ];\n setRefs(newRefs);\n }\n };\n\n /**\n * при изменении дочерних рефов необходимо добавить их в родительские порталы\n */\n useEffect(() => {\n contextAddRefs && contextAddRefs(refs);\n }, [refs]);\n\n useEffect(() => () => setRefs([]), []);\n\n return (\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n <Context.Provider value={{ refs, addRefs, zIndex: props.zIndex }}>\n {props.children}\n </Context.Provider>\n );\n};\n"],"mappings":"0IAAA,MAAOA,MAAP,EAAgBC,aAAhB,CAA+BC,UAA/B,CAA2CC,SAA3C,CAAsDC,QAAtD,KAAsE,OAAtE,CAEA,GAAMC,QAAO,CAAGJ,aAAa,CAI1B,CACDK,IAAI,CAAE,EADL,CAEDC,MAAM,OAFL,CAJ0B,CAA7B,CASA,MAAO,SAASC,iBAAT,EAA4B,CACjC,MAAON,WAAU,CAACG,OAAD,CAClB,CAUD,MAAO,IAAMI,wBAGX,CAAG,SAACC,CAAD,CAAW,OACUN,QAAQ,CAAiC,EAAjC,CADlB,uBACPE,CADO,MACDK,CADC,QAEsBH,gBAAgB,EAFtC,CAEGI,CAFH,GAENC,OAFM,CAgCd,MANAV,UAAS,CAAC,UAAM,CACdS,CAAc,EAAIA,CAAc,CAACN,CAAD,CACjC,CAFQ,CAEN,CAACA,CAAD,CAFM,CAMT,CAFAH,SAAS,CAAC,iBAAM,kBAAMQ,EAAO,CAAC,EAAD,CAAb,CAAN,CAAD,CAA0B,EAA1B,CAET,CAEE,oBAAC,OAAD,CAAS,QAAT,EAAkB,KAAK,CAAE,CAAEL,IAAI,CAAJA,CAAF,CAAQO,OAAO,CA1B1B,QAAVA,QAAU,CAACC,CAAD,CAA4C,CAC1D,GAAoB,CAAhB,CAAAA,CAAM,CAACC,MAAX,CAAuB,CACrB,GAAMC,EAAO,8BACRV,CAAI,CAACW,MAAL,CAAY,SAACC,CAAD,QAAUA,EAAI,CAACC,OAAf,CAAZ,CADQ,qBAERL,CAAM,CAACG,MAAP,CAAc,SAACG,CAAD,CAAa,SACvBA,CAAO,CAACD,OADe,EAIrB,CAACb,CAAI,CAACe,IAAL,CAAU,SAACH,CAAD,QAAUA,EAAI,CAACC,OAAL,GAAiBC,CAAO,CAACD,OAAnC,CAAV,CACT,CALE,CAFQ,EAAb,CASAR,CAAO,CAACK,CAAD,CACR,CACF,CAa0B,CAAiBT,MAAM,CAAEG,CAAK,CAACH,MAA/B,CAAzB,EACGG,CAAK,CAACY,QADT,CAIH,CAzCM"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["defaultGetItemLabel","item","label","withDefaultGetters","props","getItemLabel","getProgress","progress","progressNormal","Math","ceil","calculateLinePositions","steps","containerWidth","lines","gap","widthWithoutGap","max","lineWidth","padding","i","push","width","y","x","generateMask","length","svg","index"],"sources":["../../../../../src/components/ProgressLine/helpers.ts"],"sourcesContent":["import {\n ProgressLineItemDefault,\n ProgressLinePropGetItemLabel,\n ProgressLineProps,\n} from './types';\n\nconst defaultGetItemLabel: ProgressLinePropGetItemLabel<\n ProgressLineItemDefault\n> = (item) => item.label;\n\nexport function withDefaultGetters<ITEM>(props: ProgressLineProps<ITEM>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n };\n}\n\nexport const getProgress = (progress: number) => {\n const progressNormal = Math.ceil(progress);\n\n if (progressNormal >= 100) {\n return 1;\n }\n\n if (progressNormal <= 0) {\n return 0;\n }\n\n return progressNormal / 100;\n};\n\ntype ProgressLineSvgItem = {\n width: number;\n x: number;\n y: number;\n};\n\nexport const calculateLinePositions = (\n steps: number,\n containerWidth: number,\n): ProgressLineSvgItem[] => {\n const lines: ProgressLineSvgItem[] = [];\n const gap = 2;\n const widthWithoutGap = Math.max(containerWidth - (steps - 1) * gap, 0);\n const lineWidth = widthWithoutGap / steps;\n let padding = 0;\n for (let i = 0; i < steps; i++) {\n lines.push({\n width: lineWidth,\n y: 0,\n x: padding,\n });\n padding += lineWidth + gap;\n }\n return lines;\n};\n\nexport const generateMask = (lines: ProgressLineSvgItem[]): string => {\n const { length } = lines;\n if (length > 0) {\n const width = lines[length - 1].x + lines[length - 1].width;\n let svg = `%3csvg width='${width}px' height='4px' xmlns='http://www.w3.org/2000/svg'%3e`;\n for (let index = 0; index < length; index++) {\n const { x, width, y } = lines[index];\n svg += `%3crect x='${x}px' y='${y}px' height='4px' width='${width}px' /%3e`;\n }\n svg += '%3c/svg%3e';\n return `url(\"data:image/svg+xml;charset=UTF-8,${svg}\")`;\n }\n return '';\n};\n"],"mappings":"qqBAMA,GAAMA,oBAEL,CAAG,SAACC,CAAD,QAAUA,EAAI,CAACC,KAAf,CAFJ,CAIA,MAAO,SAASC,mBAAT,CAAkCC,CAAlC,CAAkE,CACvE,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBL,mBAFtC,EAID,CAED,MAAO,IAAMM,YAAW,CAAG,SAACC,CAAD,CAAsB,CAC/C,GAAMC,EAAc,CAAGC,IAAI,CAACC,IAAL,CAAUH,CAAV,CAAvB,CAD+C,MAGzB,IAAlB,EAAAC,CAH2C,CAItC,CAJsC,CAOzB,CAAlB,EAAAA,CAP2C,CAQtC,CARsC,CAWxCA,CAAc,CAAG,GACzB,CAZM,CAoBP,MAAO,IAAMG,uBAAsB,CAAG,SACpCC,CADoC,CAEpCC,CAFoC,CAGV,CAM1B,OALMC,EAA4B,CAAG,EAKrC,CAJMC,CAAG,CAAG,CAIZ,CAHMC,CAAe,CAAGP,IAAI,CAACQ,GAAL,CAASJ,CAAc,CAAG,CAACD,CAAK,CAAG,CAAT,EAAcG,CAAxC,CAA6C,CAA7C,CAGxB,CAFMG,CAAS,CAAGF,CAAe,CAAGJ,CAEpC,CADIO,CAAO,CAAG,CACd,CAASC,CAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGR,CAApB,CAA2BQ,CAAC,EAA5B,CACEN,CAAK,CAACO,IAAN,CAAW,CACTC,KAAK,CAAEJ,CADE,CAETK,CAAC,CAAE,CAFM,CAGTC,CAAC,CAAEL,CAHM,CAAX,CADF,CAMEA,CAAO,EAAID,CAAS,CAAGH,CANzB,CAQA,MAAOD,EACR,CAlBM,CAoBP,MAAO,IAAMW,aAAY,CAAG,SAACX,CAAD,CAA0C,CACpE,GAAQY,EAAR,CAAmBZ,CAAnB,CAAQY,MAAR,CACA,GAAa,CAAT,CAAAA,CAAJ,CAAgB,CAGd,OAFMJ,EAAK,CAAGR,CAAK,CAACY,CAAM,CAAG,CAAV,CAAL,CAAkBF,CAAlB,CAAsBV,CAAK,CAACY,CAAM,CAAG,CAAV,CAAL,CAAkBJ,KAEtD,CADIK,CAAG,yBAAoBL,CAApB,0DACP,CAASM,CAAK,CAAG,CAAjB,CAAoBA,CAAK,CAAGF,CAA5B,CAAoCE,CAAK,EAAzC,CAA6C,CAC3C,MAAwBd,CAAK,CAACc,CAAD,CAA7B,CAAQJ,CAAR,GAAQA,CAAR,CAAWF,CAAX,GAAWA,KAAX,CAAkBC,CAAlB,GAAkBA,CAAlB,CACAI,CAAG,uBAAkBH,CAAlB,mBAA6BD,CAA7B,oCAAyDD,CAAzD,YACJ,CAED,MADAK,EAAG,EAAI,YACP,kDAAgDA,CAAhD,OACD,CACD,MAAO,EACR,CAbM"}
1
+ {"version":3,"file":"helpers.js","names":["defaultGetItemLabel","item","label","withDefaultGetters","props","getItemLabel","getProgress","progress","progressNormal","Math","ceil","calculateLinePositions","steps","containerWidth","lines","gap","widthWithoutGap","max","lineWidth","padding","i","push","width","y","x","generateMask","length","svg","index"],"sources":["../../../../../src/components/ProgressLine/helpers.ts"],"sourcesContent":["import {\n ProgressLineItemDefault,\n ProgressLinePropGetItemLabel,\n ProgressLineProps,\n} from './types';\n\nconst defaultGetItemLabel: ProgressLinePropGetItemLabel<\n ProgressLineItemDefault\n> = (item) => item.label;\n\nexport function withDefaultGetters<ITEM>(props: ProgressLineProps<ITEM>) {\n return {\n ...props,\n getItemLabel: props.getItemLabel || defaultGetItemLabel,\n };\n}\n\nexport const getProgress = (progress: number) => {\n const progressNormal = Math.ceil(progress);\n\n if (progressNormal >= 100) {\n return 1;\n }\n\n if (progressNormal <= 0) {\n return 0;\n }\n\n return progressNormal / 100;\n};\n\ntype ProgressLineSvgItem = {\n width: number;\n x: number;\n y: number;\n};\n\nexport const calculateLinePositions = (\n steps: number,\n containerWidth: number,\n): ProgressLineSvgItem[] => {\n const lines: ProgressLineSvgItem[] = [];\n const gap = 2;\n const widthWithoutGap = Math.max(containerWidth - (steps - 1) * gap, 0);\n const lineWidth = widthWithoutGap / steps;\n let padding = 0;\n for (let i = 0; i < steps; i++) {\n lines.push({\n width: lineWidth,\n y: 0,\n x: padding,\n });\n padding += lineWidth + gap;\n }\n return lines;\n};\n\nexport const generateMask = (lines: ProgressLineSvgItem[]): string => {\n const { length } = lines;\n if (length > 0) {\n const width = lines[length - 1].x + lines[length - 1].width;\n /* cspell:disable-next-line */\n let svg = `%3csvg width='${width}px' height='4px' xmlns='http://www.w3.org/2000/svg'%3e`;\n for (let index = 0; index < length; index++) {\n const { x, width, y } = lines[index];\n /* cspell:disable-next-line */\n svg += `%3crect x='${x}px' y='${y}px' height='4px' width='${width}px' /%3e`;\n }\n svg += '%3c/svg%3e';\n return `url(\"data:image/svg+xml;charset=UTF-8,${svg}\")`;\n }\n return '';\n};\n"],"mappings":"qqBAMA,GAAMA,oBAEL,CAAG,SAACC,CAAD,QAAUA,EAAI,CAACC,KAAf,CAFJ,CAIA,MAAO,SAASC,mBAAT,CAAkCC,CAAlC,CAAkE,CACvE,sCACKA,CADL,MAEEC,YAAY,CAAED,CAAK,CAACC,YAAN,EAAsBL,mBAFtC,EAID,CAED,MAAO,IAAMM,YAAW,CAAG,SAACC,CAAD,CAAsB,CAC/C,GAAMC,EAAc,CAAGC,IAAI,CAACC,IAAL,CAAUH,CAAV,CAAvB,CAD+C,MAGzB,IAAlB,EAAAC,CAH2C,CAItC,CAJsC,CAOzB,CAAlB,EAAAA,CAP2C,CAQtC,CARsC,CAWxCA,CAAc,CAAG,GACzB,CAZM,CAoBP,MAAO,IAAMG,uBAAsB,CAAG,SACpCC,CADoC,CAEpCC,CAFoC,CAGV,CAM1B,OALMC,EAA4B,CAAG,EAKrC,CAJMC,CAAG,CAAG,CAIZ,CAHMC,CAAe,CAAGP,IAAI,CAACQ,GAAL,CAASJ,CAAc,CAAG,CAACD,CAAK,CAAG,CAAT,EAAcG,CAAxC,CAA6C,CAA7C,CAGxB,CAFMG,CAAS,CAAGF,CAAe,CAAGJ,CAEpC,CADIO,CAAO,CAAG,CACd,CAASC,CAAC,CAAG,CAAb,CAAgBA,CAAC,CAAGR,CAApB,CAA2BQ,CAAC,EAA5B,CACEN,CAAK,CAACO,IAAN,CAAW,CACTC,KAAK,CAAEJ,CADE,CAETK,CAAC,CAAE,CAFM,CAGTC,CAAC,CAAEL,CAHM,CAAX,CADF,CAMEA,CAAO,EAAID,CAAS,CAAGH,CANzB,CAQA,MAAOD,EACR,CAlBM,CAoBP,MAAO,IAAMW,aAAY,CAAG,SAACX,CAAD,CAA0C,CACpE,GAAQY,EAAR,CAAmBZ,CAAnB,CAAQY,MAAR,CACA,GAAa,CAAT,CAAAA,CAAJ,CAAgB,CAId,OAHMJ,EAAK,CAAGR,CAAK,CAACY,CAAM,CAAG,CAAV,CAAL,CAAkBF,CAAlB,CAAsBV,CAAK,CAACY,CAAM,CAAG,CAAV,CAAL,CAAkBJ,KAGtD,CADIK,CAAG,yBAAoBL,CAApB,0DACP,CAASM,CAAK,CAAG,CAAjB,CAAoBA,CAAK,CAAGF,CAA5B,CAAoCE,CAAK,EAAzC,CAA6C,CAC3C,MAAwBd,CAAK,CAACc,CAAD,CAA7B,CAAQJ,CAAR,GAAQA,CAAR,CAAWF,CAAX,GAAWA,KAAX,CAAkBC,CAAlB,GAAkBA,CAAlB,CAEAI,CAAG,uBAAkBH,CAAlB,mBAA6BD,CAA7B,oCAAyDD,CAAzD,YACJ,CAED,MADAK,EAAG,EAAI,YACP,kDAAgDA,CAAhD,OACD,CACD,MAAO,EACR,CAfM"}
@@ -1,14 +1,14 @@
1
1
  import React from 'react';
2
2
  import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
3
3
  export declare const progressLinePropSize: readonly ["m", "s"];
4
- export declare type PropgressLinePropSize = typeof progressLinePropSize[number];
4
+ export declare type ProgressLinePropSize = typeof progressLinePropSize[number];
5
5
  export declare const defaultProgressLinePropSize: "m";
6
6
  export declare type ProgressLineItemDefault = {
7
7
  label?: string;
8
8
  };
9
9
  export declare type ProgressLinePropGetItemLabel<ITEM> = (item: ITEM) => string | undefined;
10
10
  export declare type ProgressLineProps<ITEM = ProgressLineItemDefault> = PropsWithHTMLAttributesAndRef<{
11
- size?: PropgressLinePropSize;
11
+ size?: ProgressLinePropSize;
12
12
  value?: number;
13
13
  steps?: ITEM[];
14
14
  getItemLabel?: ProgressLinePropGetItemLabel<ITEM>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["progressLinePropSize","defaultProgressLinePropSize"],"sources":["../../../../../src/components/ProgressLine/types.ts"],"sourcesContent":["import React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport const progressLinePropSize = ['m', 's'] as const;\nexport type PropgressLinePropSize = typeof progressLinePropSize[number];\nexport const defaultProgressLinePropSize = progressLinePropSize[0];\n\nexport type ProgressLineItemDefault = {\n label?: string;\n};\n\nexport type ProgressLinePropGetItemLabel<ITEM> = (\n item: ITEM,\n) => string | undefined;\n\nexport type ProgressLineProps<ITEM = ProgressLineItemDefault> =\n PropsWithHTMLAttributesAndRef<\n {\n size?: PropgressLinePropSize;\n value?: number;\n steps?: ITEM[];\n getItemLabel?: ProgressLinePropGetItemLabel<ITEM>;\n },\n HTMLDivElement\n >;\n\nexport type ProgressLineComponent = <ITEM>(\n props: ProgressLineProps<ITEM>,\n) => React.ReactElement | null;\n"],"mappings":"AAIA,MAAO,IAAMA,qBAAoB,CAAG,CAAC,GAAD,CAAM,GAAN,CAA7B,CAEP,MAAO,IAAMC,4BAA2B,CAAGD,oBAAoB,CAAC,CAAD,CAAxD"}
1
+ {"version":3,"file":"types.js","names":["progressLinePropSize","defaultProgressLinePropSize"],"sources":["../../../../../src/components/ProgressLine/types.ts"],"sourcesContent":["import React from 'react';\n\nimport { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';\n\nexport const progressLinePropSize = ['m', 's'] as const;\nexport type ProgressLinePropSize = typeof progressLinePropSize[number];\nexport const defaultProgressLinePropSize = progressLinePropSize[0];\n\nexport type ProgressLineItemDefault = {\n label?: string;\n};\n\nexport type ProgressLinePropGetItemLabel<ITEM> = (\n item: ITEM,\n) => string | undefined;\n\nexport type ProgressLineProps<ITEM = ProgressLineItemDefault> =\n PropsWithHTMLAttributesAndRef<\n {\n size?: ProgressLinePropSize;\n value?: number;\n steps?: ITEM[];\n getItemLabel?: ProgressLinePropGetItemLabel<ITEM>;\n },\n HTMLDivElement\n >;\n\nexport type ProgressLineComponent = <ITEM>(\n props: ProgressLineProps<ITEM>,\n) => React.ReactElement | null;\n"],"mappings":"AAIA,MAAO,IAAMA,qBAAoB,CAAG,CAAC,GAAD,CAAM,GAAN,CAA7B,CAEP,MAAO,IAAMC,4BAA2B,CAAGD,oBAAoB,CAAC,CAAD,CAAxD"}