@feugene/granularity 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/dist/GrBadge.css +1 -0
  2. package/dist/chunks/{adapter-CRyH4YC8.js.map → adapter-BqqjEZGU.js.map} +1 -1
  3. package/dist/chunks/arrow-up-DZdIrpaF.js.map +1 -0
  4. package/dist/chunks/{config-Dkq0HeLe.js → config-3I3vqDW4.js} +1 -1
  5. package/dist/chunks/{config-Dkq0HeLe.js.map → config-3I3vqDW4.js.map} +1 -1
  6. package/dist/chunks/config-72sW9Bag2.js.map +1 -0
  7. package/dist/chunks/{config-B8rC_K97.js.map → config-B1kFmhpM.js.map} +1 -1
  8. package/dist/chunks/{config-BhvNm4Pp.js.map → config-B2YTEe_h.js.map} +1 -1
  9. package/dist/chunks/{config-BaMO9dQh.js → config-B61cX08u.js} +1 -1
  10. package/dist/chunks/{config-BaMO9dQh.js.map → config-B61cX08u.js.map} +1 -1
  11. package/dist/chunks/{config-C5TN9J2Z.js.map → config-BK6Odc3T.js.map} +1 -1
  12. package/dist/chunks/{config-C0rHS1-l.js.map → config-BOdu-O_B.js.map} +1 -1
  13. package/dist/chunks/{config-D27BL0H9.js.map → config-BU0olrvr.js.map} +1 -1
  14. package/dist/chunks/{config-XoANT5mU.js → config-BY81UKv0.js} +1 -1
  15. package/dist/chunks/{config-XoANT5mU.js.map → config-BY81UKv0.js.map} +1 -1
  16. package/dist/chunks/config-B_nSBc7W.js.map +1 -0
  17. package/dist/chunks/{config-DbqFk-IW.js.map → config-BbKroFtR.js.map} +1 -1
  18. package/dist/chunks/config-Bcf-8XlK2.js.map +1 -0
  19. package/dist/chunks/{config-C_AOYGBr.js.map → config-BduXEXjt.js.map} +1 -1
  20. package/dist/chunks/config-BeQuykDk2.js.map +1 -0
  21. package/dist/chunks/{config-C_-02Pu-.js.map → config-BgBWt9-A.js.map} +1 -1
  22. package/dist/chunks/{config-Dusr9jcE.js.map → config-BnWSHTEU.js.map} +1 -1
  23. package/dist/chunks/{config-C4AlNm912.js → config-Br_qI3Za.js} +1 -1
  24. package/dist/chunks/config-Br_qI3Za.js.map +1 -0
  25. package/dist/chunks/config-C6zT56Jc2.js.map +1 -0
  26. package/dist/chunks/{config-ZJVOVgqR.js → config-CFf7xaG1.js} +1 -1
  27. package/dist/chunks/{config-ZJVOVgqR.js.map → config-CFf7xaG1.js.map} +1 -1
  28. package/dist/chunks/{config-Cn8TG49a.js.map → config-CUwF4E4R.js.map} +1 -1
  29. package/dist/chunks/{config-wo-ncgTH.js.map → config-CdJpnjDj.js.map} +1 -1
  30. package/dist/chunks/config-CetsgpaZ2.js.map +1 -0
  31. package/dist/chunks/{config-D1DI3roo.js.map → config-Ci9nXGUV.js.map} +1 -1
  32. package/dist/chunks/{config-CjEplP6D.js.map → config-CpMYmvVT.js.map} +1 -1
  33. package/dist/chunks/{config-BXffa3ta.js → config-Cp_XHsze.js} +2 -2
  34. package/dist/chunks/{config-BXffa3ta.js.map → config-Cp_XHsze.js.map} +1 -1
  35. package/dist/chunks/{config-D98m8iyz.js.map → config-CvGdaXvH.js.map} +1 -1
  36. package/dist/chunks/{config-CtomKf-k.js.map → config-D4s_QWVP.js.map} +1 -1
  37. package/dist/chunks/{config-D32znLtV2.js.map → config-D6Oe3blW2.js.map} +1 -1
  38. package/dist/chunks/{config-CVnluhKO.js.map → config-DF_RlCIO.js.map} +1 -1
  39. package/dist/chunks/{config-C4qAA0Sb.js.map → config-DSBlHQVa.js.map} +1 -1
  40. package/dist/chunks/{config-Mp9DJ9Mq2.js.map → config-DaHI5bD_2.js.map} +1 -1
  41. package/dist/chunks/{config-3SftO0uG.js.map → config-Dcb7xK-C.js.map} +1 -1
  42. package/dist/chunks/config-DmjwIqx1.js.map +1 -0
  43. package/dist/chunks/{config-D6Af6WZw.js.map → config-DoBk_CzG.js.map} +1 -1
  44. package/dist/chunks/config-Dzd6BzIN2.js.map +1 -0
  45. package/dist/chunks/{config-Db4BEG8Y.js.map → config-O1_FTqD3.js.map} +1 -1
  46. package/dist/chunks/{config-C9AOlKah.js.map → config-V3LF-b_F.js.map} +1 -1
  47. package/dist/chunks/config-_3De4HFf.js.map +1 -0
  48. package/dist/chunks/{config-B44QVIge.js → config-d386uO3O.js} +1 -1
  49. package/dist/chunks/{config-B44QVIge.js.map → config-d386uO3O.js.map} +1 -1
  50. package/dist/chunks/{config-DudL02ag.js.map → config-iuMz79Mg.js.map} +1 -1
  51. package/dist/chunks/{config-DJWf0kWe.js.map → config-vcDVCYXo.js.map} +1 -1
  52. package/dist/chunks/{en-QNZhjmSJ.js.map → en-foQA8imU.js.map} +1 -1
  53. package/dist/chunks/{es-CKLPuE0h.js → es-Bx3Kuy6z.js} +3 -3
  54. package/dist/chunks/{es-CKLPuE0h.js.map → es-Bx3Kuy6z.js.map} +1 -1
  55. package/dist/chunks/{es-C1c5XsIK.js.map → es-DZFSojYL.js.map} +1 -1
  56. package/dist/chunks/{fileValidation-CwJA8Vmn.js.map → fileValidation-c_iBg74s.js.map} +1 -1
  57. package/dist/chunks/{grBadgeStyles-pqqbVgLk.js → grBadgeStyles-Cq0hH2Ls.js} +7 -5
  58. package/dist/chunks/grBadgeStyles-Cq0hH2Ls.js.map +1 -0
  59. package/dist/chunks/{grButtonStyles-BxZW2x0-.js.map → grButtonStyles-DKuXUemw.js.map} +1 -1
  60. package/dist/chunks/{grDropdownStyles-DMp7RrI9.js.map → grDropdownStyles-B41mVR1H.js.map} +1 -1
  61. package/dist/chunks/{grLoadingStyles-CrxZHFL0.js.map → grLoadingStyles-DmI-SJ3i.js.map} +1 -1
  62. package/dist/chunks/{grSelectStyles-DTAYNzxn.js.map → grSelectStyles-pUt19VGy.js.map} +1 -1
  63. package/dist/chunks/{grStyle-5EMYYctb.js.map → grStyle-CUaTmpyW.js.map} +1 -1
  64. package/dist/chunks/{granularityI18n-CXa_uN7f.js → granularityI18n-LcJ88Vce.js} +1 -1
  65. package/dist/chunks/{granularityI18n-CXa_uN7f.js.map → granularityI18n-LcJ88Vce.js.map} +1 -1
  66. package/dist/chunks/loader-circle-BUntgosj.js.map +1 -0
  67. package/dist/chunks/{ru-DcF7ciz0.js.map → ru-LhkPpPIl.js.map} +1 -1
  68. package/dist/chunks/{safelist-BY7z8fOl.js → safelist-DccvJqCE.js} +1 -1
  69. package/dist/chunks/{safelist-BY7z8fOl.js.map → safelist-DccvJqCE.js.map} +1 -1
  70. package/dist/chunks/safelist-_UVzJrgE2.js.map +1 -0
  71. package/dist/chunks/{shared-BkIIEolF.js → shared-D24hqkyM.js} +42 -42
  72. package/dist/chunks/{shared-BkIIEolF.js.map → shared-D24hqkyM.js.map} +1 -1
  73. package/dist/components/GrBadge/chunks/GrBadge-Cs_cVfuO.js +36 -0
  74. package/dist/components/GrBadge/chunks/GrBadge-Cs_cVfuO.js.map +1 -0
  75. package/dist/components/GrBadge/index.js +2 -2
  76. package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-CxtamOZ-.js.map → GrBadgeWrap-BEnE9DyJ.js.map} +1 -1
  77. package/dist/components/GrBadgeWrap/index.js +2 -2
  78. package/dist/components/GrBottomNav/chunks/{GrBottomNav-CsmQ7mTJ.js.map → GrBottomNav-XPHwd7UQ.js.map} +1 -1
  79. package/dist/components/GrBottomNav/index.js +2 -2
  80. package/dist/components/GrButton/chunks/{GrButton-BmGdp8-4.js → GrButton-CPDKonoB.js} +2 -2
  81. package/dist/components/GrButton/chunks/{GrButton-BmGdp8-4.js.map → GrButton-CPDKonoB.js.map} +1 -1
  82. package/dist/components/GrButton/index.js +4 -4
  83. package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CBj4tpms.js.map → GrButtonGroup-CPOH6V-P.js.map} +1 -1
  84. package/dist/components/GrButtonGroup/index.js +2 -2
  85. package/dist/components/GrCard/chunks/{GrCard-xtDcXBr7.js → GrCard-6yk1RRAQ.js} +1 -1
  86. package/dist/components/GrCard/chunks/{GrCard-xtDcXBr7.js.map → GrCard-6yk1RRAQ.js.map} +1 -1
  87. package/dist/components/GrCard/index.js +1 -1
  88. package/dist/components/GrCollapse/chunks/{GrCollapse-HU20VTVn.js → GrCollapse-CU94BTAR.js} +1 -1
  89. package/dist/components/GrCollapse/chunks/{GrCollapse-HU20VTVn.js.map → GrCollapse-CU94BTAR.js.map} +1 -1
  90. package/dist/components/GrCollapse/index.js +1 -1
  91. package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DjGOX9Hd.js → GrConfirmDialog-BGmyfDd2.js} +32 -9
  92. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-BGmyfDd2.js.map +1 -0
  93. package/dist/components/GrConfirmDialog/index.js +2 -2
  94. package/dist/components/GrDataTable/chunks/{GrDataTable-QDOJWmdY.js → GrDataTable-ClcYiyc8.js} +2 -2
  95. package/dist/components/GrDataTable/chunks/{GrDataTable-QDOJWmdY.js.map → GrDataTable-ClcYiyc8.js.map} +1 -1
  96. package/dist/components/GrDataTable/index.js +2 -2
  97. package/dist/components/GrDialog/chunks/{GrDialog-gObmaVEl.js → GrDialog-Ba3Ojcsq.js} +1 -1
  98. package/dist/components/GrDialog/chunks/{GrDialog-gObmaVEl.js.map → GrDialog-Ba3Ojcsq.js.map} +1 -1
  99. package/dist/components/GrDialog/index.js +2 -2
  100. package/dist/components/GrDrawer/chunks/{GrDrawer-BJL_gTxI.js → GrDrawer-BW3wtI7h.js} +2 -2
  101. package/dist/components/GrDrawer/chunks/{GrDrawer-BJL_gTxI.js.map → GrDrawer-BW3wtI7h.js.map} +1 -1
  102. package/dist/components/GrDrawer/index.js +2 -2
  103. package/dist/components/GrDropdown/chunks/{GrDropdown-BkACCXdp.js → GrDropdown-DOvHKnih.js} +1 -1
  104. package/dist/components/GrDropdown/chunks/{GrDropdown-BkACCXdp.js.map → GrDropdown-DOvHKnih.js.map} +1 -1
  105. package/dist/components/GrDropdown/index.js +2 -2
  106. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BEenXrJw.js → GrDropdownMenu-CLPwbiyG.js} +1 -1
  107. package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BEenXrJw.js.map → GrDropdownMenu-CLPwbiyG.js.map} +1 -1
  108. package/dist/components/GrDropdownMenu/index.js +2 -2
  109. package/dist/components/GrEmptyState/chunks/{GrEmptyState-BLbMJFW-.js.map → GrEmptyState-Dj2V5GaX.js.map} +1 -1
  110. package/dist/components/GrEmptyState/index.js +2 -2
  111. package/dist/components/GrFileUpload/chunks/{GrFileUpload-DYRERhI2.js → GrFileUpload-BEKNB1RM.js} +5 -5
  112. package/dist/components/GrFileUpload/chunks/GrFileUpload-BEKNB1RM.js.map +1 -0
  113. package/dist/components/GrFileUpload/index.js +3 -3
  114. package/dist/components/GrFormField/chunks/{GrFormField-C1oWTT_0.js.map → GrFormField-U7c_aDPJ.js.map} +1 -1
  115. package/dist/components/GrFormField/index.js +2 -2
  116. package/dist/components/GrFormFile/chunks/{GrFormFile-deDPicM2.js → GrFormFile-CIleXnfr.js} +3 -3
  117. package/dist/components/GrFormFile/chunks/{GrFormFile-deDPicM2.js.map → GrFormFile-CIleXnfr.js.map} +1 -1
  118. package/dist/components/GrFormFile/index.js +2 -2
  119. package/dist/components/GrFormSection/chunks/{GrFormSection-CWBk2EUm.js.map → GrFormSection-DpGhY7MX.js.map} +1 -1
  120. package/dist/components/GrFormSection/index.js +2 -2
  121. package/dist/components/GrImageViewer/chunks/{GrImageViewer-Cpj5zyZQ.js.map → GrImageViewer-Cn1X-sWS.js.map} +1 -1
  122. package/dist/components/GrImageViewer/index.js +2 -2
  123. package/dist/components/GrInput/chunks/{GrInput-CfO2RsM-.js.map → GrInput-gwFQ1sk4.js.map} +1 -1
  124. package/dist/components/GrInput/index.js +2 -2
  125. package/dist/components/GrInputTag/chunks/{GrInputTag-G_VYJPF9.js → GrInputTag-Dcj3F6rQ.js} +2 -2
  126. package/dist/components/GrInputTag/chunks/{GrInputTag-G_VYJPF9.js.map → GrInputTag-Dcj3F6rQ.js.map} +1 -1
  127. package/dist/components/GrInputTag/index.js +2 -2
  128. package/dist/components/GrLink/chunks/{GrLink-BLPigqij.js → GrLink-BMwn2iJ9.js} +1 -1
  129. package/dist/components/GrLink/chunks/{GrLink-BLPigqij.js.map → GrLink-BMwn2iJ9.js.map} +1 -1
  130. package/dist/components/GrLink/index.js +2 -2
  131. package/dist/components/GrList/chunks/{GrList-BPjQf-72.js → GrList-D8nM1FuV.js} +1 -1
  132. package/dist/components/GrList/chunks/{GrList-BPjQf-72.js.map → GrList-D8nM1FuV.js.map} +1 -1
  133. package/dist/components/GrList/index.js +2 -2
  134. package/dist/components/GrLoading/chunks/{GrLoading-C3QZKwE-.js → GrLoading-mfyfghxs.js} +2 -2
  135. package/dist/components/GrLoading/chunks/{GrLoading-C3QZKwE-.js.map → GrLoading-mfyfghxs.js.map} +1 -1
  136. package/dist/components/GrLoading/index.js +2 -2
  137. package/dist/components/GrModal/index.js +1 -1
  138. package/dist/components/GrNavbar/chunks/{GrNavbar-BoVuSZ-V.js → GrNavbar-BH7XiF9q.js} +2 -2
  139. package/dist/components/GrNavbar/chunks/{GrNavbar-BoVuSZ-V.js.map → GrNavbar-BH7XiF9q.js.map} +1 -1
  140. package/dist/components/GrNavbar/index.js +2 -2
  141. package/dist/components/GrNumberInput/chunks/{GrNumberInput-ECtFCIKV.js → GrNumberInput-YIWhV85S.js} +1 -1
  142. package/dist/components/GrNumberInput/chunks/{GrNumberInput-ECtFCIKV.js.map → GrNumberInput-YIWhV85S.js.map} +1 -1
  143. package/dist/components/GrNumberInput/index.js +2 -2
  144. package/dist/components/GrPagination/chunks/{GrPagination-DW44c2-a.js → GrPagination-cD6rFO9W.js} +3 -3
  145. package/dist/components/GrPagination/chunks/{GrPagination-DW44c2-a.js.map → GrPagination-cD6rFO9W.js.map} +1 -1
  146. package/dist/components/GrPagination/index.js +2 -2
  147. package/dist/components/GrProgressBar/chunks/{GrProgressBar-hQQK8cYh.js → GrProgressBar-C2HdYjp4.js} +1 -1
  148. package/dist/components/GrProgressBar/chunks/{GrProgressBar-hQQK8cYh.js.map → GrProgressBar-C2HdYjp4.js.map} +1 -1
  149. package/dist/components/GrProgressBar/index.js +2 -2
  150. package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CUMW6_58.js → GrPromptDialog-Du1aLfcA.js} +55 -29
  151. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-Du1aLfcA.js.map +1 -0
  152. package/dist/components/GrPromptDialog/index.js +2 -2
  153. package/dist/components/GrRadio/chunks/{GrRadio-B_t_ZNVl.js → GrRadio-IFU9Hiu2.js} +1 -1
  154. package/dist/components/GrRadio/chunks/{GrRadio-B_t_ZNVl.js.map → GrRadio-IFU9Hiu2.js.map} +1 -1
  155. package/dist/components/GrRadio/index.js +2 -2
  156. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-CVlgpUBr.js → GrRadioGroup-C8IcJuuF.js} +2 -2
  157. package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-CVlgpUBr.js.map → GrRadioGroup-C8IcJuuF.js.map} +1 -1
  158. package/dist/components/GrRadioGroup/index.js +2 -2
  159. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BMvXREcv.js +221 -0
  160. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BMvXREcv.js.map +1 -0
  161. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CzdTh4gd.js +782 -0
  162. package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CzdTh4gd.js.map +1 -0
  163. package/dist/components/GrResponseErrorBanner/index.js +3 -0
  164. package/dist/components/GrSegmented/chunks/{GrSegmented-BPl1koHc.js → GrSegmented-BRmwBsEG.js} +1 -1
  165. package/dist/components/GrSegmented/chunks/{GrSegmented-BPl1koHc.js.map → GrSegmented-BRmwBsEG.js.map} +1 -1
  166. package/dist/components/GrSegmented/index.js +2 -2
  167. package/dist/components/GrSelect/chunks/{GrSelect-C3NAfTqL.js → GrSelect-W9lbAjRZ.js} +2 -2
  168. package/dist/components/GrSelect/chunks/{GrSelect-C3NAfTqL.js.map → GrSelect-W9lbAjRZ.js.map} +1 -1
  169. package/dist/components/GrSelect/index.js +2 -2
  170. package/dist/components/GrSidebar/chunks/{GrSidebar-DVucgcfV.js.map → GrSidebar-BpBtAGBs.js.map} +1 -1
  171. package/dist/components/GrSidebar/index.js +2 -2
  172. package/dist/components/GrSkeleton/chunks/{GrSkeleton-CDTvCSoH.js.map → GrSkeleton-URyMkBqI.js.map} +1 -1
  173. package/dist/components/GrSkeleton/index.js +2 -2
  174. package/dist/components/GrSwitch/chunks/{GrSwitch-Bnamgqb2.js → GrSwitch-29h0QhMO.js} +1 -1
  175. package/dist/components/GrSwitch/chunks/{GrSwitch-Bnamgqb2.js.map → GrSwitch-29h0QhMO.js.map} +1 -1
  176. package/dist/components/GrSwitch/index.js +2 -2
  177. package/dist/components/GrTable/chunks/{GrTable-CyQ9uw8A.js.map → GrTable-dTWUxzRm.js.map} +1 -1
  178. package/dist/components/GrTable/index.js +2 -2
  179. package/dist/components/GrTabs/chunks/{GrTabs-CiGmcmvm.js.map → GrTabs-D3ntDdtg.js.map} +1 -1
  180. package/dist/components/GrTabs/index.js +2 -2
  181. package/dist/components/GrTextarea/chunks/{GrTextarea-VBSc6A7D.js → GrTextarea-Cv6r2GuC.js} +1 -1
  182. package/dist/components/GrTextarea/chunks/{GrTextarea-VBSc6A7D.js.map → GrTextarea-Cv6r2GuC.js.map} +1 -1
  183. package/dist/components/GrTextarea/index.js +2 -2
  184. package/dist/components/GrToaster/chunks/{GrToaster-I1e-zCpf.js → GrToaster-DluJmR5D.js} +2 -2
  185. package/dist/components/GrToaster/chunks/{GrToaster-I1e-zCpf.js.map → GrToaster-DluJmR5D.js.map} +1 -1
  186. package/dist/components/GrToaster/index.js +2 -2
  187. package/dist/components/GrTooltip/chunks/{GrTooltip-CrV1gI_c.js.map → GrTooltip-B7I1AVIC.js.map} +1 -1
  188. package/dist/components/GrTooltip/index.js +2 -2
  189. package/dist/components/GrTree/chunks/{GrTree-Dlev9oBd.js → GrTree-B2SMU5Py.js} +1 -1
  190. package/dist/components/GrTree/chunks/{GrTree-Dlev9oBd.js.map → GrTree-B2SMU5Py.js.map} +1 -1
  191. package/dist/components/GrTree/index.js +2 -2
  192. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DkAIksRW.js → GrTreeSelect-C1abr5uH.js} +4 -4
  193. package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DkAIksRW.js.map → GrTreeSelect-C1abr5uH.js.map} +1 -1
  194. package/dist/components/GrTreeSelect/index.js +2 -2
  195. package/dist/directives/dropzone.js +1 -1
  196. package/dist/directives/loading.js +1 -1
  197. package/dist/fileValidation/index.js +1 -1
  198. package/dist/granular-provider-node.js +3 -3
  199. package/dist/granular-provider.js +1 -1
  200. package/dist/i18n/all.js +1 -1
  201. package/dist/i18n/index.js +2 -2
  202. package/dist/index.js +486 -1027
  203. package/dist/index.js.map +1 -1
  204. package/dist/types/src/components/GrBadge/grBadgeStyles.d.ts +1 -1
  205. package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +35 -2
  206. package/dist/types/src/components/GrDialogService/GrDialogServiceHost.vue.d.ts +3 -0
  207. package/dist/types/src/components/GrDialogService/config.d.ts +1 -0
  208. package/dist/types/src/components/GrDialogService/index.d.ts +4 -0
  209. package/dist/types/src/components/GrDialogService/store.d.ts +22 -0
  210. package/dist/types/src/components/GrDialogService/types.d.ts +141 -0
  211. package/dist/types/src/components/GrDialogService/useDialogService.d.ts +13 -0
  212. package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +3 -3
  213. package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +2 -2
  214. package/dist/types/src/components/GrInput/GrInput.vue.d.ts +3 -3
  215. package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +1 -1
  216. package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +4 -4
  217. package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +41 -2
  218. package/dist/types/src/components/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +1 -1
  219. package/dist/types/src/components/GrResponseErrorBanner/index.d.ts +2 -2
  220. package/dist/types/src/components/GrResponseErrorBanner/parsers/createResponseErrorClassifier.d.ts +27 -0
  221. package/dist/types/src/components/GrResponseErrorBanner/parsers/index.d.ts +2 -2
  222. package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +1 -1
  223. package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +2 -2
  224. package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +1 -1
  225. package/dist/types/src/index.d.ts +1 -0
  226. package/package.json +5 -1
  227. package/dist/chunks/arrow-up-DNXrMoAI.js.map +0 -1
  228. package/dist/chunks/config-C0b_3LJV.js.map +0 -1
  229. package/dist/chunks/config-C4AlNm912.js.map +0 -1
  230. package/dist/chunks/config-CxCAfXZ1.js.map +0 -1
  231. package/dist/chunks/config-DDEWvph-2.js.map +0 -1
  232. package/dist/chunks/config-DDLoUczC.js.map +0 -1
  233. package/dist/chunks/config-DQOSlWvp.js.map +0 -1
  234. package/dist/chunks/config-DnsISjD8.js.map +0 -1
  235. package/dist/chunks/config-DxqMXzNV2.js.map +0 -1
  236. package/dist/chunks/config-DxqpV-KM.js.map +0 -1
  237. package/dist/chunks/config-rxFL-6yF2.js.map +0 -1
  238. package/dist/chunks/grBadgeStyles-pqqbVgLk.js.map +0 -1
  239. package/dist/chunks/loader-circle-B2rWDk5u.js.map +0 -1
  240. package/dist/chunks/safelist-BF822K15.js.map +0 -1
  241. package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js +0 -32
  242. package/dist/components/GrBadge/chunks/GrBadge-wuIb4_2K.js.map +0 -1
  243. package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js.map +0 -1
  244. package/dist/components/GrFileUpload/chunks/GrFileUpload-DYRERhI2.js.map +0 -1
  245. package/dist/components/GrPromptDialog/chunks/GrPromptDialog-CUMW6_58.js.map +0 -1
  246. /package/dist/chunks/{_plugin-vue_export-helper-BG_EqiDU.js → _plugin-vue_export-helper-DQR7Sy7Q.js} +0 -0
  247. /package/dist/chunks/{adapter-CRyH4YC8.js → adapter-BqqjEZGU.js} +0 -0
  248. /package/dist/chunks/{arrow-up-DNXrMoAI.js → arrow-up-DZdIrpaF.js} +0 -0
  249. /package/dist/chunks/{config-C0b_3LJV.js → config-72sW9Bag2.js} +0 -0
  250. /package/dist/chunks/{config-B8rC_K97.js → config-B1kFmhpM.js} +0 -0
  251. /package/dist/chunks/{config-BhvNm4Pp.js → config-B2YTEe_h.js} +0 -0
  252. /package/dist/chunks/{config-C5TN9J2Z.js → config-BK6Odc3T.js} +0 -0
  253. /package/dist/chunks/{config-C0rHS1-l.js → config-BOdu-O_B.js} +0 -0
  254. /package/dist/chunks/{config-D27BL0H9.js → config-BU0olrvr.js} +0 -0
  255. /package/dist/chunks/{config-DxqMXzNV2.js → config-B_nSBc7W.js} +0 -0
  256. /package/dist/chunks/{config-DbqFk-IW.js → config-BbKroFtR.js} +0 -0
  257. /package/dist/chunks/{config-DQOSlWvp.js → config-Bcf-8XlK2.js} +0 -0
  258. /package/dist/chunks/{config-C_AOYGBr.js → config-BduXEXjt.js} +0 -0
  259. /package/dist/chunks/{config-DnsISjD8.js → config-BeQuykDk2.js} +0 -0
  260. /package/dist/chunks/{config-C_-02Pu-.js → config-BgBWt9-A.js} +0 -0
  261. /package/dist/chunks/{config-Dusr9jcE.js → config-BnWSHTEU.js} +0 -0
  262. /package/dist/chunks/{config-DxqpV-KM.js → config-C6zT56Jc2.js} +0 -0
  263. /package/dist/chunks/{config-Cn8TG49a.js → config-CUwF4E4R.js} +0 -0
  264. /package/dist/chunks/{config-wo-ncgTH.js → config-CdJpnjDj.js} +0 -0
  265. /package/dist/chunks/{config-CxCAfXZ1.js → config-CetsgpaZ2.js} +0 -0
  266. /package/dist/chunks/{config-D1DI3roo.js → config-Ci9nXGUV.js} +0 -0
  267. /package/dist/chunks/{config-CjEplP6D.js → config-CpMYmvVT.js} +0 -0
  268. /package/dist/chunks/{config-D98m8iyz.js → config-CvGdaXvH.js} +0 -0
  269. /package/dist/chunks/{config-CtomKf-k.js → config-D4s_QWVP.js} +0 -0
  270. /package/dist/chunks/{config-D32znLtV2.js → config-D6Oe3blW2.js} +0 -0
  271. /package/dist/chunks/{config-CVnluhKO.js → config-DF_RlCIO.js} +0 -0
  272. /package/dist/chunks/{config-C4qAA0Sb.js → config-DSBlHQVa.js} +0 -0
  273. /package/dist/chunks/{config-Mp9DJ9Mq2.js → config-DaHI5bD_2.js} +0 -0
  274. /package/dist/chunks/{config-3SftO0uG.js → config-Dcb7xK-C.js} +0 -0
  275. /package/dist/chunks/{config-DDEWvph-2.js → config-DmjwIqx1.js} +0 -0
  276. /package/dist/chunks/{config-D6Af6WZw.js → config-DoBk_CzG.js} +0 -0
  277. /package/dist/chunks/{config-DDLoUczC.js → config-Dzd6BzIN2.js} +0 -0
  278. /package/dist/chunks/{config-Db4BEG8Y.js → config-O1_FTqD3.js} +0 -0
  279. /package/dist/chunks/{config-C9AOlKah.js → config-V3LF-b_F.js} +0 -0
  280. /package/dist/chunks/{config-rxFL-6yF2.js → config-_3De4HFf.js} +0 -0
  281. /package/dist/chunks/{config-DudL02ag.js → config-iuMz79Mg.js} +0 -0
  282. /package/dist/chunks/{config-DJWf0kWe.js → config-vcDVCYXo.js} +0 -0
  283. /package/dist/chunks/{en-QNZhjmSJ.js → en-foQA8imU.js} +0 -0
  284. /package/dist/chunks/{es-C1c5XsIK.js → es-DZFSojYL.js} +0 -0
  285. /package/dist/chunks/{fileValidation-CwJA8Vmn.js → fileValidation-c_iBg74s.js} +0 -0
  286. /package/dist/chunks/{grButtonStyles-BxZW2x0-.js → grButtonStyles-DKuXUemw.js} +0 -0
  287. /package/dist/chunks/{grDropdownStyles-DMp7RrI9.js → grDropdownStyles-B41mVR1H.js} +0 -0
  288. /package/dist/chunks/{grLoadingStyles-CrxZHFL0.js → grLoadingStyles-DmI-SJ3i.js} +0 -0
  289. /package/dist/chunks/{grSelectStyles-DTAYNzxn.js → grSelectStyles-pUt19VGy.js} +0 -0
  290. /package/dist/chunks/{grStyle-5EMYYctb.js → grStyle-CUaTmpyW.js} +0 -0
  291. /package/dist/chunks/{loader-circle-B2rWDk5u.js → loader-circle-BUntgosj.js} +0 -0
  292. /package/dist/chunks/{ru-DcF7ciz0.js → ru-LhkPpPIl.js} +0 -0
  293. /package/dist/chunks/{safelist-BF822K15.js → safelist-_UVzJrgE2.js} +0 -0
  294. /package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-CxtamOZ-.js → GrBadgeWrap-BEnE9DyJ.js} +0 -0
  295. /package/dist/components/GrBottomNav/chunks/{GrBottomNav-CsmQ7mTJ.js → GrBottomNav-XPHwd7UQ.js} +0 -0
  296. /package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CBj4tpms.js → GrButtonGroup-CPOH6V-P.js} +0 -0
  297. /package/dist/components/GrEmptyState/chunks/{GrEmptyState-BLbMJFW-.js → GrEmptyState-Dj2V5GaX.js} +0 -0
  298. /package/dist/components/GrFormField/chunks/{GrFormField-C1oWTT_0.js → GrFormField-U7c_aDPJ.js} +0 -0
  299. /package/dist/components/GrFormSection/chunks/{GrFormSection-CWBk2EUm.js → GrFormSection-DpGhY7MX.js} +0 -0
  300. /package/dist/components/GrImageViewer/chunks/{GrImageViewer-Cpj5zyZQ.js → GrImageViewer-Cn1X-sWS.js} +0 -0
  301. /package/dist/components/GrInput/chunks/{GrInput-CfO2RsM-.js → GrInput-gwFQ1sk4.js} +0 -0
  302. /package/dist/components/GrSidebar/chunks/{GrSidebar-DVucgcfV.js → GrSidebar-BpBtAGBs.js} +0 -0
  303. /package/dist/components/GrSkeleton/chunks/{GrSkeleton-CDTvCSoH.js → GrSkeleton-URyMkBqI.js} +0 -0
  304. /package/dist/components/GrTable/chunks/{GrTable-CyQ9uw8A.js → GrTable-dTWUxzRm.js} +0 -0
  305. /package/dist/components/GrTabs/chunks/{GrTabs-CiGmcmvm.js → GrTabs-D3ntDdtg.js} +0 -0
  306. /package/dist/components/GrTooltip/chunks/{GrTooltip-CrV1gI_c.js → GrTooltip-B7I1AVIC.js} +0 -0
