@sberbusiness/triplex-next 1.50.0 → 1.51.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 (572) hide show
  1. package/chunks/{AlertProcessSpoiler-j0wThVzZ.js → AlertProcessSpoiler-CSgKrh2v.js} +16 -16
  2. package/chunks/{AlertProcessSpoiler-j0wThVzZ.js.map → AlertProcessSpoiler-CSgKrh2v.js.map} +1 -1
  3. package/chunks/{CalendarViewItem-BCcAb-X6.js → CalendarViewItem-CsJy5ykc.js} +20 -20
  4. package/chunks/{CalendarViewItem-BCcAb-X6.js.map → CalendarViewItem-CsJy5ykc.js.map} +1 -1
  5. package/chunks/Card.module-CvNX5CGp.js +32 -0
  6. package/chunks/Card.module-CvNX5CGp.js.map +1 -0
  7. package/chunks/Carousel.module-Dy8ocMys.js +26 -0
  8. package/chunks/Carousel.module-Dy8ocMys.js.map +1 -0
  9. package/chunks/CheckboxTreeExtended.module-C4HfTGgw.js +24 -0
  10. package/chunks/CheckboxTreeExtended.module-C4HfTGgw.js.map +1 -0
  11. package/chunks/{Chip-HiAUilI6.js → Chip-Cmdhh831.js} +16 -16
  12. package/chunks/{Chip-HiAUilI6.js.map → Chip-Cmdhh831.js.map} +1 -1
  13. package/chunks/Confirm.module-CxYF3aTZ.js +24 -0
  14. package/chunks/Confirm.module-CxYF3aTZ.js.map +1 -0
  15. package/chunks/{DropdownListItem-BDtBpFPH.js → DropdownListItem-CGEa4kss.js} +10 -10
  16. package/chunks/{DropdownListItem-BDtBpFPH.js.map → DropdownListItem-CGEa4kss.js.map} +1 -1
  17. package/chunks/DropdownMobile.module-DfQTptBG.js +40 -0
  18. package/chunks/DropdownMobile.module-DfQTptBG.js.map +1 -0
  19. package/chunks/Footer.module-D6KAwK66.js +12 -0
  20. package/chunks/Footer.module-D6KAwK66.js.map +1 -0
  21. package/chunks/{HeaderLayoutSidebar.module-CLhjV8YX.js → HeaderLayoutSidebar.module-ZiuXc8rB.js} +4 -4
  22. package/chunks/HeaderLayoutSidebar.module-ZiuXc8rB.js.map +1 -0
  23. package/chunks/HeaderTabs.module-DAT-cz9W.js +12 -0
  24. package/chunks/HeaderTabs.module-DAT-cz9W.js.map +1 -0
  25. package/chunks/{HeaderTitle.module-L5xbACMY.js → HeaderTitle.module-B6EgU3Ur.js} +4 -4
  26. package/chunks/HeaderTitle.module-B6EgU3Ur.js.map +1 -0
  27. package/chunks/ImageGalleryExtendedMain.module-Cea4TWSW.js +28 -0
  28. package/chunks/ImageGalleryExtendedMain.module-Cea4TWSW.js.map +1 -0
  29. package/chunks/{ImageGalleryExtendedThumb-D4Ws4ax0.js → ImageGalleryExtendedThumb-BWL2qRSG.js} +5 -5
  30. package/chunks/{ImageGalleryExtendedThumb-D4Ws4ax0.js.map → ImageGalleryExtendedThumb-BWL2qRSG.js.map} +1 -1
  31. package/chunks/IslandAccordion.module-DJHHfCiS.js +44 -0
  32. package/chunks/IslandAccordion.module-DJHHfCiS.js.map +1 -0
  33. package/chunks/IslandWidgetFooter.module-DiDouc36.js +18 -0
  34. package/chunks/IslandWidgetFooter.module-DiDouc36.js.map +1 -0
  35. package/chunks/IslandWidgetHeader.module-C4lnmfP8.js +28 -0
  36. package/chunks/IslandWidgetHeader.module-C4lnmfP8.js.map +1 -0
  37. package/chunks/{LightBoxContent-C3x8czUb.js → LightBoxContent-D1jh-VRG.js} +16 -16
  38. package/chunks/{LightBoxContent-C3x8czUb.js.map → LightBoxContent-D1jh-VRG.js.map} +1 -1
  39. package/chunks/LightBoxControls.module-DpdMuK3w.js +26 -0
  40. package/chunks/LightBoxControls.module-DpdMuK3w.js.map +1 -0
  41. package/chunks/{LightBoxSideOverlayClose.module-CQVu4Q1F.js → LightBoxSideOverlayClose.module-BE9MPBWn.js} +4 -4
  42. package/chunks/LightBoxSideOverlayClose.module-BE9MPBWn.js.map +1 -0
  43. package/chunks/{ListItemControlsButton-DZKgVfLa.js → ListItemControlsButton-DMTgoNum.js} +9 -9
  44. package/chunks/{ListItemControlsButton-DZKgVfLa.js.map → ListItemControlsButton-DMTgoNum.js.map} +1 -1
  45. package/chunks/ListItemTail.module-CJldCHug.js +18 -0
  46. package/chunks/ListItemTail.module-CJldCHug.js.map +1 -0
  47. package/chunks/ListMasterFooter.module-Do3leoKd.js +14 -0
  48. package/chunks/ListMasterFooter.module-Do3leoKd.js.map +1 -0
  49. package/chunks/ModalWindow.module-Be8V70hN.js +28 -0
  50. package/chunks/ModalWindow.module-Be8V70hN.js.map +1 -0
  51. package/chunks/Notification.module-ecOAwTp9.js +34 -0
  52. package/chunks/Notification.module-ecOAwTp9.js.map +1 -0
  53. package/chunks/Overlay.module-CJy1uzDx.js +30 -0
  54. package/chunks/Overlay.module-CJy1uzDx.js.map +1 -0
  55. package/chunks/Page.module-Bg5zU-FU.js +17 -0
  56. package/chunks/Page.module-Bg5zU-FU.js.map +1 -0
  57. package/chunks/SMSField.module-CaIdPHQv.js +30 -0
  58. package/chunks/SMSField.module-CaIdPHQv.js.map +1 -0
  59. package/chunks/SliderExtendedMarks.module-CByrMF0N.js +24 -0
  60. package/chunks/SliderExtendedMarks.module-CByrMF0N.js.map +1 -0
  61. package/chunks/{SliderExtendedRail-DJ-AY9GZ.js → SliderExtendedRail-Cxwdq3X_.js} +5 -5
  62. package/chunks/{SliderExtendedRail-DJ-AY9GZ.js.map → SliderExtendedRail-Cxwdq3X_.js.map} +1 -1
  63. package/chunks/StatusTracker.module-CeeZRTqV.js +44 -0
  64. package/chunks/StatusTracker.module-CeeZRTqV.js.map +1 -0
  65. package/chunks/{StepperStepArrowBorder-UArUUlmL.js → StepperStepArrowBorder-DppBTMJR.js} +16 -16
  66. package/chunks/{StepperStepArrowBorder-UArUUlmL.js.map → StepperStepArrowBorder-DppBTMJR.js.map} +1 -1
  67. package/chunks/{SuggestFieldMobileDropdownHint-BogTgDdU.js → SuggestFieldMobileDropdownHint-xI8WqPMN.js} +3 -3
  68. package/chunks/{SuggestFieldMobileDropdownHint-BogTgDdU.js.map → SuggestFieldMobileDropdownHint-xI8WqPMN.js.map} +1 -1
  69. package/chunks/TableFooter.module-D8EPLsYP.js +22 -0
  70. package/chunks/TableFooter.module-D8EPLsYP.js.map +1 -0
  71. package/chunks/TabsExtended.module-B4OKALe_.js +26 -0
  72. package/chunks/TabsExtended.module-B4OKALe_.js.map +1 -0
  73. package/chunks/TabsLine.module-BLW11Nge.js +36 -0
  74. package/chunks/TabsLine.module-BLW11Nge.js.map +1 -0
  75. package/chunks/TooltipDesktop.module-Dr0TxDRr.js +32 -0
  76. package/chunks/TooltipDesktop.module-Dr0TxDRr.js.map +1 -0
  77. package/chunks/TreeView.module-DNPdGna_.js +12 -0
  78. package/chunks/TreeView.module-DNPdGna_.js.map +1 -0
  79. package/chunks/{UploadZoneInput-Dne6D9Xv.js → UploadZoneInput-DiQ-Y5dY.js} +5 -5
  80. package/chunks/{UploadZoneInput-Dne6D9Xv.js.map → UploadZoneInput-DiQ-Y5dY.js.map} +1 -1
  81. package/chunks/{constants-kTbOu3rB.js → constants-CA1ji6VT.js} +27 -27
  82. package/chunks/{constants-kTbOu3rB.js.map → constants-CA1ji6VT.js.map} +1 -1
  83. package/chunks/{utils-aCX4wxJN.js → utils-L8zh-6z5.js} +10 -10
  84. package/chunks/{utils-aCX4wxJN.js.map → utils-L8zh-6z5.js.map} +1 -1
  85. package/chunks/{utils-DwZMn3Pm.js → utils-bf0OCZkw.js} +11 -11
  86. package/chunks/{utils-DwZMn3Pm.js.map → utils-bf0OCZkw.js.map} +1 -1
  87. package/chunks/{utils-CpB4d_7x.js → utils-cTEFugEe.js} +6 -6
  88. package/chunks/{utils-CpB4d_7x.js.map → utils-cTEFugEe.js.map} +1 -1
  89. package/chunks/{utils-QB9OKYfu.js → utils-yPGBXSfW.js} +27 -27
  90. package/chunks/{utils-QB9OKYfu.js.map → utils-yPGBXSfW.js.map} +1 -1
  91. package/components/Alert/AlertContext/AlertContext.js +7 -7
  92. package/components/Alert/AlertProcess/AlertProcess.js +2 -2
  93. package/components/Alert/AlertProcess/components/AlertProcessSpoiler.js +1 -1
  94. package/components/Amount/Amount.js +2 -2
  95. package/components/AmountField/AmountField.js +8 -8
  96. package/components/Avatar/Avatar.js +13 -13
  97. package/components/Badge/Badge.js +4 -4
  98. package/components/Badge/BadgeDot.js +4 -4
  99. package/components/Badge/components/BadgeContent.js +6 -6
  100. package/components/Badge/components/BadgePostfix.js +1 -1
  101. package/components/Badge/components/BadgePrefix.js +1 -1
  102. package/components/Body/Body.js +3 -3
  103. package/components/Button/Button.js +20 -20
  104. package/components/Button/ButtonBase.js +1 -1
  105. package/components/Button/ButtonDropdown.js +8 -8
  106. package/components/Button/ButtonDropdownExtended.js +2 -2
  107. package/components/Button/ButtonIcon.js +3 -3
  108. package/components/Calendar/Calendar.js +4 -4
  109. package/components/Calendar/components/CalendarControls.js +1 -1
  110. package/components/Calendar/components/CalendarFooter.js +1 -1
  111. package/components/Calendar/components/CalendarViewDays.js +1 -1
  112. package/components/Calendar/components/CalendarViewItem.js +1 -1
  113. package/components/Calendar/components/CalendarViewMonths.js +1 -1
  114. package/components/Calendar/components/CalendarViewYears.js +1 -1
  115. package/components/Card/CardAction.js +5 -5
  116. package/components/Card/CardStatic.js +2 -2
  117. package/components/Card/components/CardContent/CardContent.js +1 -1
  118. package/components/Card/components/CardContent/components/CardContentBody.js +1 -1
  119. package/components/Card/components/CardContent/components/CardContentFooter.js +1 -1
  120. package/components/Card/components/CardContent/components/CardContentHeader.js +1 -1
  121. package/components/Card/components/CardMedia.js +1 -1
  122. package/components/Card/utils.js +1 -1
  123. package/components/Carousel/Carousel.js +12 -11
  124. package/components/Carousel/Carousel.js.map +1 -1
  125. package/components/Carousel/CarouselButton.js +6 -6
  126. package/components/Carousel/CarouselButton.js.map +1 -1
  127. package/components/Carousel/CarouselContext.js +4 -4
  128. package/components/Carousel/CarouselContext.js.map +1 -1
  129. package/components/Carousel/CarouselIndicators.js +13 -190
  130. package/components/Carousel/CarouselIndicators.js.map +1 -1
  131. package/components/Carousel/CarouselItem.js +2 -2
  132. package/components/Carousel/CarouselItem.js.map +1 -1
  133. package/components/Carousel/CarouselTrack.js +2 -2
  134. package/components/Carousel/CarouselTrack.js.map +1 -1
  135. package/components/Carousel/CarouselViewport.js +7 -7
  136. package/components/Carousel/CarouselViewport.js.map +1 -1
  137. package/components/Carousel/constants.js +3 -3
  138. package/components/Carousel/constants.js.map +1 -1
  139. package/components/Carousel/enums.js +0 -6
  140. package/components/Carousel/enums.js.map +1 -1
  141. package/components/Carousel/index.js +1 -2
  142. package/components/Carousel/utils.js +1 -23
  143. package/components/Carousel/utils.js.map +1 -1
  144. package/components/CarouselExtended/CarouselExtended.js +1 -1
  145. package/components/Checkbox/Checkbox.js +10 -10
  146. package/components/Checkbox/CheckboxXGroup.js +8 -8
  147. package/components/Checkbox/CheckboxYGroup.js +1 -1
  148. package/components/CheckboxTreeExtended/CheckboxTreeExtended.js +1 -1
  149. package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedArrow.js +1 -1
  150. package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedCheckbox.js +1 -1
  151. package/components/CheckboxTreeExtended/components/CheckboxTreeExtendedNode.js +1 -1
  152. package/components/Chip/Chip.js +1 -1
  153. package/components/Chip/ChipClearButton.js +1 -1
  154. package/components/Chip/ChipDatePicker/ChipDatePicker.js +1 -1
  155. package/components/Chip/ChipDatePicker/ChipDatePickerTarget.js +1 -1
  156. package/components/Chip/ChipDropdownArrow.js +2 -2
  157. package/components/Chip/ChipIcon.js +1 -1
  158. package/components/Chip/ChipMonthYearPicker/ChipMonthYearPicker.js +1 -1
  159. package/components/Chip/ChipMonthYearPicker/ChipMonthYearPickerTarget.js +1 -1
  160. package/components/Chip/ChipMultiselect.js +1 -1
  161. package/components/Chip/ChipOptions.js +2 -2
  162. package/components/Chip/ChipSelect/ChipSelect.js +1 -1
  163. package/components/Chip/ChipSelect/ChipSelectTarget.js +1 -1
  164. package/components/Chip/ChipSort.js +1 -1
  165. package/components/Chip/ChipSuggest/ChipSuggest.js +1 -1
  166. package/components/Chip/ChipSuggest/ChipSuggestDropdown.js +1 -1
  167. package/components/Chip/ChipSuggest/ChipSuggestTarget.js +1 -1
  168. package/components/Chip/ChipSuggest/desktop/ChipSuggestDesktopDropdownField.js +1 -1
  169. package/components/Chip/index.js +1 -1
  170. package/components/ChipGroup/ChipGroup.js +7 -7
  171. package/components/Col/Col.js +132 -132
  172. package/components/CollapsibleTree/CollapsibleTree.js +1 -1
  173. package/components/CollapsibleTree/components/CollapsibleTreeLeafContent.js +1 -1
  174. package/components/CollapsibleTree/components/CollapsibleTreeLeafNode.js +1 -1
  175. package/components/CollapsibleTree/components/CollapsibleTreeNodeHeader.js +4 -4
  176. package/components/CollapsibleTreeExtended/components/CollapsibleTreeExtendedNode.js +1 -1
  177. package/components/Confirm/Confirm.js +1 -1
  178. package/components/Confirm/components/ConfirmCloseButton.js +1 -1
  179. package/components/Confirm/components/ConfirmContent.js +1 -1
  180. package/components/Confirm/components/ConfirmContentTitle.js +1 -1
  181. package/components/Confirm/components/ConfirmControls.js +1 -1
  182. package/components/DateField/DateFieldTarget.js +4 -4
  183. package/components/DatePickerExtended/DatePickerExtended.js +2 -2
  184. package/components/DatePickerExtended/DatePickerExtendedDropdown.js +1 -1
  185. package/components/DateRange/DateRange.js +3 -3
  186. package/components/DesignTokens/DesignTokenUtils.js +1 -1
  187. package/components/DesignTokens/DesignTokensComponents.js +5 -0
  188. package/components/DesignTokens/DesignTokensComponents.js.map +1 -1
  189. package/components/DesignTokens/DesignTokensComponentsThemeDark.js +5 -0
  190. package/components/DesignTokens/DesignTokensComponentsThemeDark.js.map +1 -1
  191. package/components/DesignTokens/components/Carousel.js +2 -29
  192. package/components/DesignTokens/components/Carousel.js.map +1 -1
  193. package/components/DesignTokens/components/ImageGallery.js +0 -9
  194. package/components/DesignTokens/components/ImageGallery.js.map +1 -1
  195. package/components/DesignTokens/components/PageIndicators.js +36 -0
  196. package/components/DesignTokens/components/PageIndicators.js.map +1 -0
  197. package/components/DesignTokens/components/index.js +3 -0
  198. package/components/DesignTokens/components/index.js.map +1 -1
  199. package/components/DesignTokens/types/DesignTokensTypes.js.map +1 -1
  200. package/components/Divider/Divider.js +17 -17
  201. package/components/DocumentNumberEdit/DocumentNumberEdit.js +3 -3
  202. package/components/Dropdown/desktop/DropdownDesktop.js +6 -6
  203. package/components/Dropdown/desktop/DropdownList.js +1 -1
  204. package/components/Dropdown/desktop/DropdownListItem.js +1 -1
  205. package/components/Dropdown/desktop/index.js +1 -1
  206. package/components/Dropdown/index.js +1 -1
  207. package/components/Dropdown/mobile/DropdownMobile.js +2 -2
  208. package/components/Dropdown/mobile/DropdownMobileBody.js +1 -1
  209. package/components/Dropdown/mobile/DropdownMobileClose.js +1 -1
  210. package/components/Dropdown/mobile/DropdownMobileFooter.js +1 -1
  211. package/components/Dropdown/mobile/DropdownMobileHeader.js +1 -1
  212. package/components/Dropdown/mobile/DropdownMobileInner.js +1 -1
  213. package/components/Dropdown/mobile/DropdownMobileInput.js +1 -1
  214. package/components/Dropdown/mobile/DropdownMobileList.js +1 -1
  215. package/components/Dropdown/mobile/DropdownMobileListItem.js +1 -1
  216. package/components/Dropdown/mobile/DropdownMobileLoader.js +1 -1
  217. package/components/Dropdown/mobile/DropdownMobileMaskedInput.js +1 -1
  218. package/components/Ellipsis/Ellipsis.js +3 -3
  219. package/components/EmptyView/EmptyView.js +14 -9
  220. package/components/EmptyView/EmptyView.js.map +1 -1
  221. package/components/ExpandAnimation/ExpandAnimation.js +1 -1
  222. package/components/Footer/Footer.js +1 -1
  223. package/components/Footer/components/FooterDescription.js +1 -1
  224. package/components/Footer/components/FooterDescriptionContent.js +1 -1
  225. package/components/Footer/components/FooterDescriptionControls.js +1 -1
  226. package/components/FormField/FormField.js +11 -11
  227. package/components/FormField/components/FormFieldClear.js +1 -1
  228. package/components/FormField/components/FormFieldCounter.js +1 -1
  229. package/components/FormField/components/FormFieldDescription.js +2 -2
  230. package/components/FormField/components/FormFieldInput.js +4 -4
  231. package/components/FormField/components/FormFieldLabel.js +7 -7
  232. package/components/FormField/components/FormFieldMaskedInput.js +8 -8
  233. package/components/FormField/components/FormFieldPostfix.js +1 -1
  234. package/components/FormField/components/FormFieldPrefix.js +1 -1
  235. package/components/FormField/components/FormFieldTarget.js +8 -8
  236. package/components/FormField/components/FormFieldTextarea.js +4 -4
  237. package/components/Gap/Gap.js +8 -8
  238. package/components/Header/Header.js +1 -1
  239. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebar.js +1 -1
  240. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarContent.js +1 -1
  241. package/components/Header/components/HeaderLayoutSidebar/HeaderLayoutSidebarSidebar.js +1 -1
  242. package/components/Header/components/HeaderSubheader/HeaderSubheader.js +2 -2
  243. package/components/Header/components/HeaderTabs/HeaderTabs.js +1 -1
  244. package/components/Header/components/HeaderTabs/HeaderTabsContent.js +1 -1
  245. package/components/Header/components/HeaderTabs/HeaderTabsControls.js +1 -1
  246. package/components/Header/components/HeaderTitle/HeaderTitle.js +1 -1
  247. package/components/Header/components/HeaderTitle/HeaderTitleContent.js +1 -1
  248. package/components/Header/components/HeaderTitle/HeaderTitleControls.js +1 -1
  249. package/components/HelpBox/HelpBox.js +1 -1
  250. package/components/IconWrapper/IconWrapper.js +2 -2
  251. package/components/ImageGallery/ImageGallery.js +5 -5
  252. package/components/ImageGallery/ImageGallery.js.map +1 -1
  253. package/components/ImageGalleryExtended/ImageGalleryExtended.js +4 -4
  254. package/components/ImageGalleryExtended/ImageGalleryExtended.js.map +1 -1
  255. package/components/ImageGalleryExtended/ImageGalleryExtendedContext.js.map +1 -1
  256. package/components/ImageGalleryExtended/components/ImageGalleryExtendedArrow.js +1 -1
  257. package/components/ImageGalleryExtended/components/ImageGalleryExtendedMain.js +1 -1
  258. package/components/ImageGalleryExtended/components/ImageGalleryExtendedPageIndicators.js +39 -0
  259. package/components/ImageGalleryExtended/components/ImageGalleryExtendedPageIndicators.js.map +1 -0
  260. package/components/ImageGalleryExtended/components/ImageGalleryExtendedSlide.js +1 -1
  261. package/components/ImageGalleryExtended/components/ImageGalleryExtendedSwipeTrack.js +1 -1
  262. package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumb.js +1 -1
  263. package/components/ImageGalleryExtended/components/ImageGalleryExtendedThumbnails.js +1 -1
  264. package/components/ImageGalleryExtended/components/index.js +3 -3
  265. package/components/ImageGalleryExtended/index.js +3 -3
  266. package/components/Island/Island.js +1 -1
  267. package/components/Island/components/IslandBody.js +1 -1
  268. package/components/Island/components/IslandFooter.js +1 -1
  269. package/components/Island/components/IslandHeader.js +1 -1
  270. package/components/Island/utils.js +1 -1
  271. package/components/IslandAccordion/IslandAccordion.js +2 -2
  272. package/components/IslandAccordion/components/IslandAccordionContent.js +1 -1
  273. package/components/IslandAccordion/components/IslandAccordionFooter.js +1 -1
  274. package/components/IslandAccordion/components/IslandAccordionItem.js +2 -2
  275. package/components/IslandWidget/IslandWidget.js +3 -3
  276. package/components/IslandWidget/components/IslandWidgetBody.js +4 -4
  277. package/components/IslandWidget/components/IslandWidgetExtraFooter.js +1 -1
  278. package/components/IslandWidget/components/IslandWidgetFooter.js +1 -1
  279. package/components/IslandWidget/components/IslandWidgetFooterContent.js +1 -1
  280. package/components/IslandWidget/components/IslandWidgetFooterControls.js +1 -1
  281. package/components/IslandWidget/components/IslandWidgetHeader.js +1 -1
  282. package/components/IslandWidget/components/IslandWidgetHeaderControls.js +1 -1
  283. package/components/IslandWidget/components/IslandWidgetHeaderDescription.js +1 -1
  284. package/components/IslandWidget/components/IslandWidgetHeaderTitle.js +1 -1
  285. package/components/IslandWidget/components/IslandWidgetWrapper.js +1 -1
  286. package/components/LightBox/LightBox.js +5 -5
  287. package/components/LightBox/LightBoxContent.js +1 -1
  288. package/components/LightBox/LightBoxControls/LightBoxArrow.js +1 -1
  289. package/components/LightBox/LightBoxControls/LightBoxClose.js +1 -1
  290. package/components/LightBox/LightBoxControls/LightBoxControls.js +1 -1
  291. package/components/LightBox/LightBoxControls/LightBoxNext.js +1 -1
  292. package/components/LightBox/LightBoxControls/LightBoxPrev.js +1 -1
  293. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlay.js +12 -12
  294. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseDesktop.js +1 -1
  295. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayCloseMobile.js +1 -1
  296. package/components/LightBox/LightBoxSideOverlay/LightBoxSideOverlayLoader.js +1 -1
  297. package/components/LightBox/LightBoxSidebars/LightBoxLeftSidebar.js +3 -3
  298. package/components/LightBox/LightBoxSidebars/LightBoxRightSidebar.js +3 -3
  299. package/components/Link/Link.js +5 -5
  300. package/components/List/List.js +3 -3
  301. package/components/List/components/ListActionItem.js +1 -1
  302. package/components/List/components/ListEmptyState.js +1 -1
  303. package/components/List/components/ListItem.js +1 -1
  304. package/components/List/components/ListItemContent.js +4 -4
  305. package/components/List/components/ListItemControls.js +1 -1
  306. package/components/List/components/ListItemControlsButton.js +1 -1
  307. package/components/List/components/ListItemControlsButtonDropdown.js +1 -1
  308. package/components/List/components/ListItemLoading.js +1 -1
  309. package/components/List/components/ListItemSelectable.js +6 -6
  310. package/components/List/components/ListItemTailLeft.js +1 -1
  311. package/components/List/components/ListItemTailRight.js +1 -1
  312. package/components/List/components/ListSortableItem.js +2 -2
  313. package/components/List/components/ListSortableItemControls.js +1 -1
  314. package/components/List/components/ListSortableItemTarget.js +4 -4
  315. package/components/List/components/ListTableItem.js +3 -3
  316. package/components/List/index.js +1 -1
  317. package/components/ListMaster/ListMaster.js +1 -1
  318. package/components/ListMaster/components/ListMasterBody.js +1 -1
  319. package/components/ListMaster/components/ListMasterChipGroup.js +1 -1
  320. package/components/ListMaster/components/ListMasterFooter.js +1 -1
  321. package/components/ListMaster/components/ListMasterFooterControls.js +1 -1
  322. package/components/ListMaster/components/ListMasterFooterDescription.js +1 -1
  323. package/components/ListMaster/components/ListMasterHeader.js +2 -2
  324. package/components/ListMaster/components/SelectionControls.js +2 -2
  325. package/components/Loader/LoaderMiddle/LoaderMiddle.js +8 -8
  326. package/components/Loader/LoaderSmall/LoaderSmall.js +10 -10
  327. package/components/LoaderScreen/LoaderScreen.js +5 -5
  328. package/components/Marker/Marker.js +1 -1
  329. package/components/Marker/utils.js +1 -1
  330. package/components/MarkerStatus/MarkerStatus.js +7 -7
  331. package/components/ModalWindow/ModalWindow.js +1 -1
  332. package/components/ModalWindow/components/ModalWindowBody.js +1 -1
  333. package/components/ModalWindow/components/ModalWindowClose.js +1 -1
  334. package/components/ModalWindow/components/ModalWindowContent.js +1 -1
  335. package/components/ModalWindow/components/ModalWindowHeader.js +1 -1
  336. package/components/ModalWindow/components/ModalWindowViewManager.js +1 -1
  337. package/components/MonthYearField/MonthYearFieldTarget.js +4 -4
  338. package/components/MonthYearRange/MonthYearRange.js +14 -27
  339. package/components/MonthYearRange/MonthYearRange.js.map +1 -1
  340. package/components/MultiselectField/components/MultiselectFieldDropdown.js +1 -1
  341. package/components/MultiselectField/components/MultiselectFieldDropdownContent.js +5 -5
  342. package/components/MultiselectField/components/MultiselectFieldDropdownFooter.js +1 -1
  343. package/components/MultiselectField/components/MultiselectFieldDropdownHeader.js +1 -1
  344. package/components/Notification/Notification.js +2 -2
  345. package/components/Notification/NotificationGrouped.js +2 -2
  346. package/components/Notification/NotificationGrouped.js.map +1 -1
  347. package/components/Notification/components/NotificationBody.js +1 -1
  348. package/components/Notification/components/NotificationBodyList.js +1 -1
  349. package/components/Notification/components/NotificationClose.js +1 -1
  350. package/components/Notification/components/NotificationFooter.js +1 -1
  351. package/components/Notification/components/NotificationGroupedFooter.js +1 -1
  352. package/components/Notification/components/NotificationGroupedFooter.js.map +1 -1
  353. package/components/Notification/components/NotificationHeader.js +1 -1
  354. package/components/Notification/components/NotificationIcon.js +1 -1
  355. package/components/Notification/components/NotificationTime.js +1 -1
  356. package/components/NumberField/NumberField.js +3 -1
  357. package/components/NumberField/NumberField.js.map +1 -1
  358. package/components/NumberField/NumberFieldInput.js +25 -27
  359. package/components/NumberField/NumberFieldInput.js.map +1 -1
  360. package/components/OrderedList/OrderedList.js +18 -15
  361. package/components/OrderedList/OrderedList.js.map +1 -1
  362. package/components/OrderedList/OrderedListItem.js +2 -2
  363. package/components/Overlay/Overlay.js +1 -1
  364. package/components/Overlay/OverlayMask.js +1 -1
  365. package/components/Overlay/OverlayPanel.js +1 -1
  366. package/components/Page/Page.js +1 -1
  367. package/components/Page/components/BodyPage.js +7 -7
  368. package/components/Page/components/FooterPage.js +1 -1
  369. package/components/Page/components/HeaderPage.js +1 -1
  370. package/components/PageIndicators/PageIndicators.js +223 -0
  371. package/components/PageIndicators/PageIndicators.js.map +1 -0
  372. package/components/PageIndicators/index.js +5 -0
  373. package/components/PageIndicators/index.js.map +1 -0
  374. package/components/PageIndicators/types.js +2 -0
  375. package/components/PageIndicators/types.js.map +1 -0
  376. package/components/Pagination/components/PaginationExtended.js +3 -3
  377. package/components/Pagination/components/PaginationExtended.js.map +1 -1
  378. package/components/Pagination/components/PaginationNavigationButton.js +2 -2
  379. package/components/Pagination/components/PaginationNavigationExtended.js +1 -1
  380. package/components/Pagination/components/PaginationNavigationExtended.js.map +1 -1
  381. package/components/Pagination/components/PaginationPageButton.js +2 -2
  382. package/components/Pagination/components/PaginationPageEllipsis.js +1 -1
  383. package/components/Pagination/components/PaginationSelect.js +2 -2
  384. package/components/Radio/Radio.js +9 -9
  385. package/components/Radio/RadioXGroup.js +8 -8
  386. package/components/Radio/RadioYGroup.js +1 -1
  387. package/components/Row/Row.js +4 -4
  388. package/components/SMSField/SMSField.js +54 -41
  389. package/components/SMSField/SMSField.js.map +1 -1
  390. package/components/SMSField/components/RefreshIcon.js +1 -1
  391. package/components/SMSField/components/RefreshIcon.js.map +1 -1
  392. package/components/SMSField/components/SMSFieldInput.js +17 -16
  393. package/components/SMSField/components/SMSFieldInput.js.map +1 -1
  394. package/components/SMSField/components/SMSFieldRefresh.js +6 -13
  395. package/components/SMSField/components/SMSFieldRefresh.js.map +1 -1
  396. package/components/SMSField/components/SMSFieldSubmit.js +30 -27
  397. package/components/SMSField/components/SMSFieldSubmit.js.map +1 -1
  398. package/components/SMSField/components/SMSFieldTooltip.js +7 -9
  399. package/components/SMSField/components/SMSFieldTooltip.js.map +1 -1
  400. package/components/SegmentedControl/SegmentedControl.js +9 -9
  401. package/components/SegmentedControl/SegmentedControlSegment.js +3 -3
  402. package/components/SelectExtendedField/SelectExtendedField.js +1 -1
  403. package/components/SelectExtendedField/components/SelectExtendedFieldDropdown.js +1 -1
  404. package/components/SelectExtendedField/components/SelectExtendedFieldDropdownDefault.js +1 -1
  405. package/components/SelectExtendedField/components/SelectExtendedFieldTarget.js +7 -7
  406. package/components/SelectField/SelectField.js +1 -1
  407. package/components/Skeleton/Skeleton.js +5 -5
  408. package/components/SliderExtended/SliderExtended.js +2 -2
  409. package/components/SliderExtended/components/SliderExtendedDot/SliderExtendedDot.js +5 -5
  410. package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMark.js +1 -1
  411. package/components/SliderExtended/components/SliderExtendedMarks/SliderExtendedMarks.js +1 -1
  412. package/components/SliderExtended/components/SliderExtendedRail.js +1 -1
  413. package/components/SliderExtended/components/SliderExtendedTooltip/SliderExtendedTooltip.js +4 -4
  414. package/components/SliderExtended/components/SliderExtendedTrack/SliderExtendedTrack.js +6 -6
  415. package/components/SmallInput/SmallInput.js +1 -1
  416. package/components/Spoiler/Spoiler.js +10 -10
  417. package/components/StatusTracker/StatusTracker.js +2 -2
  418. package/components/StatusTracker/components/StatusTrackerAlert.js +1 -1
  419. package/components/StatusTracker/components/StatusTrackerBody.js +1 -1
  420. package/components/StatusTracker/components/StatusTrackerButton.js +1 -1
  421. package/components/StatusTracker/components/StatusTrackerDescription.js +1 -1
  422. package/components/StatusTracker/components/StatusTrackerFooter.js +1 -1
  423. package/components/StatusTracker/components/StatusTrackerHeader.js +1 -1
  424. package/components/StatusTracker/components/StatusTrackerMedia.js +1 -1
  425. package/components/StatusTracker/components/StatusTrackerStatus.js +1 -1
  426. package/components/StatusTracker/components/StatusTrackerStatusGroup.js +1 -1
  427. package/components/StatusTracker/components/StatusTrackerSum.js +1 -1
  428. package/components/StatusTracker/components/StatusTrackerTitle.js +1 -1
  429. package/components/Step/Step.js +10 -10
  430. package/components/Stepper/Stepper.js +8 -8
  431. package/components/Stepper/StepperExtended.js +1 -1
  432. package/components/Stepper/StepperStep.js +2 -2
  433. package/components/Stepper/StepperStepArrowBorder.js +1 -1
  434. package/components/Suggest/SuggestMobileDropdownContent.js +3 -3
  435. package/components/SuggestField/SuggestField.js +1 -1
  436. package/components/SuggestField/desktop/SuggestFieldDesktop.js +1 -1
  437. package/components/SuggestField/desktop/SuggestFieldDesktopDropdown.js +1 -1
  438. package/components/SuggestField/index.js +1 -1
  439. package/components/SuggestField/mobile/SuggestFieldMobile.js +1 -1
  440. package/components/SuggestField/mobile/SuggestFieldMobileDropdown.js +2 -2
  441. package/components/SuggestField/mobile/SuggestFieldMobileDropdownHint.js +1 -1
  442. package/components/SuggestField/mobile/index.js +1 -1
  443. package/components/SwipeableArea/SwipeableArea.js +8 -8
  444. package/components/Table/ChipPanel.js +1 -1
  445. package/components/Table/ChipPanelLinks.js +1 -1
  446. package/components/Table/FilterPanel.js +2 -2
  447. package/components/Table/MasterTable.js +2 -2
  448. package/components/Table/NoColumns.js +2 -2
  449. package/components/Table/PaginationPanel.js +2 -2
  450. package/components/Table/TableBasic/TableBasic.js +1 -1
  451. package/components/Table/TableBasic/components/TableBasicBody.js +1 -1
  452. package/components/Table/TableBasic/components/TableBasicHeader.js +1 -1
  453. package/components/Table/TableBasic/components/TableBasicRow.js +1 -1
  454. package/components/Table/TableBasicSettings/TableBasicSettings.js +2 -2
  455. package/components/Table/TableBasicSettings/components/ColumnSettingsSortableListItemTarget.js +2 -2
  456. package/components/Table/TableBasicSettings/components/ColumnSettingsStaticListItem.js +1 -1
  457. package/components/Table/TableBasicSettings/components/TableBasicSettingsBody.js +1 -1
  458. package/components/Table/TableBasicSettings/components/TableBasicSettingsFooter.js +1 -1
  459. package/components/Table/TableBasicSettings/components/TableBasicSettingsHeader.js +1 -1
  460. package/components/Table/TableFooter/TableFooter.js +1 -1
  461. package/components/Table/TableFooter/components/TableFooterSummary.js +1 -1
  462. package/components/Table/TableFooter/components/TableFooterSummaryAmount.js +1 -1
  463. package/components/Table/TableFooter/components/TableFooterSummarySelectAllButton.js +1 -1
  464. package/components/Table/TableFooter/components/TableFooterSummarySelectedCount.js +1 -1
  465. package/components/Table/utils.js +1 -1
  466. package/components/Tabs/Tabs.js +8 -8
  467. package/components/TabsExtended/TabsExtended.js +2 -2
  468. package/components/TabsExtended/components/TabsExtendedContent.js +1 -1
  469. package/components/TabsExtended/components/TabsExtendedDropdownWrapper.js +1 -1
  470. package/components/TabsExtended/components/TabsExtendedTab.js +1 -1
  471. package/components/TabsExtended/components/TabsExtendedTabButton.js +1 -1
  472. package/components/TabsExtended/components/TabsExtendedTabsWrapper.js +1 -1
  473. package/components/TabsExtended/utils.js +1 -1
  474. package/components/TabsLine/TabsLine.js +1 -1
  475. package/components/TabsLine/components/TabsLineDesktop.js +1 -1
  476. package/components/TabsLine/components/TabsLineDropdown.js +2 -2
  477. package/components/TabsLine/components/TabsLineItem.js +1 -1
  478. package/components/TabsLine/components/TabsLineMobile.js +2 -2
  479. package/components/Tag/Tag.js +5 -5
  480. package/components/TagColor/TagColor.js +10 -10
  481. package/components/TagGroup/TagGroup.js +4 -4
  482. package/components/Tooltip/components/common/TooltipBody.js +1 -1
  483. package/components/Tooltip/components/common/TooltipLink.js +4 -4
  484. package/components/Tooltip/components/common/TooltipXButton.js +1 -1
  485. package/components/Tooltip/components/desktop/components/TooltipDesktopBase.js +1 -1
  486. package/components/Tooltip/components/desktop/components/TooltipDesktopTip.js +1 -1
  487. package/components/Tooltip/components/mobile/TooltipMobile.js +4 -4
  488. package/components/TopOverlay/TopOverlay.js +6 -6
  489. package/components/TreeView/TreeView.js +1 -1
  490. package/components/TreeView/components/TreeViewGroup.js +1 -1
  491. package/components/TreeView/components/TreeViewNode.js +1 -1
  492. package/components/Typography/Caption.js +7 -7
  493. package/components/Typography/CodeText.js +2 -2
  494. package/components/Typography/Text.js +9 -9
  495. package/components/Typography/Title.js +9 -9
  496. package/components/Typography/constants.js +1 -1
  497. package/components/UnorderedListExtended/UnorderedListExtended.js +2 -2
  498. package/components/UnorderedListExtended/UnorderedListExtendedItem.js +2 -2
  499. package/components/UnorderedListExtended/UnorderedListExtendedItemMarker.js +3 -3
  500. package/components/UploadZone/UploadZone.js +2 -2
  501. package/components/UploadZone/components/UploadZoneInput.js +1 -1
  502. package/components/UploadZone/index.js +1 -1
  503. package/components/index.js +11 -10
  504. package/components/index.js.map +1 -1
  505. package/enums/EOrientation.js +9 -0
  506. package/enums/EOrientation.js.map +1 -0
  507. package/enums/index.js +3 -1
  508. package/enums/index.js.map +1 -1
  509. package/index.d.ts +154 -88
  510. package/index.js +13 -10
  511. package/index.js.map +1 -1
  512. package/package.json +5 -1
  513. package/styles/triplex-next.css +3059 -3072
  514. package/utils/refs.js +25 -0
  515. package/utils/refs.js.map +1 -0
  516. package/chunks/Card.module-BgGathht.js +0 -32
  517. package/chunks/Card.module-BgGathht.js.map +0 -1
  518. package/chunks/Carousel.module-DbmVe45I.js +0 -30
  519. package/chunks/Carousel.module-DbmVe45I.js.map +0 -1
  520. package/chunks/CheckboxTreeExtended.module-lrAhb-JM.js +0 -24
  521. package/chunks/CheckboxTreeExtended.module-lrAhb-JM.js.map +0 -1
  522. package/chunks/Confirm.module-Btu_s_B3.js +0 -24
  523. package/chunks/Confirm.module-Btu_s_B3.js.map +0 -1
  524. package/chunks/DropdownMobile.module-Coly2dBq.js +0 -40
  525. package/chunks/DropdownMobile.module-Coly2dBq.js.map +0 -1
  526. package/chunks/Footer.module-CMT_QTyt.js +0 -12
  527. package/chunks/Footer.module-CMT_QTyt.js.map +0 -1
  528. package/chunks/HeaderLayoutSidebar.module-CLhjV8YX.js.map +0 -1
  529. package/chunks/HeaderTabs.module-15nUfmri.js +0 -12
  530. package/chunks/HeaderTabs.module-15nUfmri.js.map +0 -1
  531. package/chunks/HeaderTitle.module-L5xbACMY.js.map +0 -1
  532. package/chunks/ImageGalleryExtendedMain.module-NWp-c6Ht.js +0 -28
  533. package/chunks/ImageGalleryExtendedMain.module-NWp-c6Ht.js.map +0 -1
  534. package/chunks/IslandAccordion.module-Bowpgf8f.js +0 -44
  535. package/chunks/IslandAccordion.module-Bowpgf8f.js.map +0 -1
  536. package/chunks/IslandWidgetFooter.module-Ds3Pu4f2.js +0 -18
  537. package/chunks/IslandWidgetFooter.module-Ds3Pu4f2.js.map +0 -1
  538. package/chunks/IslandWidgetHeader.module-BcEtSLGh.js +0 -28
  539. package/chunks/IslandWidgetHeader.module-BcEtSLGh.js.map +0 -1
  540. package/chunks/LightBoxControls.module-Dm4NcLwN.js +0 -26
  541. package/chunks/LightBoxControls.module-Dm4NcLwN.js.map +0 -1
  542. package/chunks/LightBoxSideOverlayClose.module-CQVu4Q1F.js.map +0 -1
  543. package/chunks/ListItemTail.module-DpKR3Mxq.js +0 -18
  544. package/chunks/ListItemTail.module-DpKR3Mxq.js.map +0 -1
  545. package/chunks/ListMasterFooter.module-VoIrJbom.js +0 -14
  546. package/chunks/ListMasterFooter.module-VoIrJbom.js.map +0 -1
  547. package/chunks/ModalWindow.module-D_kBZ7O8.js +0 -28
  548. package/chunks/ModalWindow.module-D_kBZ7O8.js.map +0 -1
  549. package/chunks/Notification.module-D6HiZ6Jt.js +0 -34
  550. package/chunks/Notification.module-D6HiZ6Jt.js.map +0 -1
  551. package/chunks/Overlay.module-BNLC7R-z.js +0 -30
  552. package/chunks/Overlay.module-BNLC7R-z.js.map +0 -1
  553. package/chunks/Page.module-CIIKtXO3.js +0 -17
  554. package/chunks/Page.module-CIIKtXO3.js.map +0 -1
  555. package/chunks/SMSField.module-CXQtdBIm.js +0 -30
  556. package/chunks/SMSField.module-CXQtdBIm.js.map +0 -1
  557. package/chunks/SliderExtendedMarks.module-DfS3xeG5.js +0 -24
  558. package/chunks/SliderExtendedMarks.module-DfS3xeG5.js.map +0 -1
  559. package/chunks/StatusTracker.module-CyB7fUmf.js +0 -44
  560. package/chunks/StatusTracker.module-CyB7fUmf.js.map +0 -1
  561. package/chunks/TableFooter.module-D3fdigOM.js +0 -22
  562. package/chunks/TableFooter.module-D3fdigOM.js.map +0 -1
  563. package/chunks/TabsExtended.module-jwxLpxEH.js +0 -26
  564. package/chunks/TabsExtended.module-jwxLpxEH.js.map +0 -1
  565. package/chunks/TabsLine.module-DOyLDwGW.js +0 -36
  566. package/chunks/TabsLine.module-DOyLDwGW.js.map +0 -1
  567. package/chunks/TooltipDesktop.module-Bu2xz65U.js +0 -32
  568. package/chunks/TooltipDesktop.module-Bu2xz65U.js.map +0 -1
  569. package/chunks/TreeView.module-CaCtjc5I.js +0 -12
  570. package/chunks/TreeView.module-CaCtjc5I.js.map +0 -1
  571. package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js +0 -46
  572. package/components/ImageGalleryExtended/components/ImageGalleryExtendedDots.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sources":["../../../src/components/Carousel/Carousel.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useLayoutEffect, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { ICarouselProps } from \"./types\";\nimport { ECarouselOrientation, ECarouselScrollMode } from \"./enums\";\nimport { resolveViewportPadding, useLatestRef } from \"./utils\";\nimport styles from \"./styles/Carousel.module.less\";\nimport { CarouselViewport } from \"./CarouselViewport\";\nimport { CarouselTrack } from \"./CarouselTrack\";\nimport { CarouselItem } from \"./CarouselItem\";\nimport { CarouselPrevButton, CarouselNextButton } from \"./CarouselButton\";\nimport { CarouselIndicators } from \"./CarouselIndicators\";\n\nconst ORIENTATION_TO_PADDING_KEY = {\n [ECarouselOrientation.HORIZONTAL]: { start: \"left\", end: \"right\" },\n [ECarouselOrientation.VERTICAL]: { start: \"top\", end: \"bottom\" },\n} as const;\n\nconst ORIENTATION_TO_RECT_SIZE_KEY = {\n [ECarouselOrientation.HORIZONTAL]: \"width\",\n [ECarouselOrientation.VERTICAL]: \"height\",\n} as const;\n\nconst ORIENTATION_TO_CLIENT_SIZE_KEY = {\n [ECarouselOrientation.HORIZONTAL]: \"clientWidth\",\n [ECarouselOrientation.VERTICAL]: \"clientHeight\",\n} as const;\n\nconst CarouselRoot = React.forwardRef<HTMLDivElement, ICarouselProps>(\n (\n {\n children,\n orientation = ECarouselOrientation.HORIZONTAL,\n scrollMode = ECarouselScrollMode.ITEM,\n gap = 16,\n viewportPadding = 0,\n className,\n ...restProps\n },\n ref,\n ) => {\n const [offset, setOffset] = useState(0);\n const [maxOffset, setMaxOffset] = useState(0);\n const [activeIndices, setActiveIndices] = useState<number[]>([]);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const paddingKey = Array.isArray(viewportPadding) ? viewportPadding.join(\",\") : String(viewportPadding);\n const { metrics: normalizedPadding, style: viewportPaddingStyle } = useMemo(\n () => resolveViewportPadding(viewportPadding),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- мемоизация по значению, а не по ссылке\n [paddingKey],\n );\n\n // Защита от пересоздания обработчиков жестов во Viewport при смене ориентации\n const orientationRef = useLatestRef(orientation);\n // Защита от бесконечного цикла рендеров в updateOffsetAndPages\n const offsetRef = useLatestRef(offset);\n // Защита от stale closures в ResizeObserver\n const currentIndexRef = useLatestRef(currentIndex);\n\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const trackRef = useRef<HTMLDivElement | null>(null);\n const slideRefs = useRef<Map<number, HTMLDivElement>>(new Map());\n const maxOffsetRef = useRef(maxOffset);\n\n // Реф для отслеживания запланированного кадра анимации\n const pageRafIdRef = useRef<number | null>(null);\n // Хранит настройки предыдущего успешного расчёта для авто-сброса кэша\n const lastConfigRef = useRef({ gap, scrollMode, orientation });\n\n const geometryCacheRef = useRef<{\n sizes: Map<number, number>;\n starts: Map<number, number>;\n }>({ sizes: new Map(), starts: new Map() });\n\n const pageMode = scrollMode === ECarouselScrollMode.PAGE;\n\n const getSlideSize = useCallback(\n (index: number) => {\n if (geometryCacheRef.current.sizes.has(index)) {\n // Безопасно: строка выше гарантирует наличие значения в кэше.\n return geometryCacheRef.current.sizes.get(index)!;\n }\n\n const slide = slideRefs.current.get(index);\n if (!slide) return 0;\n\n const rect = slide.getBoundingClientRect();\n const key = ORIENTATION_TO_RECT_SIZE_KEY[orientation];\n const size = rect[key];\n\n geometryCacheRef.current.sizes.set(index, size);\n return size;\n },\n [orientation],\n );\n\n const getSlidesCount = useCallback(() => slideRefs.current.size, []);\n\n const getSlideStart = useCallback(\n (index: number): number => {\n if (index <= 0) {\n return 0;\n }\n\n if (geometryCacheRef.current.starts.has(index)) {\n // Безопасно: строка выше гарантирует наличие значения в кэше.\n return geometryCacheRef.current.starts.get(index)!;\n }\n\n const prevIndex = index - 1;\n const start = getSlideStart(prevIndex) + getSlideSize(prevIndex) + gap;\n\n geometryCacheRef.current.starts.set(index, start);\n return start;\n },\n [gap, getSlideSize],\n );\n\n const getSlideEnd = useCallback(\n (index: number) => {\n return getSlideStart(index) + getSlideSize(index);\n },\n [getSlideStart, getSlideSize],\n );\n\n const getViewportSize = useCallback(() => {\n if (!viewportRef.current) return 0;\n const key = ORIENTATION_TO_CLIENT_SIZE_KEY[orientation];\n return viewportRef.current[key];\n }, [orientation]);\n\n const updateOffsetAndPages = useCallback(\n (index: number) => {\n const lastConfig = lastConfigRef.current;\n if (\n lastConfig.gap !== gap ||\n lastConfig.scrollMode !== scrollMode ||\n lastConfig.orientation !== orientation\n ) {\n geometryCacheRef.current.sizes.clear();\n geometryCacheRef.current.starts.clear();\n lastConfigRef.current = { gap, scrollMode, orientation };\n }\n\n const slidesCount = getSlidesCount();\n if (slidesCount === 0) {\n maxOffsetRef.current = 0;\n setOffset((prev) => (prev !== 0 ? 0 : prev));\n setMaxOffset((prev) => (prev !== 0 ? 0 : prev));\n setActiveIndices(Array.of());\n return;\n }\n\n const totalContentSize = getSlideEnd(slidesCount - 1);\n const containerSize = getViewportSize();\n\n const { start: startKey, end: endKey } = ORIENTATION_TO_PADDING_KEY[orientation];\n const startP = normalizedPadding[startKey];\n const endP = normalizedPadding[endKey];\n\n const calculatedMaxOffset = Math.max(0, totalContentSize + startP + endP - containerSize);\n maxOffsetRef.current = calculatedMaxOffset;\n\n let targetOffset = 0;\n\n if (pageMode && containerSize > 0) {\n const pagesMatrix: number[][] = [];\n let currentPage: number[] = [];\n let currentGroupSize = 0;\n\n for (let i = 0; i < slidesCount; i++) {\n const slideSize = getSlideSize(i);\n const addedSize = currentPage.length > 0 ? slideSize + gap : slideSize;\n\n if (currentGroupSize + addedSize <= containerSize + 1) {\n currentPage.push(i);\n currentGroupSize += addedSize;\n } else {\n if (currentPage.length > 0) pagesMatrix.push(currentPage);\n currentPage = [i];\n currentGroupSize = slideSize;\n }\n }\n\n if (currentPage.length > 0) pagesMatrix.push(currentPage);\n\n const clampedIndex = Math.max(0, Math.min(index, pagesMatrix.length - 1));\n\n if (clampedIndex !== index) {\n if (pageRafIdRef.current !== null) {\n cancelAnimationFrame(pageRafIdRef.current);\n }\n\n pageRafIdRef.current = requestAnimationFrame(() => {\n setCurrentIndex(clampedIndex);\n pageRafIdRef.current = null;\n });\n }\n\n const validPageIndices = Array.from({ length: pagesMatrix.length }, (_, i) => i);\n\n setActiveIndices((prev) => {\n if (prev.length === validPageIndices.length) return prev;\n return validPageIndices;\n });\n\n const currentGroup = pagesMatrix[clampedIndex];\n if (currentGroup && currentGroup.length > 0) {\n const firstSlideIndex = currentGroup[0];\n const lastSlideIndex = currentGroup[currentGroup.length - 1];\n const groupStart = getSlideStart(firstSlideIndex);\n\n const lastSlideSize = getSlideSize(lastSlideIndex);\n const groupEnd = getSlideStart(lastSlideIndex) + lastSlideSize;\n const groupSize = groupEnd - groupStart;\n\n targetOffset = groupStart - (containerSize - groupSize) / 2;\n }\n } else {\n setActiveIndices((prev) => (prev.length === 0 ? prev : []));\n\n const slideStart = getSlideStart(index);\n const slideEnd = getSlideEnd(index);\n\n const currentOffset = offsetRef.current;\n const containerEnd = currentOffset + containerSize;\n\n // Ситуация 1: Слайд шире, чем сам контейнер (огромный слайд)\n if (slideEnd - slideStart > containerSize) {\n if (currentOffset < slideStart - startP) {\n targetOffset = slideStart - startP;\n } else if (currentOffset + containerSize > slideEnd + endP) {\n targetOffset = slideEnd - containerSize + endP;\n } else {\n targetOffset = currentOffset;\n }\n }\n // Ситуация 2: Стандартный слайд (меньше или равен размеру контейнера)\n else {\n if (slideEnd > containerEnd + 1) {\n targetOffset = slideEnd - containerSize + startP + endP;\n } else if (slideStart < currentOffset - 1) {\n targetOffset = slideStart - startP;\n } else {\n targetOffset = currentOffset;\n }\n }\n }\n\n if (targetOffset <= 0 || calculatedMaxOffset === 0) {\n setOffset(0);\n } else if (targetOffset >= calculatedMaxOffset) {\n setOffset(calculatedMaxOffset);\n } else {\n setOffset(targetOffset);\n }\n\n // Обновляем реактивный стейт для синхронизации с кнопками (стрелками)\n setMaxOffset((prev) => (prev !== calculatedMaxOffset ? calculatedMaxOffset : prev));\n },\n [\n gap,\n scrollMode,\n orientation,\n getSlidesCount,\n getSlideEnd,\n getViewportSize,\n normalizedPadding,\n pageMode,\n getSlideSize,\n getSlideStart,\n ],\n );\n\n const nextSlide = useCallback(() => {\n if (pageMode) {\n setCurrentIndex((prev) => (prev === activeIndices.length - 1 ? prev : prev + 1));\n return;\n }\n\n const slidesCount = getSlidesCount();\n const containerSize = getViewportSize();\n\n const currentSlideEnd = getSlideEnd(currentIndex);\n\n const { end: endKey } = ORIENTATION_TO_PADDING_KEY[orientation];\n const endP = normalizedPadding[endKey];\n\n // Случай 1: Мы на огромном слайде, и его правый край всё еще скрыт за экраном\n if (currentSlideEnd + endP > offset + containerSize + 1) {\n // Вычисляем следующий шаг (не дальше, чем правый край слайда с учётом endP)\n const maxSlideOffset = currentSlideEnd - containerSize + endP;\n const nextOffset = Math.min(offset + containerSize, maxSlideOffset);\n const clampedOffset = Math.min(nextOffset, maxOffsetRef.current);\n\n setOffset(clampedOffset);\n return; // Индекс не меняем, просто продвинули скролл внутри слайда\n }\n\n // Случай 2: Текущий слайд закончился, ищем следующий скрытый элемент\n for (let i = currentIndex + 1; i < slidesCount; i++) {\n const slideEnd = getSlideEnd(i);\n\n if (slideEnd + endP > offset + containerSize + 1) {\n setCurrentIndex(i);\n return;\n }\n }\n setCurrentIndex(Math.max(0, slidesCount - 1));\n }, [\n pageMode,\n activeIndices.length,\n getSlidesCount,\n getViewportSize,\n getSlideEnd,\n orientation,\n normalizedPadding,\n offset,\n currentIndex,\n ]);\n\n const prevSlide = useCallback(() => {\n if (pageMode) {\n setCurrentIndex((prev) => (prev === 0 ? prev : prev - 1));\n return;\n }\n\n const containerSize = getViewportSize();\n const currentSlideStart = getSlideStart(currentIndex);\n\n const { start: startKey } = ORIENTATION_TO_PADDING_KEY[orientation];\n const startP = normalizedPadding[startKey];\n\n // Случай 1: Мы на огромном слайде, и его левый край скрыт слева за экраном\n if (currentSlideStart - startP < offset - 1) {\n // Вычисляем шаг назад (не дальше, чем левый край слайда с учётом startP)\n const minSlideOffset = currentSlideStart - startP;\n const prevOffset = Math.max(offset - containerSize, minSlideOffset);\n const clampedOffset = Math.max(0, prevOffset);\n\n setOffset(clampedOffset);\n return; // Индекс не меняем, скроллим назад внутри слайда\n }\n\n // Случай 2: Левый край текущего слайда полностью виден, ищем предыдущие скрытые элементы\n for (let i = currentIndex - 1; i >= 0; i--) {\n const slideStart = getSlideStart(i);\n\n if (slideStart - startP < offset - 1) {\n setCurrentIndex(i);\n return;\n }\n }\n\n setCurrentIndex(0);\n }, [pageMode, getViewportSize, getSlideStart, orientation, normalizedPadding, offset, currentIndex]);\n\n const goToSlide = useCallback(\n (slideIndex: number) => {\n const slidesCount = getSlidesCount();\n if (slidesCount === 0) {\n setCurrentIndex(0);\n return;\n }\n\n const clampedIndex = Math.max(0, Math.min(slideIndex, slidesCount - 1));\n setCurrentIndex(clampedIndex);\n },\n [getSlidesCount],\n );\n\n // ResizeObserver для адаптивности при изменении размеров экрана или контента\n useLayoutEffect(() => {\n if (!viewportRef.current || !trackRef.current) return;\n\n const observer = new ResizeObserver(() => {\n geometryCacheRef.current.sizes.clear();\n geometryCacheRef.current.starts.clear();\n\n updateOffsetAndPages(currentIndexRef.current);\n });\n\n observer.observe(viewportRef.current);\n observer.observe(trackRef.current);\n\n return () => observer.disconnect();\n }, [updateOffsetAndPages]);\n\n // Сброс индекса при изменении ключевых настроек карусели\n useEffect(() => {\n setCurrentIndex(0);\n }, [gap, scrollMode, orientation]);\n\n // Синхронизация смещения при изменении индекса\n useEffect(() => {\n updateOffsetAndPages(currentIndex);\n }, [currentIndex, updateOffsetAndPages]);\n\n // Очистка запланированных анимационных фреймов при размонтировании карусели\n useEffect(() => {\n return () => {\n if (pageRafIdRef.current !== null) {\n cancelAnimationFrame(pageRafIdRef.current);\n }\n };\n }, []);\n\n // Вычисление граничных состояний (актуально для отключения стрелок навигации)\n const atStart = pageMode ? currentIndex === 0 : offset <= 1;\n const atEnd = pageMode\n ? activeIndices.length === 0 || currentIndex >= activeIndices.length - 1\n : maxOffset > 0\n ? offset >= maxOffset - 1\n : true;\n\n const classNames = clsx(styles.carousel, styles[orientation], className);\n\n const contextValue = useMemo(\n () => ({\n gap,\n orientation,\n scrollMode,\n offset,\n activeIndices,\n currentIndex,\n viewportPaddingStyle,\n atStart,\n atEnd,\n nextSlide,\n prevSlide,\n goToSlide,\n orientationRef,\n offsetRef,\n maxOffsetRef,\n currentIndexRef,\n viewportRef,\n trackRef,\n slideRefs,\n }),\n [\n gap,\n orientation,\n scrollMode,\n offset,\n activeIndices,\n currentIndex,\n viewportPaddingStyle,\n atStart,\n atEnd,\n nextSlide,\n prevSlide,\n goToSlide,\n ],\n );\n\n return (\n <CarouselContext.Provider value={contextValue}>\n <div className={classNames} {...restProps} ref={ref}>\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\n\nCarouselRoot.displayName = \"Carousel\";\n\n/** Карусель. */\nexport const Carousel = Object.assign(CarouselRoot, {\n Viewport: CarouselViewport,\n Track: CarouselTrack,\n Item: CarouselItem,\n PrevButton: CarouselPrevButton,\n NextButton: CarouselNextButton,\n Indicators: CarouselIndicators,\n});\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"Carousel.js","sources":["../../../src/components/Carousel/Carousel.tsx"],"sourcesContent":["import React, { useState, useMemo, useRef, useLayoutEffect, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { ICarouselProps } from \"./types\";\nimport { ECarouselScrollMode } from \"./enums\";\nimport { EOrientation } from \"../../enums\";\nimport { resolveViewportPadding } from \"./utils\";\nimport { useLatestRef } from \"../../utils/refs\";\nimport styles from \"./styles/Carousel.module.less\";\nimport { CarouselViewport } from \"./CarouselViewport\";\nimport { CarouselTrack } from \"./CarouselTrack\";\nimport { CarouselItem } from \"./CarouselItem\";\nimport { CarouselPrevButton, CarouselNextButton } from \"./CarouselButton\";\nimport { CarouselIndicators } from \"./CarouselIndicators\";\n\nconst ORIENTATION_TO_PADDING_KEY = {\n [EOrientation.HORIZONTAL]: { start: \"left\", end: \"right\" },\n [EOrientation.VERTICAL]: { start: \"top\", end: \"bottom\" },\n} as const;\n\nconst ORIENTATION_TO_RECT_SIZE_KEY = {\n [EOrientation.HORIZONTAL]: \"width\",\n [EOrientation.VERTICAL]: \"height\",\n} as const;\n\nconst ORIENTATION_TO_CLIENT_SIZE_KEY = {\n [EOrientation.HORIZONTAL]: \"clientWidth\",\n [EOrientation.VERTICAL]: \"clientHeight\",\n} as const;\n\nconst CarouselRoot = React.forwardRef<HTMLDivElement, ICarouselProps>(\n (\n {\n children,\n orientation = EOrientation.HORIZONTAL,\n scrollMode = ECarouselScrollMode.ITEM,\n gap = 16,\n viewportPadding = 0,\n className,\n ...restProps\n },\n ref,\n ) => {\n const [offset, setOffset] = useState(0);\n const [maxOffset, setMaxOffset] = useState(0);\n const [activeIndices, setActiveIndices] = useState<number[]>([]);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const paddingKey = Array.isArray(viewportPadding) ? viewportPadding.join(\",\") : String(viewportPadding);\n const { metrics: normalizedPadding, style: viewportPaddingStyle } = useMemo(\n () => resolveViewportPadding(viewportPadding),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- мемоизация по значению, а не по ссылке\n [paddingKey],\n );\n\n // Защита от пересоздания обработчиков жестов во Viewport при смене ориентации\n const orientationRef = useLatestRef(orientation);\n // Защита от бесконечного цикла рендеров в updateOffsetAndPages\n const offsetRef = useLatestRef(offset);\n // Защита от stale closures в ResizeObserver\n const currentIndexRef = useLatestRef(currentIndex);\n\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const trackRef = useRef<HTMLDivElement | null>(null);\n const slideRefs = useRef<Map<number, HTMLDivElement>>(new Map());\n const maxOffsetRef = useRef(maxOffset);\n\n // Реф для отслеживания запланированного кадра анимации\n const pageRafIdRef = useRef<number | null>(null);\n // Хранит настройки предыдущего успешного расчёта для авто-сброса кэша\n const lastConfigRef = useRef({ gap, scrollMode, orientation });\n\n const geometryCacheRef = useRef<{\n sizes: Map<number, number>;\n starts: Map<number, number>;\n }>({ sizes: new Map(), starts: new Map() });\n\n const pageMode = scrollMode === ECarouselScrollMode.PAGE;\n\n const getSlideSize = useCallback(\n (index: number) => {\n if (geometryCacheRef.current.sizes.has(index)) {\n // Безопасно: строка выше гарантирует наличие значения в кэше.\n return geometryCacheRef.current.sizes.get(index)!;\n }\n\n const slide = slideRefs.current.get(index);\n if (!slide) return 0;\n\n const rect = slide.getBoundingClientRect();\n const key = ORIENTATION_TO_RECT_SIZE_KEY[orientation];\n const size = rect[key];\n\n geometryCacheRef.current.sizes.set(index, size);\n return size;\n },\n [orientation],\n );\n\n const getSlidesCount = useCallback(() => slideRefs.current.size, []);\n\n const getSlideStart = useCallback(\n (index: number): number => {\n if (index <= 0) {\n return 0;\n }\n\n if (geometryCacheRef.current.starts.has(index)) {\n // Безопасно: строка выше гарантирует наличие значения в кэше.\n return geometryCacheRef.current.starts.get(index)!;\n }\n\n const prevIndex = index - 1;\n const start = getSlideStart(prevIndex) + getSlideSize(prevIndex) + gap;\n\n geometryCacheRef.current.starts.set(index, start);\n return start;\n },\n [gap, getSlideSize],\n );\n\n const getSlideEnd = useCallback(\n (index: number) => {\n return getSlideStart(index) + getSlideSize(index);\n },\n [getSlideStart, getSlideSize],\n );\n\n const getViewportSize = useCallback(() => {\n if (!viewportRef.current) return 0;\n const key = ORIENTATION_TO_CLIENT_SIZE_KEY[orientation];\n return viewportRef.current[key];\n }, [orientation]);\n\n const updateOffsetAndPages = useCallback(\n (index: number) => {\n const lastConfig = lastConfigRef.current;\n if (\n lastConfig.gap !== gap ||\n lastConfig.scrollMode !== scrollMode ||\n lastConfig.orientation !== orientation\n ) {\n geometryCacheRef.current.sizes.clear();\n geometryCacheRef.current.starts.clear();\n lastConfigRef.current = { gap, scrollMode, orientation };\n }\n\n const slidesCount = getSlidesCount();\n if (slidesCount === 0) {\n maxOffsetRef.current = 0;\n setOffset((prev) => (prev !== 0 ? 0 : prev));\n setMaxOffset((prev) => (prev !== 0 ? 0 : prev));\n setActiveIndices(Array.of());\n return;\n }\n\n const totalContentSize = getSlideEnd(slidesCount - 1);\n const containerSize = getViewportSize();\n\n const { start: startKey, end: endKey } = ORIENTATION_TO_PADDING_KEY[orientation];\n const startP = normalizedPadding[startKey];\n const endP = normalizedPadding[endKey];\n\n const calculatedMaxOffset = Math.max(0, totalContentSize + startP + endP - containerSize);\n maxOffsetRef.current = calculatedMaxOffset;\n\n let targetOffset = 0;\n\n if (pageMode && containerSize > 0) {\n const pagesMatrix: number[][] = [];\n let currentPage: number[] = [];\n let currentGroupSize = 0;\n\n for (let i = 0; i < slidesCount; i++) {\n const slideSize = getSlideSize(i);\n const addedSize = currentPage.length > 0 ? slideSize + gap : slideSize;\n\n if (currentGroupSize + addedSize <= containerSize + 1) {\n currentPage.push(i);\n currentGroupSize += addedSize;\n } else {\n if (currentPage.length > 0) pagesMatrix.push(currentPage);\n currentPage = [i];\n currentGroupSize = slideSize;\n }\n }\n\n if (currentPage.length > 0) pagesMatrix.push(currentPage);\n\n const clampedIndex = Math.max(0, Math.min(index, pagesMatrix.length - 1));\n\n if (clampedIndex !== index) {\n if (pageRafIdRef.current !== null) {\n cancelAnimationFrame(pageRafIdRef.current);\n }\n\n pageRafIdRef.current = requestAnimationFrame(() => {\n setCurrentIndex(clampedIndex);\n pageRafIdRef.current = null;\n });\n }\n\n const validPageIndices = Array.from({ length: pagesMatrix.length }, (_, i) => i);\n\n setActiveIndices((prev) => {\n if (prev.length === validPageIndices.length) return prev;\n return validPageIndices;\n });\n\n const currentGroup = pagesMatrix[clampedIndex];\n if (currentGroup && currentGroup.length > 0) {\n const firstSlideIndex = currentGroup[0];\n const lastSlideIndex = currentGroup[currentGroup.length - 1];\n const groupStart = getSlideStart(firstSlideIndex);\n\n const lastSlideSize = getSlideSize(lastSlideIndex);\n const groupEnd = getSlideStart(lastSlideIndex) + lastSlideSize;\n const groupSize = groupEnd - groupStart;\n\n targetOffset = groupStart - (containerSize - groupSize) / 2;\n }\n } else {\n setActiveIndices((prev) => (prev.length === 0 ? prev : []));\n\n const slideStart = getSlideStart(index);\n const slideEnd = getSlideEnd(index);\n\n const currentOffset = offsetRef.current;\n const containerEnd = currentOffset + containerSize;\n\n // Ситуация 1: Слайд шире, чем сам контейнер (огромный слайд)\n if (slideEnd - slideStart > containerSize) {\n if (currentOffset < slideStart - startP) {\n targetOffset = slideStart - startP;\n } else if (currentOffset + containerSize > slideEnd + endP) {\n targetOffset = slideEnd - containerSize + endP;\n } else {\n targetOffset = currentOffset;\n }\n }\n // Ситуация 2: Стандартный слайд (меньше или равен размеру контейнера)\n else {\n if (slideEnd > containerEnd + 1) {\n targetOffset = slideEnd - containerSize + startP + endP;\n } else if (slideStart < currentOffset - 1) {\n targetOffset = slideStart - startP;\n } else {\n targetOffset = currentOffset;\n }\n }\n }\n\n if (targetOffset <= 0 || calculatedMaxOffset === 0) {\n setOffset(0);\n } else if (targetOffset >= calculatedMaxOffset) {\n setOffset(calculatedMaxOffset);\n } else {\n setOffset(targetOffset);\n }\n\n // Обновляем реактивный стейт для синхронизации с кнопками (стрелками)\n setMaxOffset((prev) => (prev !== calculatedMaxOffset ? calculatedMaxOffset : prev));\n },\n [\n gap,\n scrollMode,\n orientation,\n getSlidesCount,\n getSlideEnd,\n getViewportSize,\n normalizedPadding,\n pageMode,\n getSlideSize,\n getSlideStart,\n ],\n );\n\n const nextSlide = useCallback(() => {\n if (pageMode) {\n setCurrentIndex((prev) => (prev === activeIndices.length - 1 ? prev : prev + 1));\n return;\n }\n\n const slidesCount = getSlidesCount();\n const containerSize = getViewportSize();\n\n const currentSlideEnd = getSlideEnd(currentIndex);\n\n const { end: endKey } = ORIENTATION_TO_PADDING_KEY[orientation];\n const endP = normalizedPadding[endKey];\n\n // Случай 1: Мы на огромном слайде, и его правый край всё еще скрыт за экраном\n if (currentSlideEnd + endP > offset + containerSize + 1) {\n // Вычисляем следующий шаг (не дальше, чем правый край слайда с учётом endP)\n const maxSlideOffset = currentSlideEnd - containerSize + endP;\n const nextOffset = Math.min(offset + containerSize, maxSlideOffset);\n const clampedOffset = Math.min(nextOffset, maxOffsetRef.current);\n\n setOffset(clampedOffset);\n return; // Индекс не меняем, просто продвинули скролл внутри слайда\n }\n\n // Случай 2: Текущий слайд закончился, ищем следующий скрытый элемент\n for (let i = currentIndex + 1; i < slidesCount; i++) {\n const slideEnd = getSlideEnd(i);\n\n if (slideEnd + endP > offset + containerSize + 1) {\n setCurrentIndex(i);\n return;\n }\n }\n setCurrentIndex(Math.max(0, slidesCount - 1));\n }, [\n pageMode,\n activeIndices.length,\n getSlidesCount,\n getViewportSize,\n getSlideEnd,\n orientation,\n normalizedPadding,\n offset,\n currentIndex,\n ]);\n\n const prevSlide = useCallback(() => {\n if (pageMode) {\n setCurrentIndex((prev) => (prev === 0 ? prev : prev - 1));\n return;\n }\n\n const containerSize = getViewportSize();\n const currentSlideStart = getSlideStart(currentIndex);\n\n const { start: startKey } = ORIENTATION_TO_PADDING_KEY[orientation];\n const startP = normalizedPadding[startKey];\n\n // Случай 1: Мы на огромном слайде, и его левый край скрыт слева за экраном\n if (currentSlideStart - startP < offset - 1) {\n // Вычисляем шаг назад (не дальше, чем левый край слайда с учётом startP)\n const minSlideOffset = currentSlideStart - startP;\n const prevOffset = Math.max(offset - containerSize, minSlideOffset);\n const clampedOffset = Math.max(0, prevOffset);\n\n setOffset(clampedOffset);\n return; // Индекс не меняем, скроллим назад внутри слайда\n }\n\n // Случай 2: Левый край текущего слайда полностью виден, ищем предыдущие скрытые элементы\n for (let i = currentIndex - 1; i >= 0; i--) {\n const slideStart = getSlideStart(i);\n\n if (slideStart - startP < offset - 1) {\n setCurrentIndex(i);\n return;\n }\n }\n\n setCurrentIndex(0);\n }, [pageMode, getViewportSize, getSlideStart, orientation, normalizedPadding, offset, currentIndex]);\n\n const goToSlide = useCallback(\n (slideIndex: number) => {\n const slidesCount = getSlidesCount();\n if (slidesCount === 0) {\n setCurrentIndex(0);\n return;\n }\n\n const clampedIndex = Math.max(0, Math.min(slideIndex, slidesCount - 1));\n setCurrentIndex(clampedIndex);\n },\n [getSlidesCount],\n );\n\n // ResizeObserver для адаптивности при изменении размеров экрана или контента\n useLayoutEffect(() => {\n if (!viewportRef.current || !trackRef.current) return;\n\n const observer = new ResizeObserver(() => {\n geometryCacheRef.current.sizes.clear();\n geometryCacheRef.current.starts.clear();\n\n updateOffsetAndPages(currentIndexRef.current);\n });\n\n observer.observe(viewportRef.current);\n observer.observe(trackRef.current);\n\n return () => observer.disconnect();\n }, [updateOffsetAndPages]);\n\n // Сброс индекса при изменении ключевых настроек карусели\n useEffect(() => {\n setCurrentIndex(0);\n }, [gap, scrollMode, orientation]);\n\n // Синхронизация смещения при изменении индекса\n useEffect(() => {\n updateOffsetAndPages(currentIndex);\n }, [currentIndex, updateOffsetAndPages]);\n\n // Очистка запланированных анимационных фреймов при размонтировании карусели\n useEffect(() => {\n return () => {\n if (pageRafIdRef.current !== null) {\n cancelAnimationFrame(pageRafIdRef.current);\n }\n };\n }, []);\n\n // Вычисление граничных состояний (актуально для отключения стрелок навигации)\n const atStart = pageMode ? currentIndex === 0 : offset <= 1;\n const atEnd = pageMode\n ? activeIndices.length === 0 || currentIndex >= activeIndices.length - 1\n : maxOffset > 0\n ? offset >= maxOffset - 1\n : true;\n\n const classNames = clsx(styles.carousel, styles[orientation], className);\n\n const contextValue = useMemo(\n () => ({\n gap,\n orientation,\n scrollMode,\n offset,\n activeIndices,\n currentIndex,\n viewportPaddingStyle,\n atStart,\n atEnd,\n nextSlide,\n prevSlide,\n goToSlide,\n orientationRef,\n offsetRef,\n maxOffsetRef,\n viewportRef,\n trackRef,\n slideRefs,\n }),\n [\n gap,\n orientation,\n scrollMode,\n offset,\n activeIndices,\n currentIndex,\n viewportPaddingStyle,\n atStart,\n atEnd,\n nextSlide,\n prevSlide,\n goToSlide,\n ],\n );\n\n return (\n <CarouselContext.Provider value={contextValue}>\n <div className={classNames} {...restProps} ref={ref}>\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\n\nCarouselRoot.displayName = \"Carousel\";\n\n/** Карусель. */\nexport const Carousel = Object.assign(CarouselRoot, {\n Viewport: CarouselViewport,\n Track: CarouselTrack,\n Item: CarouselItem,\n PrevButton: CarouselPrevButton,\n NextButton: CarouselNextButton,\n Indicators: CarouselIndicators,\n});\n"],"names":["React"],"mappings":"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"}
