@feugene/granularity 0.49.0 → 0.50.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 (368) hide show
  1. package/README.md +3 -3
  2. package/dist/chunks/chevron-up-BhW6hi8L.js +23 -0
  3. package/dist/chunks/chevron-up-BhW6hi8L.js.map +1 -0
  4. package/dist/chunks/{config-E1cTyRVV.js → config-8n1VR0ju.js} +1 -1
  5. package/dist/chunks/{config-E1cTyRVV.js.map → config-8n1VR0ju.js.map} +1 -1
  6. package/dist/chunks/{config-DIDz_E5m.js → config-B34mkd53.js} +66 -1
  7. package/dist/chunks/config-B34mkd53.js.map +1 -0
  8. package/dist/chunks/{config-B5SBUa6u.js → config-B7qZqiUB.js} +28 -1
  9. package/dist/chunks/config-B7qZqiUB.js.map +1 -0
  10. package/dist/chunks/config-BBrPUEye.js +8 -0
  11. package/dist/chunks/config-BBrPUEye.js.map +1 -0
  12. package/dist/chunks/{config-CT4lP6S4.js → config-BOCzHqWh.js} +2 -2
  13. package/dist/chunks/{config-CT4lP6S4.js.map → config-BOCzHqWh.js.map} +1 -1
  14. package/dist/chunks/{config-iemgzS4x.js → config-BP1ktzwh.js} +2 -24
  15. package/dist/chunks/config-BP1ktzwh.js.map +1 -0
  16. package/dist/chunks/config-BTxmdRzT.js +28 -0
  17. package/dist/chunks/config-BTxmdRzT.js.map +1 -0
  18. package/dist/chunks/{config-CjWOTgLL.js → config-Bk52xd5l.js} +12 -5
  19. package/dist/chunks/config-Bk52xd5l.js.map +1 -0
  20. package/dist/chunks/{config-D3HOuHDe.js → config-C3SqBqSQ.js} +3 -1
  21. package/dist/chunks/config-C3SqBqSQ.js.map +1 -0
  22. package/dist/chunks/{config-2ZHRsdOc.js → config-C3uqd-sW.js} +1 -1
  23. package/dist/chunks/config-C3uqd-sW.js.map +1 -0
  24. package/dist/chunks/{config-BXRmsn3t.js → config-CPhcZzHi.js} +72 -10
  25. package/dist/chunks/config-CPhcZzHi.js.map +1 -0
  26. package/dist/chunks/config-CWtfxkM9.js.map +1 -1
  27. package/dist/chunks/{config--t2dxj0t.js → config-CmLTCmY9.js} +2 -2
  28. package/dist/chunks/{config--t2dxj0t.js.map → config-CmLTCmY9.js.map} +1 -1
  29. package/dist/chunks/{config-BAse0laT.js → config-CvtqB4ki.js} +8 -3
  30. package/dist/chunks/config-CvtqB4ki.js.map +1 -0
  31. package/dist/chunks/{config-BcXX7S7B.js → config-D-JgqV0J.js} +5 -1
  32. package/dist/chunks/{config-BcXX7S7B.js.map → config-D-JgqV0J.js.map} +1 -1
  33. package/dist/chunks/{config-BHLMTJaR.js → config-D1oVht-E.js} +8 -3
  34. package/dist/chunks/config-D1oVht-E.js.map +1 -0
  35. package/dist/chunks/{config-B42iJ48O.js → config-DG41PD9i.js} +13 -1
  36. package/dist/chunks/config-DG41PD9i.js.map +1 -0
  37. package/dist/chunks/{config-Bs1HwUcx.js → config-DPJ3jtiB.js} +12 -2
  38. package/dist/chunks/config-DPJ3jtiB.js.map +1 -0
  39. package/dist/chunks/{config-tNqtapcT.js → config-DpqjlCfB.js} +2 -2
  40. package/dist/chunks/{config-tNqtapcT.js.map → config-DpqjlCfB.js.map} +1 -1
  41. package/dist/chunks/{config-DNDgp9bB.js → config-DpzFoSIh.js} +64 -2
  42. package/dist/chunks/config-DpzFoSIh.js.map +1 -0
  43. package/dist/chunks/config-SPugeaHT.js +37 -0
  44. package/dist/chunks/config-SPugeaHT.js.map +1 -0
  45. package/dist/chunks/{en-CsQUoBS2.js → en-mIFywnV2.js} +22 -6
  46. package/dist/chunks/en-mIFywnV2.js.map +1 -0
  47. package/dist/chunks/{es-9nbkPvdA.js → es-CvthYwtB.js} +22 -6
  48. package/dist/chunks/es-CvthYwtB.js.map +1 -0
  49. package/dist/chunks/{es-DrUz5J6I.js → es-DlGd6Mrj.js} +3 -3
  50. package/dist/chunks/{es-DrUz5J6I.js.map → es-DlGd6Mrj.js.map} +1 -1
  51. package/dist/chunks/{generated-CxvC5O0V.js → generated-Cx4C7GRN.js} +84 -0
  52. package/dist/chunks/{generated-CxvC5O0V.js.map → generated-Cx4C7GRN.js.map} +1 -1
  53. package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js → grPopoverStyles-CncEkiPu.js} +1 -1
  54. package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js.map → grPopoverStyles-CncEkiPu.js.map} +1 -1
  55. package/dist/chunks/{grSelectStyles-D9EQ-pgK.js → grSelectStyles-Cam-IG9s.js} +3 -2
  56. package/dist/chunks/grSelectStyles-Cam-IG9s.js.map +1 -0
  57. package/dist/chunks/{grSliderStyles-kaz6VXZ3.js → grSliderStyles-CqzV0hll.js} +1 -1
  58. package/dist/chunks/grSliderStyles-CqzV0hll.js.map +1 -0
  59. package/dist/chunks/{config-CbEbLyDE.js → grSortableListStyles-CxieDmpe.js} +1 -27
  60. package/dist/chunks/grSortableListStyles-CxieDmpe.js.map +1 -0
  61. package/dist/chunks/grTableStyles-CPSxDTOW.js +66 -0
  62. package/dist/chunks/grTableStyles-CPSxDTOW.js.map +1 -0
  63. package/dist/chunks/{config-CMNfZO7S.js → grTabsStyles-DIz2VdIm.js} +1 -36
  64. package/dist/chunks/grTabsStyles-DIz2VdIm.js.map +1 -0
  65. package/dist/chunks/grTooltipStyles-CtbGEEGV.js +24 -0
  66. package/dist/chunks/grTooltipStyles-CtbGEEGV.js.map +1 -0
  67. package/dist/chunks/{granular-provider-B6xomapW.js → granular-provider-cv5vaM1a.js} +21 -19
  68. package/dist/chunks/granular-provider-cv5vaM1a.js.map +1 -0
  69. package/dist/chunks/hotkeySequence-BTHIM_5A.js +46 -0
  70. package/dist/chunks/hotkeySequence-BTHIM_5A.js.map +1 -0
  71. package/dist/chunks/{keyboard-DE2yhz_b.js → keyboard-BiFSgWLt.js} +70 -1
  72. package/dist/chunks/keyboard-BiFSgWLt.js.map +1 -0
  73. package/dist/chunks/optionPanel-DvY7Tv_4.js +182 -0
  74. package/dist/chunks/optionPanel-DvY7Tv_4.js.map +1 -0
  75. package/dist/chunks/overlayListPanel-D91jBCHU.js +21 -0
  76. package/dist/chunks/overlayListPanel-D91jBCHU.js.map +1 -0
  77. package/dist/chunks/{overlayStack-DH4Z7am1.js → overlayStack-DCkCgXZP.js} +1 -1
  78. package/dist/chunks/{overlayStack-DH4Z7am1.js.map → overlayStack-DCkCgXZP.js.map} +1 -1
  79. package/dist/chunks/{overlayPanelSurface-BKeMhRx4.js → overlayTransition-C0FDMx7Q.js} +24 -24
  80. package/dist/chunks/overlayTransition-C0FDMx7Q.js.map +1 -0
  81. package/dist/chunks/{ru-88i1WG0b.js → ru-CQKDR-kD.js} +22 -6
  82. package/dist/chunks/ru-CQKDR-kD.js.map +1 -0
  83. package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js → useMenuItemsFocus-C031blYS.js} +1 -1
  84. package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js.map → useMenuItemsFocus-C031blYS.js.map} +1 -1
  85. package/dist/chunks/{useModalOverlay-ACRkflzx.js → useModalOverlay-CKCQkGdB.js} +1 -1
  86. package/dist/chunks/{useModalOverlay-ACRkflzx.js.map → useModalOverlay-CKCQkGdB.js.map} +1 -1
  87. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-Chhw65pI.js → GrAutocomplete-Cyr1-ENw.js} +181 -123
  88. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Cyr1-ENw.js.map +1 -0
  89. package/dist/components/GrAutocomplete/index.js +2 -2
  90. package/dist/components/GrAutocomplete/styles.css +1 -1
  91. package/dist/components/GrCarousel/chunks/{GrCarousel-ByuughtI.js → GrCarousel-CBj-PEPB.js} +186 -37
  92. package/dist/components/GrCarousel/chunks/GrCarousel-CBj-PEPB.js.map +1 -0
  93. package/dist/components/GrCarousel/index.js +2 -2
  94. package/dist/components/GrCarousel/styles.css +1 -1
  95. package/dist/components/GrCheckbox/chunks/{GrCheckbox-Dp201frb.js → GrCheckbox-B4NJc7Ur.js} +2 -1
  96. package/dist/components/GrCheckbox/chunks/GrCheckbox-B4NJc7Ur.js.map +1 -0
  97. package/dist/components/GrCheckbox/index.js +1 -1
  98. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js → GrCheckboxGroup-qZHpNFCX.js} +1 -1
  99. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js.map → GrCheckboxGroup-qZHpNFCX.js.map} +1 -1
  100. package/dist/components/GrCheckboxGroup/index.js +1 -1
  101. package/dist/components/GrColorPicker/chunks/{GrColorPicker-BRM_4lyI.js → GrColorPicker-vGSgpUV9.js} +353 -38
  102. package/dist/components/GrColorPicker/chunks/GrColorPicker-vGSgpUV9.js.map +1 -0
  103. package/dist/components/GrColorPicker/index.js +2 -2
  104. package/dist/components/GrColorPicker/styles.css +1 -1
  105. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BJHmkDQv.js → GrCommandPalette-CAHgj0Aa.js} +23 -7
  106. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-CAHgj0Aa.js.map +1 -0
  107. package/dist/components/GrCommandPalette/index.js +1 -1
  108. package/dist/components/GrCommandPalette/styles.css +1 -1
  109. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js → GrConfirmDialog-dg021BMd.js} +1 -1
  110. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js.map → GrConfirmDialog-dg021BMd.js.map} +1 -1
  111. package/dist/components/GrConfirmDialog/index.js +1 -1
  112. package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js → GrContextMenu-bQ1Vvy2c.js} +3 -3
  113. package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js.map → GrContextMenu-bQ1Vvy2c.js.map} +1 -1
  114. package/dist/components/GrContextMenu/index.js +1 -1
  115. package/dist/components/GrDataTable/chunks/{GrDataTable-DQxYYgQk.js → GrDataTable-Bb2jWnRG.js} +576 -136
  116. package/dist/components/GrDataTable/chunks/GrDataTable-Bb2jWnRG.js.map +1 -0
  117. package/dist/components/GrDataTable/index.js +2 -2
  118. package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js → GrDelta-BSv1KdMy.js} +0 -0
  119. package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js.map → GrDelta-BSv1KdMy.js.map} +1 -1
  120. package/dist/components/GrDelta/index.js +2 -2
  121. package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js → GrDialog-C9Zu72jB.js} +1 -1
  122. package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js.map → GrDialog-C9Zu72jB.js.map} +1 -1
  123. package/dist/components/GrDialog/index.js +1 -1
  124. package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js → GrDialogService-DLBifO61.js} +2 -2
  125. package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js.map → GrDialogService-DLBifO61.js.map} +1 -1
  126. package/dist/components/GrDialogService/index.js +1 -1
  127. package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js → GrDrawer-DOcRTE8G.js} +1 -1
  128. package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js.map → GrDrawer-DOcRTE8G.js.map} +1 -1
  129. package/dist/components/GrDrawer/index.js +1 -1
  130. package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js → GrDropdown-kxwmgfSe.js} +2 -2
  131. package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js.map → GrDropdown-kxwmgfSe.js.map} +1 -1
  132. package/dist/components/GrDropdown/index.js +2 -2
  133. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-Dxkz_ry4.js → GrDropdownMenu--VoK3VY0.js} +3 -34
  134. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu--VoK3VY0.js.map +1 -0
  135. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js +34 -0
  136. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js.map +1 -0
  137. package/dist/components/GrDropdownMenu/index.js +2 -1
  138. package/dist/components/GrEmptyState/chunks/{GrEmptyState-BbvwE-E0.js → GrEmptyState-Bz6-_ED4.js} +42 -6
  139. package/dist/components/GrEmptyState/chunks/GrEmptyState-Bz6-_ED4.js.map +1 -0
  140. package/dist/components/GrEmptyState/index.js +1 -1
  141. package/dist/components/GrFileUpload/chunks/{GrFileUpload-BwMR71zN.js → GrFileUpload-Bgdfnkd8.js} +5 -2
  142. package/dist/components/GrFileUpload/chunks/GrFileUpload-Bgdfnkd8.js.map +1 -0
  143. package/dist/components/GrFileUpload/index.js +1 -1
  144. package/dist/components/GrFormFile/chunks/{GrFormFile-Dlxx-9zi.js → GrFormFile-Ctq1isz-.js} +78 -11
  145. package/dist/components/GrFormFile/chunks/GrFormFile-Ctq1isz-.js.map +1 -0
  146. package/dist/components/GrFormFile/index.js +2 -2
  147. package/dist/components/GrFormFile/styles.css +1 -1
  148. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js → GrImageViewer-Bnql_dNP.js} +1 -1
  149. package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js.map → GrImageViewer-Bnql_dNP.js.map} +1 -1
  150. package/dist/components/GrImageViewer/index.js +1 -1
  151. package/dist/components/GrInput/chunks/{GrInput-DV4gMWPR.js → GrInput-CoaFLpaU.js} +43 -22
  152. package/dist/components/GrInput/chunks/GrInput-CoaFLpaU.js.map +1 -0
  153. package/dist/components/GrInput/index.js +1 -1
  154. package/dist/components/GrInputTag/chunks/{GrInputTag-qnRdAZnn.js → GrInputTag-BzzNRBe3.js} +245 -18
  155. package/dist/components/GrInputTag/chunks/GrInputTag-BzzNRBe3.js.map +1 -0
  156. package/dist/components/GrInputTag/index.js +2 -2
  157. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js → GrJsonViewer-B6ZJ3GFH.js} +2 -2
  158. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js.map → GrJsonViewer-B6ZJ3GFH.js.map} +1 -1
  159. package/dist/components/GrJsonViewer/index.js +1 -1
  160. package/dist/components/GrKbd/chunks/{GrKbd-BNMeoaLV.js → GrKbd-D2rHDkQv.js} +42 -37
  161. package/dist/components/GrKbd/chunks/GrKbd-D2rHDkQv.js.map +1 -0
  162. package/dist/components/GrKbd/index.js +1 -1
  163. package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js → GrModal-SHb1U2qx.js} +1 -1
  164. package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js.map → GrModal-SHb1U2qx.js.map} +1 -1
  165. package/dist/components/GrModal/index.js +1 -1
  166. package/dist/components/GrNavbar/chunks/{GrNavbar-BRGuksiy.js → GrNavbar-IEIHC5Vt.js} +10 -4
  167. package/dist/components/GrNavbar/chunks/GrNavbar-IEIHC5Vt.js.map +1 -0
  168. package/dist/components/GrNavbar/index.js +2 -2
  169. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js → GrNumberInput-CmnUDaKi.js} +2 -22
  170. package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js.map → GrNumberInput-CmnUDaKi.js.map} +1 -1
  171. package/dist/components/GrNumberInput/index.js +1 -1
  172. package/dist/components/GrPagination/chunks/{GrPagination-CMrLPzvL.js → GrPagination-AMbn5D8I.js} +1 -1
  173. package/dist/components/GrPagination/chunks/{GrPagination-CMrLPzvL.js.map → GrPagination-AMbn5D8I.js.map} +1 -1
  174. package/dist/components/GrPagination/index.js +1 -1
  175. package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js → GrPopover-DjVxt8bf.js} +3 -3
  176. package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js.map → GrPopover-DjVxt8bf.js.map} +1 -1
  177. package/dist/components/GrPopover/index.js +2 -2
  178. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js → GrPromptDialog-BhbIZP1f.js} +3 -3
  179. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js.map → GrPromptDialog-BhbIZP1f.js.map} +1 -1
  180. package/dist/components/GrPromptDialog/index.js +1 -1
  181. package/dist/components/GrSelect/chunks/{GrSelect-DvSq-nV-.js → GrSelect-B-ykrHpL.js} +24 -180
  182. package/dist/components/GrSelect/chunks/GrSelect-B-ykrHpL.js.map +1 -0
  183. package/dist/components/GrSelect/index.js +2 -2
  184. package/dist/components/GrSelect/styles.css +1 -1
  185. package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js +543 -0
  186. package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js.map +1 -0
  187. package/dist/components/GrSidebar/index.js +2 -2
  188. package/dist/components/GrSlider/chunks/{GrSlider-CO8N9SF6.js → GrSlider-DF2Cq0rV.js} +29 -4
  189. package/dist/components/GrSlider/chunks/GrSlider-DF2Cq0rV.js.map +1 -0
  190. package/dist/components/GrSlider/index.js +2 -2
  191. package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js → GrSortableList-ChH9nQBv.js} +1 -1
  192. package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js.map → GrSortableList-ChH9nQBv.js.map} +1 -1
  193. package/dist/components/GrSortableList/index.js +2 -2
  194. package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js +30 -0
  195. package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js.map +1 -0
  196. package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js +83 -0
  197. package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js.map +1 -0
  198. package/dist/components/GrTabPanels/index.js +2 -1
  199. package/dist/components/GrTable/chunks/{GrTable-CKJ-HrsN.js → GrTable-BQitSDep.js} +52 -16
  200. package/dist/components/GrTable/chunks/GrTable-BQitSDep.js.map +1 -0
  201. package/dist/components/GrTable/index.js +2 -2
  202. package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js → GrTabs-DVC6nfWB.js} +1 -1
  203. package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js.map → GrTabs-DVC6nfWB.js.map} +1 -1
  204. package/dist/components/GrTabs/index.js +2 -2
  205. package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js +98 -0
  206. package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js.map +1 -0
  207. package/dist/components/GrTabsWithPanels/index.js +3 -0
  208. package/dist/components/GrTextarea/chunks/{GrTextarea-Bfgc0DD2.js → GrTextarea-BFwyqcHB.js} +22 -5
  209. package/dist/components/GrTextarea/chunks/GrTextarea-BFwyqcHB.js.map +1 -0
  210. package/dist/components/GrTextarea/index.js +1 -1
  211. package/dist/components/GrToaster/chunks/{GrToaster-CZixNk0l.js → GrToaster-OzT1VKcp.js} +163 -32
  212. package/dist/components/GrToaster/chunks/GrToaster-OzT1VKcp.js.map +1 -0
  213. package/dist/components/GrToaster/index.js +2 -2
  214. package/dist/components/GrToaster/styles.css +1 -1
  215. package/dist/components/GrTooltip/chunks/{GrTooltip-DkMMM0uq.js → GrTooltip-BDcFycvW.js} +26 -13
  216. package/dist/components/GrTooltip/chunks/GrTooltip-BDcFycvW.js.map +1 -0
  217. package/dist/components/GrTooltip/index.js +2 -2
  218. package/dist/components/GrTransfer/chunks/{GrTransfer-DdfBUf35.js → GrTransfer-CV7BL5UK.js} +114 -12
  219. package/dist/components/GrTransfer/chunks/GrTransfer-CV7BL5UK.js.map +1 -0
  220. package/dist/components/GrTransfer/index.js +1 -1
  221. package/dist/components/GrTransfer/styles.css +1 -1
  222. package/dist/components/GrTree/chunks/{GrTree-6yZrncJE.js → GrTree-DpgaP8hk.js} +39 -1
  223. package/dist/components/GrTree/chunks/GrTree-DpgaP8hk.js.map +1 -0
  224. package/dist/components/GrTree/index.js +1 -1
  225. package/dist/components/GrTree/styles.css +1 -1
  226. package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js → GrTreeSections-BeOj__44.js} +1 -1
  227. package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js.map → GrTreeSections-BeOj__44.js.map} +1 -1
  228. package/dist/components/GrTreeSections/index.js +1 -1
  229. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B6KoDYiZ.js → GrTreeSelect-BHq-T8wH.js} +113 -14
  230. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-BHq-T8wH.js.map +1 -0
  231. package/dist/components/GrTreeSelect/index.js +2 -2
  232. package/dist/composables/useFloating.js +1 -1
  233. package/dist/composables/useHotkeys.js +89 -0
  234. package/dist/composables/useHotkeys.js.map +1 -0
  235. package/dist/composables/useOverlayLayer.js +1 -1
  236. package/dist/directives/hotkey.js +19 -46
  237. package/dist/directives/hotkey.js.map +1 -1
  238. package/dist/granular-provider-node.js +1 -1
  239. package/dist/granular-provider.js +1 -1
  240. package/dist/i18n/all.js +1 -1
  241. package/dist/i18n/index.js +1 -1
  242. package/dist/index.js +71 -63
  243. package/dist/theme.js +1 -1
  244. package/dist/tokens.js +1 -1
  245. package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -4
  246. package/dist/types/components/GrAutocomplete/composables/useAutocompleteNavigation.d.ts +12 -3
  247. package/dist/types/components/GrAutocomplete/composables/useAutocompletePanel.d.ts +12 -2
  248. package/dist/types/components/GrAutocomplete/composables/useAutocompleteValues.d.ts +7 -4
  249. package/dist/types/components/GrAutocomplete/composables/useRemoteOptions.d.ts +4 -4
  250. package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +15 -1
  251. package/dist/types/components/GrAutocomplete/index.d.ts +1 -1
  252. package/dist/types/components/GrCarousel/GrCarousel.vue.d.ts +29 -1
  253. package/dist/types/components/GrCarousel/composables/useCarouselSwipe.d.ts +5 -0
  254. package/dist/types/components/GrCarousel/grCarouselContext.d.ts +21 -0
  255. package/dist/types/components/GrCarousel/grCarouselStyles.d.ts +39 -9
  256. package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +13 -0
  257. package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +18 -2
  258. package/dist/types/components/GrColorPicker/color.d.ts +13 -1
  259. package/dist/types/components/GrColorPicker/colorArea.d.ts +59 -0
  260. package/dist/types/components/GrColorPicker/defaults.d.ts +3 -1
  261. package/dist/types/components/GrColorPicker/eyeDropper.d.ts +21 -0
  262. package/dist/types/components/GrColorPicker/grColorPickerStyles.d.ts +42 -0
  263. package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +10 -1
  264. package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +41 -1
  265. package/dist/types/components/GrDataTable/composables/useDataTableGridNavigation.d.ts +53 -0
  266. package/dist/types/components/GrDataTable/grDataTableStyles.d.ts +8 -0
  267. package/dist/types/components/GrDataTable/index.d.ts +1 -1
  268. package/dist/types/components/GrDelta/grDeltaStyles.d.ts +10 -3
  269. package/dist/types/components/GrEmptyState/GrEmptyState.vue.d.ts +11 -2
  270. package/dist/types/components/GrEmptyState/grEmptyStateStyles.d.ts +10 -0
  271. package/dist/types/components/GrEmptyState/index.d.ts +1 -1
  272. package/dist/types/components/GrFileUpload/GrFileUpload.vue.d.ts +2 -1
  273. package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +10 -0
  274. package/dist/types/components/GrInput/GrInput.vue.d.ts +15 -0
  275. package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +16 -0
  276. package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +11 -0
  277. package/dist/types/components/GrKbd/GrKbd.vue.d.ts +14 -0
  278. package/dist/types/components/GrNavbar/GrNavbar.vue.d.ts +18 -0
  279. package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +10 -1
  280. package/dist/types/components/GrNavbar/index.d.ts +1 -0
  281. package/dist/types/components/GrSelect/composables/useSelectPanelItems.d.ts +8 -34
  282. package/dist/types/components/GrSelect/composables/useSelectVirtualization.d.ts +7 -0
  283. package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
  284. package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +20 -0
  285. package/dist/types/components/GrSidebar/GrSidebarItem.vue.d.ts +39 -5
  286. package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +32 -0
  287. package/dist/types/components/GrSidebar/index.d.ts +1 -1
  288. package/dist/types/components/GrSidebar/sidebarContext.d.ts +23 -1
  289. package/dist/types/components/GrSlider/GrSlider.vue.d.ts +39 -1
  290. package/dist/types/components/GrSlider/grSliderStyles.d.ts +1 -1
  291. package/dist/types/components/GrTabPanels/context.d.ts +6 -0
  292. package/dist/types/components/GrTable/GrTable.vue.d.ts +37 -0
  293. package/dist/types/components/GrTable/grTableStyles.d.ts +16 -7
  294. package/dist/types/components/GrTabsWithPanels/GrTabsWithPanels.vue.d.ts +77 -0
  295. package/dist/types/components/GrTabsWithPanels/config.d.ts +1 -0
  296. package/dist/types/components/GrTabsWithPanels/index.d.ts +4 -0
  297. package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +19 -1
  298. package/dist/types/components/GrToaster/GrToaster.vue.d.ts +12 -0
  299. package/dist/types/components/GrToaster/grToasterStyles.d.ts +26 -0
  300. package/dist/types/components/GrTooltip/GrTooltip.vue.d.ts +22 -0
  301. package/dist/types/components/GrTransfer/GrTransfer.vue.d.ts +23 -0
  302. package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  303. package/dist/types/components/GrTreeSelect/grTreeSelectTypes.d.ts +20 -0
  304. package/dist/types/components/shared/hotkey.d.ts +8 -9
  305. package/dist/types/components/shared/optionPanel.d.ts +100 -0
  306. package/dist/types/components/shared/overlayListPanel.d.ts +18 -0
  307. package/dist/types/composables/useHotkeys.d.ts +43 -0
  308. package/dist/types/granular-provider/shared.d.ts +1 -0
  309. package/dist/types/i18n/messages/en.d.ts +28 -0
  310. package/dist/types/i18n/messages/es.d.ts +28 -0
  311. package/dist/types/i18n/messages/ru.d.ts +28 -0
  312. package/dist/types/index.d.ts +3 -0
  313. package/dist/types/internal/hotkeySequence.d.ts +22 -0
  314. package/dist/types/internal/keyboard.d.ts +45 -0
  315. package/dist/web-types.json +463 -26
  316. package/package.json +9 -1
  317. package/dist/chunks/config-2ZHRsdOc.js.map +0 -1
  318. package/dist/chunks/config-B42iJ48O.js.map +0 -1
  319. package/dist/chunks/config-B5SBUa6u.js.map +0 -1
  320. package/dist/chunks/config-BAse0laT.js.map +0 -1
  321. package/dist/chunks/config-BHLMTJaR.js.map +0 -1
  322. package/dist/chunks/config-BXRmsn3t.js.map +0 -1
  323. package/dist/chunks/config-Bs1HwUcx.js.map +0 -1
  324. package/dist/chunks/config-CMNfZO7S.js.map +0 -1
  325. package/dist/chunks/config-CbEbLyDE.js.map +0 -1
  326. package/dist/chunks/config-CjWOTgLL.js.map +0 -1
  327. package/dist/chunks/config-D3HOuHDe.js.map +0 -1
  328. package/dist/chunks/config-DIDz_E5m.js.map +0 -1
  329. package/dist/chunks/config-DNDgp9bB.js.map +0 -1
  330. package/dist/chunks/config-iemgzS4x.js.map +0 -1
  331. package/dist/chunks/en-CsQUoBS2.js.map +0 -1
  332. package/dist/chunks/es-9nbkPvdA.js.map +0 -1
  333. package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +0 -1
  334. package/dist/chunks/grSliderStyles-kaz6VXZ3.js.map +0 -1
  335. package/dist/chunks/grTableStyles-DkQPMfx9.js +0 -39
  336. package/dist/chunks/grTableStyles-DkQPMfx9.js.map +0 -1
  337. package/dist/chunks/granular-provider-B6xomapW.js.map +0 -1
  338. package/dist/chunks/keyboard-DE2yhz_b.js.map +0 -1
  339. package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +0 -1
  340. package/dist/chunks/ru-88i1WG0b.js.map +0 -1
  341. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Chhw65pI.js.map +0 -1
  342. package/dist/components/GrCarousel/chunks/GrCarousel-ByuughtI.js.map +0 -1
  343. package/dist/components/GrCheckbox/chunks/GrCheckbox-Dp201frb.js.map +0 -1
  344. package/dist/components/GrColorPicker/chunks/GrColorPicker-BRM_4lyI.js.map +0 -1
  345. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BJHmkDQv.js.map +0 -1
  346. package/dist/components/GrDataTable/chunks/GrDataTable-DQxYYgQk.js.map +0 -1
  347. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-Dxkz_ry4.js.map +0 -1
  348. package/dist/components/GrEmptyState/chunks/GrEmptyState-BbvwE-E0.js.map +0 -1
  349. package/dist/components/GrFileUpload/chunks/GrFileUpload-BwMR71zN.js.map +0 -1
  350. package/dist/components/GrFormFile/chunks/GrFormFile-Dlxx-9zi.js.map +0 -1
  351. package/dist/components/GrInput/chunks/GrInput-DV4gMWPR.js.map +0 -1
  352. package/dist/components/GrInputTag/chunks/GrInputTag-qnRdAZnn.js.map +0 -1
  353. package/dist/components/GrKbd/chunks/GrKbd-BNMeoaLV.js.map +0 -1
  354. package/dist/components/GrNavbar/chunks/GrNavbar-BRGuksiy.js.map +0 -1
  355. package/dist/components/GrSelect/chunks/GrSelect-DvSq-nV-.js.map +0 -1
  356. package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js +0 -264
  357. package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js.map +0 -1
  358. package/dist/components/GrSlider/chunks/GrSlider-CO8N9SF6.js.map +0 -1
  359. package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js +0 -92
  360. package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js.map +0 -1
  361. package/dist/components/GrTable/chunks/GrTable-CKJ-HrsN.js.map +0 -1
  362. package/dist/components/GrTextarea/chunks/GrTextarea-Bfgc0DD2.js.map +0 -1
  363. package/dist/components/GrToaster/chunks/GrToaster-CZixNk0l.js.map +0 -1
  364. package/dist/components/GrTooltip/chunks/GrTooltip-DkMMM0uq.js.map +0 -1
  365. package/dist/components/GrTransfer/chunks/GrTransfer-DdfBUf35.js.map +0 -1
  366. package/dist/components/GrTree/chunks/GrTree-6yZrncJE.js.map +0 -1
  367. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B6KoDYiZ.js.map +0 -1
  368. package/dist/types/components/GrAutocomplete/composables/useAutocompleteVirtual.d.ts +0 -33