package/dist/index.js CHANGED
@@ -1,1095 +1,554 @@
1
1
  import { t as GrAlert_default } from "./components/GrAlert/chunks/GrAlert-HyCjYJeL.js";
2
2
  import { t as grAlertConfig } from "./chunks/config-BV4vBzdm.js";
3
+ import "./components/GrAlert/index.js";
3
4
  import { n as grAvatarSafelist, t as grAvatarConfig } from "./chunks/config-CU_CBd0k.js";
4
5
  import { t as GrAvatar_default } from "./components/GrAvatar/chunks/GrAvatar-BjnPKNAL.js";
5
- import { t as GrBadge_default } from "./components/GrBadge/chunks/GrBadge-wuIb4_2K.js";
6
- import { n as grBadgeSafelist, t as grBadgeConfig } from "./chunks/config-BaMO9dQh.js";
6
+ import { t as GrBadge_default } from "./components/GrBadge/chunks/GrBadge-Cs_cVfuO.js";
7
+ import { n as grBadgeSafelist, t as grBadgeConfig } from "./chunks/config-B61cX08u.js";
7
8
  import "./components/GrBadge/index.js";
8
- import { t as GrBadgeWrap_default } from "./components/GrBadgeWrap/chunks/GrBadgeWrap-CxtamOZ-.js";
9
- import { t as grBadgeWrapConfig } from "./chunks/config-C9AOlKah.js";
10
- import { t as GrBottomNav_default } from "./components/GrBottomNav/chunks/GrBottomNav-CsmQ7mTJ.js";
11
- import { t as grBottomNavConfig } from "./chunks/config-C_-02Pu-.js";
12
- import { r as grButtonClass } from "./chunks/grButtonStyles-BxZW2x0-.js";
13
- import { t as GrButton_default } from "./components/GrButton/chunks/GrButton-BmGdp8-4.js";
14
- import { n as grButtonSafelist, t as grButtonClassTokens } from "./chunks/safelist-BY7z8fOl.js";
15
- import { t as grButtonConfig } from "./chunks/config-Dkq0HeLe.js";
16
- import { t as GrButtonGroup_default } from "./components/GrButtonGroup/chunks/GrButtonGroup-CBj4tpms.js";
17
- import { t as grButtonGroupConfig } from "./chunks/config-Cn8TG49a.js";
9
+ import { t as GrBadgeWrap_default } from "./components/GrBadgeWrap/chunks/GrBadgeWrap-BEnE9DyJ.js";
10
+ import { t as grBadgeWrapConfig } from "./chunks/config-V3LF-b_F.js";
11
+ import { t as GrBottomNav_default } from "./components/GrBottomNav/chunks/GrBottomNav-XPHwd7UQ.js";
12
+ import { t as grBottomNavConfig } from "./chunks/config-BgBWt9-A.js";
13
+ import { r as grButtonClass } from "./chunks/grButtonStyles-DKuXUemw.js";
14
+ import { t as GrButton_default } from "./components/GrButton/chunks/GrButton-CPDKonoB.js";
15
+ import { n as grButtonSafelist, t as grButtonClassTokens } from "./chunks/safelist-DccvJqCE.js";
16
+ import { t as grButtonConfig } from "./chunks/config-3I3vqDW4.js";
17
+ import { t as GrButtonGroup_default } from "./components/GrButtonGroup/chunks/GrButtonGroup-CPOH6V-P.js";
18
+ import { t as grButtonGroupConfig } from "./chunks/config-CUwF4E4R.js";
18
19
  import "./components/GrButtonGroup/index.js";