@@ -5,11 +5,11 @@ import { CarouselContext } from "./CarouselContext.js";
5
5
  import { useMatchMedia } from "../MediaWidth/useMatchMedia.js";
6
6
  import { ButtonIcon } from "../Button/ButtonIcon.js";
7
7
  import { CaretupStrokeSrvIcon20, CaretleftStrokeSrvIcon20, CaretdownStrokeSrvIcon20, CaretrightStrokeSrvIcon20 } from "@sberbusiness/icons-next";
8
- import { ECarouselOrientation } from "./enums.js";
9
- import { s as styles } from "../../chunks/Carousel.module-DbmVe45I.js";
8
+ import { EOrientation } from "../../enums/EOrientation.js";
9
+ import { s as styles } from "../../chunks/Carousel.module-Dy8ocMys.js";
10
10
  const ORIENTATION_TO_PREV_ICON_MAP = {
11
- [ECarouselOrientation.HORIZONTAL]: /* @__PURE__ */ jsx(CaretleftStrokeSrvIcon20, { paletteIndex: 7 }),
12
- [ECarouselOrientation.VERTICAL]: /* @__PURE__ */ jsx(CaretupStrokeSrvIcon20, { paletteIndex: 7 })
11
+ [EOrientation.HORIZONTAL]: /* @__PURE__ */ jsx(CaretleftStrokeSrvIcon20, { paletteIndex: 7 }),
12
+ [EOrientation.VERTICAL]: /* @__PURE__ */ jsx(CaretupStrokeSrvIcon20, { paletteIndex: 7 })
13
13
  };
