@feugene/granularity 0.36.0 → 0.38.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 (367) hide show
  1. package/dist/chunks/config-2ZHRsdOc.js.map +1 -1
  2. package/dist/chunks/config-2vrOFn2f.js.map +1 -1
  3. package/dist/chunks/config-3bQeQvqd.js.map +1 -1
  4. package/dist/chunks/config-87fszqnD.js.map +1 -1
  5. package/dist/chunks/config-8Pcutu1j.js.map +1 -1
  6. package/dist/chunks/config-A-bBiotF.js.map +1 -1
  7. package/dist/chunks/config-B0uvcTPH.js.map +1 -1
  8. package/dist/chunks/config-B3J0alyY.js.map +1 -1
  9. package/dist/chunks/config-B5SBUa6u.js.map +1 -1
  10. package/dist/chunks/config-B7W9VlZ7.js.map +1 -1
  11. package/dist/chunks/config-BDSaD-5p.js.map +1 -1
  12. package/dist/chunks/config-BEO7brpO.js.map +1 -1
  13. package/dist/chunks/config-BNu8lFQB.js.map +1 -1
  14. package/dist/chunks/config-BRESvs9g.js.map +1 -1
  15. package/dist/chunks/config-BTmfQFwi.js.map +1 -1
  16. package/dist/chunks/{config-CuQmUkMw2.js → config-BUNxHnEz.js} +1 -1
  17. package/dist/chunks/config-BUNxHnEz.js.map +1 -0
  18. package/dist/chunks/config-BaWANzzB.js.map +1 -1
  19. package/dist/chunks/config-BcXX7S7B.js.map +1 -1
  20. package/dist/chunks/config-Bd7QfiGj.js.map +1 -1
  21. package/dist/chunks/config-BhfNgyWL.js.map +1 -1
  22. package/dist/chunks/config-Bjn30smH.js.map +1 -1
  23. package/dist/chunks/config-BlJa1Mj9.js.map +1 -1
  24. package/dist/chunks/config-BoUI0t-t.js.map +1 -1
  25. package/dist/chunks/config-BqT6PMzO.js.map +1 -1
  26. package/dist/chunks/config-BscVxZR3.js.map +1 -1
  27. package/dist/chunks/config-BuGlNPE9.js.map +1 -1
  28. package/dist/chunks/config-C0Ea9ePP.js.map +1 -1
  29. package/dist/chunks/config-C0Eu8jpG.js.map +1 -1
  30. package/dist/chunks/config-CDat1wXf.js.map +1 -1
  31. package/dist/chunks/config-CIkdsWUk.js.map +1 -1
  32. package/dist/chunks/config-CJzmDHfI.js.map +1 -1
  33. package/dist/chunks/config-CLjjjPZj.js.map +1 -1
  34. package/dist/chunks/config-CMNfZO7S.js.map +1 -1
  35. package/dist/chunks/config-CQLNjc9X.js.map +1 -0
  36. package/dist/chunks/config-CT4lP6S4.js.map +1 -1
  37. package/dist/chunks/config-CWtfxkM9.js.map +1 -1
  38. package/dist/chunks/config-CYthTVK2.js.map +1 -1
  39. package/dist/chunks/config-CZPDPJlg.js.map +1 -1
  40. package/dist/chunks/config-CbEbLyDE.js.map +1 -1
  41. package/dist/chunks/config-ChPg-BQv.js.map +1 -1
  42. package/dist/chunks/config-CjKpUcmy.js.map +1 -1
  43. package/dist/chunks/config-CjWOTgLL.js.map +1 -1
  44. package/dist/chunks/config-CjXjhphs.js.map +1 -1
  45. package/dist/chunks/config-CnYdE3HZ.js.map +1 -0
  46. package/dist/chunks/config-CsCUuukB.js.map +1 -1
  47. package/dist/chunks/config-CvbVM4ep.js.map +1 -1
  48. package/dist/chunks/config-D0NzGYaE.js.map +1 -1
  49. package/dist/chunks/config-D0W8mGFD.js.map +1 -1
  50. package/dist/chunks/config-D82r782v.js.map +1 -1
  51. package/dist/chunks/config-DBi0GVce.js.map +1 -1
  52. package/dist/chunks/config-DBmdgoVf.js.map +1 -0
  53. package/dist/chunks/config-DCq4JySZ.js.map +1 -1
  54. package/dist/chunks/config-DGC00bTp.js.map +1 -1
  55. package/dist/chunks/config-DIDz_E5m.js.map +1 -1
  56. package/dist/chunks/config-DM0lsduD.js.map +1 -1
  57. package/dist/chunks/config-DNDgp9bB.js.map +1 -1
  58. package/dist/chunks/config-DOYz_SVK.js.map +1 -1
  59. package/dist/chunks/config-DRbojEzO.js.map +1 -1
  60. package/dist/chunks/config-DUNH02Fg.js.map +1 -1
  61. package/dist/chunks/config-DUbbGcfw.js.map +1 -1
  62. package/dist/chunks/config-DVCNvhIG.js.map +1 -0
  63. package/dist/chunks/config-DWL81-aM.js.map +1 -1
  64. package/dist/chunks/config-DZCUPHPU.js.map +1 -1
  65. package/dist/chunks/config-DeyT9dJl.js.map +1 -1
  66. package/dist/chunks/config-DolULhjJ.js.map +1 -1
  67. package/dist/chunks/config-DpAYidyY.js.map +1 -0
  68. package/dist/chunks/config-Droqn55j.js.map +1 -1
  69. package/dist/chunks/config-DwABJHEo.js.map +1 -1
  70. package/dist/chunks/config-E1cTyRVV.js.map +1 -1
  71. package/dist/chunks/config-MmPym-Z7.js.map +1 -0
  72. package/dist/chunks/config-QaIc_gRa.js.map +1 -1
  73. package/dist/chunks/config-Yy67uWHY.js.map +1 -1
  74. package/dist/chunks/config-Z5LeUXys.js.map +1 -1
  75. package/dist/chunks/config-_jbgsFpw.js.map +1 -1
  76. package/dist/chunks/config-eXB87DOi.js.map +1 -1
  77. package/dist/chunks/config-rLkc9Zn2.js.map +1 -1
  78. package/dist/chunks/{context-CTbuwcYs.js → context-CPMRfwVr.js} +1 -1
  79. package/dist/chunks/{context-CTbuwcYs.js.map → context-CPMRfwVr.js.map} +1 -1
  80. package/dist/chunks/devHook-CiqijpNM.js +44 -0
  81. package/dist/chunks/devHook-CiqijpNM.js.map +1 -0
  82. package/dist/chunks/{grRadioStyles-DGL2QLy6.js → grRadioStyles-BwRyCjQQ.js} +4 -2
  83. package/dist/chunks/{grRadioStyles-DGL2QLy6.js.map → grRadioStyles-BwRyCjQQ.js.map} +1 -1
  84. package/dist/chunks/{granular-provider-Bp_BCBnr.js → granular-provider-DP2gk0oa.js} +9 -8
  85. package/dist/chunks/{granular-provider-Bp_BCBnr.js.map → granular-provider-DP2gk0oa.js.map} +1 -1
  86. package/dist/chunks/{overlayStack-0CZS99Da.js → overlayStack-DH4Z7am1.js} +45 -25
  87. package/dist/chunks/overlayStack-DH4Z7am1.js.map +1 -0
  88. package/dist/chunks/{renamedProp-BwcN-SJg.js → renamedProp-Dy96tT-F.js} +1 -1
  89. package/dist/chunks/{renamedProp-BwcN-SJg.js.map → renamedProp-Dy96tT-F.js.map} +1 -1
  90. package/dist/chunks/{useModalOverlay-BnAGZpcI.js → useModalOverlay-ACRkflzx.js} +3 -3
  91. package/dist/chunks/{useModalOverlay-BnAGZpcI.js.map → useModalOverlay-ACRkflzx.js.map} +1 -1
  92. package/dist/chunks/{usePortalTarget-C0p-mhaM.js → usePortalTarget-BhrRgdqW.js} +1 -1
  93. package/dist/chunks/{usePortalTarget-C0p-mhaM.js.map → usePortalTarget-BhrRgdqW.js.map} +1 -1
  94. package/dist/chunks/{validation-5HhpanPP.js → validation-BDjqsuGB.js} +1 -1
  95. package/dist/chunks/{validation-5HhpanPP.js.map → validation-BDjqsuGB.js.map} +1 -1
  96. package/dist/components/GrAlert/chunks/{GrAlert-FAVf-ksH.js → GrAlert-D72y1IEh.js} +1 -1
  97. package/dist/components/GrAlert/chunks/{GrAlert-FAVf-ksH.js.map → GrAlert-D72y1IEh.js.map} +1 -1
  98. package/dist/components/GrAlert/index.js +1 -1
  99. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-BQsSE7sj.js → GrAutocomplete-BpmFmpKs.js} +4 -6
  100. package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-BQsSE7sj.js.map → GrAutocomplete-BpmFmpKs.js.map} +1 -1
  101. package/dist/components/GrAutocomplete/index.js +1 -1
  102. package/dist/components/GrAvatar/chunks/{GrAvatar-CNmLmgcr.js → GrAvatar-dWEXiCJG.js} +1 -1
  103. package/dist/components/GrAvatar/chunks/{GrAvatar-CNmLmgcr.js.map → GrAvatar-dWEXiCJG.js.map} +1 -1
  104. package/dist/components/GrAvatar/index.js +1 -1
  105. package/dist/components/GrBadge/chunks/{GrBadge-DpUDXKbq.js → GrBadge-DBeQXEir.js} +2 -2
  106. package/dist/components/GrBadge/chunks/{GrBadge-DpUDXKbq.js.map → GrBadge-DBeQXEir.js.map} +1 -1
  107. package/dist/components/GrBadge/index.js +1 -1
  108. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-B-A3PRkE.js → GrBadgeWrap-wdfxaXiu.js} +3 -1
  109. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-B-A3PRkE.js.map → GrBadgeWrap-wdfxaXiu.js.map} +1 -1
  110. package/dist/components/GrBadgeWrap/index.js +1 -1
  111. package/dist/components/GrBottomNav/chunks/{GrBottomNav-wtFatLjB.js → GrBottomNav-nE08pVUJ.js} +1 -1
  112. package/dist/components/GrBottomNav/chunks/{GrBottomNav-wtFatLjB.js.map → GrBottomNav-nE08pVUJ.js.map} +1 -1
  113. package/dist/components/GrBottomNav/index.js +1 -1
  114. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-DRDNan_n.js → GrBreadcrumbs-DOpwY2EF.js} +3 -3
  115. package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-DRDNan_n.js.map → GrBreadcrumbs-DOpwY2EF.js.map} +1 -1
  116. package/dist/components/GrBreadcrumbs/index.js +1 -1
  117. package/dist/components/GrButton/chunks/{GrButton-7GP0zObj.js → GrButton-CS4TqMtG.js} +1 -1
  118. package/dist/components/GrButton/chunks/{GrButton-7GP0zObj.js.map → GrButton-CS4TqMtG.js.map} +1 -1
  119. package/dist/components/GrButton/index.js +1 -1
  120. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -1
  121. package/dist/components/GrButtonGroup/index.js +1 -1
  122. package/dist/components/GrCard/chunks/{GrCard-BttXz1pQ.js → GrCard-Ck5--lMF.js} +2 -2
  123. package/dist/components/GrCard/chunks/{GrCard-BttXz1pQ.js.map → GrCard-Ck5--lMF.js.map} +1 -1
  124. package/dist/components/GrCard/index.js +1 -1
  125. package/dist/components/GrCheckbox/chunks/{GrCheckbox-CEcHIsXM.js → GrCheckbox-Dp201frb.js} +1 -1
  126. package/dist/components/GrCheckbox/chunks/{GrCheckbox-CEcHIsXM.js.map → GrCheckbox-Dp201frb.js.map} +1 -1
  127. package/dist/components/GrCheckbox/index.js +1 -1
  128. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-BOwrVcFr.js → GrCheckboxGroup-IpqG5qwm.js} +2 -2
  129. package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-BOwrVcFr.js.map → GrCheckboxGroup-IpqG5qwm.js.map} +1 -1
  130. package/dist/components/GrCheckboxGroup/index.js +1 -1
  131. package/dist/components/GrChip/chunks/{GrChip-BTivtwff.js → GrChip-CKqyzYcv.js} +10 -7
  132. package/dist/components/GrChip/chunks/{GrChip-BTivtwff.js.map → GrChip-CKqyzYcv.js.map} +1 -1
  133. package/dist/components/GrChip/index.js +1 -1
  134. package/dist/components/GrChipGroup/chunks/{GrChipGroup-C78Vcwos.js → GrChipGroup-dDGwnC04.js} +1 -1
  135. package/dist/components/GrChipGroup/chunks/{GrChipGroup-C78Vcwos.js.map → GrChipGroup-dDGwnC04.js.map} +1 -1
  136. package/dist/components/GrChipGroup/index.js +1 -1
  137. package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-Dp0eEBTZ.js → GrCodeBlock-BUOwKwQE.js} +2 -2
  138. package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-Dp0eEBTZ.js.map → GrCodeBlock-BUOwKwQE.js.map} +1 -1
  139. package/dist/components/GrCodeBlock/index.js +1 -1
  140. package/dist/components/GrCollapse/chunks/{GrCollapse-BlW6ybdL.js → GrCollapse-DWH3QAnU.js} +6 -5
  141. package/dist/components/GrCollapse/chunks/{GrCollapse-BlW6ybdL.js.map → GrCollapse-DWH3QAnU.js.map} +1 -1
  142. package/dist/components/GrCollapse/index.js +1 -1
  143. package/dist/components/GrColorPicker/chunks/{GrColorPicker-B-L4CWMt.js → GrColorPicker-BwzRLs-i.js} +4 -4
  144. package/dist/components/GrColorPicker/chunks/{GrColorPicker-B-L4CWMt.js.map → GrColorPicker-BwzRLs-i.js.map} +1 -1
  145. package/dist/components/GrColorPicker/index.js +1 -1
  146. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-8HkYmMVP.js → GrCommandPalette-CnzPuoIM.js} +7 -7
  147. package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-8HkYmMVP.js.map → GrCommandPalette-CnzPuoIM.js.map} +1 -1
  148. package/dist/components/GrCommandPalette/index.js +1 -1
  149. package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-BF7R3hgg.js → GrConfigProvider-t9x2UToH.js} +13 -12
  150. package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-BF7R3hgg.js.map → GrConfigProvider-t9x2UToH.js.map} +1 -1
  151. package/dist/components/GrConfigProvider/index.js +2 -2
  152. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CZEO2JR4.js → GrConfirmDialog-e15nFI8M.js} +4 -4
  153. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-CZEO2JR4.js.map → GrConfirmDialog-e15nFI8M.js.map} +1 -1
  154. package/dist/components/GrConfirmDialog/index.js +1 -1
  155. package/dist/components/GrContextMenu/chunks/{GrContextMenu-DlFWm0eW.js → GrContextMenu-RpxMHQXH.js} +1 -1
  156. package/dist/components/GrContextMenu/chunks/{GrContextMenu-DlFWm0eW.js.map → GrContextMenu-RpxMHQXH.js.map} +1 -1
  157. package/dist/components/GrContextMenu/index.js +1 -1
  158. package/dist/components/GrDataTable/chunks/{GrDataTable-4JAgOQ-7.js → GrDataTable-BYYG_XZA.js} +5 -5
  159. package/dist/components/GrDataTable/chunks/{GrDataTable-4JAgOQ-7.js.map → GrDataTable-BYYG_XZA.js.map} +1 -1
  160. package/dist/components/GrDataTable/index.js +1 -1
  161. package/dist/components/GrDelta/chunks/{GrDelta-BZwkgQW-.js → GrDelta-BpfqebEV.js} +0 -0
  162. package/dist/components/GrDelta/chunks/{GrDelta-BZwkgQW-.js.map → GrDelta-BpfqebEV.js.map} +1 -1
  163. package/dist/components/GrDelta/index.js +1 -1
  164. package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-BMeCgFV3.js → GrDescriptionList-D8ANFpn_.js} +2 -2
  165. package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-BMeCgFV3.js.map → GrDescriptionList-D8ANFpn_.js.map} +1 -1
  166. package/dist/components/GrDescriptionList/index.js +2 -2
  167. package/dist/components/GrDialog/chunks/{GrDialog-CKNbnxwO.js → GrDialog-DDz_OEhk.js} +3 -3
  168. package/dist/components/GrDialog/chunks/{GrDialog-CKNbnxwO.js.map → GrDialog-DDz_OEhk.js.map} +1 -1
  169. package/dist/components/GrDialog/index.js +1 -1
  170. package/dist/components/GrDialogService/chunks/{GrDialogService-Ut8iiBQh.js → GrDialogService-BmXiYmUp.js} +9 -8
  171. package/dist/components/GrDialogService/chunks/{GrDialogService-Ut8iiBQh.js.map → GrDialogService-BmXiYmUp.js.map} +1 -1
  172. package/dist/components/GrDialogService/index.js +1 -1
  173. package/dist/components/GrDivider/chunks/{GrDivider-BXavGcMX.js → GrDivider-DxA-zV25.js} +1 -1
  174. package/dist/components/GrDivider/chunks/{GrDivider-BXavGcMX.js.map → GrDivider-DxA-zV25.js.map} +1 -1
  175. package/dist/components/GrDivider/index.js +1 -1
  176. package/dist/components/GrDrawer/chunks/{GrDrawer-xfoy-MCj.js → GrDrawer-BRMHhvbd.js} +5 -5
  177. package/dist/components/GrDrawer/chunks/{GrDrawer-xfoy-MCj.js.map → GrDrawer-BRMHhvbd.js.map} +1 -1
  178. package/dist/components/GrDrawer/index.js +1 -1
  179. package/dist/components/GrDropdown/chunks/{GrDropdown-7r772-Cq.js → GrDropdown-cLZuZMEY.js} +6 -8
  180. package/dist/components/GrDropdown/chunks/{GrDropdown-7r772-Cq.js.map → GrDropdown-cLZuZMEY.js.map} +1 -1
  181. package/dist/components/GrDropdown/index.js +1 -1
  182. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DNurbsWc.js → GrDropdownMenu-Dxkz_ry4.js} +1 -1
  183. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DNurbsWc.js.map → GrDropdownMenu-Dxkz_ry4.js.map} +1 -1
  184. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-B33ZzwfB.js.map +1 -1
  185. package/dist/components/GrDropdownMenu/index.js +1 -1
  186. package/dist/components/GrEmptyState/chunks/{GrEmptyState-RqsWvgI9.js → GrEmptyState-BbvwE-E0.js} +2 -2
  187. package/dist/components/GrEmptyState/chunks/{GrEmptyState-RqsWvgI9.js.map → GrEmptyState-BbvwE-E0.js.map} +1 -1
  188. package/dist/components/GrEmptyState/index.js +1 -1
  189. package/dist/components/GrFilePreview/chunks/{GrFilePreview-C9Z7hMK8.js → GrFilePreview-PabkLgYX.js} +1 -1
  190. package/dist/components/GrFilePreview/chunks/{GrFilePreview-C9Z7hMK8.js.map → GrFilePreview-PabkLgYX.js.map} +1 -1
  191. package/dist/components/GrFilePreview/index.js +1 -1
  192. package/dist/components/GrFileUpload/chunks/{GrFileUpload-C0ROpmOY.js → GrFileUpload-BwMR71zN.js} +4 -4
  193. package/dist/components/GrFileUpload/chunks/{GrFileUpload-C0ROpmOY.js.map → GrFileUpload-BwMR71zN.js.map} +1 -1
  194. package/dist/components/GrFileUpload/index.js +1 -1
  195. package/dist/components/GrForm/chunks/{GrForm-CrnfCsgj.js → GrForm-xTtavR-K.js} +1 -1
  196. package/dist/components/GrForm/chunks/{GrForm-CrnfCsgj.js.map → GrForm-xTtavR-K.js.map} +1 -1
  197. package/dist/components/GrForm/index.js +2 -2
  198. package/dist/components/GrFormField/chunks/{GrFormField-DSylU7IU.js → GrFormField-DO61vxpS.js} +2 -2
  199. package/dist/components/GrFormField/chunks/{GrFormField-DSylU7IU.js.map → GrFormField-DO61vxpS.js.map} +1 -1
  200. package/dist/components/GrFormField/index.js +1 -1
  201. package/dist/components/GrFormFile/chunks/{GrFormFile-B1jGZyIj.js → GrFormFile-Dlxx-9zi.js} +3 -3
  202. package/dist/components/GrFormFile/chunks/{GrFormFile-B1jGZyIj.js.map → GrFormFile-Dlxx-9zi.js.map} +1 -1
  203. package/dist/components/GrFormFile/index.js +1 -1
  204. package/dist/components/GrFormSection/chunks/{GrFormSection-ejieOg9H.js → GrFormSection-DV1S6R_N.js} +1 -1
  205. package/dist/components/GrFormSection/chunks/{GrFormSection-ejieOg9H.js.map → GrFormSection-DV1S6R_N.js.map} +1 -1
  206. package/dist/components/GrFormSection/index.js +1 -1
  207. package/dist/components/GrIcon/chunks/{GrIcon-Dmf0c9ba.js → GrIcon-DTZIgmje.js} +1 -1
  208. package/dist/components/GrIcon/chunks/{GrIcon-Dmf0c9ba.js.map → GrIcon-DTZIgmje.js.map} +1 -1
  209. package/dist/components/GrIcon/index.js +1 -1
  210. package/dist/components/GrImageViewer/chunks/{GrImageViewer--BU8yrfx.js → GrImageViewer-CcduIFsa.js} +2 -4
  211. package/dist/components/GrImageViewer/chunks/{GrImageViewer--BU8yrfx.js.map → GrImageViewer-CcduIFsa.js.map} +1 -1
  212. package/dist/components/GrImageViewer/index.js +1 -1
  213. package/dist/components/GrInput/chunks/{GrInput-CJ7eu3fR.js → GrInput-TFeBm3gQ.js} +1 -1
  214. package/dist/components/GrInput/chunks/{GrInput-CJ7eu3fR.js.map → GrInput-TFeBm3gQ.js.map} +1 -1
  215. package/dist/components/GrInput/index.js +1 -1
  216. package/dist/components/GrInputTag/chunks/{GrInputTag-ByD9NugQ.js → GrInputTag-DhfUNOA5.js} +3 -3
  217. package/dist/components/GrInputTag/chunks/{GrInputTag-ByD9NugQ.js.map → GrInputTag-DhfUNOA5.js.map} +1 -1
  218. package/dist/components/GrInputTag/index.js +1 -1
  219. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-BXG7DdTe.js → GrJsonViewer-CdtmUpZ3.js} +6 -6
  220. package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-BXG7DdTe.js.map → GrJsonViewer-CdtmUpZ3.js.map} +1 -1
  221. package/dist/components/GrJsonViewer/index.js +2 -2
  222. package/dist/components/GrKbd/chunks/{GrKbd-D2ga1H9i.js → GrKbd-D_a1mPLe.js} +1 -1
  223. package/dist/components/GrKbd/chunks/{GrKbd-D2ga1H9i.js.map → GrKbd-D_a1mPLe.js.map} +1 -1
  224. package/dist/components/GrKbd/index.js +1 -1
  225. package/dist/components/GrLink/chunks/{GrLink-DYXw3W9w.js → GrLink-DwWErumU.js} +2 -2
  226. package/dist/components/GrLink/chunks/{GrLink-DYXw3W9w.js.map → GrLink-DwWErumU.js.map} +1 -1
  227. package/dist/components/GrLink/index.js +2 -2
  228. package/dist/components/GrList/chunks/{GrList-B_CRJB4c.js → GrList-Unya-LXb.js} +3 -3
  229. package/dist/components/GrList/chunks/{GrList-B_CRJB4c.js.map → GrList-Unya-LXb.js.map} +1 -1
  230. package/dist/components/GrList/index.js +1 -1
  231. package/dist/components/GrLoading/chunks/{GrLoading-CMD3Ri9P.js → GrLoading-BDrlrup_.js} +1 -1
  232. package/dist/components/GrLoading/chunks/{GrLoading-CMD3Ri9P.js.map → GrLoading-BDrlrup_.js.map} +1 -1
  233. package/dist/components/GrLoading/index.js +1 -1
  234. package/dist/components/GrModal/chunks/{GrModal-DixnhJcu.js → GrModal-Cm0mtSXk.js} +4 -4
  235. package/dist/components/GrModal/chunks/{GrModal-DixnhJcu.js.map → GrModal-Cm0mtSXk.js.map} +1 -1
  236. package/dist/components/GrModal/index.js +1 -1
  237. package/dist/components/GrNavbar/chunks/{GrNavbar-Dr8e5kW-.js → GrNavbar-BRGuksiy.js} +3 -3
  238. package/dist/components/GrNavbar/chunks/{GrNavbar-Dr8e5kW-.js.map → GrNavbar-BRGuksiy.js.map} +1 -1
  239. package/dist/components/GrNavbar/index.js +1 -1
  240. package/dist/components/GrNumberInput/chunks/{GrNumberInput-DQ59YICu.js → GrNumberInput-BqPydXpK.js} +7 -9
  241. package/dist/components/GrNumberInput/chunks/{GrNumberInput-DQ59YICu.js.map → GrNumberInput-BqPydXpK.js.map} +1 -1
  242. package/dist/components/GrNumberInput/index.js +2 -2
  243. package/dist/components/GrPagination/chunks/{GrPagination-68iyAwQz.js → GrPagination-DhbNZHEF.js} +4 -4
  244. package/dist/components/GrPagination/chunks/{GrPagination-68iyAwQz.js.map → GrPagination-DhbNZHEF.js.map} +1 -1
  245. package/dist/components/GrPagination/index.js +1 -1
  246. package/dist/components/GrPopover/chunks/{GrPopover-DEFxDffj.js → GrPopover-CcWvr1ZA.js} +3 -3
  247. package/dist/components/GrPopover/chunks/{GrPopover-DEFxDffj.js.map → GrPopover-CcWvr1ZA.js.map} +1 -1
  248. package/dist/components/GrPopover/index.js +2 -2
  249. package/dist/components/GrProgressBar/chunks/{GrProgressBar-Cd7AaJtR.js → GrProgressBar-C3NRBqIP.js} +2 -2
  250. package/dist/components/GrProgressBar/chunks/{GrProgressBar-Cd7AaJtR.js.map → GrProgressBar-C3NRBqIP.js.map} +1 -1
  251. package/dist/components/GrProgressBar/index.js +1 -1
  252. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-D3yWXYDa.js → GrProgressCircle-CdvbINQc.js} +2 -2
  253. package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-D3yWXYDa.js.map → GrProgressCircle-CdvbINQc.js.map} +1 -1
  254. package/dist/components/GrProgressCircle/index.js +1 -1
  255. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ckeombia.js → GrPromptDialog-8RxQsOQ_.js} +8 -8
  256. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ckeombia.js.map → GrPromptDialog-8RxQsOQ_.js.map} +1 -1
  257. package/dist/components/GrPromptDialog/index.js +1 -1
  258. package/dist/components/GrRadio/chunks/{GrRadio-Aq3v8XgG.js → GrRadio-B1776V9D.js} +2 -2
  259. package/dist/components/GrRadio/chunks/{GrRadio-Aq3v8XgG.js.map → GrRadio-B1776V9D.js.map} +1 -1
  260. package/dist/components/GrRadio/index.js +2 -2
  261. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-y9LVdTWh.js → GrRadioGroup-UgitrBFl.js} +2 -2
  262. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-y9LVdTWh.js.map → GrRadioGroup-UgitrBFl.js.map} +1 -1
  263. package/dist/components/GrRadioGroup/index.js +1 -1
  264. package/dist/components/GrRating/chunks/{GrRating-IEiTOdnF.js → GrRating-DTriyyqG.js} +1 -1
  265. package/dist/components/GrRating/chunks/{GrRating-IEiTOdnF.js.map → GrRating-DTriyyqG.js.map} +1 -1
  266. package/dist/components/GrRating/index.js +1 -1
  267. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DMeOWlzj.js → GrResponseErrorBanner-NEEJZ8zi.js} +2 -2
  268. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DMeOWlzj.js.map → GrResponseErrorBanner-NEEJZ8zi.js.map} +1 -1
  269. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CBVRpgIG.js → GrResponseErrorBanner-ZvBvEQDZ.js} +1 -1
  270. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CBVRpgIG.js.map → GrResponseErrorBanner-ZvBvEQDZ.js.map} +1 -1
  271. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  272. package/dist/components/GrSegmented/chunks/{GrSegmented-CB-VR-yL.js → GrSegmented-NKTi9bMG.js} +1 -1
  273. package/dist/components/GrSegmented/chunks/{GrSegmented-CB-VR-yL.js.map → GrSegmented-NKTi9bMG.js.map} +1 -1
  274. package/dist/components/GrSegmented/index.js +1 -1
  275. package/dist/components/GrSelect/chunks/{GrSelect-Bm3Jugx8.js → GrSelect-Do1iAyp1.js} +6 -6
  276. package/dist/components/GrSelect/chunks/{GrSelect-Bm3Jugx8.js.map → GrSelect-Do1iAyp1.js.map} +1 -1
  277. package/dist/components/GrSelect/index.js +1 -1
  278. package/dist/components/GrSidebar/chunks/{GrSidebar-alkwBUzL.js → GrSidebar-DoKLlHSw.js} +2 -2
  279. package/dist/components/GrSidebar/chunks/{GrSidebar-alkwBUzL.js.map → GrSidebar-DoKLlHSw.js.map} +1 -1
  280. package/dist/components/GrSidebar/index.js +1 -1
  281. package/dist/components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js.map +1 -1
  282. package/dist/components/GrSlider/chunks/{GrSlider-DM6W6U9c.js → GrSlider-Db-jACXz.js} +6 -4
  283. package/dist/components/GrSlider/chunks/{GrSlider-DM6W6U9c.js.map → GrSlider-Db-jACXz.js.map} +1 -1
  284. package/dist/components/GrSlider/index.js +1 -1
  285. package/dist/components/GrSortableList/chunks/{GrSortableList-HyKX--rO.js → GrSortableList-CQCaWivn.js} +1 -1
  286. package/dist/components/GrSortableList/chunks/{GrSortableList-HyKX--rO.js.map → GrSortableList-CQCaWivn.js.map} +1 -1
  287. package/dist/components/GrSortableList/index.js +1 -1
  288. package/dist/components/GrSplitter/chunks/{GrSplitter-MltjaADn.js → GrSplitter-C-XQzq7q.js} +1 -1
  289. package/dist/components/GrSplitter/chunks/{GrSplitter-MltjaADn.js.map → GrSplitter-C-XQzq7q.js.map} +1 -1
  290. package/dist/components/GrSplitter/index.js +1 -1
  291. package/dist/components/GrStatistic/chunks/{GrStatistic-BoLkXw7F.js → GrStatistic-C1_nY4Gc.js} +2 -2
  292. package/dist/components/GrStatistic/chunks/{GrStatistic-BoLkXw7F.js.map → GrStatistic-C1_nY4Gc.js.map} +1 -1
  293. package/dist/components/GrStatistic/index.js +1 -1
  294. package/dist/components/GrSteps/chunks/{GrSteps-CpGHXLOc.js → GrSteps-DXj7m-WO.js} +2 -2
  295. package/dist/components/GrSteps/chunks/{GrSteps-CpGHXLOc.js.map → GrSteps-DXj7m-WO.js.map} +1 -1
  296. package/dist/components/GrSteps/index.js +1 -1
  297. package/dist/components/GrSwitch/chunks/{GrSwitch-7Oe5QfQZ.js → GrSwitch-CriHWT2A.js} +1 -1
  298. package/dist/components/GrSwitch/chunks/{GrSwitch-7Oe5QfQZ.js.map → GrSwitch-CriHWT2A.js.map} +1 -1
  299. package/dist/components/GrSwitch/index.js +1 -1
  300. package/dist/components/GrTabPanels/chunks/{GrTabPanels-BZQS8-JM.js → GrTabPanels-5zsbqS1v.js} +1 -1
  301. package/dist/components/GrTabPanels/chunks/{GrTabPanels-BZQS8-JM.js.map → GrTabPanels-5zsbqS1v.js.map} +1 -1
  302. package/dist/components/GrTabPanels/index.js +1 -1
  303. package/dist/components/GrTable/chunks/{GrTable-jhUTczjv.js → GrTable-iwzHvlMC.js} +1 -1
  304. package/dist/components/GrTable/chunks/{GrTable-jhUTczjv.js.map → GrTable-iwzHvlMC.js.map} +1 -1
  305. package/dist/components/GrTable/index.js +1 -1
  306. package/dist/components/GrTabs/chunks/{GrTabs-CT2nk_HV.js → GrTabs-DHfv67cp.js} +1 -1
  307. package/dist/components/GrTabs/chunks/{GrTabs-CT2nk_HV.js.map → GrTabs-DHfv67cp.js.map} +1 -1
  308. package/dist/components/GrTabs/index.js +1 -1
  309. package/dist/components/GrTextarea/chunks/{GrTextarea-DinXG12-.js → GrTextarea-BII3w61K.js} +1 -1
  310. package/dist/components/GrTextarea/chunks/{GrTextarea-DinXG12-.js.map → GrTextarea-BII3w61K.js.map} +1 -1
  311. package/dist/components/GrTextarea/index.js +1 -1
  312. package/dist/components/GrTimeline/chunks/{GrTimeline-BiHpArsg.js → GrTimeline-Bs60huw0.js} +2 -2
  313. package/dist/components/GrTimeline/chunks/{GrTimeline-BiHpArsg.js.map → GrTimeline-Bs60huw0.js.map} +1 -1
  314. package/dist/components/GrTimeline/index.js +1 -1
  315. package/dist/components/GrToaster/chunks/{GrToaster-COXIBKzq.js → GrToaster-D-sV-9of.js} +4 -4
  316. package/dist/components/GrToaster/chunks/{GrToaster-COXIBKzq.js.map → GrToaster-D-sV-9of.js.map} +1 -1
  317. package/dist/components/GrToaster/index.js +1 -1
  318. package/dist/components/GrTooltip/chunks/{GrTooltip-uYETdbCD.js → GrTooltip-BUiTbROv.js} +3 -3
  319. package/dist/components/GrTooltip/chunks/{GrTooltip-uYETdbCD.js.map → GrTooltip-BUiTbROv.js.map} +1 -1
  320. package/dist/components/GrTooltip/index.js +1 -1
  321. package/dist/components/GrTree/chunks/{GrTree-Ci6CZfKR.js → GrTree-CkELQwR8.js} +1 -2
  322. package/dist/components/GrTree/chunks/{GrTree-Ci6CZfKR.js.map → GrTree-CkELQwR8.js.map} +1 -1
  323. package/dist/components/GrTree/index.js +1 -1
  324. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-MGsyvkJV.js → GrTreeSelect-DurwZ7Cz.js} +4 -4
  325. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-MGsyvkJV.js.map → GrTreeSelect-DurwZ7Cz.js.map} +1 -1
  326. package/dist/components/GrTreeSelect/index.js +1 -1
  327. package/dist/components/GrValue/chunks/GrValue-ezkQM05Q.js.map +1 -1
  328. package/dist/composables/useFloating.js +1 -1
  329. package/dist/composables/useGrComponentConfig.js +1 -1
  330. package/dist/composables/useOverlayLayer.js +35 -6
  331. package/dist/composables/useOverlayLayer.js.map +1 -1
  332. package/dist/composables/usePortalTarget.js +1 -1
  333. package/dist/composables/useTheme.js +1 -1
  334. package/dist/composables/useTheme.js.map +1 -1
  335. package/dist/composables/useToast.js +1 -1
  336. package/dist/composables/useToast.js.map +1 -1
  337. package/dist/composables/useVirtualList.js +26 -6
  338. package/dist/composables/useVirtualList.js.map +1 -1
  339. package/dist/directives/loading.js +1 -1
  340. package/dist/granular-provider-node.js +1 -1
  341. package/dist/granular-provider.js +1 -1
  342. package/dist/index.js +86 -86
  343. package/dist/testing.js +1 -1
  344. package/dist/testing.js.map +1 -1
  345. package/dist/types/components/GrDialog/GrDialog.vue.d.ts +1 -1
  346. package/dist/types/components/GrDrawer/GrDrawer.vue.d.ts +1 -1
  347. package/dist/types/components/GrModal/GrModal.vue.d.ts +1 -1
  348. package/dist/types/composables/internal/overlayStack.d.ts +11 -0
  349. package/dist/types/internal/devHook.d.ts +119 -0
  350. package/dist/vue/index.js +2 -2
  351. package/dist/vue/index.js.map +1 -1
  352. package/dist/web-types.json +1 -1
  353. package/package.json +16 -16
  354. package/dist/chunks/config-CQLNjc9X2.js.map +0 -1
  355. package/dist/chunks/config-CnYdE3HZ2.js.map +0 -1
  356. package/dist/chunks/config-CuQmUkMw2.js.map +0 -1
  357. package/dist/chunks/config-DBmdgoVf2.js.map +0 -1
  358. package/dist/chunks/config-DVCNvhIG2.js.map +0 -1
  359. package/dist/chunks/config-DpAYidyY2.js.map +0 -1
  360. package/dist/chunks/config-MmPym-Z72.js.map +0 -1
  361. package/dist/chunks/overlayStack-0CZS99Da.js.map +0 -1
  362. /package/dist/chunks/{config-CQLNjc9X2.js → config-CQLNjc9X.js} +0 -0
  363. /package/dist/chunks/{config-CnYdE3HZ2.js → config-CnYdE3HZ.js} +0 -0
  364. /package/dist/chunks/{config-DBmdgoVf2.js → config-DBmdgoVf.js} +0 -0
  365. /package/dist/chunks/{config-DVCNvhIG2.js → config-DVCNvhIG.js} +0 -0
  366. /package/dist/chunks/{config-DpAYidyY2.js → config-DpAYidyY.js} +0 -0
  367. /package/dist/chunks/{config-MmPym-Z72.js → config-MmPym-Z7.js} +0 -0
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- import { a as useGrComponentSize, i as useGrComponentProp, n as resolveGrConfig, o as useGrConfig, r as useGrComponentDefaults, s as useGrThemeAttrs } from "./chunks/context-CTbuwcYs.js";
1
+ import { a as useGrComponentSize, i as useGrComponentProp, n as resolveGrConfig, o as useGrConfig, r as useGrComponentDefaults, s as useGrThemeAttrs } from "./chunks/context-CPMRfwVr.js";
2
2
  import { n as useGranularityTranslations } from "./chunks/granularityI18n-BC5zsj_d.js";
