@feugene/granularity 0.4.0 → 0.4.2

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 (432) hide show
  1. package/dist/chunks/_plugin-vue_export-helper-BG_EqiDU.js +8 -0
  2. package/dist/chunks/adapter-K6zZTzBi.js +4 -0
  3. package/dist/chunks/adapter-K6zZTzBi.js.map +1 -0
  4. package/dist/chunks/arrow-up-DNXrMoAI.js +23 -0
  5. package/dist/chunks/arrow-up-DNXrMoAI.js.map +1 -0
  6. package/dist/chunks/classTokens-BPeBXNzu.js +6 -0
  7. package/dist/chunks/classTokens-BPeBXNzu.js.map +1 -0
  8. package/dist/chunks/config-1I95Zy4V.js +14 -0
  9. package/dist/chunks/config-1I95Zy4V.js.map +1 -0
  10. package/dist/chunks/config-2wgwWaAB.js +8 -0
  11. package/dist/chunks/config-2wgwWaAB.js.map +1 -0
  12. package/dist/chunks/config-BA0BWYzs.js +8 -0
  13. package/dist/chunks/config-BA0BWYzs.js.map +1 -0
  14. package/dist/chunks/config-BCPyma1I.js +8 -0
  15. package/dist/chunks/config-BCPyma1I.js.map +1 -0
  16. package/dist/chunks/config-BDlh6iNz.js +24 -0
  17. package/dist/chunks/config-BDlh6iNz.js.map +1 -0
  18. package/dist/chunks/config-BKRmlivc.js +8 -0
  19. package/dist/chunks/config-BKRmlivc.js.map +1 -0
  20. package/dist/chunks/config-BN-B2K4r.js +17 -0
  21. package/dist/chunks/config-BN-B2K4r.js.map +1 -0
  22. package/dist/chunks/config-BNOf_qjD.js +40 -0
  23. package/dist/chunks/config-BNOf_qjD.js.map +1 -0
  24. package/dist/chunks/config-BaMO9dQh.js +20 -0
  25. package/dist/chunks/config-BaMO9dQh.js.map +1 -0
  26. package/dist/chunks/config-Bv2G0OU6.js +8 -0
  27. package/dist/chunks/config-Bv2G0OU6.js.map +1 -0
  28. package/dist/chunks/config-BvuQUBtZ.js +21 -0
  29. package/dist/chunks/config-BvuQUBtZ.js.map +1 -0
  30. package/dist/chunks/config-BzZGpWsj.js +9 -0
  31. package/dist/chunks/config-BzZGpWsj.js.map +1 -0
  32. package/dist/chunks/config-C0j836dC.js +8 -0
  33. package/dist/chunks/config-C0j836dC.js.map +1 -0
  34. package/dist/chunks/config-C2iI7_QX.js +9 -0
  35. package/dist/chunks/config-C2iI7_QX.js.map +1 -0
  36. package/dist/chunks/config-C4AlNm912.js +13 -0
  37. package/dist/chunks/config-C4AlNm912.js.map +1 -0
  38. package/dist/chunks/config-C5SJXHQ4.js +9 -0
  39. package/dist/chunks/config-C5SJXHQ4.js.map +1 -0
  40. package/dist/chunks/config-C6SBJxcH.js +8 -0
  41. package/dist/chunks/config-C6SBJxcH.js.map +1 -0
  42. package/dist/chunks/config-CByfsV-z2.js +9 -0
  43. package/dist/chunks/config-CByfsV-z2.js.map +1 -0
  44. package/dist/chunks/config-CM7nbATU2.js +78 -0
  45. package/dist/chunks/config-CM7nbATU2.js.map +1 -0
  46. package/dist/chunks/config-CMZE2fu0.js +9 -0
  47. package/dist/chunks/config-CMZE2fu0.js.map +1 -0
  48. package/dist/chunks/config-CU_CBd0k.js +22 -0
  49. package/dist/chunks/config-CU_CBd0k.js.map +1 -0
  50. package/dist/chunks/config-CUgvsjZx.js +171 -0
  51. package/dist/chunks/config-CUgvsjZx.js.map +1 -0
  52. package/dist/chunks/config-CWvHiaqr2.js +23 -0
  53. package/dist/chunks/config-CWvHiaqr2.js.map +1 -0
  54. package/dist/chunks/config-Cf0J6wCX.js +58 -0
  55. package/dist/chunks/config-Cf0J6wCX.js.map +1 -0
  56. package/dist/chunks/config-CgAY2WP9.js +9 -0
  57. package/dist/chunks/config-CgAY2WP9.js.map +1 -0
  58. package/dist/chunks/config-Cgc-D1K4.js +9 -0
  59. package/dist/chunks/config-Cgc-D1K4.js.map +1 -0
  60. package/dist/chunks/config-D19pyP4D.js +35 -0
  61. package/dist/chunks/config-D19pyP4D.js.map +1 -0
  62. package/dist/chunks/config-DCQO6H6h.js +11 -0
  63. package/dist/chunks/config-DCQO6H6h.js.map +1 -0
  64. package/dist/chunks/config-DEv4m-ZP.js +58 -0
  65. package/dist/chunks/config-DEv4m-ZP.js.map +1 -0
  66. package/dist/chunks/config-DFRYOcrP.js +9 -0
  67. package/dist/chunks/config-DFRYOcrP.js.map +1 -0
  68. package/dist/chunks/config-DTpwUHgF.js +9 -0
  69. package/dist/chunks/config-DTpwUHgF.js.map +1 -0
  70. package/dist/chunks/config-DW_RqmUp.js +8 -0
  71. package/dist/chunks/config-DW_RqmUp.js.map +1 -0
  72. package/dist/chunks/config-Da90XGsi.js +38 -0
  73. package/dist/chunks/config-Da90XGsi.js.map +1 -0
  74. package/dist/chunks/config-DgRJlF00.js +53 -0
  75. package/dist/chunks/config-DgRJlF00.js.map +1 -0
  76. package/dist/chunks/config-Dkq0HeLe.js +9 -0
  77. package/dist/chunks/config-Dkq0HeLe.js.map +1 -0
  78. package/dist/chunks/config-DmI1IQvI2.js +8 -0
  79. package/dist/chunks/config-DmI1IQvI2.js.map +1 -0
  80. package/dist/chunks/config-Dnu4VuO0.js +8 -0
  81. package/dist/chunks/config-Dnu4VuO0.js.map +1 -0
  82. package/dist/chunks/config-DxqpV-KM.js +45 -0
  83. package/dist/chunks/config-DxqpV-KM.js.map +1 -0
  84. package/dist/chunks/config-TyzU6gLf.js +8 -0
  85. package/dist/chunks/config-TyzU6gLf.js.map +1 -0
  86. package/dist/chunks/config-XwI6t8cn.js +39 -0
  87. package/dist/chunks/config-XwI6t8cn.js.map +1 -0
  88. package/dist/chunks/config-bpQYM5O-.js +44 -0
  89. package/dist/chunks/config-bpQYM5O-.js.map +1 -0
  90. package/dist/chunks/config-etXh7Bsr2.js +9 -0
  91. package/dist/chunks/config-etXh7Bsr2.js.map +1 -0
  92. package/dist/chunks/config-fCcRwjIB.js +13 -0
  93. package/dist/chunks/config-fCcRwjIB.js.map +1 -0
  94. package/dist/chunks/config-nfOMJXVs.js +9 -0
  95. package/dist/chunks/config-nfOMJXVs.js.map +1 -0
  96. package/dist/chunks/config-qJXIIY1E.js +8 -0
  97. package/dist/chunks/config-qJXIIY1E.js.map +1 -0
  98. package/dist/chunks/config-r6hzn2Bn2.js +9 -0
  99. package/dist/chunks/config-r6hzn2Bn2.js.map +1 -0
  100. package/dist/chunks/config-rQlbnEKn.js +8 -0
  101. package/dist/chunks/config-rQlbnEKn.js.map +1 -0
  102. package/dist/chunks/dialogShared-BtXUk6Zc.js +32 -0
  103. package/dist/chunks/dialogShared-BtXUk6Zc.js.map +1 -0
  104. package/dist/chunks/en-BeJa78lP.js +48 -0
  105. package/dist/chunks/en-BeJa78lP.js.map +1 -0
  106. package/dist/chunks/es-BPqm7rLm.js +20 -0
  107. package/dist/chunks/es-BPqm7rLm.js.map +1 -0
  108. package/dist/chunks/es-axYOwwWD.js +48 -0
  109. package/dist/chunks/es-axYOwwWD.js.map +1 -0
  110. package/dist/chunks/fileValidation-CwJA8Vmn.js +219 -0
  111. package/dist/chunks/fileValidation-CwJA8Vmn.js.map +1 -0
  112. package/dist/chunks/{grBadgeStyles-Bu4H8bFc.js → grBadgeStyles-pqqbVgLk.js} +18 -13
  113. package/dist/chunks/grBadgeStyles-pqqbVgLk.js.map +1 -0
  114. package/dist/chunks/{grButtonStyles-C5k0bN2e.js → grButtonStyles-BxZW2x0-.js} +60 -52
  115. package/dist/chunks/grButtonStyles-BxZW2x0-.js.map +1 -0
  116. package/dist/chunks/{grDropdownStyles-149X1NeB.js → grDropdownStyles-DMp7RrI9.js} +10 -9
  117. package/dist/chunks/grDropdownStyles-DMp7RrI9.js.map +1 -0
  118. package/dist/chunks/grLoadingStyles-CrxZHFL0.js +17 -0
  119. package/dist/chunks/grLoadingStyles-CrxZHFL0.js.map +1 -0
  120. package/dist/chunks/{grModalStyles-Dmd4havY.js → grModalStyles-Dv2NXBKi.js} +20 -11
  121. package/dist/chunks/grModalStyles-Dv2NXBKi.js.map +1 -0
  122. package/dist/chunks/grSelectStyles-B7doeAQp.js +50 -0
  123. package/dist/chunks/grSelectStyles-B7doeAQp.js.map +1 -0
  124. package/dist/chunks/granularityI18n-GCqUz_lo.js +26 -0
  125. package/dist/chunks/granularityI18n-GCqUz_lo.js.map +1 -0
  126. package/dist/chunks/info-C0bHmdZq.js +26 -0
  127. package/dist/chunks/info-C0bHmdZq.js.map +1 -0
  128. package/dist/chunks/loader-circle-B2rWDk5u.js +23 -0
  129. package/dist/chunks/loader-circle-B2rWDk5u.js.map +1 -0
  130. package/dist/chunks/ru-Dqh-2C00.js +48 -0
  131. package/dist/chunks/ru-Dqh-2C00.js.map +1 -0
  132. package/dist/chunks/safelist-BF822K15.js +13 -0
  133. package/dist/chunks/safelist-BF822K15.js.map +1 -0
  134. package/dist/chunks/safelist-BY7z8fOl.js +24 -0
  135. package/dist/chunks/safelist-BY7z8fOl.js.map +1 -0
  136. package/dist/chunks/{shared-BqUqjuxn.js → shared-Cu5QkNmt.js} +149 -111
  137. package/dist/chunks/shared-Cu5QkNmt.js.map +1 -0
  138. package/dist/chunks/transition-mJ3PZCHH.js +1692 -0
  139. package/dist/chunks/transition-mJ3PZCHH.js.map +1 -0
  140. package/dist/chunks/x-Pa6C2hwi.js +23 -0
  141. package/dist/chunks/x-Pa6C2hwi.js.map +1 -0
  142. package/dist/chunks/x-circle-DQSlBLmX.js +67 -0
  143. package/dist/chunks/x-circle-DQSlBLmX.js.map +1 -0
  144. package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js +146 -0
  145. package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js.map +1 -0
  146. package/dist/components/GrAlert/index.js +3 -3
  147. package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js +41 -0
  148. package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js.map +1 -0
  149. package/dist/components/GrAvatar/index.js +3 -3
  150. package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js +32 -0
  151. package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js.map +1 -0
  152. package/dist/components/GrBadge/index.js +3 -3
  153. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js +33 -0
  154. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js.map +1 -0
  155. package/dist/components/GrBadgeWrap/index.js +3 -3
  156. package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js +31 -0
  157. package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js.map +1 -0
  158. package/dist/components/GrBottomNav/index.js +3 -3
  159. package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js +83 -0
  160. package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js.map +1 -0
  161. package/dist/components/GrButton/index.js +5 -5
  162. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js +21 -0
  163. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js.map +1 -0
  164. package/dist/components/GrButtonGroup/index.js +3 -3
  165. package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js +11 -0
  166. package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js.map +1 -0
  167. package/dist/components/GrCard/index.js +3 -3
  168. package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js +134 -0
  169. package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +1 -0
  170. package/dist/components/GrCheckbox/index.js +3 -3
  171. package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js +205 -0
  172. package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js.map +1 -0
  173. package/dist/components/GrCollapse/index.js +3 -3
  174. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js +131 -0
  175. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js.map +1 -0
  176. package/dist/components/GrConfirmDialog/index.js +3 -3
  177. package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js +179 -0
  178. package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js.map +1 -0
  179. package/dist/components/GrDataTable/index.js +3 -3
  180. package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js +221 -0
  181. package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js.map +1 -0
  182. package/dist/components/GrDialog/index.js +4 -4
  183. package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js +156 -0
  184. package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js.map +1 -0
  185. package/dist/components/GrDrawer/index.js +3 -3
  186. package/dist/components/GrDropdown/chunks/GrDropdown-BkACCXdp.js +151 -0
  187. package/dist/components/GrDropdown/chunks/GrDropdown-BkACCXdp.js.map +1 -0
  188. package/dist/components/GrDropdown/index.js +3 -3
  189. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-BEenXrJw.js +309 -0
  190. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-BEenXrJw.js.map +1 -0
  191. package/dist/components/GrDropdownMenu/index.js +3 -3
  192. package/dist/components/GrEmptyState/chunks/GrEmptyState-BLbMJFW-.js +62 -0
  193. package/dist/components/GrEmptyState/chunks/GrEmptyState-BLbMJFW-.js.map +1 -0
  194. package/dist/components/GrEmptyState/index.js +3 -3
  195. package/dist/components/GrFileUpload/chunks/GrFileUpload-u01j9S0t.js +368 -0
  196. package/dist/components/GrFileUpload/chunks/GrFileUpload-u01j9S0t.js.map +1 -0
  197. package/dist/components/GrFileUpload/index.js +4 -4
  198. package/dist/components/GrFormField/chunks/GrFormField-C6PfAs4u.js +35 -0
  199. package/dist/components/GrFormField/chunks/GrFormField-C6PfAs4u.js.map +1 -0
  200. package/dist/components/GrFormField/index.js +3 -3
  201. package/dist/components/GrFormFile/chunks/GrFormFile-DdM8Bc2B.js +313 -0
  202. package/dist/components/GrFormFile/chunks/GrFormFile-DdM8Bc2B.js.map +1 -0
  203. package/dist/components/GrFormFile/index.js +3 -3
  204. package/dist/components/GrFormSection/chunks/GrFormSection-5djEaQZQ.js +35 -0
  205. package/dist/components/GrFormSection/chunks/GrFormSection-5djEaQZQ.js.map +1 -0
  206. package/dist/components/GrFormSection/index.js +3 -3
  207. package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js +32 -0
  208. package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js.map +1 -0
  209. package/dist/components/GrIcon/index.js +3 -3
  210. package/dist/components/GrImageViewer/chunks/GrImageViewer-CjSnohW7.js +397 -0
  211. package/dist/components/GrImageViewer/chunks/GrImageViewer-CjSnohW7.js.map +1 -0
  212. package/dist/components/GrImageViewer/index.js +3 -3
  213. package/dist/components/GrInput/chunks/GrInput-ghxaTf6d.js +211 -0
  214. package/dist/components/GrInput/chunks/GrInput-ghxaTf6d.js.map +1 -0
  215. package/dist/components/GrInput/index.js +3 -3
  216. package/dist/components/GrInputTag/chunks/GrInputTag-B0x4U0Yk.js +257 -0
  217. package/dist/components/GrInputTag/chunks/GrInputTag-B0x4U0Yk.js.map +1 -0
  218. package/dist/components/GrInputTag/index.js +3 -3
  219. package/dist/components/GrLink/chunks/GrLink-C7-Y1u88.js +80 -0
  220. package/dist/components/GrLink/chunks/GrLink-C7-Y1u88.js.map +1 -0
  221. package/dist/components/GrLink/index.js +3 -3
  222. package/dist/components/GrList/chunks/GrList--Ib4zLNw.js +77 -0
  223. package/dist/components/GrList/chunks/GrList--Ib4zLNw.js.map +1 -0
  224. package/dist/components/GrList/index.js +3 -3
  225. package/dist/components/GrLoading/chunks/GrLoading-C3QZKwE-.js +69 -0
  226. package/dist/components/GrLoading/chunks/GrLoading-C3QZKwE-.js.map +1 -0
  227. package/dist/components/GrLoading/index.js +3 -3
  228. package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js +168 -0
  229. package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js.map +1 -0
  230. package/dist/components/GrModal/index.js +4 -4
  231. package/dist/components/GrNavbar/chunks/GrNavbar-nIyuiVj1.js +75 -0
  232. package/dist/components/GrNavbar/chunks/GrNavbar-nIyuiVj1.js.map +1 -0
  233. package/dist/components/GrNavbar/index.js +3 -3
  234. package/dist/components/GrNumberInput/chunks/GrNumberInput-B0mPLjdv.js +397 -0
  235. package/dist/components/GrNumberInput/chunks/GrNumberInput-B0mPLjdv.js.map +1 -0
  236. package/dist/components/GrNumberInput/index.js +3 -3
  237. package/dist/components/GrPagination/chunks/GrPagination-BSTO6flk.js +114 -0
  238. package/dist/components/GrPagination/chunks/GrPagination-BSTO6flk.js.map +1 -0
  239. package/dist/components/GrPagination/index.js +3 -3
  240. package/dist/components/GrProgressBar/chunks/GrProgressBar-MvMnzsJl.js +39 -0
  241. package/dist/components/GrProgressBar/chunks/GrProgressBar-MvMnzsJl.js.map +1 -0
  242. package/dist/components/GrProgressBar/index.js +3 -3
  243. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DKhbN6ji.js +190 -0
  244. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DKhbN6ji.js.map +1 -0
  245. package/dist/components/GrPromptDialog/index.js +3 -3
  246. package/dist/components/GrRadio/chunks/GrRadio-BxBs3WHq.js +184 -0
  247. package/dist/components/GrRadio/chunks/GrRadio-BxBs3WHq.js.map +1 -0
  248. package/dist/components/GrRadio/index.js +3 -3
  249. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-CEAfJQ6A.js +80 -0
  250. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-CEAfJQ6A.js.map +1 -0
  251. package/dist/components/GrRadioGroup/index.js +3 -3
  252. package/dist/components/GrSegmented/chunks/GrSegmented-Bwn2qOY4.js +323 -0
  253. package/dist/components/GrSegmented/chunks/GrSegmented-Bwn2qOY4.js.map +1 -0
  254. package/dist/components/GrSegmented/index.js +3 -3
  255. package/dist/components/GrSelect/chunks/GrSelect-9wRWAu2R.js +443 -0
  256. package/dist/components/GrSelect/chunks/GrSelect-9wRWAu2R.js.map +1 -0
  257. package/dist/components/GrSelect/index.js +3 -3
  258. package/dist/components/GrSidebar/chunks/GrSidebar-CSZ3RpFB.js +44 -0
  259. package/dist/components/GrSidebar/chunks/GrSidebar-CSZ3RpFB.js.map +1 -0
  260. package/dist/components/GrSidebar/index.js +3 -3
  261. package/dist/components/GrSkeleton/chunks/GrSkeleton-DKXkqWDa.js +33 -0
  262. package/dist/components/GrSkeleton/chunks/GrSkeleton-DKXkqWDa.js.map +1 -0
  263. package/dist/components/GrSkeleton/index.js +3 -3
  264. package/dist/components/GrSwitch/chunks/GrSwitch-CdBxwV3k.js +79 -0
  265. package/dist/components/GrSwitch/chunks/GrSwitch-CdBxwV3k.js.map +1 -0
  266. package/dist/components/GrSwitch/index.js +3 -3
  267. package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js +57 -0
  268. package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js.map +1 -0
  269. package/dist/components/GrTable/index.js +3 -3
  270. package/dist/components/GrTabs/chunks/GrTabs-BpF8AAUz.js +118 -0
  271. package/dist/components/GrTabs/chunks/GrTabs-BpF8AAUz.js.map +1 -0
  272. package/dist/components/GrTabs/index.js +3 -3
  273. package/dist/components/GrTextarea/chunks/GrTextarea-DFS9ZkrA.js +71 -0
  274. package/dist/components/GrTextarea/chunks/GrTextarea-DFS9ZkrA.js.map +1 -0
  275. package/dist/components/GrTextarea/index.js +3 -3
  276. package/dist/components/GrToaster/chunks/GrToaster-3Mf0Moxt.js +171 -0
  277. package/dist/components/GrToaster/chunks/GrToaster-3Mf0Moxt.js.map +1 -0
  278. package/dist/components/GrToaster/index.js +3 -3
  279. package/dist/components/GrTooltip/chunks/GrTooltip-BvmsukLW.js +55 -0
  280. package/dist/components/GrTooltip/chunks/GrTooltip-BvmsukLW.js.map +1 -0
  281. package/dist/components/GrTooltip/index.js +3 -3
  282. package/dist/components/GrTree/chunks/GrTree-C2kN-O4Q.js +734 -0
  283. package/dist/components/GrTree/chunks/GrTree-C2kN-O4Q.js.map +1 -0
  284. package/dist/components/GrTree/index.js +3 -3
  285. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-Da-CpRqm.js +454 -0
  286. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-Da-CpRqm.js.map +1 -0
  287. package/dist/components/GrTreeSelect/index.js +3 -3
  288. package/dist/composables/useTheme.js +39 -30
  289. package/dist/composables/useTheme.js.map +1 -0
  290. package/dist/composables/useToast.js +41 -34
  291. package/dist/composables/useToast.js.map +1 -0
  292. package/dist/directives/autofocus.js +55 -0
  293. package/dist/directives/autofocus.js.map +1 -0
  294. package/dist/directives/autosize.js +117 -0
  295. package/dist/directives/autosize.js.map +1 -0
  296. package/dist/directives/clickOutside.js +96 -0
  297. package/dist/directives/clickOutside.js.map +1 -0
  298. package/dist/directives/dropzone.js +164 -0
  299. package/dist/directives/dropzone.js.map +1 -0
  300. package/dist/directives/hotkey.js +138 -0
  301. package/dist/directives/hotkey.js.map +1 -0
  302. package/dist/directives/index.js +7 -2
  303. package/dist/directives/loading.js +163 -0
  304. package/dist/directives/loading.js.map +1 -0
  305. package/dist/fileValidation/index.js +2 -2
  306. package/dist/granular-provider-node.js +23 -14
  307. package/dist/granular-provider-node.js.map +1 -0
  308. package/dist/granular-provider.js +3 -3
  309. package/dist/granular-provider.js.map +1 -0
  310. package/dist/i18n/all.js +6 -6
  311. package/dist/i18n/all.js.map +1 -0
  312. package/dist/i18n/index.js +3 -3
  313. package/dist/index.js +110 -105
  314. package/dist/vue/index.js +64 -26
  315. package/dist/vue/index.js.map +1 -0
  316. package/package.json +25 -1
  317. package/dist/chunks/_plugin-vue_export-helper-CHO2XVys.js +0 -8
  318. package/dist/chunks/adapter-D5uYoOZj.js +0 -4
  319. package/dist/chunks/arrow-up-Dv3dC3hu.js +0 -23
  320. package/dist/chunks/classTokens-CT1tqF2j.js +0 -6
  321. package/dist/chunks/config-B5JCvHys.js +0 -13
  322. package/dist/chunks/config-BDXa5Sna2.js +0 -9
  323. package/dist/chunks/config-BG5_FuZ-.js +0 -34
  324. package/dist/chunks/config-BMYKG1oB.js +0 -10
  325. package/dist/chunks/config-BQREEXFD.js +0 -8
  326. package/dist/chunks/config-BUZtbeTr.js +0 -40
  327. package/dist/chunks/config-BVXycfiO.js +0 -9
  328. package/dist/chunks/config-BZW-RL6E.js +0 -14
  329. package/dist/chunks/config-BhbfV-Is.js +0 -48
  330. package/dist/chunks/config-BmYFupZh.js +0 -8
  331. package/dist/chunks/config-BsZc_QQ-2.js +0 -20
  332. package/dist/chunks/config-C1Sn7mn-.js +0 -27
  333. package/dist/chunks/config-C4_REX-3.js +0 -9
  334. package/dist/chunks/config-CBFllZZ4.js +0 -9
  335. package/dist/chunks/config-CDyD_fCt.js +0 -8
  336. package/dist/chunks/config-CJeG727i.js +0 -149
  337. package/dist/chunks/config-CLawBqde.js +0 -21
  338. package/dist/chunks/config-CMz46RPG.js +0 -8
  339. package/dist/chunks/config-CO-7HRZd2.js +0 -8
  340. package/dist/chunks/config-CS7E7LME.js +0 -9
  341. package/dist/chunks/config-CVy124Xj.js +0 -8
  342. package/dist/chunks/config-CcixQGaN.js +0 -47
  343. package/dist/chunks/config-CiVXZxyQ.js +0 -9
  344. package/dist/chunks/config-CoMQmunP.js +0 -8
  345. package/dist/chunks/config-Cq6ufYtp.js +0 -9
  346. package/dist/chunks/config-D8CIEWcb.js +0 -8
  347. package/dist/chunks/config-D8hKc39m.js +0 -18
  348. package/dist/chunks/config-D9MxGwCJ.js +0 -8
  349. package/dist/chunks/config-DBXTZE36.js +0 -15
  350. package/dist/chunks/config-DK9C8O7L.js +0 -9
  351. package/dist/chunks/config-DTegOmx2.js +0 -8
  352. package/dist/chunks/config-DYI8XADo.js +0 -47
  353. package/dist/chunks/config-DlidGf7P.js +0 -8
  354. package/dist/chunks/config-DtNe7EIX.js +0 -35
  355. package/dist/chunks/config-EdWeK_ge.js +0 -17
  356. package/dist/chunks/config-FGAkxHFh.js +0 -8
  357. package/dist/chunks/config-M76gNxd2.js +0 -37
  358. package/dist/chunks/config-NuqoO_Of.js +0 -33
  359. package/dist/chunks/config-QsovJrku2.js +0 -66
  360. package/dist/chunks/config-R6F6zRJk.js +0 -9
  361. package/dist/chunks/config-SLwkDc4Q2.js +0 -9
  362. package/dist/chunks/config-aJ7sb62Y.js +0 -8
  363. package/dist/chunks/config-b9nc87Oc.js +0 -9
  364. package/dist/chunks/config-dSI8RttH2.js +0 -8
  365. package/dist/chunks/config-im2VHeSM.js +0 -9
  366. package/dist/chunks/config-vKeQ035f.js +0 -9
  367. package/dist/chunks/config-vMcxHlWi.js +0 -14
  368. package/dist/chunks/dialogShared-CONROtU2.js +0 -26
  369. package/dist/chunks/directives-Dr5NPOT8.js +0 -530
  370. package/dist/chunks/en-j3simI0h.js +0 -41
  371. package/dist/chunks/es-CIT9s_vo.js +0 -4
  372. package/dist/chunks/es-CLpJj7KP.js +0 -41
  373. package/dist/chunks/fileValidation-LFD-vwil.js +0 -193
  374. package/dist/chunks/grLoadingStyles-Bjo7ylmq.js +0 -15
  375. package/dist/chunks/grSelectStyles-C3QKIn1J.js +0 -40
  376. package/dist/chunks/granularityI18n-8_v1B11L.js +0 -24
  377. package/dist/chunks/info-CNJnuTYC.js +0 -26
  378. package/dist/chunks/loader-circle-C5vCCMfB.js +0 -23
  379. package/dist/chunks/ru-CiOZPnBu.js +0 -41
  380. package/dist/chunks/safelist-Bq32hAXc.js +0 -13
  381. package/dist/chunks/safelist-CLcTRYB-.js +0 -22
  382. package/dist/chunks/transition-BJXMi52x.js +0 -1617
  383. package/dist/chunks/x--kxrj3ez.js +0 -23
  384. package/dist/chunks/x-circle-ChJ87u1v.js +0 -61
  385. package/dist/components/GrAlert/chunks/GrAlert-DLHkusb-.js +0 -129
  386. package/dist/components/GrAvatar/chunks/GrAvatar-BFYH3HJw.js +0 -32
  387. package/dist/components/GrBadge/chunks/GrBadge-D_AoqGrn.js +0 -27
  388. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-C_N0QJfA.js +0 -26
  389. package/dist/components/GrBottomNav/chunks/GrBottomNav-Chpu3SVd.js +0 -21
  390. package/dist/components/GrButton/chunks/GrButton-BXVVt6Od.js +0 -67
  391. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CmnYHVH7.js +0 -16
  392. package/dist/components/GrCard/chunks/GrCard-DEpN6Ptf.js +0 -10
  393. package/dist/components/GrCheckbox/chunks/GrCheckbox-DF3vJApB.js +0 -111
  394. package/dist/components/GrCollapse/chunks/GrCollapse-D7QYRqNa.js +0 -150
  395. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-C7Eh8-Vn.js +0 -111
  396. package/dist/components/GrDataTable/chunks/GrDataTable-Dxsg1NMP.js +0 -142
  397. package/dist/components/GrDialog/chunks/GrDialog-BSd4-uP5.js +0 -169
  398. package/dist/components/GrDrawer/chunks/GrDrawer-DBBSwe1s.js +0 -135
  399. package/dist/components/GrDropdown/chunks/GrDropdown-BELyRP4A.js +0 -110
  400. package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-B8fuk7iP.js +0 -233
  401. package/dist/components/GrEmptyState/chunks/GrEmptyState-BPGoafJI.js +0 -49
  402. package/dist/components/GrFileUpload/chunks/GrFileUpload-BPzx3LEM.js +0 -294
  403. package/dist/components/GrFormField/chunks/GrFormField-Cn8g9eFP.js +0 -28
  404. package/dist/components/GrFormFile/chunks/GrFormFile-DfinD5Iv.js +0 -248
  405. package/dist/components/GrFormSection/chunks/GrFormSection-dKpQw-vh.js +0 -27
  406. package/dist/components/GrIcon/chunks/GrIcon-CXIHuG7L.js +0 -25
  407. package/dist/components/GrImageViewer/chunks/GrImageViewer-CQSNx-D7.js +0 -322
  408. package/dist/components/GrInput/chunks/GrInput-CLKX1inm.js +0 -158
  409. package/dist/components/GrInputTag/chunks/GrInputTag-BAtLody2.js +0 -214
  410. package/dist/components/GrLink/chunks/GrLink-BpXnly-Y.js +0 -59
  411. package/dist/components/GrList/chunks/GrList-BrFc7VdS.js +0 -55
  412. package/dist/components/GrLoading/chunks/GrLoading-dFuoryMY.js +0 -53
  413. package/dist/components/GrModal/chunks/GrModal-uaWXH08K.js +0 -136
  414. package/dist/components/GrNavbar/chunks/GrNavbar-KzLHgdjX.js +0 -62
  415. package/dist/components/GrNumberInput/chunks/GrNumberInput-rENn1802.js +0 -315
  416. package/dist/components/GrPagination/chunks/GrPagination-DP0x3rx6.js +0 -93
  417. package/dist/components/GrProgressBar/chunks/GrProgressBar-DpW93sOi.js +0 -29
  418. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-ASfBwyzQ.js +0 -158
  419. package/dist/components/GrRadio/chunks/GrRadio-8BOo97XV.js +0 -147
  420. package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BymbUmqI.js +0 -66
  421. package/dist/components/GrSegmented/chunks/GrSegmented-CK5C_lN7.js +0 -250
  422. package/dist/components/GrSelect/chunks/GrSelect-BMfc1-vs.js +0 -314
  423. package/dist/components/GrSidebar/chunks/GrSidebar-C4SXXhfO.js +0 -29
  424. package/dist/components/GrSkeleton/chunks/GrSkeleton-QlieOdpY.js +0 -25
  425. package/dist/components/GrSwitch/chunks/GrSwitch-Cefiutzu.js +0 -64
  426. package/dist/components/GrTable/chunks/GrTable-k_FUiJQk.js +0 -44
  427. package/dist/components/GrTabs/chunks/GrTabs-B46P-lUc.js +0 -98
  428. package/dist/components/GrTextarea/chunks/GrTextarea-BX7L1MJk.js +0 -57
  429. package/dist/components/GrToaster/chunks/GrToaster-C4l_BjOh.js +0 -139
  430. package/dist/components/GrTooltip/chunks/GrTooltip-BqRAzuLT.js +0 -37
  431. package/dist/components/GrTree/chunks/GrTree-C2CXR_vW.js +0 -614
  432. package/dist/components/GrTreeSelect/chunks/GrTreeSelect-DAAay-QB.js +0 -353