19
- import { t as GrCard_default } from "./components/GrCard/chunks/GrCard-xtDcXBr7.js";
20
+ import { t as GrCard_default } from "./components/GrCard/chunks/GrCard-6yk1RRAQ.js";
20
21
  import { t as grCardConfig } from "./chunks/config-ChQxl75m.js";
21
22
  import { t as GrCheckbox_default } from "./components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js";
22
23
  import { t as grCheckboxConfig } from "./chunks/config-C9MblwGq.js";
23
- import { n as GrCollapse_default, r as GR_COLLAPSE_CONTEXT, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-HU20VTVn.js";
24
+ import { n as GrCollapse_default, r as GR_COLLAPSE_CONTEXT, t as GrCollapseItem_default } from "./components/GrCollapse/chunks/GrCollapse-CU94BTAR.js";
24
25
  import { t as GrIcon_default } from "./components/GrIcon/chunks/GrIcon-BV7RBU_0.js";
25
26
  import { t as grIconConfig } from "./chunks/config-DbghHyY_.js";
26
27
  import { t as grCollapseConfig } from "./chunks/config-D5ek7VSi.js";
27
28
  import { t as getGrModalPanelClass } from "./chunks/grModalStyles-Dv2NXBKi.js";
28
29
  import { t as GrModal_default } from "./components/GrModal/chunks/GrModal-gvfvlp7k.js";
29
30
  import { a as resolveGrDialogTitle, i as resolveGrDialogSectionConfig, n as DEFAULT_GR_DIALOG_FOOTER_CONFIG, r as DEFAULT_GR_DIALOG_HEADER_CONFIG, t as DEFAULT_GR_DIALOG_BODY_CONFIG } from "./chunks/dialogShared-BtXUk6Zc.js";
30
- import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-gObmaVEl.js";
31
- import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-DjGOX9Hd.js";
32
- import { t as grConfirmDialogConfig } from "./chunks/config-C_AOYGBr.js";
33
- import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-CyQ9uw8A.js";
34
- import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-QDOJWmdY.js";
35
- import { t as grDataTableConfig } from "./chunks/config-DJWf0kWe.js";
36
- import { t as grDialogSafelist } from "./chunks/safelist-BF822K15.js";
31
+ import { i as GrDialogFooter_default, n as GrDialogHeader_default, r as GrDialogCloseButton_default, t as GrDialog_default } from "./components/GrDialog/chunks/GrDialog-Ba3Ojcsq.js";
32
+ import { _ as DEFAULT_AUTO_HIDE_KINDS, a as extendDefaultParsers, c as problemDetailsParser, d as networkErrorParser, f as laravelValidationParser, g as abortErrorParser, h as fileValidationParser, i as defaultResponseErrorParsers, l as plainMessageParser, m as httpStatusParser, n as coreResponseErrorParsers, o as resolveResponseErrorTitle, p as jsonApiErrorParser, r as createResponseErrorClassifier, s as responseErrorParserPresets, t as GrResponseErrorBanner_default, u as normalizeError, v as DEFAULT_RESPONSE_ERROR_TEXTS, y as DEFAULT_TONE_BY_KIND } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-CzdTh4gd.js";
33
+ import { t as GrConfirmDialog_default } from "./components/GrConfirmDialog/chunks/GrConfirmDialog-BGmyfDd2.js";
34
+ import { t as grConfirmDialogConfig } from "./chunks/config-BduXEXjt.js";
35
+ import { t as GrTable_default } from "./components/GrTable/chunks/GrTable-dTWUxzRm.js";
36
+ import { t as GrDataTable_default } from "./components/GrDataTable/chunks/GrDataTable-ClcYiyc8.js";
37
+ import { t as grDataTableConfig } from "./chunks/config-vcDVCYXo.js";
38
+ import { t as grDialogSafelist } from "./chunks/safelist-_UVzJrgE2.js";
37
39
  import "./components/GrDialog/index.js";
38
- import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-DxqpV-KM.js";
39
- import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-BJL_gTxI.js";
40
+ import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-U7c_aDPJ.js";
41
+ import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-gwFQ1sk4.js";
42
+ import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-Du1aLfcA.js";
43
+ import { n as GrFormErrorBanner_default, r as GrUploadErrorBanner_default, t as useResponseError } from "./components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BMvXREcv.js";
44
+ import { n as grDrawerSafelist, t as grDrawerConfig } from "./chunks/config-C6zT56Jc2.js";
45
+ import { t as GrDrawer_default } from "./components/GrDrawer/chunks/GrDrawer-BW3wtI7h.js";
40
46
  import { vAutofocus } from "./directives/autofocus.js";
41
47
  import { vAutosize } from "./directives/autosize.js";
42
48
  import { vClickOutside } from "./directives/clickOutside.js";
43
- 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";
49
+ import { a as allowedExtensionsValidator, c as normalizeFiles, i as allowedMimeTypesValidator, l as runFileValidators, n as maxSizeMbValidator, o as acceptValidator, r as maxFileSizeBytesValidator, s as matchAccept, t as maxTotalSizeBytesValidator, u as FileValidationError } from "./chunks/fileValidation-c_iBg74s.js";
44
50
  import { vDropzone } from "./directives/dropzone.js";
45
51
  import { vHotkey } from "./directives/hotkey.js";
46
- import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-C3QZKwE-.js";
52
+ import { t as GrLoading_default } from "./components/GrLoading/chunks/GrLoading-mfyfghxs.js";
47
53
  import { createLoading, vLoading } from "./directives/loading.js";
48
- import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-BkACCXdp.js";
49
- import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-C4AlNm912.js";
54
+ import { t as GrDropdown_default } from "./components/GrDropdown/chunks/GrDropdown-DOvHKnih.js";
55
+ import { n as grDropdownSafelist, t as grDropdownConfig } from "./chunks/config-Br_qI3Za.js";
50
56
  import "./components/GrDropdown/index.js";
51
- import { a as GrDropdownMenuColumns_default, c as GrDropdownMenuList_default, i as GrDropdownMenuDivider_default, n as GrDropdownMenuGroup_default, o as GrDropdownMenuColumn_default, r as GrDropdownMenuHeader_default, s as GrDropdownMenu_default, t as GrDropdownMenuItem_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-BEenXrJw.js";
52
- import { t as grDropdownMenuConfig } from "./chunks/config-DDEWvph-2.js";
53
- import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-BLbMJFW-.js";
54
- import { t as grEmptyStateConfig } from "./chunks/config-Db4BEG8Y.js";
55
- import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-hQQK8cYh.js";
56
- import { i as GrUploadHttpError, n as GR_UPLOAD_STATE_IDLE, r as GrUploadAbortError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-DYRERhI2.js";
57
- import { t as grFileUploadConfig } from "./chunks/config-CVnluhKO.js";
58
- import { t as GrFormField_default } from "./components/GrFormField/chunks/GrFormField-C1oWTT_0.js";
59
- import { t as grFormFieldConfig } from "./chunks/config-3SftO0uG.js";
57
+ import { a as GrDropdownMenuColumns_default, c as GrDropdownMenuList_default, i as GrDropdownMenuDivider_default, n as GrDropdownMenuGroup_default, o as GrDropdownMenuColumn_default, r as GrDropdownMenuHeader_default, s as GrDropdownMenu_default, t as GrDropdownMenuItem_default } from "./components/GrDropdownMenu/chunks/GrDropdownMenu-CLPwbiyG.js";
58
+ import { t as grDropdownMenuConfig } from "./chunks/config-DmjwIqx1.js";
59
+ import { t as GrEmptyState_default } from "./components/GrEmptyState/chunks/GrEmptyState-Dj2V5GaX.js";
60
+ import { t as grEmptyStateConfig } from "./chunks/config-O1_FTqD3.js";
61
+ import { t as GrProgressBar_default } from "./components/GrProgressBar/chunks/GrProgressBar-C2HdYjp4.js";
62
+ import { i as GrUploadHttpError, n as GR_UPLOAD_STATE_IDLE, r as GrUploadAbortError, t as GrFileUpload_default } from "./components/GrFileUpload/chunks/GrFileUpload-BEKNB1RM.js";
63
+ import { t as grFileUploadConfig } from "./chunks/config-DF_RlCIO.js";
64
+ import { t as grFormFieldConfig } from "./chunks/config-Dcb7xK-C.js";
60
65
  import "./components/GrFormField/index.js";
61
- import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFile-deDPicM2.js";
62
- import { t as grFormFileConfig } from "./chunks/config-DbqFk-IW.js";
63
- import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-CWBk2EUm.js";
64
- import { t as grFormSectionConfig } from "./chunks/config-D6Af6WZw.js";
65
- import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer-Cpj5zyZQ.js";
66
- import { t as grImageViewerConfig } from "./chunks/config-D98m8iyz.js";
67
- import { t as GrInput_default } from "./components/GrInput/chunks/GrInput-CfO2RsM-.js";
68
- import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-CtomKf-k.js";
66
+ import { t as GrFormFile_default } from "./components/GrFormFile/chunks/GrFormFile-CIleXnfr.js";
67
+ import { t as grFormFileConfig } from "./chunks/config-BbKroFtR.js";
68
+ import { t as GrFormSection_default } from "./components/GrFormSection/chunks/GrFormSection-DpGhY7MX.js";
69
+ import { t as grFormSectionConfig } from "./chunks/config-DoBk_CzG.js";
70
+ import { t as GrImageViewer_default } from "./components/GrImageViewer/chunks/GrImageViewer-Cn1X-sWS.js";
71
+ import { t as grImageViewerConfig } from "./chunks/config-CvGdaXvH.js";
72
+ import { n as grInputSafelist, t as grInputConfig } from "./chunks/config-D4s_QWVP.js";
69
73
  import "./components/GrInput/index.js";
70
- import { n as grInputTagSafelist, t as grInputTagConfig } from "./chunks/config-Dusr9jcE.js";
71
- import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-G_VYJPF9.js";
72
- import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-CjEplP6D.js";
73
- import { t as GrLink_default } from "./components/GrLink/chunks/GrLink-BLPigqij.js";
74
- import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-BPjQf-72.js";
75
- import { t as grListConfig } from "./chunks/config-C4qAA0Sb.js";
76
- import { n as grLoadingSafelist, t as grLoadingConfig } from "./chunks/config-B44QVIge.js";
74
+ import { n as grInputTagSafelist, t as grInputTagConfig } from "./chunks/config-BnWSHTEU.js";
75
+ import { t as GrInputTag_default } from "./components/GrInputTag/chunks/GrInputTag-Dcj3F6rQ.js";
76
+ import { n as grLinkSafelist, t as grLinkConfig } from "./chunks/config-CpMYmvVT.js";
77
+ import { t as GrLink_default } from "./components/GrLink/chunks/GrLink-BMwn2iJ9.js";
78
+ import { n as GrList_default, t as GrListItem_default } from "./components/GrList/chunks/GrList-D8nM1FuV.js";
79
+ import { t as grListConfig } from "./chunks/config-DSBlHQVa.js";
80
+ import { n as grLoadingSafelist, t as grLoadingConfig } from "./chunks/config-d386uO3O.js";
77
81
  import "./components/GrLoading/index.js";
78
- import { n as grModalClassTokens, r as grModalSafelist, t as grModalConfig } from "./chunks/config-C5TN9J2Z.js";
82
+ import { n as grModalClassTokens, r as grModalSafelist, t as grModalConfig } from "./chunks/config-BK6Odc3T.js";
79
83
  import "./components/GrModal/index.js";
80
- import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-BoVuSZ-V.js";
81
- import { t as useGranularityTranslations } from "./chunks/granularityI18n-CXa_uN7f.js";
82
- import { t as grNavbarConfig } from "./chunks/config-D1DI3roo.js";
83
- import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-wo-ncgTH.js";
84
- import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-ECtFCIKV.js";
85
- import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-C3NAfTqL.js";
86
- import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-DW44c2-a.js";
87
- import { t as grPaginationConfig } from "./chunks/config-DudL02ag.js";
88
- import { n as grProgressBarSafelist, t as grProgressBarConfig } from "./chunks/config-ZJVOVgqR.js";
84
+ import { t as GrNavbar_default } from "./components/GrNavbar/chunks/GrNavbar-BH7XiF9q.js";
85
+ import { t as grNavbarConfig } from "./chunks/config-Ci9nXGUV.js";
86
+ import { n as grNumberInputSafelist, t as grNumberInputConfig } from "./chunks/config-CdJpnjDj.js";
87
+ import { t as GrNumberInput_default } from "./components/GrNumberInput/chunks/GrNumberInput-YIWhV85S.js";
88
+ import { t as GrSelect_default } from "./components/GrSelect/chunks/GrSelect-W9lbAjRZ.js";
89
+ import { t as GrPagination_default } from "./components/GrPagination/chunks/GrPagination-cD6rFO9W.js";
90
+ import { t as grPaginationConfig } from "./chunks/config-iuMz79Mg.js";
91
+ import { n as grProgressBarSafelist, t as grProgressBarConfig } from "./chunks/config-CFf7xaG1.js";
89
92
  import "./components/GrProgressBar/index.js";
90
- import { t as GrPromptDialog_default } from "./components/GrPromptDialog/chunks/GrPromptDialog-CUMW6_58.js";
91
- import { t as grPromptDialogConfig } from "./chunks/config-B8rC_K97.js";
92
- import { n as grRadioSafelist, t as grRadioConfig } from "./chunks/config-BXffa3ta.js";
93
- import { n as GR_RADIO_GROUP_CONTEXT, t as GrRadio_default } from "./components/GrRadio/chunks/GrRadio-B_t_ZNVl.js";
94
- import { t as GrRadioGroup_default } from "./components/GrRadioGroup/chunks/GrRadioGroup-CVlgpUBr.js";
95
- import { t as grRadioGroupConfig } from "./chunks/config-D27BL0H9.js";
96
- import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-BhvNm4Pp.js";
97
- import { t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-BPl1koHc.js";
98
- import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-XoANT5mU.js";
93
+ import { t as grPromptDialogConfig } from "./chunks/config-B1kFmhpM.js";
94
+ import { n as grRadioSafelist, t as grRadioConfig } from "./chunks/config-Cp_XHsze.js";
95
+ import { n as GR_RADIO_GROUP_CONTEXT, t as GrRadio_default } from "./components/GrRadio/chunks/GrRadio-IFU9Hiu2.js";
96
+ import { t as GrRadioGroup_default } from "./components/GrRadioGroup/chunks/GrRadioGroup-C8IcJuuF.js";
97
+ import { t as grRadioGroupConfig } from "./chunks/config-BU0olrvr.js";
98
+ import { n as grSegmentedSafelist, t as grSegmentedConfig } from "./chunks/config-B2YTEe_h.js";
99
+ import { t as GrSegmented_default } from "./components/GrSegmented/chunks/GrSegmented-BRmwBsEG.js";
100
+ import { n as grSelectSafelist, t as grSelectConfig } from "./chunks/config-BY81UKv0.js";
99
101
  import "./components/GrSelect/index.js";
100
- import { t as GrSidebar_default } from "./components/GrSidebar/chunks/GrSidebar-DVucgcfV.js";
101
- import { t as grSidebarConfig } from "./chunks/config-DnsISjD8.js";
102
- import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-CDTvCSoH.js";
103
- import { t as grSkeletonConfig } from "./chunks/config-Mp9DJ9Mq2.js";
104
- import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-rxFL-6yF2.js";
105
- import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-Bnamgqb2.js";
106
- import { t as grTableConfig } from "./chunks/config-DQOSlWvp.js";
102
+ import { t as GrSidebar_default } from "./components/GrSidebar/chunks/GrSidebar-BpBtAGBs.js";
103
+ import { t as grSidebarConfig } from "./chunks/config-BeQuykDk2.js";
104
+ import { t as GrSkeleton_default } from "./components/GrSkeleton/chunks/GrSkeleton-URyMkBqI.js";
105
+ import { t as grSkeletonConfig } from "./chunks/config-DaHI5bD_2.js";
106
+ import { n as grSwitchSafelist, t as grSwitchConfig } from "./chunks/config-_3De4HFf.js";
107
+ import { t as GrSwitch_default } from "./components/GrSwitch/chunks/GrSwitch-29h0QhMO.js";
108
+ import { t as grTableConfig } from "./chunks/config-Bcf-8XlK2.js";
107
109
  import "./components/GrTable/index.js";
108
- import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-CiGmcmvm.js";
109
- import { t as grTabsConfig } from "./chunks/config-DDLoUczC.js";
110
- import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-DxqMXzNV2.js";
111
- import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-VBSc6A7D.js";
110
+ import { t as GrTabs_default } from "./components/GrTabs/chunks/GrTabs-D3ntDdtg.js";
111
+ import { t as grTabsConfig } from "./chunks/config-Dzd6BzIN2.js";
112
+ import { n as grTextareaSafelist, t as grTextareaConfig } from "./chunks/config-B_nSBc7W.js";
113
+ import { t as GrTextarea_default } from "./components/GrTextarea/chunks/GrTextarea-Cv6r2GuC.js";
112
114
  import { useToast } from "./composables/useToast.js";
113
- import { n as grToasterSafelist, t as grToasterConfig } from "./chunks/config-CxCAfXZ1.js";
114
- import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-I1e-zCpf.js";
115
- import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-CrV1gI_c.js";
116
- import { t as grTooltipConfig } from "./chunks/config-C0rHS1-l.js";
117
- import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-Dlev9oBd.js";
118
- import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-D32znLtV2.js";
119
- import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-C0b_3LJV.js";
120
- import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-DkAIksRW.js";
115
+ import { n as grToasterSafelist, t as grToasterConfig } from "./chunks/config-CetsgpaZ2.js";
116
+ import { t as GrToaster_default } from "./components/GrToaster/chunks/GrToaster-DluJmR5D.js";
117
+ import { t as GrTooltip_default } from "./components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js";
118
+ import { t as grTooltipConfig } from "./chunks/config-BOdu-O_B.js";
119
+ import { t as GrTree_default } from "./components/GrTree/chunks/GrTree-B2SMU5Py.js";
120
+ import { n as grTreeSafelist, t as grTreeConfig } from "./chunks/config-D6Oe3blW2.js";
121
+ import { n as grTreeSelectSafelist, t as grTreeSelectConfig } from "./chunks/config-72sW9Bag2.js";
122
+ import { t as GrTreeSelect_default } from "./components/GrTreeSelect/chunks/GrTreeSelect-C1abr5uH.js";
121
123
  import { initThemeEarly, useTheme } from "./composables/useTheme.js";
122
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, renderList, shallowRef, toDisplayString, withCtx } from "vue";
123
- //#region src/components/GrResponseErrorBanner/responseError.defaults.ts
124
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, mergeProps, nextTick, onBeforeUnmount, openBlock, reactive, ref, render, shallowRef, toDisplayString, watch, withCtx } from "vue";
125
+ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
126
+ //#region src/components/GrDialogService/store.ts
124
127
  /**
125
- * Default English texts. Any field can be overridden via the `texts` prop
126
- * on `GrResponseErrorBanner` or the `texts` option of `useResponseError`.
128
+ * Модульный синглтон очереди диалогов: единый источник правды для всех
129
+ * вызовов сервиса. Хост-компонент рендерит только `queue[0]` это
130
+ * сериализует диалоги (FIFO) и исключает конкуренцию за фокус-трап.
127
131
  */
128
- var DEFAULT_RESPONSE_ERROR_TEXTS = {
129
- networkTitle: "No connection to the server",
130
- networkMessage: "Check your internet connection and try again.",
131
- abortedTitle: "Request cancelled",
132
- abortedMessage: "The request was cancelled.",
133
- validationTitle: "Check the data",
134
- validationMessage: "The server returned a validation error. Fix the fields and try again.",
135
- clientTitle: "Request error",
136
- clientMessage: "The server rejected the request.",
137
- serverTitle: "Server error",
138
- serverMessage: "A server error occurred. Please try again.",
139
- unknownTitle: "Something went wrong",
140
- unknownMessage: "The operation could not be completed. Please try again.",
141
- retryLabel: "Retry",
142
- dismissLabel: "Dismiss"
143
- };
144
- /**
145
- * Маппинг `kind` → `tone` по умолчанию. Применяется внутри баннера, если
146
- * пользователь не передал `tone` или `toneByKind`. Цель — визуально отделить
147
- * «исправь ввод» (warning) от «упало по сети/серверу» (danger).
148
- */
149
- var DEFAULT_TONE_BY_KIND = {
150
- network: "danger",
151
- aborted: "info",
152
- validation: "warning",
153
- client: "warning",
154
- server: "danger",
155
- unknown: "danger"
156
- };
157
- /**
158
- * `kind`'ы, которые по умолчанию не показываются (баннер скрыт).
159
- * Семантика: отмена пользователем — не «ошибка», UI обычно тихо проглатывает.
160
- * Пользователь может переопределить через `autoHideKinds: []`, чтобы показать info-плашку.
161
- */
162
- var DEFAULT_AUTO_HIDE_KINDS = [];
163
- //#endregion
164
- //#region src/components/GrResponseErrorBanner/parsers/abortErrorParser.ts
165
- /**
166
- * Распознаёт отмену запроса клиентом.
167
- *
168
- * Триггеры:
169
- * - `ctx.isAbort === true` (выставляется `normalizeError` для `AbortError`,
170
- * axios `isCancel`/`ERR_CANCELED`, xhr `status === 0 && readyState === 4`).
171
- *
172
- * Возвращает `kind: 'aborted'` и `stop: true` — другие парсеры пропускаются,
173
- * чтобы случайный `status === 0` не интерпретировался как сетевая ошибка.
174
- *
175
- * По умолчанию `aborted` показывается info-плашкой; чтобы скрыть совсем —
176
- * добавьте `'aborted'` в `autoHideKinds`.
177
- */
178
- var abortErrorParser = (ctx) => {
179
- if (!ctx.isAbort) return null;
180
- return {
181
- kind: "aborted",
182
- message: ctx.texts.abortedMessage,
183
- stop: true
184
- };
185
- };
186
- //#endregion
187
- //#region src/components/GrResponseErrorBanner/parsers/fileValidationParser.ts
188
- /**
189
- * Распознаёт `FileValidationError` от `GrFileUpload` (или совместимый по форме
190
- * объект). Не зависит от жёсткого импорта класса — определяет по `name`.
191
- *
192
- * Активируется, если `ctx.raw.name === 'FileValidationError'` и есть массив
193
- * `issues`/`errors` с полями `{ file?, code?, message }`.
194
- *
195
- * Возвращает `kind: 'validation'` и `stop: true` — это локальная клиентская
196
- * валидация, незачем дальше идти по HTTP-парсерам.
197
- */
198
- var fileValidationParser = (ctx) => {
199
- const raw = ctx.raw;
200
- if (!raw || typeof raw !== "object") return null;
201
- if (raw.name !== "FileValidationError") return null;
202
- const list = raw.issues ?? raw.errors ?? [];
203
- const details = [];
204
- for (const it of list) {
205
- if (!it || typeof it !== "object") continue;
206
- const msg = typeof it.message === "string" ? it.message : "";
207
- if (!msg) continue;
208
- const fileName = it.file?.name;
209
- details.push(fileName ? `${fileName}: ${msg}` : msg);
210
- }
211
- return {
212
- kind: "validation",
213
- message: raw.message || ctx.texts.validationMessage,
214
- details: details.length ? details : void 0,
215
- stop: true
216
- };
217
- };
218
- //#endregion
219
- //#region src/components/GrResponseErrorBanner/parsers/httpStatusParser.ts
220
- /**
221
- * Базовая классификация по HTTP-статусу.
222
- *
223
- * Правила:
224
- * - `400` / `422` ⇒ `kind: 'validation'`,
225
- * - остальные `4xx` ⇒ `kind: 'client'`,
226
- * - `>= 500` ⇒ `kind: 'server'`.
227
- *
228
- * Не использует `stop` — даёт более специализированным парсерам
229
- * (Laravel/JSON:API/RFC 7807) уточнить сообщение и `fieldErrors`.
230
- *
231
- * `message` берёт из `ctx.texts` как осмысленный фолбэк.
232
- */
233
- var httpStatusParser = (ctx) => {
234
- const status = ctx.status;
235
- if (typeof status !== "number") return null;
236
- if (status >= 500) return {
237
- kind: "server",
238
- status,
239
- message: ctx.texts.serverMessage
240
- };
241
- if (status === 400 || status === 422) return {
242
- kind: "validation",
243
- status,
244
- message: ctx.texts.validationMessage
245
- };
246
- if (status >= 400) return {
247
- kind: "client",
248
- status,
249
- message: ctx.texts.clientMessage
250
- };
251
- return null;
252
- };
253
- //#endregion
254
- //#region src/components/GrResponseErrorBanner/parsers/jsonApiErrorParser.ts
255
- /**
256
- * Парсер JSON:API-стиля:
257
- *
258
- * ```json
259
- * { "errors": [
260
- * { "status": "422", "title": "Invalid Attribute",
261
- * "detail": "Email is required.",
262
- * "source": { "pointer": "/data/attributes/email" } }
263
- * ] }
264
- * ```
265
- *
266
- * Активируется, когда `ctx.body.errors` — массив объектов с `title`/`detail`.
267
- * Поле извлекается из последнего сегмента `source.pointer`. Все `detail`
268
- * собираются в `details`, первый `title` — в `message`.
269
- */
270
- var jsonApiErrorParser = (ctx) => {
271
- const body = ctx.body;
272
- if (!body || typeof body !== "object") return null;
273
- const errors = body.errors;
274
- if (!Array.isArray(errors) || errors.length === 0) return null;
275
- const first = errors[0];
276
- if (!first || typeof first !== "object") return null;
277
- const has = (key) => key in first;
278
- if (!has("title") && !has("detail") && !has("source")) return null;
279
- const fieldErrorsMap = /* @__PURE__ */ new Map();
280
- const details = [];
281
- let message;
282
- for (const e of errors) {
283
- if (!e || typeof e !== "object") continue;
284
- const eo = e;
285
- const text = typeof eo.detail === "string" && eo.detail || typeof eo.title === "string" && eo.title || "";
286
- if (!text) continue;
287
- if (!message && typeof eo.title === "string") message = eo.title;
288
- const pointer = typeof eo.source?.pointer === "string" ? eo.source.pointer : "";
289
- const field = pointer ? pointer.split("/").filter(Boolean).pop() : void 0;
290
- if (field) {
291
- const list = fieldErrorsMap.get(field) ?? [];
292
- list.push(text);
293
- fieldErrorsMap.set(field, list);
294
- }
295
- details.push(text);
296
- }
297
- if (!details.length) return null;
298
- const fieldErrors = Array.from(fieldErrorsMap, ([field, messages]) => ({
299
- field,
300
- messages
301
- }));
302
- const kind = fieldErrors.length ? "validation" : void 0;
303
- return {
304
- kind,
305
- message: message || (kind === "validation" ? ctx.texts.validationMessage : ctx.texts.clientMessage),
306
- details,
307
- fieldErrors: fieldErrors.length ? fieldErrors : void 0
308
- };
309
- };
310
- //#endregion
311
- //#region src/components/GrResponseErrorBanner/parsers/laravelValidationParser.ts
312
- /**
313
- * Парсит Laravel-формат ответа об ошибке валидации:
314
- *
315
- * ```json
316
- * { "message": "The given data was invalid.",
317
- * "errors": { "file": ["The file is required."], "amount": ["..."] } }
318
- * ```
319
- *
320
- * Активируется при наличии `ctx.body.errors` как plain-объекта (значения —
321
- * массив строк или строка). Если есть `fieldErrors`, повышает `kind` до
322
- * `validation` независимо от статуса (полезно, когда сервер прислал 200/4xx
323
- * без 422). `message` берётся из `body.message` / `body.error`.
324
- */
325
- var laravelValidationParser = (ctx) => {
326
- const body = ctx.body;
327
- if (!body || typeof body !== "object" || Array.isArray(body)) return null;
328
- const data = body;
329
- const errors = data.errors;
330
- if (!errors || typeof errors !== "object" || Array.isArray(errors)) return null;
331
- const fieldErrors = [];
332
- for (const [field, raw] of Object.entries(errors)) {
333
- const messages = Array.isArray(raw) ? raw.filter((m) => typeof m === "string") : typeof raw === "string" ? [raw] : [];
334
- if (messages.length) fieldErrors.push({
335
- field,
336
- messages
337
- });
338
- }
339
- if (!fieldErrors.length) return null;
340
- return {
341
- kind: "validation",
342
- message: typeof data.message === "string" && data.message || typeof data.error === "string" && data.error || ctx.texts.validationMessage,
343
- details: fieldErrors.flatMap((fe) => fe.messages),
344
- fieldErrors
345
- };
346
- };
347
- //#endregion
348
- //#region src/components/GrResponseErrorBanner/parsers/networkErrorParser.ts
349
- /**
350
- * Распознаёт транспортные ошибки **без ответа сервера**: отсутствие интернета,
351
- * DNS-фейл, CORS-preflight, fetch `TypeError('Failed to fetch')`,
352
- * axios `ERR_NETWORK`/`ECONNABORTED`.
353
- *
354
- * Триггеры:
355
- * - `ctx.isNetwork === true` (выставлено `normalizeError`),
356
- * - либо нет ни `status`, ни `body`, ни признака отмены, но есть исходная
357
- * ошибка с `code === 'ERR_NETWORK'` / `message ~ /network|fetch/i/`.
358
- *
359
- * Возвращает `kind: 'network'` и `stop: true`.
360
- */
361
- var networkErrorParser = (ctx) => {
362
- if (ctx.isAbort) return null;
363
- if (ctx.isNetwork) return {
364
- kind: "network",
365
- message: ctx.texts.networkMessage,
366
- stop: true
367
- };
368
- if (typeof ctx.status !== "number" && ctx.body == null && ctx.raw && typeof ctx.raw === "object") {
369
- const r = ctx.raw;
370
- if (r.code === "ERR_NETWORK" || typeof r.message === "string" && /network|failed to fetch/i.test(r.message)) return {
371
- kind: "network",
372
- message: ctx.texts.networkMessage,
373
- stop: true
374
- };
375
- }
376
- return null;
377
- };
378
- //#endregion
379
- //#region src/components/GrResponseErrorBanner/parsers/normalizeError.ts
380
- /**
381
- * Универсально приводит «сырой» вход к {@link NormalizedRawError}.
382
- *
383
- * Поддерживаемые источники:
384
- * - **axios** — `AxiosError` с `response.status`/`response.data`/`response.headers`,
385
- * либо `request` без `response` + `code === 'ERR_NETWORK'`, либо `code === 'ERR_CANCELED'`.
386
- * - **fetch `Response`** — объект `Response` с `ok=false`. Тело читается через
387
- * `clone().json()` (с фолбэком на `.text()`); поэтому функция асинхронная.
388
- * - **fetch `TypeError`** — `TypeError('Failed to fetch')` ⇒ `isNetwork=true`.
389
- * - **`{ response: Response, body: unknown }`** — если потребитель уже прочитал тело сам.
390
- * - **`XMLHttpRequest`** / `{ status, responseText, response }` — пара полей.
391
- * - **`AbortError` / `DOMException`** ⇒ `isAbort=true`.
392
- * - **`Error`/строка/произвольный объект** — кладётся в `body`/`raw` как есть.
393
- *
394
- * Цель — отделить «откуда пришла ошибка» от «как её классифицировать»: парсеры
395
- * работают только с нормализованным `ResponseErrorContext`, не зная о транспорте.
396
- */
397
- async function normalizeError(raw) {
398
- if (isPlainNormalized(raw)) return {
399
- ...raw,
400
- raw
401
- };
402
- if (isResponseEnvelope(raw)) {
403
- const res = raw.response;
404
- return {
405
- raw,
406
- status: res.status,
407
- body: raw.body,
408
- headers: readHeaders(res)
409
- };
410
- }
411
- if (isFetchResponse(raw)) {
412
- const body = await readFetchBody(raw);
413
- return {
414
- raw,
415
- status: raw.status,
416
- body,
417
- headers: readHeaders(raw)
418
- };
419
- }
420
- if (isXhr(raw)) {
421
- const body = parseMaybeJson(raw.responseText) ?? raw.response;
422
- return {
423
- raw,
424
- status: typeof raw.status === "number" ? raw.status : void 0,
425
- body,
426
- isAbort: raw.status === 0 && raw.readyState === 4
427
- };
428
- }
429
- if (isAxiosLike(raw)) {
430
- const e = raw;
431
- const status = e.response?.status;
432
- const code = e.code;
433
- const isAbort = code === "ERR_CANCELED" || code === "CANCELED" || e.__CANCEL__ === true;
434
- const isNetwork = !e.response && (code === "ERR_NETWORK" || code === "ECONNABORTED");
435
- return {
436
- raw,
437
- status,
438
- body: e.response?.data,
439
- headers: normalizeHeaderRecord(e.response?.headers),
440
- isAbort,
441
- isNetwork
442
- };
443
- }
444
- if (isAbortError(raw)) return {
445
- raw,
446
- isAbort: true
447
- };
448
- if (raw instanceof TypeError && /fetch|network/i.test(raw.message || "")) return {
449
- raw,
450
- isNetwork: true
451
- };
452
- if (raw instanceof Error) return {
453
- raw,
454
- body: { message: raw.message }
455
- };
456
- if (typeof raw === "string") return {
457
- raw,
458
- body: { message: raw }
459
- };
460
- if (raw && typeof raw === "object") return {
461
- raw,
462
- body: raw
463
- };
464
- return { raw };
465
- }
466
- function isPlainNormalized(v) {
467
- if (!v || typeof v !== "object") return false;
468
- const o = v;
469
- return "raw" in o && ("status" in o || "body" in o || "isAbort" in o || "isNetwork" in o || "headers" in o);
470
- }
471
- function isResponseEnvelope(v) {
472
- return !!v && typeof v === "object" && "response" in v && isFetchResponse(v.response);
473
- }
474
- function isFetchResponse(v) {
475
- return typeof Response !== "undefined" && v instanceof Response;
476
- }
477
- function isXhr(v) {
478
- return typeof XMLHttpRequest !== "undefined" && v instanceof XMLHttpRequest;
479
- }
480
- function isAxiosLike(v) {
481
- if (!v || typeof v !== "object") return false;
482
- const o = v;
483
- return o.isAxiosError === true || "response" in o && typeof o.response === "object" && o.response !== null || "code" in o && typeof o.code === "string";
484
- }
485
- function isAbortError(v) {
486
- if (!v || typeof v !== "object") return false;
487
- const o = v;
488
- return o.name === "AbortError" || o.name === "CanceledError" || o.code === "ERR_CANCELED";
489
- }
490
- async function readFetchBody(res) {
491
- if (res.bodyUsed) return void 0;
492
- try {
493
- const text = await res.clone().text();
494
- return parseMaybeJson(text) ?? text;
495
- } catch {
496
- return;
497
- }
498
- }
499
- function readHeaders(res) {
500
- const out = {};
501
- res.headers.forEach((value, key) => {
502
- out[key.toLowerCase()] = value;
503
- });
504
- return out;
505
- }
506
- function normalizeHeaderRecord(h) {
507
- if (!h || typeof h !== "object") return void 0;
508
- const out = {};
509
- for (const [k, v] of Object.entries(h)) if (typeof v === "string") out[k.toLowerCase()] = v;
510
- return out;
511
- }
512
- function parseMaybeJson(text) {
513
- if (typeof text !== "string" || !text) return void 0;
514
- try {
515
- return JSON.parse(text);
516
- } catch {
517
- return;
518
- }
132
+ var dialogQueue = reactive([]);
133
+ var counter = 0;
134
+ function makeDialogId() {
135
+ counter += 1;
136
+ return `gr-dialog-${Date.now()}-${counter}`;
519
137
  }
520
138
  //#endregion
521
- //#region src/components/GrResponseErrorBanner/parsers/plainMessageParser.ts
522
- /**
523
- * Финальный фолбэк-парсер. Достаёт хоть какое-нибудь человекочитаемое
524
- * сообщение, чтобы баннер не был пустым.
525
- *
526
- * Источники (по приоритету):
527
- * 1. `ctx.body` — если строка ⇒ message,
528
- * 2. `ctx.body[messageKey]` (default `'message'`),
529
- * 3. `ctx.body.error` (строка),
530
- * 4. `ctx.raw.message` (для голых `Error`).
531
- *
532
- * Не выставляет `kind` — оставляет на усмотрение классификатора.
533
- * Использует ключ `messageKey` из `ctx.meta._messageKey`, если задан.
534
- */
535
- var plainMessageParser = (ctx) => {
536
- const messageKey = ctx.meta._messageKey || "message";
537
- if (typeof ctx.body === "string" && ctx.body.trim()) return { message: ctx.body };
538
- if (ctx.body && typeof ctx.body === "object") {
539
- const data = ctx.body;
540
- const fromKey = data[messageKey];
541
- if (typeof fromKey === "string" && fromKey) return { message: fromKey };
542
- if (typeof data.error === "string" && data.error) return { message: data.error };
543
- }
544
- if (ctx.raw instanceof Error && ctx.raw.message) return { message: ctx.raw.message };
545
- return null;
546
- };
547
- //#endregion
548
- //#region src/components/GrResponseErrorBanner/parsers/problemDetailsParser.ts
549
- /**
550
- * Парсер RFC 7807 «Problem Details for HTTP APIs»:
551
- *
552
- * ```json
553
- * { "type": "https://example.com/probs/out-of-credit",
554
- * "title": "You do not have enough credit.",
555
- * "status": 403,
556
- * "detail": "Your current balance is 30.",
557
- * "errors": { "balance": ["..."] } }
558
- * ```
559
- *
560
- * Активируется, если есть `body.type` + `body.title`, либо
561
- * Content-Type заголовка `application/problem+json`. Берёт `title` как
562
- * `message`, `detail` — в `details[0]`, status — в `status`.
563
- */
564
- var problemDetailsParser = (ctx) => {
565
- const body = ctx.body;
566
- if (!body || typeof body !== "object" || Array.isArray(body)) return null;
567
- const data = body;
568
- const isProblemContentType = ctx.headers?.["content-type"]?.includes("application/problem+json");
569
- const hasShape = typeof data.title === "string" && (typeof data.type === "string" || typeof data.status === "number");
570
- if (!isProblemContentType && !hasShape) return null;
571
- const message = typeof data.title === "string" ? data.title : ctx.texts.unknownMessage;
572
- const details = [];
573
- if (typeof data.detail === "string" && data.detail) details.push(data.detail);
574
- const status = typeof data.status === "number" ? data.status : ctx.status;
575
- return {
576
- message,
577
- details: details.length ? details : void 0,
578
- status
579
- };
580
- };
139
+ //#region src/components/GrDialogService/GrDialogServiceHost.vue?vue&type=script&setup=true&lang.ts
140
+ var _hoisted_1 = { class: "flex items-center justify-end gap-3" };
581
141
  //#endregion
582
- //#region src/components/GrResponseErrorBanner/parsers/createResponseErrorClassifier.ts
583
- /**
584
- * Дефолтная цепочка парсеров. Порядок важен:
585
- * `abort → network → fileValidation → laravel → problemDetails → jsonApi → httpStatus → plainMessage`.
586
- *
587
- * - Ранние специализированные парсеры могут поставить `stop` (abort/file).
588
- * - HTTP-парсер даёт fallback-kind/message, чтобы остальное могло уточнить.
589
- * - `plainMessage` всегда последний — добывает хоть какое-то сообщение.
590
- */
591
- var defaultResponseErrorParsers = [
592
- abortErrorParser,
593
- networkErrorParser,
594
- fileValidationParser,
595
- laravelValidationParser,
596
- problemDetailsParser,
597
- jsonApiErrorParser,
598
- httpStatusParser,
599
- plainMessageParser
600
- ];
601
- /** Добавляет пользовательские парсеры в начало дефолтной цепочки. */
602
- function extendDefaultParsers(extra) {
603
- return [...extra, ...defaultResponseErrorParsers];
604
- }
605
- /**
606
- * Фабрика классификатора. Возвращает функцию `(raw, meta?) => Promise<ResponseErrorInfo>`,
607
- * которая:
608
- * 1. нормализует вход через `normalizeError`,
609
- * 2. строит `ResponseErrorContext`,
610
- * 3. прогоняет цепочку парсеров (с поддержкой `stop`),
611
- * 4. собирает финальный `ResponseErrorInfo` с фолбэками из `texts`.
612
- */
613
- function createResponseErrorClassifier(options = {}) {
614
- const parsers = options.parsers ?? defaultResponseErrorParsers;
615
- const texts = {
616
- ...DEFAULT_RESPONSE_ERROR_TEXTS,
617
- ...options.texts ?? {}
618
- };
619
- const messageKey = options.messageKey ?? "message";
620
- return async function classify(raw, meta = {}) {
621
- const ctx = {
622
- ...await normalizeError(raw),
623
- meta: {
624
- ...meta,
625
- _messageKey: messageKey
626
- },
627
- texts
628
- };
629
- let kind;
630
- let status = ctx.status;
631
- let message;
632
- let details;
633
- let fieldErrors;
634
- for (const parser of parsers) {
635
- const result = parser(ctx);
636
- if (!result) continue;
637
- if (result.kind) kind = result.kind;
638
- if (typeof result.status === "number") status = result.status;
639
- if (result.message) message = result.message;
640
- if (result.details?.length) details = result.details;
641
- if (result.fieldErrors?.length) fieldErrors = result.fieldErrors;
642
- if (result.stop) break;
643
- }
644
- if (!kind) kind = "unknown";
645
- if (!message) message = resolveDefaultMessage(kind, texts);
646
- return {
647
- kind,
648
- status,
649
- message,
650
- details,
651
- fieldErrors,
652
- raw,
653
- meta
654
- };
655
- };
656
- }
657
- function resolveDefaultMessage(kind, texts) {
658
- switch (kind) {
659
- case "network": return texts.networkMessage;
660
- case "aborted": return texts.abortedMessage;
661
- case "validation": return texts.validationMessage;
662
- case "client": return texts.clientMessage;
663
- case "server": return texts.serverMessage;
664
- default: return texts.unknownMessage;
665
- }
666
- }
667
- function resolveResponseErrorTitle(kind, texts) {
668
- switch (kind) {
669
- case "network": return texts.networkTitle;
670
- case "aborted": return texts.abortedTitle;
671
- case "validation": return texts.validationTitle;
672
- case "client": return texts.clientTitle;
673
- case "server": return texts.serverTitle;
674
- default: return texts.unknownTitle;
675
- }
676
- }
677
- //#endregion
678
- //#region src/components/GrResponseErrorBanner/GrResponseErrorBanner.vue?vue&type=script&setup=true&lang.ts
679
- var _hoisted_1 = { class: "flex flex-col gap-2" };
680
- var _hoisted_2 = { class: "flex flex-wrap items-center gap-2" };
681
- var _hoisted_3 = ["data-testid"];
682
- var _hoisted_4 = ["data-testid"];
683
- var _hoisted_5 = ["data-testid"];
684
- var _hoisted_6 = {
685
- key: 1,
686
- class: "mt-1 flex flex-wrap items-center gap-2"
687
- };
688
- //#endregion
689
- //#region src/components/GrResponseErrorBanner/GrResponseErrorBanner.vue
690
- var GrResponseErrorBanner_default = /* @__PURE__ */ defineComponent({
691
- __name: "GrResponseErrorBanner",
692
- props: {
693
- error: {},
694
- texts: { default: () => ({}) },
695
- tone: { default: void 0 },
696
- toneByKind: { default: () => ({}) },
697
- showDetails: {
698
- type: Boolean,
699
- default: true
700
- },
701
- showFieldLabels: {
702
- type: Boolean,
703
- default: true
704
- },
705
- fieldLabels: { default: () => ({}) },
706
- dedupeDetails: {
707
- type: Boolean,
708
- default: true
709
- },
710
- canRetry: {
711
- type: Boolean,
712
- default: false
713
- },
714
- canDismiss: {
715
- type: Boolean,
716
- default: true
717
- },
718
- autoHideKinds: { default: () => DEFAULT_AUTO_HIDE_KINDS },
719
- showStatus: {
720
- type: Boolean,
721
- default: true
722
- },
723
- testIdPrefix: { default: "response-error" }
724
- },
725
- emits: ["retry", "dismiss"],
726
- setup(__props, { emit: __emit }) {
727
- const props = __props;
728
- const emit = __emit;
729
- const { t } = useGranularityTranslations();
730
- const i18nTexts = computed(() => {
731
- const out = {};
732
- for (const key of Object.keys(DEFAULT_RESPONSE_ERROR_TEXTS)) out[key] = t(`gr.responseError.${key}`, DEFAULT_RESPONSE_ERROR_TEXTS[key]);
733
- return out;
734
- });
735
- const mergedTexts = computed(() => ({
736
- ...DEFAULT_RESPONSE_ERROR_TEXTS,
737
- ...i18nTexts.value,
738
- ...props.texts
739
- }));
740
- const mergedToneByKind = computed(() => ({
741
- ...DEFAULT_TONE_BY_KIND,
742
- ...props.toneByKind
743
- }));
744
- const isHidden = computed(() => {
745
- if (!props.error) return true;
746
- return props.autoHideKinds.includes(props.error.kind);
747
- });
748
- const tone = computed(() => {
749
- if (props.tone) return props.tone;
750
- if (!props.error) return "danger";
751
- return mergedToneByKind.value[props.error.kind] ?? "danger";
752
- });
753
- const title = computed(() => {
754
- if (!props.error) return "";
755
- return resolveResponseErrorTitle(props.error.kind, mergedTexts.value);
756
- });
142
+ //#region src/components/GrDialogService/GrDialogServiceHost.vue
143
+ var GrDialogServiceHost_default = /* @__PURE__ */ defineComponent({
144
+ __name: "GrDialogServiceHost",
145
+ setup(__props) {
757
146
  /**
758
- * Маппинг `kind` ключ поля сообщения в `ResponseErrorTexts`.
759
- * Используется, чтобы подменить «дефолтное английское» fallback-сообщение
760
- * классификатора на i18n-перевод (или текущий `mergedTexts.<kind>Message`).
761
- */
762
- const KIND_MESSAGE_KEY = {
763
- network: "networkMessage",
764
- aborted: "abortedMessage",
765
- validation: "validationMessage",
766
- client: "clientMessage",
767
- server: "serverMessage",
768
- unknown: "unknownMessage"
769
- };
770
- const DEFAULT_FALLBACK_MESSAGES = new Set([
771
- DEFAULT_RESPONSE_ERROR_TEXTS.networkMessage,
772
- DEFAULT_RESPONSE_ERROR_TEXTS.abortedMessage,
773
- DEFAULT_RESPONSE_ERROR_TEXTS.validationMessage,
774
- DEFAULT_RESPONSE_ERROR_TEXTS.clientMessage,
775
- DEFAULT_RESPONSE_ERROR_TEXTS.serverMessage,
776
- DEFAULT_RESPONSE_ERROR_TEXTS.unknownMessage
777
- ]);
778
- const message = computed(() => {
779
- const raw = props.error?.message ?? "";
780
- if (!props.error) return raw;
781
- if (!raw || DEFAULT_FALLBACK_MESSAGES.has(raw)) return mergedTexts.value[KIND_MESSAGE_KEY[props.error.kind]];
782
- return raw;
783
- });
784
- /**
785
- * Сводный список «деталей» под основным `message`.
786
- * Предпочитаем `fieldErrors` (поле → сообщения), затем — плоский `details`.
787
- * Дедуплицируем и убираем повтор с `message`.
147
+ * GrDialogServiceHost внутренний компонент-оркестратор императивного
148
+ * `useDialogService`. Не предназначен для прямого использования в шаблонах.
149
+ *
150
+ * Рендерит «голову» очереди `dialogQueue` (FIFO-сериализация), переиспользуя
151
+ * декларативные `GrConfirmDialog`/`GrPromptDialog`. Управляет состоянием
152
+ * загрузки и ошибок во время async-`onConfirm`, прогоняя «сырые» ответы
153
+ * сервера через цепочку парсеров `GrResponseErrorBanner`.
788
154
  */
789
- const detailEntries = computed(() => {
790
- if (!props.error || !props.showDetails) return [];
791
- const seen = /* @__PURE__ */ new Set();
792
- if (props.dedupeDetails) {
793
- const main = message.value.trim();
794
- if (main) seen.add(main);
155
+ const active = computed(() => dialogQueue[0] ?? null);
156
+ const open = ref(false);
157
+ const loading = ref(false);
158
+ const currentError = shallowRef(null);
159
+ const fieldError = ref(null);
160
+ const promptValue = ref("");
161
+ let controller = null;
162
+ let finishing = false;
163
+ let externalAbortCleanup = null;
164
+ function resetState() {
165
+ loading.value = false;
166
+ currentError.value = null;
167
+ fieldError.value = null;
168
+ finishing = false;
169
+ }
170
+ function buildClassifier(req) {
171
+ const opts = req.options;
172
+ return createResponseErrorClassifier({
173
+ parsers: typeof opts.errorParsers === "function" ? opts.errorParsers(responseErrorParserPresets) : opts.errorParsers ?? coreResponseErrorParsers,
174
+ texts: opts.errorTexts,
175
+ messageKey: opts.errorMessageKey
176
+ });
177
+ }
178
+ watch(() => active.value?.id, (id) => {
179
+ cleanupExternalAbort();
180
+ resetState();
181
+ const req = active.value;
182
+ if (!req || !id) {
183
+ open.value = false;
184
+ return;
795
185
  }
796
- const result = [];
797
- const fieldErrors = props.error.fieldErrors;
798
- if (fieldErrors?.length) {
799
- for (const fe of fieldErrors) for (const m of fe.messages) {
800
- const text = m.trim();
801
- if (!text || seen.has(text)) continue;
802
- seen.add(text);
803
- result.push({
804
- field: fe.field,
805
- text
806
- });
186
+ promptValue.value = req.options && "value" in req.options ? req.options.value ?? "" : "";
187
+ controller = new AbortController();
188
+ const sig = req.options.signal;
189
+ if (sig) {
190
+ if (sig.aborted) {
191
+ finish("close");
192
+ return;
807
193
  }
808
- if (result.length) return result;
194
+ const onAbort = () => finish("close");
195
+ sig.addEventListener("abort", onAbort);
196
+ externalAbortCleanup = () => sig.removeEventListener("abort", onAbort);
809
197
  }
810
- const details = props.error.details;
811
- if (details?.length) for (const d of details) {
812
- const text = (d ?? "").trim();
813
- if (!text || seen.has(text)) continue;
814
- seen.add(text);
815
- result.push({ text });
816
- }
817
- return result;
198
+ nextTick(() => {
199
+ open.value = true;
200
+ });
818
201
  });
819
- function fieldLabel(field) {
820
- if (!field) return void 0;
821
- return props.fieldLabels[field] ?? field;
202
+ function cleanupExternalAbort() {
203
+ externalAbortCleanup?.();
204
+ externalAbortCleanup = null;
822
205
  }
823
- function onRetry() {
824
- if (props.error) emit("retry", props.error);
206
+ function finish(action, value) {
207
+ const req = active.value;
208
+ if (!req || finishing) return;
209
+ finishing = true;
210
+ open.value = false;
211
+ controller?.abort();
212
+ controller = null;
213
+ cleanupExternalAbort();
214
+ req.resolve({
215
+ action,
216
+ value
217
+ });
218
+ nextTick(() => {
219
+ const index = dialogQueue.findIndex((item) => item.id === req.id);
220
+ if (index >= 0) dialogQueue.splice(index, 1);
221
+ });
825
222
  }
826
- function onDismiss() {
827
- emit("dismiss");
223
+ function buildContext(req, value) {
224
+ let errorSet = false;
225
+ const setError = (message) => {
226
+ if (message == null) {
227
+ currentError.value = null;
228
+ return;
229
+ }
230
+ errorSet = true;
231
+ currentError.value = {
232
+ kind: "unknown",
233
+ message,
234
+ raw: message
235
+ };
236
+ };
237
+ const setFieldError = (field, message) => {
238
+ if (message == null) {
239
+ fieldError.value = null;
240
+ return;
241
+ }
242
+ errorSet = true;
243
+ fieldError.value = message;
244
+ };
245
+ const clearErrors = () => {
246
+ currentError.value = null;
247
+ fieldError.value = null;
248
+ };
249
+ const setRawError = async (raw, meta) => {
250
+ const info = await buildClassifier(req)(raw, meta);
251
+ if (req.kind === "prompt" && info.fieldErrors?.length) fieldError.value = (info.fieldErrors.find((f) => f.field === "value") ?? info.fieldErrors[0]).messages.join(" ");
252
+ currentError.value = info;
253
+ errorSet = true;
254
+ return info;
255
+ };
256
+ return {
257
+ value,
258
+ signal: controller.signal,
259
+ setError,
260
+ setRawError,
261
+ setFieldError,
262
+ clearErrors,
263
+ setLoading: (v) => {
264
+ loading.value = v;
265
+ },
266
+ close: (action = "close") => finish(action),
267
+ _errorSet: () => errorSet
268
+ };
828
269
  }
829
- return (_ctx, _cache) => {
830
- return !isHidden.value && props.error ? (openBlock(), createBlock(GrAlert_default, {
831
- key: 0,
832
- tone: tone.value,
833
- title: title.value,
834
- closable: props.canDismiss,
835
- "data-testid": `${props.testIdPrefix}-banner`,
836
- "data-kind": props.error.kind,
837
- onClose: onDismiss
838
- }, {
839
- default: withCtx(() => [createElementVNode("div", _hoisted_1, [
840
- createElementVNode("div", _hoisted_2, [props.showStatus && typeof props.error.status === "number" ? (openBlock(), createElementBlock("span", {
841
- key: 0,
842
- class: "inline-flex items-center rounded-[var(--ds-radius-sm)] bg-[color-mix(in_srgb,currentColor_12%,transparent)] px-1.5 py-0.5 text-[11px] font-700 leading-none",
843
- "data-testid": `${props.testIdPrefix}-status`
844
- }, " HTTP " + toDisplayString(props.error.status), 9, _hoisted_3)) : createCommentVNode("", true), createElementVNode("span", {
845
- class: "text-[13px]",
846
- "data-testid": `${props.testIdPrefix}-message`
847
- }, toDisplayString(message.value), 9, _hoisted_4)]),
848
- detailEntries.value.length ? (openBlock(), createElementBlock("ul", {
849
- key: 0,
850
- class: "m-0 list-disc pl-5 text-[12px]",
851
- "data-testid": `${props.testIdPrefix}-details`
852
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(detailEntries.value, (entry, idx) => {
853
- return openBlock(), createElementBlock("li", { key: `${entry.field ?? ""}:${idx}` }, [props.showFieldLabels && entry.field ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("strong", null, toDisplayString(fieldLabel(entry.field)) + ":", 1), _cache[0] || (_cache[0] = createTextVNode("\xA0 ", -1))], 64)) : createCommentVNode("", true), createTextVNode(toDisplayString(entry.text), 1)]);
854
- }), 128))], 8, _hoisted_5)) : createCommentVNode("", true),
855
- props.canRetry ? (openBlock(), createElementBlock("div", _hoisted_6, [createVNode(GrButton_default, {
856
- size: "sm",
857
- variant: "outline",
858
- "data-testid": `${props.testIdPrefix}-retry`,
859
- onClick: onRetry
860
- }, {
861
- default: withCtx(() => [createTextVNode(toDisplayString(mergedTexts.value.retryLabel), 1)]),
862
- _: 1
863
- }, 8, ["data-testid"])])) : createCommentVNode("", true)
864
- ])]),
865
- _: 1
866
- }, 8, [
867
- "tone",
868
- "title",
869
- "closable",
870
- "data-testid",
871
- "data-kind"
872
- ])) : createCommentVNode("", true);
873
- };
874
- }
875
- });
876
- //#endregion
877
- //#region src/components/GrResponseErrorBanner/GrUploadErrorBanner.vue
878
- var GrUploadErrorBanner_default = /* @__PURE__ */ defineComponent({
879
- __name: "GrUploadErrorBanner",
880
- props: {
881
- error: {},
882
- files: { default: () => [] },
883
- texts: { default: () => ({}) },
884
- tone: { default: void 0 },
885
- toneByKind: { default: () => ({}) },
886
- canRetry: {
887
- type: Boolean,
888
- default: true
889
- },
890
- canDismiss: {
891
- type: Boolean,
892
- default: true
893
- },
894
- autoHideKinds: { default: () => [] },
895
- testIdPrefix: { default: "upload-error" }
896
- },
897
- emits: ["retry", "dismiss"],
898
- setup(__props, { emit: __emit }) {
899
- /**
900
- * Тонкая обёртка над `GrResponseErrorBanner` с предсетами для сценария
901
- * «загрузка файлов»:
902
- *
903
- * - Включена кнопка «Повторить» по умолчанию (`canRetry=true`).
904
- * - Тексты сдвинуты под загрузку файлов.
905
- * - Опциональный prop `files` пробрасывает контекст наружу через `retry`.
906
- *
907
- * Парсеры/нормализация — те же, что у базового баннера. Если нужны кастомные
908
- * парсеры — используйте напрямую `GrResponseErrorBanner` + `useResponseError`.
909
- */
910
- const props = __props;
911
- const emit = __emit;
912
- const UPLOAD_TEXTS = {
913
- networkTitle: "Failed to upload files",
914
- networkMessage: "Check your connection and try again.",
915
- validationTitle: "Files did not pass validation",
916
- validationMessage: "Some of the files do not meet the requirements.",
917
- serverTitle: "Upload error on the server",
918
- serverMessage: "The server could not process the upload. Please try again."
919
- };
920
- const mergedTexts = computed(() => ({
921
- ...UPLOAD_TEXTS,
922
- ...props.texts
923
- }));
924
- function onRetry(info) {
925
- emit("retry", {
926
- error: info,
927
- files: props.files
928
- });
270
+ async function handleConfirm() {
271
+ const req = active.value;
272
+ if (!req) return;
273
+ const value = req.kind === "prompt" ? promptValue.value : void 0;
274
+ if (!req.onConfirm) {
275
+ finish("confirm", value);
276
+ return;
277
+ }
278
+ currentError.value = null;
279
+ fieldError.value = null;
280
+ loading.value = true;
281
+ const ctx = buildContext(req, value);
282
+ try {
283
+ const result = await req.onConfirm(ctx);
284
+ loading.value = false;
285
+ if (finishing) return;
286
+ if (result === false) return;
287
+ if (currentError.value || fieldError.value || ctx._errorSet()) return;
288
+ finish("confirm", value);
289
+ } catch (error) {
290
+ loading.value = false;
291
+ if (finishing) return;
292
+ if (!ctx._errorSet()) await ctx.setRawError(error);
293
+ }
294
+ }
295
+ function handleCancel() {
296
+ finish("cancel");
297
+ }
298
+ function handleModelUpdate(value) {
299
+ if (!value) finish("close");
929
300
  }
301
+ onBeforeUnmount(() => {
302
+ cleanupExternalAbort();
303
+ controller?.abort();
304
+ });
305
+ const sharedProps = computed(() => {
306
+ const o = active.value?.options ?? {};
307
+ return {
308
+ title: o.title,
309
+ size: o.size,
310
+ closeOnBackdrop: o.closeOnBackdrop,
311
+ closeOnEsc: o.closeOnEsc,
312
+ showHeader: o.showHeader,
313
+ showCloseButton: o.showCloseButton,
314
+ headerConfig: o.headerConfig,
315
+ footerConfig: o.footerConfig,
316
+ bodyConfig: o.bodyConfig,
317
+ closeLabel: o.closeLabel,
318
+ buttonSize: o.buttonSize,
319
+ confirmText: o.confirmText,
320
+ confirmVariant: o.confirmVariant,
321
+ confirmTone: o.confirmTone
322
+ };
323
+ });
930
324
  return (_ctx, _cache) => {
931
- return openBlock(), createBlock(GrResponseErrorBanner_default, {
932
- error: props.error,
933
- texts: mergedTexts.value,
934
- tone: props.tone,
935
- "tone-by-kind": props.toneByKind,
936
- "can-retry": props.canRetry,
937
- "can-dismiss": props.canDismiss,
938
- "auto-hide-kinds": props.autoHideKinds,
939
- "test-id-prefix": props.testIdPrefix,
940
- onRetry,
941
- onDismiss: _cache[0] || (_cache[0] = ($event) => emit("dismiss"))
942
- }, null, 8, [
325
+ return active.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [active.value.kind === "prompt" ? (openBlock(), createBlock(GrPromptDialog_default, mergeProps({ key: 0 }, sharedProps.value, {
326
+ value: promptValue.value,
327
+ "onUpdate:value": _cache[0] || (_cache[0] = ($event) => promptValue.value = $event),
328
+ "model-value": open.value,
329
+ description: active.value.options.message ?? active.value.options.description,
330
+ label: active.value.options.label,
331
+ placeholder: active.value.options.placeholder,
332
+ required: active.value.options.required ?? false,
333
+ "required-error-text": active.value.options.requiredErrorText,
334
+ "cancel-text": active.value.options.cancelText,
335
+ error: currentError.value,
336
+ "field-error": fieldError.value,
337
+ "confirm-loading": loading.value,
338
+ "close-on-confirm": false,
339
+ "onUpdate:modelValue": handleModelUpdate,
340
+ onConfirm: handleConfirm,
341
+ onCancel: handleCancel
342
+ }), null, 16, [
343
+ "value",
344
+ "model-value",
345
+ "description",
346
+ "label",
347
+ "placeholder",
348
+ "required",
349
+ "required-error-text",
350
+ "cancel-text",
943
351
  "error",
944
- "texts",
945
- "tone",
946
- "tone-by-kind",
947
- "can-retry",
948
- "can-dismiss",
949
- "auto-hide-kinds",
950
- "test-id-prefix"
951
- ]);
952
- };
953
- }
954
- });
955
- //#endregion
956
- //#region src/components/GrResponseErrorBanner/GrFormErrorBanner.vue
957
- var GrFormErrorBanner_default = /* @__PURE__ */ defineComponent({
958
- __name: "GrFormErrorBanner",
959
- props: {
960
- error: {},
961
- fieldLabels: { default: () => ({}) },
962
- texts: { default: () => ({}) },
963
- tone: { default: void 0 },
964
- toneByKind: { default: () => ({ validation: "warning" }) },
965
- canRetry: {
966
- type: Boolean,
967
- default: false
968
- },
969
- canDismiss: {
970
- type: Boolean,
971
- default: true
972
- },
973
- autoHideKinds: { default: () => [] },
974
- testIdPrefix: { default: "form-error" }
975
- },
976
- emits: ["retry", "dismiss"],
977
- setup(__props, { emit: __emit }) {
978
- /**
979
- * Тонкая обёртка над `GrResponseErrorBanner` с предсетами для сценария
980
- * «валидация формы»:
981
- *
982
- * - `showFieldLabels=true` — рисуются подписи `field:` перед каждой строкой.
983
- * - `canRetry=false` — обычно пользователь правит поля сам, retry не нужен.
984
- * - `toneByKind.validation = 'warning'` — визуально «исправь», не «упало».
985
- * - Тексты сдвинуты под формы.
986
- *
987
- * Для кастомных парсеров используйте напрямую `GrResponseErrorBanner` +
988
- * `useResponseError({ parsers: () => extendDefaultParsers([myParser]) })`.
989
- */
990
- const props = __props;
991
- const emit = __emit;
992
- const FORM_TEXTS = {
993
- validationTitle: "Check the form fields",
994
- validationMessage: "The server rejected the data. Fix the highlighted fields and try again.",
995
- clientTitle: "Failed to save",
996
- serverTitle: "Save error",
997
- serverMessage: "Could not save the data. Please try again later."
998
- };
999
- const mergedTexts = computed(() => ({
1000
- ...FORM_TEXTS,
1001
- ...props.texts
1002
- }));
1003
- return (_ctx, _cache) => {
1004
- return openBlock(), createBlock(GrResponseErrorBanner_default, {
1005
- error: props.error,
1006
- texts: mergedTexts.value,
1007
- tone: props.tone,
1008
- "tone-by-kind": props.toneByKind,
1009
- "field-labels": props.fieldLabels,
1010
- "show-field-labels": "",
1011
- "can-retry": props.canRetry,
1012
- "can-dismiss": props.canDismiss,
1013
- "auto-hide-kinds": props.autoHideKinds,
1014
- "test-id-prefix": props.testIdPrefix,
1015
- onRetry: _cache[0] || (_cache[0] = (info) => emit("retry", info)),
1016
- onDismiss: _cache[1] || (_cache[1] = ($event) => emit("dismiss"))
1017
- }, null, 8, [
352
+ "field-error",
353
+ "confirm-loading"
354
+ ])) : active.value.kind === "alert" ? (openBlock(), createBlock(GrConfirmDialog_default, mergeProps({
355
+ key: 1,
356
+ "model-value": open.value
357
+ }, sharedProps.value, {
358
+ description: active.value.options.message ?? active.value.options.description,
359
+ error: currentError.value,
360
+ "confirm-loading": loading.value,
361
+ "close-on-confirm": false,
362
+ "onUpdate:modelValue": handleModelUpdate,
363
+ onConfirm: handleConfirm
364
+ }), {
365
+ footer: withCtx(() => [createElementVNode("div", _hoisted_1, [createVNode(GrButton_default, {
366
+ "data-testid": "ds-alert-confirm",
367
+ variant: sharedProps.value.confirmVariant ?? "primary",
368
+ tone: sharedProps.value.confirmTone ?? "primary",
369
+ size: sharedProps.value.buttonSize,
370
+ loading: loading.value,
371
+ onClick: handleConfirm
372
+ }, {
373
+ default: withCtx(() => [createTextVNode(toDisplayString(sharedProps.value.confirmText ?? "OK"), 1)]),
374
+ _: 1
375
+ }, 8, [
376
+ "variant",
377
+ "tone",
378
+ "size",
379
+ "loading"
380
+ ])])]),
381
+ _: 1
382
+ }, 16, [
383
+ "model-value",
384
+ "description",
385
+ "error",
386
+ "confirm-loading"
387
+ ])) : (openBlock(), createBlock(GrConfirmDialog_default, mergeProps({
388
+ key: 2,
389
+ "model-value": open.value
390
+ }, sharedProps.value, {
391
+ description: active.value.options.message ?? active.value.options.description,
392
+ "cancel-text": active.value.options.cancelText,
393
+ error: currentError.value,
394
+ "confirm-loading": loading.value,
395
+ "close-on-confirm": false,
396
+ "onUpdate:modelValue": handleModelUpdate,
397
+ onConfirm: handleConfirm,
398
+ onCancel: handleCancel
399
+ }), null, 16, [
400
+ "model-value",
401
+ "description",
402
+ "cancel-text",
1018
403
  "error",
1019
- "texts",
1020
- "tone",
1021
- "tone-by-kind",
1022
- "field-labels",
1023
- "can-retry",
1024
- "can-dismiss",
1025
- "auto-hide-kinds",
1026
- "test-id-prefix"
1027
- ]);
404
+ "confirm-loading"
405
+ ]))], 64)) : createCommentVNode("", true);
1028
406
  };
1029
407
  }
1030
408
  });
1031
409
  //#endregion
1032
- //#region src/components/GrResponseErrorBanner/useResponseError.ts
410
+ //#region src/components/GrDialogService/useDialogService.ts
1033
411
  /**
1034
- * Stateful-композабл вокруг `createResponseErrorClassifier`. Хранит
1035
- * `currentError`, инкапсулирует setRaw/retry/dismiss. Подходит для типичного
1036
- * сценария «поймал ошибку запроса показал баннер → ретрай/скрыть».
412
+ * `useDialogService` императивный сервис диалогов (в духе Element Plus
413
+ * `ElMessageBox`). Позволяет вызывать `confirm`/`alert`/`prompt` из `<script>`
414
+ * или `.ts` без вставки компонента в шаблон.
415
+ *
416
+ * Поверх существующих `GrConfirmDialog`/`GrPromptDialog`: лениво монтирует
417
+ * единый хост (`GrDialogServiceHost`) в `document.body`, наследуя контекст
418
+ * приложения (i18n / тема / `granular-provider`). Диалоги сериализуются
419
+ * очередью FIFO.
1037
420
  */
1038
- function useResponseError(options = {}) {
1039
- const currentError = shallowRef(null);
1040
- const lastRaw = ref(null);
1041
- function getClassifier() {
1042
- return createResponseErrorClassifier({
1043
- parsers: options.parsers?.() ?? defaultResponseErrorParsers,
1044
- texts: options.texts?.() ?? {},
1045
- messageKey: options.messageKey?.()
1046
- });
421
+ var mounted = false;
422
+ var container = null;
423
+ var cachedAppContext = null;
424
+ function ensureMounted(appContext) {
425
+ if (typeof window === "undefined" || typeof document === "undefined") return;
426
+ if (appContext) cachedAppContext = appContext;
427
+ if (mounted) return;
428
+ container = document.createElement("div");
429
+ container.setAttribute("data-gr-dialog-service-host", "");
430
+ document.body.appendChild(container);
431
+ const vnode = createVNode(GrDialogServiceHost_default);
432
+ vnode.appContext = cachedAppContext ?? null;
433
+ render(vnode, container);
434
+ mounted = true;
435
+ }
436
+ /** Тестовая/служебная очистка смонтированного хоста. */
437
+ function teardownDialogService() {
438
+ if (container) {
439
+ render(null, container);
440
+ container.remove();
441
+ container = null;
1047
442
  }
1048
- function isAutoHidden(kind) {
1049
- return (options.autoHideKinds?.() ?? DEFAULT_AUTO_HIDE_KINDS).includes(kind);
443
+ mounted = false;
444
+ dialogQueue.splice(0, dialogQueue.length);
445
+ }
446
+ function enqueue(kind, message, options, onConfirm) {
447
+ ensureMounted(options.appContext ?? cachedAppContext);
448
+ const id = makeDialogId();
449
+ let resolveFn;
450
+ const promise = new Promise((resolve) => {
451
+ resolveFn = resolve;
452
+ });
453
+ const request = {
454
+ id,
455
+ kind,
456
+ message,
457
+ options: {
458
+ ...options,
459
+ message
460
+ },
461
+ onConfirm,
462
+ resolve: resolveFn
463
+ };
464
+ dialogQueue.push(request);
465
+ const close = () => {
466
+ const index = dialogQueue.findIndex((item) => item.id === id);
467
+ if (index < 0) return;
468
+ dialogQueue.splice(index, 1);
469
+ resolveFn({ action: "close" });
470
+ };
471
+ return {
472
+ promise,
473
+ close
474
+ };
475
+ }
476
+ function withClose(promise, close) {
477
+ const result = promise;
478
+ result.close = close;
479
+ return result;
480
+ }
481
+ function mergeErrorDefaults(defaults, options) {
482
+ return {
483
+ size: defaults.size,
484
+ confirmText: defaults.confirmText,
485
+ confirmVariant: defaults.confirmVariant,
486
+ confirmTone: defaults.confirmTone,
487
+ buttonSize: defaults.buttonSize,
488
+ closeOnBackdrop: defaults.closeOnBackdrop,
489
+ closeOnEsc: defaults.closeOnEsc,
490
+ errorParsers: defaults.errorParsers,
491
+ errorTexts: defaults.errorTexts,
492
+ errorMessageKey: defaults.errorMessageKey,
493
+ fieldLabels: defaults.fieldLabels,
494
+ ...options
495
+ };
496
+ }
497
+ /**
498
+ * Создаёт сервис диалогов. Опциональные `defaults` применяются ко всем
499
+ * вызовам (можно переопределить в каждом конкретном вызове).
500
+ *
501
+ * Контекст приложения кэшируется автоматически при первом вызове внутри
502
+ * `setup`. Для вызовов вне компонента используйте `setAppContext`.
503
+ */
504
+ function useDialogService(defaults = {}) {
505
+ const instance = getCurrentInstance();
506
+ if (instance?.appContext && !cachedAppContext) cachedAppContext = instance.appContext;
507
+ function confirm(message, options = {}) {
508
+ const { promise, close } = enqueue("confirm", message, mergeErrorDefaults(defaults, options), options.onConfirm);
509
+ return withClose(promise.then((r) => r.action === "confirm"), close);
1050
510
  }
1051
- async function classify(raw, extra) {
1052
- const info = await getClassifier()(raw, {
1053
- ...options.meta?.() ?? {},
1054
- ...extra ?? {}
1055
- });
1056
- options.onClassify?.(info);
1057
- return info;
511
+ function alert(message, options = {}) {
512
+ const { promise, close } = enqueue("alert", message, mergeErrorDefaults(defaults, options), options.onConfirm);
513
+ return withClose(promise.then(() => void 0), close);
1058
514
  }
1059
- async function setRaw(raw, extra) {
1060
- lastRaw.value = raw;
1061
- const info = await classify(raw, extra);
1062
- if (isAutoHidden(info.kind)) {
1063
- currentError.value = null;
1064
- return null;
1065
- }
1066
- currentError.value = info;
1067
- return info;
515
+ function prompt(message, options = {}) {
516
+ const { promise, close } = enqueue("prompt", message, mergeErrorDefaults(defaults, options), options.onConfirm);
517
+ return withClose(promise.then((r) => r.action === "confirm" ? r.value ?? "" : null), close);
1068
518
  }
1069
- function setError(info) {
1070
- currentError.value = info;
519
+ function open(kind, message, options = {}) {
520
+ const { promise, close } = enqueue(kind, message, mergeErrorDefaults(defaults, options), options.onConfirm);
521
+ return withClose(promise, close);
1071
522
  }
1072
- function dismiss() {
1073
- currentError.value = null;
523
+ function closeAll() {
524
+ while (dialogQueue.length > 0) dialogQueue.pop().resolve({ action: "close" });
1074
525
  }
1075
- async function retry(handler) {
1076
- const info = currentError.value;
1077
- if (!info) return;
1078
- await handler(info);
1079
- currentError.value = null;
526
+ function setAppContext(ctx) {
527
+ cachedAppContext = ctx;
1080
528
  }
1081
529
  return {
1082
- currentError,
1083
- isVisible: computed(() => currentError.value !== null),
1084
- lastRaw,
1085
- setRaw,
1086
- setError,
1087
- classify,
1088
- dismiss,
1089
- reset: dismiss,
1090
- retry
530
+ confirm,
531
+ alert,
532
+ prompt,
533
+ open,
534
+ closeAll,
535
+ setAppContext
1091
536
  };
1092
537
  }
538
+ /** Готовый синглтон-сервис с дефолтными настройками. */
539
+ var dialogService = useDialogService();
540
+ //#endregion
541
+ //#region src/components/GrDialogService/config.ts
542
+ var grDialogServiceConfig = defineGranularComponent(import.meta.url, {
543
+ name: "GrDialogServiceHost",
544
+ dependencies: [
545
+ "GrButton",
546
+ "GrDialog",
547
+ "GrConfirmDialog",
548
+ "GrPromptDialog",
549
+ "GrResponseErrorBanner"
550
+ ]
551
+ });
1093
552
  //#endregion
1094
553
  //#region src/components/shared/tones.ts
1095
554
  /**
@@ -1111,4 +570,4 @@ var GR_TONES = [
1111
570
  "azure"
1112
571
  ];
1113
572
  //#endregion
1114
- export { DEFAULT_AUTO_HIDE_KINDS, DEFAULT_GR_DIALOG_BODY_CONFIG, DEFAULT_GR_DIALOG_FOOTER_CONFIG, DEFAULT_GR_DIALOG_HEADER_CONFIG, DEFAULT_RESPONSE_ERROR_TEXTS, DEFAULT_TONE_BY_KIND, FileValidationError, GR_COLLAPSE_CONTEXT, GR_RADIO_GROUP_CONTEXT, GR_TONES, GR_UPLOAD_STATE_IDLE, GrAlert_default as GrAlert, GrAvatar_default as GrAvatar, GrBadge_default as GrBadge, GrBadgeWrap_default as GrBadgeWrap, GrBottomNav_default as GrBottomNav, GrButton_default as GrButton, GrButtonGroup_default as GrButtonGroup, GrCard_default as GrCard, GrCheckbox_default as GrCheckbox, GrCollapse_default as GrCollapse, GrCollapseItem_default as GrCollapseItem, GrConfirmDialog_default as GrConfirmDialog, GrDataTable_default as GrDataTable, GrDialog_default as GrDialog, GrDialogCloseButton_default as GrDialogCloseButton, GrDialogFooter_default as GrDialogFooter, GrDialogHeader_default as GrDialogHeader, GrDrawer_default as GrDrawer, GrDropdown_default as GrDropdown, GrDropdownMenu_default as GrDropdownMenu, GrDropdownMenuColumn_default as GrDropdownMenuColumn, GrDropdownMenuColumns_default as GrDropdownMenuColumns, GrDropdownMenuDivider_default as GrDropdownMenuDivider, GrDropdownMenuGroup_default as GrDropdownMenuGroup, GrDropdownMenuHeader_default as GrDropdownMenuHeader, GrDropdownMenuItem_default as GrDropdownMenuItem, GrDropdownMenuList_default as GrDropdownMenuList, GrEmptyState_default as GrEmptyState, GrFileUpload_default as GrFileUpload, GrFormErrorBanner_default as GrFormErrorBanner, GrFormField_default as GrFormField, GrFormFile_default as GrFormFile, GrFormSection_default as GrFormSection, GrIcon_default as GrIcon, GrImageViewer_default as GrImageViewer, GrInput_default as GrInput, GrInputTag_default as GrInputTag, GrLink_default as GrLink, GrList_default as GrList, GrListItem_default as GrListItem, GrLoading_default as GrLoading, GrModal_default as GrModal, GrNavbar_default as GrNavbar, GrNumberInput_default as GrNumberInput, GrPagination_default as GrPagination, GrProgressBar_default as GrProgressBar, GrPromptDialog_default as GrPromptDialog, GrRadio_default as GrRadio, GrRadioGroup_default as GrRadioGroup, GrResponseErrorBanner_default as GrResponseErrorBanner, GrSegmented_default as GrSegmented, GrSelect_default as GrSelect, GrSidebar_default as GrSidebar, GrSkeleton_default as GrSkeleton, GrSwitch_default as GrSwitch, GrTable_default as GrTable, GrTabs_default as GrTabs, GrTextarea_default as GrTextarea, GrToaster_default as GrToaster, GrTooltip_default as GrTooltip, GrTree_default as GrTree, GrTreeSelect_default as GrTreeSelect, GrUploadAbortError, GrUploadErrorBanner_default as GrUploadErrorBanner, GrUploadHttpError, abortErrorParser, acceptValidator, allowedExtensionsValidator, allowedMimeTypesValidator, createLoading, createResponseErrorClassifier, defaultResponseErrorParsers, extendDefaultParsers, fileValidationParser, getGrModalPanelClass, grAlertConfig, grAvatarConfig, grAvatarSafelist, grBadgeConfig, grBadgeSafelist, grBadgeWrapConfig, grBottomNavConfig, grButtonClass, grButtonClassTokens, grButtonConfig, grButtonGroupConfig, grButtonSafelist, grCardConfig, grCheckboxConfig, grCollapseConfig, grConfirmDialogConfig, grDataTableConfig, grDialogSafelist, grDrawerConfig, grDrawerSafelist, grDropdownConfig, grDropdownMenuConfig, grDropdownSafelist, grEmptyStateConfig, grFileUploadConfig, grFormFieldConfig, grFormFileConfig, grFormSectionConfig, grIconConfig, grImageViewerConfig, grInputConfig, grInputSafelist, grInputTagConfig, grInputTagSafelist, grLinkConfig, grLinkSafelist, grListConfig, grLoadingConfig, grLoadingSafelist, grModalClassTokens, grModalConfig, grModalSafelist, grNavbarConfig, grNumberInputConfig, grNumberInputSafelist, grPaginationConfig, grProgressBarConfig, grProgressBarSafelist, grPromptDialogConfig, grRadioConfig, grRadioGroupConfig, grRadioSafelist, grSegmentedConfig, grSegmentedSafelist, grSelectConfig, grSelectSafelist, grSidebarConfig, grSkeletonConfig, grSwitchConfig, grSwitchSafelist, grTableConfig, grTabsConfig, grTextareaConfig, grTextareaSafelist, grToasterConfig, grToasterSafelist, grTooltipConfig, grTreeConfig, grTreeSafelist, grTreeSelectConfig, grTreeSelectSafelist, httpStatusParser, initThemeEarly, jsonApiErrorParser, laravelValidationParser, matchAccept, maxFileSizeBytesValidator, maxSizeMbValidator, maxTotalSizeBytesValidator, networkErrorParser, normalizeError, normalizeFiles, plainMessageParser, problemDetailsParser, resolveGrDialogSectionConfig, resolveGrDialogTitle, resolveResponseErrorTitle, runFileValidators, useResponseError, useTheme, useToast, vAutofocus, vAutosize, vClickOutside, vDropzone, vHotkey, vLoading };
573
+ export { DEFAULT_AUTO_HIDE_KINDS, DEFAULT_GR_DIALOG_BODY_CONFIG, DEFAULT_GR_DIALOG_FOOTER_CONFIG, DEFAULT_GR_DIALOG_HEADER_CONFIG, DEFAULT_RESPONSE_ERROR_TEXTS, DEFAULT_TONE_BY_KIND, FileValidationError, GR_COLLAPSE_CONTEXT, GR_RADIO_GROUP_CONTEXT, GR_TONES, GR_UPLOAD_STATE_IDLE, GrAlert_default as GrAlert, GrAvatar_default as GrAvatar, GrBadge_default as GrBadge, GrBadgeWrap_default as GrBadgeWrap, GrBottomNav_default as GrBottomNav, GrButton_default as GrButton, GrButtonGroup_default as GrButtonGroup, GrCard_default as GrCard, GrCheckbox_default as GrCheckbox, GrCollapse_default as GrCollapse, GrCollapseItem_default as GrCollapseItem, GrConfirmDialog_default as GrConfirmDialog, GrDataTable_default as GrDataTable, GrDialog_default as GrDialog, GrDialogCloseButton_default as GrDialogCloseButton, GrDialogFooter_default as GrDialogFooter, GrDialogHeader_default as GrDialogHeader, GrDialogServiceHost_default as GrDialogServiceHost, GrDrawer_default as GrDrawer, GrDropdown_default as GrDropdown, GrDropdownMenu_default as GrDropdownMenu, GrDropdownMenuColumn_default as GrDropdownMenuColumn, GrDropdownMenuColumns_default as GrDropdownMenuColumns, GrDropdownMenuDivider_default as GrDropdownMenuDivider, GrDropdownMenuGroup_default as GrDropdownMenuGroup, GrDropdownMenuHeader_default as GrDropdownMenuHeader, GrDropdownMenuItem_default as GrDropdownMenuItem, GrDropdownMenuList_default as GrDropdownMenuList, GrEmptyState_default as GrEmptyState, GrFileUpload_default as GrFileUpload, GrFormErrorBanner_default as GrFormErrorBanner, GrFormField_default as GrFormField, GrFormFile_default as GrFormFile, GrFormSection_default as GrFormSection, GrIcon_default as GrIcon, GrImageViewer_default as GrImageViewer, GrInput_default as GrInput, GrInputTag_default as GrInputTag, GrLink_default as GrLink, GrList_default as GrList, GrListItem_default as GrListItem, GrLoading_default as GrLoading, GrModal_default as GrModal, GrNavbar_default as GrNavbar, GrNumberInput_default as GrNumberInput, GrPagination_default as GrPagination, GrProgressBar_default as GrProgressBar, GrPromptDialog_default as GrPromptDialog, GrRadio_default as GrRadio, GrRadioGroup_default as GrRadioGroup, GrResponseErrorBanner_default as GrResponseErrorBanner, GrSegmented_default as GrSegmented, GrSelect_default as GrSelect, GrSidebar_default as GrSidebar, GrSkeleton_default as GrSkeleton, GrSwitch_default as GrSwitch, GrTable_default as GrTable, GrTabs_default as GrTabs, GrTextarea_default as GrTextarea, GrToaster_default as GrToaster, GrTooltip_default as GrTooltip, GrTree_default as GrTree, GrTreeSelect_default as GrTreeSelect, GrUploadAbortError, GrUploadErrorBanner_default as GrUploadErrorBanner, GrUploadHttpError, abortErrorParser, acceptValidator, allowedExtensionsValidator, allowedMimeTypesValidator, coreResponseErrorParsers, createLoading, createResponseErrorClassifier, defaultResponseErrorParsers, dialogService, extendDefaultParsers, fileValidationParser, getGrModalPanelClass, grAlertConfig, grAvatarConfig, grAvatarSafelist, grBadgeConfig, grBadgeSafelist, grBadgeWrapConfig, grBottomNavConfig, grButtonClass, grButtonClassTokens, grButtonConfig, grButtonGroupConfig, grButtonSafelist, grCardConfig, grCheckboxConfig, grCollapseConfig, grConfirmDialogConfig, grDataTableConfig, grDialogSafelist, grDialogServiceConfig, grDrawerConfig, grDrawerSafelist, grDropdownConfig, grDropdownMenuConfig, grDropdownSafelist, grEmptyStateConfig, grFileUploadConfig, grFormFieldConfig, grFormFileConfig, grFormSectionConfig, grIconConfig, grImageViewerConfig, grInputConfig, grInputSafelist, grInputTagConfig, grInputTagSafelist, grLinkConfig, grLinkSafelist, grListConfig, grLoadingConfig, grLoadingSafelist, grModalClassTokens, grModalConfig, grModalSafelist, grNavbarConfig, grNumberInputConfig, grNumberInputSafelist, grPaginationConfig, grProgressBarConfig, grProgressBarSafelist, grPromptDialogConfig, grRadioConfig, grRadioGroupConfig, grRadioSafelist, grSegmentedConfig, grSegmentedSafelist, grSelectConfig, grSelectSafelist, grSidebarConfig, grSkeletonConfig, grSwitchConfig, grSwitchSafelist, grTableConfig, grTabsConfig, grTextareaConfig, grTextareaSafelist, grToasterConfig, grToasterSafelist, grTooltipConfig, grTreeConfig, grTreeSafelist, grTreeSelectConfig, grTreeSelectSafelist, httpStatusParser, initThemeEarly, jsonApiErrorParser, laravelValidationParser, matchAccept, maxFileSizeBytesValidator, maxSizeMbValidator, maxTotalSizeBytesValidator, networkErrorParser, normalizeError, normalizeFiles, plainMessageParser, problemDetailsParser, resolveGrDialogSectionConfig, resolveGrDialogTitle, resolveResponseErrorTitle, responseErrorParserPresets, runFileValidators, teardownDialogService, useDialogService, useResponseError, useTheme, useToast, vAutofocus, vAutosize, vClickOutside, vDropzone, vHotkey, vLoading };