14
14
  const CarouselPrevButton = React__default.forwardRef(
15
15
  ({ children, className, onClick, ...restProps }, ref) => {
@@ -40,8 +40,8 @@ const CarouselPrevButton = React__default.forwardRef(
40
40
  );
41
41
  CarouselPrevButton.displayName = "Carousel.PrevButton";
42
42
  const ORIENTATION_TO_NEXT_ICON_MAP = {
43
- [ECarouselOrientation.HORIZONTAL]: /* @__PURE__ */ jsx(CaretrightStrokeSrvIcon20, { paletteIndex: 7 }),
44
- [ECarouselOrientation.VERTICAL]: /* @__PURE__ */ jsx(CaretdownStrokeSrvIcon20, { paletteIndex: 7 })
43
+ [EOrientation.HORIZONTAL]: /* @__PURE__ */ jsx(CaretrightStrokeSrvIcon20, { paletteIndex: 7 }),
44
+ [EOrientation.VERTICAL]: /* @__PURE__ */ jsx(CaretdownStrokeSrvIcon20, { paletteIndex: 7 })
45
45
  };
46
46
  const CarouselNextButton = React__default.forwardRef(
47
47
  ({ children, className, onClick, ...restProps }, ref) => {
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselButton.js","sources":["../../../src/components/Carousel/CarouselButton.tsx"],"sourcesContent":["import React, { useContext, useCallback } from \"react\";\nimport clsx from \"clsx\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { useMatchMedia } from \"../MediaWidth/useMatchMedia\";\nimport { ButtonIcon, IButtonIconProps } from \"../Button/ButtonIcon\";\nimport {\n CaretleftStrokeSrvIcon20,\n CaretupStrokeSrvIcon20,\n CaretrightStrokeSrvIcon20,\n CaretdownStrokeSrvIcon20,\n} from \"@sberbusiness/icons-next\";\nimport { ECarouselOrientation } from \"./enums\";\nimport styles from \"./styles/Carousel.module.less\";\n\nconst ORIENTATION_TO_PREV_ICON_MAP: Record<ECarouselOrientation, React.ReactElement> = {\n [ECarouselOrientation.HORIZONTAL]: <CaretleftStrokeSrvIcon20 paletteIndex={7} />,\n [ECarouselOrientation.VERTICAL]: <CaretupStrokeSrvIcon20 paletteIndex={7} />,\n};\n\nexport const CarouselPrevButton = React.forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ children, className, onClick, ...restProps }, ref) => {\n const { orientation, atStart, prevSlide } = useContext(CarouselContext);\n const touchDevice = useMatchMedia(\"(pointer: coarse)\");\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n if (!atStart) prevSlide();\n onClick?.(event);\n },\n [atStart, prevSlide, onClick],\n );\n\n if (touchDevice) {\n return null;\n }\n\n return (\n <ButtonIcon\n {...restProps}\n className={clsx(styles.navButton, styles.prev, className)}\n aria-disabled={atStart}\n onClick={handleClick}\n ref={ref}\n >\n {children || ORIENTATION_TO_PREV_ICON_MAP[orientation]}\n </ButtonIcon>\n );\n },\n);\n\nCarouselPrevButton.displayName = \"Carousel.PrevButton\";\n\nconst ORIENTATION_TO_NEXT_ICON_MAP: Record<ECarouselOrientation, React.ReactElement> = {\n [ECarouselOrientation.HORIZONTAL]: <CaretrightStrokeSrvIcon20 paletteIndex={7} />,\n [ECarouselOrientation.VERTICAL]: <CaretdownStrokeSrvIcon20 paletteIndex={7} />,\n};\n\nexport const CarouselNextButton = React.forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ children, className, onClick, ...restProps }, ref) => {\n const { orientation, atEnd, nextSlide } = useContext(CarouselContext);\n const touchDevice = useMatchMedia(\"(pointer: coarse)\");\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n if (!atEnd) nextSlide();\n onClick?.(event);\n },\n [atEnd, nextSlide, onClick],\n );\n\n if (touchDevice) {\n return null;\n }\n\n return (\n <ButtonIcon\n {...restProps}\n className={clsx(styles.navButton, styles.next, className)}\n aria-disabled={atEnd}\n onClick={handleClick}\n ref={ref}\n >\n {children || ORIENTATION_TO_NEXT_ICON_MAP[orientation]}\n </ButtonIcon>\n );\n },\n);\n\nCarouselNextButton.displayName = \"Carousel.NextButton\";\n"],"names":["React"],"mappings":";;;;;;;;;AAcA,MAAM,+BAAiF;AAAA,EACnF,CAAC,qBAAqB,UAAU,GAAG,oBAAC,0BAAA,EAAyB,cAAc,GAAG;AAAA,EAC9E,CAAC,qBAAqB,QAAQ,GAAG,oBAAC,wBAAA,EAAuB,cAAc,EAAA,CAAG;AAC9E;AAEO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,UAAU,WAAW,SAAS,GAAG,UAAA,GAAa,QAAQ;AACrD,UAAM,EAAE,aAAa,SAAS,UAAA,IAAc,WAAW,eAAe;AACtE,UAAM,cAAc,cAAc,mBAAmB;AAErD,UAAM,cAAc;AAAA,MAChB,CAAC,UAAU;AACP,YAAI,CAAC,QAAS,WAAA;AACd,2CAAU;AAAA,MACd;AAAA,MACA,CAAC,SAAS,WAAW,OAAO;AAAA,IAAA;AAGhC,QAAI,aAAa;AACb,aAAO;AAAA,IACX;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACJ,WAAW,KAAK,OAAO,WAAW,OAAO,MAAM,SAAS;AAAA,QACxD,iBAAe;AAAA,QACf,SAAS;AAAA,QACT;AAAA,QAEC,UAAA,YAAY,6BAA6B,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGjE;AACJ;AAEA,mBAAmB,cAAc;AAEjC,MAAM,+BAAiF;AAAA,EACnF,CAAC,qBAAqB,UAAU,GAAG,oBAAC,2BAAA,EAA0B,cAAc,GAAG;AAAA,EAC/E,CAAC,qBAAqB,QAAQ,GAAG,oBAAC,0BAAA,EAAyB,cAAc,EAAA,CAAG;AAChF;AAEO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,UAAU,WAAW,SAAS,GAAG,UAAA,GAAa,QAAQ;AACrD,UAAM,EAAE,aAAa,OAAO,UAAA,IAAc,WAAW,eAAe;AACpE,UAAM,cAAc,cAAc,mBAAmB;AAErD,UAAM,cAAc;AAAA,MAChB,CAAC,UAAU;AACP,YAAI,CAAC,MAAO,WAAA;AACZ,2CAAU;AAAA,MACd;AAAA,MACA,CAAC,OAAO,WAAW,OAAO;AAAA,IAAA;AAG9B,QAAI,aAAa;AACb,aAAO;AAAA,IACX;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACJ,WAAW,KAAK,OAAO,WAAW,OAAO,MAAM,SAAS;AAAA,QACxD,iBAAe;AAAA,QACf,SAAS;AAAA,QACT;AAAA,QAEC,UAAA,YAAY,6BAA6B,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGjE;AACJ;AAEA,mBAAmB,cAAc;"}
1
+ {"version":3,"file":"CarouselButton.js","sources":["../../../src/components/Carousel/CarouselButton.tsx"],"sourcesContent":["import React, { useContext, useCallback } from \"react\";\nimport clsx from \"clsx\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { useMatchMedia } from \"../MediaWidth/useMatchMedia\";\nimport { ButtonIcon, IButtonIconProps } from \"../Button/ButtonIcon\";\nimport {\n CaretleftStrokeSrvIcon20,\n CaretupStrokeSrvIcon20,\n CaretrightStrokeSrvIcon20,\n CaretdownStrokeSrvIcon20,\n} from \"@sberbusiness/icons-next\";\nimport { EOrientation } from \"../../enums\";\nimport styles from \"./styles/Carousel.module.less\";\n\nconst ORIENTATION_TO_PREV_ICON_MAP: Record<EOrientation, React.ReactElement> = {\n [EOrientation.HORIZONTAL]: <CaretleftStrokeSrvIcon20 paletteIndex={7} />,\n [EOrientation.VERTICAL]: <CaretupStrokeSrvIcon20 paletteIndex={7} />,\n};\n\nexport const CarouselPrevButton = React.forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ children, className, onClick, ...restProps }, ref) => {\n const { orientation, atStart, prevSlide } = useContext(CarouselContext);\n const touchDevice = useMatchMedia(\"(pointer: coarse)\");\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n if (!atStart) prevSlide();\n onClick?.(event);\n },\n [atStart, prevSlide, onClick],\n );\n\n if (touchDevice) {\n return null;\n }\n\n return (\n <ButtonIcon\n {...restProps}\n className={clsx(styles.navButton, styles.prev, className)}\n aria-disabled={atStart}\n onClick={handleClick}\n ref={ref}\n >\n {children || ORIENTATION_TO_PREV_ICON_MAP[orientation]}\n </ButtonIcon>\n );\n },\n);\n\nCarouselPrevButton.displayName = \"Carousel.PrevButton\";\n\nconst ORIENTATION_TO_NEXT_ICON_MAP: Record<EOrientation, React.ReactElement> = {\n [EOrientation.HORIZONTAL]: <CaretrightStrokeSrvIcon20 paletteIndex={7} />,\n [EOrientation.VERTICAL]: <CaretdownStrokeSrvIcon20 paletteIndex={7} />,\n};\n\nexport const CarouselNextButton = React.forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ children, className, onClick, ...restProps }, ref) => {\n const { orientation, atEnd, nextSlide } = useContext(CarouselContext);\n const touchDevice = useMatchMedia(\"(pointer: coarse)\");\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (event) => {\n if (!atEnd) nextSlide();\n onClick?.(event);\n },\n [atEnd, nextSlide, onClick],\n );\n\n if (touchDevice) {\n return null;\n }\n\n return (\n <ButtonIcon\n {...restProps}\n className={clsx(styles.navButton, styles.next, className)}\n aria-disabled={atEnd}\n onClick={handleClick}\n ref={ref}\n >\n {children || ORIENTATION_TO_NEXT_ICON_MAP[orientation]}\n </ButtonIcon>\n );\n },\n);\n\nCarouselNextButton.displayName = \"Carousel.NextButton\";\n"],"names":["React"],"mappings":";;;;;;;;;AAcA,MAAM,+BAAyE;AAAA,EAC3E,CAAC,aAAa,UAAU,GAAG,oBAAC,0BAAA,EAAyB,cAAc,GAAG;AAAA,EACtE,CAAC,aAAa,QAAQ,GAAG,oBAAC,wBAAA,EAAuB,cAAc,EAAA,CAAG;AACtE;AAEO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,UAAU,WAAW,SAAS,GAAG,UAAA,GAAa,QAAQ;AACrD,UAAM,EAAE,aAAa,SAAS,UAAA,IAAc,WAAW,eAAe;AACtE,UAAM,cAAc,cAAc,mBAAmB;AAErD,UAAM,cAAc;AAAA,MAChB,CAAC,UAAU;AACP,YAAI,CAAC,QAAS,WAAA;AACd,2CAAU;AAAA,MACd;AAAA,MACA,CAAC,SAAS,WAAW,OAAO;AAAA,IAAA;AAGhC,QAAI,aAAa;AACb,aAAO;AAAA,IACX;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACJ,WAAW,KAAK,OAAO,WAAW,OAAO,MAAM,SAAS;AAAA,QACxD,iBAAe;AAAA,QACf,SAAS;AAAA,QACT;AAAA,QAEC,UAAA,YAAY,6BAA6B,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGjE;AACJ;AAEA,mBAAmB,cAAc;AAEjC,MAAM,+BAAyE;AAAA,EAC3E,CAAC,aAAa,UAAU,GAAG,oBAAC,2BAAA,EAA0B,cAAc,GAAG;AAAA,EACvE,CAAC,aAAa,QAAQ,GAAG,oBAAC,0BAAA,EAAyB,cAAc,EAAA,CAAG;AACxE;AAEO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,UAAU,WAAW,SAAS,GAAG,UAAA,GAAa,QAAQ;AACrD,UAAM,EAAE,aAAa,OAAO,UAAA,IAAc,WAAW,eAAe;AACpE,UAAM,cAAc,cAAc,mBAAmB;AAErD,UAAM,cAAc;AAAA,MAChB,CAAC,UAAU;AACP,YAAI,CAAC,MAAO,WAAA;AACZ,2CAAU;AAAA,MACd;AAAA,MACA,CAAC,OAAO,WAAW,OAAO;AAAA,IAAA;AAG9B,QAAI,aAAa;AACb,aAAO;AAAA,IACX;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACJ,WAAW,KAAK,OAAO,WAAW,OAAO,MAAM,SAAS;AAAA,QACxD,iBAAe;AAAA,QACf,SAAS;AAAA,QACT;AAAA,QAEC,UAAA,YAAY,6BAA6B,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAGjE;AACJ;AAEA,mBAAmB,cAAc;"}
@@ -1,8 +1,9 @@
1
1
  import React__default from "react";
2
- import { ECarouselOrientation, ECarouselScrollMode } from "./enums.js";
2
+ import { ECarouselScrollMode } from "./enums.js";
3
+ import { EOrientation } from "../../enums/EOrientation.js";
3
4
  const CarouselContext = React__default.createContext({
4
5
  gap: 0,
5
- orientation: ECarouselOrientation.HORIZONTAL,
6
+ orientation: EOrientation.HORIZONTAL,
6
7
  scrollMode: ECarouselScrollMode.ITEM,
7
8
  offset: 0,
8
9
  activeIndices: [],
@@ -16,8 +17,7 @@ const CarouselContext = React__default.createContext({
16
17
  },
17
18
  goToSlide: () => {
18
19
  },
19
- orientationRef: { current: ECarouselOrientation.HORIZONTAL },
20
- currentIndexRef: { current: 0 },
20
+ orientationRef: { current: EOrientation.HORIZONTAL },
21
21
  viewportRef: { current: null },
22
22
  trackRef: { current: null },
23
23
  slideRefs: { current: /* @__PURE__ */ new Map() },
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselContext.js","sources":["../../../src/components/Carousel/CarouselContext.ts"],"sourcesContent":["import React from \"react\";\nimport { ECarouselOrientation, ECarouselScrollMode } from \"./enums\";\nimport { ICarouselProps } from \"./types\";\n\nexport interface ICarouselContext extends Required<Pick<ICarouselProps, \"gap\" | \"orientation\" | \"scrollMode\">> {\n offset: number;\n activeIndices: number[];\n currentIndex: number;\n viewportPaddingStyle: string;\n atStart: boolean;\n atEnd: boolean;\n nextSlide: () => void;\n prevSlide: () => void;\n goToSlide: (index: number) => void;\n orientationRef: React.MutableRefObject<ECarouselOrientation>;\n currentIndexRef: React.MutableRefObject<number>;\n offsetRef: React.MutableRefObject<number>;\n maxOffsetRef: React.MutableRefObject<number>;\n viewportRef: React.MutableRefObject<HTMLDivElement | null>;\n trackRef: React.MutableRefObject<HTMLDivElement | null>;\n slideRefs: React.MutableRefObject<Map<number, HTMLDivElement>>;\n}\n\nexport const CarouselContext = React.createContext<ICarouselContext>({\n gap: 0,\n orientation: ECarouselOrientation.HORIZONTAL,\n scrollMode: ECarouselScrollMode.ITEM,\n offset: 0,\n activeIndices: [],\n currentIndex: 0,\n viewportPaddingStyle: \"\",\n atStart: true,\n atEnd: false,\n nextSlide: () => {},\n prevSlide: () => {},\n goToSlide: () => {},\n orientationRef: { current: ECarouselOrientation.HORIZONTAL },\n currentIndexRef: { current: 0 },\n viewportRef: { current: null },\n trackRef: { current: null },\n slideRefs: { current: new Map() },\n offsetRef: { current: 0 },\n maxOffsetRef: { current: 0 },\n});\n"],"names":["React"],"mappings":";;AAuBO,MAAM,kBAAkBA,eAAM,cAAgC;AAAA,EACjE,KAAK;AAAA,EACL,aAAa,qBAAqB;AAAA,EAClC,YAAY,oBAAoB;AAAA,EAChC,QAAQ;AAAA,EACR,eAAe,CAAA;AAAA,EACf,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,gBAAgB,EAAE,SAAS,qBAAqB,WAAA;AAAA,EAChD,iBAAiB,EAAE,SAAS,EAAA;AAAA,EAC5B,aAAa,EAAE,SAAS,KAAA;AAAA,EACxB,UAAU,EAAE,SAAS,KAAA;AAAA,EACrB,WAAW,EAAE,SAAS,oBAAI,MAAI;AAAA,EAC9B,WAAW,EAAE,SAAS,EAAA;AAAA,EACtB,cAAc,EAAE,SAAS,EAAA;AAC7B,CAAC;"}
1
+ {"version":3,"file":"CarouselContext.js","sources":["../../../src/components/Carousel/CarouselContext.ts"],"sourcesContent":["import React from \"react\";\nimport { ECarouselScrollMode } from \"./enums\";\nimport { EOrientation } from \"../../enums\";\nimport { ICarouselProps } from \"./types\";\n\nexport interface ICarouselContext extends Required<Pick<ICarouselProps, \"gap\" | \"orientation\" | \"scrollMode\">> {\n offset: number;\n activeIndices: number[];\n currentIndex: number;\n viewportPaddingStyle: string;\n atStart: boolean;\n atEnd: boolean;\n nextSlide: () => void;\n prevSlide: () => void;\n goToSlide: (index: number) => void;\n orientationRef: React.MutableRefObject<EOrientation>;\n offsetRef: React.MutableRefObject<number>;\n maxOffsetRef: React.MutableRefObject<number>;\n viewportRef: React.MutableRefObject<HTMLDivElement | null>;\n trackRef: React.MutableRefObject<HTMLDivElement | null>;\n slideRefs: React.MutableRefObject<Map<number, HTMLDivElement>>;\n}\n\nexport const CarouselContext = React.createContext<ICarouselContext>({\n gap: 0,\n orientation: EOrientation.HORIZONTAL,\n scrollMode: ECarouselScrollMode.ITEM,\n offset: 0,\n activeIndices: [],\n currentIndex: 0,\n viewportPaddingStyle: \"\",\n atStart: true,\n atEnd: false,\n nextSlide: () => {},\n prevSlide: () => {},\n goToSlide: () => {},\n orientationRef: { current: EOrientation.HORIZONTAL },\n viewportRef: { current: null },\n trackRef: { current: null },\n slideRefs: { current: new Map() },\n offsetRef: { current: 0 },\n maxOffsetRef: { current: 0 },\n});\n"],"names":["React"],"mappings":";;;AAuBO,MAAM,kBAAkBA,eAAM,cAAgC;AAAA,EACjE,KAAK;AAAA,EACL,aAAa,aAAa;AAAA,EAC1B,YAAY,oBAAoB;AAAA,EAChC,QAAQ;AAAA,EACR,eAAe,CAAA;AAAA,EACf,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,gBAAgB,EAAE,SAAS,aAAa,WAAA;AAAA,EACxC,aAAa,EAAE,SAAS,KAAA;AAAA,EACxB,UAAU,EAAE,SAAS,KAAA;AAAA,EACrB,WAAW,EAAE,SAAS,oBAAI,MAAI;AAAA,EAC9B,WAAW,EAAE,SAAS,EAAA;AAAA,EACtB,cAAc,EAAE,SAAS,EAAA;AAC7B,CAAC;"}
@@ -1,203 +1,26 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import React__default, { useContext, useRef, useCallback, useEffect } from "react";
2
+ import React__default, { useContext } from "react";
3
3
  import { c as clsx } from "../../chunks/vendor-CUIykw0y.js";
4
4
  import { CarouselContext } from "./CarouselContext.js";
5
- import { mergeRefs, useLatestRef } from "./utils.js";
6
- import { ECarouselOrientation, ECarouselScrollMode } from "./enums.js";
7
- import { ButtonBase } from "../Button/ButtonBase.js";
8
- import { s as styles } from "../../chunks/Carousel.module-DbmVe45I.js";
9
- const ORIENTATION_TO_NAVIGATION_KEYS = {
10
- [ECarouselOrientation.HORIZONTAL]: ["ArrowRight", "ArrowLeft"],
11
- [ECarouselOrientation.VERTICAL]: ["ArrowDown", "ArrowUp"]
12
- };
13
- const WINDOW_SIZE = 5;
14
- const GAP = 8;
15
- const SIZE_NORMAL = 16;
16
- const SIZE_ACTIVE = 24;
17
- const SIZE_EDGE = 8;
5
+ import { ECarouselScrollMode } from "./enums.js";
6
+ import { PageIndicators } from "../PageIndicators/PageIndicators.js";
7
+ import { s as styles } from "../../chunks/Carousel.module-Dy8ocMys.js";
18
8
  const CarouselIndicators = React__default.forwardRef(
19
- ({ className, onKeyDown, indicatorProps, ...restProps }, ref) => {
20
- const { currentIndex, orientation, scrollMode, activeIndices, goToSlide, orientationRef, currentIndexRef } = useContext(CarouselContext);
21
- const containerRef = useRef(null);
22
- const combinedRef = mergeRefs(ref, containerRef);
23
- const buttonRefs = useRef(/* @__PURE__ */ new Map());
24
- const indicatorRefsCache = useRef(/* @__PURE__ */ new Map());
25
- const clickHandlersCache = useRef(/* @__PURE__ */ new Map());
26
- const indicatorPropsRef = useLatestRef(indicatorProps);
27
- const activeIndicesRef = useLatestRef(activeIndices);
28
- const totalPages = activeIndices.length;
29
- const getIndicatorRef = useCallback((slideIndex) => {
30
- if (!indicatorRefsCache.current.has(slideIndex)) {
31
- indicatorRefsCache.current.set(slideIndex, (node) => {
32
- if (node) {
33
- buttonRefs.current.set(slideIndex, node);
34
- } else {
35
- buttonRefs.current.delete(slideIndex);
36
- }
37
- });
38
- }
39
- return indicatorRefsCache.current.get(slideIndex);
40
- }, []);
41
- const getIndicatorClickHandler = useCallback(
42
- (slideIndex) => {
43
- if (!clickHandlersCache.current.has(slideIndex)) {
44
- clickHandlersCache.current.set(slideIndex, (event) => {
45
- var _a;
46
- goToSlide(slideIndex);
47
- const currentPropsInput = indicatorPropsRef.current;
48
- if (!currentPropsInput) return;
49
- const latestActiveIndices = activeIndicesRef.current;
50
- const indexInArray = latestActiveIndices.indexOf(slideIndex);
51
- if (indexInArray !== -1) {
52
- const page = indexInArray + 1;
53
- const selected = currentIndexRef.current === slideIndex;
54
- const resolvedProps = typeof currentPropsInput === "function" ? currentPropsInput({ index: indexInArray, page, selected }) : currentPropsInput;
55
- (_a = resolvedProps == null ? void 0 : resolvedProps.onClick) == null ? void 0 : _a.call(resolvedProps, event);
56
- }
57
- });
58
- }
59
- return clickHandlersCache.current.get(slideIndex);
60
- },
61
- // eslint-disable-next-line react-hooks/exhaustive-deps
62
- [goToSlide]
63
- );
64
- const handleKeyDown = useCallback(
65
- (event) => {
66
- const [nextKey, prevKey] = ORIENTATION_TO_NAVIGATION_KEYS[orientationRef.current];
67
- const nextKeyMatched = event.key === nextKey;
68
- const prevKeyMatched = event.key === prevKey;
69
- const homeKeyMatched = event.key === "Home";
70
- const endKeyMatched = event.key === "End";
71
- if (nextKeyMatched || prevKeyMatched || homeKeyMatched || endKeyMatched) {
72
- const currentIndexInArray2 = activeIndices.indexOf(currentIndexRef.current);
73
- if (currentIndexInArray2 !== -1) {
74
- event.preventDefault();
75
- let nextIndexInArray = currentIndexInArray2;
76
- if (nextKeyMatched) {
77
- nextIndexInArray = Math.min(currentIndexInArray2 + 1, totalPages - 1);
78
- } else if (prevKeyMatched) {
79
- nextIndexInArray = Math.max(currentIndexInArray2 - 1, 0);
80
- } else if (homeKeyMatched) {
81
- nextIndexInArray = 0;
82
- } else if (endKeyMatched) {
83
- nextIndexInArray = totalPages - 1;
84
- }
85
- const nextSlideIndex = activeIndices[nextIndexInArray];
86
- goToSlide(nextSlideIndex);
87
- }
88
- }
89
- onKeyDown == null ? void 0 : onKeyDown(event);
90
- },
91
- // eslint-disable-next-line react-hooks/exhaustive-deps
92
- [activeIndices, totalPages, goToSlide, onKeyDown]
93
- );
94
- useEffect(() => {
95
- const activeSet = new Set(activeIndices);
96
- for (const key of indicatorRefsCache.current.keys()) {
97
- if (!activeSet.has(key)) {
98
- indicatorRefsCache.current.delete(key);
99
- buttonRefs.current.delete(key);
100
- }
101
- }
102
- for (const key of clickHandlersCache.current.keys()) {
103
- if (!activeSet.has(key)) {
104
- clickHandlersCache.current.delete(key);
105
- }
106
- }
107
- }, [activeIndices]);
108
- useEffect(() => {
109
- const container = containerRef.current;
110
- if (!(container == null ? void 0 : container.contains(document.activeElement))) return;
111
- const rafId = requestAnimationFrame(() => {
112
- const activeButton = buttonRefs.current.get(currentIndexRef.current);
113
- activeButton == null ? void 0 : activeButton.focus();
114
- });
115
- return () => cancelAnimationFrame(rafId);
116
- }, [currentIndex]);
117
- if (scrollMode === ECarouselScrollMode.ITEM || totalPages < 1) {
9
+ ({ className, ...restProps }, ref) => {
10
+ const { currentIndex, orientation, scrollMode, activeIndices, goToSlide } = useContext(CarouselContext);
11
+ if (scrollMode === ECarouselScrollMode.ITEM) {
118
12
  return null;
119
13
  }
120
- const currentIndexInArray = activeIndices.indexOf(currentIndex);
121
- let startWindowIndex = 0;
122
- if (totalPages > WINDOW_SIZE) {
123
- startWindowIndex = currentIndexInArray - Math.floor(WINDOW_SIZE / 2);
124
- startWindowIndex = Math.max(0, Math.min(startWindowIndex, totalPages - WINDOW_SIZE));
125
- }
126
- const endWindowIndex = startWindowIndex + WINDOW_SIZE;
127
- const startWindowOffset = startWindowIndex * (SIZE_EDGE + GAP);
128
- let currentOffset = 0;
129
- const indicatorsData = activeIndices.map((slideIndex, index) => {
130
- const page = index + 1;
131
- const hidden = index < startWindowIndex || index >= endWindowIndex;
132
- const selected = currentIndex === slideIndex;
133
- const startEdge = index === startWindowIndex && startWindowIndex > 0;
134
- const endEdge = index === endWindowIndex - 1 && endWindowIndex < totalPages;
135
- let size = SIZE_NORMAL;
136
- let scale = SIZE_NORMAL / SIZE_ACTIVE;
137
- if (selected) {
138
- size = SIZE_ACTIVE;
139
- scale = 1;
140
- } else if (startEdge || endEdge || hidden) {
141
- size = SIZE_EDGE;
142
- scale = SIZE_EDGE / SIZE_ACTIVE;
143
- }
144
- const rawOffset = currentOffset;
145
- currentOffset += size + GAP;
146
- const translate = rawOffset - startWindowOffset;
147
- return {
148
- slideIndex,
149
- index,
150
- page,
151
- selected,
152
- hidden,
153
- size,
154
- scale,
155
- translate
156
- };
157
- });
158
- const lastVisibleIndex = Math.min(endWindowIndex - 1, totalPages - 1);
159
- const lastVisibleItem = indicatorsData[lastVisibleIndex];
160
- const containerSize = lastVisibleItem ? lastVisibleItem.translate + lastVisibleItem.size : 0;
161
- const style = {
162
- ...restProps.style,
163
- "--triplex-next-runtime-carousel-indicators-size": `${containerSize}px`
164
- };
165
14
  return /* @__PURE__ */ jsx(
166
- "div",
15
+ PageIndicators,
167
16
  {
168
17
  ...restProps,
18
+ ref,
169
19
  className: clsx(styles.indicators, className),
170
- role: "tablist",
171
- "aria-orientation": orientation,
172
- onKeyDown: handleKeyDown,
173
- ref: combinedRef,
174
- style,
175
- children: indicatorsData.map((item) => {
176
- const { slideIndex, index, page, selected, hidden, scale, translate } = item;
177
- const resolvedIndicatorProps = typeof indicatorProps === "function" ? indicatorProps({ index, page, selected }) : indicatorProps;
178
- const indicatorRef = getIndicatorRef(slideIndex);
179
- const indicatorClickHandler = getIndicatorClickHandler(slideIndex);
180
- const indicatorStyle = {
181
- ...resolvedIndicatorProps == null ? void 0 : resolvedIndicatorProps.style,
182
- "--triplex-next-runtime-carousel-indicators-indicator-scale": scale,
183
- "--triplex-next-runtime-carousel-indicators-indicator-translate": `${translate}px`
184
- };
185
- const providedIndicatorProps = {
186
- ...resolvedIndicatorProps,
187
- className: clsx(
188
- styles.indicator,
189
- { [styles.active]: selected },
190
- resolvedIndicatorProps == null ? void 0 : resolvedIndicatorProps.className
191
- ),
192
- role: "tab",
193
- tabIndex: selected ? 0 : -1,
194
- "aria-selected": selected,
195
- "aria-hidden": hidden ? true : resolvedIndicatorProps == null ? void 0 : resolvedIndicatorProps["aria-hidden"],
196
- onClick: indicatorClickHandler,
197
- style: indicatorStyle
198
- };
199
- return /* @__PURE__ */ jsx(ButtonBase, { ...providedIndicatorProps, ref: indicatorRef }, slideIndex);
200
- })
20
+ count: activeIndices.length,
21
+ activeIndex: currentIndex,
22
+ onChange: goToSlide,
23
+ orientation
201
24
  }
202
25
  );
203
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselIndicators.js","sources":["../../../src/components/Carousel/CarouselIndicators.tsx"],"sourcesContent":["import React, { useContext, useRef, useCallback, useEffect } from \"react\";\nimport clsx from \"clsx\";\nimport { ICarouselIndicatorsProps, TCarouselIndicatorProps } from \"./types\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { mergeRefs, useLatestRef } from \"./utils\";\nimport { ECarouselScrollMode, ECarouselOrientation } from \"./enums\";\nimport { ButtonBase } from \"../Button/ButtonBase\";\nimport styles from \"./styles/Carousel.module.less\";\n\ninterface ICarouselIndicatorsStyle extends React.CSSProperties {\n \"--triplex-next-runtime-carousel-indicators-size\": string;\n}\n\ninterface ICarouselIndicatorsIndicatorStyle extends React.CSSProperties {\n \"--triplex-next-runtime-carousel-indicators-indicator-scale\": number;\n \"--triplex-next-runtime-carousel-indicators-indicator-translate\": string;\n}\n\nconst ORIENTATION_TO_NAVIGATION_KEYS = {\n [ECarouselOrientation.HORIZONTAL]: [\"ArrowRight\", \"ArrowLeft\"],\n [ECarouselOrientation.VERTICAL]: [\"ArrowDown\", \"ArrowUp\"],\n} as const;\n\nconst WINDOW_SIZE = 5;\nconst GAP = 8;\nconst SIZE_NORMAL = 16;\nconst SIZE_ACTIVE = 24;\nconst SIZE_EDGE = 8;\n\nexport const CarouselIndicators = React.forwardRef<HTMLDivElement, ICarouselIndicatorsProps>(\n ({ className, onKeyDown, indicatorProps, ...restProps }, ref) => {\n const { currentIndex, orientation, scrollMode, activeIndices, goToSlide, orientationRef, currentIndexRef } =\n useContext(CarouselContext);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const combinedRef = mergeRefs(ref, containerRef);\n\n const buttonRefs = useRef<Map<number, HTMLButtonElement>>(new Map());\n const indicatorRefsCache = useRef<Map<number, React.RefCallback<HTMLButtonElement>>>(new Map());\n const clickHandlersCache = useRef<Map<number, React.MouseEventHandler<HTMLButtonElement>>>(new Map());\n\n // Храним актуальный indicatorProps в рефе для стабильных колбэков клика\n const indicatorPropsRef = useLatestRef(indicatorProps);\n // Защита от устаревшего замыкания activeIndices в кэшированных кликах\n const activeIndicesRef = useLatestRef(activeIndices);\n\n const totalPages = activeIndices.length;\n\n const getIndicatorRef = useCallback((slideIndex: number) => {\n if (!indicatorRefsCache.current.has(slideIndex)) {\n indicatorRefsCache.current.set(slideIndex, (node) => {\n if (node) {\n buttonRefs.current.set(slideIndex, node);\n } else {\n buttonRefs.current.delete(slideIndex);\n }\n });\n }\n // Безопасно: запись выше гарантирует наличие ключа в кэше.\n return indicatorRefsCache.current.get(slideIndex)!;\n }, []);\n\n const getIndicatorClickHandler = useCallback(\n (slideIndex: number) => {\n if (!clickHandlersCache.current.has(slideIndex)) {\n clickHandlersCache.current.set(slideIndex, (event) => {\n goToSlide(slideIndex);\n\n const currentPropsInput = indicatorPropsRef.current;\n if (!currentPropsInput) return;\n\n const latestActiveIndices = activeIndicesRef.current;\n const indexInArray = latestActiveIndices.indexOf(slideIndex);\n\n if (indexInArray !== -1) {\n const page = indexInArray + 1;\n const selected = currentIndexRef.current === slideIndex;\n const resolvedProps =\n typeof currentPropsInput === \"function\"\n ? currentPropsInput({ index: indexInArray, page, selected })\n : currentPropsInput;\n\n resolvedProps?.onClick?.(event);\n }\n });\n }\n // Безопасно: запись выше гарантирует наличие ключа в кэше.\n return clickHandlersCache.current.get(slideIndex)!;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [goToSlide],\n );\n\n const handleKeyDown = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n const [nextKey, prevKey] = ORIENTATION_TO_NAVIGATION_KEYS[orientationRef.current];\n const nextKeyMatched = event.key === nextKey;\n const prevKeyMatched = event.key === prevKey;\n const homeKeyMatched = event.key === \"Home\";\n const endKeyMatched = event.key === \"End\";\n\n if (nextKeyMatched || prevKeyMatched || homeKeyMatched || endKeyMatched) {\n const currentIndexInArray = activeIndices.indexOf(currentIndexRef.current);\n\n if (currentIndexInArray !== -1) {\n event.preventDefault();\n\n let nextIndexInArray = currentIndexInArray;\n if (nextKeyMatched) {\n nextIndexInArray = Math.min(currentIndexInArray + 1, totalPages - 1);\n } else if (prevKeyMatched) {\n nextIndexInArray = Math.max(currentIndexInArray - 1, 0);\n } else if (homeKeyMatched) {\n nextIndexInArray = 0;\n } else if (endKeyMatched) {\n nextIndexInArray = totalPages - 1;\n }\n\n const nextSlideIndex = activeIndices[nextIndexInArray];\n goToSlide(nextSlideIndex);\n }\n }\n\n onKeyDown?.(event);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeIndices, totalPages, goToSlide, onKeyDown],\n );\n\n useEffect(() => {\n const activeSet = new Set(activeIndices);\n\n for (const key of indicatorRefsCache.current.keys()) {\n if (!activeSet.has(key)) {\n indicatorRefsCache.current.delete(key);\n buttonRefs.current.delete(key);\n }\n }\n for (const key of clickHandlersCache.current.keys()) {\n if (!activeSet.has(key)) {\n clickHandlersCache.current.delete(key);\n }\n }\n }, [activeIndices]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container?.contains(document.activeElement)) return;\n\n const rafId = requestAnimationFrame(() => {\n const activeButton = buttonRefs.current.get(currentIndexRef.current);\n activeButton?.focus();\n });\n\n return () => cancelAnimationFrame(rafId);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentIndex]);\n\n if (scrollMode === ECarouselScrollMode.ITEM || totalPages < 1) {\n return null;\n }\n\n const currentIndexInArray = activeIndices.indexOf(currentIndex);\n\n let startWindowIndex = 0;\n if (totalPages > WINDOW_SIZE) {\n startWindowIndex = currentIndexInArray - Math.floor(WINDOW_SIZE / 2);\n startWindowIndex = Math.max(0, Math.min(startWindowIndex, totalPages - WINDOW_SIZE));\n }\n const endWindowIndex = startWindowIndex + WINDOW_SIZE;\n\n const startWindowOffset = startWindowIndex * (SIZE_EDGE + GAP);\n\n let currentOffset = 0;\n\n const indicatorsData = activeIndices.map((slideIndex, index) => {\n const page = index + 1;\n const hidden = index < startWindowIndex || index >= endWindowIndex;\n const selected = currentIndex === slideIndex;\n\n const startEdge = index === startWindowIndex && startWindowIndex > 0;\n const endEdge = index === endWindowIndex - 1 && endWindowIndex < totalPages;\n\n let size = SIZE_NORMAL;\n let scale = SIZE_NORMAL / SIZE_ACTIVE;\n\n if (selected) {\n size = SIZE_ACTIVE;\n scale = 1;\n } else if (startEdge || endEdge || hidden) {\n size = SIZE_EDGE;\n scale = SIZE_EDGE / SIZE_ACTIVE;\n }\n\n const rawOffset = currentOffset;\n currentOffset += size + GAP;\n\n const translate = rawOffset - startWindowOffset;\n\n return {\n slideIndex,\n index,\n page,\n selected,\n hidden,\n size,\n scale,\n translate,\n };\n });\n\n const lastVisibleIndex = Math.min(endWindowIndex - 1, totalPages - 1);\n const lastVisibleItem = indicatorsData[lastVisibleIndex];\n const containerSize = lastVisibleItem ? lastVisibleItem.translate + lastVisibleItem.size : 0;\n\n const style: ICarouselIndicatorsStyle = {\n ...restProps.style,\n \"--triplex-next-runtime-carousel-indicators-size\": `${containerSize}px`,\n };\n\n return (\n <div\n {...restProps}\n className={clsx(styles.indicators, className)}\n role=\"tablist\"\n aria-orientation={orientation}\n onKeyDown={handleKeyDown}\n ref={combinedRef}\n style={style}\n >\n {indicatorsData.map((item) => {\n const { slideIndex, index, page, selected, hidden, scale, translate } = item;\n\n const resolvedIndicatorProps =\n typeof indicatorProps === \"function\"\n ? indicatorProps({ index, page, selected })\n : indicatorProps;\n\n const indicatorRef = getIndicatorRef(slideIndex);\n const indicatorClickHandler = getIndicatorClickHandler(slideIndex);\n\n const indicatorStyle: ICarouselIndicatorsIndicatorStyle = {\n ...resolvedIndicatorProps?.style,\n \"--triplex-next-runtime-carousel-indicators-indicator-scale\": scale,\n \"--triplex-next-runtime-carousel-indicators-indicator-translate\": `${translate}px`,\n };\n\n const providedIndicatorProps: TCarouselIndicatorProps = {\n ...resolvedIndicatorProps,\n className: clsx(\n styles.indicator,\n { [styles.active]: selected },\n resolvedIndicatorProps?.className,\n ),\n role: \"tab\",\n tabIndex: selected ? 0 : -1,\n \"aria-selected\": selected,\n \"aria-hidden\": hidden ? true : resolvedIndicatorProps?.[\"aria-hidden\"],\n onClick: indicatorClickHandler,\n style: indicatorStyle,\n };\n\n return <ButtonBase key={slideIndex} {...providedIndicatorProps} ref={indicatorRef} />;\n })}\n </div>\n );\n },\n);\n\nCarouselIndicators.displayName = \"Carousel.Indicators\";\n"],"names":["React","currentIndexInArray"],"mappings":"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"}
1
+ {"version":3,"file":"CarouselIndicators.js","sources":["../../../src/components/Carousel/CarouselIndicators.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport { ICarouselIndicatorsProps } from \"./types\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { ECarouselScrollMode } from \"./enums\";\nimport { PageIndicators } from \"../PageIndicators\";\nimport styles from \"./styles/Carousel.module.less\";\n\n/** Индикаторы страниц карусели. Рендерятся только в режиме ECarouselScrollMode.PAGE. */\nexport const CarouselIndicators = React.forwardRef<HTMLDivElement, ICarouselIndicatorsProps>(\n ({ className, ...restProps }, ref) => {\n const { currentIndex, orientation, scrollMode, activeIndices, goToSlide } = useContext(CarouselContext);\n\n if (scrollMode === ECarouselScrollMode.ITEM) {\n return null;\n }\n\n return (\n <PageIndicators\n {...restProps}\n ref={ref}\n className={clsx(styles.indicators, className)}\n count={activeIndices.length}\n activeIndex={currentIndex}\n onChange={goToSlide}\n orientation={orientation}\n />\n );\n },\n);\n\nCarouselIndicators.displayName = \"Carousel.Indicators\";\n"],"names":["React"],"mappings":";;;;;;;AASO,MAAM,qBAAqBA,eAAM;AAAA,EACpC,CAAC,EAAE,WAAW,GAAG,UAAA,GAAa,QAAQ;AAClC,UAAM,EAAE,cAAc,aAAa,YAAY,eAAe,UAAA,IAAc,WAAW,eAAe;AAEtG,QAAI,eAAe,oBAAoB,MAAM;AACzC,aAAO;AAAA,IACX;AAEA,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACI,GAAG;AAAA,QACJ;AAAA,QACA,WAAW,KAAK,OAAO,YAAY,SAAS;AAAA,QAC5C,OAAO,cAAc;AAAA,QACrB,aAAa;AAAA,QACb,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAAA;AAAA,EAGZ;AACJ;AAEA,mBAAmB,cAAc;"}
@@ -2,8 +2,8 @@ import { jsx } from "react/jsx-runtime";
2
2
  import React__default, { useContext, useRef, useCallback } from "react";
3
3
  import { c as clsx } from "../../chunks/vendor-CUIykw0y.js";
4
4
  import { CarouselContext } from "./CarouselContext.js";
5
- import { mergeRefs } from "./utils.js";
6
- import { s as styles } from "../../chunks/Carousel.module-DbmVe45I.js";
5
+ import { mergeRefs } from "../../utils/refs.js";
6
+ import { s as styles } from "../../chunks/Carousel.module-Dy8ocMys.js";
7
7
  const CarouselItem = React__default.forwardRef(
8
8
  ({ children, className, index, ...restProps }, ref) => {
9
9
  const { slideRefs } = useContext(CarouselContext);
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselItem.js","sources":["../../../src/components/Carousel/CarouselItem.tsx"],"sourcesContent":["import React, { useContext, useRef, useCallback } from \"react\";\nimport clsx from \"clsx\";\nimport { ICarouselItemProps } from \"./types\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { mergeRefs } from \"./utils\";\nimport styles from \"./styles/Carousel.module.less\";\n\nexport const CarouselItem = React.forwardRef<HTMLDivElement, ICarouselItemProps>(\n ({ children, className, index, ...restProps }, ref) => {\n const { slideRefs } = useContext(CarouselContext);\n\n const lastRegisteredIndexRef = useRef<number | null>(null);\n\n const registerItemRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) {\n if (lastRegisteredIndexRef.current !== null && lastRegisteredIndexRef.current !== index) {\n slideRefs.current.delete(lastRegisteredIndexRef.current);\n }\n slideRefs.current.set(index, node);\n lastRegisteredIndexRef.current = index;\n } else if (lastRegisteredIndexRef.current !== null) {\n slideRefs.current.delete(lastRegisteredIndexRef.current);\n lastRegisteredIndexRef.current = null;\n }\n },\n [index],\n );\n\n const combinedRef = mergeRefs(ref, registerItemRef);\n\n return (\n <div className={clsx(styles.slide, className)} role=\"group\" {...restProps} ref={combinedRef}>\n {children}\n </div>\n );\n },\n);\n\nCarouselItem.displayName = \"Carousel.Item\";\n"],"names":["React"],"mappings":";;;;;;AAOO,MAAM,eAAeA,eAAM;AAAA,EAC9B,CAAC,EAAE,UAAU,WAAW,OAAO,GAAG,UAAA,GAAa,QAAQ;AACnD,UAAM,EAAE,UAAA,IAAc,WAAW,eAAe;AAEhD,UAAM,yBAAyB,OAAsB,IAAI;AAEzD,UAAM,kBAAkB;AAAA,MACpB,CAAC,SAAgC;AAC7B,YAAI,MAAM;AACN,cAAI,uBAAuB,YAAY,QAAQ,uBAAuB,YAAY,OAAO;AACrF,sBAAU,QAAQ,OAAO,uBAAuB,OAAO;AAAA,UAC3D;AACA,oBAAU,QAAQ,IAAI,OAAO,IAAI;AACjC,iCAAuB,UAAU;AAAA,QACrC,WAAW,uBAAuB,YAAY,MAAM;AAChD,oBAAU,QAAQ,OAAO,uBAAuB,OAAO;AACvD,iCAAuB,UAAU;AAAA,QACrC;AAAA,MACJ;AAAA,MACA,CAAC,KAAK;AAAA,IAAA;AAGV,UAAM,cAAc,UAAU,KAAK,eAAe;AAElD,WACI,oBAAC,OAAA,EAAI,WAAW,KAAK,OAAO,OAAO,SAAS,GAAG,MAAK,SAAS,GAAG,WAAW,KAAK,aAC3E,UACL;AAAA,EAER;AACJ;AAEA,aAAa,cAAc;"}
1
+ {"version":3,"file":"CarouselItem.js","sources":["../../../src/components/Carousel/CarouselItem.tsx"],"sourcesContent":["import React, { useContext, useRef, useCallback } from \"react\";\nimport clsx from \"clsx\";\nimport { ICarouselItemProps } from \"./types\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { mergeRefs } from \"../../utils/refs\";\nimport styles from \"./styles/Carousel.module.less\";\n\nexport const CarouselItem = React.forwardRef<HTMLDivElement, ICarouselItemProps>(\n ({ children, className, index, ...restProps }, ref) => {\n const { slideRefs } = useContext(CarouselContext);\n\n const lastRegisteredIndexRef = useRef<number | null>(null);\n\n const registerItemRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) {\n if (lastRegisteredIndexRef.current !== null && lastRegisteredIndexRef.current !== index) {\n slideRefs.current.delete(lastRegisteredIndexRef.current);\n }\n slideRefs.current.set(index, node);\n lastRegisteredIndexRef.current = index;\n } else if (lastRegisteredIndexRef.current !== null) {\n slideRefs.current.delete(lastRegisteredIndexRef.current);\n lastRegisteredIndexRef.current = null;\n }\n },\n [index],\n );\n\n const combinedRef = mergeRefs(ref, registerItemRef);\n\n return (\n <div className={clsx(styles.slide, className)} role=\"group\" {...restProps} ref={combinedRef}>\n {children}\n </div>\n );\n },\n);\n\nCarouselItem.displayName = \"Carousel.Item\";\n"],"names":["React"],"mappings":";;;;;;AAOO,MAAM,eAAeA,eAAM;AAAA,EAC9B,CAAC,EAAE,UAAU,WAAW,OAAO,GAAG,UAAA,GAAa,QAAQ;AACnD,UAAM,EAAE,UAAA,IAAc,WAAW,eAAe;AAEhD,UAAM,yBAAyB,OAAsB,IAAI;AAEzD,UAAM,kBAAkB;AAAA,MACpB,CAAC,SAAgC;AAC7B,YAAI,MAAM;AACN,cAAI,uBAAuB,YAAY,QAAQ,uBAAuB,YAAY,OAAO;AACrF,sBAAU,QAAQ,OAAO,uBAAuB,OAAO;AAAA,UAC3D;AACA,oBAAU,QAAQ,IAAI,OAAO,IAAI;AACjC,iCAAuB,UAAU;AAAA,QACrC,WAAW,uBAAuB,YAAY,MAAM;AAChD,oBAAU,QAAQ,OAAO,uBAAuB,OAAO;AACvD,iCAAuB,UAAU;AAAA,QACrC;AAAA,MACJ;AAAA,MACA,CAAC,KAAK;AAAA,IAAA;AAGV,UAAM,cAAc,UAAU,KAAK,eAAe;AAElD,WACI,oBAAC,OAAA,EAAI,WAAW,KAAK,OAAO,OAAO,SAAS,GAAG,MAAK,SAAS,GAAG,WAAW,KAAK,aAC3E,UACL;AAAA,EAER;AACJ;AAEA,aAAa,cAAc;"}
@@ -2,9 +2,9 @@ import { jsx } from "react/jsx-runtime";
2
2
  import React__default, { useContext } from "react";
3
3
  import { c as clsx } from "../../chunks/vendor-CUIykw0y.js";
4
4
  import { CarouselContext } from "./CarouselContext.js";
5
- import { mergeRefs } from "./utils.js";
5
+ import { mergeRefs } from "../../utils/refs.js";
6
6
  import { ORIENTATION_TRANSFORM } from "./constants.js";
7
- import { s as styles } from "../../chunks/Carousel.module-DbmVe45I.js";
7
+ import { s as styles } from "../../chunks/Carousel.module-Dy8ocMys.js";
8
8
  const CarouselTrack = React__default.forwardRef(
9
9
  ({ children, className, style, ...restProps }, ref) => {
10
10
  const { gap, orientation, offset, trackRef } = useContext(CarouselContext);
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselTrack.js","sources":["../../../src/components/Carousel/CarouselTrack.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport { ICarouselTrackProps } from \"./types\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { mergeRefs } from \"./utils\";\nimport { ORIENTATION_TRANSFORM } from \"./constants\";\nimport styles from \"./styles/Carousel.module.less\";\n\nexport const CarouselTrack = React.forwardRef<HTMLDivElement, ICarouselTrackProps>(\n ({ children, className, style, ...restProps }, ref) => {\n const { gap, orientation, offset, trackRef } = useContext(CarouselContext);\n const combinedRef = mergeRefs(ref, trackRef);\n\n const runtimeStyle = {\n \"--triplex-next-runtime-carousel-transform\": ORIENTATION_TRANSFORM[orientation](-offset),\n \"--triplex-next-runtime-carousel-gap\": `${gap}px`,\n };\n\n return (\n <div\n className={clsx(styles.track, className)}\n role=\"presentation\"\n {...restProps}\n style={{\n ...style,\n ...runtimeStyle,\n }}\n ref={combinedRef}\n >\n {children}\n </div>\n );\n },\n);\n\nCarouselTrack.displayName = \"Carousel.Track\";\n"],"names":["React"],"mappings":";;;;;;;AAQO,MAAM,gBAAgBA,eAAM;AAAA,EAC/B,CAAC,EAAE,UAAU,WAAW,OAAO,GAAG,UAAA,GAAa,QAAQ;AACnD,UAAM,EAAE,KAAK,aAAa,QAAQ,SAAA,IAAa,WAAW,eAAe;AACzE,UAAM,cAAc,UAAU,KAAK,QAAQ;AAE3C,UAAM,eAAe;AAAA,MACjB,6CAA6C,sBAAsB,WAAW,EAAE,CAAC,MAAM;AAAA,MACvF,uCAAuC,GAAG,GAAG;AAAA,IAAA;AAGjD,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAW,KAAK,OAAO,OAAO,SAAS;AAAA,QACvC,MAAK;AAAA,QACJ,GAAG;AAAA,QACJ,OAAO;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,QAAA;AAAA,QAEP,KAAK;AAAA,QAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AAEA,cAAc,cAAc;"}
1
+ {"version":3,"file":"CarouselTrack.js","sources":["../../../src/components/Carousel/CarouselTrack.tsx"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport { ICarouselTrackProps } from \"./types\";\nimport { CarouselContext } from \"./CarouselContext\";\nimport { mergeRefs } from \"../../utils/refs\";\nimport { ORIENTATION_TRANSFORM } from \"./constants\";\nimport styles from \"./styles/Carousel.module.less\";\n\nexport const CarouselTrack = React.forwardRef<HTMLDivElement, ICarouselTrackProps>(\n ({ children, className, style, ...restProps }, ref) => {\n const { gap, orientation, offset, trackRef } = useContext(CarouselContext);\n const combinedRef = mergeRefs(ref, trackRef);\n\n const runtimeStyle = {\n \"--triplex-next-runtime-carousel-transform\": ORIENTATION_TRANSFORM[orientation](-offset),\n \"--triplex-next-runtime-carousel-gap\": `${gap}px`,\n };\n\n return (\n <div\n className={clsx(styles.track, className)}\n role=\"presentation\"\n {...restProps}\n style={{\n ...style,\n ...runtimeStyle,\n }}\n ref={combinedRef}\n >\n {children}\n </div>\n );\n },\n);\n\nCarouselTrack.displayName = \"Carousel.Track\";\n"],"names":["React"],"mappings":";;;;;;;AAQO,MAAM,gBAAgBA,eAAM;AAAA,EAC/B,CAAC,EAAE,UAAU,WAAW,OAAO,GAAG,UAAA,GAAa,QAAQ;AACnD,UAAM,EAAE,KAAK,aAAa,QAAQ,SAAA,IAAa,WAAW,eAAe;AACzE,UAAM,cAAc,UAAU,KAAK,QAAQ;AAE3C,UAAM,eAAe;AAAA,MACjB,6CAA6C,sBAAsB,WAAW,EAAE,CAAC,MAAM;AAAA,MACvF,uCAAuC,GAAG,GAAG;AAAA,IAAA;AAGjD,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAW,KAAK,OAAO,OAAO,SAAS;AAAA,QACvC,MAAK;AAAA,QACJ,GAAG;AAAA,QACJ,OAAO;AAAA,UACH,GAAG;AAAA,UACH,GAAG;AAAA,QAAA;AAAA,QAEP,KAAK;AAAA,QAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AAEA,cAAc,cAAc;"}
@@ -2,17 +2,17 @@ import { jsx } from "react/jsx-runtime";
2
2
  import React__default, { useContext, useRef, useCallback, useEffect } from "react";
3
3
  import { c as clsx } from "../../chunks/vendor-CUIykw0y.js";
4
4
  import { CarouselContext } from "./CarouselContext.js";
5
- import { mergeRefs } from "./utils.js";
5
+ import { mergeRefs } from "../../utils/refs.js";
6
6
  import { ORIENTATION_TRANSFORM } from "./constants.js";
7
- import { ECarouselOrientation } from "./enums.js";
8
- import { s as styles } from "../../chunks/Carousel.module-DbmVe45I.js";
7
+ import { EOrientation } from "../../enums/EOrientation.js";
8
+ import { s as styles } from "../../chunks/Carousel.module-Dy8ocMys.js";
9
9
  const ORIENTATION_TO_TOUCH_KEY = {
10
- [ECarouselOrientation.HORIZONTAL]: "clientX",
11
- [ECarouselOrientation.VERTICAL]: "clientY"
10
+ [EOrientation.HORIZONTAL]: "clientX",
11
+ [EOrientation.VERTICAL]: "clientY"
12
12
  };
13
13
  const ORIENTATION_TO_CROSS_TOUCH_KEY = {
14
- [ECarouselOrientation.HORIZONTAL]: "clientY",
15
- [ECarouselOrientation.VERTICAL]: "clientX"
14
+ [EOrientation.HORIZONTAL]: "clientY",
15
+ [EOrientation.VERTICAL]: "clientX"
16
16
  };
17
17
  const CarouselViewport = React__default.forwardRef(
18
18
  ({ children, className, style, onTouchStart, ...restProps }, ref) => {