@@ -0,0 +1,164 @@
1
+ import { l as runFileValidators, u as FileValidationError } from "../chunks/fileValidation-CwJA8Vmn.js";
2
+ //#region src/directives/dropzone.ts
3
+ function normalize(value) {
4
+ if (typeof value === "function") return {
5
+ enabled: true,
6
+ multiple: true,
7
+ validators: void 0,
8
+ preventDefault: true,
9
+ stopPropagation: false,
10
+ onFiles: value,
11
+ onError: void 0,
12
+ onStateChange: void 0,
13
+ overClass: "ds-dropzone--over"
14
+ };
15
+ if (value && typeof value === "object") return {
16
+ enabled: value.enabled ?? true,
17
+ multiple: value.multiple ?? true,
18
+ validators: value.validators,
19
+ preventDefault: value.preventDefault ?? true,
20
+ stopPropagation: value.stopPropagation ?? false,
21
+ onFiles: value.onFiles,
22
+ onError: value.onError,
23
+ onStateChange: value.onStateChange,
24
+ overClass: value.overClass ?? "ds-dropzone--over"
25
+ };
26
+ return {
27
+ enabled: false,
28
+ multiple: true,
29
+ validators: void 0,
30
+ preventDefault: true,
31
+ stopPropagation: false,
32
+ onFiles: void 0,
33
+ onError: void 0,
34
+ onStateChange: void 0,
35
+ overClass: "ds-dropzone--over"
36
+ };
37
+ }
38
+ var states = /* @__PURE__ */ new WeakMap();
39
+ function setOver(el, next) {
40
+ const state = states.get(el);
41
+ if (!state) return;
42
+ const wasDomOver = el.dataset.grDropzoneOver === "true";
43
+ const prev = state.isOver;
44
+ state.isOver = next;
45
+ if (next) {
46
+ el.classList.add(state.options.overClass);
47
+ el.dataset.grDropzoneOver = "true";
48
+ } else {
49
+ el.classList.remove(state.options.overClass);
50
+ delete el.dataset.grDropzoneOver;
51
+ }
52
+ if (prev !== next || wasDomOver !== next) state.options.onStateChange?.({ isOver: next });
53
+ }
54
+ function unbind(el) {
55
+ const state = states.get(el);
56
+ if (!state) return;
57
+ state.overCounter = 0;
58
+ setOver(el, false);
59
+ delete el.dataset.grDropzone;
60
+ el.removeEventListener("dragenter", state.onDragEnter);
61
+ el.removeEventListener("dragover", state.onDragOver);
62
+ el.removeEventListener("dragleave", state.onDragLeave);
63
+ el.removeEventListener("drop", state.onDrop);
64
+ states.delete(el);
65
+ }
66
+ function bind(el, value) {
67
+ const state = {
68
+ options: normalize(value),
69
+ overCounter: 0,
70
+ isOver: false,
71
+ onDragEnter(event) {
72
+ const current = states.get(el);
73
+ if (!current?.options.enabled) return;
74
+ if (current.options.preventDefault) event.preventDefault();
75
+ if (current.options.stopPropagation) event.stopPropagation();
76
+ current.overCounter += 1;
77
+ setOver(el, true);
78
+ },
79
+ onDragOver(event) {
80
+ const current = states.get(el);
81
+ if (!current?.options.enabled) return;
82
+ if (current.options.preventDefault) event.preventDefault();
83
+ if (current.options.stopPropagation) event.stopPropagation();
84
+ if (event.dataTransfer) event.dataTransfer.dropEffect = "copy";
85
+ },
86
+ onDragLeave(event) {
87
+ const current = states.get(el);
88
+ if (!current?.options.enabled) return;
89
+ if (current.options.preventDefault) event.preventDefault();
90
+ if (current.options.stopPropagation) event.stopPropagation();
91
+ current.overCounter = Math.max(0, current.overCounter - 1);
92
+ if (current.overCounter === 0) setOver(el, false);
93
+ },
94
+ onDrop(event) {
95
+ const current = states.get(el);
96
+ if (!current?.options.enabled) return;
97
+ if (current.options.preventDefault) event.preventDefault();
98
+ if (current.options.stopPropagation) event.stopPropagation();
99
+ current.overCounter = 0;
100
+ setOver(el, false);
101
+ const dt = event.dataTransfer;
102
+ const files = dt?.files ? Array.prototype.slice.call(dt.files) : [];
103
+ if (!files.length) return;
104
+ (async () => {
105
+ try {
106
+ const { files: picked, issues } = await runFileValidators(files, current.options.validators ?? [], {
107
+ source: "drop",
108
+ multiple: current.options.multiple
109
+ });
110
+ if (issues.length > 0) {
111
+ current.options.onError?.(new FileValidationError(issues, picked));
112
+ return;
113
+ }
114
+ if (!picked.length) return;
115
+ await current.options.onFiles?.(picked, event);
116
+ } catch (error) {
117
+ current.options.onError?.(error);
118
+ }
119
+ })();
120
+ }
121
+ };
122
+ states.set(el, state);
123
+ el.dataset.grDropzone = "true";
124
+ el.addEventListener("dragenter", state.onDragEnter);
125
+ el.addEventListener("dragover", state.onDragOver);
126
+ el.addEventListener("dragleave", state.onDragLeave);
127
+ el.addEventListener("drop", state.onDrop);
128
+ }
129
+ function update(el, value) {
130
+ const state = states.get(el);
131
+ if (!state) {
132
+ bind(el, value);
133
+ return;
134
+ }
135
+ const prevOverClass = state.options.overClass;
136
+ const nextOptions = normalize(value);
137
+ state.options = nextOptions;
138
+ if (prevOverClass !== nextOptions.overClass) {
139
+ el.classList.remove(prevOverClass);
140
+ if (state.isOver) el.classList.add(nextOptions.overClass);
141
+ }
142
+ if (!nextOptions.enabled) {
143
+ state.overCounter = 0;
144
+ setOver(el, false);
145
+ }
146
+ }
147
+ /**
148
+ * `v-dropzone` — декларативная DnD-зона для файлов (перетаскивание + drop).
149
+ *
150
+ * Директива не делает загрузку сама — только нормализует события и отдаёт `File[]`.
151
+ */
152
+ var vDropzone = {
153
+ mounted(el, binding) {
154
+ bind(el, binding.value);
155
+ },
156
+ updated(el, binding) {
157
+ update(el, binding.value);
158
+ },
159
+ unmounted(el) {
160
+ unbind(el);
161
+ }
162
+ };
163
+ //#endregion
164
+ export { vDropzone };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropzone.js","names":[],"sources":["../../src/directives/dropzone.ts"],"sourcesContent":["import type { Directive } from 'vue'\n\nimport type { FileValidator } from '../fileValidation'\n\nimport { FileValidationError, runFileValidators } from '../fileValidation'\n\nexport type DropzoneOnFiles = (files: File[], event: DragEvent) => void | Promise<void>\n\nexport type DropzoneBindingValue =\n | DropzoneOnFiles\n | {\n onFiles: DropzoneOnFiles\n /** По умолчанию `true`. */\n enabled?: boolean\n /** По умолчанию `true`. */\n multiple?: boolean\n\n /** Валидаторы, которые будут запущены перед `onFiles`. */\n validators?: FileValidator[]\n /** По умолчанию `true` (предотвращаем дефолтное поведение браузера при drop). */\n preventDefault?: boolean\n /** По умолчанию `false`. */\n stopPropagation?: boolean\n /** Вызывается, если валидация файлов не прошла. */\n onError?: (error: unknown) => void\n /** Вызывается при изменении состояния drag-over. */\n onStateChange?: (state: { isOver: boolean }) => void\n /** CSS-класс, который навешивается на элемент, пока курсор с файлами над зоной. */\n overClass?: string\n }\n\ntype NormalizedOptions = {\n enabled: boolean\n multiple: boolean\n validators: FileValidator[] | undefined\n preventDefault: boolean\n stopPropagation: boolean\n onFiles: DropzoneOnFiles | undefined\n onError: ((error: unknown) => void) | undefined\n onStateChange: ((state: { isOver: boolean }) => void) | undefined\n overClass: string\n}\n\nfunction normalize(value: DropzoneBindingValue | undefined): NormalizedOptions {\n if (typeof value === 'function') {\n return {\n enabled: true,\n multiple: true,\n validators: undefined,\n preventDefault: true,\n stopPropagation: false,\n onFiles: value,\n onError: undefined,\n onStateChange: undefined,\n overClass: 'ds-dropzone--over',\n }\n }\n\n if (value && typeof value === 'object') {\n return {\n enabled: value.enabled ?? true,\n multiple: value.multiple ?? true,\n validators: value.validators,\n preventDefault: value.preventDefault ?? true,\n stopPropagation: value.stopPropagation ?? false,\n onFiles: value.onFiles,\n onError: value.onError,\n onStateChange: value.onStateChange,\n overClass: value.overClass ?? 'ds-dropzone--over',\n }\n }\n\n return {\n enabled: false,\n multiple: true,\n validators: undefined,\n preventDefault: true,\n stopPropagation: false,\n onFiles: undefined,\n onError: undefined,\n onStateChange: undefined,\n overClass: 'ds-dropzone--over',\n }\n}\n\ntype InternalState = {\n options: NormalizedOptions\n overCounter: number\n isOver: boolean\n onDragEnter: (event: DragEvent) => void\n onDragOver: (event: DragEvent) => void\n onDragLeave: (event: DragEvent) => void\n onDrop: (event: DragEvent) => void\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction setOver(el: HTMLElement, next: boolean) {\n const state = states.get(el)\n if (!state) return\n\n // `state.isOver` может рассинхронизироваться с DOM (например, при обновлениях\n // компонента/директивы во время drag-over). Поэтому DOM-состояние всегда\n // приводим к `next`, а коллбек вызываем только при фактическом изменении.\n const wasDomOver = el.dataset.grDropzoneOver === 'true'\n const prev = state.isOver\n\n state.isOver = next\n\n if (next) {\n el.classList.add(state.options.overClass)\n el.dataset.grDropzoneOver = 'true'\n } else {\n el.classList.remove(state.options.overClass)\n delete el.dataset.grDropzoneOver\n }\n\n if (prev !== next || wasDomOver !== next) {\n state.options.onStateChange?.({ isOver: next })\n }\n}\n\nfunction unbind(el: HTMLElement) {\n const state = states.get(el)\n if (!state) return\n\n // Гарантированно очищаем визуальное состояние и счётчики.\n // Это важно, если директива обновлялась/перебиндилась во время DnD.\n state.overCounter = 0\n setOver(el, false)\n\n delete el.dataset.grDropzone\n\n el.removeEventListener('dragenter', state.onDragEnter)\n el.removeEventListener('dragover', state.onDragOver)\n el.removeEventListener('dragleave', state.onDragLeave)\n el.removeEventListener('drop', state.onDrop)\n\n states.delete(el)\n}\n\nfunction bind(el: HTMLElement, value: DropzoneBindingValue | undefined) {\n const options = normalize(value)\n\n const state: InternalState = {\n options,\n overCounter: 0,\n isOver: false,\n onDragEnter(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n current.overCounter += 1\n setOver(el, true)\n },\n onDragOver(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy'\n },\n onDragLeave(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n current.overCounter = Math.max(0, current.overCounter - 1)\n if (current.overCounter === 0) setOver(el, false)\n },\n onDrop(event) {\n const current = states.get(el)\n if (!current?.options.enabled) return\n\n if (current.options.preventDefault) event.preventDefault()\n if (current.options.stopPropagation) event.stopPropagation()\n\n current.overCounter = 0\n setOver(el, false)\n\n const dt = event.dataTransfer\n const files = dt?.files ? Array.prototype.slice.call(dt.files) as File[] : []\n if (!files.length) return\n\n void (async () => {\n try {\n const validators = current.options.validators ?? []\n\n const { files: picked, issues } = await runFileValidators(files, validators, {\n source: 'drop',\n multiple: current.options.multiple,\n })\n\n if (issues.length > 0) {\n current.options.onError?.(new FileValidationError(issues, picked))\n return\n }\n\n if (!picked.length) return\n await current.options.onFiles?.(picked, event)\n } catch (error) {\n current.options.onError?.(error)\n }\n })()\n },\n }\n\n states.set(el, state)\n\n // Base marker.\n el.dataset.grDropzone = 'true'\n\n el.addEventListener('dragenter', state.onDragEnter)\n el.addEventListener('dragover', state.onDragOver)\n el.addEventListener('dragleave', state.onDragLeave)\n el.addEventListener('drop', state.onDrop)\n}\n\nfunction update(el: HTMLElement, value: DropzoneBindingValue | undefined) {\n const state = states.get(el)\n if (!state) {\n bind(el, value)\n return\n }\n\n const prevOverClass = state.options.overClass\n const nextOptions = normalize(value)\n\n state.options = nextOptions\n\n // Если поменялся `overClass`, синхронизируем DOM.\n if (prevOverClass !== nextOptions.overClass) {\n el.classList.remove(prevOverClass)\n if (state.isOver) el.classList.add(nextOptions.overClass)\n }\n\n // Если директива выключена — сбрасываем состояние.\n if (!nextOptions.enabled) {\n state.overCounter = 0\n setOver(el, false)\n }\n}\n\n/**\n * `v-dropzone` — декларативная DnD-зона для файлов (перетаскивание + drop).\n *\n * Директива не делает загрузку сама — только нормализует события и отдаёт `File[]`.\n */\nexport const vDropzone: Directive<HTMLElement, DropzoneBindingValue> = {\n mounted(el, binding) {\n bind(el, binding.value)\n },\n updated(el, binding) {\n update(el, binding.value)\n },\n unmounted(el) {\n unbind(el)\n },\n}\n"],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ //#region src/directives/hotkey.ts
2
+ var states = /* @__PURE__ */ new WeakMap();
3
+ function isEditableTarget(target) {
4
+ if (!(target instanceof HTMLElement)) return false;
5
+ if (target.isContentEditable) return true;
6
+ const tag = target.tagName;
7
+ return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT";
8
+ }
9
+ function normalizeBinding(value) {
10
+ if (!value) return {
11
+ enabled: false,
12
+ handlers: {}
13
+ };
14
+ if ("handlers" in value) {
15
+ const v = value;
16
+ return {
17
+ enabled: v.enabled ?? true,
18
+ handlers: v.handlers ?? {}
19
+ };
20
+ }
21
+ return {
22
+ enabled: true,
23
+ handlers: value
24
+ };
25
+ }
26
+ function normalizeKeyToken(token) {
27
+ const t = token.trim().toLowerCase();
28
+ if (t === "esc") return "Escape";
29
+ if (t === "escape") return "Escape";
30
+ if (t === "space") return " ";
31
+ if (t.length === 1) return t;
32
+ return token.trim();
33
+ }
34
+ function parseHotkeys(map) {
35
+ const parsed = [];
36
+ for (const [combo, entry] of Object.entries(map)) {
37
+ const parts = combo.split("+").map((p) => p.trim()).filter(Boolean);
38
+ if (!parts.length) continue;
39
+ let ctrl = false;
40
+ let meta = false;
41
+ let alt = false;
42
+ let shift = false;
43
+ const keyToken = parts.at(-1);
44
+ if (!keyToken) continue;
45
+ for (const p of parts.slice(0, -1)) {
46
+ const t = p.toLowerCase();
47
+ if (t === "ctrl" || t === "control") ctrl = true;
48
+ else if (t === "meta" || t === "cmd" || t === "command" || t === "⌘") meta = true;
49
+ else if (t === "alt" || t === "option") alt = true;
50
+ else if (t === "shift") shift = true;
51
+ }
52
+ const key = normalizeKeyToken(keyToken);
53
+ parsed.push({
54
+ original: combo,
55
+ key,
56
+ ctrl,
57
+ meta,
58
+ alt,
59
+ shift,
60
+ entry
61
+ });
62
+ }
63
+ return parsed;
64
+ }
65
+ function matchKey(expected, eventKey) {
66
+ if (expected === " ") return eventKey === " " || eventKey === "Spacebar";
67
+ if (expected.length === 1) return expected.toLowerCase() === eventKey.toLowerCase();
68
+ return expected === eventKey;
69
+ }
70
+ function resolveEntry(entry) {
71
+ if (typeof entry === "function") return {
72
+ handler: entry,
73
+ preventDefault: void 0,
74
+ stopPropagation: false,
75
+ allowInEditable: false
76
+ };
77
+ return {
78
+ handler: entry.handler,
79
+ preventDefault: entry.preventDefault,
80
+ stopPropagation: entry.stopPropagation ?? false,
81
+ allowInEditable: entry.allowInEditable ?? false
82
+ };
83
+ }
84
+ /**
85
+ * `v-hotkey` — горячие клавиши на компонент/страницу.
86
+ *
87
+ * Пример:
88
+ * ```vue
89
+ * <div v-hotkey="{ 'Escape': close, 'Ctrl+K': openSearch }" />
90
+ * ```
91
+ */
92
+ var vHotkey = {
93
+ mounted(el, binding) {
94
+ if (typeof window === "undefined") return;
95
+ const { enabled, handlers } = normalizeBinding(binding.value);
96
+ const state = {
97
+ enabled,
98
+ hotkeys: parseHotkeys(handlers),
99
+ listener: (event) => {
100
+ const current = states.get(el);
101
+ if (!current?.enabled) return;
102
+ if (!el.isConnected) return;
103
+ const editable = isEditableTarget(event.target);
104
+ for (const hk of current.hotkeys) {
105
+ if (hk.ctrl !== event.ctrlKey) continue;
106
+ if (hk.meta !== event.metaKey) continue;
107
+ if (hk.alt !== event.altKey) continue;
108
+ if (hk.shift !== event.shiftKey) continue;
109
+ if (!matchKey(hk.key, event.key)) continue;
110
+ const entry = resolveEntry(hk.entry);
111
+ const hasModifier = hk.ctrl || hk.meta || hk.alt || hk.shift;
112
+ if (editable && !entry.allowInEditable && !hasModifier && hk.key !== "Escape") continue;
113
+ if (entry.preventDefault ?? (hk.ctrl || hk.meta || hk.alt)) event.preventDefault();
114
+ if (entry.stopPropagation) event.stopPropagation();
115
+ entry.handler(event);
116
+ return;
117
+ }
118
+ }
119
+ };
120
+ states.set(el, state);
121
+ window.addEventListener("keydown", state.listener);
122
+ },
123
+ updated(el, binding) {
124
+ const state = states.get(el);
125
+ if (!state) return;
126
+ const next = normalizeBinding(binding.value);
127
+ state.enabled = next.enabled;
128
+ state.hotkeys = parseHotkeys(next.handlers);
129
+ },
130
+ unmounted(el) {
131
+ const state = states.get(el);
132
+ if (!state) return;
133
+ window.removeEventListener("keydown", state.listener);
134
+ states.delete(el);
135
+ }
136
+ };
137
+ //#endregion
138
+ export { vHotkey };
@@ -0,0 +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,2 +1,7 @@
1
- import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/directives-Dr5NPOT8.js";
2
- export { o as createLoading, a as vAutofocus, r as vAutosize, e as vClickOutside, t as vDropzone, i as vHotkey, n as vLoading };
1
+ import { vAutofocus } from "./autofocus.js";
2
+ import { vAutosize } from "./autosize.js";
3
+ import { vClickOutside } from "./clickOutside.js";
4
+ import { vDropzone } from "./dropzone.js";
5
+ import { vHotkey } from "./hotkey.js";
6
+ import { createLoading, vLoading } from "./loading.js";
7
+ export { createLoading, vAutofocus, vAutosize, vClickOutside, vDropzone, vHotkey, vLoading };
@@ -0,0 +1,163 @@
1
+ import { t as GrLoading_default } from "../components/GrLoading/chunks/GrLoading-C3QZKwE-.js";
2
+ import { createVNode, render } from "vue";
3
+ //#region src/directives/loading.ts
4
+ function isHTMLElement(value) {
5
+ return typeof value === "object" && value !== null && value.nodeType === 1;
6
+ }
7
+ function resolveTarget(input, fallback) {
8
+ if (!input) return fallback;
9
+ if (typeof input === "string") {
10
+ const root = fallback.getRootNode?.() ?? document;
11
+ const foundInRoot = typeof root.querySelector === "function" ? root.querySelector(input) : null;
12
+ if (isHTMLElement(foundInRoot)) return foundInRoot;
13
+ const foundInDocument = document.querySelector(input);
14
+ if (isHTMLElement(foundInDocument)) return foundInDocument;
15
+ return fallback;
16
+ }
17
+ if (isHTMLElement(input)) return input;
18
+ return fallback;
19
+ }
20
+ function resolveFullscreen(options, target) {
21
+ if (options.fullscreen != null) return options.fullscreen;
22
+ return target === document.body;
23
+ }
24
+ function ensurePositionedContainer(target, fullscreen) {
25
+ if (fullscreen) return () => {};
26
+ const prevInline = target.style.position;
27
+ const computed = window.getComputedStyle(target);
28
+ if (computed.position === "static" || !computed.position) {
29
+ target.style.position = "relative";
30
+ return () => {
31
+ target.style.position = prevInline;
32
+ };
33
+ }
34
+ return () => {};
35
+ }
36
+ function parseBinding(value) {
37
+ if (value === true || value === false) return {
38
+ loading: value,
39
+ options: {}
40
+ };
41
+ if (value && typeof value === "object") {
42
+ const { loading, ...rest } = value;
43
+ return {
44
+ loading: loading ?? true,
45
+ options: rest
46
+ };
47
+ }
48
+ return {
49
+ loading: false,
50
+ options: {}
51
+ };
52
+ }
53
+ var STATE_KEY = Symbol("grLoadingState");
54
+ function getState(el) {
55
+ return el[STATE_KEY] ??= {};
56
+ }
57
+ function createLoading(options = {}, fallbackTarget) {
58
+ const initialTarget = resolveTarget(options.target, fallbackTarget ?? document.body);
59
+ const fullscreen = resolveFullscreen(options, initialTarget);
60
+ const target = fullscreen ? document.body : initialTarget;
61
+ const appContext = options.appContext;
62
+ const restorePosition = ensurePositionedContainer(target, fullscreen);
63
+ const mountEl = document.createElement("div");
64
+ mountEl.setAttribute("data-ds-loading-host", "");
65
+ target.appendChild(mountEl);
66
+ target.setAttribute("aria-busy", "true");
67
+ let current = { ...options };
68
+ let disposed = false;
69
+ function doRender() {
70
+ if (disposed) return;
71
+ const vnode = createVNode(GrLoading_default, {
72
+ text: current.text,
73
+ spinner: current.spinner,
74
+ spinnerClass: current.spinnerClass,
75
+ animated: current.animated,
76
+ background: current.background,
77
+ customClass: current.customClass,
78
+ zIndex: current.zIndex,
79
+ fullscreen
80
+ });
81
+ if (appContext) vnode.appContext = appContext;
82
+ render(vnode, mountEl);
83
+ }
84
+ function close() {
85
+ if (disposed) return;
86
+ disposed = true;
87
+ render(null, mountEl);
88
+ mountEl.remove();
89
+ restorePosition();
90
+ target.removeAttribute("aria-busy");
91
+ }
92
+ function setOptions(next) {
93
+ current = {
94
+ ...current,
95
+ ...next
96
+ };
97
+ doRender();
98
+ }
99
+ function setText(text) {
100
+ setOptions({ text });
101
+ }
102
+ doRender();
103
+ return {
104
+ close,
105
+ setOptions,
106
+ setText,
107
+ get target() {
108
+ return target;
109
+ }
110
+ };
111
+ }
112
+ function sync(el, value, appContext) {
113
+ const { loading, options } = parseBinding(value);
114
+ const state = getState(el);
115
+ if (!loading) {
116
+ state.controller?.close();
117
+ state.controller = void 0;
118
+ state.target = void 0;
119
+ state.fullscreen = void 0;
120
+ return;
121
+ }
122
+ const target = resolveTarget(options.target, el);
123
+ const fullscreen = resolveFullscreen(options, target);
124
+ const normalizedTarget = fullscreen ? document.body : target;
125
+ if (!state.controller || state.target !== normalizedTarget || state.fullscreen !== fullscreen) {
126
+ state.controller?.close();
127
+ state.controller = createLoading({
128
+ ...options,
129
+ fullscreen,
130
+ target: normalizedTarget,
131
+ appContext
132
+ }, el);
133
+ state.target = normalizedTarget;
134
+ state.fullscreen = fullscreen;
135
+ return;
136
+ }
137
+ const controller = state.controller;
138
+ if (!controller) return;
139
+ controller.setOptions({
140
+ ...options,
141
+ fullscreen,
142
+ target: normalizedTarget
143
+ });
144
+ }
145
+ var vLoading = {
146
+ mounted(el, binding) {
147
+ const appContext = binding.instance?.$?.appContext;
148
+ sync(el, binding.value, appContext);
149
+ },
150
+ updated(el, binding) {
151
+ const appContext = binding.instance?.$?.appContext;
152
+ sync(el, binding.value, appContext);
153
+ },
154
+ unmounted(el) {
155
+ const state = getState(el);
156
+ state.controller?.close();
157
+ state.controller = void 0;
158
+ state.target = void 0;
159
+ state.fullscreen = void 0;
160
+ }
161
+ };
162
+ //#endregion
163
+ export { createLoading, vLoading };
@@ -0,0 +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 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 mountEl = document.createElement('div')\n mountEl.setAttribute('data-ds-loading-host', '')\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 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 e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../chunks/fileValidation-LFD-vwil.js";
2
- export { l as FileValidationError, a as acceptValidator, e as allowedExtensionsValidator, n as allowedMimeTypesValidator, s as matchAccept, o as maxFileSizeBytesValidator, i as maxSizeMbValidator, c as maxTotalSizeBytesValidator, t as normalizeFiles, r as runFileValidators };
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-CwJA8Vmn.js";
2
+ export { FileValidationError, acceptValidator, allowedExtensionsValidator, allowedMimeTypesValidator, matchAccept, maxFileSizeBytesValidator, maxSizeMbValidator, maxTotalSizeBytesValidator, normalizeFiles, runFileValidators };
@@ -1,23 +1,32 @@
1
- import { n as e } from "./chunks/safelist-CLcTRYB-.js";
2
- import { n as t } from "./chunks/config-BG5_FuZ-.js";
3
- import { a as n, i as r, n as i, r as a, t as o } from "./chunks/shared-BqUqjuxn.js";
4
- import { defineGranularComponent as s } from "@feugene/unocss-preset-granular/contract";
5
- import { tokenDefinitionsFromCssSync as c } from "@feugene/unocss-preset-granular/node";
1
+ import { n as grButtonSafelist } from "./chunks/safelist-BY7z8fOl.js";
2
+ import { n as grProgressBarSafelist } from "./chunks/config-Da90XGsi.js";
3
+ import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-Cu5QkNmt.js";
4
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
5
+ import { tokenDefinitionsFromCssSync } from "@feugene/unocss-preset-granular/node";
6
6
  //#region src/components/GrButton/config.node.ts
7
- var l = new URL("data:text/css;base64,OnJvb3QgewogIC0tZHMtYnV0dG9uLXByaW1hcnktYmc6IHZhcigtLXByaW1hcnkpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctaG92ZXI6IHZhcigtLXByaW1hcnktaG92ZXIpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiB2YXIoLS1wcmltYXJ5LWFjdGl2ZSk7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1mZzogdmFyKC0tcHJpbWFyeS1mZyk7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1zb2Z0LWJnOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMTQlLCB2YXIoLS1iZykpOwogIC0tZHMtYnV0dG9uLXByaW1hcnktc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXByaW1hcnkpIDE4JSwgdmFyKC0tYmcpKTsKICAtLWRzLWJ1dHRvbi1wcmltYXJ5LXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgMjQlLCB2YXIoLS1iZykpOwoKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWJnOiAjMDQ3ODU3OwogIC0tZHMtYnV0dG9uLXN1Y2Nlc3MtYmctaG92ZXI6ICMwMzZjNGQ7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1iZy1hY3RpdmU6ICMwMjVmNDQ7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1mZzogdmFyKC0tZHMtc3VjY2Vzcy1mZyk7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnOiB2YXIoLS1kcy1zdWNjZXNzLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1zdWNjZXNzKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLXN1Y2Nlc3MpIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1kcy1idXR0b24td2FybmluZy1iZzogI2MyNDEwYzsKICAtLWRzLWJ1dHRvbi13YXJuaW5nLWJnLWhvdmVyOiAjYjUzYjBhOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctYmctYWN0aXZlOiAjOWYzMzA3OwogIC0tZHMtYnV0dG9uLXdhcm5pbmctZmc6IHZhcigtLWRzLXdhcm5pbmctZmcpOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctc29mdC1iZzogdmFyKC0tZHMtd2FybmluZy1saWdodCk7CiAgLS1kcy1idXR0b24td2FybmluZy1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtd2FybmluZykgMjAlLCB2YXIoLS1iZykpOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy13YXJuaW5nKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWRhbmdlci1iZzogdmFyKC0tZHMtZGFuZ2VyKTsKICAtLWRzLWJ1dHRvbi1kYW5nZXItYmctaG92ZXI6IHZhcigtLWRzLWRhbmdlci1ob3Zlcik7CiAgLS1kcy1idXR0b24tZGFuZ2VyLWJnLWFjdGl2ZTogdmFyKC0tZHMtZGFuZ2VyLWFjdGl2ZSk7CiAgLS1kcy1idXR0b24tZGFuZ2VyLWZnOiB2YXIoLS1kcy1kYW5nZXItZmcpOwogIC0tZHMtYnV0dG9uLWRhbmdlci1zb2Z0LWJnOiB2YXIoLS1kcy1kYW5nZXItbGlnaHQpOwogIC0tZHMtYnV0dG9uLWRhbmdlci1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtZGFuZ2VyKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tZGFuZ2VyLXNvZnQtYmctYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtZGFuZ2VyKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWluZm8tYmc6IHZhcigtLWRzLWluZm8pOwogIC0tZHMtYnV0dG9uLWluZm8tYmctaG92ZXI6IHZhcigtLWRzLWluZm8taG92ZXIpOwogIC0tZHMtYnV0dG9uLWluZm8tYmctYWN0aXZlOiB2YXIoLS1kcy1pbmZvLWFjdGl2ZSk7CiAgLS1kcy1idXR0b24taW5mby1mZzogdmFyKC0tZHMtaW5mby1mZyk7CiAgLS1kcy1idXR0b24taW5mby1zb2Z0LWJnOiB2YXIoLS1kcy1pbmZvLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1pbmZvLXNvZnQtYmctaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1pbmZvKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24taW5mby1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLWluZm8pIDI2JSwgdmFyKC0tYmcpKTsKCiAgLS1kcy1idXR0b24tc2xhdGUtYmc6IHZhcigtLWRzLXNsYXRlKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1iZy1ob3ZlcjogdmFyKC0tZHMtc2xhdGUtaG92ZXIpOwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogdmFyKC0tZHMtc2xhdGUtYWN0aXZlKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1mZzogdmFyKC0tZHMtc2xhdGUtZmcpOwogIC0tZHMtYnV0dG9uLXNsYXRlLXNvZnQtYmc6IHZhcigtLWRzLXNsYXRlLWxpZ2h0KTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZHMtc2xhdGUpIDIwJSwgdmFyKC0tYmcpKTsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1zb2Z0LWJnLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLXNsYXRlKSAyNiUsIHZhcigtLWJnKSk7CgogIC0tZHMtYnV0dG9uLWF6dXJlLWJnOiAjMDM2OWExOwogIC0tZHMtYnV0dG9uLWF6dXJlLWJnLWhvdmVyOiAjMDc1OTg1OwogIC0tZHMtYnV0dG9uLWF6dXJlLWJnLWFjdGl2ZTogIzBjNGE2ZTsKICAtLWRzLWJ1dHRvbi1henVyZS1mZzogI2ZmZmZmZjsKICAtLWRzLWJ1dHRvbi1henVyZS1zb2Z0LWJnOiB2YXIoLS1kcy1henVyZS1saWdodCk7CiAgLS1kcy1idXR0b24tYXp1cmUtc29mdC1iZy1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRzLWF6dXJlKSAyMCUsIHZhcigtLWJnKSk7CiAgLS1kcy1idXR0b24tYXp1cmUtc29mdC1iZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kcy1henVyZSkgMjYlLCB2YXIoLS1iZykpOwp9", "" + import.meta.url).href, u = new URL("data:text/css;base64,Ci50aGVtZS1kYXJrLAouZGFyaywKW2RhdGEtdGhlbWU9J2RhcmsnXSB7CiAgLS1kcy1idXR0b24tcHJpbWFyeS1iZzogIzU5NWNlNjsKICAtLWRzLWJ1dHRvbi1wcmltYXJ5LWJnLWhvdmVyOiAjNTA1M2RkOwogIC0tZHMtYnV0dG9uLXByaW1hcnktYmctYWN0aXZlOiAjNDc0YWNmOwogIC0tZHMtYnV0dG9uLXByaW1hcnktZmc6ICNmZmZmZmY7CgogIC0tZHMtYnV0dG9uLXN1Y2Nlc3MtYmc6ICMwNDc4NTc7CiAgLS1kcy1idXR0b24tc3VjY2Vzcy1iZy1ob3ZlcjogIzAzNmM0ZDsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWJnLWFjdGl2ZTogIzAyNWY0NDsKICAtLWRzLWJ1dHRvbi1zdWNjZXNzLWZnOiAjZjhmYWZjOwoKICAtLWRzLWJ1dHRvbi13YXJuaW5nLWJnOiAjYzI0MTBjOwogIC0tZHMtYnV0dG9uLXdhcm5pbmctYmctaG92ZXI6ICNiNTNiMGE7CiAgLS1kcy1idXR0b24td2FybmluZy1iZy1hY3RpdmU6ICM5ZjMzMDc7CiAgLS1kcy1idXR0b24td2FybmluZy1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24tZGFuZ2VyLWJnOiAjYjkxYzFjOwogIC0tZHMtYnV0dG9uLWRhbmdlci1iZy1ob3ZlcjogI2E5MTkxOTsKICAtLWRzLWJ1dHRvbi1kYW5nZXItYmctYWN0aXZlOiAjOTMxNTE1OwogIC0tZHMtYnV0dG9uLWRhbmdlci1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24taW5mby1iZzogIzQzMzhjYTsKICAtLWRzLWJ1dHRvbi1pbmZvLWJnLWhvdmVyOiAjM2QzM2JiOwogIC0tZHMtYnV0dG9uLWluZm8tYmctYWN0aXZlOiAjMzYyZGE4OwogIC0tZHMtYnV0dG9uLWluZm8tZmc6ICNmOGZhZmM7CgogIC0tZHMtYnV0dG9uLXNsYXRlLWJnOiAjNDc1NTY5OwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWhvdmVyOiAjMzM0MTU1OwogIC0tZHMtYnV0dG9uLXNsYXRlLWJnLWFjdGl2ZTogIzFlMjkzYjsKICAtLWRzLWJ1dHRvbi1zbGF0ZS1mZzogI2Y4ZmFmYzsKCiAgLS1kcy1idXR0b24tYXp1cmUtYmc6ICMwMzY5YTE7CiAgLS1kcy1idXR0b24tYXp1cmUtYmctaG92ZXI6ICMwNzU5ODU7CiAgLS1kcy1idXR0b24tYXp1cmUtYmctYWN0aXZlOiAjMGM0YTZlOwogIC0tZHMtYnV0dG9uLWF6dXJlLWZnOiAjZjhmYWZjOwp9", "" + import.meta.url).href, d = s(import.meta.url, {
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;
9
+ var grButtonConfig = defineGranularComponent(import.meta.url, {
8
10
  name: "GrButton",
9
- safelist: e,
11
+ safelist: grButtonSafelist,
10
12
  tokenDefinitions: {
11
- light: c(l, { selector: ":root" }),
12
- dark: c(u, { as: ".dark, [data-theme=\"dark\"]" })
13
+ light: tokenDefinitionsFromCssSync(lightCssUrl$1, { selector: ":root" }),
14
+ dark: tokenDefinitionsFromCssSync(darkCssUrl$1, { as: ".dark, [data-theme=\"dark\"]" })
13
15
  }
14
- }), f = new URL("data:text/css;base64,OnJvb3QgewogIC0tcGItYmc6IHZhcigtLXByaW1hcnkpOwogIC0tcGItbmV1dHJhbC1iZzogdmFyKC0tc2Vjb25kYXJ5KTsKICAtLXBiLXN1Y2Nlc3MtYmc6IHZhcigtLWRzLXN1Y2Nlc3MpOwogIC0tcGItd2FybmluZy1iZzogdmFyKC0tZHMtd2FybmluZyk7CiAgLS1wYi1kYW5nZXItYmc6IHZhcigtLWRzLWRhbmdlcik7CiAgLS1wYi1pbmZvLWJnOiB2YXIoLS1kcy1pbmZvKTsKICAtLXBiLXNsYXRlLWJnOiB2YXIoLS1kcy1zbGF0ZSk7CiAgLS1wYi1henVyZS1iZzogdmFyKC0tZHMtYXp1cmUpOwp9Cg==", "" + import.meta.url).href, p = new URL("data:text/css;base64,LnRoZW1lLWRhcmssCi5kYXJrLApbZGF0YS10aGVtZT0nZGFyayddIHsKICAtLXBiLWJnOiB2YXIoLS1wcmltYXJ5KTsKICAtLXBiLW5ldXRyYWwtYmc6IHZhcigtLXNlY29uZGFyeSk7CiAgLS1wYi1zdWNjZXNzLWJnOiB2YXIoLS1kcy1zdWNjZXNzKTsKICAtLXBiLXdhcm5pbmctYmc6IHZhcigtLWRzLXdhcm5pbmcpOwogIC0tcGItZGFuZ2VyLWJnOiB2YXIoLS1kcy1kYW5nZXIpOwogIC0tcGItaW5mby1iZzogdmFyKC0tZHMtaW5mbyk7CiAgLS1wYi1zbGF0ZS1iZzogdmFyKC0tZHMtc2xhdGUpOwogIC0tcGItYXp1cmUtYmc6IHZhcigtLWRzLWF6dXJlKTsKfQ==", "" + import.meta.url).href, m = i([d, s(import.meta.url, {
16
+ });
17
+ //#endregion
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;
21
+ //#endregion
22
+ //#region src/granular-provider/node.ts
23
+ var granularityProvider = createGranularityProvider([grButtonConfig, defineGranularComponent(import.meta.url, {
15
24
  name: "GrProgressBar",
16
- safelist: t,
25
+ safelist: grProgressBarSafelist,
17
26
  tokenDefinitions: {
18
- light: c(f, { selector: ":root" }),
19
- dark: c(p, { as: ".dark, [data-theme=\"dark\"]" })
27
+ light: tokenDefinitionsFromCssSync(lightCssUrl, { selector: ":root" }),
28
+ dark: tokenDefinitionsFromCssSync(darkCssUrl, { as: ".dark, [data-theme=\"dark\"]" })
20
29
  }
21
30
  })]);
22
31
  //#endregion
23
- export { o as GRANULARITY_PROVIDER_ID, i as createGranularityProvider, m as default, m as granularityProvider, a as granularityComponentConfigs, r as granularityDefaultThemes, n as granularityThemeNames };
32
+ export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
@@ -0,0 +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,5 +1,5 @@
1
- import { a as e, i as t, n, r, t as i } from "./chunks/shared-BqUqjuxn.js";
1
+ import { a as granularityThemeNames, i as granularityDefaultThemes, n as createGranularityProvider, r as granularityComponentConfigs, t as GRANULARITY_PROVIDER_ID } from "./chunks/shared-Cu5QkNmt.js";
2
2
  //#region src/granular-provider/index.ts
3
- var a = n();
3
+ var granularityProvider = createGranularityProvider();
4
4
  //#endregion
5
- export { i as GRANULARITY_PROVIDER_ID, n as createGranularityProvider, a as default, a as granularityProvider, r as granularityComponentConfigs, t as granularityDefaultThemes, e as granularityThemeNames };
5
+ export { GRANULARITY_PROVIDER_ID, createGranularityProvider, granularityProvider as default, granularityProvider, granularityComponentConfigs, granularityDefaultThemes, granularityThemeNames };
@@ -0,0 +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"}