3
- import { t as GrAlert_default } from "./components/GrAlert/chunks/GrAlert-FAVf-ksH.js";
3
+ import { t as GrAlert_default } from "./components/GrAlert/chunks/GrAlert-D72y1IEh.js";
4
4
  import { t as grAlertConfig } from "./chunks/config-BNu8lFQB.js";
5
5
  import "./components/GrAlert/index.js";
6
- import { t as usePortalTarget } from "./chunks/usePortalTarget-C0p-mhaM.js";
6
+ import { t as usePortalTarget } from "./chunks/usePortalTarget-BhrRgdqW.js";
7
7
  import { vAutofocus } from "./directives/autofocus.js";
8
8
  import { vAutosize } from "./directives/autosize.js";
9
9
  import { vClickOutside } from "./directives/clickOutside.js";
10
10
  import { p as FileValidationError } from "./chunks/fileValidation-D5TFBhbv.js";
11
11
  import { vDropzone } from "./directives/dropzone.js";
12
12
  import { vHotkey } from "./directives/hotkey.js";
13
- import { t as GrIcon_default } from "./components/GrIcon/chunks/GrIcon-Dmf0c9ba.js";
14
- import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-CMD3Ri9P.js";
13
+ import { t as GrIcon_default } from "./components/GrIcon/chunks/GrIcon-DTZIgmje.js";
14
+ import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-BDrlrup_.js";
15
15
  import { createLoading, vLoading } from "./directives/loading.js";
