@feugene/granularity 0.4.1 → 0.4.3

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 (259) hide show
  1. package/dist/chunks/{adapter-C7fKeUa4.js → adapter-K6zZTzBi.js} +0 -2
  2. package/dist/chunks/{adapter-C7fKeUa4.js.map → adapter-K6zZTzBi.js.map} +1 -1
  3. package/dist/chunks/arrow-up-DNXrMoAI.js +0 -2
  4. package/dist/chunks/classTokens-BPeBXNzu.js +0 -2
  5. package/dist/chunks/{config-BUGfFjmC.js → config-1I95Zy4V.js} +0 -2
  6. package/dist/chunks/{config-BUGfFjmC.js.map → config-1I95Zy4V.js.map} +1 -1
  7. package/dist/chunks/config-2wgwWaAB.js +0 -2
  8. package/dist/chunks/{config-DBYCntwl.js → config-BA0BWYzs.js} +0 -2
  9. package/dist/chunks/{config-DBYCntwl.js.map → config-BA0BWYzs.js.map} +1 -1
  10. package/dist/chunks/{config-dD6Po-Cq.js → config-BCPyma1I.js} +0 -2
  11. package/dist/chunks/{config-dD6Po-Cq.js.map → config-BCPyma1I.js.map} +1 -1
  12. package/dist/chunks/{config-CYPU3ztl.js → config-BDlh6iNz.js} +1 -3
  13. package/dist/chunks/{config-CYPU3ztl.js.map → config-BDlh6iNz.js.map} +1 -1
  14. package/dist/chunks/config-BKRmlivc.js +0 -2
  15. package/dist/chunks/{config-CcmeMlic.js → config-BN-B2K4r.js} +1 -3
  16. package/dist/chunks/{config-CcmeMlic.js.map → config-BN-B2K4r.js.map} +1 -1
  17. package/dist/chunks/{config-C0b_3LJV.js → config-BNOf_qjD.js} +0 -2
  18. package/dist/chunks/{config-C0b_3LJV.js.map → config-BNOf_qjD.js.map} +1 -1
  19. package/dist/chunks/config-BaMO9dQh.js +0 -2
  20. package/dist/chunks/config-Bv2G0OU6.js +0 -2
  21. package/dist/chunks/{config-CxCAfXZ1.js → config-BvuQUBtZ.js} +0 -2
  22. package/dist/chunks/{config-CxCAfXZ1.js.map → config-BvuQUBtZ.js.map} +1 -1
  23. package/dist/chunks/config-BzZGpWsj.js +0 -2
  24. package/dist/chunks/{config-KGTIAFD92.js → config-C0j836dC.js} +0 -2
  25. package/dist/chunks/config-C0j836dC.js.map +1 -0
  26. package/dist/chunks/{config-D7iuXJbl.js → config-C2iI7_QX.js} +0 -2
  27. package/dist/chunks/{config-D7iuXJbl.js.map → config-C2iI7_QX.js.map} +1 -1
  28. package/dist/chunks/{config-BcFOkUhh.js → config-C4AlNm912.js} +1 -3
  29. package/dist/chunks/config-C4AlNm912.js.map +1 -0
  30. package/dist/chunks/{config-rFwazRKi.js → config-C5SJXHQ4.js} +0 -2
  31. package/dist/chunks/{config-rFwazRKi.js.map → config-C5SJXHQ4.js.map} +1 -1
  32. package/dist/chunks/config-C6SBJxcH.js +0 -2
  33. package/dist/chunks/{config-BzQ4S4Hb.js → config-CByfsV-z2.js} +0 -2
  34. package/dist/chunks/config-CByfsV-z2.js.map +1 -0
  35. package/dist/chunks/{config-rxFL-6yF2.js → config-CM7nbATU2.js} +0 -2
  36. package/dist/chunks/{config-rxFL-6yF2.js.map → config-CM7nbATU2.js.map} +1 -1
  37. package/dist/chunks/config-CMZE2fu0.js +0 -2
  38. package/dist/chunks/config-CU_CBd0k.js +0 -2
  39. package/dist/chunks/{config-BhvNm4Pp.js → config-CUgvsjZx.js} +0 -2
  40. package/dist/chunks/{config-BhvNm4Pp.js.map → config-CUgvsjZx.js.map} +1 -1
  41. package/dist/chunks/{config-DxqMXzNV2.js → config-CWvHiaqr2.js} +0 -2
  42. package/dist/chunks/{config-DxqMXzNV2.js.map → config-CWvHiaqr2.js.map} +1 -1
  43. package/dist/chunks/{config-CdAx6ify2.js → config-CgAY2WP9.js} +0 -2
  44. package/dist/chunks/config-CgAY2WP9.js.map +1 -0
  45. package/dist/chunks/{config-D1gSaT52.js → config-Cgc-D1K4.js} +0 -2
  46. package/dist/chunks/{config-D1gSaT52.js.map → config-Cgc-D1K4.js.map} +1 -1
  47. package/dist/chunks/{config-cn6knwud.js → config-D19pyP4D.js} +0 -2
  48. package/dist/chunks/{config-cn6knwud.js.map → config-D19pyP4D.js.map} +1 -1
  49. package/dist/chunks/{config-ug8O8epd.js → config-DCQO6H6h.js} +0 -2
  50. package/dist/chunks/{config-ug8O8epd.js.map → config-DCQO6H6h.js.map} +1 -1
  51. package/dist/chunks/{config-BXffa3ta.js → config-DEv4m-ZP.js} +0 -2
  52. package/dist/chunks/{config-BXffa3ta.js.map → config-DEv4m-ZP.js.map} +1 -1
  53. package/dist/chunks/config-DFRYOcrP.js +0 -2
  54. package/dist/chunks/{config-DlLE49_I.js → config-DTpwUHgF.js} +0 -2
  55. package/dist/chunks/{config-DlLE49_I.js.map → config-DTpwUHgF.js.map} +1 -1
  56. package/dist/chunks/{config-C2JKq8-2.js → config-DUtUkSzc.js} +1 -2
  57. package/dist/chunks/config-DUtUkSzc.js.map +1 -0
  58. package/dist/chunks/config-DW_RqmUp.js +0 -2
  59. package/dist/chunks/{config-CJeyaUTp.js → config-Da90XGsi.js} +0 -2
  60. package/dist/chunks/{config-CJeyaUTp.js.map → config-Da90XGsi.js.map} +1 -1
  61. package/dist/chunks/{config-CJbjLC5X.js → config-DgRJlF00.js} +0 -2
  62. package/dist/chunks/{config-CJbjLC5X.js.map → config-DgRJlF00.js.map} +1 -1
  63. package/dist/chunks/config-Dkq0HeLe.js +0 -2
  64. package/dist/chunks/{config-DwB5-qdP2.js → config-DmI1IQvI2.js} +0 -2
  65. package/dist/chunks/{config-DwB5-qdP2.js.map → config-DmI1IQvI2.js.map} +1 -1
  66. package/dist/chunks/{config-BRU5PR8_.js → config-Dnu4VuO0.js} +0 -2
  67. package/dist/chunks/{config-BRU5PR8_.js.map → config-Dnu4VuO0.js.map} +1 -1
  68. package/dist/chunks/config-DxqpV-KM.js +0 -2
  69. package/dist/chunks/config-TyzU6gLf.js +0 -2
  70. package/dist/chunks/{config-Bv5Dok4j.js → config-XwI6t8cn.js} +0 -2
  71. package/dist/chunks/{config-Bv5Dok4j.js.map → config-XwI6t8cn.js.map} +1 -1
  72. package/dist/chunks/{config-DvTUDLT1.js → config-bpQYM5O-.js} +0 -2
  73. package/dist/chunks/{config-DvTUDLT1.js.map → config-bpQYM5O-.js.map} +1 -1
  74. package/dist/chunks/{config-BbtK511H.js → config-etXh7Bsr2.js} +0 -2
  75. package/dist/chunks/config-etXh7Bsr2.js.map +1 -0
  76. package/dist/chunks/{config-BhubOeci.js → config-fCcRwjIB.js} +0 -2
  77. package/dist/chunks/{config-BhubOeci.js.map → config-fCcRwjIB.js.map} +1 -1
  78. package/dist/chunks/{config-D7tRu8u3.js → config-nfOMJXVs.js} +0 -2
  79. package/dist/chunks/{config-D7tRu8u3.js.map → config-nfOMJXVs.js.map} +1 -1
  80. package/dist/chunks/{config-BcpRsZTe.js → config-qJXIIY1E.js} +0 -2
  81. package/dist/chunks/{config-BcpRsZTe.js.map → config-qJXIIY1E.js.map} +1 -1
  82. package/dist/chunks/{config-Dzz9P-GV2.js → config-r6hzn2Bn2.js} +0 -2
  83. package/dist/chunks/{config-Dzz9P-GV2.js.map → config-r6hzn2Bn2.js.map} +1 -1
  84. package/dist/chunks/config-rQlbnEKn.js +0 -2
  85. package/dist/chunks/dialogShared-BtXUk6Zc.js +0 -2
  86. package/dist/chunks/{en-BMjJZttK.js → en-BeJa78lP.js} +0 -2
  87. package/dist/chunks/{en-BMjJZttK.js.map → en-BeJa78lP.js.map} +1 -1
  88. package/dist/chunks/{es-Cu_RlgIr.js → es-BPqm7rLm.js} +3 -5
  89. package/dist/chunks/{es-Cu_RlgIr.js.map → es-BPqm7rLm.js.map} +1 -1
  90. package/dist/chunks/{es-EYCf8G_1.js → es-axYOwwWD.js} +0 -2
  91. package/dist/chunks/{es-EYCf8G_1.js.map → es-axYOwwWD.js.map} +1 -1
  92. package/dist/chunks/{fileValidation-CgjTGoUx.js → fileValidation-CwJA8Vmn.js} +0 -2
  93. package/dist/chunks/{fileValidation-CgjTGoUx.js.map → fileValidation-CwJA8Vmn.js.map} +1 -1
  94. package/dist/chunks/grBadgeStyles-pqqbVgLk.js +0 -2
  95. package/dist/chunks/grButtonStyles-BxZW2x0-.js +0 -2
  96. package/dist/chunks/{grDropdownStyles-DQfLh-bp.js → grDropdownStyles-DMp7RrI9.js} +0 -2
  97. package/dist/chunks/{grDropdownStyles-DQfLh-bp.js.map → grDropdownStyles-DMp7RrI9.js.map} +1 -1
  98. package/dist/chunks/{grLoadingStyles-CERsxyk9.js → grLoadingStyles-CrxZHFL0.js} +0 -2
  99. package/dist/chunks/{grLoadingStyles-CERsxyk9.js.map → grLoadingStyles-CrxZHFL0.js.map} +1 -1
  100. package/dist/chunks/grModalStyles-Dv2NXBKi.js +0 -2
  101. package/dist/chunks/{grSelectStyles-C1zNEkV7.js → grSelectStyles-B7doeAQp.js} +0 -2
  102. package/dist/chunks/{grSelectStyles-C1zNEkV7.js.map → grSelectStyles-B7doeAQp.js.map} +1 -1
  103. package/dist/chunks/{granularityI18n-BEWP9aJs.js → granularityI18n-GCqUz_lo.js} +1 -3
  104. package/dist/chunks/{granularityI18n-BEWP9aJs.js.map → granularityI18n-GCqUz_lo.js.map} +1 -1
  105. package/dist/chunks/info-C0bHmdZq.js +0 -2
  106. package/dist/chunks/loader-circle-B2rWDk5u.js +0 -2
  107. package/dist/chunks/{ru-DKswMSdd.js → ru-Dqh-2C00.js} +0 -2
  108. package/dist/chunks/{ru-DKswMSdd.js.map → ru-Dqh-2C00.js.map} +1 -1
  109. package/dist/chunks/safelist-BF822K15.js +0 -2
  110. package/dist/chunks/safelist-BY7z8fOl.js +0 -2
  111. package/dist/chunks/{shared-Bvjkhhm2.js → shared-buYOkZSv.js} +33 -35
  112. package/dist/chunks/{shared-Bvjkhhm2.js.map → shared-buYOkZSv.js.map} +1 -1
  113. package/dist/chunks/transition-mJ3PZCHH.js +0 -2
  114. package/dist/chunks/x-Pa6C2hwi.js +0 -2
  115. package/dist/chunks/x-circle-DQSlBLmX.js +0 -2
  116. package/dist/components/GrAlert/chunks/GrAlert-BjerGcU8.js +0 -2
  117. package/dist/components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js +0 -2
  118. package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js +0 -2
  119. package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js +0 -2
  120. package/dist/components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js +0 -2
  121. package/dist/components/GrButton/chunks/GrButton-BmGdp8-4.js +0 -2
  122. package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js +0 -2
  123. package/dist/components/GrCard/chunks/GrCard-xtDcXBr7.js +0 -2
  124. package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js +0 -2
  125. package/dist/components/GrCollapse/chunks/GrCollapse-HU20VTVn.js +0 -2
  126. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js +0 -2
  127. package/dist/components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js +0 -2
  128. package/dist/components/GrDialog/chunks/GrDialog-gObmaVEl.js +0 -2
  129. package/dist/components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js +0 -2
  130. package/dist/components/GrDropdown/chunks/{GrDropdown-DVTU32T_.js → GrDropdown-BkACCXdp.js} +2 -4
  131. package/dist/components/GrDropdown/chunks/{GrDropdown-DVTU32T_.js.map → GrDropdown-BkACCXdp.js.map} +1 -1
  132. package/dist/components/GrDropdown/index.js +2 -2
  133. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-fePQRcgh.js → GrDropdownMenu-BEenXrJw.js} +1 -3
  134. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-fePQRcgh.js.map → GrDropdownMenu-BEenXrJw.js.map} +1 -1
  135. package/dist/components/GrDropdownMenu/index.js +2 -2
  136. package/dist/components/GrEmptyState/chunks/{GrEmptyState-Bs8d3tgb.js → GrEmptyState-BLbMJFW-.js} +0 -2
  137. package/dist/components/GrEmptyState/chunks/{GrEmptyState-Bs8d3tgb.js.map → GrEmptyState-BLbMJFW-.js.map} +1 -1
  138. package/dist/components/GrEmptyState/index.js +2 -2
  139. package/dist/components/GrFileUpload/chunks/{GrFileUpload-DVv8yXpl.js → GrFileUpload-u01j9S0t.js} +1 -3
  140. package/dist/components/GrFileUpload/chunks/{GrFileUpload-DVv8yXpl.js.map → GrFileUpload-u01j9S0t.js.map} +1 -1
  141. package/dist/components/GrFileUpload/index.js +3 -3
  142. package/dist/components/GrFormField/chunks/{GrFormField-BzezYcS8.js → GrFormField-C6PfAs4u.js} +0 -2
  143. package/dist/components/GrFormField/chunks/{GrFormField-BzezYcS8.js.map → GrFormField-C6PfAs4u.js.map} +1 -1
  144. package/dist/components/GrFormField/index.js +2 -2
  145. package/dist/components/GrFormFile/chunks/{GrFormFile-DtZOypJW.js → GrFormFile-DdM8Bc2B.js} +2 -4
  146. package/dist/components/GrFormFile/chunks/{GrFormFile-DtZOypJW.js.map → GrFormFile-DdM8Bc2B.js.map} +1 -1
  147. package/dist/components/GrFormFile/index.js +2 -2
  148. package/dist/components/GrFormSection/chunks/{GrFormSection-BIPB1RIk.js → GrFormSection-5djEaQZQ.js} +0 -2
  149. package/dist/components/GrFormSection/chunks/{GrFormSection-BIPB1RIk.js.map → GrFormSection-5djEaQZQ.js.map} +1 -1
  150. package/dist/components/GrFormSection/index.js +2 -2
  151. package/dist/components/GrIcon/chunks/GrIcon-BV7RBU_0.js +0 -2
  152. package/dist/components/GrImageViewer/chunks/{GrImageViewer-fn8ilJTA.js → GrImageViewer-CjSnohW7.js} +0 -2
  153. package/dist/components/GrImageViewer/chunks/{GrImageViewer-fn8ilJTA.js.map → GrImageViewer-CjSnohW7.js.map} +1 -1
  154. package/dist/components/GrImageViewer/index.js +2 -2
  155. package/dist/components/GrInput/chunks/{GrInput-DLLRrH1A.js → GrInput-ghxaTf6d.js} +0 -2
  156. package/dist/components/GrInput/chunks/{GrInput-DLLRrH1A.js.map → GrInput-ghxaTf6d.js.map} +1 -1
  157. package/dist/components/GrInput/index.js +2 -2
  158. package/dist/components/GrInputTag/chunks/{GrInputTag-CzrrBxgU.js → GrInputTag-B0x4U0Yk.js} +1 -3
  159. package/dist/components/GrInputTag/chunks/{GrInputTag-CzrrBxgU.js.map → GrInputTag-B0x4U0Yk.js.map} +1 -1
  160. package/dist/components/GrInputTag/index.js +2 -2
  161. package/dist/components/GrLink/chunks/{GrLink-Dhkid3Mp.js → GrLink-BbN7R3iP.js} +1 -3
  162. package/dist/components/GrLink/chunks/{GrLink-Dhkid3Mp.js.map → GrLink-BbN7R3iP.js.map} +1 -1
  163. package/dist/components/GrLink/index.js +2 -2
  164. package/dist/components/GrList/chunks/{GrList-CjgeVjhY.js → GrList--Ib4zLNw.js} +0 -2
  165. package/dist/components/GrList/chunks/{GrList-CjgeVjhY.js.map → GrList--Ib4zLNw.js.map} +1 -1
  166. package/dist/components/GrList/index.js +2 -2
  167. package/dist/components/GrLoading/chunks/{GrLoading-DihGX3ol.js → GrLoading-C3QZKwE-.js} +1 -3
  168. package/dist/components/GrLoading/chunks/{GrLoading-DihGX3ol.js.map → GrLoading-C3QZKwE-.js.map} +1 -1
  169. package/dist/components/GrLoading/index.js +2 -2
  170. package/dist/components/GrModal/chunks/GrModal-gvfvlp7k.js +0 -2
  171. package/dist/components/GrModal/index.js +1 -1
  172. package/dist/components/GrNavbar/chunks/{GrNavbar-CQOAfO6y.js → GrNavbar-nIyuiVj1.js} +1 -3
  173. package/dist/components/GrNavbar/chunks/{GrNavbar-CQOAfO6y.js.map → GrNavbar-nIyuiVj1.js.map} +1 -1
  174. package/dist/components/GrNavbar/index.js +2 -2
  175. package/dist/components/GrNumberInput/chunks/{GrNumberInput-CyHgUotG.js → GrNumberInput-B0mPLjdv.js} +1 -3
  176. package/dist/components/GrNumberInput/chunks/{GrNumberInput-CyHgUotG.js.map → GrNumberInput-B0mPLjdv.js.map} +1 -1
  177. package/dist/components/GrNumberInput/index.js +2 -2
  178. package/dist/components/GrPagination/chunks/{GrPagination-C5cxRJsF.js → GrPagination-BSTO6flk.js} +2 -4
  179. package/dist/components/GrPagination/chunks/{GrPagination-C5cxRJsF.js.map → GrPagination-BSTO6flk.js.map} +1 -1
  180. package/dist/components/GrPagination/index.js +2 -2
  181. package/dist/components/GrProgressBar/chunks/{GrProgressBar-C9wAAFxR.js → GrProgressBar-MvMnzsJl.js} +1 -3
  182. package/dist/components/GrProgressBar/chunks/{GrProgressBar-C9wAAFxR.js.map → GrProgressBar-MvMnzsJl.js.map} +1 -1
  183. package/dist/components/GrProgressBar/index.js +2 -2
  184. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Cfq9bvL3.js → GrPromptDialog-DKhbN6ji.js} +2 -4
  185. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Cfq9bvL3.js.map → GrPromptDialog-DKhbN6ji.js.map} +1 -1
  186. package/dist/components/GrPromptDialog/index.js +2 -2
  187. package/dist/components/GrRadio/chunks/{GrRadio-B_t_ZNVl.js → GrRadio-BxBs3WHq.js} +1 -3
  188. package/dist/components/GrRadio/chunks/{GrRadio-B_t_ZNVl.js.map → GrRadio-BxBs3WHq.js.map} +1 -1
  189. package/dist/components/GrRadio/index.js +2 -2
  190. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-CVlgpUBr.js → GrRadioGroup-CEAfJQ6A.js} +1 -3
  191. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-CVlgpUBr.js.map → GrRadioGroup-CEAfJQ6A.js.map} +1 -1
  192. package/dist/components/GrRadioGroup/index.js +2 -2
  193. package/dist/components/GrSegmented/chunks/{GrSegmented-BPl1koHc.js → GrSegmented-Bwn2qOY4.js} +1 -3
  194. package/dist/components/GrSegmented/chunks/{GrSegmented-BPl1koHc.js.map → GrSegmented-Bwn2qOY4.js.map} +1 -1
  195. package/dist/components/GrSegmented/index.js +2 -2
  196. package/dist/components/GrSelect/chunks/{GrSelect-aVqUL-1F.js → GrSelect-9wRWAu2R.js} +3 -5
  197. package/dist/components/GrSelect/chunks/{GrSelect-aVqUL-1F.js.map → GrSelect-9wRWAu2R.js.map} +1 -1
  198. package/dist/components/GrSelect/index.js +2 -2
  199. package/dist/components/GrSidebar/chunks/{GrSidebar-DVucgcfV.js → GrSidebar-CSZ3RpFB.js} +0 -2
  200. package/dist/components/GrSidebar/chunks/{GrSidebar-DVucgcfV.js.map → GrSidebar-CSZ3RpFB.js.map} +1 -1
  201. package/dist/components/GrSidebar/index.js +2 -2
  202. package/dist/components/GrSkeleton/chunks/{GrSkeleton-CDTvCSoH.js → GrSkeleton-DKXkqWDa.js} +0 -2
  203. package/dist/components/GrSkeleton/chunks/{GrSkeleton-CDTvCSoH.js.map → GrSkeleton-DKXkqWDa.js.map} +1 -1
  204. package/dist/components/GrSkeleton/index.js +2 -2
  205. package/dist/components/GrSwitch/chunks/{GrSwitch-Bnamgqb2.js → GrSwitch-CdBxwV3k.js} +1 -3
  206. package/dist/components/GrSwitch/chunks/{GrSwitch-Bnamgqb2.js.map → GrSwitch-CdBxwV3k.js.map} +1 -1
  207. package/dist/components/GrSwitch/index.js +2 -2
  208. package/dist/components/GrTable/chunks/GrTable-CyQ9uw8A.js +0 -2
  209. package/dist/components/GrTable/index.js +1 -1
  210. package/dist/components/GrTabs/chunks/{GrTabs-CiGmcmvm.js → GrTabs-BpF8AAUz.js} +0 -2
  211. package/dist/components/GrTabs/chunks/{GrTabs-CiGmcmvm.js.map → GrTabs-BpF8AAUz.js.map} +1 -1
  212. package/dist/components/GrTabs/index.js +2 -2
  213. package/dist/components/GrTextarea/chunks/{GrTextarea-VBSc6A7D.js → GrTextarea-DFS9ZkrA.js} +1 -3
  214. package/dist/components/GrTextarea/chunks/{GrTextarea-VBSc6A7D.js.map → GrTextarea-DFS9ZkrA.js.map} +1 -1
  215. package/dist/components/GrTextarea/index.js +2 -2
  216. package/dist/components/GrToaster/chunks/{GrToaster-I1e-zCpf.js → GrToaster-3Mf0Moxt.js} +1 -3
  217. package/dist/components/GrToaster/chunks/{GrToaster-I1e-zCpf.js.map → GrToaster-3Mf0Moxt.js.map} +1 -1
  218. package/dist/components/GrToaster/index.js +2 -2
  219. package/dist/components/GrTooltip/chunks/{GrTooltip-CrV1gI_c.js → GrTooltip-BvmsukLW.js} +0 -2
  220. package/dist/components/GrTooltip/chunks/{GrTooltip-CrV1gI_c.js.map → GrTooltip-BvmsukLW.js.map} +1 -1
  221. package/dist/components/GrTooltip/index.js +2 -2
  222. package/dist/components/GrTree/chunks/{GrTree-Dlev9oBd.js → GrTree-C2kN-O4Q.js} +0 -2
  223. package/dist/components/GrTree/chunks/{GrTree-Dlev9oBd.js.map → GrTree-C2kN-O4Q.js.map} +1 -1
  224. package/dist/components/GrTree/index.js +2 -2
  225. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DN6XFjOD.js → GrTreeSelect-Da-CpRqm.js} +5 -7
  226. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DN6XFjOD.js.map → GrTreeSelect-Da-CpRqm.js.map} +1 -1
  227. package/dist/components/GrTreeSelect/index.js +2 -2
  228. package/dist/composables/useTheme.js +0 -2
  229. package/dist/composables/useToast.js +0 -2
  230. package/dist/directives/autofocus.js +55 -0
  231. package/dist/directives/autofocus.js.map +1 -0
  232. package/dist/directives/autosize.js +117 -0
  233. package/dist/directives/autosize.js.map +1 -0
  234. package/dist/directives/clickOutside.js +96 -0
  235. package/dist/directives/clickOutside.js.map +1 -0
  236. package/dist/directives/dropzone.js +164 -0
  237. package/dist/directives/dropzone.js.map +1 -0
  238. package/dist/directives/hotkey.js +138 -0
  239. package/dist/directives/hotkey.js.map +1 -0
  240. package/dist/directives/index.js +6 -1
  241. package/dist/directives/loading.js +163 -0
  242. package/dist/directives/loading.js.map +1 -0
  243. package/dist/fileValidation/index.js +1 -1
  244. package/dist/granular-provider-node.js +2 -4
  245. package/dist/granular-provider.js +1 -3
  246. package/dist/i18n/all.js +1 -3
  247. package/dist/i18n/index.js +2 -2
  248. package/dist/index.js +71 -66
  249. package/dist/types/src/components/GrLink/grLinkStyles.d.ts +1 -1
  250. package/dist/vue/index.js +0 -2
  251. package/package.json +25 -1
  252. package/dist/chunks/config-BbtK511H.js.map +0 -1
  253. package/dist/chunks/config-BcFOkUhh.js.map +0 -1
  254. package/dist/chunks/config-BzQ4S4Hb.js.map +0 -1
  255. package/dist/chunks/config-C2JKq8-2.js.map +0 -1
  256. package/dist/chunks/config-CdAx6ify2.js.map +0 -1
  257. package/dist/chunks/config-KGTIAFD92.js.map +0 -1
  258. package/dist/chunks/directives-Cuib0yOO.js +0 -728
  259. package/dist/chunks/directives-Cuib0yOO.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"directives-Cuib0yOO.js","names":[],"sources":["../../src/directives/autofocus.ts","../../src/directives/autosize.ts","../../src/directives/clickOutside.ts","../../src/directives/dropzone.ts","../../src/directives/hotkey.ts","../../src/directives/loading.ts"],"sourcesContent":["import type { Directive } from 'vue'\nimport { nextTick } from 'vue'\n\nexport type AutofocusBindingValue =\n | boolean\n | string\n | {\n selector?: string\n preventScroll?: boolean\n disabled?: boolean\n }\n\nfunction resolveOptions(value: AutofocusBindingValue | undefined) {\n if (value === false) {\n return { enabled: false, selector: '', preventScroll: true }\n }\n\n if (typeof value === 'string') {\n return { enabled: true, selector: value, preventScroll: true }\n }\n\n if (value && typeof value === 'object') {\n return {\n enabled: value.disabled !== true,\n selector: value.selector,\n preventScroll: value.preventScroll ?? true,\n }\n }\n\n return { enabled: true, selector: undefined as string | undefined, preventScroll: true }\n}\n\nfunction tryFocus(target: Element | null | undefined, preventScroll: boolean) {\n if (!target) return\n\n const focusable = target as unknown as { focus?: (options?: any) => void }\n if (typeof focusable.focus !== 'function') return\n\n try {\n focusable.focus({ preventScroll })\n } catch {\n // Fallback for browsers that don't support FocusOptions.\n focusable.focus()\n }\n}\n\n/**\n * `v-autofocus` — универсальный автофокус.\n * Работает как на нативных элементах, так и на компонентах-обёртках (фокусирует вложенный `input/textarea/...`).\n */\nexport const vAutofocus: Directive<HTMLElement, AutofocusBindingValue> = {\n mounted(el, binding) {\n const { enabled, selector, preventScroll } = resolveOptions(binding.value)\n if (!enabled) return\n\n void nextTick().then(() => {\n // Небольшая задержка помогает, когда внутренний input появляется после обновления/анимаций.\n requestAnimationFrame(() => {\n const defaultSelector = 'input, textarea, select, button, [tabindex]:not([tabindex=\"-1\"])'\n const finalSelector = selector || defaultSelector\n\n if ((el as any).matches?.(finalSelector)) {\n tryFocus(el, preventScroll)\n return\n }\n\n const inner = el.querySelector?.(finalSelector)\n tryFocus(inner, preventScroll)\n })\n })\n },\n}\n","import type { Directive } from 'vue'\nimport { nextTick } from 'vue'\n\nexport type AutosizeBindingValue =\n | boolean\n | {\n enabled?: boolean\n }\n\ntype InternalState = {\n textarea: HTMLTextAreaElement | null\n onInput: (() => void) | null\n prevOverflowY: string | null\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction normalize(value: AutosizeBindingValue | undefined) {\n if (value === false) return { enabled: false }\n if (value && typeof value === 'object') return { enabled: value.enabled ?? true }\n return { enabled: true }\n}\n\nfunction resolveTextarea(el: HTMLElement): HTMLTextAreaElement | null {\n if (el instanceof HTMLTextAreaElement) return el\n return el.querySelector('textarea')\n}\n\nfunction toNumber(input: string): number {\n const n = Number.parseFloat(input)\n return Number.isFinite(n) ? n : 0\n}\n\nfunction autosize(textarea: HTMLTextAreaElement) {\n // Важно сбросить, чтобы textarea могла уменьшаться при удалении текста.\n textarea.style.height = 'auto'\n\n const style = getComputedStyle(textarea)\n const border = toNumber(style.borderTopWidth) + toNumber(style.borderBottomWidth)\n const height = style.boxSizing === 'border-box' ? textarea.scrollHeight + border : textarea.scrollHeight\n\n textarea.style.height = `${height}px`\n}\n\nfunction scheduleAutosize(textarea: HTMLTextAreaElement) {\n void nextTick().then(() => {\n requestAnimationFrame(() => autosize(textarea))\n })\n}\n\n/**\n * `v-autosize` — автоподстройка высоты `textarea`.\n *\n * Пример:\n * ```vue\n * <textarea v-autosize />\n * ```\n */\nexport const vAutosize: Directive<HTMLElement, AutosizeBindingValue> = {\n mounted(el, binding) {\n const { enabled } = normalize(binding.value)\n const textarea = resolveTextarea(el)\n\n const state: InternalState = {\n textarea,\n onInput: null,\n prevOverflowY: textarea ? textarea.style.overflowY : null,\n }\n states.set(el, state)\n\n if (!enabled || !textarea) return\n\n textarea.style.overflowY = 'hidden'\n autosize(textarea)\n scheduleAutosize(textarea)\n\n const onInput = () => {\n const current = states.get(el)\n if (!current?.textarea) return\n autosize(current.textarea)\n }\n\n state.onInput = onInput\n textarea.addEventListener('input', onInput)\n },\n updated(el, binding) {\n const { enabled } = normalize(binding.value)\n const state = states.get(el)\n if (!state) return\n\n const nextTextarea = resolveTextarea(el)\n if (state.textarea !== nextTextarea) {\n if (state.textarea && state.onInput) {\n state.textarea.removeEventListener('input', state.onInput)\n }\n\n state.textarea = nextTextarea\n state.prevOverflowY = nextTextarea ? nextTextarea.style.overflowY : null\n state.onInput = null\n\n if (enabled && nextTextarea) {\n nextTextarea.style.overflowY = 'hidden'\n autosize(nextTextarea)\n scheduleAutosize(nextTextarea)\n\n const onInput = () => {\n const current = states.get(el)\n if (!current?.textarea) return\n autosize(current.textarea)\n }\n state.onInput = onInput\n nextTextarea.addEventListener('input', onInput)\n }\n\n return\n }\n\n if (!state.textarea) return\n\n if (!enabled) {\n // Disabled in-flight: detach listener and restore previous overflow.\n if (state.onInput) {\n state.textarea.removeEventListener('input', state.onInput)\n state.onInput = null\n }\n if (state.prevOverflowY !== null) {\n state.textarea.style.overflowY = state.prevOverflowY\n }\n return\n }\n\n // Re-enable after being disabled: reattach listener and re-apply overflow.\n if (!state.onInput) {\n state.prevOverflowY = state.textarea.style.overflowY\n state.textarea.style.overflowY = 'hidden'\n\n const onInput = () => {\n const current = states.get(el)\n if (!current?.textarea) return\n autosize(current.textarea)\n }\n state.onInput = onInput\n state.textarea.addEventListener('input', onInput)\n }\n\n autosize(state.textarea)\n scheduleAutosize(state.textarea)\n },\n unmounted(el) {\n const state = states.get(el)\n if (!state) return\n\n if (state.textarea && state.onInput) {\n state.textarea.removeEventListener('input', state.onInput)\n if (state.prevOverflowY !== null) state.textarea.style.overflowY = state.prevOverflowY\n }\n\n states.delete(el)\n },\n}\n","import type { Directive } from 'vue'\n\nexport type ClickOutsideHandler = (event: MouseEvent | TouchEvent | PointerEvent) => void\n\nexport type ClickOutsideExclude = HTMLElement | string | (() => HTMLElement | null | undefined)\n\nexport type ClickOutsideBindingValue =\n | ClickOutsideHandler\n | {\n handler: ClickOutsideHandler\n /** По умолчанию `true`. */\n enabled?: boolean\n /** По умолчанию `true` (слушаем в capture, чтобы stopPropagation внутри не ломал закрытие). */\n capture?: boolean\n /** Список событий. По умолчанию `['click']`. */\n events?: Array<'click' | 'mousedown' | 'touchstart' | 'pointerdown'>\n /** Элементы/селекторы, клики по которым считаются \"внутри\". */\n exclude?: ClickOutsideExclude[]\n }\n\ntype NormalizedOptions = {\n enabled: boolean\n capture: boolean\n events: Array<'click' | 'mousedown' | 'touchstart' | 'pointerdown'>\n handler: ClickOutsideHandler | undefined\n exclude: ClickOutsideExclude[]\n}\n\nfunction normalize(value: ClickOutsideBindingValue | undefined): NormalizedOptions {\n if (typeof value === 'function') {\n return { enabled: true, capture: true, events: ['click'], handler: value, exclude: [] }\n }\n\n if (value && typeof value === 'object') {\n return {\n enabled: value.enabled ?? true,\n capture: value.capture ?? true,\n events: value.events?.length ? value.events : ['click'],\n handler: value.handler,\n exclude: value.exclude ?? [],\n }\n }\n\n return { enabled: false, capture: true, events: ['click'], handler: undefined, exclude: [] }\n}\n\nfunction isEventInside(el: HTMLElement, event: Event): boolean {\n const target = event.target as Node | null\n if (!target) return false\n\n const composedPath = (event as any).composedPath?.() as EventTarget[] | undefined\n if (Array.isArray(composedPath)) {\n return composedPath.includes(el)\n }\n\n return el.contains(target)\n}\n\nfunction resolveExclude(doc: Document, exclude: ClickOutsideExclude[]): HTMLElement[] {\n const resolved: HTMLElement[] = []\n\n for (const item of exclude) {\n if (typeof item === 'string') {\n const found = doc.querySelector(item)\n if (found instanceof HTMLElement) resolved.push(found)\n continue\n }\n\n if (typeof item === 'function') {\n const found = item()\n if (found instanceof HTMLElement) resolved.push(found)\n continue\n }\n\n if (item instanceof HTMLElement) {\n resolved.push(item)\n }\n }\n\n return resolved\n}\n\ntype InternalState = {\n options: NormalizedOptions\n doc: Document\n listener: (event: Event) => void\n}\n\nconst states = new WeakMap<HTMLElement, InternalState>()\n\nfunction unbind(el: HTMLElement) {\n const state = states.get(el)\n if (!state) return\n\n for (const event of state.options.events) {\n state.doc.removeEventListener(event, state.listener, state.options.capture)\n }\n\n states.delete(el)\n}\n\nfunction bind(el: HTMLElement, value: ClickOutsideBindingValue | undefined) {\n const options = normalize(value)\n const doc = el.ownerDocument\n\n const listener = (event: Event) => {\n const current = states.get(el)\n if (!current) return\n\n const { enabled, handler, exclude } = current.options\n if (!enabled || !handler) return\n\n if ('button' in (event as any) && typeof (event as any).button === 'number' && (event as any).button !== 0) {\n return\n }\n\n if (!el.isConnected) return\n\n if (isEventInside(el, event)) return\n\n const excluded = resolveExclude(current.doc, exclude)\n for (const ex of excluded) {\n if (isEventInside(ex, event)) return\n }\n\n handler(event as any)\n }\n\n const nextState: InternalState = { options, doc, listener }\n states.set(el, nextState)\n\n if (!options.enabled || !options.handler) return\n\n for (const event of options.events) {\n doc.addEventListener(event, listener, options.capture)\n }\n}\n\n/**\n * `v-click-outside` — обработчик клика вне элемента (например, закрытие дропдауна/модалки).\n */\nexport const vClickOutside: Directive<HTMLElement, ClickOutsideBindingValue> = {\n mounted(el, binding) {\n bind(el, binding.value)\n },\n updated(el, binding) {\n unbind(el)\n bind(el, binding.value)\n },\n unmounted(el) {\n unbind(el)\n },\n}\n","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","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","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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"}