@@ -2,13 +2,15 @@ import { i as useGrComponentProp } from "../../../chunks/context-CPMRfwVr.js";
2
2
  import { n as useGranularityTranslations } from "../../../chunks/granularityI18n-BC5zsj_d.js";
3
3
  import { t as useFocusWithin } from "../../../chunks/useFocusWithin-BwHE0rzm.js";
4
4
  import { useRovingFocus } from "../../../composables/useRovingFocus.js";
5
+ import { t as chevron_down_default } from "../../../chunks/chevron-down-CQS2OG_s.js";
5
6
  import { useAnnouncer } from "../../../composables/useAnnouncer.js";
6
7
  import { t as resolveScrollOverflow } from "../../../chunks/scrollOverflow-B_kEdcol.js";
7
8
  import { useDragGesture } from "../../../composables/useDragGesture.js";
8
- import { a as carouselSlideBase, c as carouselToggleClass, d as carouselViewportSwipeClass, f as grCarouselControlClass, i as carouselRootBase, l as carouselTrackBase, m as grCarouselIndicatorsClass, o as carouselThumbFallbackClass, p as grCarouselIndicatorClass, r as carouselIconClass, s as carouselThumbImageClass, u as carouselViewportBase } from "../../../chunks/config-BXRmsn3t.js";
9
+ import { _ as grCarouselControlClass, a as carouselRootBase, c as carouselThumbFallbackClass, d as carouselTrackAxis, f as carouselTrackBase, g as carouselViewportTouchAction, h as carouselViewportSwipeClass, i as carouselRootAxis, l as carouselThumbImageClass, m as carouselViewportBase, o as carouselSlideAxis, p as carouselViewportAxis, r as carouselIconClass, s as carouselSlideBase, u as carouselToggleClass, v as grCarouselIndicatorClass, y as grCarouselIndicatorsClass } from "../../../chunks/config-CPhcZzHi.js";
9
10
  import { t as chevron_left_default } from "../../../chunks/chevron-left-D8AUBAM7.js";