16
16
  import { useFloating } from "./composables/useFloating.js";
17
17
  import { useOverlayLayer } from "./composables/useOverlayLayer.js";
@@ -21,191 +21,191 @@ import { n as useGrFormFieldContext } from "./chunks/context-DdNIxa1w.js";
21
21
  import { useGrFormControl } from "./composables/useGrFormControl.js";
22
22
  import { useComboboxNavigation } from "./composables/useComboboxNavigation.js";
23
23
  import { useRovingFocus } from "./composables/useRovingFocus.js";
24
- import { t as GrChip_default } from "./components/GrChip/chunks/GrChip-BTivtwff.js";
24
+ import { t as GrChip_default } from "./components/GrChip/chunks/GrChip-CKqyzYcv.js";
25
25
  import { n as grAutocompleteSafelist, t as grAutocompleteConfig } from "./chunks/config-CYthTVK2.js";
26
- import { t as GrAutocomplete_default } from "./components/GrAutocomplete/chunks/GrAutocomplete-BQsSE7sj.js";
26
+ import { t as GrAutocomplete_default } from "./components/GrAutocomplete/chunks/GrAutocomplete-BpmFmpKs.js";
27
27
  import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js";
28
- import { n as GrAvatar_default, t as GrAvatarGroup_default } from "./components/GrAvatar/chunks/GrAvatar-CNmLmgcr.js";
28
+ import { n as GrAvatar_default, t as GrAvatarGroup_default } from "./components/GrAvatar/chunks/GrAvatar-dWEXiCJG.js";
29
29
  import { c as initialsFrom, n as grAvatarSafelist, t as grAvatarConfig } from "./chunks/config-B3J0alyY.js";
