@feugene/granularity 0.13.0 → 0.18.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 (1266) hide show
  1. package/README.md +14 -1
  2. package/dist/chunks/adapter-CAOxmn2G.js.map +1 -1
  3. package/dist/chunks/check-BZI24Qs4.js +23 -0
  4. package/dist/chunks/check-BZI24Qs4.js.map +1 -0
  5. package/dist/chunks/chevron-down-CQS2OG_s.js +23 -0
  6. package/dist/chunks/chevron-down-CQS2OG_s.js.map +1 -0
  7. package/dist/chunks/chevron-right-BfqMVpbB.js +44 -0
  8. package/dist/chunks/chevron-right-BfqMVpbB.js.map +1 -0
  9. package/dist/chunks/config-06SQjBx0.js +96 -0
  10. package/dist/chunks/config-06SQjBx0.js.map +1 -0
  11. package/dist/chunks/config-A-bBiotF.js +12 -0
  12. package/dist/chunks/config-A-bBiotF.js.map +1 -0
  13. package/dist/chunks/config-B-iNaGdw.js +199 -0
  14. package/dist/chunks/config-B-iNaGdw.js.map +1 -0
  15. package/dist/chunks/config-B84z1aos.js +19 -0
  16. package/dist/chunks/config-B84z1aos.js.map +1 -0
  17. package/dist/chunks/config-BDfTXHo12.js +23 -0
  18. package/dist/chunks/config-BDfTXHo12.js.map +1 -0
  19. package/dist/chunks/config-BE6n20np2.js +27 -0
  20. package/dist/chunks/config-BE6n20np2.js.map +1 -0
  21. package/dist/chunks/config-BKvX0q10.js +89 -0
  22. package/dist/chunks/config-BKvX0q10.js.map +1 -0
  23. package/dist/chunks/config-BN4sXYXn.js +77 -0
  24. package/dist/chunks/config-BN4sXYXn.js.map +1 -0
  25. package/dist/chunks/config-BNu8lFQB.js.map +1 -1
  26. package/dist/chunks/config-BSyiFlbi.js +17 -0
  27. package/dist/chunks/config-BSyiFlbi.js.map +1 -0
  28. package/dist/chunks/config-BViooYNv.js +13 -0
  29. package/dist/chunks/config-BViooYNv.js.map +1 -0
  30. package/dist/chunks/config-Baj7Wvx-.js +72 -0
  31. package/dist/chunks/config-Baj7Wvx-.js.map +1 -0
  32. package/dist/chunks/config-BbY2SKGE.js +90 -0
  33. package/dist/chunks/config-BbY2SKGE.js.map +1 -0
  34. package/dist/chunks/config-BeZRuonp.js +54 -0
  35. package/dist/chunks/config-BeZRuonp.js.map +1 -0
  36. package/dist/chunks/config-BoNR7_PD2.js +140 -0
  37. package/dist/chunks/config-BoNR7_PD2.js.map +1 -0
  38. package/dist/chunks/config-Bpt9Xbxm.js +49 -0
  39. package/dist/chunks/config-Bpt9Xbxm.js.map +1 -0
  40. package/dist/chunks/config-BqFjr3tN.js +131 -0
  41. package/dist/chunks/config-BqFjr3tN.js.map +1 -0
  42. package/dist/chunks/config-BsPDQ0dS.js +97 -0
  43. package/dist/chunks/config-BsPDQ0dS.js.map +1 -0
  44. package/dist/chunks/config-BsuDM3Hb.js +55 -0
  45. package/dist/chunks/config-BsuDM3Hb.js.map +1 -0
  46. package/dist/chunks/config-BtXRpAtq.js +48 -0
  47. package/dist/chunks/config-BtXRpAtq.js.map +1 -0
  48. package/dist/chunks/config-BuGlNPE9.js +8 -0
  49. package/dist/chunks/config-BuGlNPE9.js.map +1 -0
  50. package/dist/chunks/config-C0Ea9ePP.js +15 -0
  51. package/dist/chunks/config-C0Ea9ePP.js.map +1 -0
  52. package/dist/chunks/config-CN2ULSQL.js +36 -0
  53. package/dist/chunks/config-CN2ULSQL.js.map +1 -0
  54. package/dist/chunks/config-CN970ZcJ.js +113 -0
  55. package/dist/chunks/config-CN970ZcJ.js.map +1 -0
  56. package/dist/chunks/config-COpuWGr_.js +72 -0
  57. package/dist/chunks/config-COpuWGr_.js.map +1 -0
  58. package/dist/chunks/config-COvrUfhR.js +83 -0
  59. package/dist/chunks/config-COvrUfhR.js.map +1 -0
  60. package/dist/chunks/config-CQzGyi1C.js +54 -0
  61. package/dist/chunks/config-CQzGyi1C.js.map +1 -0
  62. package/dist/chunks/config-CY0_6cMi.js +51 -0
  63. package/dist/chunks/config-CY0_6cMi.js.map +1 -0
  64. package/dist/chunks/config-CjXjhphs.js +12 -0
  65. package/dist/chunks/config-CjXjhphs.js.map +1 -0
  66. package/dist/chunks/config-CjnbevbD.js +13 -0
  67. package/dist/chunks/config-CjnbevbD.js.map +1 -0
  68. package/dist/chunks/config-Cl4ST6Qd.js +21 -0
  69. package/dist/chunks/config-Cl4ST6Qd.js.map +1 -0
  70. package/dist/chunks/config-Cp0DE0GH.js +12 -0
  71. package/dist/chunks/config-Cp0DE0GH.js.map +1 -0
  72. package/dist/chunks/config-Cwd3yjRw.js +41 -0
  73. package/dist/chunks/config-Cwd3yjRw.js.map +1 -0
  74. package/dist/chunks/config-D2aNP7Es.js +70 -0
  75. package/dist/chunks/config-D2aNP7Es.js.map +1 -0
  76. package/dist/chunks/config-D3_g2KIn.js +120 -0
  77. package/dist/chunks/config-D3_g2KIn.js.map +1 -0
  78. package/dist/chunks/config-D6W1rnlp.js +26 -0
  79. package/dist/chunks/config-D6W1rnlp.js.map +1 -0
  80. package/dist/chunks/config-D94Z9po5.js +126 -0
  81. package/dist/chunks/config-D94Z9po5.js.map +1 -0
  82. package/dist/chunks/config-DA6SnEoy.js +22 -0
  83. package/dist/chunks/config-DA6SnEoy.js.map +1 -0
  84. package/dist/chunks/config-DBmdgoVf.js.map +1 -1
  85. package/dist/chunks/config-DCFvmHEv2.js +76 -0
  86. package/dist/chunks/config-DCFvmHEv2.js.map +1 -0
  87. package/dist/chunks/config-DEvsMTQE.js +150 -0
  88. package/dist/chunks/config-DEvsMTQE.js.map +1 -0
  89. package/dist/chunks/config-DKdlqXiY.js +109 -0
  90. package/dist/chunks/config-DKdlqXiY.js.map +1 -0
  91. package/dist/chunks/config-DP7eseR1.js +92 -0
  92. package/dist/chunks/config-DP7eseR1.js.map +1 -0
  93. package/dist/chunks/config-DSJY6aEl.js +80 -0
  94. package/dist/chunks/config-DSJY6aEl.js.map +1 -0
  95. package/dist/chunks/config-DU2DNSRx2.js +116 -0
  96. package/dist/chunks/config-DU2DNSRx2.js.map +1 -0
  97. package/dist/chunks/config-DhHbU3zO.js +37 -0
  98. package/dist/chunks/config-DhHbU3zO.js.map +1 -0
  99. package/dist/chunks/config-DpeQchsV.js +21 -0
  100. package/dist/chunks/config-DpeQchsV.js.map +1 -0
  101. package/dist/chunks/config-DpqOnJiz2.js.map +1 -0
  102. package/dist/chunks/config-DvQIb4kb.js +98 -0
  103. package/dist/chunks/config-DvQIb4kb.js.map +1 -0
  104. package/dist/chunks/config-K0C2tcLB.js +84 -0
  105. package/dist/chunks/config-K0C2tcLB.js.map +1 -0
  106. package/dist/chunks/config-MRvhUl-O.js +81 -0
  107. package/dist/chunks/config-MRvhUl-O.js.map +1 -0
  108. package/dist/chunks/config-QaIc_gRa.js.map +1 -0
  109. package/dist/chunks/config-Rw9OyW70.js +87 -0
  110. package/dist/chunks/config-Rw9OyW70.js.map +1 -0
  111. package/dist/chunks/config-ScuvHw6k2.js +42 -0
  112. package/dist/chunks/config-ScuvHw6k2.js.map +1 -0
  113. package/dist/chunks/config-T3qdQBgU2.js +40 -0
  114. package/dist/chunks/config-T3qdQBgU2.js.map +1 -0
  115. package/dist/chunks/config-WTNhdh6T2.js +20 -0
  116. package/dist/chunks/config-WTNhdh6T2.js.map +1 -0
  117. package/dist/chunks/config-_qPUfb6-2.js +165 -0
  118. package/dist/chunks/config-_qPUfb6-2.js.map +1 -0
  119. package/dist/chunks/config-esdviAPL.js +41 -0
  120. package/dist/chunks/config-esdviAPL.js.map +1 -0
  121. package/dist/chunks/config-gvq_hWNM.js +103 -0
  122. package/dist/chunks/config-gvq_hWNM.js.map +1 -0
  123. package/dist/chunks/config-gwro_7yn.js +55 -0
  124. package/dist/chunks/config-gwro_7yn.js.map +1 -0
  125. package/dist/chunks/config-qVg3Zz_A.js +30 -0
  126. package/dist/chunks/config-qVg3Zz_A.js.map +1 -0
  127. package/dist/chunks/config-zjeAJ4ho.js +64 -0
  128. package/dist/chunks/config-zjeAJ4ho.js.map +1 -0
  129. package/dist/chunks/context-BSYR7RZs.js +152 -0
  130. package/dist/chunks/context-BSYR7RZs.js.map +1 -0
  131. package/dist/chunks/context-BfIQv7m1.js +18 -0
  132. package/dist/chunks/context-BfIQv7m1.js.map +1 -0
  133. package/dist/chunks/context-Bfrgsluh.js.map +1 -1
  134. package/dist/chunks/context-DdNIxa1w.js.map +1 -1
  135. package/dist/chunks/dialogShared-CxW62PQE.js.map +1 -1
  136. package/dist/chunks/en-COdzxgAX.js +352 -0
  137. package/dist/chunks/en-COdzxgAX.js.map +1 -0
  138. package/dist/chunks/es-ClqJ-4hr.js +354 -0
  139. package/dist/chunks/es-ClqJ-4hr.js.map +1 -0
  140. package/dist/chunks/es-DGMHwknJ.js +20 -0
  141. package/dist/chunks/es-DGMHwknJ.js.map +1 -0
  142. package/dist/chunks/fileValidation-D5TFBhbv.js +296 -0
  143. package/dist/chunks/fileValidation-D5TFBhbv.js.map +1 -0
  144. package/dist/chunks/focusables-BkzK42SQ.js +87 -0
  145. package/dist/chunks/focusables-BkzK42SQ.js.map +1 -0
  146. package/dist/chunks/grBadgeStyles-C2wLlkjF.js +61 -0
  147. package/dist/chunks/grBadgeStyles-C2wLlkjF.js.map +1 -0
  148. package/dist/chunks/grButtonStyles-B_-YRE__.js +221 -0
  149. package/dist/chunks/grButtonStyles-B_-YRE__.js.map +1 -0
  150. package/dist/chunks/grCheckboxStyles-hOAgURZG.js +82 -0
  151. package/dist/chunks/grCheckboxStyles-hOAgURZG.js.map +1 -0
  152. package/dist/chunks/grDropdownStyles-V7TRiCXn.js +24 -0
  153. package/dist/chunks/grDropdownStyles-V7TRiCXn.js.map +1 -0
  154. package/dist/chunks/grFormFieldStyles-BkeZHIw0.js +32 -0
  155. package/dist/chunks/grFormFieldStyles-BkeZHIw0.js.map +1 -0
  156. package/dist/chunks/grIconStyles-BwJrml2L.js +44 -0
  157. package/dist/chunks/grIconStyles-BwJrml2L.js.map +1 -0
  158. package/dist/chunks/grInputStyles-CJeMhUe5.js +66 -0
  159. package/dist/chunks/grInputStyles-CJeMhUe5.js.map +1 -0
  160. package/dist/chunks/grKbdStyles-CeZhGQHr.js +43 -0
  161. package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +1 -0
  162. package/dist/chunks/grLinkStyles-BoL8QYcV.js +84 -0
  163. package/dist/chunks/grLinkStyles-BoL8QYcV.js.map +1 -0
  164. package/dist/chunks/grLoadingStyles-DEmji2wv.js +30 -0
  165. package/dist/chunks/grLoadingStyles-DEmji2wv.js.map +1 -0
  166. package/dist/chunks/grModalStyles-EZfuEiw_.js +77 -0
  167. package/dist/chunks/grModalStyles-EZfuEiw_.js.map +1 -0
  168. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js +46 -0
  169. package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js.map +1 -0
  170. package/dist/chunks/grSelectStyles-eTz4uPMP.js +147 -0
  171. package/dist/chunks/grSelectStyles-eTz4uPMP.js.map +1 -0
  172. package/dist/chunks/grSliderStyles-B5uNxNJq.js +133 -0
  173. package/dist/chunks/grSliderStyles-B5uNxNJq.js.map +1 -0
  174. package/dist/chunks/grStyle-CrgLQKKf.js +46 -0
  175. package/dist/chunks/grStyle-CrgLQKKf.js.map +1 -0
  176. package/dist/chunks/grTableStyles-C-iaqQUN.js +26 -0
  177. package/dist/chunks/grTableStyles-C-iaqQUN.js.map +1 -0
  178. package/dist/chunks/grTextareaStyles-iOcHuVMM.js +50 -0
  179. package/dist/chunks/grTextareaStyles-iOcHuVMM.js.map +1 -0
  180. package/dist/chunks/granular-provider-B9nXQCMu.js +195 -0
  181. package/dist/chunks/granular-provider-B9nXQCMu.js.map +1 -0
  182. package/dist/chunks/granularityI18n-BC5zsj_d.js +68 -0
  183. package/dist/chunks/granularityI18n-BC5zsj_d.js.map +1 -0
  184. package/dist/chunks/inert-DIHCCn_1.js +78 -0
  185. package/dist/chunks/inert-DIHCCn_1.js.map +1 -0
  186. package/dist/chunks/keyboard-DE2yhz_b.js +70 -0
  187. package/dist/chunks/keyboard-DE2yhz_b.js.map +1 -0
  188. package/dist/chunks/loader-2-B1fdsdWW.js +23 -0
  189. package/dist/chunks/loader-2-B1fdsdWW.js.map +1 -0
  190. package/dist/chunks/minus-oxdbHF33.js +23 -0
  191. package/dist/chunks/minus-oxdbHF33.js.map +1 -0
  192. package/dist/chunks/optionFilter-DYw9XPPx.js +79 -0
  193. package/dist/chunks/optionFilter-DYw9XPPx.js.map +1 -0
  194. package/dist/chunks/overlayStack-C8cfsqXa.js +99 -0
  195. package/dist/chunks/overlayStack-C8cfsqXa.js.map +1 -0
  196. package/dist/chunks/portalRoot-CWD4zHBm.js +35 -0
  197. package/dist/chunks/portalRoot-CWD4zHBm.js.map +1 -0
  198. package/dist/chunks/ru-9z8ix45c.js +356 -0
  199. package/dist/chunks/ru-9z8ix45c.js.map +1 -0
  200. package/dist/chunks/safelist-CudBLyAD.js +26 -0
  201. package/dist/chunks/safelist-CudBLyAD.js.map +1 -0
  202. package/dist/chunks/slotNodes-DxNXpC7v.js +39 -0
  203. package/dist/chunks/slotNodes-DxNXpC7v.js.map +1 -0
  204. package/dist/chunks/useControlAddons-asUr10Pf.js +128 -0
  205. package/dist/chunks/useControlAddons-asUr10Pf.js.map +1 -0
  206. package/dist/chunks/useControlledOpen-DV3SqLTP.js +27 -0
  207. package/dist/chunks/useControlledOpen-DV3SqLTP.js.map +1 -0
  208. package/dist/chunks/useDragSort-0l47h4yb.js +265 -0
  209. package/dist/chunks/useDragSort-0l47h4yb.js.map +1 -0
  210. package/dist/chunks/useFilePreviews-DnwgdyBs.js +53 -0
  211. package/dist/chunks/useFilePreviews-DnwgdyBs.js.map +1 -0
  212. package/dist/chunks/useFocusWithin-BwHE0rzm.js +33 -0
  213. package/dist/chunks/useFocusWithin-BwHE0rzm.js.map +1 -0
  214. package/dist/chunks/useModalOverlay-BTq-0ImG.js +212 -0
  215. package/dist/chunks/useModalOverlay-BTq-0ImG.js.map +1 -0
  216. package/dist/chunks/usePortalTarget-RyzEgNTb.js +77 -0
  217. package/dist/chunks/usePortalTarget-RyzEgNTb.js.map +1 -0
  218. package/dist/chunks/validation-5HhpanPP.js +178 -0
  219. package/dist/chunks/validation-5HhpanPP.js.map +1 -0
  220. package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js +272 -0
  221. package/dist/components/GrAlert/chunks/GrAlert-BC1lplbY.js.map +1 -0
  222. package/dist/components/GrAlert/index.js +2 -2
  223. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CPEQxmLZ.js +852 -0
  224. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CPEQxmLZ.js.map +1 -0
  225. package/dist/components/GrAutocomplete/index.js +2 -2
  226. package/dist/components/GrAutocomplete/styles.css +1 -0
  227. package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js +222 -0
  228. package/dist/components/GrAvatar/chunks/GrAvatar-CVUujLmn.js.map +1 -0
  229. package/dist/components/GrAvatar/index.js +3 -3
  230. package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js +40 -0
  231. package/dist/components/GrBadge/chunks/GrBadge-B1tgqfGQ.js.map +1 -0
  232. package/dist/components/GrBadge/index.js +2 -2
  233. package/dist/components/GrBadge/styles.css +1 -0
  234. package/dist/components/GrBadge/themes/dark.css +19 -0
  235. package/dist/components/GrBadge/themes/light.css +18 -0
  236. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js +97 -0
  237. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C-E9betg.js.map +1 -0
  238. package/dist/components/GrBadgeWrap/index.js +3 -3
  239. package/dist/components/GrBadgeWrap/styles.css +1 -0
  240. package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js +117 -0
  241. package/dist/components/GrBottomNav/chunks/GrBottomNav-9GH7Dd9E.js.map +1 -0
  242. package/dist/components/GrBottomNav/index.js +3 -3
  243. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js +266 -0
  244. package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js.map +1 -0
  245. package/dist/components/GrBreadcrumbs/index.js +3 -0
  246. package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js +153 -0
  247. package/dist/components/GrButton/chunks/GrButton-D0m_z0XW.js.map +1 -0
  248. package/dist/components/GrButton/index.js +5 -5
  249. package/dist/components/GrButton/themes/dark.css +46 -0
  250. package/dist/components/GrButton/themes/light.css +82 -0
  251. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js +44 -0
  252. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -0
  253. package/dist/components/GrButtonGroup/index.js +3 -2
  254. package/dist/components/GrButtonGroup/styles.css +1 -0
  255. package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js +89 -0
  256. package/dist/components/GrCard/chunks/GrCard-DOrGHf2x.js.map +1 -0
  257. package/dist/components/GrCard/index.js +3 -3
  258. package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js +262 -0
  259. package/dist/components/GrCheckbox/chunks/GrCheckbox-BLOp8452.js.map +1 -0
  260. package/dist/components/GrCheckbox/index.js +3 -3
  261. package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js +140 -0
  262. package/dist/components/GrCheckboxGroup/chunks/GrCheckboxGroup-CXTx2Z5H.js.map +1 -0
  263. package/dist/components/GrCheckboxGroup/index.js +3 -0
  264. package/dist/components/GrCollapse/chunks/GrCollapse-B2Fc6A9r.js +308 -0
  265. package/dist/components/GrCollapse/chunks/GrCollapse-B2Fc6A9r.js.map +1 -0
  266. package/dist/components/GrCollapse/index.js +3 -3
  267. package/dist/components/GrColorPicker/chunks/GrColorPicker-DAdQ-Gc3.js +584 -0
  268. package/dist/components/GrColorPicker/chunks/GrColorPicker-DAdQ-Gc3.js.map +1 -0
  269. package/dist/components/GrColorPicker/index.js +3 -0
  270. package/dist/components/GrColorPicker/styles.css +1 -0
  271. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-DMeSqkEv.js +565 -0
  272. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-DMeSqkEv.js.map +1 -0
  273. package/dist/components/GrCommandPalette/index.js +2 -2
  274. package/dist/components/GrCommandPalette/styles.css +1 -0
  275. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js +144 -0
  276. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BA6JO7V6.js.map +1 -0
  277. package/dist/components/GrConfigProvider/index.js +3 -3
  278. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-hUTi-GdJ.js +200 -0
  279. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-hUTi-GdJ.js.map +1 -0
  280. package/dist/components/GrConfirmDialog/index.js +2 -2
  281. package/dist/components/GrDataTable/chunks/GrDataTable-DzaGLG3A.js +1053 -0
  282. package/dist/components/GrDataTable/chunks/GrDataTable-DzaGLG3A.js.map +1 -0
  283. package/dist/components/GrDataTable/index.js +3 -3
  284. package/dist/components/GrDialog/chunks/GrDialog-MD9Fzy9C.js +255 -0
  285. package/dist/components/GrDialog/chunks/GrDialog-MD9Fzy9C.js.map +1 -0
  286. package/dist/components/GrDialog/index.js +1 -1
  287. package/dist/components/GrDialogService/chunks/GrDialogService-DtgUijMj.js +656 -0
  288. package/dist/components/GrDialogService/chunks/GrDialogService-DtgUijMj.js.map +1 -0
  289. package/dist/components/GrDialogService/index.js +3 -3
  290. package/dist/components/GrDivider/chunks/GrDivider-B2Xwc_QO.js +109 -0
  291. package/dist/components/GrDivider/chunks/GrDivider-B2Xwc_QO.js.map +1 -0
  292. package/dist/components/GrDivider/index.js +3 -3
  293. package/dist/components/GrDrawer/chunks/GrDrawer-DWHdZZzW.js +251 -0
  294. package/dist/components/GrDrawer/chunks/GrDrawer-DWHdZZzW.js.map +1 -0
  295. package/dist/components/GrDrawer/index.js +2 -2
  296. package/dist/components/GrDropdown/chunks/GrDropdown-0tJK01Kq.js +300 -0
  297. package/dist/components/GrDropdown/chunks/GrDropdown-0tJK01Kq.js.map +1 -0
  298. package/dist/components/GrDropdown/index.js +2 -2
  299. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-VPPrpCoA.js +421 -0
  300. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-VPPrpCoA.js.map +1 -0
  301. package/dist/components/GrDropdownMenu/index.js +3 -3
  302. package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js +86 -0
  303. package/dist/components/GrEmptyState/chunks/GrEmptyState-W7Irx3vc.js.map +1 -0
  304. package/dist/components/GrEmptyState/index.js +3 -3
  305. package/dist/components/GrFileUpload/chunks/GrFileUpload-DuDzC43S.js +1080 -0
  306. package/dist/components/GrFileUpload/chunks/GrFileUpload-DuDzC43S.js.map +1 -0
  307. package/dist/components/GrFileUpload/index.js +4 -4
  308. package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js +326 -0
  309. package/dist/components/GrForm/chunks/GrForm-BCHCfIMv.js.map +1 -0
  310. package/dist/components/GrForm/index.js +3 -2
  311. package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js +190 -0
  312. package/dist/components/GrFormField/chunks/GrFormField-CL5rcgj6.js.map +1 -0
  313. package/dist/components/GrFormField/index.js +3 -3
  314. package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js +452 -0
  315. package/dist/components/GrFormFile/chunks/GrFormFile-BikSD7bg.js.map +1 -0
  316. package/dist/components/GrFormFile/index.js +3 -3
  317. package/dist/components/GrFormFile/styles.css +1 -0
  318. package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js +63 -0
  319. package/dist/components/GrFormSection/chunks/GrFormSection-BEh5n4jF.js.map +1 -0
  320. package/dist/components/GrFormSection/index.js +3 -3
  321. package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js +57 -0
  322. package/dist/components/GrIcon/chunks/GrIcon-BvA2ZGXP.js.map +1 -0
  323. package/dist/components/GrIcon/index.js +3 -3
  324. package/dist/components/GrIcon/styles.css +1 -0
  325. package/dist/components/GrImageViewer/chunks/GrImageViewer-DE7MBbF8.js +1127 -0
  326. package/dist/components/GrImageViewer/chunks/GrImageViewer-DE7MBbF8.js.map +1 -0
  327. package/dist/components/GrImageViewer/index.js +3 -3
  328. package/dist/components/GrImageViewer/themes/dark.css +17 -0
  329. package/dist/components/GrImageViewer/themes/light.css +16 -0
  330. package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js +348 -0
  331. package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js.map +1 -0
  332. package/dist/components/GrInput/index.js +2 -2
  333. package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js +512 -0
  334. package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js.map +1 -0
  335. package/dist/components/GrInputTag/index.js +2 -2
  336. package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js +358 -0
  337. package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js.map +1 -0
  338. package/dist/components/GrKbd/index.js +3 -3
  339. package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js +163 -0
  340. package/dist/components/GrLink/chunks/GrLink-D-cgUMXW.js.map +1 -0
  341. package/dist/components/GrLink/index.js +2 -2
  342. package/dist/components/GrList/chunks/GrList-4YU1NZtM.js +277 -0
  343. package/dist/components/GrList/chunks/GrList-4YU1NZtM.js.map +1 -0
  344. package/dist/components/GrList/index.js +3 -3
  345. package/dist/components/GrList/styles.css +1 -0
  346. package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js +101 -0
  347. package/dist/components/GrLoading/chunks/GrLoading-CH95CFzS.js.map +1 -0
  348. package/dist/components/GrLoading/index.js +2 -2
  349. package/dist/components/GrModal/chunks/GrModal-BbhcsDQ8.js +313 -0
  350. package/dist/components/GrModal/chunks/GrModal-BbhcsDQ8.js.map +1 -0
  351. package/dist/components/GrModal/index.js +3 -4
  352. package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js +104 -0
  353. package/dist/components/GrNavbar/chunks/GrNavbar-CF0KbM_6.js.map +1 -0
  354. package/dist/components/GrNavbar/index.js +3 -3
  355. package/dist/components/GrNumberInput/chunks/GrNumberInput-CZOyPz4J.js +658 -0
  356. package/dist/components/GrNumberInput/chunks/GrNumberInput-CZOyPz4J.js.map +1 -0
  357. package/dist/components/GrNumberInput/index.js +2 -2
  358. package/dist/components/GrPagination/chunks/GrPagination-waKhxBP7.js +283 -0
  359. package/dist/components/GrPagination/chunks/GrPagination-waKhxBP7.js.map +1 -0
  360. package/dist/components/GrPagination/index.js +3 -3
  361. package/dist/components/GrPopover/chunks/GrPopover-DuqeoFaI.js +216 -0
  362. package/dist/components/GrPopover/chunks/GrPopover-DuqeoFaI.js.map +1 -0
  363. package/dist/components/GrPopover/index.js +3 -0
  364. package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js +90 -0
  365. package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js.map +1 -0
  366. package/dist/components/GrProgressBar/index.js +2 -2
  367. package/dist/components/GrProgressBar/styles.css +1 -0
  368. package/dist/components/GrProgressBar/themes/dark.css +13 -0
  369. package/dist/components/GrProgressBar/themes/light.css +12 -0
  370. package/dist/components/GrProgressCircle/chunks/GrProgressCircle-B8olXRo5.js +210 -0
  371. package/dist/components/GrProgressCircle/chunks/GrProgressCircle-B8olXRo5.js.map +1 -0
  372. package/dist/components/GrProgressCircle/index.js +3 -0
  373. package/dist/components/GrProgressCircle/styles.css +1 -0
  374. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-JVVqBsPY.js +348 -0
  375. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-JVVqBsPY.js.map +1 -0
  376. package/dist/components/GrPromptDialog/index.js +2 -2
  377. package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js +253 -0
  378. package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js.map +1 -0
  379. package/dist/components/GrRadio/index.js +2 -2
  380. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js +196 -0
  381. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +1 -0
  382. package/dist/components/GrRadioGroup/index.js +2 -2
  383. package/dist/components/GrRating/chunks/GrRating-LarIiwJL.js +315 -0
  384. package/dist/components/GrRating/chunks/GrRating-LarIiwJL.js.map +1 -0
  385. package/dist/components/GrRating/index.js +2 -2
  386. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js +777 -0
  387. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C7W9mgYN.js.map +1 -0
  388. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js +224 -0
  389. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DhX4jjay.js.map +1 -0
  390. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  391. package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js +388 -0
  392. package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js.map +1 -0
  393. package/dist/components/GrSegmented/index.js +3 -3
  394. package/dist/components/GrSelect/chunks/GrSelect-DAdu044K.js +1373 -0
  395. package/dist/components/GrSelect/chunks/GrSelect-DAdu044K.js.map +1 -0
  396. package/dist/components/GrSelect/index.js +2 -2
  397. package/dist/components/GrSelect/styles.css +1 -0
  398. package/dist/components/GrSidebar/chunks/GrSidebar-DRGnnViw.js +257 -0
  399. package/dist/components/GrSidebar/chunks/GrSidebar-DRGnnViw.js.map +1 -0
  400. package/dist/components/GrSidebar/index.js +3 -3
  401. package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js +84 -0
  402. package/dist/components/GrSkeleton/chunks/GrSkeleton-DEvNE3bC.js.map +1 -0
  403. package/dist/components/GrSkeleton/index.js +2 -2
  404. package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js +379 -0
  405. package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js.map +1 -0
  406. package/dist/components/GrSlider/index.js +2 -2
  407. package/dist/components/GrSortableList/chunks/GrSortableList-BefVfWKh.js +276 -0
  408. package/dist/components/GrSortableList/chunks/GrSortableList-BefVfWKh.js.map +1 -0
  409. package/dist/components/GrSortableList/index.js +3 -0
  410. package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js +268 -0
  411. package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js.map +1 -0
  412. package/dist/components/GrSplitter/index.js +3 -0
  413. package/dist/components/GrSplitter/styles.css +1 -0
  414. package/dist/components/GrStatistic/chunks/GrStatistic-J4qLs3TH.js +319 -0
  415. package/dist/components/GrStatistic/chunks/GrStatistic-J4qLs3TH.js.map +1 -0
  416. package/dist/components/GrStatistic/index.js +2 -2
  417. package/dist/components/GrSwitch/chunks/GrSwitch-DpyvVrZG.js +183 -0
  418. package/dist/components/GrSwitch/chunks/GrSwitch-DpyvVrZG.js.map +1 -0
  419. package/dist/components/GrSwitch/index.js +2 -2
  420. package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js +81 -0
  421. package/dist/components/GrTabPanels/chunks/GrTabPanels-BVe1CZdJ.js.map +1 -0
  422. package/dist/components/GrTabPanels/index.js +1 -1
  423. package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js +169 -0
  424. package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js.map +1 -0
  425. package/dist/components/GrTable/index.js +3 -3
  426. package/dist/components/GrTabs/chunks/GrTabs-TeXaU5Uh.js +261 -0
  427. package/dist/components/GrTabs/chunks/GrTabs-TeXaU5Uh.js.map +1 -0
  428. package/dist/components/GrTabs/index.js +3 -3
  429. package/dist/components/GrTextarea/chunks/GrTextarea-DSvd1nSy.js +241 -0
  430. package/dist/components/GrTextarea/chunks/GrTextarea-DSvd1nSy.js.map +1 -0
  431. package/dist/components/GrTextarea/index.js +2 -2
  432. package/dist/components/GrTimeline/chunks/GrTimeline-B-h2Yanw.js +285 -0
  433. package/dist/components/GrTimeline/chunks/GrTimeline-B-h2Yanw.js.map +1 -0
  434. package/dist/components/GrTimeline/index.js +3 -0
  435. package/dist/components/GrTimeline/styles.css +1 -0
  436. package/dist/components/GrToaster/chunks/GrToaster-Ct-39hga.js +373 -0
  437. package/dist/components/GrToaster/chunks/GrToaster-Ct-39hga.js.map +1 -0
  438. package/dist/components/GrToaster/index.js +2 -2
  439. package/dist/components/GrToaster/styles.css +1 -0
  440. package/dist/components/GrTooltip/chunks/GrTooltip-xAcqs0bP.js +185 -0
  441. package/dist/components/GrTooltip/chunks/GrTooltip-xAcqs0bP.js.map +1 -0
  442. package/dist/components/GrTooltip/index.js +3 -3
  443. package/dist/components/GrTree/chunks/GrTree-CaYK8dGZ.js +1371 -0
  444. package/dist/components/GrTree/chunks/GrTree-CaYK8dGZ.js.map +1 -0
  445. package/dist/components/GrTree/index.js +2 -2
  446. package/dist/components/GrTree/styles.css +1 -0
  447. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DZp7CqqW.js +623 -0
  448. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DZp7CqqW.js.map +1 -0
  449. package/dist/components/GrTreeSelect/index.js +2 -2
  450. package/dist/composables/useAnnouncer.js +114 -0
  451. package/dist/composables/useAnnouncer.js.map +1 -0
  452. package/dist/composables/useComboboxNavigation.js +71 -0
  453. package/dist/composables/useComboboxNavigation.js.map +1 -0
  454. package/dist/composables/useDismissible.js +31 -0
  455. package/dist/composables/useDismissible.js.map +1 -0
  456. package/dist/composables/useDragGesture.js +55 -0
  457. package/dist/composables/useDragGesture.js.map +1 -0
  458. package/dist/composables/useDragSort.js +2 -0
  459. package/dist/composables/useFloating.js +133 -0
  460. package/dist/composables/useFloating.js.map +1 -0
  461. package/dist/composables/useFocusTrap.js +124 -0
  462. package/dist/composables/useFocusTrap.js.map +1 -0
  463. package/dist/composables/useGrComponentConfig.js +2 -0
  464. package/dist/composables/useGrFormControl.js +24 -0
  465. package/dist/composables/useGrFormControl.js.map +1 -0
  466. package/dist/composables/useGranularityTranslations.js +2 -0
  467. package/dist/composables/useOverlayLayer.js +65 -0
  468. package/dist/composables/useOverlayLayer.js.map +1 -0
  469. package/dist/composables/usePortalTarget.js +2 -0
  470. package/dist/composables/useRovingFocus.js +150 -0
  471. package/dist/composables/useRovingFocus.js.map +1 -0
  472. package/dist/composables/useTheme.js +106 -36
  473. package/dist/composables/useTheme.js.map +1 -1
  474. package/dist/composables/useToast.js +123 -7
  475. package/dist/composables/useToast.js.map +1 -1
  476. package/dist/composables/useVirtualList.js +244 -0
  477. package/dist/composables/useVirtualList.js.map +1 -0
  478. package/dist/directives/dropzone.js +1 -1
  479. package/dist/directives/hotkey.js +18 -18
  480. package/dist/directives/hotkey.js.map +1 -1
  481. package/dist/directives/loading.js +43 -7
  482. package/dist/directives/loading.js.map +1 -1
  483. package/dist/fileValidation/index.js +2 -2
  484. package/dist/granular-provider-node.js +1 -31
  485. package/dist/granular-provider.js +1 -4
  486. package/dist/i18n/all.js +1 -1
  487. package/dist/i18n/index.js +1 -1
  488. package/dist/index.js +157 -140
  489. package/dist/styles/base.css +32 -0
  490. package/dist/styles/preflight.css +33 -0
  491. package/dist/styles/themes/dark.css +81 -26
  492. package/dist/styles/themes/light.css +86 -15
  493. package/dist/styles/tokens.css +63 -4
  494. package/dist/tokens.js +3216 -0
  495. package/dist/tokens.js.map +1 -0
  496. package/dist/types/src/components/GrAlert/GrAlert.vue.d.ts +42 -10
  497. package/dist/types/src/components/GrAlert/config.d.ts +1 -1
  498. package/dist/types/src/components/GrAlert/defaults.d.ts +10 -4
  499. package/dist/types/src/components/GrAlert/grAlertStyles.d.ts +0 -7
  500. package/dist/types/src/components/GrAlert/index.d.ts +3 -2
  501. package/dist/types/src/components/GrAutocomplete/GrAutocomplete.vue.d.ts +112 -99
  502. package/dist/types/src/components/GrAutocomplete/config.d.ts +1 -1
  503. package/dist/types/src/components/GrAutocomplete/defaults.d.ts +1 -1
  504. package/dist/types/src/components/GrAutocomplete/grAutocompleteStyles.d.ts +43 -7
  505. package/dist/types/src/components/GrAutocomplete/index.d.ts +4 -0
  506. package/dist/types/src/components/GrAvatar/GrAvatar.vue.d.ts +40 -17
  507. package/dist/types/src/components/GrAvatar/GrAvatarGroup.vue.d.ts +70 -0
  508. package/dist/types/src/components/GrAvatar/avatarContext.d.ts +12 -0
  509. package/dist/types/src/components/GrAvatar/config.d.ts +1 -1
  510. package/dist/types/src/components/GrAvatar/defaults.d.ts +16 -0
  511. package/dist/types/src/components/GrAvatar/grAvatarStyles.d.ts +38 -0
  512. package/dist/types/src/components/GrAvatar/index.d.ts +5 -0
  513. package/dist/types/src/components/GrAvatar/safelist.d.ts +4 -0
  514. package/dist/types/src/components/GrBadge/GrBadge.vue.d.ts +4 -4
  515. package/dist/types/src/components/GrBadge/config.d.ts +1 -1
  516. package/dist/types/src/components/GrBadge/defaults.d.ts +1 -1
  517. package/dist/types/src/components/GrBadge/grBadgeStyles.d.ts +13 -1
  518. package/dist/types/src/components/GrBadge/index.d.ts +1 -0
  519. package/dist/types/src/components/GrBadgeWrap/GrBadgeWrap.vue.d.ts +42 -5
  520. package/dist/types/src/components/GrBadgeWrap/config.d.ts +1 -1
  521. package/dist/types/src/components/GrBadgeWrap/grBadgeWrapStyles.d.ts +46 -0
  522. package/dist/types/src/components/GrBadgeWrap/index.d.ts +4 -0
  523. package/dist/types/src/components/GrBadgeWrap/safelist.d.ts +1 -0
  524. package/dist/types/src/components/GrBottomNav/GrBottomNav.vue.d.ts +91 -4
  525. package/dist/types/src/components/GrBottomNav/config.d.ts +1 -1
  526. package/dist/types/src/components/GrBottomNav/defaults.d.ts +16 -0
  527. package/dist/types/src/components/GrBottomNav/grBottomNavStyles.d.ts +56 -0
  528. package/dist/types/src/components/GrBottomNav/index.d.ts +6 -1
  529. package/dist/types/src/components/GrBottomNav/safelist.d.ts +1 -0
  530. package/dist/types/src/components/GrBreadcrumbs/GrBreadcrumbs.vue.d.ts +117 -0
  531. package/dist/types/src/components/GrBreadcrumbs/config.d.ts +1 -0
  532. package/dist/types/src/components/GrBreadcrumbs/defaults.d.ts +15 -0
  533. package/dist/types/src/components/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +86 -0
  534. package/dist/types/src/components/GrBreadcrumbs/index.d.ts +8 -0
  535. package/dist/types/src/components/GrBreadcrumbs/safelist.d.ts +1 -0
  536. package/dist/types/src/components/GrButton/GrButton.vue.d.ts +31 -7
  537. package/dist/types/src/components/GrButton/config.d.ts +1 -1
  538. package/dist/types/src/components/GrButton/defaults.d.ts +1 -1
  539. package/dist/types/src/components/GrButton/grButtonStyles.d.ts +27 -3
  540. package/dist/types/src/components/GrButton/index.d.ts +5 -1
  541. package/dist/types/src/components/GrButton/safelist.d.ts +1 -0
  542. package/dist/types/src/components/GrButtonGroup/GrButtonGroup.vue.d.ts +32 -4
  543. package/dist/types/src/components/GrButtonGroup/config.d.ts +1 -1
  544. package/dist/types/src/components/GrButtonGroup/context.d.ts +20 -0
  545. package/dist/types/src/components/GrButtonGroup/index.d.ts +3 -0
  546. package/dist/types/src/components/GrCard/GrCard.vue.d.ts +80 -3
  547. package/dist/types/src/components/GrCard/config.d.ts +1 -1
  548. package/dist/types/src/components/GrCard/defaults.d.ts +15 -0
  549. package/dist/types/src/components/GrCard/grCardStyles.d.ts +24 -0
  550. package/dist/types/src/components/GrCard/index.d.ts +5 -0
  551. package/dist/types/src/components/GrCard/safelist.d.ts +1 -0
  552. package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +56 -10
  553. package/dist/types/src/components/GrCheckbox/config.d.ts +1 -1
  554. package/dist/types/src/components/GrCheckbox/defaults.d.ts +14 -0
  555. package/dist/types/src/components/GrCheckbox/grCheckboxGroupContext.d.ts +19 -0
  556. package/dist/types/src/components/GrCheckbox/grCheckboxStyles.d.ts +44 -0
  557. package/dist/types/src/components/GrCheckbox/index.d.ts +9 -0
  558. package/dist/types/src/components/GrCheckbox/safelist.d.ts +13 -0
  559. package/dist/types/src/components/GrCheckboxGroup/GrCheckboxGroup.vue.d.ts +105 -0
  560. package/dist/types/src/components/GrCheckboxGroup/config.d.ts +1 -0
  561. package/dist/types/src/components/GrCheckboxGroup/defaults.d.ts +14 -0
  562. package/dist/types/src/components/GrCheckboxGroup/index.d.ts +9 -0
  563. package/dist/types/src/components/GrCollapse/GrCollapse.vue.d.ts +55 -7
  564. package/dist/types/src/components/GrCollapse/GrCollapseItem.vue.d.ts +13 -3
  565. package/dist/types/src/components/GrCollapse/config.d.ts +1 -1
  566. package/dist/types/src/components/GrCollapse/defaults.d.ts +19 -0
  567. package/dist/types/src/components/GrCollapse/grCollapseContext.d.ts +20 -0
  568. package/dist/types/src/components/GrCollapse/grCollapseStyles.d.ts +42 -0
  569. package/dist/types/src/components/GrCollapse/index.d.ts +3 -0
  570. package/dist/types/src/components/GrCollapse/safelist.d.ts +15 -0
  571. package/dist/types/src/components/GrColorPicker/GrColorPicker.vue.d.ts +104 -0
  572. package/dist/types/src/components/GrColorPicker/color.d.ts +38 -0
  573. package/dist/types/src/components/GrColorPicker/config.d.ts +1 -0
  574. package/dist/types/src/components/GrColorPicker/defaults.d.ts +15 -0
  575. package/dist/types/src/components/GrColorPicker/grColorPickerStyles.d.ts +39 -0
  576. package/dist/types/src/components/GrColorPicker/index.d.ts +11 -0
  577. package/dist/types/src/components/GrColorPicker/safelist.d.ts +1 -0
  578. package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +45 -10
  579. package/dist/types/src/components/GrCommandPalette/config.d.ts +1 -1
  580. package/dist/types/src/components/GrCommandPalette/defaults.d.ts +14 -0
  581. package/dist/types/src/components/GrCommandPalette/filtering.d.ts +24 -0
  582. package/dist/types/src/components/GrCommandPalette/grCommandPaletteStyles.d.ts +33 -8
  583. package/dist/types/src/components/GrCommandPalette/index.d.ts +4 -0
  584. package/dist/types/src/components/GrConfigProvider/GrConfigProvider.vue.d.ts +38 -4
  585. package/dist/types/src/components/GrConfigProvider/config.d.ts +1 -1
  586. package/dist/types/src/components/GrConfigProvider/context.d.ts +33 -22
  587. package/dist/types/src/components/GrConfigProvider/index.d.ts +2 -1
  588. package/dist/types/src/components/GrConfigProvider/zIndexScale.d.ts +23 -0
  589. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +33 -4
  590. package/dist/types/src/components/GrConfirmDialog/config.d.ts +1 -1
  591. package/dist/types/src/components/GrConfirmDialog/defaults.d.ts +14 -0
  592. package/dist/types/src/components/GrConfirmDialog/index.d.ts +2 -1
  593. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +145 -27
  594. package/dist/types/src/components/GrDataTable/config.d.ts +1 -1
  595. package/dist/types/src/components/GrDataTable/defaults.d.ts +10 -0
  596. package/dist/types/src/components/GrDataTable/grDataTableSort.d.ts +25 -0
  597. package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +68 -0
  598. package/dist/types/src/components/GrDataTable/index.d.ts +10 -1
  599. package/dist/types/src/components/GrDataTable/safelist.d.ts +1 -0
  600. package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +51 -4
  601. package/dist/types/src/components/GrDialog/GrDialogCloseButton.vue.d.ts +3 -0
  602. package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +3 -0
  603. package/dist/types/src/components/GrDialog/config.d.ts +1 -1
  604. package/dist/types/src/components/GrDialog/defaults.d.ts +14 -0
  605. package/dist/types/src/components/GrDialog/dialogShared.d.ts +2 -1
  606. package/dist/types/src/components/GrDialog/index.d.ts +5 -0
  607. package/dist/types/src/components/GrDialogService/GrDialogServiceHost.vue.d.ts +18 -1
  608. package/dist/types/src/components/GrDialogService/GrDialogServiceItem.vue.d.ts +15 -0
  609. package/dist/types/src/components/GrDialogService/config.d.ts +1 -1
  610. package/dist/types/src/components/GrDialogService/index.d.ts +3 -1
  611. package/dist/types/src/components/GrDialogService/store.d.ts +78 -7
  612. package/dist/types/src/components/GrDialogService/types.d.ts +22 -1
  613. package/dist/types/src/components/GrDialogService/useDialogService.d.ts +31 -1
  614. package/dist/types/src/components/GrDivider/GrDivider.vue.d.ts +44 -9
  615. package/dist/types/src/components/GrDivider/config.d.ts +1 -1
  616. package/dist/types/src/components/GrDivider/defaults.d.ts +15 -0
  617. package/dist/types/src/components/GrDivider/grDividerStyles.d.ts +19 -0
  618. package/dist/types/src/components/GrDivider/index.d.ts +4 -1
  619. package/dist/types/src/components/GrDivider/safelist.d.ts +1 -0
  620. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +93 -17
  621. package/dist/types/src/components/GrDrawer/config.d.ts +1 -1
  622. package/dist/types/src/components/GrDrawer/defaults.d.ts +19 -0
  623. package/dist/types/src/components/GrDrawer/grDrawerStyles.d.ts +48 -2
  624. package/dist/types/src/components/GrDrawer/index.d.ts +6 -1
  625. package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +66 -13
  626. package/dist/types/src/components/GrDropdown/config.d.ts +1 -1
  627. package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +4 -5
  628. package/dist/types/src/components/GrDropdown/index.d.ts +5 -2
  629. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +79 -16
  630. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumn.vue.d.ts +2 -1
  631. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuColumns.vue.d.ts +3 -2
  632. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +2 -2
  633. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuHeader.vue.d.ts +3 -2
  634. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +51 -5
  635. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +5 -0
  636. package/dist/types/src/components/GrDropdownMenu/config.d.ts +1 -1
  637. package/dist/types/src/components/GrDropdownMenu/grDropdownMenuStyles.d.ts +33 -0
  638. package/dist/types/src/components/GrDropdownMenu/index.d.ts +6 -2
  639. package/dist/types/src/components/GrDropdownMenu/menuModel.d.ts +42 -0
  640. package/dist/types/src/components/GrDropdownMenu/safelist.d.ts +7 -0
  641. package/dist/types/src/components/GrEmptyState/GrEmptyState.vue.d.ts +33 -10
  642. package/dist/types/src/components/GrEmptyState/config.d.ts +1 -1
  643. package/dist/types/src/components/GrEmptyState/defaults.d.ts +16 -0
  644. package/dist/types/src/components/GrEmptyState/grEmptyStateStyles.d.ts +32 -0
  645. package/dist/types/src/components/GrEmptyState/index.d.ts +4 -0
  646. package/dist/types/src/components/GrEmptyState/safelist.d.ts +1 -0
  647. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +158 -148
  648. package/dist/types/src/components/GrFileUpload/config.d.ts +1 -1
  649. package/dist/types/src/components/GrFileUpload/defaults.d.ts +10 -0
  650. package/dist/types/src/components/GrFileUpload/fileEntry.d.ts +26 -0
  651. package/dist/types/src/components/GrFileUpload/grFileUploadStyles.d.ts +45 -0
  652. package/dist/types/src/components/GrFileUpload/index.d.ts +10 -1
  653. package/dist/types/src/components/GrFileUpload/maxFileSize.d.ts +2 -0
  654. package/dist/types/src/components/GrFileUpload/safelist.d.ts +1 -0
  655. package/dist/types/src/components/GrFileUpload/useDropZone.d.ts +24 -0
  656. package/dist/types/src/components/GrFileUpload/usePerFileUpload.d.ts +38 -0
  657. package/dist/types/src/components/GrFileUpload/useUploadState.d.ts +30 -0
  658. package/dist/types/src/components/GrForm/GrForm.vue.d.ts +38 -2
  659. package/dist/types/src/components/GrForm/config.d.ts +1 -1
  660. package/dist/types/src/components/GrForm/context.d.ts +22 -3
  661. package/dist/types/src/components/GrForm/fileRule.d.ts +43 -0
  662. package/dist/types/src/components/GrForm/index.d.ts +6 -2
  663. package/dist/types/src/components/GrForm/modelSnapshot.d.ts +17 -0
  664. package/dist/types/src/components/GrForm/validation.d.ts +16 -1
  665. package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +56 -10
  666. package/dist/types/src/components/GrFormField/config.d.ts +1 -1
  667. package/dist/types/src/components/GrFormField/context.d.ts +19 -0
  668. package/dist/types/src/components/GrFormField/defaults.d.ts +15 -0
  669. package/dist/types/src/components/GrFormField/grFormFieldStyles.d.ts +19 -0
  670. package/dist/types/src/components/GrFormField/index.d.ts +5 -1
  671. package/dist/types/src/components/GrFormField/safelist.d.ts +1 -0
  672. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +70 -16
  673. package/dist/types/src/components/GrFormFile/config.d.ts +1 -1
  674. package/dist/types/src/components/GrFormFile/defaults.d.ts +10 -0
  675. package/dist/types/src/components/GrFormFile/grFormFileStyles.d.ts +22 -0
  676. package/dist/types/src/components/GrFormFile/index.d.ts +7 -0
  677. package/dist/types/src/components/GrFormFile/safelist.d.ts +1 -0
  678. package/dist/types/src/components/GrFormSection/GrFormSection.vue.d.ts +34 -7
  679. package/dist/types/src/components/GrFormSection/config.d.ts +1 -1
  680. package/dist/types/src/components/GrFormSection/defaults.d.ts +14 -0
  681. package/dist/types/src/components/GrFormSection/grFormSectionStyles.d.ts +12 -0
  682. package/dist/types/src/components/GrFormSection/index.d.ts +4 -0
  683. package/dist/types/src/components/GrFormSection/safelist.d.ts +1 -0
  684. package/dist/types/src/components/GrIcon/GrIcon.vue.d.ts +40 -4
  685. package/dist/types/src/components/GrIcon/config.d.ts +1 -1
  686. package/dist/types/src/components/GrIcon/defaults.d.ts +14 -0
  687. package/dist/types/src/components/GrIcon/grIconStyles.d.ts +25 -0
  688. package/dist/types/src/components/GrIcon/index.d.ts +4 -0
  689. package/dist/types/src/components/GrIcon/safelist.d.ts +1 -0
  690. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +87 -16
  691. package/dist/types/src/components/GrImageViewer/composables/usePointerGestures.d.ts +37 -0
  692. package/dist/types/src/components/GrImageViewer/composables/useViewerKeyboard.d.ts +7 -4
  693. package/dist/types/src/components/GrImageViewer/composables/useWheelGesture.d.ts +3 -2
  694. package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +18 -5
  695. package/dist/types/src/components/GrImageViewer/config.d.ts +1 -1
  696. package/dist/types/src/components/GrImageViewer/grImageViewerStyles.d.ts +21 -0
  697. package/dist/types/src/components/GrImageViewer/index.d.ts +7 -0
  698. package/dist/types/src/components/GrImageViewer/safelist.d.ts +1 -0
  699. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +66 -21
  700. package/dist/types/src/components/GrInput/config.d.ts +1 -1
  701. package/dist/types/src/components/GrInput/defaults.d.ts +1 -1
  702. package/dist/types/src/components/GrInput/grInputStyles.d.ts +53 -7
  703. package/dist/types/src/components/GrInput/index.d.ts +5 -0
  704. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +97 -14
  705. package/dist/types/src/components/GrInputTag/config.d.ts +1 -1
  706. package/dist/types/src/components/GrInputTag/defaults.d.ts +17 -0
  707. package/dist/types/src/components/GrInputTag/grInputTagStyles.d.ts +24 -1
  708. package/dist/types/src/components/GrInputTag/index.d.ts +5 -0
  709. package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +46 -10
  710. package/dist/types/src/components/GrKbd/config.d.ts +1 -1
  711. package/dist/types/src/components/GrKbd/defaults.d.ts +14 -0
  712. package/dist/types/src/components/GrKbd/grKbdStyles.d.ts +32 -0
  713. package/dist/types/src/components/GrKbd/index.d.ts +10 -1
  714. package/dist/types/src/components/GrKbd/safelist.d.ts +1 -0
  715. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +23 -10
  716. package/dist/types/src/components/GrLink/config.d.ts +1 -1
  717. package/dist/types/src/components/GrLink/defaults.d.ts +14 -0
  718. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +11 -13
  719. package/dist/types/src/components/GrLink/index.d.ts +2 -0
  720. package/dist/types/src/components/GrList/GrList.vue.d.ts +57 -32
  721. package/dist/types/src/components/GrList/GrListItem.vue.d.ts +42 -9
  722. package/dist/types/src/components/GrList/config.d.ts +1 -1
  723. package/dist/types/src/components/GrList/grListStyles.d.ts +25 -0
  724. package/dist/types/src/components/GrList/index.d.ts +5 -0
  725. package/dist/types/src/components/GrList/safelist.d.ts +1 -0
  726. package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +59 -19
  727. package/dist/types/src/components/GrLoading/config.d.ts +1 -1
  728. package/dist/types/src/components/GrLoading/grLoadingStyles.d.ts +10 -2
  729. package/dist/types/src/components/GrLoading/index.d.ts +1 -0
  730. package/dist/types/src/components/GrModal/GrModal.vue.d.ts +58 -12
  731. package/dist/types/src/components/GrModal/config.d.ts +1 -1
  732. package/dist/types/src/components/GrModal/context.d.ts +37 -0
  733. package/dist/types/src/components/GrModal/defaults.d.ts +14 -0
  734. package/dist/types/src/components/GrModal/grModalStyles.d.ts +25 -10
  735. package/dist/types/src/components/GrModal/index.d.ts +6 -3
  736. package/dist/types/src/components/GrNavbar/GrNavbar.vue.d.ts +28 -9
  737. package/dist/types/src/components/GrNavbar/config.d.ts +1 -1
  738. package/dist/types/src/components/GrNavbar/grNavbarStyles.d.ts +23 -0
  739. package/dist/types/src/components/GrNavbar/index.d.ts +2 -0
  740. package/dist/types/src/components/GrNavbar/safelist.d.ts +1 -0
  741. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +64 -17
  742. package/dist/types/src/components/GrNumberInput/config.d.ts +1 -1
  743. package/dist/types/src/components/GrNumberInput/defaults.d.ts +2 -1
  744. package/dist/types/src/components/GrNumberInput/grNumberInputStyles.d.ts +20 -4
  745. package/dist/types/src/components/GrNumberInput/index.d.ts +4 -0
  746. package/dist/types/src/components/GrNumberInput/numberInputMath.d.ts +17 -0
  747. package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +47 -1
  748. package/dist/types/src/components/GrPagination/config.d.ts +1 -1
  749. package/dist/types/src/components/GrPagination/defaults.d.ts +10 -0
  750. package/dist/types/src/components/GrPagination/grPaginationStyles.d.ts +19 -0
  751. package/dist/types/src/components/GrPagination/index.d.ts +4 -0
  752. package/dist/types/src/components/GrPagination/safelist.d.ts +1 -0
  753. package/dist/types/src/components/GrPopover/GrPopover.vue.d.ts +161 -0
  754. package/dist/types/src/components/GrPopover/config.d.ts +1 -0
  755. package/dist/types/src/components/GrPopover/defaults.d.ts +15 -0
  756. package/dist/types/src/components/GrPopover/grPopoverStyles.d.ts +28 -0
  757. package/dist/types/src/components/GrPopover/index.d.ts +11 -0
  758. package/dist/types/src/components/GrPopover/safelist.d.ts +1 -0
  759. package/dist/types/src/components/GrProgressBar/GrProgressBar.vue.d.ts +37 -5
  760. package/dist/types/src/components/GrProgressBar/config.d.ts +1 -1
  761. package/dist/types/src/components/GrProgressBar/defaults.d.ts +11 -0
  762. package/dist/types/src/components/GrProgressBar/grStyle.d.ts +14 -0
  763. package/dist/types/src/components/GrProgressBar/index.d.ts +2 -1
  764. package/dist/types/src/components/GrProgressBar/safelist.d.ts +4 -0
  765. package/dist/types/src/components/GrProgressCircle/GrProgressCircle.vue.d.ts +103 -0
  766. package/dist/types/src/components/GrProgressCircle/config.d.ts +1 -0
  767. package/dist/types/src/components/GrProgressCircle/defaults.d.ts +18 -0
  768. package/dist/types/src/components/GrProgressCircle/geometry.d.ts +29 -0
  769. package/dist/types/src/components/GrProgressCircle/grProgressCircleStyles.d.ts +34 -0
  770. package/dist/types/src/components/GrProgressCircle/index.d.ts +11 -0
  771. package/dist/types/src/components/GrProgressCircle/safelist.d.ts +1 -0
  772. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +78 -10
  773. package/dist/types/src/components/GrPromptDialog/config.d.ts +1 -1
  774. package/dist/types/src/components/GrPromptDialog/defaults.d.ts +14 -0
  775. package/dist/types/src/components/GrPromptDialog/index.d.ts +1 -0
  776. package/dist/types/src/components/GrRadio/GrRadio.vue.d.ts +28 -9
  777. package/dist/types/src/components/GrRadio/config.d.ts +1 -1
  778. package/dist/types/src/components/GrRadio/defaults.d.ts +1 -1
  779. package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +45 -2
  780. package/dist/types/src/components/GrRadio/grRadioStyles.d.ts +49 -6
  781. package/dist/types/src/components/GrRadio/index.d.ts +1 -0
  782. package/dist/types/src/components/GrRadioGroup/GrRadioGroup.vue.d.ts +54 -10
  783. package/dist/types/src/components/GrRadioGroup/config.d.ts +1 -1
  784. package/dist/types/src/components/GrRadioGroup/defaults.d.ts +1 -1
  785. package/dist/types/src/components/GrRadioGroup/index.d.ts +4 -0
  786. package/dist/types/src/components/GrRating/GrRating.vue.d.ts +66 -17
  787. package/dist/types/src/components/GrRating/config.d.ts +1 -1
  788. package/dist/types/src/components/GrRating/defaults.d.ts +1 -1
  789. package/dist/types/src/components/GrRating/grRatingStyles.d.ts +4 -1
  790. package/dist/types/src/components/GrRating/index.d.ts +4 -0
  791. package/dist/types/src/components/GrResponseErrorBanner/GrFormErrorBanner.vue.d.ts +8 -4
  792. package/dist/types/src/components/GrResponseErrorBanner/GrResponseErrorBanner.vue.d.ts +8 -4
  793. package/dist/types/src/components/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +11 -4
  794. package/dist/types/src/components/GrResponseErrorBanner/config.d.ts +1 -1
  795. package/dist/types/src/components/GrResponseErrorBanner/index.d.ts +6 -0
  796. package/dist/types/src/components/GrResponseErrorBanner/parsers/httpStatusParser.d.ts +3 -1
  797. package/dist/types/src/components/GrResponseErrorBanner/parsers/plainMessageParser.d.ts +4 -1
  798. package/dist/types/src/components/GrResponseErrorBanner/responseError.types.d.ts +12 -2
  799. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +48 -9
  800. package/dist/types/src/components/GrSegmented/config.d.ts +1 -1
  801. package/dist/types/src/components/GrSegmented/defaults.d.ts +1 -1
  802. package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +31 -5
  803. package/dist/types/src/components/GrSegmented/index.d.ts +5 -1
  804. package/dist/types/src/components/GrSegmented/safelist.d.ts +3 -1
  805. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +138 -114
  806. package/dist/types/src/components/GrSelect/composables/useSelectNavigation.d.ts +52 -0
  807. package/dist/types/src/components/GrSelect/composables/useSelectPanelItems.d.ts +67 -0
  808. package/dist/types/src/components/GrSelect/composables/useSelectValues.d.ts +37 -0
  809. package/dist/types/src/components/GrSelect/composables/useSelectVirtualization.d.ts +27 -0
  810. package/dist/types/src/components/GrSelect/config.d.ts +1 -1
  811. package/dist/types/src/components/GrSelect/defaults.d.ts +1 -1
  812. package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +64 -9
  813. package/dist/types/src/components/GrSelect/index.d.ts +5 -1
  814. package/dist/types/src/components/GrSelect/selectValue.d.ts +20 -0
  815. package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +30 -5
  816. package/dist/types/src/components/GrSidebar/GrSidebarGroup.vue.d.ts +43 -0
  817. package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +4 -4
  818. package/dist/types/src/components/GrSidebar/config.d.ts +1 -1
  819. package/dist/types/src/components/GrSidebar/grSidebarStyles.d.ts +48 -0
  820. package/dist/types/src/components/GrSidebar/index.d.ts +6 -0
  821. package/dist/types/src/components/GrSidebar/safelist.d.ts +1 -0
  822. package/dist/types/src/components/GrSkeleton/GrSkeleton.vue.d.ts +22 -6
  823. package/dist/types/src/components/GrSkeleton/config.d.ts +1 -1
  824. package/dist/types/src/components/GrSkeleton/grSkeletonStyles.d.ts +9 -0
  825. package/dist/types/src/components/GrSkeleton/index.d.ts +1 -0
  826. package/dist/types/src/components/GrSlider/GrSlider.vue.d.ts +54 -4
  827. package/dist/types/src/components/GrSlider/config.d.ts +1 -1
  828. package/dist/types/src/components/GrSlider/defaults.d.ts +1 -1
  829. package/dist/types/src/components/GrSlider/grSliderStyles.d.ts +47 -8
  830. package/dist/types/src/components/GrSlider/index.d.ts +4 -0
  831. package/dist/types/src/components/GrSortableList/GrSortableList.vue.d.ts +68 -0
  832. package/dist/types/src/components/GrSortableList/config.d.ts +1 -0
  833. package/dist/types/src/components/GrSortableList/grSortableListStyles.d.ts +38 -0
  834. package/dist/types/src/components/GrSortableList/index.d.ts +9 -0
  835. package/dist/types/src/components/GrSortableList/safelist.d.ts +1 -0
  836. package/dist/types/src/components/GrSplitter/GrSplitter.vue.d.ts +121 -0
  837. package/dist/types/src/components/GrSplitter/config.d.ts +1 -0
  838. package/dist/types/src/components/GrSplitter/defaults.d.ts +16 -0
  839. package/dist/types/src/components/GrSplitter/grSplitterStyles.d.ts +9 -0
  840. package/dist/types/src/components/GrSplitter/index.d.ts +11 -0
  841. package/dist/types/src/components/GrSplitter/safelist.d.ts +1 -0
  842. package/dist/types/src/components/GrSplitter/splitterGeometry.d.ts +39 -0
  843. package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +65 -16
  844. package/dist/types/src/components/GrStatistic/config.d.ts +1 -1
  845. package/dist/types/src/components/GrStatistic/countUp.d.ts +17 -0
  846. package/dist/types/src/components/GrStatistic/defaults.d.ts +14 -0
  847. package/dist/types/src/components/GrStatistic/formatStatisticValue.d.ts +6 -2
  848. package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +14 -1
  849. package/dist/types/src/components/GrStatistic/index.d.ts +2 -1
  850. package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +68 -6
  851. package/dist/types/src/components/GrSwitch/config.d.ts +1 -1
  852. package/dist/types/src/components/GrSwitch/defaults.d.ts +1 -1
  853. package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +45 -4
  854. package/dist/types/src/components/GrSwitch/index.d.ts +5 -1
  855. package/dist/types/src/components/GrSwitch/safelist.d.ts +4 -1
  856. package/dist/types/src/components/GrTabPanels/GrTabPanel.vue.d.ts +12 -9
  857. package/dist/types/src/components/GrTabPanels/GrTabPanels.vue.d.ts +4 -14
  858. package/dist/types/src/components/GrTabPanels/config.d.ts +1 -1
  859. package/dist/types/src/components/GrTabPanels/context.d.ts +1 -1
  860. package/dist/types/src/components/GrTabPanels/index.d.ts +2 -0
  861. package/dist/types/src/components/GrTable/GrTable.vue.d.ts +98 -15
  862. package/dist/types/src/components/GrTable/config.d.ts +1 -1
  863. package/dist/types/src/components/GrTable/defaults.d.ts +10 -0
  864. package/dist/types/src/components/GrTable/grTableStyles.d.ts +20 -0
  865. package/dist/types/src/components/GrTable/index.d.ts +7 -1
  866. package/dist/types/src/components/GrTable/safelist.d.ts +1 -0
  867. package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +92 -6
  868. package/dist/types/src/components/GrTabs/config.d.ts +1 -1
  869. package/dist/types/src/components/GrTabs/defaults.d.ts +12 -0
  870. package/dist/types/src/components/GrTabs/grTabsStyles.d.ts +71 -0
  871. package/dist/types/src/components/GrTabs/index.d.ts +5 -0
  872. package/dist/types/src/components/GrTabs/safelist.d.ts +1 -0
  873. package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +89 -24
  874. package/dist/types/src/components/GrTextarea/config.d.ts +1 -1
  875. package/dist/types/src/components/GrTextarea/defaults.d.ts +18 -0
  876. package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +33 -1
  877. package/dist/types/src/components/GrTextarea/index.d.ts +6 -1
  878. package/dist/types/src/components/GrTimeline/GrTimeline.vue.d.ts +70 -0
  879. package/dist/types/src/components/GrTimeline/GrTimelineItem.vue.d.ts +84 -0
  880. package/dist/types/src/components/GrTimeline/config.d.ts +1 -0
  881. package/dist/types/src/components/GrTimeline/defaults.d.ts +19 -0
  882. package/dist/types/src/components/GrTimeline/grTimelineContext.d.ts +18 -0
  883. package/dist/types/src/components/GrTimeline/grTimelineStyles.d.ts +37 -0
  884. package/dist/types/src/components/GrTimeline/index.d.ts +12 -0
  885. package/dist/types/src/components/GrTimeline/safelist.d.ts +1 -0
  886. package/dist/types/src/components/GrTimeline/timelineGroups.d.ts +23 -0
  887. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +33 -1
  888. package/dist/types/src/components/GrToaster/config.d.ts +1 -1
  889. package/dist/types/src/components/GrToaster/grToasterStyles.d.ts +27 -0
  890. package/dist/types/src/components/GrToaster/index.d.ts +3 -0
  891. package/dist/types/src/components/GrTooltip/GrTooltip.vue.d.ts +57 -6
  892. package/dist/types/src/components/GrTooltip/config.d.ts +1 -1
  893. package/dist/types/src/components/GrTooltip/defaults.d.ts +10 -0
  894. package/dist/types/src/components/GrTooltip/grTooltipStyles.d.ts +8 -0
  895. package/dist/types/src/components/GrTooltip/index.d.ts +5 -1
  896. package/dist/types/src/components/GrTooltip/safelist.d.ts +1 -0
  897. package/dist/types/src/components/GrTree/GrTree.vue.d.ts +20 -7
  898. package/dist/types/src/components/GrTree/config.d.ts +1 -1
  899. package/dist/types/src/components/GrTree/defaults.d.ts +10 -0
  900. package/dist/types/src/components/GrTree/grTreeChecking.d.ts +31 -0
  901. package/dist/types/src/components/GrTree/grTreeDataAdapter.d.ts +2 -0
  902. package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +9 -1
  903. package/dist/types/src/components/GrTree/grTreeProps.d.ts +60 -11
  904. package/dist/types/src/components/GrTree/grTreeStore.d.ts +27 -1
  905. package/dist/types/src/components/GrTree/grTreeStyles.d.ts +22 -0
  906. package/dist/types/src/components/GrTree/grTreeTypes.d.ts +15 -0
  907. package/dist/types/src/components/GrTree/index.d.ts +5 -1
  908. package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +30 -9
  909. package/dist/types/src/components/GrTreeSelect/config.d.ts +1 -1
  910. package/dist/types/src/components/GrTreeSelect/defaults.d.ts +10 -0
  911. package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +29 -1
  912. package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +43 -0
  913. package/dist/types/src/components/GrTreeSelect/index.d.ts +5 -0
  914. package/dist/types/src/components/shared/hotkey.d.ts +38 -0
  915. package/dist/types/src/components/shared/hotkeyTokens.d.ts +37 -0
  916. package/dist/types/src/components/shared/instance.d.ts +15 -0
  917. package/dist/types/src/components/shared/optionFilter.d.ts +61 -0
  918. package/dist/types/src/components/shared/sizes.d.ts +30 -0
  919. package/dist/types/src/components/shared/slotNodes.d.ts +19 -0
  920. package/dist/types/src/composables/internal/dragSortGeometry.d.ts +59 -0
  921. package/dist/types/src/composables/internal/focusables.d.ts +30 -0
  922. package/dist/types/src/composables/internal/inert.d.ts +35 -0
  923. package/dist/types/src/composables/internal/overlayStack.d.ts +71 -0
  924. package/dist/types/src/composables/internal/portalRoot.d.ts +27 -0
  925. package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +1 -1
  926. package/dist/types/src/composables/internal/useControlAddons.d.ts +61 -0
  927. package/dist/types/src/composables/internal/useControlledOpen.d.ts +14 -0
  928. package/dist/types/src/composables/internal/useFilePreviews.d.ts +26 -0
  929. package/dist/types/src/composables/internal/useFocusWithin.d.ts +32 -0
  930. package/dist/types/src/composables/internal/useInertOthers.d.ts +9 -0
  931. package/dist/types/src/composables/internal/useModalOverlay.d.ts +95 -0
  932. package/dist/types/src/composables/internal/useOverlayPresence.d.ts +24 -0
  933. package/dist/types/src/composables/internal/useScrollLock.d.ts +10 -5
  934. package/dist/types/src/composables/internal/useTeleportEnabled.d.ts +35 -0
  935. package/dist/types/src/composables/useAnnouncer.d.ts +44 -0
  936. package/dist/types/src/composables/useComboboxNavigation.d.ts +51 -0
  937. package/dist/types/src/composables/useDismissible.d.ts +32 -0
  938. package/dist/types/src/composables/useDragGesture.d.ts +63 -0
  939. package/dist/types/src/composables/useDragSort.d.ts +80 -0
  940. package/dist/types/src/composables/useFloating.d.ts +57 -0
  941. package/dist/types/src/composables/useFocusTrap.d.ts +50 -0
  942. package/dist/types/src/composables/useGrComponentConfig.d.ts +41 -0
  943. package/dist/types/src/composables/useGrFormControl.d.ts +52 -0
  944. package/dist/types/src/composables/useGranularityTranslations.d.ts +13 -0
  945. package/dist/types/src/composables/useOverlayLayer.d.ts +67 -0
  946. package/dist/types/src/composables/usePortalTarget.d.ts +28 -0
  947. package/dist/types/src/composables/useRovingFocus.d.ts +108 -0
  948. package/dist/types/src/composables/useTheme.d.ts +48 -2
  949. package/dist/types/src/composables/useToast.d.ts +20 -11
  950. package/dist/types/src/composables/useVirtualList.d.ts +119 -0
  951. package/dist/types/src/directives/loading.d.ts +7 -1
  952. package/dist/types/src/fileValidation/i18n.d.ts +24 -0
  953. package/dist/types/src/fileValidation/index.d.ts +4 -2
  954. package/dist/types/src/fileValidation/maxCountValidator.d.ts +9 -0
  955. package/dist/types/src/fileValidation/maxFileSize.d.ts +16 -0
  956. package/dist/types/src/fileValidation/types.d.ts +8 -2
  957. package/dist/types/src/granular-provider/index.d.ts +1 -1
  958. package/dist/types/src/granular-provider/node.d.ts +2 -3
  959. package/dist/types/src/granular-provider/shared.d.ts +14 -18
  960. package/dist/types/src/i18n/adapter.d.ts +24 -0
  961. package/dist/types/src/i18n/messages/en.d.ts +334 -2
  962. package/dist/types/src/i18n/messages/es.d.ts +338 -2
  963. package/dist/types/src/i18n/messages/ru.d.ts +342 -2
  964. package/dist/types/src/index.d.ts +38 -3
  965. package/dist/types/src/internal/granularityFormat.d.ts +19 -0
  966. package/dist/types/src/internal/granularityI18n.d.ts +6 -0
  967. package/dist/types/src/internal/keyboard.d.ts +52 -0
  968. package/dist/types/src/tokens/generated.d.ts +6 -0
  969. package/dist/types/src/tokens/index.d.ts +13 -0
  970. package/dist/types/src/tokens/types.d.ts +54 -0
  971. package/dist/vue/index.js.map +1 -1
  972. package/dist/web-types.json +6503 -2020
  973. package/package.json +118 -17
  974. package/tokens/derived.json +142 -0
  975. package/tokens/foundation.json +558 -0
  976. package/tokens/themes/dark.json +499 -0
  977. package/tokens/themes/light.json +499 -0
  978. package/dist/GrBadge.css +0 -1
  979. package/dist/GrButtonGroup.css +0 -1
  980. package/dist/GrFormFile.css +0 -1
  981. package/dist/GrIcon.css +0 -1
  982. package/dist/GrLoading.css +0 -1
  983. package/dist/GrToaster.css +0 -1
  984. package/dist/GrTree.css +0 -1
  985. package/dist/chunks/config-23WtUiAL.js +0 -53
  986. package/dist/chunks/config-23WtUiAL.js.map +0 -1
  987. package/dist/chunks/config-B0i5r8kH.js +0 -23
  988. package/dist/chunks/config-B0i5r8kH.js.map +0 -1
  989. package/dist/chunks/config-B0qIpo8m.js +0 -5
  990. package/dist/chunks/config-B0qIpo8m.js.map +0 -1
  991. package/dist/chunks/config-B5Rknzkd.js +0 -100
  992. package/dist/chunks/config-B5Rknzkd.js.map +0 -1
  993. package/dist/chunks/config-BDSHekVC.js +0 -84
  994. package/dist/chunks/config-BDSHekVC.js.map +0 -1
  995. package/dist/chunks/config-BEegFP74.js +0 -5
  996. package/dist/chunks/config-BEegFP74.js.map +0 -1
  997. package/dist/chunks/config-BLHqZhy-.js +0 -5
  998. package/dist/chunks/config-BLHqZhy-.js.map +0 -1
  999. package/dist/chunks/config-BMKNHFMD2.js +0 -171
  1000. package/dist/chunks/config-BMKNHFMD2.js.map +0 -1
  1001. package/dist/chunks/config-BUHuGBik2.js +0 -13
  1002. package/dist/chunks/config-BUHuGBik2.js.map +0 -1
  1003. package/dist/chunks/config-BWGGp7uV.js +0 -8
  1004. package/dist/chunks/config-BWGGp7uV.js.map +0 -1
  1005. package/dist/chunks/config-BWiPnygb.js +0 -5
  1006. package/dist/chunks/config-BWiPnygb.js.map +0 -1
  1007. package/dist/chunks/config-BX1JTrkV.js +0 -14
  1008. package/dist/chunks/config-BX1JTrkV.js.map +0 -1
  1009. package/dist/chunks/config-BXtAmU3s.js +0 -8
  1010. package/dist/chunks/config-BXtAmU3s.js.map +0 -1
  1011. package/dist/chunks/config-BZFUM3Ky.js +0 -75
  1012. package/dist/chunks/config-BZFUM3Ky.js.map +0 -1
  1013. package/dist/chunks/config-Bah4oHwL.js +0 -8
  1014. package/dist/chunks/config-Bah4oHwL.js.map +0 -1
  1015. package/dist/chunks/config-BmNT0Fmx.js +0 -45
  1016. package/dist/chunks/config-BmNT0Fmx.js.map +0 -1
  1017. package/dist/chunks/config-BvVq2gbd.js +0 -13
  1018. package/dist/chunks/config-BvVq2gbd.js.map +0 -1
  1019. package/dist/chunks/config-C4hJxXDa.js +0 -58
  1020. package/dist/chunks/config-C4hJxXDa.js.map +0 -1
  1021. package/dist/chunks/config-C86UzUYf.js +0 -13
  1022. package/dist/chunks/config-C86UzUYf.js.map +0 -1
  1023. package/dist/chunks/config-C9AcVDkv.js +0 -5
  1024. package/dist/chunks/config-C9AcVDkv.js.map +0 -1
  1025. package/dist/chunks/config-CB4RVt9M.js +0 -66
  1026. package/dist/chunks/config-CB4RVt9M.js.map +0 -1
  1027. package/dist/chunks/config-CGHLoBlH2.js +0 -5
  1028. package/dist/chunks/config-CGHLoBlH2.js.map +0 -1
  1029. package/dist/chunks/config-COE_vZ-l.js +0 -52
  1030. package/dist/chunks/config-COE_vZ-l.js.map +0 -1
  1031. package/dist/chunks/config-CPdmr7tC.js +0 -39
  1032. package/dist/chunks/config-CPdmr7tC.js.map +0 -1
  1033. package/dist/chunks/config-CThzliFi.js +0 -5
  1034. package/dist/chunks/config-CThzliFi.js.map +0 -1
  1035. package/dist/chunks/config-Cb2PAlSD.js +0 -8
  1036. package/dist/chunks/config-Cb2PAlSD.js.map +0 -1
  1037. package/dist/chunks/config-D7GZO-Dx.js +0 -8
  1038. package/dist/chunks/config-D7GZO-Dx.js.map +0 -1
  1039. package/dist/chunks/config-DICOd-2X.js +0 -5
  1040. package/dist/chunks/config-DICOd-2X.js.map +0 -1
  1041. package/dist/chunks/config-DPDFYzIa.js +0 -40
  1042. package/dist/chunks/config-DPDFYzIa.js.map +0 -1
  1043. package/dist/chunks/config-DRKXJ9PW2.js +0 -22
  1044. package/dist/chunks/config-DRKXJ9PW2.js.map +0 -1
  1045. package/dist/chunks/config-DToHb81g.js +0 -45
  1046. package/dist/chunks/config-DToHb81g.js.map +0 -1
  1047. package/dist/chunks/config-D_myOZbA.js +0 -20
  1048. package/dist/chunks/config-D_myOZbA.js.map +0 -1
  1049. package/dist/chunks/config-Dg_6FTvJ.js +0 -35
  1050. package/dist/chunks/config-Dg_6FTvJ.js.map +0 -1
  1051. package/dist/chunks/config-Dlm49Jp5.js +0 -5
  1052. package/dist/chunks/config-Dlm49Jp5.js.map +0 -1
  1053. package/dist/chunks/config-DpqOnJiz.js.map +0 -1
  1054. package/dist/chunks/config-Dqy0rPPO2.js +0 -17
  1055. package/dist/chunks/config-Dqy0rPPO2.js.map +0 -1
  1056. package/dist/chunks/config-Dxuwwepq.js +0 -5
  1057. package/dist/chunks/config-Dxuwwepq.js.map +0 -1
  1058. package/dist/chunks/config-HZto2PVy.js +0 -5
  1059. package/dist/chunks/config-HZto2PVy.js.map +0 -1
  1060. package/dist/chunks/config-JOtB4mzs.js +0 -8
  1061. package/dist/chunks/config-JOtB4mzs.js.map +0 -1
  1062. package/dist/chunks/config-JpHA4Xx0.js +0 -8
  1063. package/dist/chunks/config-JpHA4Xx0.js.map +0 -1
  1064. package/dist/chunks/config-KXuionN3.js +0 -9
  1065. package/dist/chunks/config-KXuionN3.js.map +0 -1
  1066. package/dist/chunks/config-LGrZIdaZ.js +0 -21
  1067. package/dist/chunks/config-LGrZIdaZ.js.map +0 -1
  1068. package/dist/chunks/config-LqDC_rvp.js +0 -78
  1069. package/dist/chunks/config-LqDC_rvp.js.map +0 -1
  1070. package/dist/chunks/config-PFg39mYo.js +0 -5
  1071. package/dist/chunks/config-PFg39mYo.js.map +0 -1
  1072. package/dist/chunks/config-QYGvEBu5.js +0 -22
  1073. package/dist/chunks/config-QYGvEBu5.js.map +0 -1
  1074. package/dist/chunks/config-QaIc_gRa2.js.map +0 -1
  1075. package/dist/chunks/config-U4m9PSql2.js +0 -8
  1076. package/dist/chunks/config-U4m9PSql2.js.map +0 -1
  1077. package/dist/chunks/config-XmTv4pnI.js +0 -26
  1078. package/dist/chunks/config-XmTv4pnI.js.map +0 -1
  1079. package/dist/chunks/config-ZiXWIRBX.js +0 -8
  1080. package/dist/chunks/config-ZiXWIRBX.js.map +0 -1
  1081. package/dist/chunks/config-gZWR75Bh2.js +0 -44
  1082. package/dist/chunks/config-gZWR75Bh2.js.map +0 -1
  1083. package/dist/chunks/config-ipvU0lzP.js +0 -5
  1084. package/dist/chunks/config-ipvU0lzP.js.map +0 -1
  1085. package/dist/chunks/config-xR4XVmcy2.js +0 -8
  1086. package/dist/chunks/config-xR4XVmcy2.js.map +0 -1
  1087. package/dist/chunks/context-DfWYCBB-.js +0 -129
  1088. package/dist/chunks/context-DfWYCBB-.js.map +0 -1
  1089. package/dist/chunks/en-Cr6EkG8c.js +0 -186
  1090. package/dist/chunks/en-Cr6EkG8c.js.map +0 -1
  1091. package/dist/chunks/es-DuYb1Qju.js +0 -20
  1092. package/dist/chunks/es-DuYb1Qju.js.map +0 -1
  1093. package/dist/chunks/es-i08e9Sdo.js +0 -186
  1094. package/dist/chunks/es-i08e9Sdo.js.map +0 -1
  1095. package/dist/chunks/fileValidation-C3WFaWU2.js +0 -220
  1096. package/dist/chunks/fileValidation-C3WFaWU2.js.map +0 -1
  1097. package/dist/chunks/grBadgeStyles-D3dFjr_N.js +0 -50
  1098. package/dist/chunks/grBadgeStyles-D3dFjr_N.js.map +0 -1
  1099. package/dist/chunks/grButtonStyles-DRBgDmOp.js +0 -191
  1100. package/dist/chunks/grButtonStyles-DRBgDmOp.js.map +0 -1
  1101. package/dist/chunks/grDropdownStyles-HBPkghVr.js +0 -35
  1102. package/dist/chunks/grDropdownStyles-HBPkghVr.js.map +0 -1
  1103. package/dist/chunks/grLoadingStyles-R5sreH__.js +0 -17
  1104. package/dist/chunks/grLoadingStyles-R5sreH__.js.map +0 -1
  1105. package/dist/chunks/grModalEscStack-BXk-9mv7.js +0 -43
  1106. package/dist/chunks/grModalEscStack-BXk-9mv7.js.map +0 -1
  1107. package/dist/chunks/grModalStyles-D8-shx9A.js +0 -47
  1108. package/dist/chunks/grModalStyles-D8-shx9A.js.map +0 -1
  1109. package/dist/chunks/grSelectStyles-CwMUQrBZ.js +0 -97
  1110. package/dist/chunks/grSelectStyles-CwMUQrBZ.js.map +0 -1
  1111. package/dist/chunks/grStyle-CdvxTXPH.js +0 -19
  1112. package/dist/chunks/grStyle-CdvxTXPH.js.map +0 -1
  1113. package/dist/chunks/granularityI18n-SH0I--GW.js +0 -61
  1114. package/dist/chunks/granularityI18n-SH0I--GW.js.map +0 -1
  1115. package/dist/chunks/ru-B5XOOYZt.js +0 -186
  1116. package/dist/chunks/ru-B5XOOYZt.js.map +0 -1
  1117. package/dist/chunks/safelist-BvO8HPnE.js +0 -24
  1118. package/dist/chunks/safelist-BvO8HPnE.js.map +0 -1
  1119. package/dist/chunks/shared-D-v9lit0.js +0 -188
  1120. package/dist/chunks/shared-D-v9lit0.js.map +0 -1
  1121. package/dist/chunks/useAddonMeasurement-DM0akF4C.js +0 -65
  1122. package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +0 -1
  1123. package/dist/chunks/useEscapeToClose-C2t_S1gh.js +0 -27
  1124. package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +0 -1
  1125. package/dist/chunks/useFloating-DtM6TyE4.js +0 -1249
  1126. package/dist/chunks/useFloating-DtM6TyE4.js.map +0 -1
  1127. package/dist/chunks/useScrollLock-K7kaP2Ud.js +0 -1757
  1128. package/dist/chunks/useScrollLock-K7kaP2Ud.js.map +0 -1
  1129. package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js +0 -251
  1130. package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js.map +0 -1
  1131. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js +0 -499
  1132. package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js.map +0 -1
  1133. package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js +0 -41
  1134. package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js.map +0 -1
  1135. package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js +0 -40
  1136. package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js.map +0 -1
  1137. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js +0 -33
  1138. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js.map +0 -1
  1139. package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js +0 -31
  1140. package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js.map +0 -1
  1141. package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js +0 -128
  1142. package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js.map +0 -1
  1143. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js +0 -21
  1144. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +0 -1
  1145. package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js +0 -11
  1146. package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js.map +0 -1
  1147. package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js +0 -182
  1148. package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js.map +0 -1
  1149. package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js +0 -205
  1150. package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js.map +0 -1
  1151. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js +0 -410
  1152. package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js.map +0 -1
  1153. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js +0 -57
  1154. package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js.map +0 -1
  1155. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js +0 -160
  1156. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js.map +0 -1
  1157. package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js +0 -307
  1158. package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js.map +0 -1
  1159. package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js +0 -223
  1160. package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js.map +0 -1
  1161. package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js +0 -450
  1162. package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js.map +0 -1
  1163. package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js +0 -54
  1164. package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js.map +0 -1
  1165. package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js +0 -184
  1166. package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js.map +0 -1
  1167. package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js +0 -181
  1168. package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js.map +0 -1
  1169. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js +0 -309
  1170. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js.map +0 -1
  1171. package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js +0 -62
  1172. package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js.map +0 -1
  1173. package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js +0 -592
  1174. package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js.map +0 -1
  1175. package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js +0 -234
  1176. package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js.map +0 -1
  1177. package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js +0 -100
  1178. package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js.map +0 -1
  1179. package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js +0 -320
  1180. package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js.map +0 -1
  1181. package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js +0 -35
  1182. package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js.map +0 -1
  1183. package/dist/components/GrIcon/chunks/GrIcon-D9AWQLk2.js +0 -32
  1184. package/dist/components/GrIcon/chunks/GrIcon-D9AWQLk2.js.map +0 -1
  1185. package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js +0 -650
  1186. package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js.map +0 -1
  1187. package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js +0 -337
  1188. package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js.map +0 -1
  1189. package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js +0 -260
  1190. package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js.map +0 -1
  1191. package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js +0 -22
  1192. package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js.map +0 -1
  1193. package/dist/components/GrLink/chunks/GrLink-BP0YrnL9.js +0 -100
  1194. package/dist/components/GrLink/chunks/GrLink-BP0YrnL9.js.map +0 -1
  1195. package/dist/components/GrList/chunks/GrList-5RA-tZzE.js +0 -77
  1196. package/dist/components/GrList/chunks/GrList-5RA-tZzE.js.map +0 -1
  1197. package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js +0 -69
  1198. package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js.map +0 -1
  1199. package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js +0 -233
  1200. package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js.map +0 -1
  1201. package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js +0 -75
  1202. package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js.map +0 -1
  1203. package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js +0 -471
  1204. package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js.map +0 -1
  1205. package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js +0 -208
  1206. package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js.map +0 -1
  1207. package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js +0 -39
  1208. package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js.map +0 -1
  1209. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js +0 -224
  1210. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js.map +0 -1
  1211. package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js +0 -182
  1212. package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js.map +0 -1
  1213. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js +0 -82
  1214. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js.map +0 -1
  1215. package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js +0 -241
  1216. package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js.map +0 -1
  1217. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-2CvM7Z08.js +0 -224
  1218. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-2CvM7Z08.js.map +0 -1
  1219. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C8NGx8pE.js +0 -782
  1220. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-C8NGx8pE.js.map +0 -1
  1221. package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js +0 -326
  1222. package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js.map +0 -1
  1223. package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js +0 -730
  1224. package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js.map +0 -1
  1225. package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js +0 -238
  1226. package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js.map +0 -1
  1227. package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js +0 -33
  1228. package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js.map +0 -1
  1229. package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js +0 -286
  1230. package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js.map +0 -1
  1231. package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js +0 -128
  1232. package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js.map +0 -1
  1233. package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js +0 -88
  1234. package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js.map +0 -1
  1235. package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js +0 -68
  1236. package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js.map +0 -1
  1237. package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js +0 -70
  1238. package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js.map +0 -1
  1239. package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js +0 -123
  1240. package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js.map +0 -1
  1241. package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js +0 -81
  1242. package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js.map +0 -1
  1243. package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js +0 -230
  1244. package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js.map +0 -1
  1245. package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js +0 -109
  1246. package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js.map +0 -1
  1247. package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js +0 -838
  1248. package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js.map +0 -1
  1249. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js +0 -426
  1250. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js.map +0 -1
  1251. package/dist/granular-provider-node.js.map +0 -1
  1252. package/dist/granular-provider.js.map +0 -1
  1253. package/dist/index.js.map +0 -1
  1254. package/dist/types/src/components/GrButton/config.node.d.ts +0 -1
  1255. package/dist/types/src/components/GrCommandPalette/hotkey.d.ts +0 -23
  1256. package/dist/types/src/components/GrFileUpload/maxSizeMbValidator.d.ts +0 -1
  1257. package/dist/types/src/components/GrModal/grModalEscStack.d.ts +0 -30
  1258. package/dist/types/src/components/GrModal/grModalTopStack.d.ts +0 -31
  1259. package/dist/types/src/components/GrProgressBar/config.node.d.ts +0 -1
  1260. package/dist/types/src/composables/internal/useEscapeToClose.d.ts +0 -11
  1261. package/dist/types/src/composables/internal/useFloating.d.ts +0 -53
  1262. package/dist/types/src/fileValidation/maxFileSizeBytesValidator.d.ts +0 -2
  1263. package/dist/types/src/fileValidation/maxSizeMbValidator.d.ts +0 -2
  1264. /package/dist/chunks/{config-DpqOnJiz.js → config-DpqOnJiz2.js} +0 -0
  1265. /package/dist/chunks/{config-QaIc_gRa2.js → config-QaIc_gRa.js} +0 -0
  1266. /package/dist/{GrSkeleton.css → components/GrSkeleton/styles.css} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrTreeSelect-DZp7CqqW.js","names":["$slots"],"sources":["../../../../src/components/GrTreeSelect/GrTreeSelect.vue","../../../../src/components/GrTreeSelect/GrTreeSelect.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed, nextTick, ref, useId, useSlots, watch } from 'vue'\n\nimport { usePortalTarget } from '../../composables/usePortalTarget'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/useFloating'\nimport { useOverlayLayer } from '../../composables/useOverlayLayer'\nimport { useControlAddons } from '../../composables/internal/useControlAddons'\nimport { useControlledOpen } from '../../composables/internal/useControlledOpen'\nimport { useGrComponentSize, useGrThemeAttrs } from '../GrConfigProvider/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useFocusWithin } from '../../composables/internal/useFocusWithin'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrInput from '../GrInput/GrInput.vue'\nimport GrTree, {\n type GrTreeInstance,\n type GrTreeKey,\n type GrTreeNode,\n} from '../GrTree'\nimport type { GrInputSize } from '../GrInput/GrInput.vue'\nimport type { GrTreeSelectModelValue, GrTreeSelectProps } from './grTreeSelectTypes'\nimport { grTreeSelectClass, grTreeSelectPanelClass, grTreeSelectStateClass, paddingX, trailingZoneWidth } from './grTreeSelectStyles'\n\nexport interface GrTreeSelectEmits<T extends Record<string, any> = any> {\n (e: 'update:modelValue', value: GrTreeSelectModelValue): void\n (e: 'change', value: GrTreeSelectModelValue): void\n /** Панель открылась/закрылась (`v-model:open`). */\n (e: 'update:open', value: boolean): void\n /**\n * Панель открылась/закрылась.\n * @deprecated Используйте `update:open` (`v-model:open`); алиас будет снят после 1.0.\n */\n (e: 'visibleChange', visible: boolean): void\n (e: 'clear'): void\n (e: 'nodeClick', data: T, node: GrTreeNode<T>): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(\n defineProps<GrTreeSelectProps<T>>(),\n {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n disabled: false,\n placeholder: undefined,\n size: undefined,\n loading: false,\n invalid: false,\n readonly: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n multiple: false,\n showCheckbox: false,\n checkStrictly: false,\n clearable: false,\n open: undefined,\n name: undefined,\n valueDisplay: 'label',\n filterable: false,\n filterPlaceholder: undefined,\n filterInputmode: undefined,\n filterNodeMethod: undefined,\n closeOnSelect: undefined,\n dropdownMaxHeight: 320,\n virtual: false,\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n },\n)\n\nconst { t } = useGranularityTranslations()\n\nconst emit = defineEmits<GrTreeSelectEmits<T>>()\n\ndefineSlots<{\n /** Рендер значения внутри триггера (вместо дефолтного текста). */\n value?: (props: { value: GrTreeSelectModelValue; labels: string[]; displayValue: string; pathLabels?: string[] }) => any\n /** Рендер строки дерева. */\n node?: (props: { node: GrTreeNode<T>; data: T; selected: boolean }) => any\n /** Содержимое пустого состояния (когда нет данных). */\n empty?: () => any\n /** Содержимое панели, пока данные едут. */\n loading?: () => any\n /** Аддон слева от значения: иконка, код валюты, метка. */\n prefix?: () => any\n /** Аддон справа от значения, перед крестиком и шевроном. */\n suffix?: () => any\n}>()\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLInputElement | null>(null)\nconst treeId = `gr-tree-select-tree-${useId()}`\n\n// Контекст `GrFormField` + общий контракт форм-контрола.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid, required: isRequired, readonly: isReadonly } = useGrFormControl(() => props)\n\nfunction focus(): void {\n triggerEl.value?.focus()\n}\n\nfunction blur(): void {\n triggerEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\nconst filterInputRef = ref<InstanceType<typeof GrInput> | null>(null)\nconst treeRef = ref<GrTreeInstance | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\n\n// Панель телепортирована в `body`, то есть лежит вне корня, но для пользователя\n// она часть контрола: без неё уход фокуса в панель читался бы как `blur`.\nconst { onFocusIn, onFocusOut } = useFocusWithin(rootEl, {\n enter: event => emit('focus', event),\n leave: event => emit('blur', event),\n containers: () => [panelEl.value],\n})\n\nconst clickOutsideExclude = [() => panelEl.value]\n\nlet hadPointerDownOnTrigger = false\n\n// Имя `open` сохранено: читатели работают с computed-Ref.\nconst { open, setOpen: setOpenState } = useControlledOpen(\n () => props.open,\n (next) => {\n emit('update:open', next)\n emit('visibleChange', next)\n },\n)\nconst filterValue = ref('')\n\nconst { floatingStyle } = useFloating(rootEl, panelEl, open, {\n placement: 'bottom-start',\n matchWidth: true,\n zIndexVar: '--gr-z-dropdown',\n})\n\nconst closeOnSelectResolved = computed(() => {\n return props.closeOnSelect ?? !props.multiple\n})\n\nfunction getChildrenKey() {\n return props.props.children ?? 'children'\n}\n\nfunction getLabelKey() {\n return props.props.label ?? 'label'\n}\n\nfunction nodeLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const v = data[key]\n return v == null ? '' : String(v)\n}\n\nfunction nodeChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const v = data[key]\n return Array.isArray(v) ? (v as any) : []\n}\n\nfunction nodeKeyOf(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const keyName = props.nodeKey as keyof T\n const v = data[keyName]\n if (v != null)\n return v as GrTreeKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n}\n\nconst labelByKey = computed(() => {\n const map = new Map<GrTreeKey, string>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n map.set(key, nodeLabel(item))\n walk(nodeChildren(item), key)\n }\n }\n\n walk(props.data ?? [], undefined)\n return map\n})\n\nconst pathLabelsByKey = computed(() => {\n const map = new Map<GrTreeKey, string[]>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined, parentPath: string[]) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n const label = nodeLabel(item)\n const path = [...parentPath, label]\n map.set(key, path)\n walk(nodeChildren(item), key, path)\n }\n }\n\n walk(props.data ?? [], undefined, [])\n return map\n})\n\nconst selectedKeys = computed<GrTreeKey[]>(() => {\n if (props.multiple) {\n return Array.isArray(props.modelValue) ? props.modelValue : []\n }\n\n const v = props.modelValue\n if (v == null || Array.isArray(v))\n return []\n return [v]\n})\n\nconst selectedKeySet = computed(() => new Set(selectedKeys.value))\n\nconst selectedLabels = computed(() => {\n const map = labelByKey.value\n return selectedKeys.value.map((k) => map.get(k) ?? String(k))\n})\n\nconst selectedPathLabels = computed<string[] | undefined>(() => {\n if (props.multiple)\n return undefined\n\n const key = selectedKeys.value[0]\n if (key == null)\n return undefined\n\n const path = pathLabelsByKey.value.get(key)\n if (path?.length)\n return path\n\n const labels = selectedLabels.value\n return labels.length ? [labels[0]] : undefined\n})\n\nconst displayValue = computed(() => {\n const labels = selectedLabels.value\n if (labels.length === 0)\n return ''\n\n if (!props.multiple) {\n if (props.valueDisplay === 'path') {\n const path = selectedPathLabels.value\n if (path?.length)\n return path.join(' / ')\n }\n return labels[0]\n }\n\n if (labels.length === 1)\n return labels[0]\n return `${labels[0]} +${labels.length - 1}`\n})\n\nconst hasSelection = computed(() => selectedKeys.value.length > 0)\n\n/** Дерево рендерится только когда есть что показать — ссылаться иначе не на что. */\nconst hasTree = computed(() => !props.loading && (props.data?.length ?? 0) > 0)\n\nconst resolvedFilterPlaceholder = computed(() => {\n return props.filterPlaceholder ?? t('gr.treeSelect.filterPlaceholder', 'Search…')\n})\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrTreeSelect' })\n\nconst className = computed(() => {\n return grTreeSelectClass({\n size: resolvedSize.value,\n state: props.state,\n invalid: isInvalid.value,\n disabled: isDisabled.value,\n })\n})\n\nconst panelClasses = computed(() => {\n return grTreeSelectPanelClass\n})\n\nconst ADDON_MIN_WIDTH_BY_SIZE: Record<GrInputSize, string> = {\n xs: '2rem',\n sm: '2.25rem',\n md: '2.5rem',\n lg: '3rem',\n}\n\nconst slots = useSlots()\n\nconst {\n hasPrefix,\n hasSuffix,\n prefixEl,\n suffixEl,\n prefixStyle,\n suffixStyle,\n fieldPadding: triggerStyle,\n} = useControlAddons(() => props, {\n defaultMinWidth: () => ADDON_MIN_WIDTH_BY_SIZE[resolvedSize.value],\n paddingX: () => paddingX[resolvedSize.value],\n // Место под крестик и шеврон уже отдано классом `pr-9`, но инлайн-паддинг\n // перекрывает класс целиком — с суффиксом эту зону приходится вернуть числом.\n trailingReserve: () => (slots.suffix ? trailingZoneWidth : '0px'),\n})\n\n// Слот `value` рисуется поверх поля и обязан жить в тех же границах, что и\n// текст под ним. Без аддонов границы задаёт класс — стиль остаётся пустым.\nconst valueOverlayStyle = computed(() => ({\n left: hasPrefix.value ? triggerStyle.value.paddingLeft : undefined,\n right: hasSuffix.value ? triggerStyle.value.paddingRight : undefined,\n}))\n\nfunction setOpen(next: boolean) {\n if (isDisabled.value || isReadonly.value)\n return\n\n setOpenState(next)\n}\n\nfunction onClickOutside(): void {\n setOpen(false)\n}\n\nfunction openDropdown(): void {\n setOpen(true)\n}\n\n/**\n * Стек слоёв возвращает фокус на триггер сразу после закрытия, а у триггера\n * открытие висит на `focus`. Без флага `Escape` из дерева закрывал бы панель и\n * тем же движением открывал её заново.\n */\nlet suppressFocusOpen = false\n\nfunction closeDropdown(): void {\n suppressFocusOpen = true\n setOpen(false)\n setTimeout(() => {\n suppressFocusOpen = false\n }, 0)\n}\n\nfunction toggleDropdown(): void {\n setOpen(!open.value)\n}\n\n// Клик по триггеру сам переключает панель через `@click`; флаг гасит открытие\n// по приходящему следом `focus`, иначе один клик открыл бы и тут же закрыл.\nfunction onTriggerPointerDown(): void {\n hadPointerDownOnTrigger = true\n setTimeout(() => {\n hadPointerDownOnTrigger = false\n }, 0)\n}\n\nfunction onTriggerFocus(): void {\n if (hadPointerDownOnTrigger || suppressFocusOpen)\n return\n openDropdown()\n}\n\n// Возврат фокуса на триггер — из контракта слоя, а не руками через `nextTick`.\nuseOverlayLayer(open, closeDropdown, { root: panelEl })\n\nwatch(\n open,\n async (isOpen) => {\n if (!isOpen) {\n if (filterValue.value.trim().length > 0)\n filterValue.value = ''\n return\n }\n\n // Подсветка дерева идёт за значением: панель могли открыть после того, как\n // значение сменили снаружи.\n if (!props.multiple) {\n const v = props.modelValue\n if (v != null && !Array.isArray(v))\n treeRef.value?.setCurrentKey(v)\n }\n\n if (props.filterable) {\n await nextTick()\n filterInputRef.value?.focus()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (props.multiple)\n return\n if (v == null || Array.isArray(v)) {\n treeRef.value?.setCurrentKey(undefined)\n return\n }\n treeRef.value?.setCurrentKey(v)\n },\n)\n\nwatch(\n filterValue,\n (v) => {\n treeRef.value?.filter(v)\n },\n)\n\nfunction emitModel(next: GrTreeSelectModelValue) {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction clear(): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n const next: GrTreeSelectModelValue = props.multiple ? [] : null\n emitModel(next)\n emit('clear')\n if (!props.multiple)\n treeRef.value?.setCurrentKey(undefined)\n}\n\n/**\n * Отдаёт клавиатуру дереву. Панель под `v-show`, поэтому дерево уже в DOM, но\n * скрытый элемент сфокусировать нельзя — сначала открытие, потом кадр, потом\n * фокус. Дальше работают клавиши `GrTree`, а `Escape` возвращает фокус на\n * триггер силами общего стека слоёв.\n */\nasync function focusTree(): Promise<boolean> {\n if (!open.value)\n return false\n\n await nextTick()\n return treeRef.value?.focus() ?? false\n}\n\nfunction onTriggerKeydown(e: KeyboardEvent): void {\n if (isDisabled.value)\n return\n\n if (e.key === 'Escape') {\n e.preventDefault()\n closeDropdown()\n return\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openDropdown()\n\n // При `filterable` фокус уходит в поле поиска (см. watch на `open`), и\n // дальше в дерево ведёт стрелка уже оттуда.\n if (!props.filterable)\n void focusTree()\n }\n}\n\n/** Стрелка из поля поиска — единственный путь из фильтра в дерево. */\nfunction onFilterKeydown(e: KeyboardEvent): void {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp')\n return\n\n e.preventDefault()\n void focusTree()\n}\n\n/** `Tab` уводит из панели — оставлять её открытой за спиной незачем. */\nfunction onPanelKeydown(e: KeyboardEvent): void {\n if (e.key === 'Tab')\n closeDropdown()\n}\n\n// Чекбоксы осмысленны только в множественном выборе: одиночный уже подсвечен\n// текущим узлом.\nconst checkboxMode = computed(() => props.multiple && props.showCheckbox)\n\n// В режиме чекбоксов каскад по родителям и детям считает `GrTree`, а не копия\n// его логики здесь: значение приходит обратно одним `update:checkedKeys`.\nfunction onCheckedKeys(keys: GrTreeKey[]): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n emitModel([...keys])\n}\n\nfunction onNodeClick(data: T, node: GrTreeNode<T>): void {\n emit('nodeClick', data, node)\n\n if (isDisabled.value)\n return\n\n if (checkboxMode.value) {\n // Клик по строке — тот же переключатель отметки, что и сам чекбокс;\n // значение придёт через `update:checkedKeys`, поэтому здесь не эмитим.\n treeRef.value?.setChecked(node.key, !selectedKeySet.value.has(node.key))\n return\n }\n\n if (props.multiple) {\n const next = new Set(selectedKeySet.value)\n if (next.has(node.key))\n next.delete(node.key)\n else\n next.add(node.key)\n emitModel([...next])\n\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n return\n }\n\n emitModel(node.key)\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n}\n\n// Телепорт включается только ПОСЛЕ монтирования: иначе первый клиентский\n// рендер не совпадает с серверным и ломается гидрация (см. композабл).\nconst { target: portalTarget, enabled: teleportEnabled } = usePortalTarget()\n\n// Тема поддерева на телепортированную панель: в DOM она уезжает в `body`, то\n// есть вне обёртки провайдера, и `data-theme` с неё не наследуется. В дереве\n// компонентов панель остаётся внутри — `inject` доходит, и тему она ставит себе\n// сама.\nconst themeAttrs = useGrThemeAttrs()\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: onClickOutside, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-tree-select\n class=\"relative\"\n @focusin=\"onFocusIn\"\n @focusout=\"onFocusOut\"\n >\n <!-- Нативная форма: hidden на каждый выбранный ключ. -->\n <template v-if=\"name\">\n <input\n v-for=\"key in selectedKeys\"\n :key=\"`hidden-${String(key)}`\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"String(key)\"\n >\n </template>\n <div class=\"relative\">\n <div\n v-if=\"hasPrefix\"\n ref=\"prefixEl\"\n data-gr-tree-select-prefix\n class=\"absolute inset-y-px left-px flex items-center justify-center rounded-l-[var(--gr-radius-control)] border-r border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :style=\"prefixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"prefix\" />\n </div>\n\n <input\n :id=\"fieldId\"\n ref=\"triggerEl\"\n data-testid=\"gr-tree-select-trigger\"\n data-gr-tree-select-trigger\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"isDisabled\"\n readonly\n role=\"combobox\"\n aria-readonly=\"true\"\n aria-haspopup=\"tree\"\n :aria-expanded=\"open ? 'true' : 'false'\"\n :aria-controls=\"open && hasTree ? treeId : undefined\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-label=\"ariaLabel\"\n class=\"w-full rounded-[var(--gr-radius-control)] border placeholder:text-[var(--gr-muted-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n :class=\"[className, $slots.value ? 'text-transparent placeholder:text-transparent' : '']\"\n :style=\"triggerStyle\"\n @pointerdown=\"onTriggerPointerDown\"\n @click=\"toggleDropdown\"\n @focus=\"onTriggerFocus\"\n @keydown=\"onTriggerKeydown\"\n >\n\n <button\n v-if=\"clearable && hasSelection && !disabled && !isReadonly\"\n data-testid=\"gr-tree-select-clear\"\n data-gr-tree-select-clear\n type=\"button\"\n class=\"absolute top-1/2 -translate-y-1/2 right-3 h-6 w-6 inline-flex items-center justify-center rounded-[var(--gr-radius-control)] text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)] hover:bg-[color-mix(in_srgb,var(--gr-muted)_25%,transparent)]\"\n :aria-label=\"t('gr.common.clear', 'Clear')\"\n @click.stop=\"clear\"\n >\n <span class=\"i-lucide-x inline-block h-4 w-4\" />\n </button>\n\n <span\n v-else\n data-testid=\"gr-tree-select-chevron\"\n data-gr-tree-select-chevron\n class=\"absolute top-1/2 -translate-y-1/2 right-3 text-[var(--gr-muted-fg)] pointer-events-none\"\n >\n <span\n class=\"i-lucide-chevron-down inline-block h-4 w-4 transition-transform duration-[var(--gr-duration-fast)]\"\n :class=\"open ? 'rotate-180' : ''\"\n />\n </span>\n\n <div\n v-if=\"hasSuffix\"\n ref=\"suffixEl\"\n data-gr-tree-select-suffix\n class=\"absolute inset-y-px right-9 flex items-center justify-center border-l border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :class=\"suffixFixed ? '[direction:rtl]' : ''\"\n :style=\"suffixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"suffix\" />\n </div>\n\n <div\n v-if=\"$slots.value\"\n class=\"absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none\"\n :style=\"valueOverlayStyle\"\n >\n <slot\n name=\"value\"\n :value=\"modelValue\"\n :labels=\"selectedLabels\"\n :display-value=\"displayValue\"\n :path-labels=\"selectedPathLabels\"\n />\n </div>\n </div>\n\n <teleport :to=\"portalTarget\" :disabled=\"!teleportEnabled\">\n <transition\n enter-active-class=\"transition ease-[var(--gr-ease-out)] duration-[var(--gr-duration-fast)]\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-[var(--gr-ease-in)] duration-[var(--gr-duration-fast)]\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-testid=\"gr-tree-select-panel\"\n v-bind=\"themeAttrs\"\n data-gr-tree-select-panel\n data-gr-overlay-root\n :style=\"floatingStyle\"\n @keydown=\"onPanelKeydown\"\n >\n <div :class=\"panelClasses\">\n <div v-if=\"filterable\" class=\"p-2 border-b border-[var(--gr-brd)]\">\n <GrInput\n ref=\"filterInputRef\"\n v-model=\"filterValue\"\n data-testid=\"gr-tree-select-filter\"\n data-gr-tree-select-filter\n type=\"search\"\n :inputmode=\"filterInputmode\"\n :placeholder=\"resolvedFilterPlaceholder\"\n size=\"sm\"\n @keydown=\"onFilterKeydown\"\n />\n </div>\n\n <!--\n Скроллер один. При виртуализации его берёт на себя дерево: своя\n высота нужна ему, чтобы посчитать окно, а вложенный скроллер поверх\n дал бы вторую полосу прокрутки на том же списке.\n -->\n <div\n class=\"p-1\"\n :class=\"virtual ? '' : 'overflow-auto'\"\n :style=\"virtual ? undefined : { maxHeight: `${dropdownMaxHeight}px` }\"\n >\n <div\n v-if=\"loading\"\n data-gr-tree-select-loading\n role=\"status\"\n :class=\"grTreeSelectStateClass\"\n >\n <slot name=\"loading\">\n <span class=\"i-lucide-loader-circle block h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n <span>{{ t('gr.treeSelect.loading', 'Loading…') }}</span>\n </slot>\n </div>\n\n <div v-else-if=\"(data?.length ?? 0) === 0\" :class=\"grTreeSelectStateClass\">\n <slot name=\"empty\">\n {{ t('gr.treeSelect.empty', 'No data') }}\n </slot>\n </div>\n\n <GrTree\n v-else\n :id=\"treeId\"\n ref=\"treeRef\"\n :size=\"resolvedSize\"\n :data=\"data\"\n :props=\"props.props\"\n :node-key=\"nodeKey as any\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n :filter-node-method=\"filterNodeMethod\"\n :highlight-current=\"!multiple\"\n :virtual=\"virtual\"\n :max-height=\"dropdownMaxHeight\"\n :show-checkbox=\"checkboxMode\"\n :check-strictly=\"checkStrictly\"\n :checked-keys=\"selectedKeys\"\n @node-click=\"onNodeClick\"\n @update:checked-keys=\"onCheckedKeys\"\n >\n <template #default=\"{ node, data }\">\n <slot\n name=\"node\"\n :node=\"node\"\n :data=\"data\"\n :selected=\"selectedKeySet.has(node.key)\"\n >\n <div class=\"flex items-center gap-2 min-w-0\">\n <!-- Чекбокс дерева уже показывает отметку: вторая галочка\n рядом читалась бы как ошибка. -->\n <span\n v-if=\"!checkboxMode\"\n data-gr-tree-select-check\n class=\"inline-block h-4 w-4 shrink-0\"\n :class=\"selectedKeySet.has(node.key) ? 'i-lucide-check text-[var(--gr-primary)]' : ''\"\n aria-hidden=\"true\"\n />\n <span class=\"truncate\">{{ node.label }}</span>\n </div>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any\">\nimport { computed, nextTick, ref, useId, useSlots, watch } from 'vue'\n\nimport { usePortalTarget } from '../../composables/usePortalTarget'\n\nimport { vClickOutside } from '../../directives'\nimport { useFloating } from '../../composables/useFloating'\nimport { useOverlayLayer } from '../../composables/useOverlayLayer'\nimport { useControlAddons } from '../../composables/internal/useControlAddons'\nimport { useControlledOpen } from '../../composables/internal/useControlledOpen'\nimport { useGrComponentSize, useGrThemeAttrs } from '../GrConfigProvider/context'\nimport { useGrFormControl } from '../../composables/useGrFormControl'\nimport { useFocusWithin } from '../../composables/internal/useFocusWithin'\nimport { useGrFormFieldContext } from '../GrFormField/context'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport GrInput from '../GrInput/GrInput.vue'\nimport GrTree, {\n type GrTreeInstance,\n type GrTreeKey,\n type GrTreeNode,\n} from '../GrTree'\nimport type { GrInputSize } from '../GrInput/GrInput.vue'\nimport type { GrTreeSelectModelValue, GrTreeSelectProps } from './grTreeSelectTypes'\nimport { grTreeSelectClass, grTreeSelectPanelClass, grTreeSelectStateClass, paddingX, trailingZoneWidth } from './grTreeSelectStyles'\n\nexport interface GrTreeSelectEmits<T extends Record<string, any> = any> {\n (e: 'update:modelValue', value: GrTreeSelectModelValue): void\n (e: 'change', value: GrTreeSelectModelValue): void\n /** Панель открылась/закрылась (`v-model:open`). */\n (e: 'update:open', value: boolean): void\n /**\n * Панель открылась/закрылась.\n * @deprecated Используйте `update:open` (`v-model:open`); алиас будет снят после 1.0.\n */\n (e: 'visibleChange', visible: boolean): void\n (e: 'clear'): void\n (e: 'nodeClick', data: T, node: GrTreeNode<T>): void\n (e: 'focus', event: FocusEvent): void\n (e: 'blur', event: FocusEvent): void\n}\n\nconst props = withDefaults(\n defineProps<GrTreeSelectProps<T>>(),\n {\n props: () => ({\n children: 'children',\n label: 'label',\n }),\n nodeKey: 'id' as any,\n defaultExpandedKeys: () => [],\n disabled: false,\n placeholder: undefined,\n size: undefined,\n loading: false,\n invalid: false,\n readonly: false,\n required: false,\n ariaLabel: undefined,\n state: 'default',\n multiple: false,\n showCheckbox: false,\n checkStrictly: false,\n clearable: false,\n open: undefined,\n name: undefined,\n valueDisplay: 'label',\n filterable: false,\n filterPlaceholder: undefined,\n filterInputmode: undefined,\n filterNodeMethod: undefined,\n closeOnSelect: undefined,\n dropdownMaxHeight: 320,\n virtual: false,\n prefixMinWidth: undefined,\n prefixMaxWidth: undefined,\n suffixMinWidth: undefined,\n suffixMaxWidth: undefined,\n prefixFixed: false,\n suffixFixed: false,\n },\n)\n\nconst { t } = useGranularityTranslations()\n\nconst emit = defineEmits<GrTreeSelectEmits<T>>()\n\ndefineSlots<{\n /** Рендер значения внутри триггера (вместо дефолтного текста). */\n value?: (props: { value: GrTreeSelectModelValue; labels: string[]; displayValue: string; pathLabels?: string[] }) => any\n /** Рендер строки дерева. */\n node?: (props: { node: GrTreeNode<T>; data: T; selected: boolean }) => any\n /** Содержимое пустого состояния (когда нет данных). */\n empty?: () => any\n /** Содержимое панели, пока данные едут. */\n loading?: () => any\n /** Аддон слева от значения: иконка, код валюты, метка. */\n prefix?: () => any\n /** Аддон справа от значения, перед крестиком и шевроном. */\n suffix?: () => any\n}>()\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLInputElement | null>(null)\nconst treeId = `gr-tree-select-tree-${useId()}`\n\n// Контекст `GrFormField` + общий контракт форм-контрола.\nconst field = useGrFormFieldContext()\nconst fieldId = computed(() => field?.id.value)\nconst describedBy = computed(() => field?.describedById.value)\nconst {\n disabled: isDisabled,\n invalid: isInvalid, required: isRequired, readonly: isReadonly } = useGrFormControl(() => props)\n\nfunction focus(): void {\n triggerEl.value?.focus()\n}\n\nfunction blur(): void {\n triggerEl.value?.blur()\n}\n\ndefineExpose({ focus, blur })\nconst filterInputRef = ref<InstanceType<typeof GrInput> | null>(null)\nconst treeRef = ref<GrTreeInstance | null>(null)\nconst panelEl = ref<HTMLElement | null>(null)\n\n// Панель телепортирована в `body`, то есть лежит вне корня, но для пользователя\n// она часть контрола: без неё уход фокуса в панель читался бы как `blur`.\nconst { onFocusIn, onFocusOut } = useFocusWithin(rootEl, {\n enter: event => emit('focus', event),\n leave: event => emit('blur', event),\n containers: () => [panelEl.value],\n})\n\nconst clickOutsideExclude = [() => panelEl.value]\n\nlet hadPointerDownOnTrigger = false\n\n// Имя `open` сохранено: читатели работают с computed-Ref.\nconst { open, setOpen: setOpenState } = useControlledOpen(\n () => props.open,\n (next) => {\n emit('update:open', next)\n emit('visibleChange', next)\n },\n)\nconst filterValue = ref('')\n\nconst { floatingStyle } = useFloating(rootEl, panelEl, open, {\n placement: 'bottom-start',\n matchWidth: true,\n zIndexVar: '--gr-z-dropdown',\n})\n\nconst closeOnSelectResolved = computed(() => {\n return props.closeOnSelect ?? !props.multiple\n})\n\nfunction getChildrenKey() {\n return props.props.children ?? 'children'\n}\n\nfunction getLabelKey() {\n return props.props.label ?? 'label'\n}\n\nfunction nodeLabel(data: T): string {\n const key = getLabelKey() as keyof T\n const v = data[key]\n return v == null ? '' : String(v)\n}\n\nfunction nodeChildren(data: T): T[] {\n const key = getChildrenKey() as keyof T\n const v = data[key]\n return Array.isArray(v) ? (v as any) : []\n}\n\nfunction nodeKeyOf(data: T, index: number, parentKey: GrTreeKey | undefined): GrTreeKey {\n const keyName = props.nodeKey as keyof T\n const v = data[keyName]\n if (v != null)\n return v as GrTreeKey\n\n return parentKey == null ? index : `${String(parentKey)}:${index}`\n}\n\nconst labelByKey = computed(() => {\n const map = new Map<GrTreeKey, string>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n map.set(key, nodeLabel(item))\n walk(nodeChildren(item), key)\n }\n }\n\n walk(props.data ?? [], undefined)\n return map\n})\n\nconst pathLabelsByKey = computed(() => {\n const map = new Map<GrTreeKey, string[]>()\n\n const walk = (items: T[], parentKey: GrTreeKey | undefined, parentPath: string[]) => {\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const key = nodeKeyOf(item, i, parentKey)\n const label = nodeLabel(item)\n const path = [...parentPath, label]\n map.set(key, path)\n walk(nodeChildren(item), key, path)\n }\n }\n\n walk(props.data ?? [], undefined, [])\n return map\n})\n\nconst selectedKeys = computed<GrTreeKey[]>(() => {\n if (props.multiple) {\n return Array.isArray(props.modelValue) ? props.modelValue : []\n }\n\n const v = props.modelValue\n if (v == null || Array.isArray(v))\n return []\n return [v]\n})\n\nconst selectedKeySet = computed(() => new Set(selectedKeys.value))\n\nconst selectedLabels = computed(() => {\n const map = labelByKey.value\n return selectedKeys.value.map((k) => map.get(k) ?? String(k))\n})\n\nconst selectedPathLabels = computed<string[] | undefined>(() => {\n if (props.multiple)\n return undefined\n\n const key = selectedKeys.value[0]\n if (key == null)\n return undefined\n\n const path = pathLabelsByKey.value.get(key)\n if (path?.length)\n return path\n\n const labels = selectedLabels.value\n return labels.length ? [labels[0]] : undefined\n})\n\nconst displayValue = computed(() => {\n const labels = selectedLabels.value\n if (labels.length === 0)\n return ''\n\n if (!props.multiple) {\n if (props.valueDisplay === 'path') {\n const path = selectedPathLabels.value\n if (path?.length)\n return path.join(' / ')\n }\n return labels[0]\n }\n\n if (labels.length === 1)\n return labels[0]\n return `${labels[0]} +${labels.length - 1}`\n})\n\nconst hasSelection = computed(() => selectedKeys.value.length > 0)\n\n/** Дерево рендерится только когда есть что показать — ссылаться иначе не на что. */\nconst hasTree = computed(() => !props.loading && (props.data?.length ?? 0) > 0)\n\nconst resolvedFilterPlaceholder = computed(() => {\n return props.filterPlaceholder ?? t('gr.treeSelect.filterPlaceholder', 'Search…')\n})\n\nconst resolvedSize = useGrComponentSize(() => props.size, { component: 'GrTreeSelect' })\n\nconst className = computed(() => {\n return grTreeSelectClass({\n size: resolvedSize.value,\n state: props.state,\n invalid: isInvalid.value,\n disabled: isDisabled.value,\n })\n})\n\nconst panelClasses = computed(() => {\n return grTreeSelectPanelClass\n})\n\nconst ADDON_MIN_WIDTH_BY_SIZE: Record<GrInputSize, string> = {\n xs: '2rem',\n sm: '2.25rem',\n md: '2.5rem',\n lg: '3rem',\n}\n\nconst slots = useSlots()\n\nconst {\n hasPrefix,\n hasSuffix,\n prefixEl,\n suffixEl,\n prefixStyle,\n suffixStyle,\n fieldPadding: triggerStyle,\n} = useControlAddons(() => props, {\n defaultMinWidth: () => ADDON_MIN_WIDTH_BY_SIZE[resolvedSize.value],\n paddingX: () => paddingX[resolvedSize.value],\n // Место под крестик и шеврон уже отдано классом `pr-9`, но инлайн-паддинг\n // перекрывает класс целиком — с суффиксом эту зону приходится вернуть числом.\n trailingReserve: () => (slots.suffix ? trailingZoneWidth : '0px'),\n})\n\n// Слот `value` рисуется поверх поля и обязан жить в тех же границах, что и\n// текст под ним. Без аддонов границы задаёт класс — стиль остаётся пустым.\nconst valueOverlayStyle = computed(() => ({\n left: hasPrefix.value ? triggerStyle.value.paddingLeft : undefined,\n right: hasSuffix.value ? triggerStyle.value.paddingRight : undefined,\n}))\n\nfunction setOpen(next: boolean) {\n if (isDisabled.value || isReadonly.value)\n return\n\n setOpenState(next)\n}\n\nfunction onClickOutside(): void {\n setOpen(false)\n}\n\nfunction openDropdown(): void {\n setOpen(true)\n}\n\n/**\n * Стек слоёв возвращает фокус на триггер сразу после закрытия, а у триггера\n * открытие висит на `focus`. Без флага `Escape` из дерева закрывал бы панель и\n * тем же движением открывал её заново.\n */\nlet suppressFocusOpen = false\n\nfunction closeDropdown(): void {\n suppressFocusOpen = true\n setOpen(false)\n setTimeout(() => {\n suppressFocusOpen = false\n }, 0)\n}\n\nfunction toggleDropdown(): void {\n setOpen(!open.value)\n}\n\n// Клик по триггеру сам переключает панель через `@click`; флаг гасит открытие\n// по приходящему следом `focus`, иначе один клик открыл бы и тут же закрыл.\nfunction onTriggerPointerDown(): void {\n hadPointerDownOnTrigger = true\n setTimeout(() => {\n hadPointerDownOnTrigger = false\n }, 0)\n}\n\nfunction onTriggerFocus(): void {\n if (hadPointerDownOnTrigger || suppressFocusOpen)\n return\n openDropdown()\n}\n\n// Возврат фокуса на триггер — из контракта слоя, а не руками через `nextTick`.\nuseOverlayLayer(open, closeDropdown, { root: panelEl })\n\nwatch(\n open,\n async (isOpen) => {\n if (!isOpen) {\n if (filterValue.value.trim().length > 0)\n filterValue.value = ''\n return\n }\n\n // Подсветка дерева идёт за значением: панель могли открыть после того, как\n // значение сменили снаружи.\n if (!props.multiple) {\n const v = props.modelValue\n if (v != null && !Array.isArray(v))\n treeRef.value?.setCurrentKey(v)\n }\n\n if (props.filterable) {\n await nextTick()\n filterInputRef.value?.focus()\n }\n },\n { immediate: true },\n)\n\nwatch(\n () => props.modelValue,\n (v) => {\n if (props.multiple)\n return\n if (v == null || Array.isArray(v)) {\n treeRef.value?.setCurrentKey(undefined)\n return\n }\n treeRef.value?.setCurrentKey(v)\n },\n)\n\nwatch(\n filterValue,\n (v) => {\n treeRef.value?.filter(v)\n },\n)\n\nfunction emitModel(next: GrTreeSelectModelValue) {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction clear(): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n const next: GrTreeSelectModelValue = props.multiple ? [] : null\n emitModel(next)\n emit('clear')\n if (!props.multiple)\n treeRef.value?.setCurrentKey(undefined)\n}\n\n/**\n * Отдаёт клавиатуру дереву. Панель под `v-show`, поэтому дерево уже в DOM, но\n * скрытый элемент сфокусировать нельзя — сначала открытие, потом кадр, потом\n * фокус. Дальше работают клавиши `GrTree`, а `Escape` возвращает фокус на\n * триггер силами общего стека слоёв.\n */\nasync function focusTree(): Promise<boolean> {\n if (!open.value)\n return false\n\n await nextTick()\n return treeRef.value?.focus() ?? false\n}\n\nfunction onTriggerKeydown(e: KeyboardEvent): void {\n if (isDisabled.value)\n return\n\n if (e.key === 'Escape') {\n e.preventDefault()\n closeDropdown()\n return\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n openDropdown()\n\n // При `filterable` фокус уходит в поле поиска (см. watch на `open`), и\n // дальше в дерево ведёт стрелка уже оттуда.\n if (!props.filterable)\n void focusTree()\n }\n}\n\n/** Стрелка из поля поиска — единственный путь из фильтра в дерево. */\nfunction onFilterKeydown(e: KeyboardEvent): void {\n if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp')\n return\n\n e.preventDefault()\n void focusTree()\n}\n\n/** `Tab` уводит из панели — оставлять её открытой за спиной незачем. */\nfunction onPanelKeydown(e: KeyboardEvent): void {\n if (e.key === 'Tab')\n closeDropdown()\n}\n\n// Чекбоксы осмысленны только в множественном выборе: одиночный уже подсвечен\n// текущим узлом.\nconst checkboxMode = computed(() => props.multiple && props.showCheckbox)\n\n// В режиме чекбоксов каскад по родителям и детям считает `GrTree`, а не копия\n// его логики здесь: значение приходит обратно одним `update:checkedKeys`.\nfunction onCheckedKeys(keys: GrTreeKey[]): void {\n if (isDisabled.value || isReadonly.value)\n return\n\n emitModel([...keys])\n}\n\nfunction onNodeClick(data: T, node: GrTreeNode<T>): void {\n emit('nodeClick', data, node)\n\n if (isDisabled.value)\n return\n\n if (checkboxMode.value) {\n // Клик по строке — тот же переключатель отметки, что и сам чекбокс;\n // значение придёт через `update:checkedKeys`, поэтому здесь не эмитим.\n treeRef.value?.setChecked(node.key, !selectedKeySet.value.has(node.key))\n return\n }\n\n if (props.multiple) {\n const next = new Set(selectedKeySet.value)\n if (next.has(node.key))\n next.delete(node.key)\n else\n next.add(node.key)\n emitModel([...next])\n\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n return\n }\n\n emitModel(node.key)\n if (closeOnSelectResolved.value) {\n closeDropdown()\n }\n}\n\n// Телепорт включается только ПОСЛЕ монтирования: иначе первый клиентский\n// рендер не совпадает с серверным и ломается гидрация (см. композабл).\nconst { target: portalTarget, enabled: teleportEnabled } = usePortalTarget()\n\n// Тема поддерева на телепортированную панель: в DOM она уезжает в `body`, то\n// есть вне обёртки провайдера, и `data-theme` с неё не наследуется. В дереве\n// компонентов панель остаётся внутри — `inject` доходит, и тему она ставит себе\n// сама.\nconst themeAttrs = useGrThemeAttrs()\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n v-click-outside=\"{ handler: onClickOutside, enabled: open, exclude: clickOutsideExclude }\"\n data-gr-tree-select\n class=\"relative\"\n @focusin=\"onFocusIn\"\n @focusout=\"onFocusOut\"\n >\n <!-- Нативная форма: hidden на каждый выбранный ключ. -->\n <template v-if=\"name\">\n <input\n v-for=\"key in selectedKeys\"\n :key=\"`hidden-${String(key)}`\"\n type=\"hidden\"\n :name=\"name\"\n :value=\"String(key)\"\n >\n </template>\n <div class=\"relative\">\n <div\n v-if=\"hasPrefix\"\n ref=\"prefixEl\"\n data-gr-tree-select-prefix\n class=\"absolute inset-y-px left-px flex items-center justify-center rounded-l-[var(--gr-radius-control)] border-r border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :style=\"prefixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"prefix\" />\n </div>\n\n <input\n :id=\"fieldId\"\n ref=\"triggerEl\"\n data-testid=\"gr-tree-select-trigger\"\n data-gr-tree-select-trigger\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"isDisabled\"\n readonly\n role=\"combobox\"\n aria-readonly=\"true\"\n aria-haspopup=\"tree\"\n :aria-expanded=\"open ? 'true' : 'false'\"\n :aria-controls=\"open && hasTree ? treeId : undefined\"\n :aria-invalid=\"isInvalid ? 'true' : undefined\"\n :aria-required=\"isRequired ? 'true' : undefined\"\n :aria-describedby=\"describedBy\"\n :aria-label=\"ariaLabel\"\n class=\"w-full rounded-[var(--gr-radius-control)] border placeholder:text-[var(--gr-muted-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]\"\n :class=\"[className, $slots.value ? 'text-transparent placeholder:text-transparent' : '']\"\n :style=\"triggerStyle\"\n @pointerdown=\"onTriggerPointerDown\"\n @click=\"toggleDropdown\"\n @focus=\"onTriggerFocus\"\n @keydown=\"onTriggerKeydown\"\n >\n\n <button\n v-if=\"clearable && hasSelection && !disabled && !isReadonly\"\n data-testid=\"gr-tree-select-clear\"\n data-gr-tree-select-clear\n type=\"button\"\n class=\"absolute top-1/2 -translate-y-1/2 right-3 h-6 w-6 inline-flex items-center justify-center rounded-[var(--gr-radius-control)] text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)] hover:bg-[color-mix(in_srgb,var(--gr-muted)_25%,transparent)]\"\n :aria-label=\"t('gr.common.clear', 'Clear')\"\n @click.stop=\"clear\"\n >\n <span class=\"i-lucide-x inline-block h-4 w-4\" />\n </button>\n\n <span\n v-else\n data-testid=\"gr-tree-select-chevron\"\n data-gr-tree-select-chevron\n class=\"absolute top-1/2 -translate-y-1/2 right-3 text-[var(--gr-muted-fg)] pointer-events-none\"\n >\n <span\n class=\"i-lucide-chevron-down inline-block h-4 w-4 transition-transform duration-[var(--gr-duration-fast)]\"\n :class=\"open ? 'rotate-180' : ''\"\n />\n </span>\n\n <div\n v-if=\"hasSuffix\"\n ref=\"suffixEl\"\n data-gr-tree-select-suffix\n class=\"absolute inset-y-px right-9 flex items-center justify-center border-l border-[var(--gr-brd)] px-2 text-[var(--gr-muted-fg)] pointer-events-none select-none truncate\"\n :class=\"suffixFixed ? '[direction:rtl]' : ''\"\n :style=\"suffixStyle\"\n aria-hidden=\"true\"\n >\n <slot name=\"suffix\" />\n </div>\n\n <div\n v-if=\"$slots.value\"\n class=\"absolute inset-y-0 left-3 right-9 flex items-center pointer-events-none\"\n :style=\"valueOverlayStyle\"\n >\n <slot\n name=\"value\"\n :value=\"modelValue\"\n :labels=\"selectedLabels\"\n :display-value=\"displayValue\"\n :path-labels=\"selectedPathLabels\"\n />\n </div>\n </div>\n\n <teleport :to=\"portalTarget\" :disabled=\"!teleportEnabled\">\n <transition\n enter-active-class=\"transition ease-[var(--gr-ease-out)] duration-[var(--gr-duration-fast)]\"\n enter-from-class=\"transform opacity-0 scale-95\"\n enter-to-class=\"transform opacity-100 scale-100\"\n leave-active-class=\"transition ease-[var(--gr-ease-in)] duration-[var(--gr-duration-fast)]\"\n leave-from-class=\"transform opacity-100 scale-100\"\n leave-to-class=\"transform opacity-0 scale-95\"\n >\n <div\n v-show=\"open\"\n ref=\"panelEl\"\n data-testid=\"gr-tree-select-panel\"\n v-bind=\"themeAttrs\"\n data-gr-tree-select-panel\n data-gr-overlay-root\n :style=\"floatingStyle\"\n @keydown=\"onPanelKeydown\"\n >\n <div :class=\"panelClasses\">\n <div v-if=\"filterable\" class=\"p-2 border-b border-[var(--gr-brd)]\">\n <GrInput\n ref=\"filterInputRef\"\n v-model=\"filterValue\"\n data-testid=\"gr-tree-select-filter\"\n data-gr-tree-select-filter\n type=\"search\"\n :inputmode=\"filterInputmode\"\n :placeholder=\"resolvedFilterPlaceholder\"\n size=\"sm\"\n @keydown=\"onFilterKeydown\"\n />\n </div>\n\n <!--\n Скроллер один. При виртуализации его берёт на себя дерево: своя\n высота нужна ему, чтобы посчитать окно, а вложенный скроллер поверх\n дал бы вторую полосу прокрутки на том же списке.\n -->\n <div\n class=\"p-1\"\n :class=\"virtual ? '' : 'overflow-auto'\"\n :style=\"virtual ? undefined : { maxHeight: `${dropdownMaxHeight}px` }\"\n >\n <div\n v-if=\"loading\"\n data-gr-tree-select-loading\n role=\"status\"\n :class=\"grTreeSelectStateClass\"\n >\n <slot name=\"loading\">\n <span class=\"i-lucide-loader-circle block h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n <span>{{ t('gr.treeSelect.loading', 'Loading…') }}</span>\n </slot>\n </div>\n\n <div v-else-if=\"(data?.length ?? 0) === 0\" :class=\"grTreeSelectStateClass\">\n <slot name=\"empty\">\n {{ t('gr.treeSelect.empty', 'No data') }}\n </slot>\n </div>\n\n <GrTree\n v-else\n :id=\"treeId\"\n ref=\"treeRef\"\n :size=\"resolvedSize\"\n :data=\"data\"\n :props=\"props.props\"\n :node-key=\"nodeKey as any\"\n :default-expanded-keys=\"defaultExpandedKeys\"\n :filter-node-method=\"filterNodeMethod\"\n :highlight-current=\"!multiple\"\n :virtual=\"virtual\"\n :max-height=\"dropdownMaxHeight\"\n :show-checkbox=\"checkboxMode\"\n :check-strictly=\"checkStrictly\"\n :checked-keys=\"selectedKeys\"\n @node-click=\"onNodeClick\"\n @update:checked-keys=\"onCheckedKeys\"\n >\n <template #default=\"{ node, data }\">\n <slot\n name=\"node\"\n :node=\"node\"\n :data=\"data\"\n :selected=\"selectedKeySet.has(node.key)\"\n >\n <div class=\"flex items-center gap-2 min-w-0\">\n <!-- Чекбокс дерева уже показывает отметку: вторая галочка\n рядом читалась бы как ошибка. -->\n <span\n v-if=\"!checkboxMode\"\n data-gr-tree-select-check\n class=\"inline-block h-4 w-4 shrink-0\"\n :class=\"selectedKeySet.has(node.key) ? 'i-lucide-check text-[var(--gr-primary)]' : ''\"\n aria-hidden=\"true\"\n />\n <span class=\"truncate\">{{ node.label }}</span>\n </div>\n </slot>\n </template>\n </GrTree>\n </div>\n </div>\n </div>\n </transition>\n </teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-DPDFYzIa.js";
2
- import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-CdaLG7Xq.js";
1
+ import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "../../chunks/config-DCFvmHEv2.js";
2
+ import { t as GrTreeSelect_default } from "./chunks/GrTreeSelect-DZp7CqqW.js";
3
3
  export { GrTreeSelect_default as GrTreeSelect, GrTreeSelect_default as default, grTreeSelectConfig, grTreeSelectSafelist };
@@ -0,0 +1,114 @@
1
+ import { t as ensurePortalRoot } from "../chunks/portalRoot-CWD4zHBm.js";
2
+ //#region src/composables/useAnnouncer.ts
3
+ var HOST_ID = "gr-announcer";
4
+ var DEFAULT_CLEAR_AFTER_MS = 7e3;
5
+ /**
6
+ * Визуальное скрытие — инлайновым стилем, а не классом `sr-only`.
7
+ *
8
+ * Узлы создаются императивно и в скан UnoCSS не попадают ни при каком safelist:
9
+ * пресет сканирует `dist/components/**`, а этого класса там нет — CSS к нему не
10
+ * сгенерируется, и регион окажется видимой строкой посреди страницы.
11
+ *
12
+ * Ни `display: none`, ни `visibility: hidden`: их содержимое AT не читает.
13
+ */
14
+ var VISUALLY_HIDDEN = [
15
+ "position:absolute",
16
+ "width:1px",
17
+ "height:1px",
18
+ "margin:-1px",
19
+ "padding:0",
20
+ "overflow:hidden",
21
+ "clip:rect(0 0 0 0)",
22
+ "clip-path:inset(50%)",
23
+ "white-space:nowrap",
24
+ "border:0"
25
+ ].join(";");
26
+ var host = null;
27
+ var writeTimers = /* @__PURE__ */ new Map();
28
+ var clearTimers = /* @__PURE__ */ new Map();
29
+ function createRegion(politeness) {
30
+ const region = document.createElement("div");
31
+ region.setAttribute("role", politeness === "assertive" ? "alert" : "status");
32
+ region.setAttribute("aria-live", politeness);
33
+ region.setAttribute("aria-atomic", "true");
34
+ region.setAttribute("data-gr-announcer-region", politeness);
35
+ region.setAttribute("style", VISUALLY_HIDDEN);
36
+ return region;
37
+ }
38
+ /**
39
+ * Создаёт хост при первом обращении. `null` на сервере.
40
+ *
41
+ * Узлы обязаны появиться в документе **раньше** текста: регион, который
42
+ * возникает сразу с содержимым, часть AT не объявляет вовсе. Поэтому хост
43
+ * ставится в момент `useAnnouncer()`, а текст пишется отложенно.
44
+ */
45
+ function ensureHost() {
46
+ if (typeof document === "undefined") return null;
47
+ if (host?.polite.isConnected) return host;
48
+ document.getElementById(HOST_ID)?.remove();
49
+ const container = document.createElement("div");
50
+ container.id = HOST_ID;
51
+ container.setAttribute("data-gr-live-region", "");
52
+ const polite = createRegion("polite");
53
+ const assertive = createRegion("assertive");
54
+ container.append(polite, assertive);
55
+ (ensurePortalRoot() ?? document.body).appendChild(container);
56
+ host = {
57
+ polite,
58
+ assertive
59
+ };
60
+ return host;
61
+ }
62
+ function cancel(map, region) {
63
+ const handle = map.get(region);
64
+ if (handle === void 0) return;
65
+ clearTimeout(handle);
66
+ map.delete(region);
67
+ }
68
+ function useAnnouncer() {
69
+ const resolved = ensureHost();
70
+ function regionFor(politeness) {
71
+ return politeness === "assertive" ? resolved?.assertive ?? null : resolved?.polite ?? null;
72
+ }
73
+ function clear(politeness) {
74
+ const targets = politeness ? [regionFor(politeness)] : [regionFor("polite"), regionFor("assertive")];
75
+ for (const region of targets) {
76
+ if (!region) continue;
77
+ cancel(writeTimers, region);
78
+ cancel(clearTimers, region);
79
+ region.textContent = "";
80
+ }
81
+ }
82
+ function announce(message, options = {}) {
83
+ const region = regionFor(options.politeness ?? "polite");
84
+ if (!region || !message) return;
85
+ cancel(writeTimers, region);
86
+ cancel(clearTimers, region);
87
+ region.textContent = "";
88
+ writeTimers.set(region, setTimeout(() => {
89
+ writeTimers.delete(region);
90
+ region.textContent = message;
91
+ const clearAfterMs = options.clearAfterMs ?? DEFAULT_CLEAR_AFTER_MS;
92
+ if (clearAfterMs <= 0) return;
93
+ clearTimers.set(region, setTimeout(() => {
94
+ clearTimers.delete(region);
95
+ region.textContent = "";
96
+ }, clearAfterMs));
97
+ }, 0));
98
+ }
99
+ return {
100
+ announce,
101
+ clear
102
+ };
103
+ }
104
+ /** Тестовая/служебная очистка: снимает хост и все отложенные записи. */
105
+ function resetAnnouncer() {
106
+ for (const map of [writeTimers, clearTimers]) {
107
+ for (const handle of map.values()) clearTimeout(handle);
108
+ map.clear();
109
+ }
110
+ if (typeof document !== "undefined") document.getElementById(HOST_ID)?.remove();
111
+ host = null;
112
+ }
113
+ //#endregion
114
+ export { resetAnnouncer, useAnnouncer };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnouncer.js","names":[],"sources":["../../src/composables/useAnnouncer.ts"],"sourcesContent":["import { ensurePortalRoot } from './internal/portalRoot'\n\n/**\n * Общий живой регион пакета: один канал `aria-live` на документ.\n *\n * До него каждый компонент строил свой `role=\"status\"`, а сообщить что-то\n * скринридеру из кода приложения («скопировано», «строка удалена», «найдено N»)\n * было нечем вовсе. Регион виджета остаётся правильным решением, когда он\n * рендерит **состояние** этого виджета (счётчик символов, «загружается»,\n * «ничего не найдено»); объявитель — для **события**, которое произошло и\n * прошло, и своего места в разметке не имеет.\n *\n * ```ts\n * const { announce } = useAnnouncer()\n * announce('Ссылка скопирована')\n * announce('Не удалось сохранить', { politeness: 'assertive' })\n * ```\n *\n * Композабл не требует setup-контекста: его можно звать из обычного `.ts` —\n * из стора, обработчика, перехватчика запросов.\n */\n\nexport type GrAnnouncerPoliteness = 'polite' | 'assertive'\n\nexport interface GrAnnounceOptions {\n /**\n * `assertive` перебивает текущую речь и уместен только для того, что нельзя\n * пропустить (отказ операции, потеря соединения). По умолчанию `polite` —\n * диктор дочитает начатое.\n */\n politeness?: GrAnnouncerPoliteness\n /**\n * Через сколько мс стереть текст. `0` — не стирать.\n *\n * Регион остаётся в DOM, и пользователь виртуального курсора наткнётся на\n * его содержимое при обходе страницы — через минуту после события это уже\n * дезинформация. По умолчанию `7000`.\n */\n clearAfterMs?: number\n}\n\nexport interface GrAnnouncer {\n announce: (message: string, options?: GrAnnounceOptions) => void\n /** Стирает текст региона. Без аргумента — обоих. */\n clear: (politeness?: GrAnnouncerPoliteness) => void\n}\n\nconst HOST_ID = 'gr-announcer'\nconst DEFAULT_CLEAR_AFTER_MS = 7000\n\n/**\n * Визуальное скрытие — инлайновым стилем, а не классом `sr-only`.\n *\n * Узлы создаются императивно и в скан UnoCSS не попадают ни при каком safelist:\n * пресет сканирует `dist/components/**`, а этого класса там нет — CSS к нему не\n * сгенерируется, и регион окажется видимой строкой посреди страницы.\n *\n * Ни `display: none`, ни `visibility: hidden`: их содержимое AT не читает.\n */\nconst VISUALLY_HIDDEN = [\n 'position:absolute',\n 'width:1px',\n 'height:1px',\n 'margin:-1px',\n 'padding:0',\n 'overflow:hidden',\n 'clip:rect(0 0 0 0)',\n 'clip-path:inset(50%)',\n 'white-space:nowrap',\n 'border:0',\n].join(';')\n\ninterface AnnouncerHost {\n polite: HTMLElement\n assertive: HTMLElement\n}\n\nlet host: AnnouncerHost | null = null\nconst writeTimers = new Map<HTMLElement, ReturnType<typeof setTimeout>>()\nconst clearTimers = new Map<HTMLElement, ReturnType<typeof setTimeout>>()\n\nfunction createRegion(politeness: GrAnnouncerPoliteness): HTMLElement {\n const region = document.createElement('div')\n // `role` подразумевает нужную вежливость, но объявляем и её: связка\n // «роль + aria-live» — то же, что делают регионы компонентов пакета.\n region.setAttribute('role', politeness === 'assertive' ? 'alert' : 'status')\n region.setAttribute('aria-live', politeness)\n region.setAttribute('aria-atomic', 'true')\n region.setAttribute('data-gr-announcer-region', politeness)\n region.setAttribute('style', VISUALLY_HIDDEN)\n return region\n}\n\n/**\n * Создаёт хост при первом обращении. `null` на сервере.\n *\n * Узлы обязаны появиться в документе **раньше** текста: регион, который\n * возникает сразу с содержимым, часть AT не объявляет вовсе. Поэтому хост\n * ставится в момент `useAnnouncer()`, а текст пишется отложенно.\n */\nfunction ensureHost(): AnnouncerHost | null {\n if (typeof document === 'undefined') return null\n if (host?.polite.isConnected) return host\n\n const existing = document.getElementById(HOST_ID)\n existing?.remove()\n\n const container = document.createElement('div')\n container.id = HOST_ID\n // Пропуск для `inertableOutside`: под открытой модалкой хост обязан остаться\n // объявляемым, иначе объявитель молча замолкает ровно там, где нужнее всего.\n container.setAttribute('data-gr-live-region', '')\n\n const polite = createRegion('polite')\n const assertive = createRegion('assertive')\n container.append(polite, assertive)\n\n ;(ensurePortalRoot() ?? document.body).appendChild(container)\n\n host = { polite, assertive }\n return host\n}\n\nfunction cancel(map: Map<HTMLElement, ReturnType<typeof setTimeout>>, region: HTMLElement): void {\n const handle = map.get(region)\n if (handle === undefined) return\n clearTimeout(handle)\n map.delete(region)\n}\n\nexport function useAnnouncer(): GrAnnouncer {\n const resolved = ensureHost()\n\n function regionFor(politeness: GrAnnouncerPoliteness): HTMLElement | null {\n return politeness === 'assertive' ? resolved?.assertive ?? null : resolved?.polite ?? null\n }\n\n function clear(politeness?: GrAnnouncerPoliteness): void {\n const targets = politeness ? [regionFor(politeness)] : [regionFor('polite'), regionFor('assertive')]\n\n for (const region of targets) {\n if (!region) continue\n cancel(writeTimers, region)\n cancel(clearTimers, region)\n region.textContent = ''\n }\n }\n\n function announce(message: string, options: GrAnnounceOptions = {}): void {\n const region = regionFor(options.politeness ?? 'polite')\n if (!region || !message) return\n\n cancel(writeTimers, region)\n cancel(clearTimers, region)\n\n // Очищаем сейчас, пишем следующим тиком: без пустой фазы повтор того же\n // текста («Тег удалён» дважды подряд) не даёт мутации и не читается.\n region.textContent = ''\n\n writeTimers.set(region, setTimeout(() => {\n writeTimers.delete(region)\n region.textContent = message\n\n const clearAfterMs = options.clearAfterMs ?? DEFAULT_CLEAR_AFTER_MS\n if (clearAfterMs <= 0) return\n\n clearTimers.set(region, setTimeout(() => {\n clearTimers.delete(region)\n region.textContent = ''\n }, clearAfterMs))\n }, 0))\n }\n\n return { announce, clear }\n}\n\n/** Тестовая/служебная очистка: снимает хост и все отложенные записи. */\nexport function resetAnnouncer(): void {\n for (const map of [writeTimers, clearTimers]) {\n for (const handle of map.values()) clearTimeout(handle)\n map.clear()\n }\n\n if (typeof document !== 'undefined')\n document.getElementById(HOST_ID)?.remove()\n\n host = null\n}\n"],"mappings":";;AA+CA,IAAM,UAAU;AAChB,IAAM,yBAAyB;;;;;;;;;;AAW/B,IAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,GAAG;AAOV,IAAI,OAA6B;AACjC,IAAM,8BAAc,IAAI,IAAgD;AACxE,IAAM,8BAAc,IAAI,IAAgD;AAExE,SAAS,aAAa,YAAgD;CACpE,MAAM,SAAS,SAAS,cAAc,KAAK;CAG3C,OAAO,aAAa,QAAQ,eAAe,cAAc,UAAU,QAAQ;CAC3E,OAAO,aAAa,aAAa,UAAU;CAC3C,OAAO,aAAa,eAAe,MAAM;CACzC,OAAO,aAAa,4BAA4B,UAAU;CAC1D,OAAO,aAAa,SAAS,eAAe;CAC5C,OAAO;AACT;;;;;;;;AASA,SAAS,aAAmC;CAC1C,IAAI,OAAO,aAAa,aAAa,OAAO;CAC5C,IAAI,MAAM,OAAO,aAAa,OAAO;CAGrC,SAD0B,eAAe,OACzC,CAAA,EAAU,OAAO;CAEjB,MAAM,YAAY,SAAS,cAAc,KAAK;CAC9C,UAAU,KAAK;CAGf,UAAU,aAAa,uBAAuB,EAAE;CAEhD,MAAM,SAAS,aAAa,QAAQ;CACpC,MAAM,YAAY,aAAa,WAAW;CAC1C,UAAU,OAAO,QAAQ,SAAS;CAEjC,CAAC,iBAAiB,KAAK,SAAS,KAAA,CAAM,YAAY,SAAS;CAE5D,OAAO;EAAE;EAAQ;CAAU;CAC3B,OAAO;AACT;AAEA,SAAS,OAAO,KAAsD,QAA2B;CAC/F,MAAM,SAAS,IAAI,IAAI,MAAM;CAC7B,IAAI,WAAW,KAAA,GAAW;CAC1B,aAAa,MAAM;CACnB,IAAI,OAAO,MAAM;AACnB;AAEA,SAAgB,eAA4B;CAC1C,MAAM,WAAW,WAAW;CAE5B,SAAS,UAAU,YAAuD;EACxE,OAAO,eAAe,cAAc,UAAU,aAAa,OAAO,UAAU,UAAU;CACxF;CAEA,SAAS,MAAM,YAA0C;EACvD,MAAM,UAAU,aAAa,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,UAAU,QAAQ,GAAG,UAAU,WAAW,CAAC;EAEnG,KAAK,MAAM,UAAU,SAAS;GAC5B,IAAI,CAAC,QAAQ;GACb,OAAO,aAAa,MAAM;GAC1B,OAAO,aAAa,MAAM;GAC1B,OAAO,cAAc;EACvB;CACF;CAEA,SAAS,SAAS,SAAiB,UAA6B,CAAC,GAAS;EACxE,MAAM,SAAS,UAAU,QAAQ,cAAc,QAAQ;EACvD,IAAI,CAAC,UAAU,CAAC,SAAS;EAEzB,OAAO,aAAa,MAAM;EAC1B,OAAO,aAAa,MAAM;EAI1B,OAAO,cAAc;EAErB,YAAY,IAAI,QAAQ,iBAAiB;GACvC,YAAY,OAAO,MAAM;GACzB,OAAO,cAAc;GAErB,MAAM,eAAe,QAAQ,gBAAgB;GAC7C,IAAI,gBAAgB,GAAG;GAEvB,YAAY,IAAI,QAAQ,iBAAiB;IACvC,YAAY,OAAO,MAAM;IACzB,OAAO,cAAc;GACvB,GAAG,YAAY,CAAC;EAClB,GAAG,CAAC,CAAC;CACP;CAEA,OAAO;EAAE;EAAU;CAAM;AAC3B;;AAGA,SAAgB,iBAAuB;CACrC,KAAK,MAAM,OAAO,CAAC,aAAa,WAAW,GAAG;EAC5C,KAAK,MAAM,UAAU,IAAI,OAAO,GAAG,aAAa,MAAM;EACtD,IAAI,MAAM;CACZ;CAEA,IAAI,OAAO,aAAa,aACtB,SAAS,eAAe,OAAO,CAAC,EAAE,OAAO;CAE3C,OAAO;AACT"}
@@ -0,0 +1,71 @@
1
+ import { computed, ref, watch } from "vue";
2
+ //#region src/composables/useComboboxNavigation.ts
3
+ function useComboboxNavigation(options) {
4
+ const activeIndex = ref(-1);
5
+ const activeItem = computed(() => activeIndex.value >= 0 ? options.items()[activeIndex.value] : void 0);
6
+ const activeDescendantId = computed(() => {
7
+ if (!options.open()) return void 0;
8
+ const item = activeItem.value;
9
+ if (item === void 0) return void 0;
10
+ return options.idOf(item, activeIndex.value);
11
+ });
12
+ function clamp(index) {
13
+ const len = options.items().length;
14
+ if (len === 0) return -1;
15
+ return (index % len + len) % len;
16
+ }
17
+ function setActive(index) {
18
+ activeIndex.value = clamp(index);
19
+ const item = activeItem.value;
20
+ if (item !== void 0) options.scrollTo?.(item, activeIndex.value);
21
+ }
22
+ function init() {
23
+ const len = options.items().length;
24
+ if (len === 0) {
25
+ activeIndex.value = -1;
26
+ return;
27
+ }
28
+ const preferred = options.initialIndex?.() ?? -1;
29
+ activeIndex.value = preferred >= 0 && preferred < len ? preferred : 0;
30
+ }
31
+ function reset(index = -1) {
32
+ activeIndex.value = index;
33
+ }
34
+ watch(options.items, (items) => {
35
+ if (!options.open()) return;
36
+ if (activeIndex.value >= items.length) activeIndex.value = items.length - 1;
37
+ if (activeIndex.value < 0 && items.length) activeIndex.value = 0;
38
+ });
39
+ function handleNavigationKeys(event) {
40
+ switch (event.key) {
41
+ case "ArrowDown":
42
+ event.preventDefault();
43
+ setActive(activeIndex.value + 1);
44
+ return true;
45
+ case "ArrowUp":
46
+ event.preventDefault();
47
+ setActive(activeIndex.value - 1);
48
+ return true;
49
+ case "Home":
50
+ event.preventDefault();
51
+ setActive(0);
52
+ return true;
53
+ case "End":
54
+ event.preventDefault();
55
+ setActive(options.items().length - 1);
56
+ return true;
57
+ default: return false;
58
+ }
59
+ }
60
+ return {
61
+ activeIndex,
62
+ activeItem,
63
+ activeDescendantId,
64
+ setActive,
65
+ init,
66
+ reset,
67
+ handleNavigationKeys
68
+ };
69
+ }
70
+ //#endregion
71
+ export { useComboboxNavigation };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComboboxNavigation.js","names":[],"sources":["../../src/composables/useComboboxNavigation.ts"],"sourcesContent":["import type { ComputedRef, Ref } from 'vue'\nimport { computed, ref, watch } from 'vue'\n\n/**\n * Активный элемент списка комбобокса (`aria-activedescendant`-паттерн).\n *\n * Одна и та же механика — activeIndex, циклический кламп, id активного, скролл\n * к нему, инициализация при открытии — была написана в пакете четырежды\n * (Select, Autocomplete, CommandPalette, частично Dropdown) и уже расходилась\n * до P1: Enter в Select активировал не тот элемент, что был подсвечен.\n * «Кто активен» обязан быть один на всех.\n *\n * Осознанно **не** обобщается активация: Enter/Tab/typeahead/Space — доменная\n * логика компонента (у Select — `add|option|fallback`, у палитры —\n * `selectItem`). Примитив отдаёт состояние и механические клавиши\n * (`handleNavigationKeys`), активацию компонент делает сам по `activeItem`.\n */\nexport interface UseComboboxNavigationOptions<TItem> {\n /** Навигируемые элементы (без disabled) в порядке отображения. */\n items: () => readonly TItem[]\n /** Открыт ли комбобокс — `activeDescendantId` существует только при открытом. */\n open: () => boolean\n /** DOM id элемента — цель `aria-activedescendant`. */\n idOf: (item: TItem, index: number) => string\n /**\n * Стартовый индекс для `init()` (обычно выбранное значение). Не задан или\n * вне диапазона — первый элемент, при пустом списке — `-1`.\n */\n initialIndex?: () => number\n /**\n * Донести активный элемент до экрана. Виртуализация и `scrollIntoView` —\n * забота компонента: только он знает свой контейнер и смещения окна.\n */\n scrollTo?: (item: TItem, index: number) => void | Promise<void>\n}\n\nexport interface UseComboboxNavigationReturn<TItem> {\n activeIndex: Ref<number>\n activeItem: ComputedRef<TItem | undefined>\n activeDescendantId: ComputedRef<string | undefined>\n /** Циклический кламп + прокрутка к элементу. */\n setActive: (index: number) => void\n /** Активировать стартовый элемент (вызывается при открытии). */\n init: () => void\n /** Сброс активного (вызывается при закрытии; палитра сбрасывает в `0`). */\n reset: (index?: number) => void\n /**\n * Механические клавиши: `ArrowDown`/`ArrowUp`/`Home`/`End`. Возвращает\n * `true`, если клавиша обработана (с `preventDefault`), — остальное\n * компонент разбирает сам.\n */\n handleNavigationKeys: (event: KeyboardEvent) => boolean\n}\n\nexport function useComboboxNavigation<TItem>(\n options: UseComboboxNavigationOptions<TItem>,\n): UseComboboxNavigationReturn<TItem> {\n const activeIndex = ref(-1)\n\n const activeItem = computed<TItem | undefined>(() =>\n activeIndex.value >= 0 ? options.items()[activeIndex.value] : undefined,\n )\n\n const activeDescendantId = computed(() => {\n if (!options.open()) return undefined\n const item = activeItem.value\n if (item === undefined) return undefined\n return options.idOf(item, activeIndex.value)\n })\n\n function clamp(index: number): number {\n const len = options.items().length\n if (len === 0) return -1\n return ((index % len) + len) % len\n }\n\n function setActive(index: number): void {\n activeIndex.value = clamp(index)\n\n const item = activeItem.value\n if (item !== undefined) void options.scrollTo?.(item, activeIndex.value)\n }\n\n function init(): void {\n const len = options.items().length\n if (len === 0) {\n activeIndex.value = -1\n return\n }\n\n const preferred = options.initialIndex?.() ?? -1\n activeIndex.value = preferred >= 0 && preferred < len ? preferred : 0\n }\n\n function reset(index = -1): void {\n activeIndex.value = index\n }\n\n // Список изменился (фильтрация, remote-ответ) — активный не должен указывать\n // мимо. За верхнюю границу — на последний; пустого активного при непустом\n // списке не бывает.\n watch(options.items, (items) => {\n if (!options.open()) return\n if (activeIndex.value >= items.length) activeIndex.value = items.length - 1\n if (activeIndex.value < 0 && items.length) activeIndex.value = 0\n })\n\n function handleNavigationKeys(event: KeyboardEvent): boolean {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n setActive(activeIndex.value + 1)\n return true\n case 'ArrowUp':\n event.preventDefault()\n setActive(activeIndex.value - 1)\n return true\n case 'Home':\n event.preventDefault()\n setActive(0)\n return true\n case 'End':\n event.preventDefault()\n setActive(options.items().length - 1)\n return true\n default:\n return false\n }\n }\n\n return { activeIndex, activeItem, activeDescendantId, setActive, init, reset, handleNavigationKeys }\n}\n"],"mappings":";;AAsDA,SAAgB,sBACd,SACoC;CACpC,MAAM,cAAc,IAAI,EAAE;CAE1B,MAAM,aAAa,eACjB,YAAY,SAAS,IAAI,QAAQ,MAAM,CAAC,CAAC,YAAY,SAAS,KAAA,CAChE;CAEA,MAAM,qBAAqB,eAAe;EACxC,IAAI,CAAC,QAAQ,KAAK,GAAG,OAAO,KAAA;EAC5B,MAAM,OAAO,WAAW;EACxB,IAAI,SAAS,KAAA,GAAW,OAAO,KAAA;EAC/B,OAAO,QAAQ,KAAK,MAAM,YAAY,KAAK;CAC7C,CAAC;CAED,SAAS,MAAM,OAAuB;EACpC,MAAM,MAAM,QAAQ,MAAM,CAAC,CAAC;EAC5B,IAAI,QAAQ,GAAG,OAAO;EACtB,QAAS,QAAQ,MAAO,OAAO;CACjC;CAEA,SAAS,UAAU,OAAqB;EACtC,YAAY,QAAQ,MAAM,KAAK;EAE/B,MAAM,OAAO,WAAW;EACxB,IAAI,SAAS,KAAA,GAAW,QAAa,WAAW,MAAM,YAAY,KAAK;CACzE;CAEA,SAAS,OAAa;EACpB,MAAM,MAAM,QAAQ,MAAM,CAAC,CAAC;EAC5B,IAAI,QAAQ,GAAG;GACb,YAAY,QAAQ;GACpB;EACF;EAEA,MAAM,YAAY,QAAQ,eAAe,KAAK;EAC9C,YAAY,QAAQ,aAAa,KAAK,YAAY,MAAM,YAAY;CACtE;CAEA,SAAS,MAAM,QAAQ,IAAU;EAC/B,YAAY,QAAQ;CACtB;CAKA,MAAM,QAAQ,QAAQ,UAAU;EAC9B,IAAI,CAAC,QAAQ,KAAK,GAAG;EACrB,IAAI,YAAY,SAAS,MAAM,QAAQ,YAAY,QAAQ,MAAM,SAAS;EAC1E,IAAI,YAAY,QAAQ,KAAK,MAAM,QAAQ,YAAY,QAAQ;CACjE,CAAC;CAED,SAAS,qBAAqB,OAA+B;EAC3D,QAAQ,MAAM,KAAd;GACE,KAAK;IACH,MAAM,eAAe;IACrB,UAAU,YAAY,QAAQ,CAAC;IAC/B,OAAO;GACT,KAAK;IACH,MAAM,eAAe;IACrB,UAAU,YAAY,QAAQ,CAAC;IAC/B,OAAO;GACT,KAAK;IACH,MAAM,eAAe;IACrB,UAAU,CAAC;IACX,OAAO;GACT,KAAK;IACH,MAAM,eAAe;IACrB,UAAU,QAAQ,MAAM,CAAC,CAAC,SAAS,CAAC;IACpC,OAAO;GACT,SACE,OAAO;EACX;CACF;CAEA,OAAO;EAAE;EAAa;EAAY;EAAoB;EAAW;EAAM;EAAO;CAAqB;AACrG"}
@@ -0,0 +1,31 @@
1
+ import { useOverlayLayer } from "./useOverlayLayer.js";
2
+ //#region src/composables/useDismissible.ts
3
+ /**
4
+ * Регистрирует оверлей в общем стеке dismissible-слоёв, пока `open` истинно.
5
+ *
6
+ * Контракт один на все оверлеи пакета: **Esc закрывает верхний слой** — тот,
7
+ * что открыт последним, — и ниже не проваливается. Поэтому панель, открытая
8
+ * внутри модалки, по Esc закрывает себя, а не модалку; следующий Esc закроет
9
+ * уже модалку.
10
+ *
11
+ * Композабл нужен и потребителю: свой поповер, меню или подсказка, построенные
12
+ * поверх `useFloating()`, обязаны участвовать в том же стеке — иначе они снова
13
+ * разъедутся с оверлеями библиотеки.
14
+ *
15
+ * ```ts
16
+ * const open = ref(false)
17
+ * useDismissible(open, () => { open.value = false })
18
+ * ```
19
+ *
20
+ * Закрытие по клику вне слоя — отдельная задача, для неё есть директива
21
+ * `vClickOutside`: у Esc есть порядок слоёв, у клика — точка попадания.
22
+ */
23
+ function useDismissible(open, onDismiss, options = {}) {
24
+ useOverlayLayer(open, onDismiss, {
25
+ modal: false,
26
+ closeOnEscape: options.closeOnEscape,
27
+ restoreFocus: false
28
+ });
29
+ }
30
+ //#endregion
31
+ export { useDismissible };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDismissible.js","names":[],"sources":["../../src/composables/useDismissible.ts"],"sourcesContent":["import type { Ref } from 'vue'\n\nimport { useOverlayLayer } from './useOverlayLayer'\n\nexport interface UseDismissibleOptions {\n /**\n * Закрывать ли слой по Esc. Геттер, а не значение, — чтобы читать реактивный\n * проп (`closeOnEsc`). По умолчанию закрывается всегда.\n *\n * Если геттер вернёт `false`, нажатие всё равно не пройдёт на слой ниже:\n * пользователь видит верхний слой, и Esc адресован ему.\n */\n closeOnEscape?: () => boolean\n}\n\n/**\n * Регистрирует оверлей в общем стеке dismissible-слоёв, пока `open` истинно.\n *\n * Контракт один на все оверлеи пакета: **Esc закрывает верхний слой** — тот,\n * что открыт последним, — и ниже не проваливается. Поэтому панель, открытая\n * внутри модалки, по Esc закрывает себя, а не модалку; следующий Esc закроет\n * уже модалку.\n *\n * Композабл нужен и потребителю: свой поповер, меню или подсказка, построенные\n * поверх `useFloating()`, обязаны участвовать в том же стеке — иначе они снова\n * разъедутся с оверлеями библиотеки.\n *\n * ```ts\n * const open = ref(false)\n * useDismissible(open, () => { open.value = false })\n * ```\n *\n * Закрытие по клику вне слоя — отдельная задача, для неё есть директива\n * `vClickOutside`: у Esc есть порядок слоёв, у клика — точка попадания.\n */\nexport function useDismissible(\n open: Ref<boolean>,\n onDismiss: () => void,\n options: UseDismissibleOptions = {},\n): void {\n // Немодальный слой того же стека: очередь Esc общая с модалками, но `inert`\n // поповер ни на что не ставит и фокус не возвращает — им управляет сам\n // компонент (у меню это roving-фокус по пунктам).\n useOverlayLayer(open, onDismiss, {\n modal: false,\n closeOnEscape: options.closeOnEscape,\n restoreFocus: false,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAgB,eACd,MACA,WACA,UAAiC,CAAC,GAC5B;CAIN,gBAAgB,MAAM,WAAW;EAC/B,OAAO;EACP,eAAe,QAAQ;EACvB,cAAc;CAChB,CAAC;AACH"}
@@ -0,0 +1,55 @@
1
+ import { onScopeDispose, ref } from "vue";
2
+ //#region src/composables/useDragGesture.ts
3
+ function useDragGesture(options) {
4
+ const isDragging = ref(false);
5
+ let attached = false;
6
+ function onPointerMove(event) {
7
+ if (!isDragging.value) return;
8
+ options.onMove(event);
9
+ }
10
+ function onPointerUp(event) {
11
+ finish(true, event);
12
+ }
13
+ function onPointerCancel() {
14
+ finish(false);
15
+ }
16
+ function detach() {
17
+ if (!attached) return;
18
+ attached = false;
19
+ window.removeEventListener("pointermove", onPointerMove);
20
+ window.removeEventListener("pointerup", onPointerUp);
21
+ window.removeEventListener("pointercancel", onPointerCancel);
22
+ }
23
+ function finish(commit, event) {
24
+ if (!isDragging.value) return;
25
+ isDragging.value = false;
26
+ detach();
27
+ if (commit) options.onEnd?.(event);
28
+ else options.onCancel?.();
29
+ }
30
+ function start(event) {
31
+ if (isDragging.value) return;
32
+ if (options.disabled?.()) return;
33
+ if (event.button !== 0) return;
34
+ if (options.onStart?.(event) === false) return;
35
+ isDragging.value = true;
36
+ attached = true;
37
+ window.addEventListener("pointermove", onPointerMove);
38
+ window.addEventListener("pointerup", onPointerUp);
39
+ window.addEventListener("pointercancel", onPointerCancel);
40
+ }
41
+ function stop(commit = false) {
42
+ finish(commit);
43
+ }
44
+ onScopeDispose(() => {
45
+ detach();
46
+ isDragging.value = false;
47
+ });
48
+ return {
49
+ isDragging,
50
+ start,
51
+ stop
52
+ };
53
+ }
54
+ //#endregion
55
+ export { useDragGesture };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDragGesture.js","names":[],"sources":["../../src/composables/useDragGesture.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { onScopeDispose, ref } from 'vue'\n\n/**\n * Скелет указательного жеста: нажал, повёл, отпустил.\n *\n * Механика написана в пакете дважды дословно (`GrSlider`, `GrSplitter`) и\n * ещё раз иначе (`GrImageViewer`), а следующие потребители известны заранее —\n * swipe у `GrToaster`, перенос узла в `GrTree`, ресайз колонок `GrDataTable`.\n * Дублируется при этом не разметка, а **правило**: оборванный жест не\n * коммитит. Живя в двух копиях, оно разъезжается молча.\n *\n * Слушатели вешаются на `window`, а не на элемент: указатель уходит за\n * границы дорожки и разделителя постоянно, и жест обязан это переживать.\n * Захват (`setPointerCapture`) дал бы то же самое, но привязал бы жест к\n * живому DOM-узлу — а он в середине жеста может перерисоваться.\n *\n * У жеста **два разных исхода**, и это главное, ради чего примитив заведён:\n * `pointerup` — завершение (значение коммитится), `pointercancel` — обрыв\n * (браузер забрал указатель: системный жест, скролл, потеря окна), и тогда\n * состояние возвращается к тому, что было до нажатия.\n *\n * Осознанно **не** делает:\n * - не вызывает `preventDefault` — в слайдере и сплиттере это гашение\n * выделения текста, а в панорамировании картинки помешало бы; строка\n * дешевле опции, меняющей поведение невидимо;\n * - не считает координаты и дельты — это доменная арифметика компонента;\n * - не знает про порог начала жеста: он нужен сортировке, где нажатие ещё не\n * означает перенос, и появится вместе с ней.\n *\n * ```ts\n * const drag = useDragGesture({\n * disabled: () => isDisabled.value,\n * onStart: (event) => { activeThumb.value = nearestThumb(event) },\n * onMove: (event) => setValue(valueFromPointer(event), false),\n * onEnd: () => commit(),\n * onCancel: () => rollback(),\n * })\n *\n * <div @pointerdown=\"drag.start\" />\n * ```\n */\nexport interface UseDragGestureOptions {\n /** Жест не начинается: `disabled` / `readonly`. */\n disabled?: () => boolean\n /**\n * Нажатие прошло проверки. Вернуть `false` — жест не начинать: так\n * отсеивается попадание мимо цели, когда `disabled` тут ни при чём.\n */\n onStart?: (event: PointerEvent) => boolean | void\n onMove: (event: PointerEvent) => void\n /** Жест завершён отпусканием: значение коммитится. */\n onEnd?: (event?: PointerEvent) => void\n /** Жест оборван: откат к состоянию до нажатия. */\n onCancel?: () => void\n}\n\nexport interface UseDragGestureReturn {\n /** Идёт ли жест. Менять снаружи не нужно — состоянием владеет примитив. */\n isDragging: Ref<boolean>\n /** Вешается на `@pointerdown` цели. */\n start: (event: PointerEvent) => void\n /** Принудительное завершение. По умолчанию — как обрыв, без коммита. */\n stop: (commit?: boolean) => void\n}\n\nexport function useDragGesture(options: UseDragGestureOptions): UseDragGestureReturn {\n const isDragging = ref(false)\n\n // Флаг вместо проверки `isDragging`: `detach` зовётся и из `onScopeDispose`,\n // где жеста могло не быть вовсе, — а на сервере `window` трогать нельзя.\n let attached = false\n\n function onPointerMove(event: PointerEvent): void {\n if (!isDragging.value) return\n\n options.onMove(event)\n }\n\n function onPointerUp(event: PointerEvent): void {\n finish(true, event)\n }\n\n function onPointerCancel(): void {\n finish(false)\n }\n\n function detach(): void {\n if (!attached) return\n\n attached = false\n window.removeEventListener('pointermove', onPointerMove)\n window.removeEventListener('pointerup', onPointerUp)\n window.removeEventListener('pointercancel', onPointerCancel)\n }\n\n function finish(commit: boolean, event?: PointerEvent): void {\n if (!isDragging.value) return\n\n isDragging.value = false\n detach()\n\n if (commit) options.onEnd?.(event)\n else options.onCancel?.()\n }\n\n function start(event: PointerEvent): void {\n if (isDragging.value) return\n if (options.disabled?.()) return\n // Только основная кнопка: правый и средний клик перетаскиванием не считаются.\n if (event.button !== 0) return\n if (options.onStart?.(event) === false) return\n\n isDragging.value = true\n attached = true\n window.addEventListener('pointermove', onPointerMove)\n window.addEventListener('pointerup', onPointerUp)\n window.addEventListener('pointercancel', onPointerCancel)\n }\n\n function stop(commit = false): void {\n finish(commit)\n }\n\n // Область умерла посреди жеста: слушатели снимаются, но обработчики не\n // зовутся — коммитить и откатывать уже некому и некуда.\n onScopeDispose(() => {\n detach()\n isDragging.value = false\n })\n\n return { isDragging, start, stop }\n}\n"],"mappings":";;AAkEA,SAAgB,eAAe,SAAsD;CACnF,MAAM,aAAa,IAAI,KAAK;CAI5B,IAAI,WAAW;CAEf,SAAS,cAAc,OAA2B;EAChD,IAAI,CAAC,WAAW,OAAO;EAEvB,QAAQ,OAAO,KAAK;CACtB;CAEA,SAAS,YAAY,OAA2B;EAC9C,OAAO,MAAM,KAAK;CACpB;CAEA,SAAS,kBAAwB;EAC/B,OAAO,KAAK;CACd;CAEA,SAAS,SAAe;EACtB,IAAI,CAAC,UAAU;EAEf,WAAW;EACX,OAAO,oBAAoB,eAAe,aAAa;EACvD,OAAO,oBAAoB,aAAa,WAAW;EACnD,OAAO,oBAAoB,iBAAiB,eAAe;CAC7D;CAEA,SAAS,OAAO,QAAiB,OAA4B;EAC3D,IAAI,CAAC,WAAW,OAAO;EAEvB,WAAW,QAAQ;EACnB,OAAO;EAEP,IAAI,QAAQ,QAAQ,QAAQ,KAAK;OAC5B,QAAQ,WAAW;CAC1B;CAEA,SAAS,MAAM,OAA2B;EACxC,IAAI,WAAW,OAAO;EACtB,IAAI,QAAQ,WAAW,GAAG;EAE1B,IAAI,MAAM,WAAW,GAAG;EACxB,IAAI,QAAQ,UAAU,KAAK,MAAM,OAAO;EAExC,WAAW,QAAQ;EACnB,WAAW;EACX,OAAO,iBAAiB,eAAe,aAAa;EACpD,OAAO,iBAAiB,aAAa,WAAW;EAChD,OAAO,iBAAiB,iBAAiB,eAAe;CAC1D;CAEA,SAAS,KAAK,SAAS,OAAa;EAClC,OAAO,MAAM;CACf;CAIA,qBAAqB;EACnB,OAAO;EACP,WAAW,QAAQ;CACrB,CAAC;CAED,OAAO;EAAE;EAAY;EAAO;CAAK;AACnC"}
@@ -0,0 +1,2 @@
1
+ import { t as useDragSort } from "../chunks/useDragSort-0l47h4yb.js";
2
+ export { useDragSort };