10
11
  import { t as chevron_right_default } from "../../../chunks/chevron-right-C6Z01h0X.js";
11
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, markRaw, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, provide, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useId, useSlots, watch, watchEffect } from "vue";
12
+ import { t as chevron_up_default } from "../../../chunks/chevron-up-BhW6hi8L.js";
13
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, inject, markRaw, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, provide, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useId, useSlots, watch, watchEffect, withModifiers } from "vue";
12
14
  import '../styles.css';/**
13
15
  * Доля ширины вьюпорта, начиная с которой жест засчитывается. Работает вместе
14
16
  * с {@link SWIPE_THRESHOLD_PX} по максимуму: 60px на герое шириной 1200px —
@@ -178,8 +180,9 @@ function useCarouselSwipe(options) {
178
180
  },
179
181
  onMove: (event) => {
180
182
  event.preventDefault();
181
- const dx = event.clientX - startX;
182
- const dy = event.clientY - startY;
183
+ const vertical = options.orientation?.() === "vertical";
184
+ const dx = vertical ? event.clientY - startY : event.clientX - startX;
185
+ const dy = vertical ? event.clientX - startX : event.clientY - startY;
183
186
  if (Math.abs(dx) < Math.abs(dy) * 1.5) {
184
187
  offset.value = 0;
185
188
  return;
@@ -188,7 +191,7 @@ function useCarouselSwipe(options) {
188
191
  offset.value = resistOffset(dx, options.atEdge(logical));
189
192
  },
190
193
  onEnd: (event) => {
191
- const direction = event ? resolveSwipeDirection(event.clientX - startX, event.clientY - startY, threshold) : 0;
194
+ const direction = event ? resolveSwipeDirection(options.orientation?.() === "vertical" ? event.clientY - startY : event.clientX - startX, options.orientation?.() === "vertical" ? event.clientX - startX : event.clientY - startY, threshold) : 0;
192
195
  reset();
193
196
  if (direction !== 0) options.onSwipe(physicalToLogical(direction));
194
197
  },
@@ -269,15 +272,16 @@ var _hoisted_1$1 = [
269
272
  "aria-labelledby"
270
273
  ];
271
274
  var _hoisted_2 = ["aria-live"];
272
- var _hoisted_3 = ["aria-label"];
273
- var _hoisted_4 = ["aria-disabled", "aria-label"];
275
+ var _hoisted_3 = ["data-gr-carousel-vertical", "data-gr-carousel-wrapping"];
276
+ var _hoisted_4 = ["aria-label"];
274
277
  var _hoisted_5 = ["aria-disabled", "aria-label"];
275
- var _hoisted_6 = [
278
+ var _hoisted_6 = ["aria-disabled", "aria-label"];
279
+ var _hoisted_7 = [
276
280
  "data-variant",
277
281
  "data-overflow",
278
282
  "aria-label"
279
283
  ];
280
- var _hoisted_7 = [
284
+ var _hoisted_8 = [
281
285
  "id",
282
286
  "aria-selected",
283
287
  "aria-controls",
@@ -285,7 +289,8 @@ var _hoisted_7 = [
285
289
  "tabindex",
286
290
  "onClick"
287
291
  ];
288
- var _hoisted_8 = ["src"];
292
+ var _hoisted_9 = ["src"];
293
+ var WRAP_FALLBACK_MS = 600;
289
294
  //#endregion
290
295
  //#region src/components/GrCarousel/GrCarousel.vue
291
296
  var GrCarousel_default = /* @__PURE__ */ defineComponent({
@@ -301,6 +306,12 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
301
306
  type: Boolean,
302
307
  default: true
303
308
  },
309
+ orientation: { default: "horizontal" },
310
+ virtual: {
311
+ type: Boolean,
312
+ default: false
313
+ },
314
+ virtualOverscan: { default: 1 },
304
315
  indicators: { default: void 0 },
305
316
  tone: { default: void 0 },
306
317
  activationMode: { default: void 0 },
@@ -368,8 +379,93 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
368
379
  scheduleReorder();
369
380
  };