30
- import { t as GrBadge_default } from "./components/GrBadge/chunks/GrBadge-DpUDXKbq.js";
30
+ import { t as GrBadge_default } from "./components/GrBadge/chunks/GrBadge-DBeQXEir.js";
31
31
  import { t as grBadgeSafelist } from "./chunks/safelist-x8USecK8.js";
32
32
  import { t as grBadgeConfig } from "./chunks/config-BscVxZR3.js";
33
33
  import { n as grBadgeWrapSafelist, o as formatBadgeValue, t as grBadgeWrapConfig } from "./chunks/config-DwABJHEo.js";
34
- import { t as GrBadgeWrap_default } from "./components/GrBadgeWrap/chunks/GrBadgeWrap-B-A3PRkE.js";
34
+ import { t as GrBadgeWrap_default } from "./components/GrBadgeWrap/chunks/GrBadgeWrap-wdfxaXiu.js";
35
35
  import { n as grBottomNavSafelist, t as grBottomNavConfig } from "./chunks/config-DM0lsduD.js";
36
- import { t as GrBottomNav_default } from "./components/GrBottomNav/chunks/GrBottomNav-wtFatLjB.js";
37
- import { t as GrLink_default } from "./components/GrLink/chunks/GrLink-DYXw3W9w.js";
36
+ import { t as GrBottomNav_default } from "./components/GrBottomNav/chunks/GrBottomNav-nE08pVUJ.js";
37
+ import { t as GrLink_default } from "./components/GrLink/chunks/GrLink-DwWErumU.js";
38
38
  import { g as resolveBreadcrumbsLayout, h as resolveBreadcrumbsFit, n as grBreadcrumbsSafelist, t as grBreadcrumbsConfig } from "./chunks/config-C0Eu8jpG.js";
39
- import { t as GrBreadcrumbs_default } from "./components/GrBreadcrumbs/chunks/GrBreadcrumbs-DRDNan_n.js";
39
+ import { t as GrBreadcrumbs_default } from "./components/GrBreadcrumbs/chunks/GrBreadcrumbs-DOpwY2EF.js";
40
40
  import { n as useGrButtonGroup } from "./chunks/context-BfIQv7m1.js";
41
- import { t as GrButton_default } from "./components/GrButton/chunks/GrButton-7GP0zObj.js";
41
+ import { t as GrButton_default } from "./components/GrButton/chunks/GrButton-CS4TqMtG.js";
42
42
  import { t as grButtonSafelist } from "./chunks/safelist-DxkMj5IW.js";
43
43
  import { t as grButtonConfig } from "./chunks/config-87fszqnD.js";
44
44
  import { t as GrButtonGroup_default } from "./components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js";
45
- import { t as grButtonGroupConfig } from "./chunks/config-DBmdgoVf2.js";
45
+ import { t as grButtonGroupConfig } from "./chunks/config-DBmdgoVf.js";
46
46
  import "./components/GrButtonGroup/index.js";
47
47
  import { n as grCardSafelist, t as grCardConfig } from "./chunks/config-DUbbGcfw.js";
48
- import { t as GrCard_default } from "./components/GrCard/chunks/GrCard-BttXz1pQ.js";
49
- import { t as GrCheckbox_default } from "./components/GrCheckbox/chunks/GrCheckbox-CEcHIsXM.js";
48
+ import { t as GrCard_default } from "./components/GrCard/chunks/GrCard-Ck5--lMF.js";
49
+ import { t as GrCheckbox_default } from "./components/GrCheckbox/chunks/GrCheckbox-Dp201frb.js";
50
50
  import { n as grCheckboxSafelist, t as grCheckboxConfig } from "./chunks/config-DZCUPHPU.js";
51
51
  import "./components/GrCheckbox/index.js";
52
- import { t as GrCheckboxGroup_default } from "./components/GrCheckboxGroup/chunks/GrCheckboxGroup-BOwrVcFr.js";
52
+ import { t as GrCheckboxGroup_default } from "./components/GrCheckboxGroup/chunks/GrCheckboxGroup-IpqG5qwm.js";
53
53
  import { t as grCheckboxGroupConfig } from "./chunks/config-BuGlNPE9.js";
54
54
  import { n as grChipSafelist, t as grChipConfig } from "./chunks/config-2vrOFn2f.js";
55
55
  import "./components/GrChip/index.js";
56
56
  import { n as grChipGroupSafelist, t as grChipGroupConfig } from "./chunks/config-CZPDPJlg.js";
57
- import { t as GrChipGroup_default } from "./components/GrChipGroup/chunks/GrChipGroup-C78Vcwos.js";
57
+ import { t as GrChipGroup_default } from "./components/GrChipGroup/chunks/GrChipGroup-dDGwnC04.js";
58
58
  import { useAnnouncer } from "./composables/useAnnouncer.js";
59
- import { t as GrCodeBlock_default } from "./components/GrCodeBlock/chunks/GrCodeBlock-Dp0eEBTZ.js";
59
+ import { t as GrCodeBlock_default } from "./components/GrCodeBlock/chunks/GrCodeBlock-BUOwKwQE.js";
60
60
  import { n as grCodeBlockSafelist, t as grCodeBlockConfig } from "./chunks/config-DolULhjJ.js";
61
61
  import { n as grCollapseSafelist, t as grCollapseConfig } from "./chunks/config-BoUI0t-t.js";
