@feugene/granularity 0.9.4 → 0.11.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 (457) hide show
  1. package/README.md +44 -45
  2. package/dist/GrButtonGroup.css +1 -1
  3. package/dist/GrFormFile.css +1 -1
  4. package/dist/GrIcon.css +1 -1
  5. package/dist/GrLoading.css +1 -1
  6. package/dist/GrSkeleton.css +1 -1
  7. package/dist/GrToaster.css +1 -0
  8. package/dist/GrTree.css +1 -1
  9. package/dist/chunks/{adapter-BqqjEZGU.js.map → adapter-CAOxmn2G.js.map} +1 -1
  10. package/dist/chunks/arrow-up-C_G4jg8M.js.map +1 -0
  11. package/dist/chunks/{classTokens-BPeBXNzu.js.map → classTokens-BzazaERD.js.map} +1 -1
  12. package/dist/chunks/{config-B_nSBc7W.js → config-1uSYl98Y.js} +5 -5
  13. package/dist/chunks/{config-B_nSBc7W.js.map → config-1uSYl98Y.js.map} +1 -1
  14. package/dist/chunks/{config-DaHI5bD_2.js.map → config-8Pcutu1j2.js.map} +1 -1
  15. package/dist/chunks/{config-DoBk_CzG.js.map → config-B0qIpo8m.js.map} +1 -1
  16. package/dist/chunks/{config-BY81UKv0.js → config-B7IIWGt_2.js} +3 -3
  17. package/dist/chunks/config-B7IIWGt_2.js.map +1 -0
  18. package/dist/chunks/{config-DbghHyY_.js.map → config-BEegFP74.js.map} +1 -1
  19. package/dist/chunks/{config-72sW9Bag2.js → config-BIRO0vDJ2.js} +6 -6
  20. package/dist/chunks/{config-72sW9Bag2.js.map → config-BIRO0vDJ2.js.map} +1 -1
  21. package/dist/chunks/{config-Dzd6BzIN2.js.map → config-BLHqZhy-2.js.map} +1 -1
  22. package/dist/chunks/{config-BV4vBzdm.js.map → config-BNu8lFQB.js.map} +1 -1
  23. package/dist/chunks/config-BOlr7qw7.js +106 -0
  24. package/dist/chunks/config-BOlr7qw7.js.map +1 -0
  25. package/dist/chunks/{config-B1kFmhpM.js.map → config-BUHuGBik.js.map} +1 -1
  26. package/dist/chunks/{config-DF_RlCIO.js.map → config-BWGGp7uV.js.map} +1 -1
  27. package/dist/chunks/config-BX1JTrkV2.js +14 -0
  28. package/dist/chunks/config-BX1JTrkV2.js.map +1 -0
  29. package/dist/chunks/{config-BduXEXjt.js.map → config-BXtAmU3s.js.map} +1 -1
  30. package/dist/chunks/{config-O1_FTqD3.js.map → config-Bah4oHwL.js.map} +1 -1
  31. package/dist/chunks/{config-Br_qI3Za.js → config-C49QUoJL.js} +3 -3
  32. package/dist/chunks/config-C49QUoJL.js.map +1 -0
  33. package/dist/chunks/{config-3I3vqDW4.js → config-C4snOIXg.js} +1 -1
  34. package/dist/chunks/{config-3I3vqDW4.js.map → config-C4snOIXg.js.map} +1 -1
  35. package/dist/chunks/{config-CdJpnjDj.js → config-C7NpDrfO.js} +5 -5
  36. package/dist/chunks/{config-CdJpnjDj.js.map → config-C7NpDrfO.js.map} +1 -1
  37. package/dist/chunks/{config-DSBlHQVa.js.map → config-C86UzUYf.js.map} +1 -1
  38. package/dist/chunks/{config-BgBWt9-A.js.map → config-C9AcVDkv.js.map} +1 -1
  39. package/dist/chunks/{config-BeQuykDk2.js.map → config-CGHLoBlH2.js.map} +1 -1
  40. package/dist/chunks/{config-ChQxl75m.js.map → config-CThzliFi.js.map} +1 -1
  41. package/dist/chunks/{config-DmjwIqx1.js.map → config-Cb2PAlSD.js.map} +1 -1
  42. package/dist/chunks/{config-BnWSHTEU.js → config-ClhKPJvg.js} +5 -5
  43. package/dist/chunks/{config-BnWSHTEU.js.map → config-ClhKPJvg.js.map} +1 -1
  44. package/dist/chunks/{config-d386uO3O.js → config-Cpi9Mh2J.js} +3 -3
  45. package/dist/chunks/{config-d386uO3O.js.map → config-Cpi9Mh2J.js.map} +1 -1
  46. package/dist/chunks/{config-Cp_XHsze.js → config-CrG1XiE7.js} +4 -4
  47. package/dist/chunks/{config-Cp_XHsze.js.map → config-CrG1XiE7.js.map} +1 -1
  48. package/dist/chunks/{config-C5OwJM3-.js → config-CziwTDDL.js} +3 -3
  49. package/dist/chunks/{config-C5OwJM3-.js.map → config-CziwTDDL.js.map} +1 -1
  50. package/dist/chunks/{config-BbKroFtR.js.map → config-D7GZO-Dx.js.map} +1 -1
  51. package/dist/chunks/{config-CUwF4E4R.js.map → config-DBmdgoVf.js.map} +1 -1
  52. package/dist/chunks/{config-C9MblwGq.js.map → config-DICOd-2X.js.map} +1 -1
  53. package/dist/chunks/{config-C6zT56Jc2.js → config-DUcu1D68.js} +3 -3
  54. package/dist/chunks/config-DUcu1D68.js.map +1 -0
  55. package/dist/chunks/{config-D4s_QWVP.js → config-D_R56_gT.js} +5 -5
  56. package/dist/chunks/{config-D4s_QWVP.js.map → config-D_R56_gT.js.map} +1 -1
  57. package/dist/chunks/{config-_3De4HFf.js → config-DezDih8_.js} +4 -4
  58. package/dist/chunks/config-DezDih8_.js.map +1 -0
  59. package/dist/chunks/{config-CFf7xaG1.js → config-DnvPqu4g.js} +3 -3
  60. package/dist/chunks/{config-CFf7xaG1.js.map → config-DnvPqu4g.js.map} +1 -1
  61. package/dist/chunks/{config-D6Oe3blW2.js.map → config-DpqOnJiz2.js.map} +1 -1
  62. package/dist/chunks/{config-V3LF-b_F.js.map → config-Dxuwwepq.js.map} +1 -1
  63. package/dist/chunks/{config-CvGdaXvH.js.map → config-HZto2PVy.js.map} +1 -1
  64. package/dist/chunks/{config-BOdu-O_B.js.map → config-JOtB4mzs.js.map} +1 -1
  65. package/dist/chunks/{config-iuMz79Mg.js.map → config-JpHA4Xx0.js.map} +1 -1
  66. package/dist/chunks/{config-CetsgpaZ2.js → config-LGrZIdaZ2.js} +1 -1
  67. package/dist/chunks/{config-CetsgpaZ2.js.map → config-LGrZIdaZ2.js.map} +1 -1
  68. package/dist/chunks/{config-Dcb7xK-C.js.map → config-PFg39mYo.js.map} +1 -1
  69. package/dist/chunks/{config-CU_CBd0k.js → config-QYGvEBu5.js} +2 -2
  70. package/dist/chunks/{config-CU_CBd0k.js.map → config-QYGvEBu5.js.map} +1 -1
  71. package/dist/chunks/{config-BU0olrvr.js.map → config-QaIc_gRa.js.map} +1 -1
  72. package/dist/chunks/{config-vcDVCYXo.js.map → config-U4m9PSql.js.map} +1 -1
  73. package/dist/chunks/{config-Ci9nXGUV.js.map → config-ZiXWIRBX.js.map} +1 -1
  74. package/dist/chunks/{config-B2YTEe_h.js → config-eYLZYOUS2.js} +63 -63
  75. package/dist/chunks/config-eYLZYOUS2.js.map +1 -0
  76. package/dist/chunks/{config-Bcf-8XlK2.js.map → config-ipvU0lzP2.js.map} +1 -1
  77. package/dist/chunks/{config-B61cX08u.js → config-jBp9wVv-.js} +4 -4
  78. package/dist/chunks/{config-B61cX08u.js.map → config-jBp9wVv-.js.map} +1 -1
  79. package/dist/chunks/{config-D5ek7VSi.js.map → config-xR4XVmcy.js.map} +1 -1
  80. package/dist/chunks/{dialogShared-BtXUk6Zc.js.map → dialogShared-CxW62PQE.js.map} +1 -1
  81. package/dist/chunks/en-BdtiS2d3.js +138 -0
  82. package/dist/chunks/en-BdtiS2d3.js.map +1 -0
  83. package/dist/chunks/es-BGRMZbe9.js +138 -0
  84. package/dist/chunks/es-BGRMZbe9.js.map +1 -0
  85. package/dist/chunks/{es-Bx3Kuy6z.js → es-DBhctWg-.js} +3 -3
  86. package/dist/chunks/{es-Bx3Kuy6z.js.map → es-DBhctWg-.js.map} +1 -1
  87. package/dist/chunks/{fileValidation-c_iBg74s.js → fileValidation-C3WFaWU2.js} +2 -1
  88. package/dist/chunks/{fileValidation-c_iBg74s.js.map → fileValidation-C3WFaWU2.js.map} +1 -1
  89. package/dist/chunks/{grBadgeStyles-Cq0hH2Ls.js → grBadgeStyles-DrycBuKT.js} +13 -13
  90. package/dist/chunks/grBadgeStyles-DrycBuKT.js.map +1 -0
  91. package/dist/chunks/grButtonStyles-C7Yga_Q1.js +191 -0
  92. package/dist/chunks/grButtonStyles-C7Yga_Q1.js.map +1 -0
  93. package/dist/chunks/grDropdownStyles-B_-DKytw.js +35 -0
  94. package/dist/chunks/grDropdownStyles-B_-DKytw.js.map +1 -0
  95. package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js.map → grLoadingStyles-R5sreH__.js.map} +1 -1
  96. package/dist/chunks/{grModalStyles-DS1Vl6EW.js → grModalStyles-DWd3i05Q.js} +7 -7
  97. package/dist/chunks/grModalStyles-DWd3i05Q.js.map +1 -0
  98. package/dist/chunks/{grSelectStyles-pUt19VGy.js → grSelectStyles-CLK5hRd3.js} +3 -3
  99. package/dist/chunks/grSelectStyles-CLK5hRd3.js.map +1 -0
  100. package/dist/chunks/{grStyle-CUaTmpyW.js → grStyle-Blc9otAx.js} +6 -6
  101. package/dist/chunks/grStyle-Blc9otAx.js.map +1 -0
  102. package/dist/chunks/{granularityI18n-LcJ88Vce.js → granularityI18n-DoV7Ca2m.js} +18 -3
  103. package/dist/chunks/granularityI18n-DoV7Ca2m.js.map +1 -0
  104. package/dist/chunks/info-Be2OccTu.js.map +1 -0
  105. package/dist/chunks/loader-circle-CfVLz7lb.js.map +1 -0
  106. package/dist/chunks/ru-BFCnOiML.js +138 -0
  107. package/dist/chunks/ru-BFCnOiML.js.map +1 -0
  108. package/dist/chunks/{safelist-_UVzJrgE2.js → safelist-CkF4v7DC.js} +3 -3
  109. package/dist/chunks/safelist-CkF4v7DC.js.map +1 -0
  110. package/dist/chunks/{safelist-DccvJqCE.js → safelist-Do2RtzLB.js} +3 -3
  111. package/dist/chunks/{safelist-DccvJqCE.js.map → safelist-Do2RtzLB.js.map} +1 -1
  112. package/dist/chunks/shared-ChvcQgDl.js +168 -0
  113. package/dist/chunks/shared-ChvcQgDl.js.map +1 -0
  114. package/dist/chunks/{transition-mJ3PZCHH.js → transition-TLFw4KBn.js} +26 -12
  115. package/dist/chunks/{transition-mJ3PZCHH.js.map → transition-TLFw4KBn.js.map} +1 -1
  116. package/dist/chunks/useAddonMeasurement-DM0akF4C.js +65 -0
  117. package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +1 -0
  118. package/dist/chunks/useEscapeToClose-C2t_S1gh.js +27 -0
  119. package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +1 -0
  120. package/dist/chunks/useFloating-DtM6TyE4.js +1249 -0
  121. package/dist/chunks/useFloating-DtM6TyE4.js.map +1 -0
  122. package/dist/chunks/x-2KXnqxiD.js.map +1 -0
  123. package/dist/chunks/x-circle-BCBURwyX.js.map +1 -0
  124. package/dist/components/GrAlert/chunks/{GrAlert-HyCjYJeL.js → GrAlert-DPJSU_fG.js} +40 -37
  125. package/dist/components/GrAlert/chunks/GrAlert-DPJSU_fG.js.map +1 -0
  126. package/dist/components/GrAlert/index.js +2 -2
  127. package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js → GrAvatar-96CpTCq5.js} +2 -2
  128. package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js.map → GrAvatar-96CpTCq5.js.map} +1 -1
  129. package/dist/components/GrAvatar/index.js +2 -2
  130. package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js → GrBadge-B77XlaqE.js} +3 -3
  131. package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js.map → GrBadge-B77XlaqE.js.map} +1 -1
  132. package/dist/components/GrBadge/index.js +2 -2
  133. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js → GrBadgeWrap-CcktMOdg.js} +2 -2
  134. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js.map → GrBadgeWrap-CcktMOdg.js.map} +1 -1
  135. package/dist/components/GrBadgeWrap/index.js +2 -2
  136. package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js.map → GrBottomNav-usuMgG8_.js.map} +1 -1
  137. package/dist/components/GrBottomNav/index.js +2 -2
  138. package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js +124 -0
  139. package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js.map +1 -0
  140. package/dist/components/GrButton/index.js +4 -4
  141. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CPOH6V-P.js → GrButtonGroup-Bs9dEKfA.js} +1 -1
  142. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +1 -0
  143. package/dist/components/GrButtonGroup/index.js +2 -2
  144. package/dist/components/GrCard/chunks/{GrCard-6yk1RRAQ.js → GrCard-DUNMkuHW.js} +3 -3
  145. package/dist/components/GrCard/chunks/GrCard-DUNMkuHW.js.map +1 -0
  146. package/dist/components/GrCard/index.js +2 -2
  147. package/dist/components/GrCheckbox/chunks/{GrCheckbox-Bt3d7ckE.js → GrCheckbox-DJhzZZdO.js} +66 -18
  148. package/dist/components/GrCheckbox/chunks/GrCheckbox-DJhzZZdO.js.map +1 -0
  149. package/dist/components/GrCheckbox/index.js +2 -2
  150. package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js → GrCollapse-CPPLh_xU.js} +12 -12
  151. package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js.map → GrCollapse-CPPLh_xU.js.map} +1 -1
  152. package/dist/components/GrCollapse/index.js +2 -2
  153. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Br6WJkLE.js → GrConfirmDialog-BWYKCsHd.js} +20 -14
  154. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-BWYKCsHd.js.map +1 -0
  155. package/dist/components/GrConfirmDialog/index.js +2 -2
  156. package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js → GrDataTable-ptbARmJ3.js} +7 -7
  157. package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js.map → GrDataTable-ptbARmJ3.js.map} +1 -1
  158. package/dist/components/GrDataTable/index.js +2 -2
  159. package/dist/components/GrDialog/chunks/{GrDialog-C7XLxp8e.js → GrDialog-5DAS-1Lb.js} +14 -12
  160. package/dist/components/GrDialog/chunks/GrDialog-5DAS-1Lb.js.map +1 -0
  161. package/dist/components/GrDialog/index.js +3 -3
  162. package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js +425 -0
  163. package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js.map +1 -0
  164. package/dist/components/GrDialogService/index.js +3 -0
  165. package/dist/components/GrDrawer/chunks/{GrDrawer-BW3wtI7h.js → GrDrawer-D1kzsjXN.js} +19 -15
  166. package/dist/components/GrDrawer/chunks/GrDrawer-D1kzsjXN.js.map +1 -0
  167. package/dist/components/GrDrawer/index.js +2 -2
  168. package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js +95 -0
  169. package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js.map +1 -0
  170. package/dist/components/GrDropdown/index.js +2 -2
  171. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CLPwbiyG.js → GrDropdownMenu-DFEJLPcV.js} +10 -10
  172. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CLPwbiyG.js.map → GrDropdownMenu-DFEJLPcV.js.map} +1 -1
  173. package/dist/components/GrDropdownMenu/index.js +2 -2
  174. package/dist/components/GrEmptyState/chunks/{GrEmptyState-Dj2V5GaX.js → GrEmptyState-CA3BiTV7.js} +3 -3
  175. package/dist/components/GrEmptyState/chunks/{GrEmptyState-Dj2V5GaX.js.map → GrEmptyState-CA3BiTV7.js.map} +1 -1
  176. package/dist/components/GrEmptyState/index.js +2 -2
  177. package/dist/components/GrFileUpload/chunks/{GrFileUpload-BEKNB1RM.js → GrFileUpload-DvWPpiJS.js} +26 -23
  178. package/dist/components/GrFileUpload/chunks/GrFileUpload-DvWPpiJS.js.map +1 -0
  179. package/dist/components/GrFileUpload/index.js +3 -3
  180. package/dist/components/GrFormField/chunks/{GrFormField-U7c_aDPJ.js → GrFormField-BujNQrw8.js} +1 -1
  181. package/dist/components/GrFormField/chunks/{GrFormField-U7c_aDPJ.js.map → GrFormField-BujNQrw8.js.map} +1 -1
  182. package/dist/components/GrFormField/index.js +2 -2
  183. package/dist/components/GrFormFile/chunks/{GrFormFile-CIleXnfr.js → GrFormFile-CXcqqdvV.js} +38 -31
  184. package/dist/components/GrFormFile/chunks/GrFormFile-CXcqqdvV.js.map +1 -0
  185. package/dist/components/GrFormFile/index.js +2 -2
  186. package/dist/components/GrFormSection/chunks/{GrFormSection-DpGhY7MX.js → GrFormSection-Ce21jcgo.js} +1 -1
  187. package/dist/components/GrFormSection/chunks/{GrFormSection-DpGhY7MX.js.map → GrFormSection-Ce21jcgo.js.map} +1 -1
  188. package/dist/components/GrFormSection/index.js +2 -2
  189. package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js → GrIcon-D9AWQLk2.js} +3 -3
  190. package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js.map → GrIcon-D9AWQLk2.js.map} +1 -1
  191. package/dist/components/GrIcon/index.js +2 -2
  192. package/dist/components/GrImageViewer/chunks/{GrImageViewer-CsvXQHM9.js → GrImageViewer-OCUIrNh2.js} +44 -33
  193. package/dist/components/GrImageViewer/chunks/GrImageViewer-OCUIrNh2.js.map +1 -0
  194. package/dist/components/GrImageViewer/index.js +2 -2
  195. package/dist/components/GrInput/chunks/{GrInput-gwFQ1sk4.js → GrInput-C8pOJgCi.js} +43 -66
  196. package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js.map +1 -0
  197. package/dist/components/GrInput/index.js +2 -2
  198. package/dist/components/GrInputTag/chunks/{GrInputTag-Dcj3F6rQ.js → GrInputTag-zMgFqp2g.js} +27 -24
  199. package/dist/components/GrInputTag/chunks/GrInputTag-zMgFqp2g.js.map +1 -0
  200. package/dist/components/GrInputTag/index.js +2 -2
  201. package/dist/components/GrLink/chunks/{GrLink-BMwn2iJ9.js → GrLink-CYUe-Q8k.js} +14 -7
  202. package/dist/components/GrLink/chunks/GrLink-CYUe-Q8k.js.map +1 -0
  203. package/dist/components/GrLink/index.js +2 -2
  204. package/dist/components/GrList/chunks/{GrList-D8nM1FuV.js → GrList-Dx772Ns4.js} +1 -1
  205. package/dist/components/GrList/chunks/{GrList-D8nM1FuV.js.map → GrList-Dx772Ns4.js.map} +1 -1
  206. package/dist/components/GrList/index.js +2 -2
  207. package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js → GrLoading--X_7rdbb.js} +7 -7
  208. package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js.map → GrLoading--X_7rdbb.js.map} +1 -1
  209. package/dist/components/GrLoading/index.js +2 -2
  210. package/dist/components/GrModal/chunks/{GrModal-lh0lOmoi.js → GrModal-BkjW9jZS.js} +7 -7
  211. package/dist/components/GrModal/chunks/{GrModal-lh0lOmoi.js.map → GrModal-BkjW9jZS.js.map} +1 -1
  212. package/dist/components/GrModal/index.js +3 -3
  213. package/dist/components/GrNavbar/chunks/{GrNavbar-BH7XiF9q.js → GrNavbar-DW3MiIIf.js} +6 -6
  214. package/dist/components/GrNavbar/chunks/{GrNavbar-BH7XiF9q.js.map → GrNavbar-DW3MiIIf.js.map} +1 -1
  215. package/dist/components/GrNavbar/index.js +2 -2
  216. package/dist/components/GrNumberInput/chunks/{GrNumberInput-YIWhV85S.js → GrNumberInput-CldPIWQx.js} +51 -61
  217. package/dist/components/GrNumberInput/chunks/GrNumberInput-CldPIWQx.js.map +1 -0
  218. package/dist/components/GrNumberInput/index.js +2 -2
  219. package/dist/components/GrPagination/chunks/GrPagination-Bu9wv6it.js +165 -0
  220. package/dist/components/GrPagination/chunks/GrPagination-Bu9wv6it.js.map +1 -0
  221. package/dist/components/GrPagination/index.js +2 -2
  222. package/dist/components/GrProgressBar/chunks/{GrProgressBar-C2HdYjp4.js → GrProgressBar-CC3z-Zqp.js} +3 -3
  223. package/dist/components/GrProgressBar/chunks/{GrProgressBar-C2HdYjp4.js.map → GrProgressBar-CC3z-Zqp.js.map} +1 -1
  224. package/dist/components/GrProgressBar/index.js +2 -2
  225. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BV4EW3XO.js → GrPromptDialog-TmWXbpEP.js} +31 -23
  226. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-TmWXbpEP.js.map +1 -0
  227. package/dist/components/GrPromptDialog/index.js +2 -2
  228. package/dist/components/GrRadio/chunks/{GrRadio-IFU9Hiu2.js → GrRadio-CPTixXaY.js} +6 -6
  229. package/dist/components/GrRadio/chunks/{GrRadio-IFU9Hiu2.js.map → GrRadio-CPTixXaY.js.map} +1 -1
  230. package/dist/components/GrRadio/index.js +2 -2
  231. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-C8IcJuuF.js → GrRadioGroup-vKZCbkCp.js} +3 -3
  232. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-C8IcJuuF.js.map → GrRadioGroup-vKZCbkCp.js.map} +1 -1
  233. package/dist/components/GrRadioGroup/index.js +2 -2
  234. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BMvXREcv.js → GrResponseErrorBanner-BWJNe2gr.js} +21 -18
  235. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BWJNe2gr.js.map +1 -0
  236. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CzdTh4gd.js → GrResponseErrorBanner-Cdu9ekK9.js} +5 -5
  237. package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CzdTh4gd.js.map → GrResponseErrorBanner-Cdu9ekK9.js.map} +1 -1
  238. package/dist/components/GrResponseErrorBanner/index.js +2 -2
  239. package/dist/components/GrSegmented/chunks/{GrSegmented-BRmwBsEG.js → GrSegmented-C1y0UXpQ.js} +5 -5
  240. package/dist/components/GrSegmented/chunks/{GrSegmented-BRmwBsEG.js.map → GrSegmented-C1y0UXpQ.js.map} +1 -1
  241. package/dist/components/GrSegmented/index.js +2 -2
  242. package/dist/components/GrSelect/chunks/{GrSelect-CnHdbPlf.js → GrSelect-RShK21lK.js} +106 -112
  243. package/dist/components/GrSelect/chunks/GrSelect-RShK21lK.js.map +1 -0
  244. package/dist/components/GrSelect/index.js +2 -2
  245. package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js +238 -0
  246. package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js.map +1 -0
  247. package/dist/components/GrSidebar/index.js +3 -3
  248. package/dist/components/GrSkeleton/chunks/{GrSkeleton-URyMkBqI.js → GrSkeleton-DsN-_CDZ.js} +1 -1
  249. package/dist/components/GrSkeleton/chunks/{GrSkeleton-URyMkBqI.js.map → GrSkeleton-DsN-_CDZ.js.map} +1 -1
  250. package/dist/components/GrSkeleton/index.js +2 -2
  251. package/dist/components/GrSwitch/chunks/{GrSwitch-29h0QhMO.js → GrSwitch-DAioyccZ.js} +10 -10
  252. package/dist/components/GrSwitch/chunks/{GrSwitch-29h0QhMO.js.map → GrSwitch-DAioyccZ.js.map} +1 -1
  253. package/dist/components/GrSwitch/index.js +2 -2
  254. package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js → GrTable-Db3hRnKA.js} +3 -3
  255. package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js.map → GrTable-Db3hRnKA.js.map} +1 -1
  256. package/dist/components/GrTable/index.js +2 -2
  257. package/dist/components/GrTabs/chunks/{GrTabs-D3ntDdtg.js → GrTabs-Z-FDJUr_.js} +3 -3
  258. package/dist/components/GrTabs/chunks/{GrTabs-D3ntDdtg.js.map → GrTabs-Z-FDJUr_.js.map} +1 -1
  259. package/dist/components/GrTabs/index.js +2 -2
  260. package/dist/components/GrTextarea/chunks/{GrTextarea-Cv6r2GuC.js → GrTextarea-D56YxhKq.js} +3 -3
  261. package/dist/components/GrTextarea/chunks/{GrTextarea-Cv6r2GuC.js.map → GrTextarea-D56YxhKq.js.map} +1 -1
  262. package/dist/components/GrTextarea/index.js +2 -2
  263. package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js +189 -0
  264. package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js.map +1 -0
  265. package/dist/components/GrToaster/index.js +2 -2
  266. package/dist/components/GrTooltip/chunks/GrTooltip-BeyZ8ssR.js +109 -0
  267. package/dist/components/GrTooltip/chunks/GrTooltip-BeyZ8ssR.js.map +1 -0
  268. package/dist/components/GrTooltip/index.js +2 -2
  269. package/dist/components/GrTree/chunks/{GrTree-B2SMU5Py.js → GrTree-D3ODe2dB.js} +40 -35
  270. package/dist/components/GrTree/chunks/GrTree-D3ODe2dB.js.map +1 -0
  271. package/dist/components/GrTree/index.js +2 -2
  272. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-C1abr5uH.js → GrTreeSelect-B2xBKs5Q.js} +21 -49
  273. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B2xBKs5Q.js.map +1 -0
  274. package/dist/components/GrTreeSelect/index.js +2 -2
  275. package/dist/composables/useTheme.js +48 -8
  276. package/dist/composables/useTheme.js.map +1 -1
  277. package/dist/composables/useToast.js +88 -26
  278. package/dist/composables/useToast.js.map +1 -1
  279. package/dist/directives/autofocus.js.map +1 -1
  280. package/dist/directives/autosize.js.map +1 -1
  281. package/dist/directives/clickOutside.js.map +1 -1
  282. package/dist/directives/dropzone.js +6 -5
  283. package/dist/directives/dropzone.js.map +1 -1
  284. package/dist/directives/hotkey.js +24 -7
  285. package/dist/directives/hotkey.js.map +1 -1
  286. package/dist/directives/loading.js +2 -2
  287. package/dist/directives/loading.js.map +1 -1
  288. package/dist/fileValidation/index.js +1 -1
  289. package/dist/granular-provider-node.js +7 -7
  290. package/dist/granular-provider-node.js.map +1 -1
  291. package/dist/granular-provider.js +1 -1
  292. package/dist/granular-provider.js.map +1 -1
  293. package/dist/i18n/all.js +1 -1
  294. package/dist/i18n/all.js.map +1 -1
  295. package/dist/i18n/index.js +2 -2
  296. package/dist/index.js +109 -534
  297. package/dist/index.js.map +1 -1
  298. package/dist/styles/base.css +32 -0
  299. package/dist/styles/index.css +15 -0
  300. package/dist/styles/preflight.css +29 -0
  301. package/dist/styles/themes/dark.css +107 -0
  302. package/dist/styles/themes/light.css +98 -0
  303. package/dist/styles/tokens.css +135 -0
  304. package/dist/types/src/components/GrButton/GrButton.vue.d.ts +25 -2
  305. package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +7 -2
  306. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +8 -8
  307. package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
  308. package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +2 -2
  309. package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +2 -2
  310. package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +2 -2
  311. package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +3 -2
  312. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +2 -2
  313. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +1 -1
  314. package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +2 -2
  315. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +5 -5
  316. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +11 -11
  317. package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +18 -18
  318. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +14 -0
  319. package/dist/types/src/components/GrInput/grInputStyles.d.ts +3 -3
  320. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +2 -2
  321. package/dist/types/src/components/GrLink/GrLink.vue.d.ts +11 -5
  322. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +31 -3
  323. package/dist/types/src/components/GrLink/index.d.ts +1 -1
  324. package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +1 -1
  325. package/dist/types/src/components/GrModal/grModalStyles.d.ts +2 -2
  326. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +17 -4
  327. package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +13 -1
  328. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +12 -12
  329. package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +2 -2
  330. package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +5 -5
  331. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +7 -7
  332. package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +2 -1
  333. package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +33 -10
  334. package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +64 -0
  335. package/dist/types/src/components/GrSidebar/index.d.ts +1 -0
  336. package/dist/types/src/components/GrSidebar/sidebarContext.d.ts +9 -0
  337. package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +1 -1
  338. package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +2 -2
  339. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +9 -4
  340. package/dist/types/src/components/GrTree/GrTree.vue.d.ts +1 -1
  341. package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +2 -2
  342. package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
  343. package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +1 -1
  344. package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +18 -0
  345. package/dist/types/src/composables/internal/useEscapeToClose.d.ts +11 -0
  346. package/dist/types/src/composables/internal/useFloating.d.ts +53 -0
  347. package/dist/types/src/composables/useTheme.d.ts +5 -2
  348. package/dist/types/src/composables/useToast.d.ts +33 -1
  349. package/dist/types/src/directives/hotkey.d.ts +14 -0
  350. package/dist/types/src/granular-provider/shared.d.ts +1 -3
  351. package/dist/types/src/i18n/messages/en.d.ts +132 -0
  352. package/dist/types/src/i18n/messages/es.d.ts +132 -0
  353. package/dist/types/src/i18n/messages/ru.d.ts +132 -0
  354. package/dist/types/src/index.d.ts +2 -2
  355. package/dist/vue/index.js.map +1 -1
  356. package/dist/web-types.json +4673 -0
  357. package/package.json +33 -19
  358. package/dist/chunks/arrow-up-DZdIrpaF.js.map +0 -1
  359. package/dist/chunks/config-B2YTEe_h.js.map +0 -1
  360. package/dist/chunks/config-BY81UKv0.js.map +0 -1
  361. package/dist/chunks/config-Br_qI3Za.js.map +0 -1
  362. package/dist/chunks/config-C6zT56Jc2.js.map +0 -1
  363. package/dist/chunks/config-CpMYmvVT.js +0 -59
  364. package/dist/chunks/config-CpMYmvVT.js.map +0 -1
  365. package/dist/chunks/config-_3De4HFf.js.map +0 -1
  366. package/dist/chunks/en-foQA8imU.js +0 -65
  367. package/dist/chunks/en-foQA8imU.js.map +0 -1
  368. package/dist/chunks/es-DZFSojYL.js +0 -65
  369. package/dist/chunks/es-DZFSojYL.js.map +0 -1
  370. package/dist/chunks/grBadgeStyles-Cq0hH2Ls.js.map +0 -1
  371. package/dist/chunks/grButtonStyles-DKuXUemw.js +0 -191
  372. package/dist/chunks/grButtonStyles-DKuXUemw.js.map +0 -1
  373. package/dist/chunks/grDropdownStyles-B41mVR1H.js +0 -32
  374. package/dist/chunks/grDropdownStyles-B41mVR1H.js.map +0 -1
  375. package/dist/chunks/grModalStyles-DS1Vl6EW.js.map +0 -1
  376. package/dist/chunks/grSelectStyles-pUt19VGy.js.map +0 -1
  377. package/dist/chunks/grStyle-CUaTmpyW.js.map +0 -1
  378. package/dist/chunks/granularityI18n-LcJ88Vce.js.map +0 -1
  379. package/dist/chunks/info-C0bHmdZq.js.map +0 -1
  380. package/dist/chunks/loader-circle-BUntgosj.js.map +0 -1
  381. package/dist/chunks/ru-LhkPpPIl.js +0 -65
  382. package/dist/chunks/ru-LhkPpPIl.js.map +0 -1
  383. package/dist/chunks/safelist-_UVzJrgE2.js.map +0 -1
  384. package/dist/chunks/shared-BiqXd5MW.js +0 -169
  385. package/dist/chunks/shared-BiqXd5MW.js.map +0 -1
  386. package/dist/chunks/x-Pa6C2hwi.js.map +0 -1
  387. package/dist/chunks/x-circle-DQSlBLmX.js.map +0 -1
  388. package/dist/components/GrAlert/chunks/GrAlert-HyCjYJeL.js.map +0 -1
  389. package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js +0 -83
  390. package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js.map +0 -1
  391. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CPOH6V-P.js.map +0 -1
  392. package/dist/components/GrCard/chunks/GrCard-6yk1RRAQ.js.map +0 -1
  393. package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +0 -1
  394. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-Br6WJkLE.js.map +0 -1
  395. package/dist/components/GrDialog/chunks/GrDialog-C7XLxp8e.js.map +0 -1
  396. package/dist/components/GrDrawer/chunks/GrDrawer-BW3wtI7h.js.map +0 -1
  397. package/dist/components/GrDropdown/chunks/GrDropdown-DOvHKnih.js +0 -151
  398. package/dist/components/GrDropdown/chunks/GrDropdown-DOvHKnih.js.map +0 -1
  399. package/dist/components/GrFileUpload/chunks/GrFileUpload-BEKNB1RM.js.map +0 -1
  400. package/dist/components/GrFormFile/chunks/GrFormFile-CIleXnfr.js.map +0 -1
  401. package/dist/components/GrImageViewer/chunks/GrImageViewer-CsvXQHM9.js.map +0 -1
  402. package/dist/components/GrInput/chunks/GrInput-gwFQ1sk4.js.map +0 -1
  403. package/dist/components/GrInputTag/chunks/GrInputTag-Dcj3F6rQ.js.map +0 -1
  404. package/dist/components/GrLink/chunks/GrLink-BMwn2iJ9.js.map +0 -1
  405. package/dist/components/GrNumberInput/chunks/GrNumberInput-YIWhV85S.js.map +0 -1
  406. package/dist/components/GrPagination/chunks/GrPagination-BNDEqM8_.js +0 -114
  407. package/dist/components/GrPagination/chunks/GrPagination-BNDEqM8_.js.map +0 -1
  408. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-BV4EW3XO.js.map +0 -1
  409. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BMvXREcv.js.map +0 -1
  410. package/dist/components/GrSelect/chunks/GrSelect-CnHdbPlf.js.map +0 -1
  411. package/dist/components/GrSidebar/chunks/GrSidebar-BpBtAGBs.js +0 -44
  412. package/dist/components/GrSidebar/chunks/GrSidebar-BpBtAGBs.js.map +0 -1
  413. package/dist/components/GrToaster/chunks/GrToaster-DluJmR5D.js +0 -171
  414. package/dist/components/GrToaster/chunks/GrToaster-DluJmR5D.js.map +0 -1
  415. package/dist/components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js +0 -55
  416. package/dist/components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js.map +0 -1
  417. package/dist/components/GrTree/chunks/GrTree-B2SMU5Py.js.map +0 -1
  418. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-C1abr5uH.js.map +0 -1
  419. /package/dist/chunks/{_plugin-vue_export-helper-DQR7Sy7Q.js → _plugin-vue_export-helper-BOaGB7Aw.js} +0 -0
  420. /package/dist/chunks/{adapter-BqqjEZGU.js → adapter-CAOxmn2G.js} +0 -0
  421. /package/dist/chunks/{arrow-up-DZdIrpaF.js → arrow-up-C_G4jg8M.js} +0 -0
  422. /package/dist/chunks/{classTokens-BPeBXNzu.js → classTokens-BzazaERD.js} +0 -0
  423. /package/dist/chunks/{config-DaHI5bD_2.js → config-8Pcutu1j2.js} +0 -0
  424. /package/dist/chunks/{config-DoBk_CzG.js → config-B0qIpo8m.js} +0 -0
  425. /package/dist/chunks/{config-DbghHyY_.js → config-BEegFP74.js} +0 -0
  426. /package/dist/chunks/{config-Dzd6BzIN2.js → config-BLHqZhy-2.js} +0 -0
  427. /package/dist/chunks/{config-BV4vBzdm.js → config-BNu8lFQB.js} +0 -0
  428. /package/dist/chunks/{config-B1kFmhpM.js → config-BUHuGBik.js} +0 -0
  429. /package/dist/chunks/{config-DF_RlCIO.js → config-BWGGp7uV.js} +0 -0
  430. /package/dist/chunks/{config-BduXEXjt.js → config-BXtAmU3s.js} +0 -0
  431. /package/dist/chunks/{config-O1_FTqD3.js → config-Bah4oHwL.js} +0 -0
  432. /package/dist/chunks/{config-DSBlHQVa.js → config-C86UzUYf.js} +0 -0
  433. /package/dist/chunks/{config-BgBWt9-A.js → config-C9AcVDkv.js} +0 -0
  434. /package/dist/chunks/{config-BeQuykDk2.js → config-CGHLoBlH2.js} +0 -0
  435. /package/dist/chunks/{config-ChQxl75m.js → config-CThzliFi.js} +0 -0
  436. /package/dist/chunks/{config-DmjwIqx1.js → config-Cb2PAlSD.js} +0 -0
  437. /package/dist/chunks/{config-BbKroFtR.js → config-D7GZO-Dx.js} +0 -0
  438. /package/dist/chunks/{config-CUwF4E4R.js → config-DBmdgoVf.js} +0 -0
  439. /package/dist/chunks/{config-C9MblwGq.js → config-DICOd-2X.js} +0 -0
  440. /package/dist/chunks/{config-D6Oe3blW2.js → config-DpqOnJiz2.js} +0 -0
  441. /package/dist/chunks/{config-V3LF-b_F.js → config-Dxuwwepq.js} +0 -0
  442. /package/dist/chunks/{config-CvGdaXvH.js → config-HZto2PVy.js} +0 -0
  443. /package/dist/chunks/{config-BOdu-O_B.js → config-JOtB4mzs.js} +0 -0
  444. /package/dist/chunks/{config-iuMz79Mg.js → config-JpHA4Xx0.js} +0 -0
  445. /package/dist/chunks/{config-Dcb7xK-C.js → config-PFg39mYo.js} +0 -0
  446. /package/dist/chunks/{config-BU0olrvr.js → config-QaIc_gRa.js} +0 -0
  447. /package/dist/chunks/{config-vcDVCYXo.js → config-U4m9PSql.js} +0 -0
  448. /package/dist/chunks/{config-Ci9nXGUV.js → config-ZiXWIRBX.js} +0 -0
  449. /package/dist/chunks/{config-Bcf-8XlK2.js → config-ipvU0lzP2.js} +0 -0
  450. /package/dist/chunks/{config-D5ek7VSi.js → config-xR4XVmcy.js} +0 -0
  451. /package/dist/chunks/{dialogShared-BtXUk6Zc.js → dialogShared-CxW62PQE.js} +0 -0
  452. /package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js → grLoadingStyles-R5sreH__.js} +0 -0
  453. /package/dist/chunks/{info-C0bHmdZq.js → info-Be2OccTu.js} +0 -0
  454. /package/dist/chunks/{loader-circle-BUntgosj.js → loader-circle-CfVLz7lb.js} +0 -0
  455. /package/dist/chunks/{x-Pa6C2hwi.js → x-2KXnqxiD.js} +0 -0
  456. /package/dist/chunks/{x-circle-DQSlBLmX.js → x-circle-BCBURwyX.js} +0 -0
  457. /package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js → GrBottomNav-usuMgG8_.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"hotkey.js","names":[],"sources":["../../src/directives/hotkey.ts"],"sourcesContent":["import type { Directive } from 'vue'\n\nexport type HotkeyHandler = (event: KeyboardEvent) => void\n\nexport type HotkeyEntry =\n | HotkeyHandler\n | {\n handler: HotkeyHandler\n /** По умолчанию: `true` для комбинаций с Ctrl/Meta/Alt, иначе `false`. */\n preventDefault?: boolean\n /** По умолчанию `false`. */\n stopPropagation?: boolean\n /** Разрешить срабатывать, когда фокус в `input/textarea/[contenteditable]`. */\n allowInEditable?: boolean\n }\n\nexport type HotkeyMap = Record<string, HotkeyEntry>\n\nexport type HotkeyBindingValue =\n | HotkeyMap\n | {\n handlers: HotkeyMap\n enabled?: boolean\n }\n\ntype ParsedHotkey = {\n original: string\n key: string\n ctrl: boolean\n meta: boolean\n alt: boolean\n shift: boolean\n entry: HotkeyEntry\n}\n\ntype InternalState = {\n enabled: boolean\n hotkeys: ParsedHotkey[]\n listener: (event: KeyboardEvent) => void\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false\n if (target.isContentEditable) return true\n\n const tag = target.tagName\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT'\n}\n\nfunction normalizeBinding(value: HotkeyBindingValue | undefined) {\n if (!value) return { enabled: false, handlers: {} as HotkeyMap }\n if ('handlers' in (value as any)) {\n const v = value as { handlers: HotkeyMap; enabled?: boolean }\n return { enabled: v.enabled ?? true, handlers: v.handlers ?? {} }\n }\n return { enabled: true, handlers: value as HotkeyMap }\n}\n\nfunction normalizeKeyToken(token: string): string {\n const t = token.trim().toLowerCase()\n if (t === 'esc') return 'Escape'\n if (t === 'escape') return 'Escape'\n if (t === 'space') return ' '\n if (t.length === 1) return t\n return token.trim()\n}\n\nfunction parseHotkeys(map: HotkeyMap): ParsedHotkey[] {\n const parsed: ParsedHotkey[] = []\n\n for (const [combo, entry] of Object.entries(map)) {\n const parts = combo\n .split('+')\n .map(p => p.trim())\n .filter(Boolean)\n\n if (!parts.length) continue\n\n let ctrl = false\n let meta = false\n let alt = false\n let shift = false\n\n const keyToken = parts.at(-1)\n if (!keyToken) continue\n for (const p of parts.slice(0, -1)) {\n const t = p.toLowerCase()\n if (t === 'ctrl' || t === 'control') ctrl = true\n else if (t === 'meta' || t === 'cmd' || t === 'command' || t === '⌘') meta = true\n else if (t === 'alt' || t === 'option') alt = true\n else if (t === 'shift') shift = true\n }\n\n const key = normalizeKeyToken(keyToken)\n parsed.push({ original: combo, key, ctrl, meta, alt, shift, entry })\n }\n\n return parsed\n}\n\nfunction matchKey(expected: string, eventKey: string): boolean {\n if (expected === ' ') return eventKey === ' ' || eventKey === 'Spacebar'\n if (expected.length === 1) return expected.toLowerCase() === eventKey.toLowerCase()\n return expected === eventKey\n}\n\nfunction resolveEntry(entry: HotkeyEntry) {\n if (typeof entry === 'function') {\n return {\n handler: entry,\n preventDefault: undefined as boolean | undefined,\n stopPropagation: false,\n allowInEditable: false,\n }\n }\n\n return {\n handler: entry.handler,\n preventDefault: entry.preventDefault,\n stopPropagation: entry.stopPropagation ?? false,\n allowInEditable: entry.allowInEditable ?? false,\n }\n}\n\n/**\n * `v-hotkey` — горячие клавиши на компонент/страницу.\n *\n * Пример:\n * ```vue\n * <div v-hotkey=\"{ 'Escape': close, 'Ctrl+K': openSearch }\" />\n * ```\n */\nexport const vHotkey: Directive<HTMLElement, HotkeyBindingValue> = {\n mounted(el, binding) {\n if (typeof window === 'undefined') return\n\n const { enabled, handlers } = normalizeBinding(binding.value)\n\n const state: InternalState = {\n enabled,\n hotkeys: parseHotkeys(handlers),\n listener: (event: KeyboardEvent) => {\n const current = states.get(el)\n if (!current?.enabled) return\n if (!el.isConnected) return\n\n const editable = isEditableTarget(event.target)\n\n for (const hk of current.hotkeys) {\n if (hk.ctrl !== event.ctrlKey) continue\n if (hk.meta !== event.metaKey) continue\n if (hk.alt !== event.altKey) continue\n if (hk.shift !== event.shiftKey) continue\n if (!matchKey(hk.key, event.key)) continue\n\n const entry = resolveEntry(hk.entry)\n\n // По умолчанию не перехватываем \"простые\" клавиши во время ввода.\n const hasModifier = hk.ctrl || hk.meta || hk.alt || hk.shift\n if (editable && !entry.allowInEditable && !hasModifier && hk.key !== 'Escape') {\n continue\n }\n\n const preventDefault = entry.preventDefault ?? (hk.ctrl || hk.meta || hk.alt)\n if (preventDefault) event.preventDefault()\n if (entry.stopPropagation) event.stopPropagation()\n\n entry.handler(event)\n return\n }\n },\n }\n\n states.set(el, state)\n window.addEventListener('keydown', state.listener)\n },\n updated(el, binding) {\n const state = states.get(el)\n if (!state) return\n\n const next = normalizeBinding(binding.value)\n state.enabled = next.enabled\n state.hotkeys = parseHotkeys(next.handlers)\n },\n unmounted(el) {\n const state = states.get(el)\n if (!state) return\n window.removeEventListener('keydown', state.listener)\n states.delete(el)\n },\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"hotkey.js","names":[],"sources":["../../src/directives/hotkey.ts"],"sourcesContent":["import type { Directive } from 'vue'\n\nexport type HotkeyHandler = (event: KeyboardEvent) => void\n\nexport type HotkeyEntry =\n | HotkeyHandler\n | {\n handler: HotkeyHandler\n /** По умолчанию: `true` для комбинаций с Ctrl/Meta/Alt, иначе `false`. */\n preventDefault?: boolean\n /** По умолчанию `false`. */\n stopPropagation?: boolean\n /** Разрешить срабатывать, когда фокус в `input/textarea/[contenteditable]`. */\n allowInEditable?: boolean\n }\n\nexport type HotkeyMap = Record<string, HotkeyEntry>\n\n/**\n * Где слушать клавиатуру:\n * - `'global'` (по умолчанию) — слушатель на `window`; хоткеи работают из любого места страницы.\n * - `'element'` — слушатель на самом элементе; хоткеи срабатывают только когда фокус внутри\n * элемента (событие всплывает до него). Элемент должен быть фокусируемым (`tabindex`).\n */\nexport type HotkeyScope = 'global' | 'element'\n\nexport type HotkeyBindingValue =\n | HotkeyMap\n | {\n handlers: HotkeyMap\n enabled?: boolean\n scope?: HotkeyScope\n }\n\ntype ParsedHotkey = {\n original: string\n key: string\n ctrl: boolean\n meta: boolean\n alt: boolean\n shift: boolean\n entry: HotkeyEntry\n}\n\ntype InternalState = {\n enabled: boolean\n hotkeys: ParsedHotkey[]\n listener: (event: KeyboardEvent) => void\n /** Цель, на которой висит слушатель (`window` для 'global', сам `el` для 'element'). */\n target: Window | HTMLElement\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false\n if (target.isContentEditable) return true\n\n const tag = target.tagName\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT'\n}\n\nfunction normalizeBinding(value: HotkeyBindingValue | undefined) {\n if (!value) return { enabled: false, handlers: {} as HotkeyMap, scope: 'global' as HotkeyScope }\n if ('handlers' in (value as any)) {\n const v = value as { handlers: HotkeyMap; enabled?: boolean; scope?: HotkeyScope }\n return { enabled: v.enabled ?? true, handlers: v.handlers ?? {}, scope: v.scope ?? 'global' }\n }\n return { enabled: true, handlers: value as HotkeyMap, scope: 'global' as HotkeyScope }\n}\n\nfunction normalizeKeyToken(token: string): string {\n const t = token.trim().toLowerCase()\n if (t === 'esc') return 'Escape'\n if (t === 'escape') return 'Escape'\n if (t === 'space') return ' '\n if (t.length === 1) return t\n return token.trim()\n}\n\nfunction parseHotkeys(map: HotkeyMap): ParsedHotkey[] {\n const parsed: ParsedHotkey[] = []\n\n for (const [combo, entry] of Object.entries(map)) {\n const parts = combo\n .split('+')\n .map(p => p.trim())\n .filter(Boolean)\n\n if (!parts.length) continue\n\n let ctrl = false\n let meta = false\n let alt = false\n let shift = false\n\n const keyToken = parts.at(-1)\n if (!keyToken) continue\n for (const p of parts.slice(0, -1)) {\n const t = p.toLowerCase()\n if (t === 'ctrl' || t === 'control') ctrl = true\n else if (t === 'meta' || t === 'cmd' || t === 'command' || t === '⌘') meta = true\n else if (t === 'alt' || t === 'option') alt = true\n else if (t === 'shift') shift = true\n }\n\n const key = normalizeKeyToken(keyToken)\n parsed.push({ original: combo, key, ctrl, meta, alt, shift, entry })\n }\n\n return parsed\n}\n\nfunction matchKey(expected: string, eventKey: string): boolean {\n if (expected === ' ') return eventKey === ' ' || eventKey === 'Spacebar'\n if (expected.length === 1) return expected.toLowerCase() === eventKey.toLowerCase()\n return expected === eventKey\n}\n\nfunction resolveEntry(entry: HotkeyEntry) {\n if (typeof entry === 'function') {\n return {\n handler: entry,\n preventDefault: undefined as boolean | undefined,\n stopPropagation: false,\n allowInEditable: false,\n }\n }\n\n return {\n handler: entry.handler,\n preventDefault: entry.preventDefault,\n stopPropagation: entry.stopPropagation ?? false,\n allowInEditable: entry.allowInEditable ?? false,\n }\n}\n\n/**\n * `v-hotkey` — горячие клавиши на компонент/страницу.\n *\n * Пример:\n * ```vue\n * <div v-hotkey=\"{ 'Escape': close, 'Ctrl+K': openSearch }\" />\n * ```\n *\n * По умолчанию слушатель глобальный (`window`). Чтобы хоткеи срабатывали только\n * когда фокус внутри элемента, используйте `scope: 'element'`:\n * ```vue\n * <div tabindex=\"0\" v-hotkey=\"{ handlers: { 'j': next }, scope: 'element' }\" />\n * ```\n */\nexport const vHotkey: Directive<HTMLElement, HotkeyBindingValue> = {\n mounted(el, binding) {\n if (typeof window === 'undefined') return\n\n const { enabled, handlers, scope } = normalizeBinding(binding.value)\n const target: Window | HTMLElement = scope === 'element' ? el : window\n\n const state: InternalState = {\n enabled,\n hotkeys: parseHotkeys(handlers),\n listener: (event: KeyboardEvent) => {\n const current = states.get(el)\n if (!current?.enabled) return\n if (!el.isConnected) return\n\n const editable = isEditableTarget(event.target)\n\n for (const hk of current.hotkeys) {\n if (hk.ctrl !== event.ctrlKey) continue\n if (hk.meta !== event.metaKey) continue\n if (hk.alt !== event.altKey) continue\n if (hk.shift !== event.shiftKey) continue\n if (!matchKey(hk.key, event.key)) continue\n\n const entry = resolveEntry(hk.entry)\n\n // По умолчанию не перехватываем \"простые\" клавиши во время ввода.\n const hasModifier = hk.ctrl || hk.meta || hk.alt || hk.shift\n if (editable && !entry.allowInEditable && !hasModifier && hk.key !== 'Escape') {\n continue\n }\n\n const preventDefault = entry.preventDefault ?? (hk.ctrl || hk.meta || hk.alt)\n if (preventDefault) event.preventDefault()\n if (entry.stopPropagation) event.stopPropagation()\n\n entry.handler(event)\n return\n }\n },\n target,\n }\n\n states.set(el, state)\n target.addEventListener('keydown', state.listener as EventListener)\n },\n updated(el, binding) {\n const state = states.get(el)\n if (!state) return\n\n const next = normalizeBinding(binding.value)\n state.enabled = next.enabled\n state.hotkeys = parseHotkeys(next.handlers)\n\n // Смена scope на лету — переносим слушатель на новую цель.\n const nextTarget: Window | HTMLElement = next.scope === 'element' ? el : window\n if (nextTarget !== state.target) {\n state.target.removeEventListener('keydown', state.listener as EventListener)\n state.target = nextTarget\n nextTarget.addEventListener('keydown', state.listener as EventListener)\n }\n },\n unmounted(el) {\n const state = states.get(el)\n if (!state) return\n state.target.removeEventListener('keydown', state.listener as EventListener)\n states.delete(el)\n },\n}\n"],"mappings":";AAoDA,IAAM,yBAAS,IAAI,QAAoC;AAEvD,SAAS,iBAAiB,QAAqC;CAC7D,IAAI,EAAE,kBAAkB,cAAc,OAAO;CAC7C,IAAI,OAAO,mBAAmB,OAAO;CAErC,MAAM,MAAM,OAAO;CACnB,OAAO,QAAQ,WAAW,QAAQ,cAAc,QAAQ;AAC1D;AAEA,SAAS,iBAAiB,OAAuC;CAC/D,IAAI,CAAC,OAAO,OAAO;EAAE,SAAS;EAAO,UAAU,CAAC;EAAgB,OAAO;CAAwB;CAC/F,IAAI,cAAe,OAAe;EAChC,MAAM,IAAI;EACV,OAAO;GAAE,SAAS,EAAE,WAAW;GAAM,UAAU,EAAE,YAAY,CAAC;GAAG,OAAO,EAAE,SAAS;EAAS;CAC9F;CACA,OAAO;EAAE,SAAS;EAAM,UAAU;EAAoB,OAAO;CAAwB;AACvF;AAEA,SAAS,kBAAkB,OAAuB;CAChD,MAAM,IAAI,MAAM,KAAK,CAAC,CAAC,YAAY;CACnC,IAAI,MAAM,OAAO,OAAO;CACxB,IAAI,MAAM,UAAU,OAAO;CAC3B,IAAI,MAAM,SAAS,OAAO;CAC1B,IAAI,EAAE,WAAW,GAAG,OAAO;CAC3B,OAAO,MAAM,KAAK;AACpB;AAEA,SAAS,aAAa,KAAgC;CACpD,MAAM,SAAyB,CAAC;CAEhC,KAAK,MAAM,CAAC,OAAO,UAAU,OAAO,QAAQ,GAAG,GAAG;EAChD,MAAM,QAAQ,MACX,MAAM,GAAG,CAAC,CACV,KAAI,MAAK,EAAE,KAAK,CAAC,CAAC,CAClB,OAAO,OAAO;EAEjB,IAAI,CAAC,MAAM,QAAQ;EAEnB,IAAI,OAAO;EACX,IAAI,OAAO;EACX,IAAI,MAAM;EACV,IAAI,QAAQ;EAEZ,MAAM,WAAW,MAAM,GAAG,EAAE;EAC5B,IAAI,CAAC,UAAU;EACf,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG,EAAE,GAAG;GAClC,MAAM,IAAI,EAAE,YAAY;GACxB,IAAI,MAAM,UAAU,MAAM,WAAW,OAAO;QACvC,IAAI,MAAM,UAAU,MAAM,SAAS,MAAM,aAAa,MAAM,KAAK,OAAO;QACxE,IAAI,MAAM,SAAS,MAAM,UAAU,MAAM;QACzC,IAAI,MAAM,SAAS,QAAQ;EAClC;EAEA,MAAM,MAAM,kBAAkB,QAAQ;EACtC,OAAO,KAAK;GAAE,UAAU;GAAO;GAAK;GAAM;GAAM;GAAK;GAAO;EAAM,CAAC;CACrE;CAEA,OAAO;AACT;AAEA,SAAS,SAAS,UAAkB,UAA2B;CAC7D,IAAI,aAAa,KAAK,OAAO,aAAa,OAAO,aAAa;CAC9D,IAAI,SAAS,WAAW,GAAG,OAAO,SAAS,YAAY,MAAM,SAAS,YAAY;CAClF,OAAO,aAAa;AACtB;AAEA,SAAS,aAAa,OAAoB;CACxC,IAAI,OAAO,UAAU,YACnB,OAAO;EACL,SAAS;EACT,gBAAgB,KAAA;EAChB,iBAAiB;EACjB,iBAAiB;CACnB;CAGF,OAAO;EACL,SAAS,MAAM;EACf,gBAAgB,MAAM;EACtB,iBAAiB,MAAM,mBAAmB;EAC1C,iBAAiB,MAAM,mBAAmB;CAC5C;AACF;;;;;;;;;;;;;;;AAgBA,IAAa,UAAsD;CACjE,QAAQ,IAAI,SAAS;EACnB,IAAI,OAAO,WAAW,aAAa;EAEnC,MAAM,EAAE,SAAS,UAAU,UAAU,iBAAiB,QAAQ,KAAK;EACnE,MAAM,SAA+B,UAAU,YAAY,KAAK;EAEhE,MAAM,QAAuB;GAC3B;GACA,SAAS,aAAa,QAAQ;GAC9B,WAAW,UAAyB;IAClC,MAAM,UAAU,OAAO,IAAI,EAAE;IAC7B,IAAI,CAAC,SAAS,SAAS;IACvB,IAAI,CAAC,GAAG,aAAa;IAErB,MAAM,WAAW,iBAAiB,MAAM,MAAM;IAE9C,KAAK,MAAM,MAAM,QAAQ,SAAS;KAChC,IAAI,GAAG,SAAS,MAAM,SAAS;KAC/B,IAAI,GAAG,SAAS,MAAM,SAAS;KAC/B,IAAI,GAAG,QAAQ,MAAM,QAAQ;KAC7B,IAAI,GAAG,UAAU,MAAM,UAAU;KACjC,IAAI,CAAC,SAAS,GAAG,KAAK,MAAM,GAAG,GAAG;KAElC,MAAM,QAAQ,aAAa,GAAG,KAAK;KAGnC,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG;KACvD,IAAI,YAAY,CAAC,MAAM,mBAAmB,CAAC,eAAe,GAAG,QAAQ,UACnE;KAIF,IADuB,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MACrD,MAAM,eAAe;KACzC,IAAI,MAAM,iBAAiB,MAAM,gBAAgB;KAEjD,MAAM,QAAQ,KAAK;KACnB;IACF;GACF;GACA;EACF;EAEA,OAAO,IAAI,IAAI,KAAK;EACpB,OAAO,iBAAiB,WAAW,MAAM,QAAyB;CACpE;CACA,QAAQ,IAAI,SAAS;EACnB,MAAM,QAAQ,OAAO,IAAI,EAAE;EAC3B,IAAI,CAAC,OAAO;EAEZ,MAAM,OAAO,iBAAiB,QAAQ,KAAK;EAC3C,MAAM,UAAU,KAAK;EACrB,MAAM,UAAU,aAAa,KAAK,QAAQ;EAG1C,MAAM,aAAmC,KAAK,UAAU,YAAY,KAAK;EACzE,IAAI,eAAe,MAAM,QAAQ;GAC/B,MAAM,OAAO,oBAAoB,WAAW,MAAM,QAAyB;GAC3E,MAAM,SAAS;GACf,WAAW,iBAAiB,WAAW,MAAM,QAAyB;EACxE;CACF;CACA,UAAU,IAAI;EACZ,MAAM,QAAQ,OAAO,IAAI,EAAE;EAC3B,IAAI,CAAC,OAAO;EACZ,MAAM,OAAO,oBAAoB,WAAW,MAAM,QAAyB;EAC3E,OAAO,OAAO,EAAE;CAClB;AACF"}
@@ -1,4 +1,4 @@
1
- import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-mfyfghxs.js";
1
+ import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading--X_7rdbb.js";
2
2
  import { createVNode, render } from "vue";
3
3
  //#region src/directives/loading.ts
4
4
  function isHTMLElement(value) {
@@ -74,7 +74,7 @@ function createLoading(options = {}, fallbackTarget) {
74
74
  const restorePosition = ensurePositionedContainer(target, fullscreen);
75
75
  const restoreOverflow = ensureClippedContainer(target, fullscreen);
76
76
  const mountEl = document.createElement("div");
77
- mountEl.setAttribute("data-ds-loading-host", "");
77
+ mountEl.setAttribute("data-gr-loading-host", "");
78
78
  if (!fullscreen) mountEl.style.borderRadius = "inherit";
79
79
  target.appendChild(mountEl);
80
80
  target.setAttribute("aria-busy", "true");
@@ -1 +1 @@
1
- {"version":3,"file":"loading.js","names":[],"sources":["../../src/directives/loading.ts"],"sourcesContent":["import type { AppContext, Component, Directive } from 'vue'\nimport { createVNode, render } from 'vue'\n\nimport GrLoading from '../components/GrLoading/GrLoading.vue'\n\nexport type LoadingTarget = string | HTMLElement\n\nexport type LoadingOptions = {\n /**\n * Контейнер, куда будет вставлен оверлей.\n * - если не задано, то для директивы используется сам `el`\n * - для ручного вызова (`createLoading`) по умолчанию используется `document.body`\n */\n target?: LoadingTarget\n\n /**\n * Полноэкранный лоадер (рендерится в `document.body`).\n * По умолчанию включается, если `target` = `document.body`.\n */\n fullscreen?: boolean\n\n text?: string\n spinner?: Component\n spinnerClass?: string\n animated?: boolean\n background?: string\n zIndex?: number\n customClass?: string\n\n /**\n * Внутренний контекст Vue-приложения.\n * Нужен, чтобы кастомный `spinner` мог использовать `inject()` даже при ручном `render()`.\n */\n appContext?: AppContext\n}\n\nexport type LoadingController = {\n close: () => void\n setText: (text?: string) => void\n setOptions: (next: Partial<LoadingOptions>) => void\n readonly target: HTMLElement\n}\n\nexport type LoadingBindingValue =\n | boolean\n | (Omit<LoadingOptions, 'appContext'> & {\n loading?: boolean\n })\n\nfunction isHTMLElement(value: unknown): value is HTMLElement {\n return typeof value === 'object' && value !== null && (value as any).nodeType === 1\n}\n\nfunction resolveTarget(input: LoadingTarget | undefined, fallback: HTMLElement): HTMLElement {\n if (!input) return fallback\n\n if (typeof input === 'string') {\n // Prefer searching within the same root (document / document fragment / shadow root)\n // to support components that are not attached to `document` yet (e.g. in unit tests).\n const root = fallback.getRootNode?.() ?? document\n const foundInRoot =\n typeof (root as any).querySelector === 'function' ? ((root as any).querySelector(input) as Element | null) : null\n if (isHTMLElement(foundInRoot)) return foundInRoot\n\n const foundInDocument = document.querySelector(input)\n if (isHTMLElement(foundInDocument)) return foundInDocument\n\n return fallback\n }\n\n if (isHTMLElement(input)) {\n return input\n }\n\n return fallback\n}\n\nfunction resolveFullscreen(options: LoadingOptions, target: HTMLElement): boolean {\n if (options.fullscreen != null) return options.fullscreen\n return target === document.body\n}\n\nfunction ensurePositionedContainer(target: HTMLElement, fullscreen: boolean): () => void {\n if (fullscreen) return () => {}\n\n const prevInline = target.style.position\n const computed = window.getComputedStyle(target)\n const isStatic = computed.position === 'static' || !computed.position\n\n if (isStatic) {\n target.style.position = 'relative'\n return () => {\n target.style.position = prevInline\n }\n }\n\n return () => {}\n}\n\nfunction ensureClippedContainer(target: HTMLElement, fullscreen: boolean): () => void {\n if (fullscreen) return () => {}\n\n const computed = window.getComputedStyle(target)\n // If the target has rounded corners, we must clip its content so the overlay\n // (and its blurred backdrop) never bleeds outside the visible rounded shape.\n const hasRadius = !!computed.borderRadius && computed.borderRadius !== '0px'\n if (!hasRadius) return () => {}\n\n const overflow = computed.overflow\n if (overflow && overflow !== 'visible') return () => {}\n\n const prevInline = target.style.overflow\n target.style.overflow = 'hidden'\n return () => {\n target.style.overflow = prevInline\n }\n}\n\nfunction parseBinding(value: LoadingBindingValue | undefined): { loading: boolean; options: LoadingOptions } {\n if (value === true || value === false) {\n return { loading: value, options: {} }\n }\n\n if (value && typeof value === 'object') {\n const { loading, ...rest } = value as any\n return { loading: loading ?? true, options: rest }\n }\n\n return { loading: false, options: {} }\n}\n\ntype InternalLoadingState = {\n controller?: LoadingController\n target?: HTMLElement\n fullscreen?: boolean\n}\n\nconst STATE_KEY: unique symbol = Symbol('grLoadingState')\n\nfunction getState(el: HTMLElement): InternalLoadingState {\n return ((el as any)[STATE_KEY] ??= {}) as InternalLoadingState\n}\n\nexport function createLoading(options: LoadingOptions = {}, fallbackTarget?: HTMLElement): LoadingController {\n const initialTarget = resolveTarget(options.target, fallbackTarget ?? document.body)\n const fullscreen = resolveFullscreen(options, initialTarget)\n const target = fullscreen ? document.body : initialTarget\n\n const appContext = options.appContext\n\n const restorePosition = ensurePositionedContainer(target, fullscreen)\n const restoreOverflow = ensureClippedContainer(target, fullscreen)\n const mountEl = document.createElement('div')\n mountEl.setAttribute('data-ds-loading-host', '')\n if (!fullscreen) {\n // Host wraps the overlay; make sure rounded corners of the target cascade\n // down to the overlay via `border-radius: inherit`.\n mountEl.style.borderRadius = 'inherit'\n }\n target.appendChild(mountEl)\n target.setAttribute('aria-busy', 'true')\n\n let current: LoadingOptions = { ...options }\n let disposed = false\n\n function doRender(): void {\n if (disposed) return\n\n const vnode = createVNode(GrLoading as any, {\n text: current.text,\n spinner: current.spinner,\n spinnerClass: current.spinnerClass,\n animated: current.animated,\n background: current.background,\n customClass: current.customClass,\n zIndex: current.zIndex,\n fullscreen,\n })\n\n if (appContext) {\n ;(vnode as any).appContext = appContext\n }\n\n render(vnode, mountEl)\n }\n\n function close(): void {\n if (disposed) return\n disposed = true\n\n render(null, mountEl)\n mountEl.remove()\n restoreOverflow()\n restorePosition()\n target.removeAttribute('aria-busy')\n }\n\n function setOptions(next: Partial<LoadingOptions>): void {\n current = {\n ...current,\n ...next,\n }\n doRender()\n }\n\n function setText(text?: string): void {\n setOptions({ text })\n }\n\n doRender()\n\n return {\n close,\n setOptions,\n setText,\n get target() {\n return target\n },\n }\n}\n\nfunction sync(el: HTMLElement, value: LoadingBindingValue | undefined, appContext?: AppContext): void {\n const { loading, options } = parseBinding(value)\n const state = getState(el)\n\n if (!loading) {\n state.controller?.close()\n state.controller = undefined\n state.target = undefined\n state.fullscreen = undefined\n return\n }\n\n const target = resolveTarget(options.target, el)\n const fullscreen = resolveFullscreen(options, target)\n const normalizedTarget = fullscreen ? document.body : target\n\n const shouldRecreate =\n !state.controller\n || state.target !== normalizedTarget\n || state.fullscreen !== fullscreen\n\n if (shouldRecreate) {\n state.controller?.close()\n state.controller = createLoading({ ...options, fullscreen, target: normalizedTarget, appContext }, el)\n state.target = normalizedTarget\n state.fullscreen = fullscreen\n return\n }\n\n const controller = state.controller\n if (!controller) return\n controller.setOptions({ ...options, fullscreen, target: normalizedTarget })\n}\n\nexport const vLoading: Directive<HTMLElement, LoadingBindingValue> = {\n mounted(el, binding) {\n const appContext = (binding.instance as any)?.$?.appContext as AppContext | undefined\n sync(el, binding.value, appContext)\n },\n updated(el, binding) {\n const appContext = (binding.instance as any)?.$?.appContext as AppContext | undefined\n sync(el, binding.value, appContext)\n },\n unmounted(el) {\n const state = getState(el)\n state.controller?.close()\n state.controller = undefined\n state.target = undefined\n state.fullscreen = undefined\n },\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"loading.js","names":[],"sources":["../../src/directives/loading.ts"],"sourcesContent":["import type { AppContext, Component, Directive } from 'vue'\nimport { createVNode, render } from 'vue'\n\nimport GrLoading from '../components/GrLoading/GrLoading.vue'\n\nexport type LoadingTarget = string | HTMLElement\n\nexport type LoadingOptions = {\n /**\n * Контейнер, куда будет вставлен оверлей.\n * - если не задано, то для директивы используется сам `el`\n * - для ручного вызова (`createLoading`) по умолчанию используется `document.body`\n */\n target?: LoadingTarget\n\n /**\n * Полноэкранный лоадер (рендерится в `document.body`).\n * По умолчанию включается, если `target` = `document.body`.\n */\n fullscreen?: boolean\n\n text?: string\n spinner?: Component\n spinnerClass?: string\n animated?: boolean\n background?: string\n zIndex?: number\n customClass?: string\n\n /**\n * Внутренний контекст Vue-приложения.\n * Нужен, чтобы кастомный `spinner` мог использовать `inject()` даже при ручном `render()`.\n */\n appContext?: AppContext\n}\n\nexport type LoadingController = {\n close: () => void\n setText: (text?: string) => void\n setOptions: (next: Partial<LoadingOptions>) => void\n readonly target: HTMLElement\n}\n\nexport type LoadingBindingValue =\n | boolean\n | (Omit<LoadingOptions, 'appContext'> & {\n loading?: boolean\n })\n\nfunction isHTMLElement(value: unknown): value is HTMLElement {\n return typeof value === 'object' && value !== null && (value as any).nodeType === 1\n}\n\nfunction resolveTarget(input: LoadingTarget | undefined, fallback: HTMLElement): HTMLElement {\n if (!input) return fallback\n\n if (typeof input === 'string') {\n // Prefer searching within the same root (document / document fragment / shadow root)\n // to support components that are not attached to `document` yet (e.g. in unit tests).\n const root = fallback.getRootNode?.() ?? document\n const foundInRoot =\n typeof (root as any).querySelector === 'function' ? ((root as any).querySelector(input) as Element | null) : null\n if (isHTMLElement(foundInRoot)) return foundInRoot\n\n const foundInDocument = document.querySelector(input)\n if (isHTMLElement(foundInDocument)) return foundInDocument\n\n return fallback\n }\n\n if (isHTMLElement(input)) {\n return input\n }\n\n return fallback\n}\n\nfunction resolveFullscreen(options: LoadingOptions, target: HTMLElement): boolean {\n if (options.fullscreen != null) return options.fullscreen\n return target === document.body\n}\n\nfunction ensurePositionedContainer(target: HTMLElement, fullscreen: boolean): () => void {\n if (fullscreen) return () => {}\n\n const prevInline = target.style.position\n const computed = window.getComputedStyle(target)\n const isStatic = computed.position === 'static' || !computed.position\n\n if (isStatic) {\n target.style.position = 'relative'\n return () => {\n target.style.position = prevInline\n }\n }\n\n return () => {}\n}\n\nfunction ensureClippedContainer(target: HTMLElement, fullscreen: boolean): () => void {\n if (fullscreen) return () => {}\n\n const computed = window.getComputedStyle(target)\n // If the target has rounded corners, we must clip its content so the overlay\n // (and its blurred backdrop) never bleeds outside the visible rounded shape.\n const hasRadius = !!computed.borderRadius && computed.borderRadius !== '0px'\n if (!hasRadius) return () => {}\n\n const overflow = computed.overflow\n if (overflow && overflow !== 'visible') return () => {}\n\n const prevInline = target.style.overflow\n target.style.overflow = 'hidden'\n return () => {\n target.style.overflow = prevInline\n }\n}\n\nfunction parseBinding(value: LoadingBindingValue | undefined): { loading: boolean; options: LoadingOptions } {\n if (value === true || value === false) {\n return { loading: value, options: {} }\n }\n\n if (value && typeof value === 'object') {\n const { loading, ...rest } = value as any\n return { loading: loading ?? true, options: rest }\n }\n\n return { loading: false, options: {} }\n}\n\ntype InternalLoadingState = {\n controller?: LoadingController\n target?: HTMLElement\n fullscreen?: boolean\n}\n\nconst STATE_KEY: unique symbol = Symbol('grLoadingState')\n\nfunction getState(el: HTMLElement): InternalLoadingState {\n return ((el as any)[STATE_KEY] ??= {}) as InternalLoadingState\n}\n\nexport function createLoading(options: LoadingOptions = {}, fallbackTarget?: HTMLElement): LoadingController {\n const initialTarget = resolveTarget(options.target, fallbackTarget ?? document.body)\n const fullscreen = resolveFullscreen(options, initialTarget)\n const target = fullscreen ? document.body : initialTarget\n\n const appContext = options.appContext\n\n const restorePosition = ensurePositionedContainer(target, fullscreen)\n const restoreOverflow = ensureClippedContainer(target, fullscreen)\n const mountEl = document.createElement('div')\n mountEl.setAttribute('data-gr-loading-host', '')\n if (!fullscreen) {\n // Host wraps the overlay; make sure rounded corners of the target cascade\n // down to the overlay via `border-radius: inherit`.\n mountEl.style.borderRadius = 'inherit'\n }\n target.appendChild(mountEl)\n target.setAttribute('aria-busy', 'true')\n\n let current: LoadingOptions = { ...options }\n let disposed = false\n\n function doRender(): void {\n if (disposed) return\n\n const vnode = createVNode(GrLoading as any, {\n text: current.text,\n spinner: current.spinner,\n spinnerClass: current.spinnerClass,\n animated: current.animated,\n background: current.background,\n customClass: current.customClass,\n zIndex: current.zIndex,\n fullscreen,\n })\n\n if (appContext) {\n ;(vnode as any).appContext = appContext\n }\n\n render(vnode, mountEl)\n }\n\n function close(): void {\n if (disposed) return\n disposed = true\n\n render(null, mountEl)\n mountEl.remove()\n restoreOverflow()\n restorePosition()\n target.removeAttribute('aria-busy')\n }\n\n function setOptions(next: Partial<LoadingOptions>): void {\n current = {\n ...current,\n ...next,\n }\n doRender()\n }\n\n function setText(text?: string): void {\n setOptions({ text })\n }\n\n doRender()\n\n return {\n close,\n setOptions,\n setText,\n get target() {\n return target\n },\n }\n}\n\nfunction sync(el: HTMLElement, value: LoadingBindingValue | undefined, appContext?: AppContext): void {\n const { loading, options } = parseBinding(value)\n const state = getState(el)\n\n if (!loading) {\n state.controller?.close()\n state.controller = undefined\n state.target = undefined\n state.fullscreen = undefined\n return\n }\n\n const target = resolveTarget(options.target, el)\n const fullscreen = resolveFullscreen(options, target)\n const normalizedTarget = fullscreen ? document.body : target\n\n const shouldRecreate =\n !state.controller\n || state.target !== normalizedTarget\n || state.fullscreen !== fullscreen\n\n if (shouldRecreate) {\n state.controller?.close()\n state.controller = createLoading({ ...options, fullscreen, target: normalizedTarget, appContext }, el)\n state.target = normalizedTarget\n state.fullscreen = fullscreen\n return\n }\n\n const controller = state.controller\n if (!controller) return\n controller.setOptions({ ...options, fullscreen, target: normalizedTarget })\n}\n\nexport const vLoading: Directive<HTMLElement, LoadingBindingValue> = {\n mounted(el, binding) {\n const appContext = (binding.instance as any)?.$?.appContext as AppContext | undefined\n sync(el, binding.value, appContext)\n },\n updated(el, binding) {\n const appContext = (binding.instance as any)?.$?.appContext as AppContext | undefined\n sync(el, binding.value, appContext)\n },\n unmounted(el) {\n const state = getState(el)\n state.controller?.close()\n state.controller = undefined\n state.target = undefined\n state.fullscreen = undefined\n },\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { a as allowedExtensionsValidator, c as normalizeFiles, i as allowedMimeTypesValidator, l as runFileValidators, n as maxSizeMbValidator, o as acceptValidator, r as maxFileSizeBytesValidator, s as matchAccept, t as maxTotalSizeBytesValidator, u as FileValidationError } from "../chunks/fileValidation-c_iBg74s.js";
1
+ import { a as allowedExtensionsValidator, c as normalizeFiles, i as allowedMimeTypesValidator, l as runFileValidators, n as maxSizeMbValidator, o as acceptValidator, r as maxFileSizeBytesValidator, s as matchAccept, t as maxTotalSizeBytesValidator, u as FileValidationError } from "../chunks/fileValidation-C3WFaWU2.js";
2
2
  export { FileValidationError, acceptValidator, allowedExtensionsValidator, allowedMimeTypesValidator, matchAccept, maxFileSizeBytesValidator, maxSizeMbValidator, maxTotalSizeBytesValidator, normalizeFiles, runFileValidators };
@@ -1,11 +1,11 @@
1
- import { n as grButtonSafelist } from "./chunks/safelist-DccvJqCE.js";
2
- import { n as grProgressBarSafelist } from "./chunks/config-CFf7xaG1.js";
3
- import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-BiqXd5MW.js";
1
+ import { n as grButtonSafelist } from "./chunks/safelist-Do2RtzLB.js";
2
+ import { n as grProgressBarSafelist } from "./chunks/config-DnvPqu4g.js";
3
+ import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-ChvcQgDl.js";
4
4
  import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
5
  import { tokenDefinitionsFromCssSync } from "@feugene/unocss-preset-granular/node";
6
6
  //#region src/components/GrButton/config.node.ts
7
- var lightCssUrl$1 = new URL("data:text/css;base64,OnJvb3QgewogIC0tZHMtYnV0dG9uLXByaW1hcnktYmc6IHZhcigtLXByaW1hcnkpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctaG92ZXI6IHZhcigtLXByaW1hcnktaG92ZXIpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiB2YXIoLS1wcmltYXJ5LWFjdGl2ZSk7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1mZzogdmFyKC0tcHJpbWFyeS1mZyk7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1zb2Z0LWJnOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMTQlLCB2YXIoLS1iZykpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXByaW1hcnkpIDE4JSwgdmFyKC0tYmcpKTsKICAtLWRzLWJ1dHRvbi1wcmltYXJ5LXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMjQlLCB2YXIoLS1iZykpOwoKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWJnOiAjMDQ3ODU3OwogIC0tZHMtYnV0dG9uLXN1Y2Nlc3MtYmctaG92ZXI6ICMwMzZjNGQ7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1iZy1hY3RpdmU6ICMwMjVmNDQ7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1mZzogdmFyKC0tZHMtc3VjY2Vzcy1mZyk7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnOiB2YXIoLS1kcy1zdWNjZXNzLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1zdWNjZXNzKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLXN1Y2Nlc3MpIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1kcy1idXR0b24td2FybmluZy1iZzogI2MyNDEwYzsKICAtLWRzLWJ1dHRvbi13YXJuaW5nLWJnLWhvdmVyOiAjYjUzYjBhOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctYmctYWN0aXZlOiAjOWYzMzA3OwogIC0tZHMtYnV0dG9uLXdhcm5pbmctZmc6IHZhcigtLWRzLXdhcm5pbmctZmcpOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctc29mdC1iZzogdmFyKC0tZHMtd2FybmluZy1saWdodCk7CiAgLS1kcy1idXR0b24td2FybmluZy1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtd2FybmluZykgMjAlLCB2YXIoLS1iZykpOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy13YXJuaW5nKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWRhbmdlci1iZzogdmFyKC0tZHMtZGFuZ2VyKTsKICAtLWRzLWJ1dHRvbi1kYW5nZXItYmctaG92ZXI6IHZhcigtLWRzLWRhbmdlci1ob3Zlcik7CiAgLS1kcy1idXR0b24tZGFuZ2VyLWJnLWFjdGl2ZTogdmFyKC0tZHMtZGFuZ2VyLWFjdGl2ZSk7CiAgLS1kcy1idXR0b24tZGFuZ2VyLWZnOiB2YXIoLS1kcy1kYW5nZXItZmcpOwogIC0tZHMtYnV0dG9uLWRhbmdlci1zb2Z0LWJnOiB2YXIoLS1kcy1kYW5nZXItbGlnaHQpOwogIC0tZHMtYnV0dG9uLWRhbmdlci1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtZGFuZ2VyKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tZGFuZ2VyLXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtZGFuZ2VyKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWluZm8tYmc6IHZhcigtLWRzLWluZm8pOwogIC0tZHMtYnV0dG9uLWluZm8tYmctaG92ZXI6IHZhcigtLWRzLWluZm8taG92ZXIpOwogIC0tZHMtYnV0dG9uLWluZm8tYmctYWN0aXZlOiB2YXIoLS1kcy1pbmZvLWFjdGl2ZSk7CiAgLS1kcy1idXR0b24taW5mby1mZzogdmFyKC0tZHMtaW5mby1mZyk7CiAgLS1kcy1idXR0b24taW5mby1zb2Z0LWJnOiB2YXIoLS1kcy1pbmZvLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1pbmZvLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1pbmZvKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24taW5mby1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLWluZm8pIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1kcy1idXR0b24tc2xhdGUtYmc6IHZhcigtLWRzLXNsYXRlKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1iZy1ob3ZlcjogdmFyKC0tZHMtc2xhdGUtaG92ZXIpOwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogdmFyKC0tZHMtc2xhdGUtYWN0aXZlKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1mZzogdmFyKC0tZHMtc2xhdGUtZmcpOwogIC0tZHMtYnV0dG9uLXNsYXRlLXNvZnQtYmc6IHZhcigtLWRzLXNsYXRlLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtc2xhdGUpIDIwJSwgdmFyKC0tYmcpKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLXNsYXRlKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWF6dXJlLWJnOiAjMDM2OWExOwogIC0tZHMtYnV0dG9uLWF6dXJlLWJnLWhvdmVyOiAjMDc1OTg1OwogIC0tZHMtYnV0dG9uLWF6dXJlLWJnLWFjdGl2ZTogIzBjNGE2ZTsKICAtLWRzLWJ1dHRvbi1henVyZS1mZzogI2ZmZmZmZjsKICAtLWRzLWJ1dHRvbi1henVyZS1zb2Z0LWJnOiB2YXIoLS1kcy1henVyZS1saWdodCk7CiAgLS1kcy1idXR0b24tYXp1cmUtc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLWF6dXJlKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tYXp1cmUtc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1henVyZSkgMjYlLCB2YXIoLS1iZykpOwp9", "" + import.meta.url).href;
8
- var darkCssUrl$1 = new URL("data:text/css;base64,Ci50aGVtZS1kYXJrLAouZGFyaywKW2RhdGEtdGhlbWU9J2RhcmsnXSB7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1iZzogIzU5NWNlNjsKICAtLWRzLWJ1dHRvbi1wcmltYXJ5LWJnLWhvdmVyOiAjNTA1M2RkOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiAjNDc0YWNmOwogIC0tZHMtYnV0dG9uLXByaW1hcnktZmc6ICNmZmZmZmY7CgogIC0tZHMtYnV0dG9uLXN1Y2Nlc3MtYmc6ICMwNDc4NTc7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1iZy1ob3ZlcjogIzAzNmM0ZDsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWJnLWFjdGl2ZTogIzAyNWY0NDsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWZnOiAjZjhmYWZjOwoKICAtLWRzLWJ1dHRvbi13YXJuaW5nLWJnOiAjYzI0MTBjOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctYmctaG92ZXI6ICNiNTNiMGE7CiAgLS1kcy1idXR0b24td2FybmluZy1iZy1hY3RpdmU6ICM5ZjMzMDc7CiAgLS1kcy1idXR0b24td2FybmluZy1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24tZGFuZ2VyLWJnOiAjYjkxYzFjOwogIC0tZHMtYnV0dG9uLWRhbmdlci1iZy1ob3ZlcjogI2E5MTkxOTsKICAtLWRzLWJ1dHRvbi1kYW5nZXItYmctYWN0aXZlOiAjOTMxNTE1OwogIC0tZHMtYnV0dG9uLWRhbmdlci1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24taW5mby1iZzogIzQzMzhjYTsKICAtLWRzLWJ1dHRvbi1pbmZvLWJnLWhvdmVyOiAjM2QzM2JiOwogIC0tZHMtYnV0dG9uLWluZm8tYmctYWN0aXZlOiAjMzYyZGE4OwogIC0tZHMtYnV0dG9uLWluZm8tZmc6ICNmOGZhZmM7CgogIC0tZHMtYnV0dG9uLXNsYXRlLWJnOiAjNDc1NTY5OwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWhvdmVyOiAjMzM0MTU1OwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogIzFlMjkzYjsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24tYXp1cmUtYmc6ICMwMzY5YTE7CiAgLS1kcy1idXR0b24tYXp1cmUtYmctaG92ZXI6ICMwNzU5ODU7CiAgLS1kcy1idXR0b24tYXp1cmUtYmctYWN0aXZlOiAjMGM0YTZlOwogIC0tZHMtYnV0dG9uLWF6dXJlLWZnOiAjZjhmYWZjOwp9", "" + import.meta.url).href;
7
+ var lightCssUrl$1 = new URL("data:text/css;base64,OnJvb3QgewogIC0tZ3ItYnV0dG9uLXByaW1hcnktYmc6IHZhcigtLXByaW1hcnkpOwogIC0tZ3ItYnV0dG9uLXByaW1hcnktYmctaG92ZXI6IHZhcigtLXByaW1hcnktaG92ZXIpOwogIC0tZ3ItYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiB2YXIoLS1wcmltYXJ5LWFjdGl2ZSk7CiAgLS1nci1idXR0b24tcHJpbWFyeS1mZzogdmFyKC0tcHJpbWFyeS1mZyk7CiAgLS1nci1idXR0b24tcHJpbWFyeS1zb2Z0LWJnOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMTQlLCB2YXIoLS1iZykpOwogIC0tZ3ItYnV0dG9uLXByaW1hcnktc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXByaW1hcnkpIDE4JSwgdmFyKC0tYmcpKTsKICAtLWdyLWJ1dHRvbi1wcmltYXJ5LXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMjQlLCB2YXIoLS1iZykpOwoKICAtLWdyLWJ1dHRvbi1zdWNjZXNzLWJnOiAjMDQ3ODU3OwogIC0tZ3ItYnV0dG9uLXN1Y2Nlc3MtYmctaG92ZXI6ICMwMzZjNGQ7CiAgLS1nci1idXR0b24tc3VjY2Vzcy1iZy1hY3RpdmU6ICMwMjVmNDQ7CiAgLS1nci1idXR0b24tc3VjY2Vzcy1mZzogdmFyKC0tZ3Itc3VjY2Vzcy1mZyk7CiAgLS1nci1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnOiB2YXIoLS1nci1zdWNjZXNzLWxpZ2h0KTsKICAtLWdyLWJ1dHRvbi1zdWNjZXNzLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1zdWNjZXNzKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1nci1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLXN1Y2Nlc3MpIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1nci1idXR0b24td2FybmluZy1iZzogI2MyNDEwYzsKICAtLWdyLWJ1dHRvbi13YXJuaW5nLWJnLWhvdmVyOiAjYjUzYjBhOwogIC0tZ3ItYnV0dG9uLXdhcm5pbmctYmctYWN0aXZlOiAjOWYzMzA3OwogIC0tZ3ItYnV0dG9uLXdhcm5pbmctZmc6IHZhcigtLWdyLXdhcm5pbmctZmcpOwogIC0tZ3ItYnV0dG9uLXdhcm5pbmctc29mdC1iZzogdmFyKC0tZ3Itd2FybmluZy1saWdodCk7CiAgLS1nci1idXR0b24td2FybmluZy1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itd2FybmluZykgMjAlLCB2YXIoLS1iZykpOwogIC0tZ3ItYnV0dG9uLXdhcm5pbmctc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci13YXJuaW5nKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZ3ItYnV0dG9uLWRhbmdlci1iZzogdmFyKC0tZ3ItZGFuZ2VyKTsKICAtLWdyLWJ1dHRvbi1kYW5nZXItYmctaG92ZXI6IHZhcigtLWdyLWRhbmdlci1ob3Zlcik7CiAgLS1nci1idXR0b24tZGFuZ2VyLWJnLWFjdGl2ZTogdmFyKC0tZ3ItZGFuZ2VyLWFjdGl2ZSk7CiAgLS1nci1idXR0b24tZGFuZ2VyLWZnOiB2YXIoLS1nci1kYW5nZXItZmcpOwogIC0tZ3ItYnV0dG9uLWRhbmdlci1zb2Z0LWJnOiB2YXIoLS1nci1kYW5nZXItbGlnaHQpOwogIC0tZ3ItYnV0dG9uLWRhbmdlci1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3ItZGFuZ2VyKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1nci1idXR0b24tZGFuZ2VyLXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3ItZGFuZ2VyKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZ3ItYnV0dG9uLWluZm8tYmc6IHZhcigtLWdyLWluZm8pOwogIC0tZ3ItYnV0dG9uLWluZm8tYmctaG92ZXI6IHZhcigtLWdyLWluZm8taG92ZXIpOwogIC0tZ3ItYnV0dG9uLWluZm8tYmctYWN0aXZlOiB2YXIoLS1nci1pbmZvLWFjdGl2ZSk7CiAgLS1nci1idXR0b24taW5mby1mZzogdmFyKC0tZ3ItaW5mby1mZyk7CiAgLS1nci1idXR0b24taW5mby1zb2Z0LWJnOiB2YXIoLS1nci1pbmZvLWxpZ2h0KTsKICAtLWdyLWJ1dHRvbi1pbmZvLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1pbmZvKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1nci1idXR0b24taW5mby1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLWluZm8pIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1nci1idXR0b24tc2xhdGUtYmc6IHZhcigtLWdyLXNsYXRlKTsKICAtLWdyLWJ1dHRvbi1zbGF0ZS1iZy1ob3ZlcjogdmFyKC0tZ3Itc2xhdGUtaG92ZXIpOwogIC0tZ3ItYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogdmFyKC0tZ3Itc2xhdGUtYWN0aXZlKTsKICAtLWdyLWJ1dHRvbi1zbGF0ZS1mZzogdmFyKC0tZ3Itc2xhdGUtZmcpOwogIC0tZ3ItYnV0dG9uLXNsYXRlLXNvZnQtYmc6IHZhcigtLWdyLXNsYXRlLWxpZ2h0KTsKICAtLWdyLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc2xhdGUpIDIwJSwgdmFyKC0tYmcpKTsKICAtLWdyLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLXNsYXRlKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZ3ItYnV0dG9uLWF6dXJlLWJnOiAjMDM2OWExOwogIC0tZ3ItYnV0dG9uLWF6dXJlLWJnLWhvdmVyOiAjMDc1OTg1OwogIC0tZ3ItYnV0dG9uLWF6dXJlLWJnLWFjdGl2ZTogIzBjNGE2ZTsKICAtLWdyLWJ1dHRvbi1henVyZS1mZzogI2ZmZmZmZjsKICAtLWdyLWJ1dHRvbi1henVyZS1zb2Z0LWJnOiB2YXIoLS1nci1henVyZS1saWdodCk7CiAgLS1nci1idXR0b24tYXp1cmUtc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLWF6dXJlKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1nci1idXR0b24tYXp1cmUtc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1henVyZSkgMjYlLCB2YXIoLS1iZykpOwp9", "" + import.meta.url).href;
8
+ var darkCssUrl$1 = new URL("data:text/css;base64,Ci50aGVtZS1kYXJrLAouZGFyaywKW2RhdGEtdGhlbWU9J2RhcmsnXSB7CiAgLS1nci1idXR0b24tcHJpbWFyeS1iZzogIzU5NWNlNjsKICAtLWdyLWJ1dHRvbi1wcmltYXJ5LWJnLWhvdmVyOiAjNTA1M2RkOwogIC0tZ3ItYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiAjNDc0YWNmOwogIC0tZ3ItYnV0dG9uLXByaW1hcnktZmc6ICNmZmZmZmY7CgogIC0tZ3ItYnV0dG9uLXN1Y2Nlc3MtYmc6ICMwNDc4NTc7CiAgLS1nci1idXR0b24tc3VjY2Vzcy1iZy1ob3ZlcjogIzAzNmM0ZDsKICAtLWdyLWJ1dHRvbi1zdWNjZXNzLWJnLWFjdGl2ZTogIzAyNWY0NDsKICAtLWdyLWJ1dHRvbi1zdWNjZXNzLWZnOiAjZjhmYWZjOwoKICAtLWdyLWJ1dHRvbi13YXJuaW5nLWJnOiAjYzI0MTBjOwogIC0tZ3ItYnV0dG9uLXdhcm5pbmctYmctaG92ZXI6ICNiNTNiMGE7CiAgLS1nci1idXR0b24td2FybmluZy1iZy1hY3RpdmU6ICM5ZjMzMDc7CiAgLS1nci1idXR0b24td2FybmluZy1mZzogI2Y4ZmFmYzsKCiAgLS1nci1idXR0b24tZGFuZ2VyLWJnOiAjYjkxYzFjOwogIC0tZ3ItYnV0dG9uLWRhbmdlci1iZy1ob3ZlcjogI2E5MTkxOTsKICAtLWdyLWJ1dHRvbi1kYW5nZXItYmctYWN0aXZlOiAjOTMxNTE1OwogIC0tZ3ItYnV0dG9uLWRhbmdlci1mZzogI2Y4ZmFmYzsKCiAgLS1nci1idXR0b24taW5mby1iZzogIzQzMzhjYTsKICAtLWdyLWJ1dHRvbi1pbmZvLWJnLWhvdmVyOiAjM2QzM2JiOwogIC0tZ3ItYnV0dG9uLWluZm8tYmctYWN0aXZlOiAjMzYyZGE4OwogIC0tZ3ItYnV0dG9uLWluZm8tZmc6ICNmOGZhZmM7CgogIC0tZ3ItYnV0dG9uLXNsYXRlLWJnOiAjNDc1NTY5OwogIC0tZ3ItYnV0dG9uLXNsYXRlLWJnLWhvdmVyOiAjMzM0MTU1OwogIC0tZ3ItYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogIzFlMjkzYjsKICAtLWdyLWJ1dHRvbi1zbGF0ZS1mZzogI2Y4ZmFmYzsKCiAgLS1nci1idXR0b24tYXp1cmUtYmc6ICMwMzY5YTE7CiAgLS1nci1idXR0b24tYXp1cmUtYmctaG92ZXI6ICMwNzU5ODU7CiAgLS1nci1idXR0b24tYXp1cmUtYmctYWN0aXZlOiAjMGM0YTZlOwogIC0tZ3ItYnV0dG9uLWF6dXJlLWZnOiAjZjhmYWZjOwp9", "" + import.meta.url).href;
9
9
  var grButtonConfig = defineGranularComponent(import.meta.url, {
10
10
  name: "GrButton",
11
11
  safelist: grButtonSafelist,
@@ -16,8 +16,8 @@ var grButtonConfig = defineGranularComponent(import.meta.url, {
16
16
  });
17
17
  //#endregion
18
18
  //#region src/components/GrProgressBar/config.node.ts
19
- var lightCssUrl = new URL("data:text/css;base64,OnJvb3QgewogIC0tcGItYmc6IHZhcigtLXByaW1hcnkpOwogIC0tcGItbmV1dHJhbC1iZzogdmFyKC0tc2Vjb25kYXJ5KTsKICAtLXBiLXN1Y2Nlc3MtYmc6IHZhcigtLWRzLXN1Y2Nlc3MpOwogIC0tcGItd2FybmluZy1iZzogdmFyKC0tZHMtd2FybmluZyk7CiAgLS1wYi1kYW5nZXItYmc6IHZhcigtLWRzLWRhbmdlcik7CiAgLS1wYi1pbmZvLWJnOiB2YXIoLS1kcy1pbmZvKTsKICAtLXBiLXNsYXRlLWJnOiB2YXIoLS1kcy1zbGF0ZSk7CiAgLS1wYi1henVyZS1iZzogdmFyKC0tZHMtYXp1cmUpOwp9Cg==", "" + import.meta.url).href;
20
- var darkCssUrl = new URL("data:text/css;base64,LnRoZW1lLWRhcmssCi5kYXJrLApbZGF0YS10aGVtZT0nZGFyayddIHsKICAtLXBiLWJnOiB2YXIoLS1wcmltYXJ5KTsKICAtLXBiLW5ldXRyYWwtYmc6IHZhcigtLXNlY29uZGFyeSk7CiAgLS1wYi1zdWNjZXNzLWJnOiB2YXIoLS1kcy1zdWNjZXNzKTsKICAtLXBiLXdhcm5pbmctYmc6IHZhcigtLWRzLXdhcm5pbmcpOwogIC0tcGItZGFuZ2VyLWJnOiB2YXIoLS1kcy1kYW5nZXIpOwogIC0tcGItaW5mby1iZzogdmFyKC0tZHMtaW5mbyk7CiAgLS1wYi1zbGF0ZS1iZzogdmFyKC0tZHMtc2xhdGUpOwogIC0tcGItYXp1cmUtYmc6IHZhcigtLWRzLWF6dXJlKTsKfQ==", "" + import.meta.url).href;
19
+ var lightCssUrl = new URL("data:text/css;base64,OnJvb3QgewogIC0tcGItYmc6IHZhcigtLXByaW1hcnkpOwogIC0tcGItbmV1dHJhbC1iZzogdmFyKC0tc2Vjb25kYXJ5KTsKICAtLXBiLXN1Y2Nlc3MtYmc6IHZhcigtLWdyLXN1Y2Nlc3MpOwogIC0tcGItd2FybmluZy1iZzogdmFyKC0tZ3Itd2FybmluZyk7CiAgLS1wYi1kYW5nZXItYmc6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1wYi1pbmZvLWJnOiB2YXIoLS1nci1pbmZvKTsKICAtLXBiLXNsYXRlLWJnOiB2YXIoLS1nci1zbGF0ZSk7CiAgLS1wYi1henVyZS1iZzogdmFyKC0tZ3ItYXp1cmUpOwp9Cg==", "" + import.meta.url).href;
20
+ var darkCssUrl = new URL("data:text/css;base64,LnRoZW1lLWRhcmssCi5kYXJrLApbZGF0YS10aGVtZT0nZGFyayddIHsKICAtLXBiLWJnOiB2YXIoLS1wcmltYXJ5KTsKICAtLXBiLW5ldXRyYWwtYmc6IHZhcigtLXNlY29uZGFyeSk7CiAgLS1wYi1zdWNjZXNzLWJnOiB2YXIoLS1nci1zdWNjZXNzKTsKICAtLXBiLXdhcm5pbmctYmc6IHZhcigtLWdyLXdhcm5pbmcpOwogIC0tcGItZGFuZ2VyLWJnOiB2YXIoLS1nci1kYW5nZXIpOwogIC0tcGItaW5mby1iZzogdmFyKC0tZ3ItaW5mbyk7CiAgLS1wYi1zbGF0ZS1iZzogdmFyKC0tZ3Itc2xhdGUpOwogIC0tcGItYXp1cmUtYmc6IHZhcigtLWdyLWF6dXJlKTsKfQ==", "" + import.meta.url).href;
21
21
  //#endregion
22
22
  //#region src/granular-provider/node.ts
23
23
  var granularityProvider = createGranularityProvider([grButtonConfig, defineGranularComponent(import.meta.url, {
@@ -1 +1 @@
1
- {"version":3,"file":"granular-provider-node.js","names":[],"sources":["../src/components/GrButton/config.node.ts","../src/components/GrProgressBar/config.node.ts","../src/granular-provider/node.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\nimport { tokenDefinitionsFromCssSync } from '@feugene/unocss-preset-granular/node'\nimport { grButtonSafelist } from './safelist'\n\nconst lightCssUrl = new URL('./themes/light.css', import.meta.url).href\nconst darkCssUrl = new URL('./themes/dark.css', import.meta.url).href\n\nexport const grButtonConfig = defineGranularComponent(import.meta.url, {\n name: 'GrButton',\n safelist: grButtonSafelist,\n tokenDefinitions: {\n light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ':root' }),\n dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: '.dark, [data-theme=\"dark\"]' }),\n },\n})\n","import {defineGranularComponent} from '@feugene/unocss-preset-granular/contract'\n\nimport { grProgressBarSafelist } from './safelist'\nimport {tokenDefinitionsFromCssSync} from \"@feugene/unocss-preset-granular/node\";\n\nconst lightCssUrl = new URL('./themes/light.css', import.meta.url).href\nconst darkCssUrl = new URL('./themes/dark.css', import.meta.url).href\n\nexport const grProgressBarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrProgressBar',\n safelist: grProgressBarSafelist,\n tokenDefinitions: {\n light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ':root' }),\n dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: '.dark, [data-theme=\"dark\"]' }),\n },\n})","// Node-entry granular-provider'а `@feugene/granularity`.\n//\n// От browser-варианта (`./index.ts`) отличается только тем, что для\n// `GrButton` используется `config.node.ts` с `tokenDefinitions`,\n// собранными через `tokenDefinitionsFromCssSync` (требует `node:fs`).\n// Всё остальное — id, `theme.*`, список компонентов, `packageBaseUrl` —\n// приходит из общей фабрики `./shared`.\nimport { grButtonConfig } from '../components/GrButton/config.node'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config.node'\nimport { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider([grButtonConfig, grProgressBarConfig])\n\nexport default granularityProvider\n"],"mappings":";;;;;;AAIA,IAAM,gBAAc,IAAA,IAAA,q0HAAA,KAAA,OAAA,KAAA,IAA8C,CAAC;AACnE,IAAM,eAAa,IAAA,IAAA,q8CAAA,KAAA,OAAA,KAAA,IAA6C,CAAC;AAEjE,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;CACV,kBAAkB;EAChB,OAAO,4BAA4B,eAAa,EAAE,UAAU,SAAS,CAAC;EACtE,MAAM,4BAA4B,cAAY,EAAE,IAAI,gCAA8B,CAAA;;CAErF,CAAC;;;ACTF,IAAM,cAAc,IAAA,IAAA,yZAAA,KAAA,OAAA,KAAA,IAA8C,CAAC;AACnE,IAAM,aAAa,IAAA,IAAA,qcAAA,KAAA,OAAA,KAAA,IAA6C,CAAC;;;ACOjE,IAAa,sBAAsB,0BAA0B,CAAC,gBDL3B,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CACN,UAAU;CACV,kBAAkB;EAChB,OAAO,4BAA4B,aAAa,EAAE,UAAU,SAAS,CAAC;EACtE,MAAM,4BAA4B,YAAY,EAAE,IAAI,gCAA8B,CAAA;;CAErF,CAAA,CCFiG,CAAC"}
1
+ {"version":3,"file":"granular-provider-node.js","names":[],"sources":["../src/components/GrButton/config.node.ts","../src/components/GrProgressBar/config.node.ts","../src/granular-provider/node.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\nimport { tokenDefinitionsFromCssSync } from '@feugene/unocss-preset-granular/node'\nimport { grButtonSafelist } from './safelist'\n\nconst lightCssUrl = new URL('./themes/light.css', import.meta.url).href\nconst darkCssUrl = new URL('./themes/dark.css', import.meta.url).href\n\nexport const grButtonConfig = defineGranularComponent(import.meta.url, {\n name: 'GrButton',\n safelist: grButtonSafelist,\n tokenDefinitions: {\n light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ':root' }),\n dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: '.dark, [data-theme=\"dark\"]' }),\n },\n})\n","import {defineGranularComponent} from '@feugene/unocss-preset-granular/contract'\n\nimport { grProgressBarSafelist } from './safelist'\nimport {tokenDefinitionsFromCssSync} from \"@feugene/unocss-preset-granular/node\";\n\nconst lightCssUrl = new URL('./themes/light.css', import.meta.url).href\nconst darkCssUrl = new URL('./themes/dark.css', import.meta.url).href\n\nexport const grProgressBarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrProgressBar',\n safelist: grProgressBarSafelist,\n tokenDefinitions: {\n light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ':root' }),\n dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: '.dark, [data-theme=\"dark\"]' }),\n },\n})","// Node-entry granular-provider'а `@feugene/granularity`.\n//\n// От browser-варианта (`./index.ts`) отличается только тем, что для\n// `GrButton` используется `config.node.ts` с `tokenDefinitions`,\n// собранными через `tokenDefinitionsFromCssSync` (требует `node:fs`).\n// Всё остальное — id, `theme.*`, список компонентов, `packageBaseUrl` —\n// приходит из общей фабрики `./shared`.\nimport { grButtonConfig } from '../components/GrButton/config.node'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config.node'\nimport { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider([grButtonConfig, grProgressBarConfig])\n\nexport default granularityProvider\n"],"mappings":";;;;;;AAIA,IAAM,gBAAc,IAAA,IAAA,q0HAAA,KAAA,OAAA,KAAA,GAAA,CAA8C,CAAC;AACnE,IAAM,eAAa,IAAA,IAAA,q8CAAA,KAAA,OAAA,KAAA,GAAA,CAA6C,CAAC;AAEjE,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;CACV,kBAAkB;EAChB,OAAO,4BAA4B,eAAa,EAAE,UAAU,QAAQ,CAAC;EACrE,MAAM,4BAA4B,cAAY,EAAE,IAAI,+BAA6B,CAAC;CACpF;AACF,CAAC;;;ACTD,IAAM,cAAc,IAAA,IAAA,yZAAA,KAAA,OAAA,KAAA,GAAA,CAA8C,CAAC;AACnE,IAAM,aAAa,IAAA,IAAA,qcAAA,KAAA,OAAA,KAAA,GAAA,CAA6C,CAAC;;;ACOjE,IAAa,sBAAsB,0BAA0B,CAAC,gBDL3B,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CACN,UAAU;CACV,kBAAkB;EAChB,OAAO,4BAA4B,aAAa,EAAE,UAAU,QAAQ,CAAC;EACrE,MAAM,4BAA4B,YAAY,EAAE,IAAI,+BAA6B,CAAC;CACpF;AACF,CCF8E,CAAmB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-BiqXd5MW.js";
1
+ import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-ChvcQgDl.js";
2
2
  //#region src/granular-provider/index.ts
3
3
  var granularityProvider = createGranularityProvider();
4
4
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"granular-provider.js","names":[],"sources":["../src/granular-provider/index.ts"],"sourcesContent":["// Browser-entry granular-provider'а `@feugene/granularity`.\n//\n// Использует облегчённый `GrButton/config.ts` без `tokenDefinitionsFromCssSync`,\n// поэтому при сборке клиентских приложений из этого модуля не протягиваются\n// `node:fs`/`node:url`/`node:path`.\n//\n// Для node-сборок UnoCSS, где нужны точечные token overrides из CSS-файлов\n// тем, используйте `./node.ts` — там в `GrButton` подставляется\n// `config.node.ts` с `tokenDefinitionsFromCssSync`.\nimport {createGranularityProvider} from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;AAaA,IAAa,sBAAsB,2BAA2B"}
1
+ {"version":3,"file":"granular-provider.js","names":[],"sources":["../src/granular-provider/index.ts"],"sourcesContent":["// Browser-entry granular-provider'а `@feugene/granularity`.\n//\n// Использует облегчённый `GrButton/config.ts` без `tokenDefinitionsFromCssSync`,\n// поэтому при сборке клиентских приложений из этого модуля не протягиваются\n// `node:fs`/`node:url`/`node:path`.\n//\n// Для node-сборок UnoCSS, где нужны точечные token overrides из CSS-файлов\n// тем, используйте `./node.ts` — там в `GrButton` подставляется\n// `config.node.ts` с `tokenDefinitionsFromCssSync`.\nimport {createGranularityProvider} from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;AAaA,IAAa,sBAAsB,0BAA0B"}
package/dist/i18n/all.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as ru, r as en, t as es } from "../chunks/es-Bx3Kuy6z.js";
1
+ import { n as ru, r as en, t as es } from "../chunks/es-DBhctWg-.js";
2
2
  //#region src/i18n/all.ts
3
3
  var all = [
4
4
  en,
@@ -1 +1 @@
1
- {"version":3,"file":"all.js","names":[],"sources":["../../src/i18n/all.ts"],"sourcesContent":["/**\n * Aggregated locale loaders for the Granularity package.\n *\n * Imported via the dedicated sub-path `@feugene/granularity/i18n/all`.\n * Use it ONLY in environments where bundle size is not a concern\n * (demos, Storybook, e2e, localization tooling).\n *\n * For production builds always prefer per-locale imports from\n * `@feugene/granularity/i18n` so unused languages can be tree-shaken away.\n *\n * ```ts\n * import all from '@feugene/granularity/i18n/all'\n *\n * createFintI18n({\n * locale: 'en',\n * fallbackLocale: 'en',\n * loaders: all, // == [en, ru, es]\n * })\n * ```\n */\nimport type { LocaleLoaderCollection } from '@feugene/fint-i18n/core'\n\nimport { en } from './messages/en'\nimport { ru } from './messages/ru'\nimport { es } from './messages/es'\n\nexport const all: LocaleLoaderCollection[] = [en, ru, es]\n\nexport default all\n"],"mappings":";;AA0BA,IAAa,MAAgC;CAAC;CAAI;CAAI;CAAG"}
1
+ {"version":3,"file":"all.js","names":[],"sources":["../../src/i18n/all.ts"],"sourcesContent":["/**\n * Aggregated locale loaders for the Granularity package.\n *\n * Imported via the dedicated sub-path `@feugene/granularity/i18n/all`.\n * Use it ONLY in environments where bundle size is not a concern\n * (demos, Storybook, e2e, localization tooling).\n *\n * For production builds always prefer per-locale imports from\n * `@feugene/granularity/i18n` so unused languages can be tree-shaken away.\n *\n * ```ts\n * import all from '@feugene/granularity/i18n/all'\n *\n * createFintI18n({\n * locale: 'en',\n * fallbackLocale: 'en',\n * loaders: all, // == [en, ru, es]\n * })\n * ```\n */\nimport type { LocaleLoaderCollection } from '@feugene/fint-i18n/core'\n\nimport { en } from './messages/en'\nimport { ru } from './messages/ru'\nimport { es } from './messages/es'\n\nexport const all: LocaleLoaderCollection[] = [en, ru, es]\n\nexport default all\n"],"mappings":";;AA0BA,IAAa,MAAgC;CAAC;CAAI;CAAI;AAAE"}
@@ -1,3 +1,3 @@
1
- import { t as GRANULARITY_I18N_KEY } from "../chunks/adapter-BqqjEZGU.js";
2
- import { i as GRANULARITY_I18N_BLOCK, n as ru, r as en, t as es } from "../chunks/es-Bx3Kuy6z.js";
1
+ import { t as GRANULARITY_I18N_KEY } from "../chunks/adapter-CAOxmn2G.js";
2
+ import { i as GRANULARITY_I18N_BLOCK, n as ru, r as en, t as es } from "../chunks/es-DBhctWg-.js";
3
3
  export { GRANULARITY_I18N_BLOCK, GRANULARITY_I18N_KEY, en, es, ru };