370
381
  }
382
+ /**
383
+ * Потолок ожидания конца перехода ленты. `--gr-duration-base` — 240ms; запас
384
+ * нужен на прерванный переход и на среду, где переходов нет вовсе.
385
+ */
371
386
  const internalIndex = ref(0);
372
387
  const currentIndex = computed(() => clampIndex(props.modelValue ?? internalIndex.value, total.value));
388
+ /**
389
+ * Замыкание кольца: `1` — идём с последнего кадра на первый, `-1` — обратно,
390
+ * `0` — обычный шаг.
391
+ *
392
+ * Раньше `loop` просто сбрасывал индекс, и лента **прокручивалась назад через
393
+ * все кадры**: на десятикадровой карусели с автопрокруткой каждый десятый шаг
394
+ * был длинным обратным ходом. Теперь крайний слайд временно переезжает на
395
+ * противоположный конец, лента доезжает до него как до соседа, и уже после
396
+ * перехода индекс снимается без анимации.
397
+ */
398
+ const wrapStep = ref(0);
399
+ /** Сама лента: по ней делается принудительная перерисовка при снятии кольца. */
400
+ const trackEl = ref(null);
401
+ /** На время снятия индекса переход выключается — иначе снятие само поедет. */
402
+ const suppressTransition = ref(false);
403
+ let wrapFallback;
404
+ /** Позиция ленты: при замыкании она уезжает на один кадр за край. */
405
+ const trackIndex = computed(() => {
406
+ if (wrapStep.value === 1) return total.value;
407
+ if (wrapStep.value === -1) return -1;
408
+ return currentIndex.value;
409
+ });
410
+ /**
411
+ * Смещение слайда, изображающего соседа за краем. Вперёд — первый кадр уезжает
412
+ * за последний, назад — последний встаёт перед первым.
413
+ */
414
+ function displacementOf(id) {
415
+ if (wrapStep.value === 0 || total.value < 2) return 0;
416
+ const index = entries.value.findIndex((entry) => entry.id === id);
417
+ if (wrapStep.value === 1) return index === 0 ? total.value * 100 : 0;
418
+ return index === total.value - 1 ? total.value * -100 : 0;
419
+ }
420
+ /**
421
+ * Попадает ли кадр в окно отрисовки. Окно замкнуто вместе с лентой: при `loop`
422
+ * соседи последнего кадра — первые, и не нарисовать их значит показать пустоту
423
+ * ровно в момент замыкания кольца.
424
+ */
425
+ function shouldRender(id) {
426
+ if (!props.virtual) return true;
427
+ const count = total.value;
428
+ if (count === 0) return true;
429
+ const index = entries.value.findIndex((entry) => entry.id === id);
430
+ if (index < 0) return true;
431
+ const overscan = Math.max(1, Math.trunc(props.virtualOverscan));
432
+ const distance = Math.abs(index - currentIndex.value);
433
+ return props.loop ? Math.min(distance, count - distance) <= overscan : distance <= overscan;
434
+ }
435
+ /**
436
+ * Конец замыкания: лента возвращается с позиции «за краем» на настоящий индекс.
437
+ *
438
+ * Модель здесь уже давно на новом кадре — её обновил `startWrap`. Отложи мы её
439
+ * до этого момента, `update:modelValue` опаздывал бы на длительность перехода,
440
+ * а там, где переходов нет вовсе, — на страховочный таймер.
441
+ */
442
+ function finishWrap() {
443
+ if (wrapStep.value === 0) return;
444
+ clearTimeout(wrapFallback);
445
+ wrapFallback = void 0;
446
+ suppressTransition.value = true;
447
+ wrapStep.value = 0;
448
+ nextTick().then(() => {
449
+ trackEl.value?.offsetHeight;
450
+ suppressTransition.value = false;
451
+ });
452
+ }
453
+ /**
454
+ * Замкнуть кольцо в сторону `direction`. Возвращает `false`, если шаг обычный
455
+ * и его надо выполнить как раньше.
456
+ */
457
+ function startWrap(direction) {
458
+ if (!props.loop || total.value < 2) return false;
459
+ const atLast = currentIndex.value === total.value - 1;
460
+ const atFirst = currentIndex.value === 0;
461
+ if (!(direction === 1 ? atLast : atFirst)) return false;
462
+ finishWrap();
463
+ wrapStep.value = direction;
464
+ setIndex(direction === 1 ? 0 : total.value - 1);
465
+ wrapFallback = setTimeout(finishWrap, WRAP_FALLBACK_MS);
466
+ return true;
467
+ }
468
+ onBeforeUnmount(() => clearTimeout(wrapFallback));
373
469
  function setIndex(next) {
374
470
  const value = clampIndex(next, total.value);
375
471
  if (value === currentIndex.value) return;
@@ -395,10 +491,11 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
395
491
  const swipeGesture = useCarouselSwipe({
396
492
  disabled: () => !props.swipe || total.value <= 1,
397
493
  viewport: () => viewportEl.value,
494
+ orientation: () => props.orientation,
398
495
  atEdge: (direction) => direction === 1 ? atEnd.value : atStart.value,
399
496
  onStart: stopAutoplay,
400
497
  onSwipe: (direction) => {
401
- commitUserNavigation(stepIndex(currentIndex.value, direction, total.value, props.loop));
498
+ stepBy(direction);
402
499
  }
403
500
  });
404
501
  const autoplayTimer = useCarouselAutoplay({
@@ -406,11 +503,13 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
406
503
  enabled: () => playing.value,
407
504
  paused: () => hovered.value || documentHidden.value || swipeGesture.isDragging.value,
408
505
  advance: () => {
506
+ if (startWrap(1)) return;
409
507
  const next = stepIndex(currentIndex.value, 1, total.value, props.loop);
410
508
  if (next === currentIndex.value) {
411
509
  userIntent.value = false;
412
510
  return;
413
511
  }
512
+ finishWrap();
414
513
  setIndex(next);
415
514
  }
416
515
  });
@@ -428,8 +527,29 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
428
527
  stopAutoplay();
429
528
  await nextTick();
430
529
  }