62
- import { n as GrCollapse_default, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-BlW6ybdL.js";
62
+ import { n as GrCollapse_default, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-DWH3QAnU.js";
63
63
  import { n as grIconSafelist, t as grIconConfig } from "./chunks/config-3bQeQvqd.js";
64
- import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-CJ7eu3fR.js";
64
+ import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-TFeBm3gQ.js";
65
65
  import { t as useFocusTrap } from "./chunks/useFocusTrap-D9bIPNF6.js";
66
- import { t as GrPopover_default } from "./components/GrPopover/chunks/GrPopover-DEFxDffj.js";
66
+ import { t as GrPopover_default } from "./components/GrPopover/chunks/GrPopover-CcWvr1ZA.js";
67
67
  import { useDragGesture } from "./composables/useDragGesture.js";
68
- import { t as GrSlider_default } from "./components/GrSlider/chunks/GrSlider-DM6W6U9c.js";
69
- import { t as GrColorPicker_default } from "./components/GrColorPicker/chunks/GrColorPicker-B-L4CWMt.js";
68
+ import { t as GrSlider_default } from "./components/GrSlider/chunks/GrSlider-Db-jACXz.js";
69
+ import { t as GrColorPicker_default } from "./components/GrColorPicker/chunks/GrColorPicker-BwzRLs-i.js";
70
70
  import { n as grColorPickerSafelist, t as grColorPickerConfig } from "./chunks/config-DIDz_E5m.js";
71
- import { a as GR_KBD_TOKENS, o as findKbdToken, t as GrKbd_default } from "./components/GrKbd/chunks/GrKbd-D2ga1H9i.js";
72
- import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-DixnhJcu.js";
73
- import { t as GrCommandPalette_default } from "./components/GrCommandPalette/chunks/GrCommandPalette-8HkYmMVP.js";
71
+ import { a as GR_KBD_TOKENS, o as findKbdToken, t as GrKbd_default } from "./components/GrKbd/chunks/GrKbd-D_a1mPLe.js";
72
+ import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-Cm0mtSXk.js";
73
+ import { t as GrCommandPalette_default } from "./components/GrCommandPalette/chunks/GrCommandPalette-CnzPuoIM.js";
74
74
  import { n as grCommandPaletteSafelist, t as grCommandPaletteConfig } from "./chunks/config-D0NzGYaE.js";
75
- import { t as GrConfigProvider_default } from "./components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js";
75
+ import { t as GrConfigProvider_default } from "./components/GrConfigProvider/chunks/GrConfigProvider-t9x2UToH.js";
76
76
  import { t as grConfigProviderConfig } from "./chunks/config-B7W9VlZ7.js";
77
- import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-CKNbnxwO.js";
78
- import { a as extendDefaultParsers, n as coreResponseErrorParsers, r as createResponseErrorClassifier, s as normalizeError, t as GrResponseErrorBanner_default } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-DMeOWlzj.js";
79
- import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-CZEO2JR4.js";
77
+ import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-DDz_OEhk.js";
78
+ import { a as extendDefaultParsers, n as coreResponseErrorParsers, r as createResponseErrorClassifier, s as normalizeError, t as GrResponseErrorBanner_default } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-NEEJZ8zi.js";
79
+ import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-e15nFI8M.js";
80
80
  import { t as grConfirmDialogConfig } from "./chunks/config-A-bBiotF.js";
81
81
  import "./components/GrConfirmDialog/index.js";
82
82
  import { a as GrDropdownMenuItem_default, c as GrDropdownMenuDivider_default, o as GrDropdownMenuGroup_default, s as GrDropdownMenuHeader_default, t as GrDropdownMenuList_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenuList-B33ZzwfB.js";
83
- import { t as GrContextMenu_default } from "./components/GrContextMenu/chunks/GrContextMenu-DlFWm0eW.js";
83
+ import { t as GrContextMenu_default } from "./components/GrContextMenu/chunks/GrContextMenu-RpxMHQXH.js";
84
84
  import { t as grContextMenuConfig } from "./chunks/config-CsCUuukB.js";
85
- import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-jhUTczjv.js";
85
+ import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-iwzHvlMC.js";
86
86
  import { t as useDragSort } from "./chunks/useDragSort-0l47h4yb.js";
87
- import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-4JAgOQ-7.js";
87
+ import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-BYYG_XZA.js";
88
88
  import { n as grDataTableSafelist, t as grDataTableConfig } from "./chunks/config-DeyT9dJl.js";
89
- import { t as GrDelta_default } from "./components/GrDelta/chunks/GrDelta-BZwkgQW-.js";
89
+ import { t as GrDelta_default } from "./components/GrDelta/chunks/GrDelta-BpfqebEV.js";
90
90
  import { n as grValueSafelist, t as grValueConfig } from "./chunks/config-Z5LeUXys.js";
91
91
  import { t as GrValue_default } from "./components/GrValue/chunks/GrValue-ezkQM05Q.js";
92
92
  import { n as deltaTone, t as deltaDirection } from "./chunks/deltaTone-B5OoS1vo.js";
93
93
  import { n as grDeltaSafelist, t as grDeltaConfig } from "./chunks/config-CjWOTgLL.js";
94
- import { n as grDescriptionListSafelist, t as grDescriptionListConfig } from "./chunks/config-CnYdE3HZ2.js";
95
- import { t as GrDescriptionList_default } from "./components/GrDescriptionList/chunks/GrDescriptionList-BMeCgFV3.js";
94
+ import { n as grDescriptionListSafelist, t as grDescriptionListConfig } from "./chunks/config-CnYdE3HZ.js";
95
+ import { t as GrDescriptionList_default } from "./components/GrDescriptionList/chunks/GrDescriptionList-D8ANFpn_.js";
96
96
  import { t as grDialogSafelist } from "./chunks/safelist-Y3zrlhOa.js";
97
97
  import "./components/GrDialog/index.js";
98
98
  import { n as useGrFormContext } from "./chunks/context-Bfrgsluh.js";
99
- import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-DSylU7IU.js";
100
- import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-DinXG12-.js";
101
- import { n as getByPath, o as runFieldRules, r as isEmpty, s as setByPath, t as createGrFormMessageResolver } from "./chunks/validation-5HhpanPP.js";
102
- import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-Ckeombia.js";
103
- import { a as useDialogService, i as teardownDialogService, n as dialogService, r as granularityDialogServicePlugin, t as GrDialogServiceHost_default } from "./components/GrDialogService/chunks/GrDialogService-Ut8iiBQh.js";
99
+ import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-DO61vxpS.js";
100
+ import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-BII3w61K.js";
101
+ import { n as getByPath, o as runFieldRules, r as isEmpty, s as setByPath, t as createGrFormMessageResolver } from "./chunks/validation-BDjqsuGB.js";
102
+ import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-8RxQsOQ_.js";
103
+ import { a as useDialogService, i as teardownDialogService, n as dialogService, r as granularityDialogServicePlugin, t as GrDialogServiceHost_default } from "./components/GrDialogService/chunks/GrDialogService-BmXiYmUp.js";
104
104
  import { t as grDialogServiceConfig } from "./chunks/config-CjXjhphs.js";
105
105
  import { n as grDividerSafelist, t as grDividerConfig } from "./chunks/config-D82r782v.js";
106
- import { t as GrDivider_default } from "./components/GrDivider/chunks/GrDivider-BXavGcMX.js";
106
+ import { t as GrDivider_default } from "./components/GrDivider/chunks/GrDivider-DxA-zV25.js";
107
107
  import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-ChPg-BQv.js";
108
- import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-xfoy-MCj.js";
109
- import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-7r772-Cq.js";
108
+ import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-BRMHhvbd.js";
109
+ import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-cLZuZMEY.js";
110
110
  import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-CT4lP6S4.js";
111
111
  import "./components/GrDropdown/index.js";
112
- import { n as GrDropdownMenuColumn_default, r as GrDropdownMenu_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-DNurbsWc.js";
112
+ import { n as GrDropdownMenuColumn_default, r as GrDropdownMenu_default, t as GrDropdownMenuColumns_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-Dxkz_ry4.js";
113
113
  import { n as grDropdownMenuSafelist, t as grDropdownMenuConfig } from "./chunks/config-_jbgsFpw.js";
114
- import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-RqsWvgI9.js";
114
+ import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-BbvwE-E0.js";
115
115
  import { n as grEmptyStateSafelist, t as grEmptyStateConfig } from "./chunks/config-CWtfxkM9.js";
116
- import { n as fileKindOf, r as isPreviewableKind, t as GrFilePreview_default } from "./components/GrFilePreview/chunks/GrFilePreview-C9Z7hMK8.js";
116
+ import { n as fileKindOf, r as isPreviewableKind, t as GrFilePreview_default } from "./components/GrFilePreview/chunks/GrFilePreview-PabkLgYX.js";
117
117
  import { n as grFilePreviewSafelist, t as grFilePreviewConfig } from "./chunks/config-BaWANzzB.js";
118
- import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-Cd7AaJtR.js";
119
- import { n as GrUploadAbortError, r as GrUploadHttpError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-C0ROpmOY.js";
118
+ import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-C3NRBqIP.js";
119
+ import { n as GrUploadAbortError, r as GrUploadHttpError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-BwMR71zN.js";
120
120
  import { n as grFileUploadSafelist, t as grFileUploadConfig } from "./chunks/config-BlJa1Mj9.js";
121
- import { t as GrForm_default } from "./components/GrForm/chunks/GrForm-CrnfCsgj.js";
121
+ import { t as GrForm_default } from "./components/GrForm/chunks/GrForm-xTtavR-K.js";
122
122
  import { t as grFormConfig } from "./chunks/config-Droqn55j.js";
123
123
  import { n as grFormFieldSafelist, t as grFormFieldConfig } from "./chunks/config-B0uvcTPH.js";
124
124
  import "./components/GrFormField/index.js";
125
- import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFile-B1jGZyIj.js";
125
+ import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFile-Dlxx-9zi.js";
126
126
  import { n as grFormFileSafelist, t as grFormFileConfig } from "./chunks/config-BcXX7S7B.js";
127
127
  import { n as grFormSectionSafelist, t as grFormSectionConfig } from "./chunks/config-BEO7brpO.js";
128
- import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-ejieOg9H.js";
129
- import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer--BU8yrfx.js";
128
+ import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-DV1S6R_N.js";
129
+ import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer-CcduIFsa.js";
130
130
  import { n as grImageViewerSafelist, t as grImageViewerConfig } from "./chunks/config-BDSaD-5p.js";
131
131
  import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-CIkdsWUk.js";
132
132
  import "./components/GrInput/index.js";
133
133
  import { n as grInputTagSafelist, t as grInputTagConfig } from "./chunks/config-BqT6PMzO.js";
134
- import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-ByD9NugQ.js";
135
- import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-Ci6CZfKR.js";
136
- import { t as GrJsonViewer_default } from "./components/GrJsonViewer/chunks/GrJsonViewer-BXG7DdTe.js";
137
- import { n as grJsonViewerSafelist, t as grJsonViewerConfig } from "./chunks/config-DpAYidyY2.js";
134
+ import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-DhfUNOA5.js";
135
+ import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-CkELQwR8.js";
136
+ import { t as GrJsonViewer_default } from "./components/GrJsonViewer/chunks/GrJsonViewer-CdtmUpZ3.js";
137
+ import { n as grJsonViewerSafelist, t as grJsonViewerConfig } from "./chunks/config-DpAYidyY.js";
138
138
  import { n as grKbdSafelist, t as grKbdConfig } from "./chunks/config-BRESvs9g.js";
139
139
  import "./components/GrKbd/index.js";
140
- import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-CQLNjc9X2.js";
140
+ import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-CQLNjc9X.js";
141
141
  import "./components/GrLink/index.js";
142
142
  import { n as grListSafelist, t as grListConfig } from "./chunks/config-D0W8mGFD.js";
143
- import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-B_CRJB4c.js";
143
+ import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-Unya-LXb.js";
144
144
  import { n as grLoadingSafelist, t as grLoadingConfig } from "./chunks/config-Bjn30smH.js";
145
145
  import "./components/GrLoading/index.js";
146
146
  import { n as grModalSafelist, t as grModalConfig } from "./chunks/config-DBi0GVce.js";
147
147
  import "./components/GrModal/index.js";
148
- import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-Dr8e5kW-.js";
148
+ import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-BRGuksiy.js";
149
149
  import { n as grNavbarSafelist, t as grNavbarConfig } from "./chunks/config-2ZHRsdOc.js";
150
- import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-MmPym-Z72.js";
151
- import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-DQ59YICu.js";
152
- import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-Bm3Jugx8.js";
150
+ import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-MmPym-Z7.js";
151
+ import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-BqPydXpK.js";
152
+ import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-Do1iAyp1.js";
153
153
  import { n as grPaginationSafelist, t as grPaginationConfig } from "./chunks/config-CjKpUcmy.js";
154
- import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-68iyAwQz.js";
155
- import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-DVCNvhIG2.js";
154
+ import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-DhbNZHEF.js";
155
+ import { n as grPopoverSafelist, t as grPopoverConfig } from "./chunks/config-DVCNvhIG.js";
156
156
  import "./components/GrPopover/index.js";
157
157
  import { n as grProgressBarSafelist, r as GR_TONES, t as grProgressBarConfig } from "./chunks/config-DWL81-aM.js";
158
158
  import "./components/GrProgressBar/index.js";
159
- import { t as GrProgressCircle_default } from "./components/GrProgressCircle/chunks/GrProgressCircle-D3yWXYDa.js";
159
+ import { t as GrProgressCircle_default } from "./components/GrProgressCircle/chunks/GrProgressCircle-CdvbINQc.js";
160
160
  import { n as grProgressCircleSafelist, t as grProgressCircleConfig } from "./chunks/config-CJzmDHfI.js";
161
161
  import { t as grPromptDialogConfig } from "./chunks/config-C0Ea9ePP.js";
162
162
  import "./components/GrPromptDialog/index.js";
163
- import { t as GrRadio_default } from "./components/GrRadio/chunks/GrRadio-Aq3v8XgG.js";
164
- import { n as grRadioSafelist, t as grRadioConfig } from "./chunks/config-CuQmUkMw2.js";
163
+ import { t as GrRadio_default } from "./components/GrRadio/chunks/GrRadio-B1776V9D.js";
164
+ import { n as grRadioSafelist, t as grRadioConfig } from "./chunks/config-BUNxHnEz.js";
165
165
  import "./components/GrRadio/index.js";
166
- import { t as GrRadioGroup_default } from "./components/GrRadioGroup/chunks/GrRadioGroup-y9LVdTWh.js";
166
+ import { t as GrRadioGroup_default } from "./components/GrRadioGroup/chunks/GrRadioGroup-UgitrBFl.js";
167
167
  import { t as grRadioGroupConfig } from "./chunks/config-QaIc_gRa.js";
168
168
  import { n as grRatingSafelist, t as grRatingConfig } from "./chunks/config-DRbojEzO.js";
169
- import { t as GrRating_default } from "./components/GrRating/chunks/GrRating-IEiTOdnF.js";
170
- import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CBVRpgIG.js";
171
- import { n as titleWhenTruncated, t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-CB-VR-yL.js";
169
+ import { t as GrRating_default } from "./components/GrRating/chunks/GrRating-DTriyyqG.js";
170
+ import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-ZvBvEQDZ.js";
171
+ import { n as titleWhenTruncated, t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-NKTi9bMG.js";
172
172
  import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-rLkc9Zn2.js";
173
173
  import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-DOYz_SVK.js";
174
174
  import "./components/GrSelect/index.js";
175
175
  import { n as grSidebarSafelist, t as grSidebarConfig } from "./chunks/config-DNDgp9bB.js";
176
- import { n as GrSidebarItem_default, r as GrSidebar_default, t as GrSidebarGroup_default } from "./components/GrSidebar/chunks/GrSidebar-alkwBUzL.js";
176
+ import { n as GrSidebarItem_default, r as GrSidebar_default, t as GrSidebarGroup_default } from "./components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js";
177
177
  import { t as grSkeletonConfig } from "./chunks/config-8Pcutu1j.js";
178
178
  import "./components/GrSkeleton/index.js";
179
179
  import { n as grSliderSafelist, t as grSliderConfig } from "./chunks/config-E1cTyRVV.js";
180
180
  import "./components/GrSlider/index.js";
181
181
  import { n as grSortableListSafelist, t as grSortableListConfig } from "./chunks/config-CbEbLyDE.js";
182
- import { t as GrSortableList_default } from "./components/GrSortableList/chunks/GrSortableList-HyKX--rO.js";
182
+ import { t as GrSortableList_default } from "./components/GrSortableList/chunks/GrSortableList-CQCaWivn.js";
183
183
  import { n as grSplitterSafelist, t as grSplitterConfig } from "./chunks/config-CvbVM4ep.js";
184
- import { n as sizeFromPointer, t as GrSplitter_default } from "./components/GrSplitter/chunks/GrSplitter-MltjaADn.js";
185
- import { n as formatStatisticValue, t as GrStatistic_default } from "./components/GrStatistic/chunks/GrStatistic-BoLkXw7F.js";
184
+ import { n as sizeFromPointer, t as GrSplitter_default } from "./components/GrSplitter/chunks/GrSplitter-C-XQzq7q.js";
185
+ import { n as formatStatisticValue, t as GrStatistic_default } from "./components/GrStatistic/chunks/GrStatistic-C1_nY4Gc.js";
186
186
  import { n as grStatisticSafelist, t as grStatisticConfig } from "./chunks/config-DGC00bTp.js";
187
187
  import { n as grStepsSafelist, t as grStepsConfig } from "./chunks/config-CLjjjPZj.js";
188
- import { t as GrSteps_default } from "./components/GrSteps/chunks/GrSteps-CpGHXLOc.js";
188
+ import { t as GrSteps_default } from "./components/GrSteps/chunks/GrSteps-DXj7m-WO.js";
189
189
  import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-Yy67uWHY.js";
190
- import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-7Oe5QfQZ.js";
190
+ import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-CriHWT2A.js";
191
191
  import { n as grTableSafelist, t as grTableConfig } from "./chunks/config-DCq4JySZ.js";
192
192
  import "./components/GrTable/index.js";
193
- import { n as GrTabPanels_default, t as GrTabPanel_default } from "./components/GrTabPanels/chunks/GrTabPanels-BZQS8-JM.js";
193
+ import { n as GrTabPanels_default, t as GrTabPanel_default } from "./components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js";
194
194
  import { t as grTabPanelsConfig } from "./chunks/config-eXB87DOi.js";
195
- import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-CT2nk_HV.js";
195
+ import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-DHfv67cp.js";
196
196
  import { n as grTabsSafelist, t as grTabsConfig } from "./chunks/config-CMNfZO7S.js";
197
197
  import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-BhfNgyWL.js";
198
198
  import "./components/GrTextarea/index.js";
199
- import { n as GrTimeline_default, t as GrTimelineItem_default } from "./components/GrTimeline/chunks/GrTimeline-BiHpArsg.js";
199
+ import { n as GrTimeline_default, t as GrTimelineItem_default } from "./components/GrTimeline/chunks/GrTimeline-Bs60huw0.js";
200
200
  import { n as grTimelineSafelist, t as grTimelineConfig } from "./chunks/config-Bd7QfiGj.js";
201
201
  import { GRANULARITY_TOAST_STATE, granularityToastPlugin, useToast } from "./composables/useToast.js";
202
202
  import { n as grToasterSafelist, t as grToasterConfig } from "./chunks/config-B5SBUa6u.js";
203
- import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-COXIBKzq.js";
203
+ import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-D-sV-9of.js";
204
204
  import { n as grTooltipSafelist, t as grTooltipConfig } from "./chunks/config-BTmfQFwi.js";
205
- import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-uYETdbCD.js";
205
+ import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-BUiTbROv.js";
206
206
  import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-CDat1wXf.js";
207
207
  import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-DUNH02Fg.js";
208
- import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-MGsyvkJV.js";
208
+ import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-DurwZ7Cz.js";
209
209
  import "./composables/useGrComponentConfig.js";
210
210
  import "./composables/useGranularityTranslations.js";
211
211
  import { GRANULARITY_THEME_STATE, granularityThemePlugin, initThemeEarly, useTheme } from "./composables/useTheme.js";
package/dist/testing.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as GR_CONFIG_KEY } from "./chunks/context-CTbuwcYs.js";
1
+ import { t as GR_CONFIG_KEY } from "./chunks/context-CPMRfwVr.js";
2
2
  import { t as GRANULARITY_I18N_KEY } from "./chunks/adapter-CAOxmn2G.js";
3
3
  import { n as resetPortalRoot } from "./chunks/portalRoot-CVhCgdG6.js";
4
4
  import { resetAnnouncer } from "./composables/useAnnouncer.js";
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","names":[],"sources":["../src/testing/pointer.ts","../src/testing/keyboard.ts","../src/testing/geometry.ts","../src/testing/env.ts","../src/testing/context.ts","../src/testing/announcer.ts"],"sourcesContent":["/**\n * Указательные жесты в тестах.\n *\n * Две вещи, которые ломают наивную запись жеста, и обе неочевидны:\n *\n * 1. **`pointerdown` идёт в элемент, а `pointermove`/`pointerup`/`pointercancel` — в `window`.**\n * Так слушает `useDragGesture` (и всё, что на нём стоит: слайдер, сплиттер,\n * перестановка, смахивание тоста): нажатие приходит от разметки, а движение\n * ловится глобально, иначе жест обрывался бы на выходе курсора за элемент.\n * Тест, отправивший движение в тот же элемент, ничего не проверяет — и молча.\n * 2. **`PointerEvent` в jsdom нет**, а `wrapper.trigger('pointerdown', { clientY })`\n * падает на попытке записать `clientY`. Поэтому события собираются\n * `MouseEvent`-ом и отправляются через `dispatchEvent`.\n *\n * Плюс `button: 0` по умолчанию: жест игнорирует неосновную кнопку, и без этого\n * «перетаскивание» в тесте не начинается вовсе.\n */\n\n/** Событие указателя: `MouseEvent`, потому что `PointerEvent` в jsdom не реализован. */\nexport function pointer(type: string, init: MouseEventInit = {}): MouseEvent {\n return new MouseEvent(type, { bubbles: true, ...init })\n}\n\n/** Нажатие: единственное событие жеста, которое адресуется элементу. */\nexport function press(target: Element, init: MouseEventInit = {}): void {\n target.dispatchEvent(pointer('pointerdown', { button: 0, ...init }))\n}\n\nexport function move(init: MouseEventInit = {}): void {\n window.dispatchEvent(pointer('pointermove', init))\n}\n\nexport function release(init: MouseEventInit = {}): void {\n window.dispatchEvent(pointer('pointerup', init))\n}\n\n/**\n * Обрыв жеста: система забрала указатель (системный жест, звонок, потеря окна).\n * Отдельная ветка поведения у всех потребителей — смахивание возвращает тост,\n * перестановка откатывает порядок, — поэтому проверяется отдельно от `release`.\n */\nexport function cancelPointer(init: MouseEventInit = {}): void {\n window.dispatchEvent(pointer('pointercancel', init))\n}\n\n/** Жест целиком: нажали на элементе, провели, отпустили. */\nexport function drag(target: Element, from: MouseEventInit, to: MouseEventInit): void {\n press(target, from)\n move(to)\n release(to)\n}\n","/**\n * Клавиатурные события в тестах.\n *\n * Существует ради одного флага: **`isComposing` не переживает\n * `wrapper.trigger('keydown', …)`**. `@vue/test-utils` собирает событие из\n * переданного объекта, но `isComposing` — свойство только для чтения на\n * `KeyboardEvent`, и присвоение молча теряется. Тест «Enter во время\n * IME-композиции ничего не коммитит» при такой записи проверяет обычный Enter,\n * то есть зеленеет на сломанном коде.\n *\n * Пакет читает флаг через `isComposingEvent` (`src/internal/keyboard.ts`) —\n * `event.isComposing || event.keyCode === 229`, потому что Safari до 16.4 не\n * ставил первое. Генератор ставит оба, иначе тест проверял бы половину предиката.\n *\n * Композиция — это не экзотика: пока пользователь набирает 日本語, 한국어 или\n * что угодно через IME, `Enter` подтверждает **выбор иероглифа**, а не действие\n * виджета. Компонент, который на нём выберет опцию или отправит форму, у такого\n * пользователя неработоспособен.\n */\n\nexport type KeyboardEventOptions = KeyboardEventInit & { key: string }\n\n/** Клавиатурное событие с разумными умолчаниями (всплывает, отменяемо). */\nexport function keyboardEvent(type: string, init: KeyboardEventOptions): KeyboardEvent {\n return new KeyboardEvent(type, { bubbles: true, cancelable: true, ...init })\n}\n\n/** Нажатие клавиши в элемент. */\nexport function keydown(target: Element, key: string, init: KeyboardEventInit = {}): KeyboardEvent {\n const event = keyboardEvent('keydown', { key, ...init })\n target.dispatchEvent(event)\n return event\n}\n\n/**\n * Нажатие во время IME-композиции. Отдельная функция, а не флаг у `keydown`:\n * из имени в тесте видно, что проверяется, а `keyCode: 229` не приходится\n * помнить на каждом вызове.\n */\nexport function composingKeydown(target: Element, key: string, init: KeyboardEventInit = {}): KeyboardEvent {\n return keydown(target, key, { isComposing: true, keyCode: 229, ...init })\n}\n","/**\n * Геометрия в jsdom.\n *\n * Раскладки в jsdom нет: `getBoundingClientRect` у любого элемента возвращает\n * нули. Всё, что считает попадание указателя — слайдер, сплиттер, перестановка,\n * ширины колонок таблицы, — на нулевом прямоугольнике проверять не на чем,\n * поэтому геометрия задаётся руками.\n */\n\nexport type MockRect = Partial<Omit<DOMRect, 'toJSON'>>\n\n/** Прямоугольник элемента. Незаданные стороны выводятся из заданных. */\nexport function mockRect(target: Element, rect: MockRect): void {\n const left = rect.left ?? rect.x ?? 0\n const top = rect.top ?? rect.y ?? 0\n const width = rect.width ?? (rect.right ?? 0) - left\n const height = rect.height ?? (rect.bottom ?? 0) - top\n\n const value: DOMRect = {\n x: left,\n y: top,\n left,\n top,\n width,\n height,\n right: rect.right ?? left + width,\n bottom: rect.bottom ?? top + height,\n toJSON: () => ({}),\n }\n\n target.getBoundingClientRect = () => value\n}\n\nexport interface StackRectsOptions {\n /** Размер элемента вдоль оси. */\n size: number\n /** Ось раскладки. По умолчанию вертикальная — так лежат списки и строки. */\n axis?: 'vertical' | 'horizontal'\n /** Смещение первого элемента. */\n start?: number\n /** Размер поперёк оси. */\n cross?: number\n}\n\n/** Элементы подряд, встык, без зазоров: строки списка, ячейки шапки, деления шкалы. */\nexport function stackRects(targets: Iterable<Element>, options: StackRectsOptions): void {\n const { size, axis = 'vertical', start = 0, cross = 100 } = options\n\n let offset = start\n\n for (const target of targets) {\n mockRect(target, axis === 'vertical'\n ? { top: offset, height: size, left: 0, width: cross }\n : { left: offset, width: size, top: 0, height: cross })\n\n offset += size\n }\n}\n","import { resetAnnouncer } from '../composables/useAnnouncer'\nimport { resetPortalRoot } from '../composables/internal/portalRoot'\nimport { useToast } from '../composables/useToast'\n\n/**\n * Уборка между тестами.\n *\n * `document.body.innerHTML = ''` сам по себе оставляет пакет в разобранном\n * состоянии: корень портала и хост живого региона закэшированы модулями, и\n * после очистки `body` они указывают на узлы **вне документа**. Следующий\n * монтаж телепортирует туда оверлеи, тест ищет их в документе и не находит —\n * без единой ошибки в консоли. Очередь тостов переживает размонтирование по\n * замыслу, поэтому её тоже гасим.\n */\nexport function resetGranularityDom(): void {\n useToast().clear()\n resetAnnouncer()\n resetPortalRoot()\n\n if (typeof document !== 'undefined')\n document.body.innerHTML = ''\n}\n\nexport interface StubMatchMediaOptions {\n /** Ответ на `(prefers-reduced-motion: reduce)`. */\n reducedMotion?: boolean\n /** Ответ на остальные запросы. */\n matches?: boolean\n}\n\n/**\n * Ответ `matchMedia` — например «пользователь просил меньше движения».\n *\n * Не для того, чтобы «не падало»: сам пакет зовёт `matchMedia` опционально и без\n * него живёт. Нужно, когда проверяется поведение **под** медиазапросом.\n * Возвращает функцию отката: глобальное состояние обязано уйти вместе с тестом.\n */\nexport function stubMatchMedia(options: StubMatchMediaOptions = {}): () => void {\n const { reducedMotion = false, matches = false } = options\n const original = window.matchMedia\n\n window.matchMedia = (query: string) => ({\n media: query,\n matches: query.includes('prefers-reduced-motion') ? reducedMotion : matches,\n onchange: null,\n addEventListener: () => {},\n removeEventListener: () => {},\n addListener: () => {},\n removeListener: () => {},\n dispatchEvent: () => false,\n })\n\n return () => {\n window.matchMedia = original\n }\n}\n","import { computed, ref, type Ref } from 'vue'\n\nimport { GR_CONFIG_KEY, type GrComponentDefaults, type GrComponentSize, type GrConfigContext } from '../components/GrConfigProvider/context'\nimport { GRANULARITY_I18N_KEY, type GranularityI18nAdapter, type GranularityI18nParams } from '../i18n/adapter'\n\nexport interface I18nAdapterOptions {\n /** Перевод по ключу. По умолчанию — сам ключ: видно, что спросили. */\n t?: (key: string, params?: GranularityI18nParams) => string\n te?: (key: string) => boolean\n locale?: string | Ref<string>\n}\n\n/** Адаптер перевода для теста: словарь или своя функция. */\nexport function i18nAdapter(options: I18nAdapterOptions | Record<string, string> = {}): GranularityI18nAdapter {\n const isDictionary = typeof (options as I18nAdapterOptions).t !== 'function'\n && !('locale' in options)\n && !('te' in options)\n\n if (isDictionary) {\n const dictionary = options as Record<string, string>\n\n return {\n t: key => dictionary[key] ?? key,\n te: key => key in dictionary,\n }\n }\n\n const { t, te, locale } = options as I18nAdapterOptions\n\n return {\n t: t ?? (key => key),\n te,\n locale: typeof locale === 'string' ? ref(locale) : locale,\n }\n}\n\nexport interface GranularityGlobalOptions {\n size?: GrComponentSize\n componentDefaults?: GrComponentDefaults\n theme?: string\n portalTarget?: string | HTMLElement\n /** Адаптер перевода: готовый, словарь `{ ключ: перевод }` или опции `i18nAdapter`. */\n i18n?: GranularityI18nAdapter | I18nAdapterOptions | Record<string, string>\n}\n\n/**\n * Окружение пакета для монтирования — то, что `<GrConfigProvider>` раздаёт\n * через `provide`.\n *\n * Отдаётся объектом, а не компонентом-обёрткой, намеренно: провайдер тянет за\n * собой лишний корневой элемент, а искать компонент внутри чужой разметки в\n * каждом тесте дороже, чем передать `global`. Проверять **сам** провайдер\n * (`data-gr-config-provider`, тема на корне) этим нельзя и не нужно — для этого\n * его и монтируют.\n *\n * ```ts\n * mount(GrSelect, { props, global: granularityGlobal({ size: 'sm' }) })\n * ```\n */\nexport function granularityGlobal(options: GranularityGlobalOptions = {}): { provide: Record<symbol, unknown> } {\n const config: GrConfigContext = {\n size: computed(() => options.size),\n componentDefaults: computed(() => options.componentDefaults ?? {}),\n theme: computed(() => options.theme),\n portalTarget: computed(() => options.portalTarget),\n }\n\n const provide: Record<symbol, unknown> = { [GR_CONFIG_KEY]: config }\n\n if (options.i18n) {\n provide[GRANULARITY_I18N_KEY] = 't' in options.i18n && typeof options.i18n.t === 'function'\n ? options.i18n\n : i18nAdapter(options.i18n)\n }\n\n return { provide }\n}\n","import type { GrAnnouncerPoliteness } from '../composables/useAnnouncer'\n\n/**\n * Текст живого региона.\n *\n * Ждать здесь обязательно: `announce` пишет в регион **отложенным** макротаском,\n * и это не деталь реализации, а условие работы. Регион, в котором текст\n * появился в том же кадре, что и сам регион, часть AT не объявляет вовсе;\n * поэтому синхронное чтение сразу после действия покажет пустую строку.\n */\nexport async function announced(politeness: GrAnnouncerPoliteness = 'polite'): Promise<string> {\n await new Promise(resolve => setTimeout(resolve, 2))\n\n return document.querySelector(`[data-gr-announcer-region=\"${politeness}\"]`)?.textContent ?? ''\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","names":[],"sources":["../src/testing/pointer.ts","../src/testing/keyboard.ts","../src/testing/geometry.ts","../src/testing/env.ts","../src/testing/context.ts","../src/testing/announcer.ts"],"sourcesContent":["/**\n * Указательные жесты в тестах.\n *\n * Две вещи, которые ломают наивную запись жеста, и обе неочевидны:\n *\n * 1. **`pointerdown` идёт в элемент, а `pointermove`/`pointerup`/`pointercancel` — в `window`.**\n * Так слушает `useDragGesture` (и всё, что на нём стоит: слайдер, сплиттер,\n * перестановка, смахивание тоста): нажатие приходит от разметки, а движение\n * ловится глобально, иначе жест обрывался бы на выходе курсора за элемент.\n * Тест, отправивший движение в тот же элемент, ничего не проверяет — и молча.\n * 2. **`PointerEvent` в jsdom нет**, а `wrapper.trigger('pointerdown', { clientY })`\n * падает на попытке записать `clientY`. Поэтому события собираются\n * `MouseEvent`-ом и отправляются через `dispatchEvent`.\n *\n * Плюс `button: 0` по умолчанию: жест игнорирует неосновную кнопку, и без этого\n * «перетаскивание» в тесте не начинается вовсе.\n */\n\n/** Событие указателя: `MouseEvent`, потому что `PointerEvent` в jsdom не реализован. */\nexport function pointer(type: string, init: MouseEventInit = {}): MouseEvent {\n return new MouseEvent(type, { bubbles: true, ...init })\n}\n\n/** Нажатие: единственное событие жеста, которое адресуется элементу. */\nexport function press(target: Element, init: MouseEventInit = {}): void {\n target.dispatchEvent(pointer('pointerdown', { button: 0, ...init }))\n}\n\nexport function move(init: MouseEventInit = {}): void {\n window.dispatchEvent(pointer('pointermove', init))\n}\n\nexport function release(init: MouseEventInit = {}): void {\n window.dispatchEvent(pointer('pointerup', init))\n}\n\n/**\n * Обрыв жеста: система забрала указатель (системный жест, звонок, потеря окна).\n * Отдельная ветка поведения у всех потребителей — смахивание возвращает тост,\n * перестановка откатывает порядок, — поэтому проверяется отдельно от `release`.\n */\nexport function cancelPointer(init: MouseEventInit = {}): void {\n window.dispatchEvent(pointer('pointercancel', init))\n}\n\n/** Жест целиком: нажали на элементе, провели, отпустили. */\nexport function drag(target: Element, from: MouseEventInit, to: MouseEventInit): void {\n press(target, from)\n move(to)\n release(to)\n}\n","/**\n * Клавиатурные события в тестах.\n *\n * Существует ради одного флага: **`isComposing` не переживает\n * `wrapper.trigger('keydown', …)`**. `@vue/test-utils` собирает событие из\n * переданного объекта, но `isComposing` — свойство только для чтения на\n * `KeyboardEvent`, и присвоение молча теряется. Тест «Enter во время\n * IME-композиции ничего не коммитит» при такой записи проверяет обычный Enter,\n * то есть зеленеет на сломанном коде.\n *\n * Пакет читает флаг через `isComposingEvent` (`src/internal/keyboard.ts`) —\n * `event.isComposing || event.keyCode === 229`, потому что Safari до 16.4 не\n * ставил первое. Генератор ставит оба, иначе тест проверял бы половину предиката.\n *\n * Композиция — это не экзотика: пока пользователь набирает 日本語, 한국어 или\n * что угодно через IME, `Enter` подтверждает **выбор иероглифа**, а не действие\n * виджета. Компонент, который на нём выберет опцию или отправит форму, у такого\n * пользователя неработоспособен.\n */\n\nexport type KeyboardEventOptions = KeyboardEventInit & { key: string }\n\n/** Клавиатурное событие с разумными умолчаниями (всплывает, отменяемо). */\nexport function keyboardEvent(type: string, init: KeyboardEventOptions): KeyboardEvent {\n return new KeyboardEvent(type, { bubbles: true, cancelable: true, ...init })\n}\n\n/** Нажатие клавиши в элемент. */\nexport function keydown(target: Element, key: string, init: KeyboardEventInit = {}): KeyboardEvent {\n const event = keyboardEvent('keydown', { key, ...init })\n target.dispatchEvent(event)\n return event\n}\n\n/**\n * Нажатие во время IME-композиции. Отдельная функция, а не флаг у `keydown`:\n * из имени в тесте видно, что проверяется, а `keyCode: 229` не приходится\n * помнить на каждом вызове.\n */\nexport function composingKeydown(target: Element, key: string, init: KeyboardEventInit = {}): KeyboardEvent {\n return keydown(target, key, { isComposing: true, keyCode: 229, ...init })\n}\n","/**\n * Геометрия в jsdom.\n *\n * Раскладки в jsdom нет: `getBoundingClientRect` у любого элемента возвращает\n * нули. Всё, что считает попадание указателя — слайдер, сплиттер, перестановка,\n * ширины колонок таблицы, — на нулевом прямоугольнике проверять не на чем,\n * поэтому геометрия задаётся руками.\n */\n\nexport type MockRect = Partial<Omit<DOMRect, 'toJSON'>>\n\n/** Прямоугольник элемента. Незаданные стороны выводятся из заданных. */\nexport function mockRect(target: Element, rect: MockRect): void {\n const left = rect.left ?? rect.x ?? 0\n const top = rect.top ?? rect.y ?? 0\n const width = rect.width ?? (rect.right ?? 0) - left\n const height = rect.height ?? (rect.bottom ?? 0) - top\n\n const value: DOMRect = {\n x: left,\n y: top,\n left,\n top,\n width,\n height,\n right: rect.right ?? left + width,\n bottom: rect.bottom ?? top + height,\n toJSON: () => ({}),\n }\n\n target.getBoundingClientRect = () => value\n}\n\nexport interface StackRectsOptions {\n /** Размер элемента вдоль оси. */\n size: number\n /** Ось раскладки. По умолчанию вертикальная — так лежат списки и строки. */\n axis?: 'vertical' | 'horizontal'\n /** Смещение первого элемента. */\n start?: number\n /** Размер поперёк оси. */\n cross?: number\n}\n\n/** Элементы подряд, встык, без зазоров: строки списка, ячейки шапки, деления шкалы. */\nexport function stackRects(targets: Iterable<Element>, options: StackRectsOptions): void {\n const { size, axis = 'vertical', start = 0, cross = 100 } = options\n\n let offset = start\n\n for (const target of targets) {\n mockRect(target, axis === 'vertical'\n ? { top: offset, height: size, left: 0, width: cross }\n : { left: offset, width: size, top: 0, height: cross })\n\n offset += size\n }\n}\n","import { resetAnnouncer } from '../composables/useAnnouncer'\nimport { resetPortalRoot } from '../composables/internal/portalRoot'\nimport { useToast } from '../composables/useToast'\n\n/**\n * Уборка между тестами.\n *\n * `document.body.innerHTML = ''` сам по себе оставляет пакет в разобранном\n * состоянии: корень портала и хост живого региона закэшированы модулями, и\n * после очистки `body` они указывают на узлы **вне документа**. Следующий\n * монтаж телепортирует туда оверлеи, тест ищет их в документе и не находит —\n * без единой ошибки в консоли. Очередь тостов переживает размонтирование по\n * замыслу, поэтому её тоже гасим.\n */\nexport function resetGranularityDom(): void {\n useToast().clear()\n resetAnnouncer()\n resetPortalRoot()\n\n if (typeof document !== 'undefined')\n document.body.innerHTML = ''\n}\n\nexport interface StubMatchMediaOptions {\n /** Ответ на `(prefers-reduced-motion: reduce)`. */\n reducedMotion?: boolean\n /** Ответ на остальные запросы. */\n matches?: boolean\n}\n\n/**\n * Ответ `matchMedia` — например «пользователь просил меньше движения».\n *\n * Не для того, чтобы «не падало»: сам пакет зовёт `matchMedia` опционально и без\n * него живёт. Нужно, когда проверяется поведение **под** медиазапросом.\n * Возвращает функцию отката: глобальное состояние обязано уйти вместе с тестом.\n */\nexport function stubMatchMedia(options: StubMatchMediaOptions = {}): () => void {\n const { reducedMotion = false, matches = false } = options\n // Ссылка только сохраняется и возвращается на место — вызова в отрыве от\n // `window` нет, поэтому терять `this` тут нечему.\n // eslint-disable-next-line ts/unbound-method\n const original = window.matchMedia\n\n window.matchMedia = (query: string) => ({\n media: query,\n matches: query.includes('prefers-reduced-motion') ? reducedMotion : matches,\n onchange: null,\n addEventListener: () => {},\n removeEventListener: () => {},\n addListener: () => {},\n removeListener: () => {},\n dispatchEvent: () => false,\n })\n\n return () => {\n window.matchMedia = original\n }\n}\n","import { computed, ref, type Ref } from 'vue'\n\nimport { GR_CONFIG_KEY, type GrComponentDefaults, type GrComponentSize, type GrConfigContext } from '../components/GrConfigProvider/context'\nimport { GRANULARITY_I18N_KEY, type GranularityI18nAdapter, type GranularityI18nParams } from '../i18n/adapter'\n\nexport interface I18nAdapterOptions {\n /** Перевод по ключу. По умолчанию — сам ключ: видно, что спросили. */\n t?: (key: string, params?: GranularityI18nParams) => string\n te?: (key: string) => boolean\n locale?: string | Ref<string>\n}\n\n/** Адаптер перевода для теста: словарь или своя функция. */\nexport function i18nAdapter(options: I18nAdapterOptions | Record<string, string> = {}): GranularityI18nAdapter {\n const isDictionary = typeof (options as I18nAdapterOptions).t !== 'function'\n && !('locale' in options)\n && !('te' in options)\n\n if (isDictionary) {\n const dictionary = options as Record<string, string>\n\n return {\n t: key => dictionary[key] ?? key,\n te: key => key in dictionary,\n }\n }\n\n const { t, te, locale } = options as I18nAdapterOptions\n\n return {\n t: t ?? (key => key),\n te,\n locale: typeof locale === 'string' ? ref(locale) : locale,\n }\n}\n\nexport interface GranularityGlobalOptions {\n size?: GrComponentSize\n componentDefaults?: GrComponentDefaults\n theme?: string\n portalTarget?: string | HTMLElement\n /** Адаптер перевода: готовый, словарь `{ ключ: перевод }` или опции `i18nAdapter`. */\n i18n?: GranularityI18nAdapter | I18nAdapterOptions | Record<string, string>\n}\n\n/**\n * Окружение пакета для монтирования — то, что `<GrConfigProvider>` раздаёт\n * через `provide`.\n *\n * Отдаётся объектом, а не компонентом-обёрткой, намеренно: провайдер тянет за\n * собой лишний корневой элемент, а искать компонент внутри чужой разметки в\n * каждом тесте дороже, чем передать `global`. Проверять **сам** провайдер\n * (`data-gr-config-provider`, тема на корне) этим нельзя и не нужно — для этого\n * его и монтируют.\n *\n * ```ts\n * mount(GrSelect, { props, global: granularityGlobal({ size: 'sm' }) })\n * ```\n */\nexport function granularityGlobal(options: GranularityGlobalOptions = {}): { provide: Record<symbol, unknown> } {\n const config: GrConfigContext = {\n size: computed(() => options.size),\n componentDefaults: computed(() => options.componentDefaults ?? {}),\n theme: computed(() => options.theme),\n portalTarget: computed(() => options.portalTarget),\n }\n\n const provide: Record<symbol, unknown> = { [GR_CONFIG_KEY]: config }\n\n if (options.i18n) {\n provide[GRANULARITY_I18N_KEY] = 't' in options.i18n && typeof options.i18n.t === 'function'\n ? options.i18n\n : i18nAdapter(options.i18n)\n }\n\n return { provide }\n}\n","import type { GrAnnouncerPoliteness } from '../composables/useAnnouncer'\n\n/**\n * Текст живого региона.\n *\n * Ждать здесь обязательно: `announce` пишет в регион **отложенным** макротаском,\n * и это не деталь реализации, а условие работы. Регион, в котором текст\n * появился в том же кадре, что и сам регион, часть AT не объявляет вовсе;\n * поэтому синхронное чтение сразу после действия покажет пустую строку.\n */\nexport async function announced(politeness: GrAnnouncerPoliteness = 'polite'): Promise<string> {\n await new Promise(resolve => setTimeout(resolve, 2))\n\n return document.querySelector(`[data-gr-announcer-region=\"${politeness}\"]`)?.textContent ?? ''\n}\n"],"mappings":"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"}
@@ -87,9 +87,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
87
87
  scrollBehavior: string;
88
88
  initialFocus: null;
89
89
  }>>> & Readonly<{
90
+ onClosed?: (() => any) | undefined;
90
91
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
91
92
  onOpened?: (() => any) | undefined;
92
- onClosed?: (() => any) | undefined;
93
93
  }>, {
94
94
  size: GrDialogSize;
95
95
  title: string;
@@ -104,9 +104,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
104
104
  initialFocus: null;
105
105
  closeLabel: undefined;
106
106
  }>>> & Readonly<{
107
+ onClosed?: (() => any) | undefined;
107
108
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
108
109
  onOpened?: (() => any) | undefined;
109
- onClosed?: (() => any) | undefined;
110
110
  }>, {
111
111
  size: GrDrawerSize;
112
112
  side: GrDrawerSide;
@@ -65,9 +65,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
65
65
  ariaLabel: undefined;
66
66
  initialFocus: null;
67
67
  }>>> & Readonly<{
68
+ onClosed?: (() => any) | undefined;
68
69
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
69
70
  onOpened?: (() => any) | undefined;
70
- onClosed?: (() => any) | undefined;
71
71
  }>, {
72
72
  size: GrModalSize;
73
73
  scrollBehavior: GrModalScrollBehavior;
@@ -22,6 +22,7 @@
22
22
  * видит слои из **разных деревьев рендера** (диалоги `useDialogService`
23
23
  * монтируются отдельным `render()` в `body`) и знает их корни.
24
24
  */
25
+ import type { GrLayerFocus } from '../../internal/devHook';
25
26
  export interface OverlayLayer {
26
27
  /** Уникальный id зарегистрированного слоя. */
27
28
  id: number;
@@ -52,6 +53,16 @@ export interface OverlayLayer {
52
53
  * вне DOM-поддерева окна, но для пользователя это тот же слой.
53
54
  */
54
55
  root?: () => HTMLElement | null;
56
+ /**
57
+ * Компонент, открывший слой. Только для наблюдателя: стеку он не нужен, но
58
+ * без него слой в панели — безымянный номер.
59
+ */
60
+ owner?: string | null;
61
+ /**
62
+ * Картина фокуса глазами самого слоя. Геттер, а не значение: она меняется от
63
+ * каждого клика, а спрашивают её только в момент снимка.
64
+ */
65
+ describeFocus?: () => GrLayerFocus | null;
55
66
  }
56
67
  /** Регистрирует слой как верхний и возвращает его id. */
57
68
  export declare function pushOverlayLayer(layer: Omit<OverlayLayer, 'id'>): number;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Dev-канал ядра: наружу отдаётся то, чего иначе не увидеть — состояние
3
+ * приватных синглтонов пакета.
4
+ *
5
+ * Первый и пока единственный поставщик — стек слоёв
6
+ * (`composables/internal/overlayStack.ts`). Он приватен намеренно: один список
7
+ * отвечает сразу на три вопроса (кому Esc, кто под `inert`, чья высота), и
8
+ * публичный доступ к нему означал бы обязательство держать эту форму. Канал
9
+ * снимает противоречие: снаружи видно картину, но не рычаги.
10
+ *
11
+ * Существует только под `__GR_DEV__` — вызывающие обязаны обернуть эмит гардом,
12
+ * тогда у потребителя ветка выкидывается вместе с этим модулем.
13
+ *
14
+ * Хук нарочно «глупый»: голые `events` и `listeners` вместо методов. Создать
15
+ * такой объект умеет и слушатель (панель подключается раньше или позже ядра —
16
+ * порядок не гарантирован), а логика эмита при этом живёт в одном месте, здесь.
17
+ */
18
+ /** Фокус вокруг слоя: то, чего не видно ни в DOM, ни в браузерном инспекторе. */
19
+ export interface GrLayerFocus {
20
+ /** Фокус сейчас внутри слоя. */
21
+ inside: boolean;
22
+ /**
23
+ * Вернётся ли фокус при закрытии. Правило нетривиальное — «только если на
24
+ * момент закрытия фокус ещё внутри слоя», — и снаружи непроверяемо.
25
+ */
26
+ willRestore: boolean;
27
+ /** Куда вернётся: описание элемента, а не ссылка (буфер не должен держать DOM). */
28
+ restoreTo: string | null;
29
+ }
30
+ /** Слой оверлея в том виде, в каком его видит наблюдатель. */
31
+ export interface GrOverlaySnapshot {
32
+ id: number;
33
+ /** Компонент, открывший слой: `GrSelect`, `GrModal`. `null` — слой заведён вне компонента. */
34
+ owner: string | null;
35
+ focus: GrLayerFocus | null;
36
+ modal: boolean;
37
+ /** Верхний слой любого рода: ему адресован Esc. */
38
+ topmostForEscape: boolean;
39
+ /** Модальный слой ниже последнего модального — тот, что уходит в `inert`. */
40
+ inert: boolean;
41
+ /** Позиция среди модальных, от нуля. У немодальных глубины нет. */
42
+ depth: number | null;
43
+ /** Закроется ли слой по Esc прямо сейчас (`closeOnEsc` реактивен). */
44
+ closesOnEscape: boolean;
45
+ }
46
+ export type GrDevEvent = {
47
+ type: 'overlay:sync';
48
+ layers: GrOverlaySnapshot[];
49
+ } | {
50
+ type: 'overlay:push';
51
+ id: number;
52
+ modal: boolean;
53
+ owner: string | null;
54
+ } | {
55
+ type: 'overlay:remove';
56
+ id: number;
57
+ } | {
58
+ type: 'overlay:escape';
59
+ id: number;
60
+ closed: boolean;
61
+ };
62
+ /**
63
+ * Окно виртуализатора глазами наблюдателя.
64
+ *
65
+ * Число узлов в DOM браузер покажет и сам; невидимо другое — какие индексы
66
+ * отрисованы, сколько всего элементов и насколько оценка высоты разошлась с
67
+ * замером. Расхождение и есть тихий дефект: список начинает прыгать, а узлов
68
+ * по-прежнему «правильные десятки».
69
+ */
70
+ export interface GrVirtualListSnapshot {
71
+ /** Компонент, которому принадлежит список. */
72
+ owner: string | null;
73
+ /** `uid` инстанса: панель связывает снимок с выбранным компонентом. */
74
+ uid: number | null;
75
+ total: number;
76
+ rendered: number;
77
+ range: {
78
+ start: number;
79
+ end: number;
80
+ };
81
+ /** Оценка высоты элемента, с которой список считает окно. */
82
+ estimated: number;
83
+ /** Средний фактический замер; `null` — пока ничего не измерено. */
84
+ measured: number | null;
85
+ }
86
+ export interface GrDevHook {
87
+ /** Последние события — чтобы подключившийся позже не начинал с пустого экрана. */
88
+ events: GrDevEvent[];
89
+ listeners: Set<(event: GrDevEvent) => void>;
90
+ /**
91
+ * Глубина буфера, если наблюдатель попросил другую. Ставит её он же: сколько
92
+ * истории нужно, знает только тот, кто её читает.
93
+ */
94
+ bufferLimit?: number;
95
+ /**
96
+ * Живые виртуализаторы. Реестр, а не событие: окно меняется на каждый кадр
97
+ * прокрутки, и слать его лентой значило бы залить канал.
98
+ */
99
+ virtualLists?: Set<() => GrVirtualListSnapshot>;
100
+ /**
101
+ * Свежий снимок стека по требованию.
102
+ *
103
+ * События дают картину на момент изменения стека, а часть состояния меняется
104
+ * между ними: фокус уходит из слоя от обычного клика, и ни одного события при
105
+ * этом не случается. Наблюдателю нужно спросить «как сейчас», а не «как было
106
+ * при последнем push».
107
+ */
108
+ readLayers?: () => GrOverlaySnapshot[];
109
+ }
110
+ /**
111
+ * Регистрирует виртуализатор в реестре наблюдателя. Возвращает снятие —
112
+ * список обязан исчезнуть вместе с компонентом.
113
+ */
114
+ export declare function registerGrVirtualList(read: () => GrVirtualListSnapshot): () => void;
115
+ /** Ядро отдаёт наблюдателю читалку стека. Вызывается один раз, из стека слоёв. */
116
+ export declare function provideGrDevLayers(read: () => GrOverlaySnapshot[]): void;
117
+ export declare function emitGrDevEvent(event: GrDevEvent): void;
118
+ /** Сброс канала между тестами: буфер и подписчики живут в `globalThis`. */
119
+ export declare function resetGrDevHook(): void;