530
+ finishWrap();
431
531
  setIndex(next);
432
532
  }
533
+ /**
534
+ * Шаг на соседний кадр. На краю кольца замыкание идёт через смещение крайнего
535
+ * слайда, а не через сброс индекса: сброс прокручивал бы ленту назад через всё.
536
+ */
537
+ async function stepBy(delta) {
538
+ if (playing.value) {
539
+ stopAutoplay();
540
+ await nextTick();
541
+ }
542
+ if (startWrap(delta)) return;
543
+ finishWrap();
544
+ setIndex(stepIndex(currentIndex.value, delta, total.value, props.loop));
545
+ }
546
+ /**
547
+ * Переход ленты доехал — можно снимать замыкание. Слушаем только свой узел
548
+ * (`.self`): всплывший переход дочернего кадра снял бы кольцо раньше времени.
549
+ */
550
+ function onTrackTransitionEnd(event) {
551
+ if (event.propertyName === "transform") finishWrap();
552
+ }
433
553
  function toggleAutoplay() {
434
554
  if (playing.value) {
435
555
  stopAutoplay();
@@ -442,7 +562,7 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
442
562
  commitUserNavigation(clampIndex(index, total.value));
443
563
  }
444
564
  function step(delta) {
445
- commitUserNavigation(stepIndex(currentIndex.value, delta, total.value, props.loop));
565
+ stepBy(delta);
446
566
  }
447
567
  const roving = useRovingFocus({
448
568
  items: () => entries.value.map((_, index) => index),
@@ -554,7 +674,7 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
554
674
  }
555
675
  const trackStyle = computed(() => {
556
676
  const style = {
557
- "--gr-carousel-index": String(currentIndex.value),
677
+ "--gr-carousel-index": String(trackIndex.value),
558
678
  "--gr-carousel-drag": `${swipeGesture.offset.value}px`
559
679
  };
560
680
  if (swipeGesture.isDragging.value) style.transition = "none";
@@ -575,13 +695,22 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
575
695
  positionLabel: (id) => {
576
696
  const index = entries.value.findIndex((entry) => entry.id === id);
577
697
  return positionLabelAt(index >= 0 ? index : 0);
578
- }
579
- });
580
- if (process.env.NODE_ENV !== "production") watchEffect(() => {
581
- if (!props.ariaLabel && !props.ariaLabelledby) console.warn("[granularity] GrCarousel: у карусели нет доступного имени — передайте `ariaLabel` или `ariaLabelledby`. `aria-roledescription` именем не является.");
582
- if (!props.arrows && resolvedIndicators.value === "none" && total.value > 1) console.warn("[granularity] GrCarousel: `arrows: false` вместе с `indicators: \"none\"` не оставляет ни одного способа сменить кадр с клавиатуры.");
583
- if (isThumbnails.value && total.value > 0 && entries.value.every((entry) => !entry.hasThumbnail() && !entry.thumbnailSrc())) console.warn("[granularity] GrCarousel: `indicators=\"thumbnails\"`, но ни один слайд не дал миниатюру — задайте проп `thumbnail` или слот `#thumbnail` у `GrCarouselSlide`.");
698
+ },
699
+ displacementOf,
700
+ orientation: computed(() => props.orientation),
701
+ shouldRender
584
702
  });
703
+ if (process.env.NODE_ENV !== "production") {
704
+ onMounted(() => {
705
+ if (props.orientation !== "vertical") return;
706
+ if ((viewportEl.value?.clientHeight ?? 0) === 0) console.warn("[granularity] GrCarousel: у вертикальной ленты нулевая высота вьюпорта — шаг считается от неё. Задайте высоту классом или стилем, иначе кадры встанут столбцом.");
707
+ });
708
+ watchEffect(() => {
709
+ if (!props.ariaLabel && !props.ariaLabelledby) console.warn("[granularity] GrCarousel: у карусели нет доступного имени — передайте `ariaLabel` или `ariaLabelledby`. `aria-roledescription` именем не является.");
710
+ if (!props.arrows && resolvedIndicators.value === "none" && total.value > 1) console.warn("[granularity] GrCarousel: `arrows: false` вместе с `indicators: \"none\"` не оставляет ни одного способа сменить кадр с клавиатуры.");
711
+ if (isThumbnails.value && total.value > 0 && entries.value.every((entry) => !entry.hasThumbnail() && !entry.thumbnailSrc())) console.warn("[granularity] GrCarousel: `indicators=\"thumbnails\"`, но ни один слайд не дал миниатюру — задайте проп `thumbnail` или слот `#thumbnail` у `GrCarouselSlide`.");
712
+ });
713
+ }
585
714
  __expose({
586
715
  /** Текущий кадр — единственный способ прочитать позицию без `v-model`. */
587
716
  index: computed(() => currentIndex.value),
@@ -602,7 +731,7 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
602
731
  ref_key: "rootEl",
603
732
  ref: rootEl,
604
733
  "data-gr-carousel": "",
605
- class: normalizeClass(unref(carouselRootBase)),
734
+ class: normalizeClass([unref(carouselRootBase), unref(carouselRootAxis)[props.orientation]]),
606
735
  role: __props.landmark ? "region" : "group",
607
736
  "aria-roledescription": unref(t)("gr.carousel.roledescription", "carousel"),
608
737
  "aria-label": __props.ariaLabelledby ? void 0 : __props.ariaLabel,
@@ -615,16 +744,26 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
615
744
  ref_key: "viewportEl",
616
745
  ref: viewportEl,
617
746
  "data-gr-carousel-viewport": "",
618
- class: normalizeClass([unref(carouselViewportBase), props.swipe ? unref(carouselViewportSwipeClass) : ""]),
747
+ class: normalizeClass([
748
+ unref(carouselViewportBase),
749
+ unref(carouselViewportAxis)[props.orientation],
750
+ unref(carouselViewportTouchAction)[props.orientation],
751
+ props.swipe ? unref(carouselViewportSwipeClass) : ""
752
+ ]),
619
753
  "aria-live": liveMode.value,
620
754
  "aria-atomic": "true",
621
755
  onPointerdown: _cache[2] || (_cache[2] = (...args) => unref(swipeGesture).start && unref(swipeGesture).start(...args))
622
756
  }, [
623
757
  createElementVNode("div", {
758
+ ref_key: "trackEl",
759
+ ref: trackEl,
624
760
  "data-gr-carousel-track": "",
625
- class: normalizeClass(unref(carouselTrackBase)),
626
- style: normalizeStyle(trackStyle.value)
627
- }, [renderSlot(_ctx.$slots, "default")], 6),
761
+ "data-gr-carousel-vertical": props.orientation === "vertical" ? "" : void 0,
762
+ "data-gr-carousel-wrapping": suppressTransition.value ? "" : void 0,
763
+ class: normalizeClass([unref(carouselTrackBase), unref(carouselTrackAxis)[props.orientation]]),
764
+ style: normalizeStyle(trackStyle.value),
765
+ onTransitionend: withModifiers(onTrackTransitionEnd, ["self"])
766
+ }, [renderSlot(_ctx.$slots, "default")], 46, _hoisted_3),
628
767
  props.autoplay && total.value > 1 ? (openBlock(), createElementBlock("button", {
629
768
  key: 0,
630
769
  type: "button",
@@ -635,31 +774,31 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
635
774
  }, [(openBlock(), createBlock(resolveDynamicComponent(playing.value ? unref(pause_default) : unref(play_default)), {
636
775
  class: normalizeClass(unref(carouselIconClass)),
637
776
  "aria-hidden": "true"
638
- }, null, 8, ["class"]))], 10, _hoisted_3)) : createCommentVNode("", true),
777
+ }, null, 8, ["class"]))], 10, _hoisted_4)) : createCommentVNode("", true),
639
778
  showArrows.value ? (openBlock(), createElementBlock("button", {
640
779
  key: 1,
641
780
  type: "button",
642
781
  "data-gr-carousel-prev": "",
643
- class: normalizeClass(unref(grCarouselControlClass)("prev", atStart.value)),
782
+ class: normalizeClass(unref(grCarouselControlClass)("prev", atStart.value, props.orientation)),
644
783
  "aria-disabled": atStart.value ? "true" : void 0,
645
784
  "aria-label": __props.prevLabel ?? unref(t)("gr.carousel.previous", "Previous slide"),
646
785
  onClick: _cache[0] || (_cache[0] = ($event) => atStart.value ? void 0 : step(-1))
647
- }, [renderSlot(_ctx.$slots, "prev", { disabled: atStart.value }, () => [createVNode(unref(chevron_left_default), {
786
+ }, [renderSlot(_ctx.$slots, "prev", { disabled: atStart.value }, () => [(openBlock(), createBlock(resolveDynamicComponent(props.orientation === "vertical" ? unref(chevron_up_default) : unref(chevron_left_default)), {
648
787
  class: normalizeClass(unref(carouselIconClass)),
649
788
  "aria-hidden": "true"
650
- }, null, 8, ["class"])])], 10, _hoisted_4)) : createCommentVNode("", true),
789
+ }, null, 8, ["class"]))])], 10, _hoisted_5)) : createCommentVNode("", true),
651
790
  showArrows.value ? (openBlock(), createElementBlock("button", {
652
791
  key: 2,
653
792
  type: "button",
654
793
  "data-gr-carousel-next": "",
655
- class: normalizeClass(unref(grCarouselControlClass)("next", atEnd.value)),
794
+ class: normalizeClass(unref(grCarouselControlClass)("next", atEnd.value, props.orientation)),
656
795
  "aria-disabled": atEnd.value ? "true" : void 0,
657
796
  "aria-label": __props.nextLabel ?? unref(t)("gr.carousel.next", "Next slide"),
658
797
  onClick: _cache[1] || (_cache[1] = ($event) => atEnd.value ? void 0 : step(1))
659
- }, [renderSlot(_ctx.$slots, "next", { disabled: atEnd.value }, () => [createVNode(unref(chevron_right_default), {
798
+ }, [renderSlot(_ctx.$slots, "next", { disabled: atEnd.value }, () => [(openBlock(), createBlock(resolveDynamicComponent(props.orientation === "vertical" ? unref(chevron_down_default) : unref(chevron_right_default)), {
660
799
  class: normalizeClass(unref(carouselIconClass)),
661
800
  "aria-hidden": "true"
662
- }, null, 8, ["class"])])], 10, _hoisted_5)) : createCommentVNode("", true)
801
+ }, null, 8, ["class"]))])], 10, _hoisted_6)) : createCommentVNode("", true)
663
802
  ], 42, _hoisted_2), showIndicators.value ? (openBlock(), createElementBlock("div", {
664
803
  key: 0,
665
804
  ref_key: "indicatorsEl",
@@ -694,11 +833,11 @@ var GrCarousel_default = /* @__PURE__ */ defineComponent({
694
833
  loading: "lazy",
695
834
  decoding: "async",
696
835
  class: normalizeClass(unref(carouselThumbImageClass))
697
- }, null, 10, _hoisted_8)) : isThumbnails.value ? (openBlock(), createElementBlock("span", {
836
+ }, null, 10, _hoisted_9)) : isThumbnails.value ? (openBlock(), createElementBlock("span", {
698
837
  key: 2,
699
838
  class: normalizeClass(unref(carouselThumbFallbackClass))
700
- }, toDisplayString(index + 1), 3)) : createCommentVNode("", true)], 10, _hoisted_7);
701
- }), 128))], 42, _hoisted_6)) : createCommentVNode("", true)], 42, _hoisted_1$1);
839
+ }, toDisplayString(index + 1), 3)) : createCommentVNode("", true)], 10, _hoisted_8);
840
+ }), 128))], 42, _hoisted_7)) : createCommentVNode("", true)], 42, _hoisted_1$1);
702
841
  };
703
842
  }
704
843
  });
@@ -739,6 +878,15 @@ var GrCarouselSlide_default = /* @__PURE__ */ defineComponent({
739
878
  el: () => rootEl.value
740
879
  }));
741
880
  const isCurrent = computed(() => carousel.isCurrent(slideId));
881
+ const renders = computed(() => carousel.shouldRender(slideId));
882
+ /**
883
+ * Слайд не анимирует своё смещение намеренно: он обязан оказаться на новом
884
+ * месте **до** того, как поедет лента, иначе кадр гнался бы за ней.
885
+ */
886
+ const displacementStyle = computed(() => {
887
+ const percent = carousel.displacementOf(slideId);
888
+ return percent === 0 ? void 0 : { transform: `translateX(${percent}%)` };
889
+ });
742
890
  const labelledBy = computed(() => carousel.tabIdFor(slideId));
743
891
  const accessibleName = computed(() => props.label ?? carousel.positionLabel(slideId));
744
892
  return (_ctx, _cache) => {
@@ -747,13 +895,14 @@ var GrCarouselSlide_default = /* @__PURE__ */ defineComponent({
747
895
  ref_key: "rootEl",
748
896
  ref: rootEl,
749
897
  "data-gr-carousel-slide": "",
750
- class: normalizeClass(unref(carouselSlideBase)),
898
+ class: normalizeClass([unref(carouselSlideBase), unref(carouselSlideAxis)[unref(carousel).orientation.value]]),
751
899
  role: unref(carousel).slideRole.value,
752
900
  "aria-roledescription": unref(carousel).slideRoledescription.value,
753
901
  "aria-labelledby": labelledBy.value,
754
902
  "aria-label": labelledBy.value ? void 0 : accessibleName.value,
755
- inert: isCurrent.value ? void 0 : true
756
- }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1);
903
+ inert: isCurrent.value ? void 0 : true,
904
+ style: normalizeStyle(displacementStyle.value)
905
+ }, [renders.value ? renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 0) : createCommentVNode("", true)], 14, _hoisted_1);
757
906
  };
758
907
  }
759
908
  });