@piwitests/server 0.21.0 → 0.22.1

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 (739) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{C9sdHaXd.js → 2VtBYkNh.js} +1 -1
  3. package/.output/public/_nuxt/{CES2i5Pl.js → 3xlGO1qT.js} +1 -1
  4. package/.output/public/_nuxt/{lGC893pn.js → 4yvOL9PC.js} +1 -1
  5. package/.output/public/_nuxt/{ZcAfCxWE.js → 6-ivqM_I.js} +1 -1
  6. package/.output/public/_nuxt/{DkT2nCqn.js → 9N6hSApy.js} +1 -1
  7. package/.output/public/_nuxt/{wkz5-1SO.js → 9P8iHISX.js} +1 -1
  8. package/.output/public/_nuxt/B-6GGrhr.js +1 -0
  9. package/.output/public/_nuxt/{Bo_dxehb.js → B09ddw9C.js} +1 -1
  10. package/.output/public/_nuxt/{BGusFAvZ.js → B0hK-xDF.js} +1 -1
  11. package/.output/public/_nuxt/{DfnKh3dZ.js → B2a-Phk3.js} +1 -1
  12. package/.output/public/_nuxt/{DqEOMteW.js → B6s20NbT.js} +1 -1
  13. package/.output/public/_nuxt/B9FSuKdA.js +1 -0
  14. package/.output/public/_nuxt/{DJMCXRuW.js → B9kt7ySS.js} +2 -2
  15. package/.output/public/_nuxt/{BnbSEpXX.js → BDQCwxpX.js} +1 -1
  16. package/.output/public/_nuxt/{B-zdP-D4.js → BFcdtAzg.js} +1 -1
  17. package/.output/public/_nuxt/{RAdNGxcF.js → BH-ym1CI.js} +1 -1
  18. package/.output/public/_nuxt/{zv8WdMx0.js → BKJetfRH.js} +1 -1
  19. package/.output/public/_nuxt/{CTD_pJ_v.js → BNAHBHbY.js} +1 -1
  20. package/.output/public/_nuxt/{DX4tAP78.js → BQOWm9mQ.js} +1 -1
  21. package/.output/public/_nuxt/{CvMzDKvu.js → BQzG26t0.js} +1 -1
  22. package/.output/public/_nuxt/{B_13C0GF.js → BTvE9qca.js} +1 -1
  23. package/.output/public/_nuxt/{BpBHls4-.js → BUMoU50-.js} +1 -1
  24. package/.output/public/_nuxt/{D_eDAIsT.js → BVN50jIb.js} +1 -1
  25. package/.output/public/_nuxt/{DSe8DxMl.js → BYB8NVJZ.js} +1 -1
  26. package/.output/public/_nuxt/{BfTNbVc_.js → BZnfiR67.js} +1 -1
  27. package/.output/public/_nuxt/{DQM62mxB.js → B_mN5eMV.js} +1 -1
  28. package/.output/public/_nuxt/BaDhDBCV.js +1 -0
  29. package/.output/public/_nuxt/{Ctb2CqUf.js → Bb7Uckln.js} +3 -3
  30. package/.output/public/_nuxt/{DvhCDBrR.js → Be4c943G.js} +2 -2
  31. package/.output/public/_nuxt/{YmT5WiN5.js → BfS8BZTO.js} +1 -1
  32. package/.output/public/_nuxt/{C2hNxjjz.js → BhH0TNTi.js} +1 -1
  33. package/.output/public/_nuxt/{CIBS7ye6.js → BjU3HZuS.js} +1 -1
  34. package/.output/public/_nuxt/{Ckgsh9AT.js → BlRWlfdD.js} +1 -1
  35. package/.output/public/_nuxt/BmJUhCIO.js +6 -0
  36. package/.output/public/_nuxt/{C5PSqfKi.js → BpUXqOVj.js} +1 -1
  37. package/.output/public/_nuxt/{DnNio-ut.js → BqCiYSVY.js} +1 -1
  38. package/.output/public/_nuxt/{Ci9d8YVV.js → Bt4FLbe0.js} +1 -1
  39. package/.output/public/_nuxt/{BpM6ZPIG.js → BtSJxOdh.js} +1 -1
  40. package/.output/public/_nuxt/{CAxgBYIt.js → BtaTvcz6.js} +2 -2
  41. package/.output/public/_nuxt/{DHzij16p.js → By5qkOq8.js} +1 -1
  42. package/.output/public/_nuxt/{DL24AjfW.js → C0v6l4pr.js} +1 -1
  43. package/.output/public/_nuxt/{9ti9eNH9.js → C9p0YCAi.js} +1 -1
  44. package/.output/public/_nuxt/{tQoyVPCE.js → CAZpjzvB.js} +1 -1
  45. package/.output/public/_nuxt/{COhdybDy.js → CBZD8ym8.js} +1 -1
  46. package/.output/public/_nuxt/CCP6Tyle.js +1 -0
  47. package/.output/public/_nuxt/{BAKUqW95.js → CD3R-ggS.js} +1 -1
  48. package/.output/public/_nuxt/{_rglcvXN.js → CDh_Qt7h.js} +1 -1
  49. package/.output/public/_nuxt/{C_NfGMTd.js → CI_q0F1O.js} +2 -2
  50. package/.output/public/_nuxt/{CtstIQSh.js → CJEp4i0N.js} +1 -1
  51. package/.output/public/_nuxt/{BNurUTla.js → CMhK1PvI.js} +1 -1
  52. package/.output/public/_nuxt/{CWKmbYlT.js → CNcu4khZ.js} +1 -1
  53. package/.output/public/_nuxt/COP3KBCA.js +9 -0
  54. package/.output/public/_nuxt/{Ebw5l7n8.js → CRPt9SfB.js} +1 -1
  55. package/.output/public/_nuxt/{B1RmmOsM.js → CScusXhF.js} +1 -1
  56. package/.output/public/_nuxt/{Cpsq-kYE.js → CWoSSKhQ.js} +1 -1
  57. package/.output/public/_nuxt/{Dk9nD32g.js → CWw9WGlv.js} +1 -1
  58. package/.output/public/_nuxt/{DnQv_hst.js → CZ9ThISn.js} +1 -1
  59. package/.output/public/_nuxt/{E-_n_6vi.js → Cd8r0xk5.js} +1 -1
  60. package/.output/public/_nuxt/{BGL_V7Y4.js → Cf52zHyB.js} +1 -1
  61. package/.output/public/_nuxt/{BqGumsDo.js → CkKCKAYp.js} +2 -2
  62. package/.output/public/_nuxt/{BR5cR2Ot.js → CkyMZI-0.js} +1 -1
  63. package/.output/public/_nuxt/{B3zmIJYb.js → CoPntblj.js} +1 -1
  64. package/.output/public/_nuxt/CobveFaj.js +1 -0
  65. package/.output/public/_nuxt/{DJXcGkJP.js → Cot8fIp5.js} +2 -2
  66. package/.output/public/_nuxt/{BerCW7Ug.js → CrOA9onF.js} +1 -1
  67. package/.output/public/_nuxt/{Chpah_7l.js → Cwwe5bRS.js} +1 -1
  68. package/.output/public/_nuxt/{C5vsaU4G.js → D0ROfwV0.js} +1 -1
  69. package/.output/public/_nuxt/{NERLHpOL.js → D4UlSVir.js} +1 -1
  70. package/.output/public/_nuxt/{DlW85lQq.js → D4oheDIm.js} +3 -3
  71. package/.output/public/_nuxt/{CsHulb12.js → D6Mo5HeX.js} +1 -1
  72. package/.output/public/_nuxt/{B3rirOqU.js → DBhdObsO.js} +1 -1
  73. package/.output/public/_nuxt/{BrxtP_cN.js → DDN2tt0a.js} +1 -1
  74. package/.output/public/_nuxt/{CTP8Pw0-.js → DGyGmFem.js} +2 -2
  75. package/.output/public/_nuxt/{DdH3op4b.js → DHUT-BKj.js} +1 -1
  76. package/.output/public/_nuxt/DK7xciFW.js +7 -0
  77. package/.output/public/_nuxt/{B3Fsod9X.js → DLNNAYfu.js} +1 -1
  78. package/.output/public/_nuxt/{yYlVYKCz.js → DLn-VPtK.js} +3 -3
  79. package/.output/public/_nuxt/{IPePdbzl.js → DOBSrxzY.js} +1 -1
  80. package/.output/public/_nuxt/{CFTZwazK.js → DOLeth7M.js} +1 -1
  81. package/.output/public/_nuxt/{CFEdRqaj.js → DQnsFoJn.js} +1 -1
  82. package/.output/public/_nuxt/{bfecIH89.js → DS2ANCQh.js} +1 -1
  83. package/.output/public/_nuxt/{CJBhojV6.js → DSvBQHzW.js} +1 -1
  84. package/.output/public/_nuxt/{DfSBKzrC.js → DWEkQ7bl.js} +1 -1
  85. package/.output/public/_nuxt/{Cqc-DSTF.js → DXXnDejN.js} +1 -1
  86. package/.output/public/_nuxt/{D8gX1Jde.js → Dj-TetcW.js} +1 -1
  87. package/.output/public/_nuxt/DpalT0nH.js +1 -0
  88. package/.output/public/_nuxt/{DhpTfeip.js → DsX5CCb5.js} +1 -1
  89. package/.output/public/_nuxt/{DAPTVdvA.js → DslnXfcH.js} +1 -1
  90. package/.output/public/_nuxt/{D9knOn6D.js → DtSn2Q9-.js} +1 -1
  91. package/.output/public/_nuxt/{BeDIjhoR.js → DwyFnMoY.js} +1 -1
  92. package/.output/public/_nuxt/{gV2U_Gqd.js → DzM9oeLa.js} +1 -1
  93. package/.output/public/_nuxt/{CLVWiCds.js → Gik813Ek.js} +1 -1
  94. package/.output/public/_nuxt/{YE1kAkU9.js → Hot1UcKY.js} +1 -1
  95. package/.output/public/_nuxt/{DKFXZdWZ.js → HwFFbACq.js} +1 -1
  96. package/.output/public/_nuxt/{LHoUGrfi.js → PdEEuEsg.js} +1 -1
  97. package/.output/public/_nuxt/{nOfj-ar8.js → SBmMTKQb.js} +1 -1
  98. package/.output/public/_nuxt/{BTVqMsA3.js → Sgis3xif.js} +1 -1
  99. package/.output/public/_nuxt/{D2pBhsH8.js → _VzR8bwc.js} +1 -1
  100. package/.output/public/_nuxt/{CV8iF2kG.js → b_yFgp5S.js} +1 -1
  101. package/.output/public/_nuxt/builds/latest.json +1 -1
  102. package/.output/public/_nuxt/builds/meta/28bca36d-5571-4157-b1b8-7f62c934eed6.json +1 -0
  103. package/.output/public/_nuxt/{CKYddHa6.js → cSeAgciy.js} +1 -1
  104. package/.output/public/_nuxt/{CMYAryzi.js → czXrP7NB.js} +1 -1
  105. package/.output/public/_nuxt/{DCFbQvIN.js → h49q_GXF.js} +9 -9
  106. package/.output/public/_nuxt/{DON74Yh6.js → hzsG6cAc.js} +1 -1
  107. package/.output/public/_nuxt/{DwQaVMZR.js → iubpj2qv.js} +1 -1
  108. package/.output/public/_nuxt/{oKrbs1XK.js → jjOqY9Tv.js} +1 -1
  109. package/.output/public/_nuxt/{BTCh_0zN.js → kfFeu9tK.js} +1 -1
  110. package/.output/public/_nuxt/nANaAHCd.js +5 -0
  111. package/.output/public/_nuxt/{CifRHVaR.js → t-juTK3X.js} +1 -1
  112. package/.output/public/_nuxt/{Dsvu7YJT.js → x8YSyy4c.js} +1 -1
  113. package/.output/public/_nuxt/{uSPCvASp.js → x8w_1_rn.js} +1 -1
  114. package/.output/public/_nuxt/xbO0VmDX.js +1 -0
  115. package/.output/server/chunks/_/collect.mjs +1 -1
  116. package/.output/server/chunks/_/error-500.mjs.map +1 -1
  117. package/.output/server/chunks/_/markers.mjs +1 -1
  118. package/.output/server/chunks/_/quarantine.mjs +1 -1
  119. package/.output/server/chunks/_/users.mjs +1 -1
  120. package/.output/server/chunks/build/{Alert-C4xq8lao.mjs → Alert-DAb8nKVs.mjs} +2 -2
  121. package/.output/server/chunks/build/Alert-DAb8nKVs.mjs.map +1 -0
  122. package/.output/server/chunks/build/{Breadcrumb-3itRZ1uz.mjs → Breadcrumb-DJp5WvUM.mjs} +5 -5
  123. package/.output/server/chunks/build/Breadcrumb-DJp5WvUM.mjs.map +1 -0
  124. package/.output/server/chunks/build/{BreadcrumbNav-GnjBvXuT.mjs → BreadcrumbNav-BrQwfL8G.mjs} +2 -2
  125. package/.output/server/chunks/build/BreadcrumbNav-BrQwfL8G.mjs.map +1 -0
  126. package/.output/server/chunks/build/{BrowserBadge-DQqJS9CV.mjs → BrowserBadge-Djw_e_I9.mjs} +3 -3
  127. package/.output/server/chunks/build/BrowserBadge-Djw_e_I9.mjs.map +1 -0
  128. package/.output/server/chunks/build/{Card-BQP_oZkQ.mjs → Card--Ike7sYc.mjs} +2 -2
  129. package/.output/server/chunks/build/Card--Ike7sYc.mjs.map +1 -0
  130. package/.output/server/chunks/build/{ChartCard-D0rzMf-N.mjs → ChartCard-B2gd_8HP.mjs} +2 -2
  131. package/.output/server/chunks/build/ChartCard-B2gd_8HP.mjs.map +1 -0
  132. package/.output/server/chunks/build/{ChartMarkerTooltip-0DcMfD_6.mjs → ChartMarkerTooltip-u_1DUHh-.mjs} +2 -2
  133. package/.output/server/chunks/build/ChartMarkerTooltip-u_1DUHh-.mjs.map +1 -0
  134. package/.output/server/chunks/build/{Checkbox-DmRKG-0s.mjs → Checkbox-C1khEdTh.mjs} +4 -4
  135. package/.output/server/chunks/build/Checkbox-C1khEdTh.mjs.map +1 -0
  136. package/.output/server/chunks/build/{CodeBlock-DGhKVFad.mjs → CodeBlock-CjnDrO3Y.mjs} +4 -4
  137. package/.output/server/chunks/build/CodeBlock-CjnDrO3Y.mjs.map +1 -0
  138. package/.output/server/chunks/build/{DashboardNavbar-DCr10nxL.mjs → DashboardNavbar-DYtmVlhy.mjs} +5 -5
  139. package/.output/server/chunks/build/DashboardNavbar-DYtmVlhy.mjs.map +1 -0
  140. package/.output/server/chunks/build/{DashboardSidebarToggle-8EpBhX0R.mjs → DashboardSidebarToggle-BPNxODwj.mjs} +5 -5
  141. package/.output/server/chunks/build/DashboardSidebarToggle-BPNxODwj.mjs.map +1 -0
  142. package/.output/server/chunks/build/{DataLocationCard-rzS-pgCP.mjs → DataLocationCard-2B-sVSMr.mjs} +5 -5
  143. package/.output/server/chunks/build/DataLocationCard-2B-sVSMr.mjs.map +1 -0
  144. package/.output/server/chunks/build/{DiagnosisPanel-BWTpoCKy.mjs → DiagnosisPanel-D6QO30FQ.mjs} +7 -7
  145. package/.output/server/chunks/build/DiagnosisPanel-D6QO30FQ.mjs.map +1 -0
  146. package/.output/server/chunks/build/{DiagnosisResult-Br3qBLXe.mjs → DiagnosisResult-ujB5Lt2A.mjs} +10 -10
  147. package/.output/server/chunks/build/DiagnosisResult-ujB5Lt2A.mjs.map +1 -0
  148. package/.output/server/chunks/build/{DurationValue-CWKfjIF2.mjs → DurationValue-UX9uajQJ.mjs} +2 -2
  149. package/.output/server/chunks/build/DurationValue-UX9uajQJ.mjs.map +1 -0
  150. package/.output/server/chunks/build/{EntityLinks-CF0xG3Y8.mjs → EntityLinks-F8_kC-IH.mjs} +3 -3
  151. package/.output/server/chunks/build/EntityLinks-F8_kC-IH.mjs.map +1 -0
  152. package/.output/server/chunks/build/{EnvManagedBadge-UwD2b9v2.mjs → EnvManagedBadge-D6e-10M9.mjs} +3 -3
  153. package/.output/server/chunks/build/EnvManagedBadge-D6e-10M9.mjs.map +1 -0
  154. package/.output/server/chunks/build/{FeatureUnavailable-CwPms6X_.mjs → FeatureUnavailable-BMw4euTk.mjs} +2 -2
  155. package/.output/server/chunks/build/FeatureUnavailable-BMw4euTk.mjs.map +1 -0
  156. package/.output/server/chunks/build/{FormField-e7OnSKPM.mjs → FormField-QptK0rPg.mjs} +3 -3
  157. package/.output/server/chunks/build/FormField-QptK0rPg.mjs.map +1 -0
  158. package/.output/server/chunks/build/{GetStartedWizard-CB5v1Xzu.mjs → GetStartedWizard-DxT8T14Y.mjs} +4 -4
  159. package/.output/server/chunks/build/GetStartedWizard-DxT8T14Y.mjs.map +1 -0
  160. package/.output/server/chunks/build/{HelpHint-DjGrGFA7.mjs → HelpHint-C5Ru8BCc.mjs} +2 -2
  161. package/.output/server/chunks/build/HelpHint-C5Ru8BCc.mjs.map +1 -0
  162. package/.output/server/chunks/build/{LoadingState-B8v1nWJt.mjs → LoadingState-CwpfmI0W.mjs} +3 -3
  163. package/.output/server/chunks/build/LoadingState-CwpfmI0W.mjs.map +1 -0
  164. package/.output/server/chunks/build/{MarkerBadge-D7meXy4u.mjs → MarkerBadge-Biz5--h2.mjs} +1 -1
  165. package/.output/server/chunks/build/MarkerBadge-Biz5--h2.mjs.map +1 -0
  166. package/.output/server/chunks/build/{MetaStripGroup-dXXa_MzF.mjs → MetaStripGroup-BBByVvpR.mjs} +13 -13
  167. package/.output/server/chunks/build/{MetaStripGroup-dXXa_MzF.mjs.map → MetaStripGroup-BBByVvpR.mjs.map} +1 -1
  168. package/.output/server/chunks/build/{Modal-pSDlXzT3.mjs → Modal-BacZmQCX.mjs} +3 -3
  169. package/.output/server/chunks/build/Modal-BacZmQCX.mjs.map +1 -0
  170. package/.output/server/chunks/build/{NavigationMenu-cqpt11Ce.mjs → NavigationMenu-sTiKSWDm.mjs} +5 -5
  171. package/.output/server/chunks/build/NavigationMenu-sTiKSWDm.mjs.map +1 -0
  172. package/.output/server/chunks/build/{OpenInIdeLink-B9wvQkhy.mjs → OpenInIdeLink-Crc8y0Yx.mjs} +5 -5
  173. package/.output/server/chunks/build/{OpenInIdeLink-B9wvQkhy.mjs.map → OpenInIdeLink-Crc8y0Yx.mjs.map} +1 -1
  174. package/.output/server/chunks/build/{ProjectTestCasesTable-BwHEtZTz.mjs → ProjectTestCasesTable-DwjqZ2i5.mjs} +17 -17
  175. package/.output/server/chunks/build/ProjectTestCasesTable-DwjqZ2i5.mjs.map +1 -0
  176. package/.output/server/chunks/build/{RunReports-BDRIWn3o.mjs → RunReports-nuLb-Nm3.mjs} +3 -3
  177. package/.output/server/chunks/build/RunReports-nuLb-Nm3.mjs.map +1 -0
  178. package/.output/server/chunks/build/{RunStatusBadge-CuTDknRJ.mjs → RunStatusBadge-CvWmcFYM.mjs} +2 -2
  179. package/.output/server/chunks/build/RunStatusBadge-CvWmcFYM.mjs.map +1 -0
  180. package/.output/server/chunks/build/{SectionCard-BW5Lynrr.mjs → SectionCard-C753B3Yo.mjs} +3 -3
  181. package/.output/server/chunks/build/SectionCard-C753B3Yo.mjs.map +1 -0
  182. package/.output/server/chunks/build/{Select-CVctwpib.mjs → Select-BAyYwPuo.mjs} +4 -4
  183. package/.output/server/chunks/build/Select-BAyYwPuo.mjs.map +1 -0
  184. package/.output/server/chunks/build/{SelectMenu-XLVBEa11.mjs → SelectMenu-zE_AhMX8.mjs} +4 -4
  185. package/.output/server/chunks/build/{SelectMenu-XLVBEa11.mjs.map → SelectMenu-zE_AhMX8.mjs.map} +1 -1
  186. package/.output/server/chunks/build/{Separator-CR4WcEKD.mjs → Separator-BbgCfKKJ.mjs} +3 -3
  187. package/.output/server/chunks/build/Separator-BbgCfKKJ.mjs.map +1 -0
  188. package/.output/server/chunks/build/{SettingsField-DvtRvI6O.mjs → SettingsField-D-VriK9X.mjs} +5 -5
  189. package/.output/server/chunks/build/SettingsField-D-VriK9X.mjs.map +1 -0
  190. package/.output/server/chunks/build/{Skeleton-CEHuuKVh.mjs → Skeleton-DAp_WMEe.mjs} +2 -2
  191. package/.output/server/chunks/build/Skeleton-DAp_WMEe.mjs.map +1 -0
  192. package/.output/server/chunks/build/{Slideover-D270EZZD.mjs → Slideover-CNbGvbUF.mjs} +3 -3
  193. package/.output/server/chunks/build/Slideover-CNbGvbUF.mjs.map +1 -0
  194. package/.output/server/chunks/build/{Switch-8zWfwI5B.mjs → Switch-DdkA3Fii.mjs} +3 -3
  195. package/.output/server/chunks/build/Switch-DdkA3Fii.mjs.map +1 -0
  196. package/.output/server/chunks/build/{Table-BRk04Hd2.mjs → Table-CfDVAuUJ.mjs} +4 -4
  197. package/.output/server/chunks/build/Table-CfDVAuUJ.mjs.map +1 -0
  198. package/.output/server/chunks/build/{Tabs-BkSOnbaB.mjs → Tabs-BCOhHEB9.mjs} +2 -2
  199. package/.output/server/chunks/build/Tabs-BCOhHEB9.mjs.map +1 -0
  200. package/.output/server/chunks/build/{TestCaseHistoryChart-C6t5RrCG.mjs → TestCaseHistoryChart-CKDXQ2GI.mjs} +3 -3
  201. package/.output/server/chunks/build/TestCaseHistoryChart-CKDXQ2GI.mjs.map +1 -0
  202. package/.output/server/chunks/build/{TestStatusBar-DhbrM_rQ.mjs → TestStatusBar-wquHQqtp.mjs} +2 -2
  203. package/.output/server/chunks/build/TestStatusBar-wquHQqtp.mjs.map +1 -0
  204. package/.output/server/chunks/build/{Textarea-vkMKVQTJ.mjs → Textarea-Ohs6QTXf.mjs} +3 -3
  205. package/.output/server/chunks/build/Textarea-Ohs6QTXf.mjs.map +1 -0
  206. package/.output/server/chunks/build/{Tooltip-Dv4htNP6.mjs → Tooltip-BRBnl4pE.mjs} +3 -3
  207. package/.output/server/chunks/build/Tooltip-BRBnl4pE.mjs.map +1 -0
  208. package/.output/server/chunks/build/{_id_-DMkgWSLZ.mjs → _id_-BesWjK_d.mjs} +45 -43
  209. package/.output/server/chunks/build/{_id_-DMkgWSLZ.mjs.map → _id_-BesWjK_d.mjs.map} +1 -1
  210. package/.output/server/chunks/build/{_id_-CUZ5S6y5.mjs → _id_-CGs0u8Fr.mjs} +30 -28
  211. package/.output/server/chunks/build/{_id_-CUZ5S6y5.mjs.map → _id_-CGs0u8Fr.mjs.map} +1 -1
  212. package/.output/server/chunks/build/{_id_-2PMH6rl8.mjs → _id_-CQ0lolEK.mjs} +26 -24
  213. package/.output/server/chunks/build/_id_-CQ0lolEK.mjs.map +1 -0
  214. package/.output/server/chunks/build/{_id_-8cGIgeg6.mjs → _id_-D1-06Fcl.mjs} +46 -44
  215. package/.output/server/chunks/build/_id_-D1-06Fcl.mjs.map +1 -0
  216. package/.output/server/chunks/build/{about-D3WXTDro.mjs → about-DdyOj-dj.mjs} +10 -8
  217. package/.output/server/chunks/build/about-DdyOj-dj.mjs.map +1 -0
  218. package/.output/server/chunks/build/{account-BslDNCoo.mjs → account-7aVMKekZ.mjs} +10 -8
  219. package/.output/server/chunks/build/account-7aVMKekZ.mjs.map +1 -0
  220. package/.output/server/chunks/build/{ai-C23R9l94.mjs → ai-zw3T9b5u.mjs} +23 -21
  221. package/.output/server/chunks/build/{ai-C23R9l94.mjs.map → ai-zw3T9b5u.mjs.map} +1 -1
  222. package/.output/server/chunks/build/{analytics-DQHeToK0.mjs → analytics-CeCzKwEX.mjs} +43 -41
  223. package/.output/server/chunks/build/{analytics-DQHeToK0.mjs.map → analytics-CeCzKwEX.mjs.map} +1 -1
  224. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  225. package/.output/server/chunks/build/{compare-RxHSOdsO.mjs → compare-B2OB3zdd.mjs} +3 -1
  226. package/.output/server/chunks/build/compare-B2OB3zdd.mjs.map +1 -0
  227. package/.output/server/chunks/build/{db.client-D74DghqX.mjs → db.client-Bdqk_eYQ.mjs} +3 -1
  228. package/.output/server/chunks/build/db.client-Bdqk_eYQ.mjs.map +1 -0
  229. package/.output/server/chunks/build/{default-CeyePZ5I.mjs → default-CkyAx_Mu.mjs} +31 -29
  230. package/.output/server/chunks/build/{default-CeyePZ5I.mjs.map → default-CkyAx_Mu.mjs.map} +1 -1
  231. package/.output/server/chunks/build/{docs-f_bnC75q.mjs → docs-Dhj-wEks.mjs} +16 -14
  232. package/.output/server/chunks/build/{docs-f_bnC75q.mjs.map → docs-Dhj-wEks.mjs.map} +1 -1
  233. package/.output/server/chunks/build/{edit-BOC4zWuH.mjs → edit-CVz_gdoe.mjs} +17 -15
  234. package/.output/server/chunks/build/edit-CVz_gdoe.mjs.map +1 -0
  235. package/.output/server/chunks/build/{fetch-BQg_fhX0.mjs → fetch-Be-j7hF1.mjs} +3 -3
  236. package/.output/server/chunks/build/fetch-Be-j7hF1.mjs.map +1 -0
  237. package/.output/server/chunks/build/{forgot-password-CxuVbGWy.mjs → forgot-password-CwdjL7BO.mjs} +6 -4
  238. package/.output/server/chunks/build/forgot-password-CwdjL7BO.mjs.map +1 -0
  239. package/.output/server/chunks/build/{import-CC27wEIu.mjs → import-DyQEw4V3.mjs} +16 -14
  240. package/.output/server/chunks/build/import-DyQEw4V3.mjs.map +1 -0
  241. package/.output/server/chunks/build/{index-BOK1aJk9.mjs → index-ByWTzqF6.mjs} +1 -1
  242. package/.output/server/chunks/build/index-ByWTzqF6.mjs.map +1 -0
  243. package/.output/server/chunks/build/{index-DUmjP3Gr.mjs → index-D7Bmj6bq.mjs} +18 -16
  244. package/.output/server/chunks/build/index-D7Bmj6bq.mjs.map +1 -0
  245. package/.output/server/chunks/build/{index-B6PjfyTY.mjs → index-DcnICCZU.mjs} +22 -20
  246. package/.output/server/chunks/build/{index-B6PjfyTY.mjs.map → index-DcnICCZU.mjs.map} +1 -1
  247. package/.output/server/chunks/build/{index-BhS1DuCr.mjs → index-DghAFpNR.mjs} +58 -56
  248. package/.output/server/chunks/build/index-DghAFpNR.mjs.map +1 -0
  249. package/.output/server/chunks/build/{index-jvF53f7_.mjs → index-ID913tUa.mjs} +7 -5
  250. package/.output/server/chunks/build/index-ID913tUa.mjs.map +1 -0
  251. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs +1 -1
  252. package/.output/server/chunks/build/{login-CdpOhiP8.mjs → login-rXKF63j6.mjs} +12 -10
  253. package/.output/server/chunks/build/login-rXKF63j6.mjs.map +1 -0
  254. package/.output/server/chunks/build/{mcp-WTeO5WRo.mjs → mcp-ByNvFy4o.mjs} +70 -21
  255. package/.output/server/chunks/build/mcp-ByNvFy4o.mjs.map +1 -0
  256. package/.output/server/chunks/build/{notifications-yY6ik-fi.mjs → notifications-CbLAZnKJ.mjs} +17 -15
  257. package/.output/server/chunks/build/notifications-CbLAZnKJ.mjs.map +1 -0
  258. package/.output/server/chunks/build/performance-C93MEPaZ.mjs +581 -0
  259. package/.output/server/chunks/build/performance-C93MEPaZ.mjs.map +1 -0
  260. package/.output/server/chunks/build/{pr-feedback-Hv2Ydh_6.mjs → pr-feedback-DKCB0bDE.mjs} +11 -9
  261. package/.output/server/chunks/build/pr-feedback-DKCB0bDE.mjs.map +1 -0
  262. package/.output/server/chunks/build/{reset-password-CFtO8A6n.mjs → reset-password-BBoHKMqD.mjs} +6 -4
  263. package/.output/server/chunks/build/reset-password-BBoHKMqD.mjs.map +1 -0
  264. package/.output/server/chunks/build/server.mjs +70 -73
  265. package/.output/server/chunks/build/server.mjs.map +1 -1
  266. package/.output/server/chunks/build/{settings-DIpvnY8_.mjs → settings-DiG0JjzC.mjs} +17 -27
  267. package/.output/server/chunks/build/settings-DiG0JjzC.mjs.map +1 -0
  268. package/.output/server/chunks/build/{settings-metadata-DRv9VveS.mjs → settings-metadata-DnAK4Rzg.mjs} +10 -18
  269. package/.output/server/chunks/build/settings-metadata-DnAK4Rzg.mjs.map +1 -0
  270. package/.output/server/chunks/build/{setup-Di0UMyWx.mjs → setup-0-1O6Hjz.mjs} +110 -161
  271. package/.output/server/chunks/build/setup-0-1O6Hjz.mjs.map +1 -0
  272. package/.output/server/chunks/build/{storage-gAbY1KbQ.mjs → storage-3JiFJ843.mjs} +17 -15
  273. package/.output/server/chunks/build/storage-3JiFJ843.mjs.map +1 -0
  274. package/.output/server/chunks/build/{tags-DJ80wCqt.mjs → tags-CqYcp7js.mjs} +10 -8
  275. package/.output/server/chunks/build/tags-CqYcp7js.mjs.map +1 -0
  276. package/.output/server/chunks/build/{test-cases-YP83YlnL.mjs → test-cases-y1HSgPX2.mjs} +24 -22
  277. package/.output/server/chunks/build/test-cases-y1HSgPX2.mjs.map +1 -0
  278. package/.output/server/chunks/build/{test-functions-BwLTxGmM.mjs → test-functions-D2ju95Ly.mjs} +16 -14
  279. package/.output/server/chunks/build/test-functions-D2ju95Ly.mjs.map +1 -0
  280. package/.output/server/chunks/build/{useChartMarkers-C89e_VLV.mjs → useChartMarkers-C0wSO0xk.mjs} +1 -1
  281. package/.output/server/chunks/build/useChartMarkers-C0wSO0xk.mjs.map +1 -0
  282. package/.output/server/chunks/build/{useCopyRich-Cd5Yj_Wy.mjs → useCopyRich-CVFeYfkG.mjs} +21 -21
  283. package/.output/server/chunks/build/useCopyRich-CVFeYfkG.mjs.map +1 -0
  284. package/.output/server/chunks/build/{useDesktopDownload-BmR6ouz2.mjs → useDesktopDownload-Dyf0fR47.mjs} +2 -2
  285. package/.output/server/chunks/build/useDesktopDownload-Dyf0fR47.mjs.map +1 -0
  286. package/.output/server/chunks/build/{useOpenInIde-DolN3bZ5.mjs → useOpenInIde--6Me0WlL.mjs} +1 -1
  287. package/.output/server/chunks/build/useOpenInIde--6Me0WlL.mjs.map +1 -0
  288. package/.output/server/chunks/build/{useSettingsNav-DfnOFlR_.mjs → useSettingsNav-BLTHducV.mjs} +2 -2
  289. package/.output/server/chunks/build/useSettingsNav-BLTHducV.mjs.map +1 -0
  290. package/.output/server/chunks/build/{users-I2K7HXS2.mjs → users-IdmY9JZV.mjs} +11 -9
  291. package/.output/server/chunks/build/users-IdmY9JZV.mjs.map +1 -0
  292. package/.output/server/chunks/nitro/nitro.mjs +1693 -1611
  293. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  294. package/.output/server/chunks/routes/__piwi/session.get.mjs +3 -1
  295. package/.output/server/chunks/routes/__piwi/session.get.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs +2 -0
  297. package/.output/server/chunks/routes/api/admin/cleanup.delete.mjs.map +1 -1
  298. package/.output/server/chunks/routes/api/admin/stats.get.mjs +2 -0
  299. package/.output/server/chunks/routes/api/admin/stats.get.mjs.map +1 -1
  300. package/.output/server/chunks/routes/api/ai/status.get.mjs +2 -0
  301. package/.output/server/chunks/routes/api/ai/status.get.mjs.map +1 -1
  302. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs +2 -0
  303. package/.output/server/chunks/routes/api/analytics/_widget_.get.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/auth/change-password.post.mjs +10 -1
  305. package/.output/server/chunks/routes/api/auth/change-password.post.mjs.map +1 -1
  306. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs +3 -1
  307. package/.output/server/chunks/routes/api/auth/forgot-password.post.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/auth/login.post.mjs +16 -2
  309. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/auth/logout.post.mjs +3 -1
  311. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/auth/me.get.mjs +3 -1
  313. package/.output/server/chunks/routes/api/auth/me.get.mjs.map +1 -1
  314. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs +3 -1
  315. package/.output/server/chunks/routes/api/auth/oauth/_provider/callback.get.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs +3 -1
  317. package/.output/server/chunks/routes/api/auth/oauth/_provider/login.get.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs +10 -1
  319. package/.output/server/chunks/routes/api/auth/oauth/_provider/unlink.post.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs +9 -1
  321. package/.output/server/chunks/routes/api/auth/reset-password.post.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs +6 -1
  323. package/.output/server/chunks/routes/api/auth/send-verify-email.post.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/auth/setup.get.mjs +3 -1
  325. package/.output/server/chunks/routes/api/auth/setup.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/auth/setup.post.mjs +30 -12
  327. package/.output/server/chunks/routes/api/auth/setup.post.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs +3 -1
  329. package/.output/server/chunks/routes/api/auth/verify-email.get.mjs.map +1 -1
  330. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs +5 -3
  331. package/.output/server/chunks/routes/api/channels/_id/test.post.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs +3 -1
  333. package/.output/server/chunks/routes/api/channels/_id_.delete.mjs.map +1 -1
  334. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs +3 -1
  335. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/approve.post.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs +3 -1
  337. package/.output/server/chunks/routes/api/cluster-merge-suggestions/_id/reject.post.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +3 -1
  339. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs +2 -0
  341. package/.output/server/chunks/routes/api/desktop/reporter-config.get.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +3 -1
  343. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +3 -1
  345. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +3 -1
  347. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +3 -1
  349. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +3 -1
  351. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +3 -1
  353. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +3 -1
  355. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +3 -1
  357. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +3 -1
  359. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +3 -1
  361. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +3 -1
  363. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +3 -1
  365. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +3 -1
  367. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +3 -1
  369. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +3 -1
  371. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs.map +1 -1
  372. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +22 -4
  373. package/.output/server/chunks/routes/api/files/_...path_.get.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/health.get.mjs +3 -1
  375. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  376. package/.output/server/chunks/routes/api/index.get.mjs +11 -5
  377. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/index.get2.mjs +8 -3
  379. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/index.get3.mjs +3 -1
  381. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/index.get4.mjs +3 -1
  383. package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/index.get5.mjs +3 -1
  385. package/.output/server/chunks/routes/api/index.get5.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/index.post.mjs +3 -1
  387. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/index.post2.mjs +6 -2
  389. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/index.post3.mjs +3 -1
  391. package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/index.post4.mjs +14 -1
  393. package/.output/server/chunks/routes/api/index.post4.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/index.post5.mjs +3 -1
  395. package/.output/server/chunks/routes/api/index.post5.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/index.post6.mjs +3 -1
  397. package/.output/server/chunks/routes/api/index.post6.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +4 -3
  399. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +4 -3
  401. package/.output/server/chunks/routes/api/links/_id_.delete.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +4 -3
  403. package/.output/server/chunks/routes/api/links/_id_.patch.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +3 -1
  405. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +3 -1
  407. package/.output/server/chunks/routes/api/markers/_id_.put.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +32 -16
  409. package/.output/server/chunks/routes/api/notifications/stream.get.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +3 -1
  411. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +3 -1
  413. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +3 -1
  415. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +3 -1
  417. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +3 -1
  419. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +3 -1
  421. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +3 -1
  423. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +3 -1
  425. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +3 -1
  427. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +3 -1
  429. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +3 -1
  431. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +3 -1
  433. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +3 -1
  435. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +3 -1
  437. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +3 -1
  439. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +3 -1
  441. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs.map +1 -1
  442. package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs +3 -1
  443. package/.output/server/chunks/routes/api/projects/_id/test-functions/extract.post.mjs.map +1 -1
  444. package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs +3 -1
  445. package/.output/server/chunks/routes/api/projects/_id/test-functions/validate-proposal.post.mjs.map +1 -1
  446. package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs +3 -1
  447. package/.output/server/chunks/routes/api/projects/_id/test-functions.get.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs +3 -1
  449. package/.output/server/chunks/routes/api/projects/_id/test-functions.post.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +3 -1
  451. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +3 -1
  453. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +3 -1
  455. package/.output/server/chunks/routes/api/projects/_id_.get.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +3 -1
  457. package/.output/server/chunks/routes/api/projects/_id_.put.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/projects/menu.get.mjs +3 -1
  459. package/.output/server/chunks/routes/api/projects/menu.get.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/projects/overview.get.mjs +3 -1
  461. package/.output/server/chunks/routes/api/projects/overview.get.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/projects.get.mjs +3 -1
  463. package/.output/server/chunks/routes/api/projects.get.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/search.get.mjs +3 -1
  465. package/.output/server/chunks/routes/api/search.get.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +3 -1
  467. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +3 -1
  469. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs +2 -0
  471. package/.output/server/chunks/routes/api/settings/ai/models.post.mjs.map +1 -1
  472. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +3 -1
  473. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs.map +1 -1
  474. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +3 -1
  475. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs.map +1 -1
  476. package/.output/server/chunks/routes/api/settings/ai.get.mjs +3 -1
  477. package/.output/server/chunks/routes/api/settings/ai.get.mjs.map +1 -1
  478. package/.output/server/chunks/routes/api/settings/ai.put.mjs +3 -1
  479. package/.output/server/chunks/routes/api/settings/ai.put.mjs.map +1 -1
  480. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +3 -1
  481. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs.map +1 -1
  482. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +3 -1
  483. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs.map +1 -1
  484. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs +3 -1
  485. package/.output/server/chunks/routes/api/settings/smtp/test.post.mjs.map +1 -1
  486. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +3 -1
  487. package/.output/server/chunks/routes/api/settings/smtp.get.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +3 -1
  489. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +3 -1
  491. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +3 -1
  493. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +3 -1
  495. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/setup-status.get.mjs +3 -1
  497. package/.output/server/chunks/routes/api/setup-status.get.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/stream.get.mjs +7 -2
  499. package/.output/server/chunks/routes/api/stream.get.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +3 -1
  501. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +3 -1
  503. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +3 -1
  505. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +3 -1
  507. package/.output/server/chunks/routes/api/tags/_id_.put.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +3 -1
  509. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs.map +1 -1
  510. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +3 -1
  511. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs.map +1 -1
  512. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +3 -1
  513. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs.map +1 -1
  514. package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs +3 -1
  515. package/.output/server/chunks/routes/api/test-functions/_id_.delete.mjs.map +1 -1
  516. package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs +3 -1
  517. package/.output/server/chunks/routes/api/test-functions/_id_.put.mjs.map +1 -1
  518. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +3 -1
  519. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs.map +1 -1
  520. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +3 -1
  521. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs.map +1 -1
  522. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +3 -1
  523. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs.map +1 -1
  524. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +3 -1
  525. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs.map +1 -1
  526. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +3 -1
  527. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs.map +1 -1
  528. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +3 -1
  529. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs.map +1 -1
  530. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +6 -4
  531. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs.map +1 -1
  532. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +3 -1
  533. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs.map +1 -1
  534. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +3 -1
  535. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  536. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +3 -1
  537. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +3 -1
  539. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +3 -1
  541. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +3 -1
  543. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs.map +1 -1
  544. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +3 -1
  545. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs.map +1 -1
  546. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +3 -1
  547. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs.map +1 -1
  548. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +3 -1
  549. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs.map +1 -1
  550. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +3 -1
  551. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +3 -1
  553. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs.map +1 -1
  554. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +3 -1
  555. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs.map +1 -1
  556. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +3 -1
  557. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs.map +1 -1
  558. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +3 -1
  559. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs.map +1 -1
  560. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +3 -1
  561. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs.map +1 -1
  562. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +3 -1
  563. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs.map +1 -1
  564. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +3 -1
  565. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs.map +1 -1
  566. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +3 -1
  567. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs.map +1 -1
  568. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +3 -1
  569. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs.map +1 -1
  570. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +3 -1
  571. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs.map +1 -1
  572. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +3 -1
  573. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs.map +1 -1
  574. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +3 -1
  575. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs.map +1 -1
  576. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +3 -1
  577. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -1
  578. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +3 -1
  579. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -1
  580. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +3 -1
  581. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs.map +1 -1
  582. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +3 -1
  583. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs.map +1 -1
  584. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +3 -1
  585. package/.output/server/chunks/routes/api/test-runs/start.post.mjs.map +1 -1
  586. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +3 -1
  587. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs.map +1 -1
  588. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +3 -1
  589. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs.map +1 -1
  590. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +3 -1
  591. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  592. package/.output/server/chunks/routes/api/traces/check.post.mjs +5 -3
  593. package/.output/server/chunks/routes/api/traces/check.post.mjs.map +1 -1
  594. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs +3 -1
  595. package/.output/server/chunks/routes/api/users/_id/api-keys/_keyId_.delete.mjs.map +1 -1
  596. package/.output/server/chunks/routes/api/users/_id/index.get.mjs +3 -1
  597. package/.output/server/chunks/routes/api/users/_id/index.get.mjs.map +1 -1
  598. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +3 -1
  599. package/.output/server/chunks/routes/api/users/_id/index.post.mjs.map +1 -1
  600. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +3 -1
  601. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs.map +1 -1
  602. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +3 -1
  603. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs.map +1 -1
  604. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +3 -1
  605. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs.map +1 -1
  606. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +3 -1
  607. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  608. package/.output/server/chunks/routes/api/users/_id_.patch.mjs +7 -2
  609. package/.output/server/chunks/routes/api/users/_id_.patch.mjs.map +1 -1
  610. package/.output/server/chunks/routes/api/version.get.mjs +3 -1
  611. package/.output/server/chunks/routes/api/version.get.mjs.map +1 -1
  612. package/.output/server/chunks/routes/mcp.post.mjs +3 -1
  613. package/.output/server/chunks/routes/mcp.post.mjs.map +1 -1
  614. package/.output/server/chunks/routes/renderer.mjs +1 -1
  615. package/.output/server/chunks/routes/renderer.mjs.map +1 -1
  616. package/.output/server/chunks/tasks/sweep.mjs +2 -0
  617. package/.output/server/chunks/tasks/sweep.mjs.map +1 -1
  618. package/.output/server/chunks/tasks/sweep2.mjs +2 -0
  619. package/.output/server/chunks/tasks/sweep2.mjs.map +1 -1
  620. package/.output/server/database/migrations/0044_panoramic_eddie_brock.sql +1 -0
  621. package/.output/server/database/migrations/meta/0044_snapshot.json +3772 -0
  622. package/.output/server/database/migrations/meta/_journal.json +7 -0
  623. package/.output/server/database/migrations-pg/0045_loose_runaways.sql +1 -0
  624. package/.output/server/database/migrations-pg/meta/0045_snapshot.json +4480 -0
  625. package/.output/server/database/migrations-pg/meta/_journal.json +7 -0
  626. package/.output/server/index.mjs +3 -1
  627. package/.output/server/index.mjs.map +1 -1
  628. package/.output/server/package.json +1 -1
  629. package/bin/piwi-server.mjs +10 -0
  630. package/package.json +1 -1
  631. package/.output/public/_nuxt/BG0KKQiT.js +0 -7
  632. package/.output/public/_nuxt/CIEceDOw.js +0 -1
  633. package/.output/public/_nuxt/CRBXM2d6.js +0 -5
  634. package/.output/public/_nuxt/Cejoebel.js +0 -6
  635. package/.output/public/_nuxt/DCoJlz_q.js +0 -1
  636. package/.output/public/_nuxt/Da8A92cF.js +0 -1
  637. package/.output/public/_nuxt/DepFDZO3.js +0 -1
  638. package/.output/public/_nuxt/Vxyo_mU9.js +0 -1
  639. package/.output/public/_nuxt/bFU9Y1Vw.js +0 -10
  640. package/.output/public/_nuxt/builds/meta/31ca2be4-a949-4df6-9818-773fc085557a.json +0 -1
  641. package/.output/public/_nuxt/four-S1Y.js +0 -1
  642. package/.output/public/_nuxt/oSJFAC38.js +0 -1
  643. package/.output/public/_nuxt/rL4C0HV5.js +0 -1
  644. package/.output/public/trace-viewer/assets/codeMirrorModule-LEHpjmcn.js +0 -32
  645. package/.output/public/trace-viewer/assets/defaultSettingsView-BNmKHKpQ.js +0 -264
  646. package/.output/public/trace-viewer/assets/urlMatch-BYQrIQwR.js +0 -1
  647. package/.output/public/trace-viewer/assets/xtermModule-CsJ4vdCR.js +0 -9
  648. package/.output/public/trace-viewer/codeMirrorModule.DYBRYzYX.css +0 -1
  649. package/.output/public/trace-viewer/codicon.DCmgc-ay.ttf +0 -0
  650. package/.output/public/trace-viewer/defaultSettingsView.CjdS-WJx.css +0 -1
  651. package/.output/public/trace-viewer/index.CzXZzn5A.css +0 -1
  652. package/.output/public/trace-viewer/index.DMMX1gXU.js +0 -2
  653. package/.output/public/trace-viewer/index.html +0 -44
  654. package/.output/public/trace-viewer/manifest.webmanifest +0 -16
  655. package/.output/public/trace-viewer/playwright-logo.svg +0 -9
  656. package/.output/public/trace-viewer/snapshot.html +0 -10
  657. package/.output/public/trace-viewer/snapshot.v8KI4P3m.js +0 -2
  658. package/.output/public/trace-viewer/sw.bundle.js +0 -5
  659. package/.output/public/trace-viewer/uiMode.BZQ54Kgt.css +0 -1
  660. package/.output/public/trace-viewer/uiMode.Ut8wwJNp.js +0 -6
  661. package/.output/public/trace-viewer/uiMode.html +0 -18
  662. package/.output/public/trace-viewer/xtermModule.DYP7pi_n.css +0 -32
  663. package/.output/server/chunks/build/Alert-C4xq8lao.mjs.map +0 -1
  664. package/.output/server/chunks/build/Breadcrumb-3itRZ1uz.mjs.map +0 -1
  665. package/.output/server/chunks/build/BreadcrumbNav-GnjBvXuT.mjs.map +0 -1
  666. package/.output/server/chunks/build/BrowserBadge-DQqJS9CV.mjs.map +0 -1
  667. package/.output/server/chunks/build/Card-BQP_oZkQ.mjs.map +0 -1
  668. package/.output/server/chunks/build/ChartCard-D0rzMf-N.mjs.map +0 -1
  669. package/.output/server/chunks/build/ChartMarkerTooltip-0DcMfD_6.mjs.map +0 -1
  670. package/.output/server/chunks/build/Checkbox-DmRKG-0s.mjs.map +0 -1
  671. package/.output/server/chunks/build/CodeBlock-DGhKVFad.mjs.map +0 -1
  672. package/.output/server/chunks/build/DashboardNavbar-DCr10nxL.mjs.map +0 -1
  673. package/.output/server/chunks/build/DashboardSidebarToggle-8EpBhX0R.mjs.map +0 -1
  674. package/.output/server/chunks/build/DataLocationCard-rzS-pgCP.mjs.map +0 -1
  675. package/.output/server/chunks/build/DiagnosisPanel-BWTpoCKy.mjs.map +0 -1
  676. package/.output/server/chunks/build/DiagnosisResult-Br3qBLXe.mjs.map +0 -1
  677. package/.output/server/chunks/build/DurationValue-CWKfjIF2.mjs.map +0 -1
  678. package/.output/server/chunks/build/EntityLinks-CF0xG3Y8.mjs.map +0 -1
  679. package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +0 -1
  680. package/.output/server/chunks/build/FeatureUnavailable-CwPms6X_.mjs.map +0 -1
  681. package/.output/server/chunks/build/FormField-e7OnSKPM.mjs.map +0 -1
  682. package/.output/server/chunks/build/GetStartedWizard-CB5v1Xzu.mjs.map +0 -1
  683. package/.output/server/chunks/build/HelpHint-DjGrGFA7.mjs.map +0 -1
  684. package/.output/server/chunks/build/LoadingState-B8v1nWJt.mjs.map +0 -1
  685. package/.output/server/chunks/build/MarkerBadge-D7meXy4u.mjs.map +0 -1
  686. package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +0 -1
  687. package/.output/server/chunks/build/NavigationMenu-cqpt11Ce.mjs.map +0 -1
  688. package/.output/server/chunks/build/ProjectTestCasesTable-BwHEtZTz.mjs.map +0 -1
  689. package/.output/server/chunks/build/RunReports-BDRIWn3o.mjs.map +0 -1
  690. package/.output/server/chunks/build/RunStatusBadge-CuTDknRJ.mjs.map +0 -1
  691. package/.output/server/chunks/build/SectionCard-BW5Lynrr.mjs.map +0 -1
  692. package/.output/server/chunks/build/Select-CVctwpib.mjs.map +0 -1
  693. package/.output/server/chunks/build/Separator-CR4WcEKD.mjs.map +0 -1
  694. package/.output/server/chunks/build/SettingsField-DvtRvI6O.mjs.map +0 -1
  695. package/.output/server/chunks/build/Skeleton-CEHuuKVh.mjs.map +0 -1
  696. package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +0 -1
  697. package/.output/server/chunks/build/Switch-8zWfwI5B.mjs.map +0 -1
  698. package/.output/server/chunks/build/Table-BRk04Hd2.mjs.map +0 -1
  699. package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +0 -1
  700. package/.output/server/chunks/build/TestCaseHistoryChart-C6t5RrCG.mjs.map +0 -1
  701. package/.output/server/chunks/build/TestStatusBar-DhbrM_rQ.mjs.map +0 -1
  702. package/.output/server/chunks/build/Textarea-vkMKVQTJ.mjs.map +0 -1
  703. package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +0 -1
  704. package/.output/server/chunks/build/_id_-2PMH6rl8.mjs.map +0 -1
  705. package/.output/server/chunks/build/_id_-8cGIgeg6.mjs.map +0 -1
  706. package/.output/server/chunks/build/about-D3WXTDro.mjs.map +0 -1
  707. package/.output/server/chunks/build/account-BslDNCoo.mjs.map +0 -1
  708. package/.output/server/chunks/build/compare-RxHSOdsO.mjs.map +0 -1
  709. package/.output/server/chunks/build/db.client-D74DghqX.mjs.map +0 -1
  710. package/.output/server/chunks/build/edit-BOC4zWuH.mjs.map +0 -1
  711. package/.output/server/chunks/build/fetch-BQg_fhX0.mjs.map +0 -1
  712. package/.output/server/chunks/build/forgot-password-CxuVbGWy.mjs.map +0 -1
  713. package/.output/server/chunks/build/import-CC27wEIu.mjs.map +0 -1
  714. package/.output/server/chunks/build/index-BOK1aJk9.mjs.map +0 -1
  715. package/.output/server/chunks/build/index-BhS1DuCr.mjs.map +0 -1
  716. package/.output/server/chunks/build/index-DUmjP3Gr.mjs.map +0 -1
  717. package/.output/server/chunks/build/index-jvF53f7_.mjs.map +0 -1
  718. package/.output/server/chunks/build/login-CdpOhiP8.mjs.map +0 -1
  719. package/.output/server/chunks/build/mcp-WTeO5WRo.mjs.map +0 -1
  720. package/.output/server/chunks/build/notifications-yY6ik-fi.mjs.map +0 -1
  721. package/.output/server/chunks/build/pr-feedback-Hv2Ydh_6.mjs.map +0 -1
  722. package/.output/server/chunks/build/reset-password-CFtO8A6n.mjs.map +0 -1
  723. package/.output/server/chunks/build/settings-DIpvnY8_.mjs.map +0 -1
  724. package/.output/server/chunks/build/settings-metadata-DRv9VveS.mjs.map +0 -1
  725. package/.output/server/chunks/build/setup-Di0UMyWx.mjs.map +0 -1
  726. package/.output/server/chunks/build/storage-gAbY1KbQ.mjs.map +0 -1
  727. package/.output/server/chunks/build/tags-DJ80wCqt.mjs.map +0 -1
  728. package/.output/server/chunks/build/test-cases-YP83YlnL.mjs.map +0 -1
  729. package/.output/server/chunks/build/test-functions-BwLTxGmM.mjs.map +0 -1
  730. package/.output/server/chunks/build/timeout-hygiene-RpXDjXTX.mjs +0 -330
  731. package/.output/server/chunks/build/timeout-hygiene-RpXDjXTX.mjs.map +0 -1
  732. package/.output/server/chunks/build/useChartMarkers-C89e_VLV.mjs.map +0 -1
  733. package/.output/server/chunks/build/useCopyRich-Cd5Yj_Wy.mjs.map +0 -1
  734. package/.output/server/chunks/build/useDesktopDownload-BmR6ouz2.mjs.map +0 -1
  735. package/.output/server/chunks/build/useOpenInIde-DolN3bZ5.mjs.map +0 -1
  736. package/.output/server/chunks/build/useSettingsNav-DfnOFlR_.mjs.map +0 -1
  737. package/.output/server/chunks/build/users-I2K7HXS2.mjs.map +0 -1
  738. package/.output/server/chunks/build/wasted-time-DyIk0olc.mjs +0 -301
  739. package/.output/server/chunks/build/wasted-time-DyIk0olc.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "date": "2026-07-30T10:28:02.445Z",
2
+ "date": "2026-07-31T03:48:57.451Z",
3
3
  "preset": "node-server",
4
4
  "framework": {
5
5
  "name": "nuxt",
@@ -1 +1 @@
1
- import{_ as F}from"./BR5cR2Ot.js";import{_ as M}from"./D9knOn6D.js";import{_ as L}from"./B3Fsod9X.js";import{d as R,b as P,B as H,ao as U,k as e,f as v,g as i,v as k,r as h,o as a,i as _,c as f,j as s,m as l,t as S,_ as q,z as O,F as Q,ap as Y,h as I,x as j,am as W,p as G,w as J,A as K}from"./DCFbQvIN.js";import{e as A,f as X}from"./BAKUqW95.js";import{_ as Z}from"./DkT2nCqn.js";import{a as ee}from"./BpM6ZPIG.js";import{u as te}from"./rL4C0HV5.js";import{u as ne}from"./E-_n_6vi.js";import"./Cpsq-kYE.js";import"./BjaRappk.js";const se={class:"space-y-3"},oe={key:0,class:"flex items-center justify-between gap-3"},ae={key:1,class:"text-sm text-muted"},ie={key:2,class:"flex items-center justify-between gap-3"},le={class:"text-sm flex items-center gap-2"},re={class:"flex items-start justify-between gap-3"},ce={class:"space-y-1 min-w-0"},ue={class:"text-sm font-medium"},de={key:0,class:"text-xs text-muted whitespace-pre-wrap line-clamp-6"},pe={key:1,class:"text-xs text-muted"},me=R({__name:"DesktopUpdateCard",props:{currentVersion:{}},setup(V){const p=P(),b=h(!1),r=h(!1),u=h(!1),x=h(!1),c=h(null),d=h(null);let m=null;H(()=>{b.value=!!U()}),W(()=>{m?.()});async function g(){const n=U();if(!(!n||r.value)){r.value=!0;try{c.value=await n.invoke("desktop_check_update")}catch(t){p.add({title:"Update check failed",description:A(t),color:"error"})}finally{r.value=!1}}}async function T(){const n=U(),t=Y();if(!(!n||u.value)){u.value=!0,d.value={downloaded:0,total:null};try{t&&!m&&(m=await t.listen("piwi:update-progress",({payload:o})=>{d.value=o})),await n.invoke("desktop_install_update"),x.value=!0}catch(o){p.add({title:"Update failed",description:A(o),color:"error"}),d.value=null}finally{u.value=!1}}}async function y(){const n=U();if(n)try{await n.invoke("desktop_restart_app")}catch{}}const w=I(()=>{const n=d.value;return n?.total?Math.min(100,Math.round(n.downloaded/n.total*100)):null});return(n,t)=>{const o=q,D=j,C=G,$=O,B=L;return e(b)?(a(),v(B,{key:0,icon:"i-lucide-arrow-up-circle",title:"Updates"},{subtitle:i(()=>[l(" Updates install from GitHub releases and apply on restart"+S(V.currentVersion?` — you are on v${V.currentVersion}`:"")+". ",1)]),default:i(()=>[_("div",se,[e(c)?e(c).state==="unsupported"?(a(),f("p",ae,[t[3]||(t[3]=l(" This build has no update channel — dev builds and releases made without the update signing key cannot self-update. Grab new versions from the ",-1)),s(D,{to:"https://github.com/piwitests/platform/releases/latest",target:"_blank",rel:"noopener noreferrer",class:"text-primary hover:underline"},{default:i(()=>[...t[2]||(t[2]=[l("latest release",-1)])]),_:1}),t[4]||(t[4]=l(". ",-1))])):e(c).state==="uptodate"?(a(),f("div",ie,[_("p",le,[s(C,{name:"i-lucide-check-circle",class:"size-4 text-success"}),t[5]||(t[5]=l(" You're on the latest version. ",-1))]),s(o,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-refresh-cw",loading:e(r),onClick:g},{default:i(()=>[...t[6]||(t[6]=[l(" Check again ",-1)])]),_:1},8,["loading"])])):(a(),f(Q,{key:3},[_("div",re,[_("div",ce,[_("p",ue,"Version "+S(e(c).version)+" is available",1),e(c).notes?(a(),f("p",de,S(e(c).notes),1)):k("",!0)]),e(x)?(a(),v(o,{key:1,size:"xs",color:"success",icon:"i-lucide-rotate-cw",class:"shrink-0",onClick:y},{default:i(()=>[...t[7]||(t[7]=[l(" Restart now ",-1)])]),_:1})):(a(),v(o,{key:0,size:"xs",icon:"i-lucide-download",loading:e(u),class:"shrink-0",onClick:T},{default:i(()=>[l(S(e(u)?"Installing…":"Install update"),1)]),_:1},8,["loading"]))]),e(u)&&e(w)!==null?(a(),v($,{key:0,"model-value":e(w),size:"sm"},null,8,["model-value"])):k("",!0),e(x)?(a(),f("p",pe," The update is installed — it applies the next time the app starts. ")):k("",!0)],64)):(a(),f("div",oe,[t[1]||(t[1]=_("p",{class:"text-sm text-muted"},"Check GitHub for a newer version of the desktop app.",-1)),s(o,{size:"xs",icon:"i-lucide-refresh-cw",loading:e(r),onClick:g},{default:i(()=>[...t[0]||(t[0]=[l("Check for updates",-1)])]),_:1},8,["loading"])]))])]),_:1})):k("",!0)}}}),_e=Object.assign(me,{__name:"DesktopUpdateCard"}),fe={class:"space-y-6"},ve={class:"flex flex-wrap items-center gap-x-6 gap-y-3 text-sm"},Te=R({__name:"about",async setup(V){let p,b;const r=K(),u=te(),{data:x}=([p,b]=J(()=>ne("/api/version","$mIoGdvWYhF")),p=await p,b(),p),c=r.public.appVersion,d=r.public.buildSha,m=r.public.buildTime,g=r.public.nodeVersion,T=r.public.authEnabled,y=I(()=>d?d.slice(0,7):null),w=I(()=>{const n=x.value?.dbBackend;return n==="postgresql"?"PostgreSQL":n==="sqlite"?"SQLite":n??null});return(n,t)=>{const o=F,D=M,C=L,$=_e,B=Z,E=ee,z=j,N=G;return a(),f("div",fe,[s(C,{icon:"i-lucide-info",title:"Application"},{default:i(()=>[s(D,null,{default:i(()=>[s(o,{label:"Version",value:`v${e(c)}`},null,8,["value"]),e(y)?(a(),v(o,{key:0,label:"Build",value:e(y),hint:e(d)},null,8,["value","hint"])):k("",!0),e(m)?(a(),v(o,{key:1,label:"Built",value:("formatRelativeTime"in n?n.formatRelativeTime:e(X))(e(m)),hint:e(m)},null,8,["value","hint"])):k("",!0),s(o,{label:"Node.js",value:e(g)},null,8,["value"]),s(o,{label:"Database",value:e(w)},null,8,["value"]),s(o,{label:"Authentication",value:e(T)?"Enabled":"Disabled"},null,8,["value"])]),_:1})]),_:1}),s($,{"current-version":e(c)},null,8,["current-version"]),e(u)?(a(),v(B,{key:0,icon:"i-lucide-rocket",color:"neutral",variant:"subtle",title:"Connecting the reporter and AI clients",description:"The URL and access token for this local instance, the data location, and background-service control are on the Setup page.",actions:[{label:"Open Setup",to:"/setup",color:"neutral",variant:"solid",size:"xs"}]})):k("",!0),s(C,{icon:"i-lucide-book-open",title:"Resources"},{default:i(()=>[_("div",ve,[s(E,{to:""},{default:i(()=>[...t[0]||(t[0]=[l("Documentation",-1)])]),_:1}),s(z,{to:"/docs",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:i(()=>[...t[1]||(t[1]=[l(" API reference ",-1)])]),_:1}),s(z,{to:"https://github.com/piwitests/platform",target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:i(()=>[t[2]||(t[2]=l(" GitHub ",-1)),s(N,{name:"i-lucide-external-link",class:"w-3.5 h-3.5 shrink-0"})]),_:1})])]),_:1})])}}});export{Te as default};
1
+ import{_ as P}from"./CkyMZI-0.js";import{_ as M}from"./DtSn2Q9-.js";import{_ as L}from"./DLNNAYfu.js";import{d as R,b as F,B as H,ao as U,k as e,f as v,g as i,v as k,r as h,o as a,i as _,c as f,j as s,m as l,t as S,_ as q,z as O,F as Q,ap as Y,h as z,x as j,am as J,p as E,w as K,A as W}from"./h49q_GXF.js";import{e as A,f as X}from"./CD3R-ggS.js";import{_ as Z}from"./9N6hSApy.js";import{a as ee}from"./BtSJxOdh.js";import{u as te}from"./BaDhDBCV.js";import{u as ne}from"./Cd8r0xk5.js";import"./CWoSSKhQ.js";import"./BjaRappk.js";const se={class:"space-y-3"},oe={key:0,class:"flex items-center justify-between gap-3"},ae={key:1,class:"text-sm text-muted"},ie={key:2,class:"flex items-center justify-between gap-3"},le={class:"text-sm flex items-center gap-2"},re={class:"flex items-start justify-between gap-3"},ce={class:"space-y-1 min-w-0"},ue={class:"text-sm font-medium"},de={key:0,class:"text-xs text-muted whitespace-pre-wrap line-clamp-6"},pe={key:1,class:"text-xs text-muted"},me=R({__name:"DesktopUpdateCard",props:{currentVersion:{}},setup(T){const p=F(),b=h(!1),r=h(!1),u=h(!1),x=h(!1),c=h(null),d=h(null);let m=null;H(()=>{b.value=!!U()}),J(()=>{m?.()});async function g(){const n=U();if(!(!n||r.value)){r.value=!0;try{c.value=await n.invoke("desktop_check_update")}catch(t){p.add({title:"Update check failed",description:A(t),color:"error"})}finally{r.value=!1}}}async function V(){const n=U(),t=Y();if(!(!n||u.value)){u.value=!0,d.value={downloaded:0,total:null};try{t&&!m&&(m=await t.listen("piwi:update-progress",({payload:o})=>{d.value=o})),await n.invoke("desktop_install_update"),x.value=!0}catch(o){p.add({title:"Update failed",description:A(o),color:"error"}),d.value=null}finally{u.value=!1}}}async function y(){const n=U();if(n)try{await n.invoke("desktop_restart_app")}catch{}}const w=z(()=>{const n=d.value;return n?.total?Math.min(100,Math.round(n.downloaded/n.total*100)):null});return(n,t)=>{const o=q,D=j,C=E,$=O,B=L;return e(b)?(a(),v(B,{key:0,icon:"i-lucide-arrow-up-circle",title:"Updates"},{subtitle:i(()=>[l(" Updates install from GitHub releases and apply on restart"+S(T.currentVersion?` — you are on v${T.currentVersion}`:"")+". ",1)]),default:i(()=>[_("div",se,[e(c)?e(c).state==="unsupported"?(a(),f("p",ae,[t[3]||(t[3]=l(" This build has no update channel — dev builds and releases made without the update signing key cannot self-update. Grab new versions from the ",-1)),s(D,{to:"https://github.com/piwitests/platform/releases/latest",target:"_blank",rel:"noopener noreferrer",class:"text-primary hover:underline"},{default:i(()=>[...t[2]||(t[2]=[l("latest release",-1)])]),_:1}),t[4]||(t[4]=l(". ",-1))])):e(c).state==="uptodate"?(a(),f("div",ie,[_("p",le,[s(C,{name:"i-lucide-check-circle",class:"size-4 text-success"}),t[5]||(t[5]=l(" You're on the latest version. ",-1))]),s(o,{size:"xs",color:"neutral",variant:"soft",icon:"i-lucide-refresh-cw",loading:e(r),onClick:g},{default:i(()=>[...t[6]||(t[6]=[l(" Check again ",-1)])]),_:1},8,["loading"])])):(a(),f(Q,{key:3},[_("div",re,[_("div",ce,[_("p",ue,"Version "+S(e(c).version)+" is available",1),e(c).notes?(a(),f("p",de,S(e(c).notes),1)):k("",!0)]),e(x)?(a(),v(o,{key:1,size:"xs",color:"success",icon:"i-lucide-rotate-cw",class:"shrink-0",onClick:y},{default:i(()=>[...t[7]||(t[7]=[l(" Restart now ",-1)])]),_:1})):(a(),v(o,{key:0,size:"xs",icon:"i-lucide-download",loading:e(u),class:"shrink-0",onClick:V},{default:i(()=>[l(S(e(u)?"Installing…":"Install update"),1)]),_:1},8,["loading"]))]),e(u)&&e(w)!==null?(a(),v($,{key:0,"model-value":e(w),size:"sm"},null,8,["model-value"])):k("",!0),e(x)?(a(),f("p",pe," The update is installed — it applies the next time the app starts. ")):k("",!0)],64)):(a(),f("div",oe,[t[1]||(t[1]=_("p",{class:"text-sm text-muted"},"Check GitHub for a newer version of the desktop app.",-1)),s(o,{size:"xs",icon:"i-lucide-refresh-cw",loading:e(r),onClick:g},{default:i(()=>[...t[0]||(t[0]=[l("Check for updates",-1)])]),_:1},8,["loading"])]))])]),_:1})):k("",!0)}}}),_e=Object.assign(me,{__name:"DesktopUpdateCard"}),fe={class:"space-y-6"},ve={class:"flex flex-wrap items-center gap-x-6 gap-y-3 text-sm"},Ve=R({__name:"about",async setup(T){let p,b;const r=W(),u=te(),{data:x}=([p,b]=K(()=>ne("/api/version","$PC3uzh76dT")),p=await p,b(),p),c=r.public.appVersion,d=r.public.buildSha,m=r.public.buildTime,g=r.public.nodeVersion,V=r.public.authEnabled,y=z(()=>d?d.slice(0,7):null),w=z(()=>{const n=x.value?.dbBackend;return n==="postgresql"?"PostgreSQL":n==="sqlite"?"SQLite":n??null});return(n,t)=>{const o=P,D=M,C=L,$=_e,B=Z,G=ee,I=j,N=E;return a(),f("div",fe,[s(C,{icon:"i-lucide-info",title:"Application"},{default:i(()=>[s(D,null,{default:i(()=>[s(o,{label:"Version",value:`v${e(c)}`},null,8,["value"]),e(y)?(a(),v(o,{key:0,label:"Build",value:e(y),hint:e(d)},null,8,["value","hint"])):k("",!0),e(m)?(a(),v(o,{key:1,label:"Built",value:("formatRelativeTime"in n?n.formatRelativeTime:e(X))(e(m)),hint:e(m)},null,8,["value","hint"])):k("",!0),s(o,{label:"Node.js",value:e(g)},null,8,["value"]),s(o,{label:"Database",value:e(w)},null,8,["value"]),s(o,{label:"Authentication",value:e(V)?"Enabled":"Disabled"},null,8,["value"])]),_:1})]),_:1}),s($,{"current-version":e(c)},null,8,["current-version"]),e(u)?(a(),v(B,{key:0,icon:"i-lucide-rocket",color:"neutral",variant:"subtle",title:"Connecting the reporter and AI clients",description:"The URL and access token for this local instance, the data location, and background-service control are on the Setup page.",actions:[{label:"Open Setup",to:"/setup",color:"neutral",variant:"solid",size:"xs"}]})):k("",!0),s(C,{icon:"i-lucide-book-open",title:"Resources"},{default:i(()=>[_("div",ve,[s(G,{to:""},{default:i(()=>[...t[0]||(t[0]=[l("Documentation",-1)])]),_:1}),s(I,{to:"/docs",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:i(()=>[...t[1]||(t[1]=[l(" API reference ",-1)])]),_:1}),s(I,{to:"https://github.com/piwitests/platform",target:"_blank",rel:"noopener noreferrer",class:"inline-flex items-center gap-1 text-primary hover:underline"},{default:i(()=>[t[2]||(t[2]=l(" GitHub ",-1)),s(N,{name:"i-lucide-external-link",class:"w-3.5 h-3.5 shrink-0"})]),_:1})])]),_:1})])}}});export{Ve as default};
@@ -1,2 +1,2 @@
1
- import{d as _,o as l,f as p,g as u,j as d,p as f,q as g,k as a,h as o}from"./DCFbQvIN.js";import{_ as v}from"./Ebw5l7n8.js";import{g as x}from"./BpM6ZPIG.js";const h=_({__name:"EnvManagedBadge",props:{envVars:{},size:{default:"sm"}},setup(r){const s=r,c=o(()=>{switch(s.size){case"xs":return"size-3";case"md":return"size-4";default:return"size-3.5"}}),i=o(()=>{if(!s.envVars?.length)return"Managed by environment variable";const e=s.envVars.map(n=>{const t=x(n).description;return t?`${n} — ${t}`:n});return e.length===1?`Set via ${e[0]}`:["Set via environment variables:",...e].join(`
1
+ import{d as _,o as l,f as p,g as u,j as d,p as f,q as g,k as a,h as o}from"./h49q_GXF.js";import{_ as v}from"./CRPt9SfB.js";import{g as x}from"./BtSJxOdh.js";const h=_({__name:"EnvManagedBadge",props:{envVars:{},size:{default:"sm"}},setup(r){const s=r,c=o(()=>{switch(s.size){case"xs":return"size-3";case"md":return"size-4";default:return"size-3.5"}}),i=o(()=>{if(!s.envVars?.length)return"Managed by environment variable";const e=s.envVars.map(n=>{const t=x(n).description;return t?`${n} — ${t}`:n});return e.length===1?`Set via ${e[0]}`:["Set via environment variables:",...e].join(`
2
2
  `)});return(e,n)=>{const t=f,m=v;return l(),p(m,{text:a(i),ui:{content:"whitespace-pre-line max-w-sm"}},{default:u(()=>[d(t,{name:"i-lucide-lock",class:g(["text-gray-400",a(c)])},null,8,["class"])]),_:1},8,["text"])}}}),b=Object.assign(h,{__name:"EnvManagedBadge"});export{b as _};
@@ -1 +1 @@
1
- import{r}from"./DCFbQvIN.js";function n(i){const o=`piwi-tree-view-${i}`,t=r(!1);try{const e=document.cookie.match(new RegExp(`(?:^|;\\s*)${o}=([^;]*)`));e&&(t.value=e[1]==="true")}catch{}function c(e){t.value=e,document.cookie=`${o}=${e}; path=/; max-age=31536000; sameSite=lax`}return{treeView:t,setTreeView:c}}export{n as u};
1
+ import{r}from"./h49q_GXF.js";function n(i){const o=`piwi-tree-view-${i}`,t=r(!1);try{const e=document.cookie.match(new RegExp(`(?:^|;\\s*)${o}=([^;]*)`));e&&(t.value=e[1]==="true")}catch{}function c(e){t.value=e,document.cookie=`${o}=${e}; path=/; max-age=31536000; sameSite=lax`}return{treeView:t,setTreeView:c}}export{n as u};
@@ -1,4 +1,4 @@
1
- import{b as ie,J as H,B as ye,am as he,r as x,h as K,an as be,N as Ve,d as _e,k as e,o as m,c as h,j as u,p as ke,m as C,i as a,t as $,g as B,_ as Ce,F as J,y as oe,q as Q,v as T,A as qe,f as X,l as He,G as We,L as Ye}from"./DCFbQvIN.js";import{_ as Ge}from"./BpM6ZPIG.js";import{i as Xe,g as Je,f as Ke,d as Qe,e as Ze,h as et}from"./B3rirOqU.js";import{_ as tt}from"./B1RmmOsM.js";import{f as we,n as st}from"./BAKUqW95.js";import{_ as nt}from"./DkT2nCqn.js";import{f as at}from"./D-c8ZSws.js";import{u as ot}from"./BGL_V7Y4.js";import{u as it}from"./CifRHVaR.js";const rt=globalThis.setInterval,re=Symbol("cluster-diagnosis");function lt(g){const b=ie(),o=x(""),r=x(""),k=x([]),S=x([]),_=K(()=>!!r.value),R=x(null),P=x([]),E=x(0),U=x(0),O=x(null),l=x(null),p=x(!1),s=x(null),i=x(!1);let c=null,f=null,d=!0;function z(){const n={};return o.value.trim()&&(n.baseCommit=o.value.trim()),k.value.length&&(n.selectedCommitShas=k.value),n}async function D(){p.value=!0;try{const n=await $fetch(`/api/failure-clusters/${g}/context`,{query:{...z(),format:"json"}});R.value=n.text,P.value=n.sections,E.value=n.tokenEstimate,U.value=n.imageTokenEstimate??0,O.value=n.coverage,l.value=n.scmChanges??null}catch{R.value="(failed to load context)",P.value=[],E.value=0,U.value=0,O.value=null,l.value=null}finally{p.value=!1}}async function I(n){try{await $fetch(`/api/failure-clusters/${g}/base-commit`,{method:"PATCH",body:{commit:n||null}}),r.value=n}catch{}}function L(){c&&(clearInterval(c),c=null)}function j(){if(c)return;let n=0;c=rt(async()=>{n+=3e3,await q(),(!s.value||s.value.status!=="running"||n>=12e4)&&L()},3e3)}async function q(){try{const n=await $fetch(`/api/failure-clusters/${g}/diagnosis`);s.value=n.diagnosis}catch{}}async function W(n={}){i.value=!0;try{const w=n.force?`/api/failure-clusters/${g}/diagnose?force=true`:`/api/failure-clusters/${g}/diagnose`,F={};n.additionalContext&&(F.additionalContext=n.additionalContext),o.value.trim()&&(F.baseCommit=o.value.trim()),k.value.length&&(F.selectedCommitShas=k.value),n.images?.length&&(F.images=n.images),s.value=await $fetch(w,{method:"POST",body:Object.keys(F).length?F:void 0}),s.value?.status==="running"&&j()}catch(w){w?.statusCode===409?j():b.add({title:"Diagnosis failed",description:String(w?.message??w),color:"error"})}finally{i.value=!1}}return H(o,n=>{d||(f&&clearTimeout(f),f=setTimeout(()=>D(),900),n!==r.value&&I(n))}),H(k,()=>{d||D()},{deep:!0}),H(s,n=>{n?.status==="running"?j():L()}),ye(async()=>{try{const n=await $fetch(`/api/failure-clusters/${g}/diagnosis`);s.value=n.diagnosis,n.manualBaseCommit&&(r.value=n.manualBaseCommit,o.value=n.manualBaseCommit);const w=n.diagnosis?.details;w?.selectedCommitShas&&Array.isArray(w.selectedCommitShas)&&(k.value=w.selectedCommitShas),w?.autoSelectedCommits&&Array.isArray(w.autoSelectedCommits)&&(S.value=w.autoSelectedCommits)}catch{}d=!1,D(),s.value?.status==="running"&&j()}),he(()=>{L(),f&&clearTimeout(f)}),{clusterId:g,baseCommit:o,savedBaseCommit:r,selectedCommitShas:k,autoSelectedCommits:S,baseCommitIsPinned:_,contextText:R,contextSections:P,tokenEstimate:E,imageTokenEstimate:U,coverage:O,scmChanges:l,contextLoading:p,refreshContext:D,diagnosis:s,posting:i,runDiagnosis:W}}function ct(g){const b=lt(g);return Ve(re,b),b}function zs(){const g=be(re);if(!g)throw new Error("useClusterDiagnosis() must be used under a page that called provideClusterDiagnosis()");return g}function ut(g){const b=be(re,null);if(b)return b;if(g==null)throw new Error("useOrProvideClusterDiagnosis() requires a clusterId when used outside provideClusterDiagnosis()");return ct(g)}const dt={key:0,class:"flex items-center gap-1.5 text-xs text-gray-400 py-1"},ft={key:1,class:"space-y-1.5"},mt={class:"flex items-center justify-between"},gt={class:"text-xs font-medium text-gray-500"},pt={class:"text-gray-400 font-normal"},vt={class:"flex gap-0.5"},xt={class:"grid grid-cols-4 gap-1.5"},yt=["onClick"],ht={class:"relative"},bt=["src","alt"],_t={class:"absolute top-0.5 right-0.5"},kt={class:"px-1 py-0.5 bg-elevated space-y-0.5"},Ct=["title"],wt={class:"flex items-center gap-1 flex-wrap"},St={key:0,class:"text-[8px] text-gray-400 leading-tight"},Tt={key:1,class:"text-[8px] text-gray-400 leading-tight truncate"},$t={key:2,class:"text-[8px] text-gray-400 leading-tight ml-auto"},xe=8,Dt=_e({__name:"DiagnosisScreenshots",props:{affectedTestCases:{}},emits:["update:images"],setup(g,{emit:b}){const o=g,r=b,k=qe();async function S(s){const i=(s.type||"image/webp").split(";")[0].trim();return new Promise((c,f)=>{const d=new FileReader;d.onload=()=>{const z=d.result.split(",")[1];z!=null?c({data:z,mediaType:i}):f(new Error("Failed to read blob"))},d.onerror=f,d.readAsDataURL(s)})}const _=x([]),R=x(!1);async function P(){if(!o.affectedTestCases.length)return;R.value=!0,_.value=[];const s=[];for(const i of o.affectedTestCases){if(s.length>=xe)break;try{const c=await $fetch(`/api/test-run-cases/${i.recentTestRunsCaseId}`);for(const f of c.attachments??[]){if(!Xe(f.path,f.contentType))continue;if(s.length>=xe)break;const d=f.name||f.path.split("/").pop()||"screenshot",z=st(f.path,f.contentType,k.app?.baseURL,!0);try{const D=await fetch(z);if(!D.ok)continue;const I=await D.blob(),{data:L,mediaType:j}=await S(I);s.push({src:`data:${j};base64,${L}`,data:L,mediaType:j,name:d,selected:!0,caseTitle:i.title,status:c.status,retries:c.retries,browser:c.browser,startTime:c.testRun?.startTime??null})}catch{}}}catch{}}_.value=s,R.value=!1,E()}function E(){r("update:images",_.value.filter(s=>s.selected).map(({name:s,mediaType:i,data:c})=>({name:s,mediaType:i,data:c})))}function U(s){_.value[s].selected=!_.value[s].selected,E()}function O(){_.value.forEach(s=>s.selected=!0),E()}function l(){_.value.forEach(s=>s.selected=!1),E()}const p=K(()=>_.value.filter(s=>s.selected).length);return ye(P),(s,i)=>{const c=ke,f=Ce;return e(R)?(m(),h("div",dt,[u(c,{name:"i-lucide-loader-2",class:"size-3 animate-spin"}),i[0]||(i[0]=C(" Loading screenshots from test evidence… ",-1))])):e(_).length?(m(),h("div",ft,[a("div",mt,[a("span",gt,[i[1]||(i[1]=C(" Test screenshots ",-1)),a("span",pt,"("+$(e(p))+"/"+$(e(_).length)+" will be sent to AI)",1)]),a("div",vt,[u(f,{size:"xs",color:"neutral",variant:"ghost",onClick:O},{default:B(()=>[...i[2]||(i[2]=[C("All",-1)])]),_:1}),u(f,{size:"xs",color:"neutral",variant:"ghost",onClick:l},{default:B(()=>[...i[3]||(i[3]=[C("None",-1)])]),_:1})])]),a("div",xt,[(m(!0),h(J,null,oe(e(_),(d,z)=>(m(),h("div",{key:z,class:Q(["cursor-pointer rounded overflow-hidden border-2 transition-all",d.selected?"border-primary":"border-default opacity-50"]),onClick:D=>U(z)},[a("div",ht,[a("img",{src:d.src,alt:d.name,class:"w-full h-14 object-cover object-top"},null,8,bt),a("div",_t,[u(c,{name:d.selected?"i-lucide-check-circle-2":"i-lucide-circle",class:Q(["size-3.5 drop-shadow",d.selected?"text-primary":"text-gray-300"])},null,8,["name","class"])])]),a("div",kt,[a("p",{class:"text-[9px] text-gray-700 dark:text-gray-300 truncate font-medium leading-tight",title:d.caseTitle},$(d.caseTitle),9,Ct),a("div",wt,[a("span",{class:Q(["text-[8px] px-1 rounded leading-tight font-medium",d.status==="passed"?"bg-success/15 text-success":d.status==="failed"?"bg-error/15 text-error":"bg-neutral/15 text-gray-500"])},$(d.status),3),d.retries>0?(m(),h("span",St,"retry "+$(d.retries),1)):T("",!0),d.browser?(m(),h("span",Tt,$(d.browser),1)):T("",!0),d.startTime?(m(),h("span",$t,$(e(we)(d.startTime)),1)):T("",!0)])])],10,yt))),128))])])):T("",!0)}}}),At=Object.assign(Dt,{__name:"DiagnosisScreenshots"});function zt(g){const b=x(""),o=x(null),r=x("idle"),k=x(null),S=x(null);let _=null;function R(){_&&(_.abort(),_=null),r.value==="streaming"&&(r.value="cancelled")}function P(){R(),b.value="",o.value=null,r.value="idle",k.value=null,S.value=null}async function E(l={}){b.value="",o.value=null,S.value=null,k.value=null,r.value="streaming";const p=e(g);_=new AbortController;const s=new URLSearchParams;l.force&&s.set("force","true");const i=`/api/failure-clusters/${p}/diagnose/stream${s.toString()?"?"+s.toString():""}`;try{const c=await $fetch.raw(i,{method:"POST",body:{additionalContext:l.additionalContext,images:l.images,baseCommit:l.baseCommit,selectedCommitShas:l.selectedCommitShas,scope:l.scope,testRunsCaseId:l.testRunsCaseId},responseType:"stream",signal:_.signal,ignoreResponseError:!0}),f=c._data??c.body;if(!f)throw new Error("No response body from streaming endpoint");let d;if(f instanceof ReadableStream)d=f.getReader();else if(f instanceof Uint8Array||f instanceof ArrayBuffer){const L=new TextDecoder().decode(f instanceof ArrayBuffer?new Uint8Array(f):f);O(L),r.value==="streaming"&&(r.value="error",S.value="Stream ended without a result event");return}else if(typeof f?.getReader=="function")d=f.getReader();else if(f?.pipeThrough)d=f.getReader();else throw new Error("Unsupported stream response format");const z=new TextDecoder;let D="";for(;;){const{done:I,value:L}=await d.read();if(I)break;D+=z.decode(L,{stream:!0});const j=D.split(`
1
+ import{b as ie,J as H,B as ye,am as he,r as x,h as K,an as be,N as Ve,d as _e,k as e,o as m,c as h,j as u,p as ke,m as C,i as a,t as $,g as B,_ as Ce,F as J,y as oe,q as Q,v as T,A as qe,f as X,l as He,G as We,L as Ye}from"./h49q_GXF.js";import{_ as Ge}from"./BtSJxOdh.js";import{i as Xe,g as Je,f as Ke,d as Qe,e as Ze,h as et}from"./DBhdObsO.js";import{_ as tt}from"./CScusXhF.js";import{f as we,n as st}from"./CD3R-ggS.js";import{_ as nt}from"./9N6hSApy.js";import{f as at}from"./D-c8ZSws.js";import{u as ot}from"./Cf52zHyB.js";import{u as it}from"./t-juTK3X.js";const rt=globalThis.setInterval,re=Symbol("cluster-diagnosis");function lt(g){const b=ie(),o=x(""),r=x(""),k=x([]),S=x([]),_=K(()=>!!r.value),R=x(null),P=x([]),E=x(0),U=x(0),O=x(null),l=x(null),p=x(!1),s=x(null),i=x(!1);let c=null,f=null,d=!0;function z(){const n={};return o.value.trim()&&(n.baseCommit=o.value.trim()),k.value.length&&(n.selectedCommitShas=k.value),n}async function D(){p.value=!0;try{const n=await $fetch(`/api/failure-clusters/${g}/context`,{query:{...z(),format:"json"}});R.value=n.text,P.value=n.sections,E.value=n.tokenEstimate,U.value=n.imageTokenEstimate??0,O.value=n.coverage,l.value=n.scmChanges??null}catch{R.value="(failed to load context)",P.value=[],E.value=0,U.value=0,O.value=null,l.value=null}finally{p.value=!1}}async function I(n){try{await $fetch(`/api/failure-clusters/${g}/base-commit`,{method:"PATCH",body:{commit:n||null}}),r.value=n}catch{}}function L(){c&&(clearInterval(c),c=null)}function j(){if(c)return;let n=0;c=rt(async()=>{n+=3e3,await q(),(!s.value||s.value.status!=="running"||n>=12e4)&&L()},3e3)}async function q(){try{const n=await $fetch(`/api/failure-clusters/${g}/diagnosis`);s.value=n.diagnosis}catch{}}async function W(n={}){i.value=!0;try{const w=n.force?`/api/failure-clusters/${g}/diagnose?force=true`:`/api/failure-clusters/${g}/diagnose`,F={};n.additionalContext&&(F.additionalContext=n.additionalContext),o.value.trim()&&(F.baseCommit=o.value.trim()),k.value.length&&(F.selectedCommitShas=k.value),n.images?.length&&(F.images=n.images),s.value=await $fetch(w,{method:"POST",body:Object.keys(F).length?F:void 0}),s.value?.status==="running"&&j()}catch(w){w?.statusCode===409?j():b.add({title:"Diagnosis failed",description:String(w?.message??w),color:"error"})}finally{i.value=!1}}return H(o,n=>{d||(f&&clearTimeout(f),f=setTimeout(()=>D(),900),n!==r.value&&I(n))}),H(k,()=>{d||D()},{deep:!0}),H(s,n=>{n?.status==="running"?j():L()}),ye(async()=>{try{const n=await $fetch(`/api/failure-clusters/${g}/diagnosis`);s.value=n.diagnosis,n.manualBaseCommit&&(r.value=n.manualBaseCommit,o.value=n.manualBaseCommit);const w=n.diagnosis?.details;w?.selectedCommitShas&&Array.isArray(w.selectedCommitShas)&&(k.value=w.selectedCommitShas),w?.autoSelectedCommits&&Array.isArray(w.autoSelectedCommits)&&(S.value=w.autoSelectedCommits)}catch{}d=!1,D(),s.value?.status==="running"&&j()}),he(()=>{L(),f&&clearTimeout(f)}),{clusterId:g,baseCommit:o,savedBaseCommit:r,selectedCommitShas:k,autoSelectedCommits:S,baseCommitIsPinned:_,contextText:R,contextSections:P,tokenEstimate:E,imageTokenEstimate:U,coverage:O,scmChanges:l,contextLoading:p,refreshContext:D,diagnosis:s,posting:i,runDiagnosis:W}}function ct(g){const b=lt(g);return Ve(re,b),b}function zs(){const g=be(re);if(!g)throw new Error("useClusterDiagnosis() must be used under a page that called provideClusterDiagnosis()");return g}function ut(g){const b=be(re,null);if(b)return b;if(g==null)throw new Error("useOrProvideClusterDiagnosis() requires a clusterId when used outside provideClusterDiagnosis()");return ct(g)}const dt={key:0,class:"flex items-center gap-1.5 text-xs text-gray-400 py-1"},ft={key:1,class:"space-y-1.5"},mt={class:"flex items-center justify-between"},gt={class:"text-xs font-medium text-gray-500"},pt={class:"text-gray-400 font-normal"},vt={class:"flex gap-0.5"},xt={class:"grid grid-cols-4 gap-1.5"},yt=["onClick"],ht={class:"relative"},bt=["src","alt"],_t={class:"absolute top-0.5 right-0.5"},kt={class:"px-1 py-0.5 bg-elevated space-y-0.5"},Ct=["title"],wt={class:"flex items-center gap-1 flex-wrap"},St={key:0,class:"text-[8px] text-gray-400 leading-tight"},Tt={key:1,class:"text-[8px] text-gray-400 leading-tight truncate"},$t={key:2,class:"text-[8px] text-gray-400 leading-tight ml-auto"},xe=8,Dt=_e({__name:"DiagnosisScreenshots",props:{affectedTestCases:{}},emits:["update:images"],setup(g,{emit:b}){const o=g,r=b,k=qe();async function S(s){const i=(s.type||"image/webp").split(";")[0].trim();return new Promise((c,f)=>{const d=new FileReader;d.onload=()=>{const z=d.result.split(",")[1];z!=null?c({data:z,mediaType:i}):f(new Error("Failed to read blob"))},d.onerror=f,d.readAsDataURL(s)})}const _=x([]),R=x(!1);async function P(){if(!o.affectedTestCases.length)return;R.value=!0,_.value=[];const s=[];for(const i of o.affectedTestCases){if(s.length>=xe)break;try{const c=await $fetch(`/api/test-run-cases/${i.recentTestRunsCaseId}`);for(const f of c.attachments??[]){if(!Xe(f.path,f.contentType))continue;if(s.length>=xe)break;const d=f.name||f.path.split("/").pop()||"screenshot",z=st(f.path,f.contentType,k.app?.baseURL,!0);try{const D=await fetch(z);if(!D.ok)continue;const I=await D.blob(),{data:L,mediaType:j}=await S(I);s.push({src:`data:${j};base64,${L}`,data:L,mediaType:j,name:d,selected:!0,caseTitle:i.title,status:c.status,retries:c.retries,browser:c.browser,startTime:c.testRun?.startTime??null})}catch{}}}catch{}}_.value=s,R.value=!1,E()}function E(){r("update:images",_.value.filter(s=>s.selected).map(({name:s,mediaType:i,data:c})=>({name:s,mediaType:i,data:c})))}function U(s){_.value[s].selected=!_.value[s].selected,E()}function O(){_.value.forEach(s=>s.selected=!0),E()}function l(){_.value.forEach(s=>s.selected=!1),E()}const p=K(()=>_.value.filter(s=>s.selected).length);return ye(P),(s,i)=>{const c=ke,f=Ce;return e(R)?(m(),h("div",dt,[u(c,{name:"i-lucide-loader-2",class:"size-3 animate-spin"}),i[0]||(i[0]=C(" Loading screenshots from test evidence… ",-1))])):e(_).length?(m(),h("div",ft,[a("div",mt,[a("span",gt,[i[1]||(i[1]=C(" Test screenshots ",-1)),a("span",pt,"("+$(e(p))+"/"+$(e(_).length)+" will be sent to AI)",1)]),a("div",vt,[u(f,{size:"xs",color:"neutral",variant:"ghost",onClick:O},{default:B(()=>[...i[2]||(i[2]=[C("All",-1)])]),_:1}),u(f,{size:"xs",color:"neutral",variant:"ghost",onClick:l},{default:B(()=>[...i[3]||(i[3]=[C("None",-1)])]),_:1})])]),a("div",xt,[(m(!0),h(J,null,oe(e(_),(d,z)=>(m(),h("div",{key:z,class:Q(["cursor-pointer rounded overflow-hidden border-2 transition-all",d.selected?"border-primary":"border-default opacity-50"]),onClick:D=>U(z)},[a("div",ht,[a("img",{src:d.src,alt:d.name,class:"w-full h-14 object-cover object-top"},null,8,bt),a("div",_t,[u(c,{name:d.selected?"i-lucide-check-circle-2":"i-lucide-circle",class:Q(["size-3.5 drop-shadow",d.selected?"text-primary":"text-gray-300"])},null,8,["name","class"])])]),a("div",kt,[a("p",{class:"text-[9px] text-gray-700 dark:text-gray-300 truncate font-medium leading-tight",title:d.caseTitle},$(d.caseTitle),9,Ct),a("div",wt,[a("span",{class:Q(["text-[8px] px-1 rounded leading-tight font-medium",d.status==="passed"?"bg-success/15 text-success":d.status==="failed"?"bg-error/15 text-error":"bg-neutral/15 text-gray-500"])},$(d.status),3),d.retries>0?(m(),h("span",St,"retry "+$(d.retries),1)):T("",!0),d.browser?(m(),h("span",Tt,$(d.browser),1)):T("",!0),d.startTime?(m(),h("span",$t,$(e(we)(d.startTime)),1)):T("",!0)])])],10,yt))),128))])])):T("",!0)}}}),At=Object.assign(Dt,{__name:"DiagnosisScreenshots"});function zt(g){const b=x(""),o=x(null),r=x("idle"),k=x(null),S=x(null);let _=null;function R(){_&&(_.abort(),_=null),r.value==="streaming"&&(r.value="cancelled")}function P(){R(),b.value="",o.value=null,r.value="idle",k.value=null,S.value=null}async function E(l={}){b.value="",o.value=null,S.value=null,k.value=null,r.value="streaming";const p=e(g);_=new AbortController;const s=new URLSearchParams;l.force&&s.set("force","true");const i=`/api/failure-clusters/${p}/diagnose/stream${s.toString()?"?"+s.toString():""}`;try{const c=await $fetch.raw(i,{method:"POST",body:{additionalContext:l.additionalContext,images:l.images,baseCommit:l.baseCommit,selectedCommitShas:l.selectedCommitShas,scope:l.scope,testRunsCaseId:l.testRunsCaseId},responseType:"stream",signal:_.signal,ignoreResponseError:!0}),f=c._data??c.body;if(!f)throw new Error("No response body from streaming endpoint");let d;if(f instanceof ReadableStream)d=f.getReader();else if(f instanceof Uint8Array||f instanceof ArrayBuffer){const L=new TextDecoder().decode(f instanceof ArrayBuffer?new Uint8Array(f):f);O(L),r.value==="streaming"&&(r.value="error",S.value="Stream ended without a result event");return}else if(typeof f?.getReader=="function")d=f.getReader();else if(f?.pipeThrough)d=f.getReader();else throw new Error("Unsupported stream response format");const z=new TextDecoder;let D="";for(;;){const{done:I,value:L}=await d.read();if(I)break;D+=z.decode(L,{stream:!0});const j=D.split(`
2
2
 
3
3
  `);D=j.pop()||"";let q=!1;for(const W of j){const n=U(W);if(n){if(n.event==="result")k.value=n.data,r.value="complete",q=!0;else if(n.event==="thinking"){const w=n.data;b.value+=w.text}else if(n.event==="stage")o.value=n.data.stage;else if(n.event==="error"){const w=n.data;S.value=w.message,r.value="error"}}}if(q)break}if(D.trim()){const I=U(D.trim());I&&(I.event==="result"?(k.value=I.data,r.value="complete"):I.event==="error"&&(S.value=I.data.message,r.value="error"))}r.value==="streaming"&&(S.value||(r.value="complete"))}catch(c){if(c?.name==="AbortError"){r.value="cancelled";return}S.value=String(c?.message??c),r.value="error"}finally{_=null}}function U(l){if(!l.trim())return null;const p=l.split(`
4
4
  `);let s="message",i="";for(const c of p)c.startsWith("event: ")?s=c.slice(7).trim():c.startsWith("data: ")?i+=c.slice(6):c.startsWith(":");if(!i)return null;try{return{event:s,data:JSON.parse(i)}}catch{return{event:s,data:i}}}function O(l){const p=l.split(`
@@ -1 +1 @@
1
- import{a2 as $,a3 as S,a4 as C,a5 as V,o as a,f as l,g as B,V as c,k as r,aJ as j,W as d,p as A,q as s,v as o,i as N,c as u,m,t as x,F as b,y as h,_ as p,X as O,h as P,a8 as F}from"./DCFbQvIN.js";const I={slots:{root:"relative overflow-hidden w-full rounded-lg p-4 flex gap-2.5",wrapper:"min-w-0 flex-1 flex flex-col",title:"text-sm font-medium",description:"text-sm opacity-90",icon:"shrink-0 size-5",avatar:"shrink-0",avatarSize:"2xl",actions:"flex flex-wrap gap-1.5 shrink-0",close:"p-0"},variants:{color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},variant:{solid:"",outline:"",soft:"",subtle:""},orientation:{horizontal:{root:"items-center",actions:"items-center"},vertical:{root:"items-start",actions:"items-start mt-2.5"}},title:{true:{description:"mt-1"}}},compoundVariants:[{color:"primary",variant:"solid",class:{root:"bg-primary text-inverted"}},{color:"secondary",variant:"solid",class:{root:"bg-secondary text-inverted"}},{color:"success",variant:"solid",class:{root:"bg-success text-inverted"}},{color:"info",variant:"solid",class:{root:"bg-info text-inverted"}},{color:"warning",variant:"solid",class:{root:"bg-warning text-inverted"}},{color:"error",variant:"solid",class:{root:"bg-error text-inverted"}},{color:"primary",variant:"outline",class:{root:"text-primary ring ring-inset ring-primary/25"}},{color:"secondary",variant:"outline",class:{root:"text-secondary ring ring-inset ring-secondary/25"}},{color:"success",variant:"outline",class:{root:"text-success ring ring-inset ring-success/25"}},{color:"info",variant:"outline",class:{root:"text-info ring ring-inset ring-info/25"}},{color:"warning",variant:"outline",class:{root:"text-warning ring ring-inset ring-warning/25"}},{color:"error",variant:"outline",class:{root:"text-error ring ring-inset ring-error/25"}},{color:"primary",variant:"soft",class:{root:"bg-primary/10 text-primary"}},{color:"secondary",variant:"soft",class:{root:"bg-secondary/10 text-secondary"}},{color:"success",variant:"soft",class:{root:"bg-success/10 text-success"}},{color:"info",variant:"soft",class:{root:"bg-info/10 text-info"}},{color:"warning",variant:"soft",class:{root:"bg-warning/10 text-warning"}},{color:"error",variant:"soft",class:{root:"bg-error/10 text-error"}},{color:"primary",variant:"subtle",class:{root:"bg-primary/10 text-primary ring ring-inset ring-primary/25"}},{color:"secondary",variant:"subtle",class:{root:"bg-secondary/10 text-secondary ring ring-inset ring-secondary/25"}},{color:"success",variant:"subtle",class:{root:"bg-success/10 text-success ring ring-inset ring-success/25"}},{color:"info",variant:"subtle",class:{root:"bg-info/10 text-info ring ring-inset ring-info/25"}},{color:"warning",variant:"subtle",class:{root:"bg-warning/10 text-warning ring ring-inset ring-warning/25"}},{color:"error",variant:"subtle",class:{root:"bg-error/10 text-error ring ring-inset ring-error/25"}},{color:"neutral",variant:"solid",class:{root:"text-inverted bg-inverted"}},{color:"neutral",variant:"outline",class:{root:"text-highlighted bg-default ring ring-inset ring-default"}},{color:"neutral",variant:"soft",class:{root:"text-highlighted bg-elevated/50"}},{color:"neutral",variant:"subtle",class:{root:"text-highlighted bg-elevated/50 ring ring-inset ring-accented"}}],defaultVariants:{color:"primary",variant:"solid"}},D={__name:"UAlert",props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},orientation:{type:null,required:!1,default:"vertical"},actions:{type:Array,required:!1},close:{type:[Boolean,Object],required:!1},closeIcon:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:["update:open"],setup(w,{emit:k}){const q=w,z=k,i=$(),t=S("alert",q),{t:_}=C(),f=V(),e=P(()=>F({extend:I,...f.ui?.alert||{}})({color:t.color,variant:t.variant,orientation:t.orientation,title:!!t.title||!!i.title}));return(n,y)=>(a(),l(r(O),{as:r(t).as,"data-orientation":r(t).orientation,"data-slot":"root",class:s(e.value.root({class:[r(t).ui?.root,r(t).class]}))},{default:B(()=>[c(n.$slots,"leading",{ui:e.value},()=>[r(t).avatar?(a(),l(j,d({key:0,size:r(t).ui?.avatarSize||e.value.avatarSize()},r(t).avatar,{"data-slot":"avatar",class:e.value.avatar({class:r(t).ui?.avatar})}),null,16,["size","class"])):r(t).icon?(a(),l(A,{key:1,name:r(t).icon,"data-slot":"icon",class:s(e.value.icon({class:r(t).ui?.icon}))},null,8,["name","class"])):o("",!0)]),N("div",{"data-slot":"wrapper",class:s(e.value.wrapper({class:r(t).ui?.wrapper}))},[r(t).title||i.title?(a(),u("div",{key:0,"data-slot":"title",class:s(e.value.title({class:r(t).ui?.title}))},[c(n.$slots,"title",{},()=>[m(x(r(t).title),1)])],2)):o("",!0),r(t).description||i.description?(a(),u("div",{key:1,"data-slot":"description",class:s(e.value.description({class:r(t).ui?.description}))},[c(n.$slots,"description",{},()=>[m(x(r(t).description),1)])],2)):o("",!0),r(t).orientation==="vertical"&&(r(t).actions?.length||i.actions)?(a(),u("div",{key:2,"data-slot":"actions",class:s(e.value.actions({class:r(t).ui?.actions}))},[c(n.$slots,"actions",{},()=>[(a(!0),u(b,null,h(r(t).actions,(g,v)=>(a(),l(p,d({key:v,size:"xs"},{ref_for:!0},g),null,16))),128))])],2)):o("",!0)],2),r(t).orientation==="horizontal"&&(r(t).actions?.length||i.actions)||r(t).close?(a(),u("div",{key:0,"data-slot":"actions",class:s(e.value.actions({class:r(t).ui?.actions,orientation:"horizontal"}))},[r(t).orientation==="horizontal"&&(r(t).actions?.length||i.actions)?c(n.$slots,"actions",{key:0},()=>[(a(!0),u(b,null,h(r(t).actions,(g,v)=>(a(),l(p,d({key:v,size:"xs"},{ref_for:!0},g),null,16))),128))]):o("",!0),c(n.$slots,"close",{ui:e.value},()=>[r(t).close?(a(),l(p,d({key:0,icon:r(t).closeIcon||r(f).ui.icons.close,color:"neutral",variant:"link","aria-label":r(_)("alert.close")},typeof r(t).close=="object"?r(t).close:{},{"data-slot":"close",class:e.value.close({class:r(t).ui?.close}),onClick:y[0]||(y[0]=g=>z("update:open",!1))}),null,16,["icon","aria-label","class"])):o("",!0)])],2)):o("",!0)]),_:3},8,["as","data-orientation","class"]))}};export{D as _};
1
+ import{a2 as $,a3 as S,a4 as C,a5 as V,o as a,f as l,g as B,V as c,k as r,aJ as j,W as d,p as A,q as s,v as o,i as N,c as u,m,t as x,F as b,y as h,_ as p,X as O,h as P,a8 as F}from"./h49q_GXF.js";const I={slots:{root:"relative overflow-hidden w-full rounded-lg p-4 flex gap-2.5",wrapper:"min-w-0 flex-1 flex flex-col",title:"text-sm font-medium",description:"text-sm opacity-90",icon:"shrink-0 size-5",avatar:"shrink-0",avatarSize:"2xl",actions:"flex flex-wrap gap-1.5 shrink-0",close:"p-0"},variants:{color:{primary:"",secondary:"",success:"",info:"",warning:"",error:"",neutral:""},variant:{solid:"",outline:"",soft:"",subtle:""},orientation:{horizontal:{root:"items-center",actions:"items-center"},vertical:{root:"items-start",actions:"items-start mt-2.5"}},title:{true:{description:"mt-1"}}},compoundVariants:[{color:"primary",variant:"solid",class:{root:"bg-primary text-inverted"}},{color:"secondary",variant:"solid",class:{root:"bg-secondary text-inverted"}},{color:"success",variant:"solid",class:{root:"bg-success text-inverted"}},{color:"info",variant:"solid",class:{root:"bg-info text-inverted"}},{color:"warning",variant:"solid",class:{root:"bg-warning text-inverted"}},{color:"error",variant:"solid",class:{root:"bg-error text-inverted"}},{color:"primary",variant:"outline",class:{root:"text-primary ring ring-inset ring-primary/25"}},{color:"secondary",variant:"outline",class:{root:"text-secondary ring ring-inset ring-secondary/25"}},{color:"success",variant:"outline",class:{root:"text-success ring ring-inset ring-success/25"}},{color:"info",variant:"outline",class:{root:"text-info ring ring-inset ring-info/25"}},{color:"warning",variant:"outline",class:{root:"text-warning ring ring-inset ring-warning/25"}},{color:"error",variant:"outline",class:{root:"text-error ring ring-inset ring-error/25"}},{color:"primary",variant:"soft",class:{root:"bg-primary/10 text-primary"}},{color:"secondary",variant:"soft",class:{root:"bg-secondary/10 text-secondary"}},{color:"success",variant:"soft",class:{root:"bg-success/10 text-success"}},{color:"info",variant:"soft",class:{root:"bg-info/10 text-info"}},{color:"warning",variant:"soft",class:{root:"bg-warning/10 text-warning"}},{color:"error",variant:"soft",class:{root:"bg-error/10 text-error"}},{color:"primary",variant:"subtle",class:{root:"bg-primary/10 text-primary ring ring-inset ring-primary/25"}},{color:"secondary",variant:"subtle",class:{root:"bg-secondary/10 text-secondary ring ring-inset ring-secondary/25"}},{color:"success",variant:"subtle",class:{root:"bg-success/10 text-success ring ring-inset ring-success/25"}},{color:"info",variant:"subtle",class:{root:"bg-info/10 text-info ring ring-inset ring-info/25"}},{color:"warning",variant:"subtle",class:{root:"bg-warning/10 text-warning ring ring-inset ring-warning/25"}},{color:"error",variant:"subtle",class:{root:"bg-error/10 text-error ring ring-inset ring-error/25"}},{color:"neutral",variant:"solid",class:{root:"text-inverted bg-inverted"}},{color:"neutral",variant:"outline",class:{root:"text-highlighted bg-default ring ring-inset ring-default"}},{color:"neutral",variant:"soft",class:{root:"text-highlighted bg-elevated/50"}},{color:"neutral",variant:"subtle",class:{root:"text-highlighted bg-elevated/50 ring ring-inset ring-accented"}}],defaultVariants:{color:"primary",variant:"solid"}},D={__name:"UAlert",props:{as:{type:null,required:!1},title:{type:String,required:!1},description:{type:String,required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},orientation:{type:null,required:!1,default:"vertical"},actions:{type:Array,required:!1},close:{type:[Boolean,Object],required:!1},closeIcon:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},emits:["update:open"],setup(w,{emit:k}){const q=w,z=k,i=$(),t=S("alert",q),{t:_}=C(),f=V(),e=P(()=>F({extend:I,...f.ui?.alert||{}})({color:t.color,variant:t.variant,orientation:t.orientation,title:!!t.title||!!i.title}));return(n,y)=>(a(),l(r(O),{as:r(t).as,"data-orientation":r(t).orientation,"data-slot":"root",class:s(e.value.root({class:[r(t).ui?.root,r(t).class]}))},{default:B(()=>[c(n.$slots,"leading",{ui:e.value},()=>[r(t).avatar?(a(),l(j,d({key:0,size:r(t).ui?.avatarSize||e.value.avatarSize()},r(t).avatar,{"data-slot":"avatar",class:e.value.avatar({class:r(t).ui?.avatar})}),null,16,["size","class"])):r(t).icon?(a(),l(A,{key:1,name:r(t).icon,"data-slot":"icon",class:s(e.value.icon({class:r(t).ui?.icon}))},null,8,["name","class"])):o("",!0)]),N("div",{"data-slot":"wrapper",class:s(e.value.wrapper({class:r(t).ui?.wrapper}))},[r(t).title||i.title?(a(),u("div",{key:0,"data-slot":"title",class:s(e.value.title({class:r(t).ui?.title}))},[c(n.$slots,"title",{},()=>[m(x(r(t).title),1)])],2)):o("",!0),r(t).description||i.description?(a(),u("div",{key:1,"data-slot":"description",class:s(e.value.description({class:r(t).ui?.description}))},[c(n.$slots,"description",{},()=>[m(x(r(t).description),1)])],2)):o("",!0),r(t).orientation==="vertical"&&(r(t).actions?.length||i.actions)?(a(),u("div",{key:2,"data-slot":"actions",class:s(e.value.actions({class:r(t).ui?.actions}))},[c(n.$slots,"actions",{},()=>[(a(!0),u(b,null,h(r(t).actions,(g,v)=>(a(),l(p,d({key:v,size:"xs"},{ref_for:!0},g),null,16))),128))])],2)):o("",!0)],2),r(t).orientation==="horizontal"&&(r(t).actions?.length||i.actions)||r(t).close?(a(),u("div",{key:0,"data-slot":"actions",class:s(e.value.actions({class:r(t).ui?.actions,orientation:"horizontal"}))},[r(t).orientation==="horizontal"&&(r(t).actions?.length||i.actions)?c(n.$slots,"actions",{key:0},()=>[(a(!0),u(b,null,h(r(t).actions,(g,v)=>(a(),l(p,d({key:v,size:"xs"},{ref_for:!0},g),null,16))),128))]):o("",!0),c(n.$slots,"close",{ui:e.value},()=>[r(t).close?(a(),l(p,d({key:0,icon:r(t).closeIcon||r(f).ui.icons.close,color:"neutral",variant:"link","aria-label":r(_)("alert.close")},typeof r(t).close=="object"?r(t).close:{},{"data-slot":"close",class:e.value.close({class:r(t).ui?.close}),onClick:y[0]||(y[0]=g=>z("update:open",!1))}),null,16,["icon","aria-label","class"])):o("",!0)])],2)):o("",!0)]),_:3},8,["as","data-orientation","class"]))}};export{D as _};
@@ -1 +1 @@
1
- import{d as T,o as r,c as x,j as p,k as a,p as U,t as E,v as b,i as k,f as _,g as y,m as L,_ as j,h as w,s as N,r as h,J as O,F as S,y as Z,C as D,E as R,l as I,K as J}from"./DCFbQvIN.js";import{a as K}from"./E-_n_6vi.js";const M=[{provider:"jira",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/browse\//i,/^https:\/\/[^/]+\/jira\/software\/c\/projects\//i,/^https:\/\/[^/]+\/.+\/browse\//i],keyExtract:/\/([A-Z][A-Z0-9_]+-\d+)(?:\?|$|#)/i},{provider:"github-issue",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"github-pr",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\//i],keyExtract:/\/pull\/(\d+)/},{provider:"gitlab-issue",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"gitlab-mr",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/merge_requests\//i],keyExtract:/\/merge_requests\/(\d+)/},{provider:"bitbucket",tests:[/^https:\/\/bitbucket\.org\/[^/]+\/[^/]+\/pull-requests\//i],keyExtract:/\/pull-requests\/(\d+)/},{provider:"confluence",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/wiki\//i]},{provider:"slack",tests:[/^https:\/\/[^/]+\.slack\.com\//i]},{provider:"linear",tests:[/^https:\/\/linear\.app\//i],keyExtract:/\/([A-Za-z]+-\d+)(?:\/|\?|$|#)/},{provider:"notion",tests:[/^https:\/\/(www\.)?notion\.so\//i]}];function G(t){for(const c of M)if(c.tests.some(e=>e.test(t)))return c.provider;return"generic"}function z(t){return{jira:"i-simple-icons-jira","github-issue":"i-simple-icons-github","github-pr":"i-simple-icons-github","gitlab-issue":"i-simple-icons-gitlab","gitlab-mr":"i-simple-icons-gitlab",bitbucket:"i-simple-icons-bitbucket",confluence:"i-simple-icons-confluence",slack:"i-simple-icons-slack",linear:"i-simple-icons-linear",notion:"i-simple-icons-notion",generic:"i-lucide-link"}[t]}const H={class:"inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 group hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors"},Q={key:0,class:"font-mono text-primary font-medium"},W=["title"],X=T({__name:"LinkChip",props:{link:{},removable:{type:Boolean}},emits:["remove"],setup(t,{emit:c}){const e=t,v=c,g=w(()=>e.link.title||e.link.key||e.link.url.replace(/^https?:\/\//,"").slice(0,50)),o=w(()=>z(e.link.provider));return(s,l)=>{const d=U,f=N,m=j;return r(),x("span",H,[p(d,{name:a(o),class:"w-3.5 h-3.5 shrink-0"},null,8,["name"]),t.link.key?(r(),x("span",Q,E(t.link.key),1)):b("",!0),k("span",{class:"max-w-48 truncate",title:t.link.title||t.link.url},E(a(g)),9,W),t.link.statusText?(r(),_(f,{key:1,color:t.link.statusColor||"neutral",variant:"subtle",size:"xs"},{default:y(()=>[L(E(t.link.statusText),1)]),_:1},8,["color"])):b("",!0),p(m,{to:t.link.url,target:"_blank",size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-external-link",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1"},null,8,["to"]),t.removable?(r(),_(m,{key:2,size:"xs",variant:"ghost",color:"error",icon:"i-lucide-x",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1",onClick:l[0]||(l[0]=C=>v("remove",t.link.id))})):b("",!0)])}}}),Y=Object.assign(X,{__name:"LinkChip"}),tt={class:"flex flex-wrap items-center gap-1.5"},et={class:"relative"},it={class:"flex justify-end gap-2"},st=T({__name:"EntityLinks",props:{entityType:{},entityId:{},links:{}},emits:["updated"],setup(t,{emit:c}){const e=t,v=c,{copy:g}=K(),o=h(e.links??[]),s=h(""),l=h(!1),d=h(!1),f=w(()=>{try{return s.value?G(s.value):null}catch{return null}}),m=w(()=>f.value?z(f.value):null);async function C(){const n=await $fetch("/api/links",{params:{entityType:e.entityType,entityId:e.entityId}});o.value=n.links}async function B(){if(!(!s.value||d.value)){d.value=!0;try{const n=await $fetch("/api/links",{method:"POST",body:{entityType:e.entityType,entityId:e.entityId,url:s.value}});o.value.push(n.link),s.value="",l.value=!1,v("updated")}catch(n){g(n?.data?.message||"Failed to add link",{toast:!0})}finally{d.value=!1}}}async function V(n){try{await $fetch(`/api/links/${n}`,{method:"DELETE"}),o.value=o.value.filter(i=>i.id!==n),v("updated")}catch{g("Failed to remove link",{toast:!0})}}return O(()=>[e.entityType,e.entityId],()=>{e.links?o.value=e.links:C()},{immediate:!0}),(n,i)=>{const A=Y,$=j,P=R,q=U,F=J;return r(),x("div",tt,[(r(!0),x(S,null,Z(a(o),u=>(r(),_(A,{key:u.id,link:u,removable:"",onRemove:V},null,8,["link"]))),128)),p(F,{open:a(l),"onUpdate:open":i[2]||(i[2]=u=>I(l)?l.value=u:null)},{content:y(()=>[k("form",{class:"p-3 space-y-3 min-w-72",onSubmit:D(B,["prevent"])},[i[5]||(i[5]=k("p",{class:"text-sm font-medium"},"Add link",-1)),k("div",et,[p(P,{modelValue:a(s),"onUpdate:modelValue":i[0]||(i[0]=u=>I(s)?s.value=u:null),placeholder:"https://...",size:"sm",class:"w-full",autofocus:""},null,8,["modelValue"]),a(m)?(r(),_(q,{key:0,name:a(m),class:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"},null,8,["name"])):b("",!0)]),k("div",it,[p($,{size:"xs",variant:"ghost",color:"neutral",onClick:i[1]||(i[1]=u=>l.value=!1)},{default:y(()=>[...i[3]||(i[3]=[L(" Cancel ",-1)])]),_:1}),p($,{size:"xs",color:"primary",type:"submit",loading:a(d),disabled:!a(s).trim()},{default:y(()=>[...i[4]||(i[4]=[L(" Add ",-1)])]),_:1},8,["loading","disabled"])])],32)]),default:y(()=>[p($,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-plus",class:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:"Add link"})]),_:1},8,["open"])])}}}),ot=Object.assign(st,{__name:"EntityLinks"});export{ot as _};
1
+ import{d as T,o as r,c as x,j as p,k as a,p as U,t as E,v as b,i as k,f as _,g as y,m as L,_ as j,h as w,s as N,r as h,J as O,F as S,y as Z,C as D,E as R,l as I,K as J}from"./h49q_GXF.js";import{a as K}from"./Cd8r0xk5.js";const M=[{provider:"jira",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/browse\//i,/^https:\/\/[^/]+\/jira\/software\/c\/projects\//i,/^https:\/\/[^/]+\/.+\/browse\//i],keyExtract:/\/([A-Z][A-Z0-9_]+-\d+)(?:\?|$|#)/i},{provider:"github-issue",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"github-pr",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\//i],keyExtract:/\/pull\/(\d+)/},{provider:"gitlab-issue",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"gitlab-mr",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/merge_requests\//i],keyExtract:/\/merge_requests\/(\d+)/},{provider:"bitbucket",tests:[/^https:\/\/bitbucket\.org\/[^/]+\/[^/]+\/pull-requests\//i],keyExtract:/\/pull-requests\/(\d+)/},{provider:"confluence",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/wiki\//i]},{provider:"slack",tests:[/^https:\/\/[^/]+\.slack\.com\//i]},{provider:"linear",tests:[/^https:\/\/linear\.app\//i],keyExtract:/\/([A-Za-z]+-\d+)(?:\/|\?|$|#)/},{provider:"notion",tests:[/^https:\/\/(www\.)?notion\.so\//i]}];function G(t){for(const c of M)if(c.tests.some(e=>e.test(t)))return c.provider;return"generic"}function z(t){return{jira:"i-simple-icons-jira","github-issue":"i-simple-icons-github","github-pr":"i-simple-icons-github","gitlab-issue":"i-simple-icons-gitlab","gitlab-mr":"i-simple-icons-gitlab",bitbucket:"i-simple-icons-bitbucket",confluence:"i-simple-icons-confluence",slack:"i-simple-icons-slack",linear:"i-simple-icons-linear",notion:"i-simple-icons-notion",generic:"i-lucide-link"}[t]}const H={class:"inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 group hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors"},Q={key:0,class:"font-mono text-primary font-medium"},W=["title"],X=T({__name:"LinkChip",props:{link:{},removable:{type:Boolean}},emits:["remove"],setup(t,{emit:c}){const e=t,v=c,g=w(()=>e.link.title||e.link.key||e.link.url.replace(/^https?:\/\//,"").slice(0,50)),o=w(()=>z(e.link.provider));return(s,l)=>{const d=U,f=N,m=j;return r(),x("span",H,[p(d,{name:a(o),class:"w-3.5 h-3.5 shrink-0"},null,8,["name"]),t.link.key?(r(),x("span",Q,E(t.link.key),1)):b("",!0),k("span",{class:"max-w-48 truncate",title:t.link.title||t.link.url},E(a(g)),9,W),t.link.statusText?(r(),_(f,{key:1,color:t.link.statusColor||"neutral",variant:"subtle",size:"xs"},{default:y(()=>[L(E(t.link.statusText),1)]),_:1},8,["color"])):b("",!0),p(m,{to:t.link.url,target:"_blank",size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-external-link",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1"},null,8,["to"]),t.removable?(r(),_(m,{key:2,size:"xs",variant:"ghost",color:"error",icon:"i-lucide-x",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1",onClick:l[0]||(l[0]=C=>v("remove",t.link.id))})):b("",!0)])}}}),Y=Object.assign(X,{__name:"LinkChip"}),tt={class:"flex flex-wrap items-center gap-1.5"},et={class:"relative"},it={class:"flex justify-end gap-2"},st=T({__name:"EntityLinks",props:{entityType:{},entityId:{},links:{}},emits:["updated"],setup(t,{emit:c}){const e=t,v=c,{copy:g}=K(),o=h(e.links??[]),s=h(""),l=h(!1),d=h(!1),f=w(()=>{try{return s.value?G(s.value):null}catch{return null}}),m=w(()=>f.value?z(f.value):null);async function C(){const n=await $fetch("/api/links",{params:{entityType:e.entityType,entityId:e.entityId}});o.value=n.links}async function B(){if(!(!s.value||d.value)){d.value=!0;try{const n=await $fetch("/api/links",{method:"POST",body:{entityType:e.entityType,entityId:e.entityId,url:s.value}});o.value.push(n.link),s.value="",l.value=!1,v("updated")}catch(n){g(n?.data?.message||"Failed to add link",{toast:!0})}finally{d.value=!1}}}async function V(n){try{await $fetch(`/api/links/${n}`,{method:"DELETE"}),o.value=o.value.filter(i=>i.id!==n),v("updated")}catch{g("Failed to remove link",{toast:!0})}}return O(()=>[e.entityType,e.entityId],()=>{e.links?o.value=e.links:C()},{immediate:!0}),(n,i)=>{const A=Y,$=j,P=R,q=U,F=J;return r(),x("div",tt,[(r(!0),x(S,null,Z(a(o),u=>(r(),_(A,{key:u.id,link:u,removable:"",onRemove:V},null,8,["link"]))),128)),p(F,{open:a(l),"onUpdate:open":i[2]||(i[2]=u=>I(l)?l.value=u:null)},{content:y(()=>[k("form",{class:"p-3 space-y-3 min-w-72",onSubmit:D(B,["prevent"])},[i[5]||(i[5]=k("p",{class:"text-sm font-medium"},"Add link",-1)),k("div",et,[p(P,{modelValue:a(s),"onUpdate:modelValue":i[0]||(i[0]=u=>I(s)?s.value=u:null),placeholder:"https://...",size:"sm",class:"w-full",autofocus:""},null,8,["modelValue"]),a(m)?(r(),_(q,{key:0,name:a(m),class:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"},null,8,["name"])):b("",!0)]),k("div",it,[p($,{size:"xs",variant:"ghost",color:"neutral",onClick:i[1]||(i[1]=u=>l.value=!1)},{default:y(()=>[...i[3]||(i[3]=[L(" Cancel ",-1)])]),_:1}),p($,{size:"xs",color:"primary",type:"submit",loading:a(d),disabled:!a(s).trim()},{default:y(()=>[...i[4]||(i[4]=[L(" Add ",-1)])]),_:1},8,["loading","disabled"])])],32)]),default:y(()=>[p($,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-plus",class:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:"Add link"})]),_:1},8,["open"])])}}}),ot=Object.assign(st,{__name:"EntityLinks"});export{ot as _};
@@ -0,0 +1 @@
1
+ import{b as o}from"./CobveFaj.js";import{O as a,h as i,ab as n}from"./h49q_GXF.js";import{u}from"./BaDhDBCV.js";function p(s){const{canSeeAdmin:t}=a(),e=u();return i(()=>o({canSeeAdmin:t.value,isDesktop:e,envManaged:s?n(s):void 0}))}export{p as u};
@@ -1 +1 @@
1
- import{_ as M}from"./DfnKh3dZ.js";import{d as P,b as z,w as I,c as u,i as t,k as s,f as O,v as w,j as a,g as r,F as x,D as j,o as c,p as A,m as p,y as N,t as i,_ as W,l as q,r as y}from"./DCFbQvIN.js";import{_ as G}from"./CES2i5Pl.js";import{_ as H}from"./B3Fsod9X.js";import{_ as J}from"./BrxtP_cN.js";import{_ as K}from"./zv8WdMx0.js";import{_ as Q}from"./oKrbs1XK.js";import{f as B}from"./D-c8ZSws.js";import{e as X,g as Y}from"./BpM6ZPIG.js";import{u as Z}from"./E-_n_6vi.js";import"./Ebw5l7n8.js";import"./Cpsq-kYE.js";import"./CIEceDOw.js";import"./NERLHpOL.js";import"./BjaRappk.js";const ee={class:"space-y-6"},te={class:"space-y-3"},se={class:"flex items-center gap-2 text-sm text-muted"},oe={class:"grid grid-cols-1 sm:grid-cols-2 gap-2 text-sm"},ae={class:"text-muted"},ne={class:"flex items-center gap-2 font-mono"},le={class:"text-xs"},ie={key:0,class:"flex items-center gap-2 py-4 text-muted"},re={key:1,class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},de={class:"space-y-1"},ce={class:"text-2xl font-semibold"},me={class:"space-y-1"},ue={class:"text-2xl font-semibold"},pe={class:"space-y-1"},_e={class:"text-2xl font-semibold"},fe={class:"space-y-1"},ge={class:"text-2xl font-semibold"},ve={class:"space-y-1"},xe={class:"text-2xl font-semibold"},ye={class:"space-y-1"},be={class:"text-2xl font-semibold"},he={class:"space-y-1"},Ce={class:"text-2xl font-semibold"},ke={class:"flex flex-col sm:flex-row items-start sm:items-center gap-4"},Oe=P({__name:"storage",async setup(Se){let _,b;const h=z(),{data:n,refresh:C,pending:k}=([_,b]=I(()=>Z("/api/admin/stats","$-MAlPFSlMr")),_=await _,b(),_),T=X("storage").map(o=>({name:o,...Y(o)})),$=[{label:"7 days",value:7},{label:"14 days",value:14},{label:"30 days",value:30},{label:"60 days",value:60},{label:"90 days",value:90},{label:"180 days",value:180},{label:"1 year",value:365}],d=y(30),m=y(!1),f=y(!1);async function D(){m.value=!1,f.value=!0;try{const o=await $fetch("/api/admin/cleanup",{method:"DELETE",body:{olderThanDays:d.value}});h.add({title:"Cleanup complete",description:`Deleted ${o.deletedRuns} test run(s) older than ${d.value} days.`,color:"success"}),await C()}catch(o){const e=o&&typeof o=="object"&&"data"in o?o.data?.message:void 0;h.add({title:"Cleanup failed",description:e||"An error occurred",color:"error"})}finally{f.value=!1}}return(o,e)=>{const V=M,S=A,E=G,v=H,g=W,F=J,R=K,U=Q,L=j;return c(),u(x,null,[t("div",ee,[s(n)?(c(),O(V,{key:0,database:s(n).databaseLocation,storage:s(n).storageLocation},null,8,["database","storage"])):w("",!0),a(v,{icon:"i-lucide-server",title:"Storage backend",help:"settings.storage-backend"},{subtitle:r(()=>[...e[5]||(e[5]=[p(" Configured through environment variables. The active backend is shown read-only. ",-1)])]),default:r(()=>[t("div",te,[t("div",se,[a(S,{name:"i-lucide-info",class:"size-4"}),e[6]||(e[6]=p(" Storage backend selection (local disk or S3) and its credentials are set via the environment. Each variable below is shown read-only — hover the lock to see what it controls. ",-1))]),t("div",oe,[(c(!0),u(x,null,N(s(T),l=>(c(),u(x,{key:l.name},[t("div",ae,i(l.name.replace("PIWI_S3_","S3 ").replace("PIWI_STORAGE_","Storage ")),1),t("div",ne,[t("code",le,i(l.name),1),a(E,{"env-vars":[l.name]},null,8,["env-vars"])])],64))),128))])])]),_:1}),a(v,{icon:"i-lucide-database",title:"Storage statistics",help:"settings.storage-stats"},{footer:r(()=>[a(g,{icon:"i-lucide-refresh-cw",variant:"outline",size:"sm",loading:s(k),label:"Refresh",onClick:e[0]||(e[0]=l=>s(C)())},null,8,["loading"])]),default:r(()=>[s(k)?(c(),u("div",ie,[a(S,{name:"i-lucide-loader-2",class:"animate-spin"}),e[7]||(e[7]=p(" Loading… ",-1))])):s(n)?(c(),u("div",re,[t("div",de,[e[8]||(e[8]=t("p",{class:"text-sm text-muted"},"Projects",-1)),t("p",ce,i(s(n).totalProjects),1)]),t("div",me,[e[9]||(e[9]=t("p",{class:"text-sm text-muted"},"Test runs",-1)),t("p",ue,i(s(n).totalRuns),1)]),t("div",pe,[e[10]||(e[10]=t("p",{class:"text-sm text-muted"},"Test cases (unique)",-1)),t("p",_e,i(s(n).totalTestCases),1)]),t("div",fe,[e[11]||(e[11]=t("p",{class:"text-sm text-muted"},"Test results",-1)),t("p",ge,i(s(n).totalRunsCases),1)]),t("div",ve,[e[12]||(e[12]=t("p",{class:"text-sm text-muted"},"Stored files",-1)),t("p",xe,i(s(n).totalFiles),1)]),t("div",ye,[e[13]||(e[13]=t("p",{class:"text-sm text-muted"},"File size (DB)",-1)),t("p",be,i(("formatBytes"in o?o.formatBytes:s(B))(s(n).totalFileSize)),1)]),t("div",he,[e[14]||(e[14]=t("p",{class:"text-sm text-muted"},"Storage on disk",-1)),t("p",Ce,i(("formatBytes"in o?o.formatBytes:s(B))(s(n).storageSizeOnDisk)),1)])])):w("",!0)]),_:1}),a(v,{icon:"i-lucide-trash-2",title:"Cleanup old test runs",help:"settings.cleanup"},{default:r(()=>[t("div",ke,[a(R,{label:"Delete runs older than",name:"period"},{default:r(()=>[a(F,{modelValue:s(d),"onUpdate:modelValue":e[1]||(e[1]=l=>q(d)?d.value=l:null),items:$},null,8,["modelValue"])]),_:1}),a(g,{icon:"i-lucide-trash-2",color:"error",variant:"soft",loading:s(f),label:"Run cleanup",class:"mt-4 sm:mt-5",onClick:e[2]||(e[2]=l=>m.value=!0)},null,8,["loading"])])]),_:1})]),a(L,null,{default:r(()=>[a(U,{open:s(m),title:"Confirm cleanup","onUpdate:open":e[4]||(e[4]=l=>m.value=l)},{body:r(()=>[t("p",null,[e[15]||(e[15]=p(" This will permanently delete all test runs older than ",-1)),t("strong",null,i(s(d))+" days",1),e[16]||(e[16]=p(", along with their associated reports, traces, and test results. This action cannot be undone. ",-1))])]),footer:r(()=>[a(g,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[3]||(e[3]=l=>m.value=!1)}),a(g,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:s(f),onClick:D},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{Oe as default};
1
+ import{_ as L}from"./B2a-Phk3.js";import{d as z,b as O,w as P,c as u,i as t,k as s,f as j,v as w,j as a,g as r,F as x,D as M,o as c,p as N,m as p,y as A,t as i,_ as W,l as q,r as y}from"./h49q_GXF.js";import{_ as G}from"./3xlGO1qT.js";import{_ as K}from"./DLNNAYfu.js";import{_ as Z}from"./DDN2tt0a.js";import{_ as H}from"./BKJetfRH.js";import{_ as J}from"./jjOqY9Tv.js";import{f as B}from"./D-c8ZSws.js";import{e as Q,g as X}from"./BtSJxOdh.js";import{u as Y}from"./Cd8r0xk5.js";import"./CRPt9SfB.js";import"./CWoSSKhQ.js";import"./xbO0VmDX.js";import"./D4UlSVir.js";import"./BjaRappk.js";const ee={class:"space-y-6"},te={class:"space-y-3"},se={class:"flex items-center gap-2 text-sm text-muted"},oe={class:"grid grid-cols-1 sm:grid-cols-2 gap-2 text-sm"},ae={class:"text-muted"},ne={class:"flex items-center gap-2 font-mono"},le={class:"text-xs"},ie={key:0,class:"flex items-center gap-2 py-4 text-muted"},re={key:1,class:"grid grid-cols-2 sm:grid-cols-3 gap-4"},de={class:"space-y-1"},ce={class:"text-2xl font-semibold"},me={class:"space-y-1"},ue={class:"text-2xl font-semibold"},pe={class:"space-y-1"},_e={class:"text-2xl font-semibold"},fe={class:"space-y-1"},ge={class:"text-2xl font-semibold"},ve={class:"space-y-1"},xe={class:"text-2xl font-semibold"},ye={class:"space-y-1"},be={class:"text-2xl font-semibold"},he={class:"space-y-1"},Ce={class:"text-2xl font-semibold"},ke={class:"flex flex-col sm:flex-row items-start sm:items-center gap-4"},je=z({__name:"storage",async setup(Se){let _,b;const h=O(),{data:n,refresh:C,pending:k}=([_,b]=P(()=>Y("/api/admin/stats","$phmoZI6KTi")),_=await _,b(),_),T=Q("storage").map(o=>({name:o,...X(o)})),$=[{label:"7 days",value:7},{label:"14 days",value:14},{label:"30 days",value:30},{label:"60 days",value:60},{label:"90 days",value:90},{label:"180 days",value:180},{label:"1 year",value:365}],d=y(30),m=y(!1),f=y(!1);async function D(){m.value=!1,f.value=!0;try{const o=await $fetch("/api/admin/cleanup",{method:"DELETE",body:{olderThanDays:d.value}});h.add({title:"Cleanup complete",description:`Deleted ${o.deletedRuns} test run(s) older than ${d.value} days.`,color:"success"}),await C()}catch(o){const e=o&&typeof o=="object"&&"data"in o?o.data?.message:void 0;h.add({title:"Cleanup failed",description:e||"An error occurred",color:"error"})}finally{f.value=!1}}return(o,e)=>{const V=L,S=N,E=G,v=K,g=W,F=Z,R=H,U=J,I=M;return c(),u(x,null,[t("div",ee,[s(n)?(c(),j(V,{key:0,database:s(n).databaseLocation,storage:s(n).storageLocation},null,8,["database","storage"])):w("",!0),a(v,{icon:"i-lucide-server",title:"Storage backend",help:"settings.storage-backend"},{subtitle:r(()=>[...e[5]||(e[5]=[p(" Configured through environment variables. The active backend is shown read-only. ",-1)])]),default:r(()=>[t("div",te,[t("div",se,[a(S,{name:"i-lucide-info",class:"size-4"}),e[6]||(e[6]=p(" Storage backend selection (local disk or S3) and its credentials are set via the environment. Each variable below is shown read-only — hover the lock to see what it controls. ",-1))]),t("div",oe,[(c(!0),u(x,null,A(s(T),l=>(c(),u(x,{key:l.name},[t("div",ae,i(l.name.replace("PIWI_S3_","S3 ").replace("PIWI_STORAGE_","Storage ")),1),t("div",ne,[t("code",le,i(l.name),1),a(E,{"env-vars":[l.name]},null,8,["env-vars"])])],64))),128))])])]),_:1}),a(v,{icon:"i-lucide-database",title:"Storage statistics",help:"settings.storage-stats"},{footer:r(()=>[a(g,{icon:"i-lucide-refresh-cw",variant:"outline",size:"sm",loading:s(k),label:"Refresh",onClick:e[0]||(e[0]=l=>s(C)())},null,8,["loading"])]),default:r(()=>[s(k)?(c(),u("div",ie,[a(S,{name:"i-lucide-loader-2",class:"animate-spin"}),e[7]||(e[7]=p(" Loading… ",-1))])):s(n)?(c(),u("div",re,[t("div",de,[e[8]||(e[8]=t("p",{class:"text-sm text-muted"},"Projects",-1)),t("p",ce,i(s(n).totalProjects),1)]),t("div",me,[e[9]||(e[9]=t("p",{class:"text-sm text-muted"},"Test runs",-1)),t("p",ue,i(s(n).totalRuns),1)]),t("div",pe,[e[10]||(e[10]=t("p",{class:"text-sm text-muted"},"Test cases (unique)",-1)),t("p",_e,i(s(n).totalTestCases),1)]),t("div",fe,[e[11]||(e[11]=t("p",{class:"text-sm text-muted"},"Test results",-1)),t("p",ge,i(s(n).totalRunsCases),1)]),t("div",ve,[e[12]||(e[12]=t("p",{class:"text-sm text-muted"},"Stored files",-1)),t("p",xe,i(s(n).totalFiles),1)]),t("div",ye,[e[13]||(e[13]=t("p",{class:"text-sm text-muted"},"File size (DB)",-1)),t("p",be,i(("formatBytes"in o?o.formatBytes:s(B))(s(n).totalFileSize)),1)]),t("div",he,[e[14]||(e[14]=t("p",{class:"text-sm text-muted"},"Storage on disk",-1)),t("p",Ce,i(("formatBytes"in o?o.formatBytes:s(B))(s(n).storageSizeOnDisk)),1)])])):w("",!0)]),_:1}),a(v,{icon:"i-lucide-trash-2",title:"Cleanup old test runs",help:"settings.cleanup"},{default:r(()=>[t("div",ke,[a(R,{label:"Delete runs older than",name:"period"},{default:r(()=>[a(F,{modelValue:s(d),"onUpdate:modelValue":e[1]||(e[1]=l=>q(d)?d.value=l:null),items:$},null,8,["modelValue"])]),_:1}),a(g,{icon:"i-lucide-trash-2",color:"error",variant:"soft",loading:s(f),label:"Run cleanup",class:"mt-4 sm:mt-5",onClick:e[2]||(e[2]=l=>m.value=!0)},null,8,["loading"])])]),_:1})]),a(I,null,{default:r(()=>[a(U,{open:s(m),title:"Confirm cleanup","onUpdate:open":e[4]||(e[4]=l=>m.value=l)},{body:r(()=>[t("p",null,[e[15]||(e[15]=p(" This will permanently delete all test runs older than ",-1)),t("strong",null,i(s(d))+" days",1),e[16]||(e[16]=p(", along with their associated reports, traces, and test results. This action cannot be undone. ",-1))])]),footer:r(()=>[a(g,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[3]||(e[3]=l=>m.value=!1)}),a(g,{color:"error",label:"Delete",icon:"i-lucide-trash-2",loading:s(f),onClick:D},null,8,["loading"])]),_:1},8,["open"])]),_:1})],64)}}});export{je as default};
@@ -1 +1 @@
1
- import{d as P,Y as L,Z as O,U as j,o as r,c as v,j as C,g as f,V as q,k as e,W as z,S as M,C as D,X as I,f as u,v as h,F as T,h as w,$ as H,a2 as W,a3 as X,a5 as Y,a6 as Z,a7 as G,aO as J,aP as Q,at as ee,i as ae,q as o,p as S,m as R,t as A,a8 as te}from"./DCFbQvIN.js";import{L as se}from"./NERLHpOL.js";import{u as re}from"./CIEceDOw.js";import{u as le}from"./Vxyo_mU9.js";import{V as ie}from"./CTD_pJ_v.js";const[oe,ne]=H("SwitchRoot");var de=P({inheritAttrs:!1,__name:"SwitchRoot",props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(g,{emit:c}){const t=g,d=c,{disabled:n}=L(t),a=O(t,"modelValue",d,{defaultValue:t.defaultValue??t.falseValue,passive:t.modelValue===void 0}),i=w(()=>a.value===t.trueValue);function m(){n.value||(a.value=i.value?t.falseValue:t.trueValue)}const{forwardRef:V,currentElement:b}=j(),x=re(b),k=le(),_=w(()=>t.id&&b.value?document.querySelector(`[for="${t.id}"]`)?.innerText:void 0);return ne({checked:i,toggleCheck:m,disabled:n}),(s,B)=>(r(),v(T,null,[C(e(I),z({id:s.id,ref:e(V),role:"switch",type:s.as==="button"?"button":void 0,value:s.value,"aria-label":s.$attrs["aria-label"]||_.value,"aria-checked":i.value,"aria-required":s.required,"data-state":i.value?"checked":"unchecked","data-disabled":e(n)?"":void 0,"as-child":s.asChild,as:s.as,disabled:e(n)},{...e(k),...s.$attrs},{onClick:m,onKeydown:M(D(m,["prevent"]),["enter"])}),{default:f(()=>[q(s.$slots,"default",{modelValue:e(a),checked:i.value})]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]),e(x)&&s.name?(r(),u(e(ie),z({key:0,type:"checkbox",name:s.name,disabled:e(n),required:s.required,value:s.value,checked:i.value},e(k)),null,16,["name","disabled","required","value","checked"])):h("v-if",!0)],64))}}),ue=de,ce=P({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(g){const c=oe();return j(),(t,d)=>(r(),u(e(I),{"data-state":e(c).checked.value?"checked":"unchecked","data-disabled":e(c).disabled.value?"":void 0,"as-child":t.asChild,as:t.as},{default:f(()=>[q(t.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}}),pe=ce;const he={slots:{root:"relative flex items-start",base:["inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-3 data-[state=unchecked]:bg-accented","transition-[background] duration-200"],container:"flex items-center",thumb:"group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center",icon:["absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12","transition-[color,opacity] duration-200"],wrapper:"ms-2",label:"block font-medium text-default",description:"text-muted"},variants:{color:{primary:{base:"data-[state=checked]:bg-primary outline-primary/25",icon:"group-data-[state=checked]:text-primary"},secondary:{base:"data-[state=checked]:bg-secondary outline-secondary/25",icon:"group-data-[state=checked]:text-secondary"},success:{base:"data-[state=checked]:bg-success outline-success/25",icon:"group-data-[state=checked]:text-success"},info:{base:"data-[state=checked]:bg-info outline-info/25",icon:"group-data-[state=checked]:text-info"},warning:{base:"data-[state=checked]:bg-warning outline-warning/25",icon:"group-data-[state=checked]:text-warning"},error:{base:"data-[state=checked]:bg-error outline-error/25",icon:"group-data-[state=checked]:text-error"},neutral:{base:"data-[state=checked]:bg-inverted outline-inverted/25",icon:"group-data-[state=checked]:text-highlighted"}},size:{xs:{base:"w-7",container:"h-4",thumb:"size-3 data-[state=checked]:translate-x-3 data-[state=checked]:rtl:-translate-x-3",wrapper:"text-xs"},sm:{base:"w-8",container:"h-4",thumb:"size-3.5 data-[state=checked]:translate-x-3.5 data-[state=checked]:rtl:-translate-x-3.5",wrapper:"text-xs"},md:{base:"w-9",container:"h-5",thumb:"size-4 data-[state=checked]:translate-x-4 data-[state=checked]:rtl:-translate-x-4",wrapper:"text-sm"},lg:{base:"w-10",container:"h-5",thumb:"size-4.5 data-[state=checked]:translate-x-4.5 data-[state=checked]:rtl:-translate-x-4.5",wrapper:"text-sm"},xl:{base:"w-11",container:"h-6",thumb:"size-5 data-[state=checked]:translate-x-5 data-[state=checked]:rtl:-translate-x-5",wrapper:"text-base"}},checked:{true:{icon:"group-data-[state=checked]:opacity-100"}},unchecked:{true:{icon:"group-data-[state=unchecked]:opacity-100"}},loading:{true:{icon:"animate-spin"}},highlight:{true:""},required:{true:{label:"after:content-['*'] after:ms-0.5 after:text-error"}},disabled:{true:{root:"opacity-75",base:"cursor-not-allowed",label:"cursor-not-allowed",description:"cursor-not-allowed"}}},compoundVariants:[{color:"primary",highlight:!0,class:{base:"ring ring-primary"}},{color:"secondary",highlight:!0,class:{base:"ring ring-secondary"}},{color:"success",highlight:!0,class:{base:"ring ring-success"}},{color:"info",highlight:!0,class:{base:"ring ring-info"}},{color:"warning",highlight:!0,class:{base:"ring ring-warning"}},{color:"error",highlight:!0,class:{base:"ring ring-error"}},{color:"neutral",highlight:!0,class:{base:"ring ring-inverted"}}],defaultVariants:{color:"primary",size:"md"}},ye=Object.assign({inheritAttrs:!1},{__name:"USwitch",props:{as:{type:null,required:!1},color:{type:null,required:!1},size:{type:null,required:!1},highlight:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},checkedIcon:{type:null,required:!1},uncheckedIcon:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},value:{type:String,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},trueValue:{type:null,required:!1},falseValue:{type:null,required:!1}},emits:["change","update:modelValue"],setup(g,{emit:c}){const t=g,d=W(),n=c,a=X("switch",t),i=Y(),m=Z(G(a,"required","value","defaultValue","modelValue","trueValue","falseValue"),n),{id:V,emitFormChange:b,emitFormInput:x,size:k,color:_,highlight:s,name:B,disabled:F,ariaAttrs:E}=J(t),$=V.value??Q(),N=ee(),U=w(()=>{const{"data-state":p,...y}=N;return y}),l=w(()=>te({extend:he,...i.ui?.switch||{}})({size:k.value??a.size,color:_.value??a.color,highlight:s.value??a.highlight,required:a.required,loading:a.loading,disabled:F.value||a.loading}));function K(p){const y=new Event("change",{target:{value:p}});n("change",y),b(),x()}return(p,y)=>(r(),u(e(I),{as:e(a).as,"data-slot":p.$attrs["data-slot"]??"root",class:o(l.value.root({class:[e(a).ui?.root,e(a).class]}))},{default:f(()=>[ae("div",{"data-slot":"container",class:o(l.value.container({class:e(a).ui?.container}))},[C(e(ue),z({id:e($)},{...e(m),...U.value,...e(E)},{name:e(B),disabled:e(F)||e(a).loading,"data-slot":"base",class:l.value.base({class:e(a).ui?.base}),"onUpdate:modelValue":K}),{default:f(()=>[C(e(pe),{"data-slot":"thumb",class:o(l.value.thumb({class:e(a).ui?.thumb}))},{default:f(()=>[e(a).loading?(r(),u(S,{key:0,name:e(a).loadingIcon||e(i).ui.icons.loading,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,checked:!0,unchecked:!0}))},null,8,["name","class"])):(r(),v(T,{key:1},[e(a).checkedIcon?(r(),u(S,{key:0,name:e(a).checkedIcon,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,checked:!0}))},null,8,["name","class"])):h("",!0),e(a).uncheckedIcon?(r(),u(S,{key:1,name:e(a).uncheckedIcon,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,unchecked:!0}))},null,8,["name","class"])):h("",!0)],64))]),_:1},8,["class"])]),_:1},16,["id","name","disabled","class"])],2),e(a).label||d.label||e(a).description||d.description?(r(),v("div",{key:0,"data-slot":"wrapper",class:o(l.value.wrapper({class:e(a).ui?.wrapper}))},[e(a).label||d.label?(r(),u(e(se),{key:0,for:e($),"data-slot":"label",class:o(l.value.label({class:e(a).ui?.label}))},{default:f(()=>[q(p.$slots,"label",{label:e(a).label},()=>[R(A(e(a).label),1)])]),_:3},8,["for","class"])):h("",!0),e(a).description||d.description?(r(),v("p",{key:1,"data-slot":"description",class:o(l.value.description({class:e(a).ui?.description}))},[q(p.$slots,"description",{description:e(a).description},()=>[R(A(e(a).description),1)])],2)):h("",!0)],2)):h("",!0)]),_:3},8,["as","data-slot","class"]))}});export{ye as _};
1
+ import{d as P,Y as K,Z as M,U as j,o as r,c as v,j as C,g as f,V as q,k as e,W as z,S as O,C as D,X as I,f as u,v as h,F as T,h as w,$ as H,a2 as W,a3 as X,a5 as Y,a6 as Z,a7 as G,aL as J,aS as Q,at as ee,i as ae,q as o,p as S,m as R,t as A,a8 as te}from"./h49q_GXF.js";import{L as se}from"./D4UlSVir.js";import{u as re}from"./xbO0VmDX.js";import{u as le}from"./B9FSuKdA.js";import{V as ie}from"./BNAHBHbY.js";const[oe,ne]=H("SwitchRoot");var de=P({inheritAttrs:!1,__name:"SwitchRoot",props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:"on"},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue"],setup(g,{emit:c}){const t=g,d=c,{disabled:n}=K(t),a=M(t,"modelValue",d,{defaultValue:t.defaultValue??t.falseValue,passive:t.modelValue===void 0}),i=w(()=>a.value===t.trueValue);function m(){n.value||(a.value=i.value?t.falseValue:t.trueValue)}const{forwardRef:V,currentElement:b}=j(),x=re(b),k=le(),_=w(()=>t.id&&b.value?document.querySelector(`[for="${t.id}"]`)?.innerText:void 0);return ne({checked:i,toggleCheck:m,disabled:n}),(s,B)=>(r(),v(T,null,[C(e(I),z({id:s.id,ref:e(V),role:"switch",type:s.as==="button"?"button":void 0,value:s.value,"aria-label":s.$attrs["aria-label"]||_.value,"aria-checked":i.value,"aria-required":s.required,"data-state":i.value?"checked":"unchecked","data-disabled":e(n)?"":void 0,"as-child":s.asChild,as:s.as,disabled:e(n)},{...e(k),...s.$attrs},{onClick:m,onKeydown:O(D(m,["prevent"]),["enter"])}),{default:f(()=>[q(s.$slots,"default",{modelValue:e(a),checked:i.value})]),_:3},16,["id","type","value","aria-label","aria-checked","aria-required","data-state","data-disabled","as-child","as","disabled","onKeydown"]),e(x)&&s.name?(r(),u(e(ie),z({key:0,type:"checkbox",name:s.name,disabled:e(n),required:s.required,value:s.value,checked:i.value},e(k)),null,16,["name","disabled","required","value","checked"])):h("v-if",!0)],64))}}),ue=de,ce=P({__name:"SwitchThumb",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(g){const c=oe();return j(),(t,d)=>(r(),u(e(I),{"data-state":e(c).checked.value?"checked":"unchecked","data-disabled":e(c).disabled.value?"":void 0,"as-child":t.asChild,as:t.as},{default:f(()=>[q(t.$slots,"default")]),_:3},8,["data-state","data-disabled","as-child","as"]))}}),pe=ce;const he={slots:{root:"relative flex items-start",base:["inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-3 data-[state=unchecked]:bg-accented","transition-[background] duration-200"],container:"flex items-center",thumb:"group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center",icon:["absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12","transition-[color,opacity] duration-200"],wrapper:"ms-2",label:"block font-medium text-default",description:"text-muted"},variants:{color:{primary:{base:"data-[state=checked]:bg-primary outline-primary/25",icon:"group-data-[state=checked]:text-primary"},secondary:{base:"data-[state=checked]:bg-secondary outline-secondary/25",icon:"group-data-[state=checked]:text-secondary"},success:{base:"data-[state=checked]:bg-success outline-success/25",icon:"group-data-[state=checked]:text-success"},info:{base:"data-[state=checked]:bg-info outline-info/25",icon:"group-data-[state=checked]:text-info"},warning:{base:"data-[state=checked]:bg-warning outline-warning/25",icon:"group-data-[state=checked]:text-warning"},error:{base:"data-[state=checked]:bg-error outline-error/25",icon:"group-data-[state=checked]:text-error"},neutral:{base:"data-[state=checked]:bg-inverted outline-inverted/25",icon:"group-data-[state=checked]:text-highlighted"}},size:{xs:{base:"w-7",container:"h-4",thumb:"size-3 data-[state=checked]:translate-x-3 data-[state=checked]:rtl:-translate-x-3",wrapper:"text-xs"},sm:{base:"w-8",container:"h-4",thumb:"size-3.5 data-[state=checked]:translate-x-3.5 data-[state=checked]:rtl:-translate-x-3.5",wrapper:"text-xs"},md:{base:"w-9",container:"h-5",thumb:"size-4 data-[state=checked]:translate-x-4 data-[state=checked]:rtl:-translate-x-4",wrapper:"text-sm"},lg:{base:"w-10",container:"h-5",thumb:"size-4.5 data-[state=checked]:translate-x-4.5 data-[state=checked]:rtl:-translate-x-4.5",wrapper:"text-sm"},xl:{base:"w-11",container:"h-6",thumb:"size-5 data-[state=checked]:translate-x-5 data-[state=checked]:rtl:-translate-x-5",wrapper:"text-base"}},checked:{true:{icon:"group-data-[state=checked]:opacity-100"}},unchecked:{true:{icon:"group-data-[state=unchecked]:opacity-100"}},loading:{true:{icon:"animate-spin"}},highlight:{true:""},required:{true:{label:"after:content-['*'] after:ms-0.5 after:text-error"}},disabled:{true:{root:"opacity-75",base:"cursor-not-allowed",label:"cursor-not-allowed",description:"cursor-not-allowed"}}},compoundVariants:[{color:"primary",highlight:!0,class:{base:"ring ring-primary"}},{color:"secondary",highlight:!0,class:{base:"ring ring-secondary"}},{color:"success",highlight:!0,class:{base:"ring ring-success"}},{color:"info",highlight:!0,class:{base:"ring ring-info"}},{color:"warning",highlight:!0,class:{base:"ring ring-warning"}},{color:"error",highlight:!0,class:{base:"ring ring-error"}},{color:"neutral",highlight:!0,class:{base:"ring ring-inverted"}}],defaultVariants:{color:"primary",size:"md"}},ye=Object.assign({inheritAttrs:!1},{__name:"USwitch",props:{as:{type:null,required:!1},color:{type:null,required:!1},size:{type:null,required:!1},highlight:{type:Boolean,required:!1},loading:{type:Boolean,required:!1},loadingIcon:{type:null,required:!1},checkedIcon:{type:null,required:!1},uncheckedIcon:{type:null,required:!1},label:{type:String,required:!1},description:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},value:{type:String,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1},trueValue:{type:null,required:!1},falseValue:{type:null,required:!1}},emits:["change","update:modelValue"],setup(g,{emit:c}){const t=g,d=W(),n=c,a=X("switch",t),i=Y(),m=Z(G(a,"required","value","defaultValue","modelValue","trueValue","falseValue"),n),{id:V,emitFormChange:b,emitFormInput:x,size:k,color:_,highlight:s,name:B,disabled:F,ariaAttrs:E}=J(t),$=V.value??Q(),L=ee(),N=w(()=>{const{"data-state":p,...y}=L;return y}),l=w(()=>te({extend:he,...i.ui?.switch||{}})({size:k.value??a.size,color:_.value??a.color,highlight:s.value??a.highlight,required:a.required,loading:a.loading,disabled:F.value||a.loading}));function U(p){const y=new Event("change",{target:{value:p}});n("change",y),b(),x()}return(p,y)=>(r(),u(e(I),{as:e(a).as,"data-slot":p.$attrs["data-slot"]??"root",class:o(l.value.root({class:[e(a).ui?.root,e(a).class]}))},{default:f(()=>[ae("div",{"data-slot":"container",class:o(l.value.container({class:e(a).ui?.container}))},[C(e(ue),z({id:e($)},{...e(m),...N.value,...e(E)},{name:e(B),disabled:e(F)||e(a).loading,"data-slot":"base",class:l.value.base({class:e(a).ui?.base}),"onUpdate:modelValue":U}),{default:f(()=>[C(e(pe),{"data-slot":"thumb",class:o(l.value.thumb({class:e(a).ui?.thumb}))},{default:f(()=>[e(a).loading?(r(),u(S,{key:0,name:e(a).loadingIcon||e(i).ui.icons.loading,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,checked:!0,unchecked:!0}))},null,8,["name","class"])):(r(),v(T,{key:1},[e(a).checkedIcon?(r(),u(S,{key:0,name:e(a).checkedIcon,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,checked:!0}))},null,8,["name","class"])):h("",!0),e(a).uncheckedIcon?(r(),u(S,{key:1,name:e(a).uncheckedIcon,"data-slot":"icon",class:o(l.value.icon({class:e(a).ui?.icon,unchecked:!0}))},null,8,["name","class"])):h("",!0)],64))]),_:1},8,["class"])]),_:1},16,["id","name","disabled","class"])],2),e(a).label||d.label||e(a).description||d.description?(r(),v("div",{key:0,"data-slot":"wrapper",class:o(l.value.wrapper({class:e(a).ui?.wrapper}))},[e(a).label||d.label?(r(),u(e(se),{key:0,for:e($),"data-slot":"label",class:o(l.value.label({class:e(a).ui?.label}))},{default:f(()=>[q(p.$slots,"label",{label:e(a).label},()=>[R(A(e(a).label),1)])]),_:3},8,["for","class"])):h("",!0),e(a).description||d.description?(r(),v("p",{key:1,"data-slot":"description",class:o(l.value.description({class:e(a).ui?.description}))},[q(p.$slots,"description",{description:e(a).description},()=>[R(A(e(a).description),1)])],2)):h("",!0)],2)):h("",!0)]),_:3},8,["as","data-slot","class"]))}});export{ye as _};
@@ -1 +1 @@
1
- import{d as _,f as m,g as i,o as p,i as s,t as n,j as c,k as l,m as u,_ as x}from"./DCFbQvIN.js";import{_ as f}from"./B3Fsod9X.js";import{a as b}from"./E-_n_6vi.js";const g={class:"space-y-4 text-sm"},v={class:"space-y-1"},y={class:"flex items-start gap-2"},C={class:"text-xs break-all flex-1"},k={class:"space-y-1"},D={class:"flex items-start gap-2"},B={class:"text-xs break-all flex-1"},h=_({__name:"DataLocationCard",props:{database:{},storage:{}},setup(a){const{copy:e}=b();return(N,t)=>{const o=x,r=f;return p(),m(r,{icon:"i-lucide-folder-open",title:"Data location"},{subtitle:i(()=>[...t[2]||(t[2]=[u(" Where this instance keeps its database and files on disk. ",-1)])]),default:i(()=>[s("div",g,[s("div",v,[t[3]||(t[3]=s("div",{class:"text-muted"},"Database",-1)),s("div",y,[s("code",C,n(a.database),1),c(o,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy database location",onClick:t[0]||(t[0]=d=>l(e)(a.database,{toast:!0}))})])]),s("div",k,[t[4]||(t[4]=s("div",{class:"text-muted"},"File storage",-1)),s("div",D,[s("code",B,n(a.storage),1),c(o,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy storage location",onClick:t[1]||(t[1]=d=>l(e)(a.storage,{toast:!0}))})])])])]),_:1})}}}),z=Object.assign(h,{__name:"DataLocationCard"});export{z as _};
1
+ import{d as _,f as m,g as i,o as p,i as s,t as n,j as c,k as l,m as u,_ as x}from"./h49q_GXF.js";import{_ as f}from"./DLNNAYfu.js";import{a as b}from"./Cd8r0xk5.js";const g={class:"space-y-4 text-sm"},v={class:"space-y-1"},y={class:"flex items-start gap-2"},C={class:"text-xs break-all flex-1"},k={class:"space-y-1"},D={class:"flex items-start gap-2"},B={class:"text-xs break-all flex-1"},h=_({__name:"DataLocationCard",props:{database:{},storage:{}},setup(a){const{copy:e}=b();return(N,t)=>{const o=x,r=f;return p(),m(r,{icon:"i-lucide-folder-open",title:"Data location"},{subtitle:i(()=>[...t[2]||(t[2]=[u(" Where this instance keeps its database and files on disk. ",-1)])]),default:i(()=>[s("div",g,[s("div",v,[t[3]||(t[3]=s("div",{class:"text-muted"},"Database",-1)),s("div",y,[s("code",C,n(a.database),1),c(o,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy database location",onClick:t[0]||(t[0]=d=>l(e)(a.database,{toast:!0}))})])]),s("div",k,[t[4]||(t[4]=s("div",{class:"text-muted"},"File storage",-1)),s("div",D,[s("code",B,n(a.storage),1),c(o,{icon:"i-lucide-copy",color:"neutral",variant:"ghost",size:"xs","aria-label":"Copy storage location",onClick:t[1]||(t[1]=d=>l(e)(a.storage,{toast:!0}))})])])])]),_:1})}}}),z=Object.assign(h,{__name:"DataLocationCard"});export{z as _};
@@ -1 +1 @@
1
- import{k as C,J as W,am as N,aC as P,bX as j,h as B}from"./DCFbQvIN.js";function H(l,h,t){const e=new Array(l);return new Proxy(e,{get(s,i,o){if(typeof i=="string"){const n=i.charCodeAt(0);if(n>=48&&n<=57){const r=+i;if(Number.isInteger(r)&&r>=0&&r<l){let a=s[r];if(!a){const d=h[r*2];a=s[r]={index:r,key:t(r),start:d,size:h[r*2+1],end:d+h[r*2+1],lane:0}}return a}}if(i==="length")return l}return Reflect.get(s,i,o)}})}function w(l,h,t){let e=t.initialDeps??[],s,i=!0;function o(){const n=l();return(n.length!==e.length||n.some((a,d)=>e[d]!==a))&&(e=n,s=h(...n),t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(s),i=!1),s}return o.updateDeps=n=>{e=n},o}function L(l,h){if(l===void 0)throw new Error("Unexpected undefined");return l}const J=(l,h)=>Math.abs(l-h)<1.01,U=(l,h,t)=>{let e;return function(...s){l.clearTimeout(e),e=l.setTimeout(()=>h.apply(this,s),t)}};let M;const R=()=>{if(M!==void 0)return M;if(typeof navigator>"u")return M=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return M=!0;const l=navigator.maxTouchPoints;return M=navigator.platform==="MacIntel"&&l!==void 0&&l>0},V=l=>{const{offsetWidth:h,offsetHeight:t}=l;return{width:h,height:t}},q=l=>l,X=l=>{const h=Math.max(l.startIndex-l.overscan,0),e=Math.min(l.endIndex+l.overscan,l.count-1)-h+1,s=new Array(e);for(let i=0;i<e;i++)s[i]=h+i;return s},$=(l,h)=>{const t=l.scrollElement;if(!t)return;const e=l.targetWindow;if(!e)return;const s=o=>{const{width:n,height:r}=o;h({width:Math.round(n),height:Math.round(r)})};if(s(V(t)),!e.ResizeObserver)return()=>{};const i=new e.ResizeObserver(o=>{const n=()=>{const r=o[0];if(r?.borderBoxSize){const a=r.borderBoxSize[0];if(a){s({width:a.inlineSize,height:a.blockSize});return}}s(V(t))};l.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(n):n()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},A={passive:!0},G=typeof window>"u"?!0:"onscrollend"in window,Q=(l,h,t)=>{const e=l.scrollElement;if(!e)return;const s=l.targetWindow;if(!s)return;const i=l.options.useScrollendEvent&&G;let o=0;const n=i?null:U(s,()=>h(o,!1),l.options.isScrollingResetDelay),r=m=>()=>{o=t(e),n?.(),h(o,m)},a=r(!0),d=r(!1);return e.addEventListener("scroll",a,A),i&&e.addEventListener("scrollend",d,A),()=>{e.removeEventListener("scroll",a),i&&e.removeEventListener("scrollend",d)}},Y=(l,h)=>Q(l,h,t=>{const{horizontal:e,isRtl:s}=l.options;return e?t.scrollLeft*(s&&-1||1):t.scrollTop}),Z=(l,h,t)=>{if(t.options.useCachedMeasurements){const e=t.indexFromElement(l),s=t.options.getItemKey(e);return t.itemSizeCache.get(s)??t.options.estimateSize(e)}if(h?.borderBoxSize){const e=h.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}if(!h){const e=t.indexFromElement(l),s=t.options.getItemKey(e),i=t.itemSizeCache.get(s);if(i!==void 0)return i}return l[t.options.horizontal?"offsetWidth":"offsetHeight"]},tt=(l,{adjustments:h=0,behavior:t},e)=>{var s,i;(i=(s=e.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[e.options.horizontal?"left":"top"]:l+h,behavior:t})},et=tt;class st{constructor(h){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var t,e,s;return((s=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:s.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const o=()=>{const n=i.target,r=this.indexFromElement(n);if(!n.isConnected){this.observer.unobserve(n);for(const[a,d]of this.elementsCache)if(d===n){this.elementsCache.delete(a);break}return}this.shouldMeasureDuringScroll(r)&&this.resizeItem(r,this.options.measureElement(n,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()})}));return{disconnect:()=>{var s;(s=e())==null||s.disconnect(),t=null},observe:s=>{var i;return(i=e())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=e())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=t=>{var e,s;const i={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:q,rangeExtractor:X,onChange:()=>{},measureElement:Z,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const u in t){const g=t[u];g!==void 0&&(i[u]=g)}const o=this.options;let n=null,r=null,a=!1;if(o!==void 0&&o.enabled&&i.enabled&&i.anchorTo==="end"&&this.scrollElement!==null){const u=o.count,g=i.count,S=this.getMeasurements(),E=u>0?((e=S[0])==null?void 0:e.key)??o.getItemKey(0):null,O=u>0?((s=S[u-1])==null?void 0:s.key)??o.getItemKey(u-1):null;if(g!==u||u>0&&g>0&&(i.getItemKey(0)!==E||i.getItemKey(g-1)!==O)){a=!0;const b=u>0?this.getVirtualItemForOffset(this.getScrollOffset())??S[0]:null;b&&(n=[b.key,this.getScrollOffset()-b.start]);const v=i.followOnAppend===!0?"auto":i.followOnAppend||null;v&&g>u&&this.isAtEnd(o.scrollEndThreshold)&&(u===0||i.getItemKey(g-1)!==O)&&(r=v)}}this.options=i,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let d=!1,m=0;if(n&&this.scrollOffset!==null){const[u,g]=n,S=this.getMeasurements(),{count:E,getItemKey:O}=this.options;let c=0;for(;c<E&&O(c)!==u;)c++;if(c<E){const f=S[c];if(f){const b=f.start+g;b!==this.scrollOffset&&(m=b-this.scrollOffset,this.scrollOffset=b,d=!0)}}}(d||r)&&(this.pendingScrollAnchor=[d?n[0]:null,d?n[1]:0,r,m])},this.notify=t=>{var e,s;(s=(e=this.options).onChange)==null||s.call(e,this,t)},this.maybeNotify=w(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(i=>{this.observer.observe(i)}),this.unsubs.push(this.options.observeElementRect(this,i=>{this.scrollRect=i,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(i,o)=>{if(o&&this._intendedScrollOffset===null&&i===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(i-this._intendedScrollOffset)<1.5&&(i=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const n=this.getScrollOffset();this.scrollDirection=o?n===i?this.scrollDirection:n<i?"forward":"backward":null,this.scrollOffset=i,this.isScrolling=o,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const i=this.scrollElement,o=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!R()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",o,A),i.addEventListener("touchend",n,A),this.unsubs.push(()=>{i.removeEventListener("touchstart",o),i.removeEventListener("touchend",n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const s=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,s&&this.scrollElement&&this.options.enabled){const[i,o,n,r]=s;i!==null&&!n&&(R()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?r!==0&&(this._iosDeferredAdjustment+=r):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),n&&this.scrollToEnd({behavior:n})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const t=this.getScrollOffset(),e=this.getMaxScrollOffset();if(t<0||t>e)return;const s=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(t,{adjustments:this.scrollAdjustments+=s,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=w(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(t,e,s,i,o,n,r,a)=>(this.prevLanes!==void 0&&this.prevLanes!==n&&(this.lanesChangedFlag=!0),this.prevLanes=n,this.pendingMin=null,{count:t,paddingStart:e,scrollMargin:s,getItemKey:i,enabled:o,lanes:n,laneAssignmentMode:r,gap:a}),{key:!1}),this.getMeasurements=w(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:t,paddingStart:e,scrollMargin:s,getItemKey:i,enabled:o,lanes:n,laneAssignmentMode:r,gap:a},d)=>{const m=this.itemSizeCache;if(!o)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const c of this.laneAssignments.keys())c>=t&&this.laneAssignments.delete(c);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(c=>{this.itemSizeCache.set(c.key,c.size)}));const u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1),n===1){const c=t*2;let f=this._flatMeasurements;if(!f||f.length<c){const p=new Float64Array(c);f&&u>0&&p.set(f.subarray(0,u*2)),f=p,this._flatMeasurements=f}let b;if(u===0)b=e+s;else{const p=u-1;b=f[p*2]+f[p*2+1]+a}for(let p=u;p<t;p++){const T=i(p),x=m.get(T),z=typeof x=="number"?x:this.options.estimateSize(p);f[p*2]=b,f[p*2+1]=z,b+=z+a}const v=H(t,f,i);return this.measurementsCache=v,v}const g=this.measurementsCache.slice(0,u),S=new Array(n).fill(void 0),E=new Float64Array(n);let O=0;for(let c=0;c<u;c++){const f=g[c];f&&(S[f.lane]===void 0&&O++,S[f.lane]=c,E[f.lane]=f.end)}for(let c=u;c<t;c++){const f=i(c),b=this.laneAssignments.get(c);let v,p;const T=r==="estimate"||m.has(f);if(b!==void 0&&this.options.lanes>1){v=b;const y=S[v],I=y!==void 0?g[y]:void 0;p=I?I.end+a:e+s}else if(O===n){let y=0,I=E[0],D=S[0];for(let _=1;_<n;_++){const F=E[_];(F<I||F===I&&S[_]<D)&&(y=_,I=F,D=S[_])}v=y,p=I+a,T&&this.laneAssignments.set(c,v)}else v=c%this.options.lanes,p=e+s,T&&this.laneAssignments.set(c,v);const x=m.get(f),z=typeof x=="number"?x:this.options.estimateSize(c),k=p+z;g[c]={index:c,start:p,size:z,end:k,key:f,lane:v},S[v]===void 0&&O++,S[v]=c,E[v]=k}return this.measurementsCache=g,g},{key:!1,debug:()=>this.options.debug}),this.calculateRange=w(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,s,i)=>t.length===0||e===0?(this.range=null,null):(this.range=nt(t,e,s,i,i===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=w(()=>{let t=null,e=null;const s=this.calculateRange();return s&&(t=s.startIndex,e=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,s,i,o)=>i===null||o===null?[]:t({startIndex:i,endIndex:o,overscan:e,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,s=t.getAttribute(e);return s?parseInt(s,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const s=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(s!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),o=Math.max(0,s-i),n=Math.min(this.options.count-1,s+i);return t>=o&&t<=n}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((o,n)=>{o.isConnected||(this.observer.unobserve(o),this.elementsCache.delete(n))});return}const e=this.indexFromElement(t),s=this.options.getItemKey(e),i=this.elementsCache.get(s);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(s,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var s,i;if(t<0||t>=this.options.count)return;let o,n,r;const a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)r=this.options.getItemKey(t),n=a[t*2],o=a[t*2+1];else{const u=this.measurementsCache[t];if(!u)return;r=u.key,n=u.start,o=u.size}const d=this.itemSizeCache.get(r)??o,m=e-d;if(m!==0){const u=this.options.anchorTo==="end"&&((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,g=u?this.getTotalSize():0,S=((i=this.scrollState)==null?void 0:i.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[t]??{index:t,key:r,start:n,size:o,end:n+o,lane:0},m,this):n<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(r)||this.scrollDirection!=="backward"));(this.pendingMin===null||t<this.pendingMin)&&(this.pendingMin=t),this.itemSizeCache.set(r,e),this.itemSizeCacheVersion++,u?this.applyScrollAdjustment(this.getTotalSize()-g):S&&this.applyScrollAdjustment(m),this.notify(!1)}},this.getVirtualItems=w(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const s=[];for(let i=0,o=t.length;i<o;i++){const n=t[i],r=e[n];s.push(r)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length===0)return;const s=this._flatMeasurements,i=this.options.lanes===1&&s!=null,o=K(0,e.length-1,i?n=>s[n*2]:n=>L(e[n]).start,t);return L(e[o])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(t=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=t,this.getOffsetForAlignment=(t,e,s=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),o=this.getScrollOffset();e==="auto"&&(e=t>=o+i?"end":"start"),e==="center"?t+=(s-i)/2:e==="end"&&(t-=i);const n=this.getMaxScrollOffset();return Math.max(Math.min(n,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const s=this.getSize(),i=this.getScrollOffset(),o=this.measurementsCache[t];if(!o)return;if(e==="auto")if(o.end>=i+s-this.options.scrollPaddingEnd)e="end";else if(o.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const n=e==="end"?o.end+this.options.scrollPaddingEnd:o.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(n,e,o.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:s="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),o=this.now();this.scrollState={index:null,align:e,behavior:s,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:s="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[o,n]=i,r=this.now();this.scrollState={index:t,align:n,behavior:s,startedAt:r,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const s=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:t="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:t});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:t})},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let s;if(e.length===0)s=this.options.paddingStart;else if(this.options.lanes===1){const i=e.length-1,o=this._flatMeasurements;o!=null?s=o[i*2]+o[i*2+1]:s=((t=e[i])==null?void 0:t.end)??0}else{const i=Array(this.options.lanes).fill(null);let o=e.length-1;for(;o>=0&&i.some(n=>n===null);){const n=e[o];i[n.lane]===null&&(i[n.lane]=n.end),o--}s=Math.max(...i.filter(n=>n!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const t=[];if(this.itemSizeCache.size===0)return t;const e=this.getMeasurements();for(const s of e)s&&this.itemSizeCache.has(s.key)&&t.push({index:s.index,key:s.key,start:s.start,size:s.size,end:s.end,lane:s.lane});return t},this._scrollToOffset=(t,{adjustments:e,behavior:s})=>{this._intendedScrollOffset=t+(e??0),this.options.scrollToFn(t,{behavior:s,adjustments:e},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(h)}applyScrollAdjustment(h,t){h!==0&&(R()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=h:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=h,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=e?e[0]:this.scrollState.lastTargetOffset,i=1,o=s!==this.scrollState.lastTargetOffset;if(!o&&J(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.getScrollOffset()!==s&&this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,o){const n=this.getSize()||600,r=Math.abs(s-this.getScrollOffset()),a=this.scrollState.behavior==="smooth"&&r>n;this.scrollState.lastTargetOffset=s,a||(this.scrollState.behavior="auto"),this._scrollToOffset(s,{adjustments:void 0,behavior:a?"smooth":"auto"})}this.scheduleScrollReconcile()}}const K=(l,h,t,e)=>{for(;l<=h;){const s=(l+h)/2|0,i=t(s);if(i<e)l=s+1;else if(i>e)h=s-1;else return s}return l>0?l-1:0};function it(l,h,t){let e=0;for(;e<=h;){const s=(e+h)/2|0,i=l[s*2];if(i<t)e=s+1;else if(i>t)h=s-1;else return s}return e>0?e-1:0}function nt(l,h,t,e,s){const i=l.length-1;if(l.length<=e)return{startIndex:0,endIndex:i};if(e===1&&s!==null){const a=it(s,i,t);let d=a;const m=t+h;for(;d<i&&s[d*2]+s[d*2+1]<m;)d++;return{startIndex:a,endIndex:d}}let n=K(0,i,a=>l[a].start,t),r=n;if(e===1)for(;r<i&&l[r].end<t+h;)r++;else if(e>1){const a=Array(e).fill(0);for(;r<i&&a.some(m=>m<t+h);){const m=l[r];a[m.lane]=m.end,r++}const d=Array(e).fill(t+h);for(;n>=0&&d.some(m=>m>=t);){const m=l[n];d[m.lane]=m.start,n--}n=Math.max(0,n-n%e),r=Math.min(i,r+(e-1-r%e))}return{startIndex:n,endIndex:r}}function ot(l){const h=new st(C(l)),t=P(h),e=h._didMount();return W(()=>C(l).getScrollElement(),s=>{s&&h._willUpdate()},{immediate:!0}),W(()=>C(l),s=>{h.setOptions({...s,onChange:(i,o)=>{var n;j(t),(n=s.onChange)==null||n.call(s,i,o)}}),h._willUpdate(),j(t)},{immediate:!0}),N(e),t}function rt(l){return ot(B(()=>({observeElementRect:$,observeElementOffset:Y,scrollToFn:et,...C(l)})))}export{rt as u};
1
+ import{k as C,J as W,am as N,aC as P,bX as j,h as B}from"./h49q_GXF.js";function H(l,h,t){const e=new Array(l);return new Proxy(e,{get(s,i,o){if(typeof i=="string"){const n=i.charCodeAt(0);if(n>=48&&n<=57){const r=+i;if(Number.isInteger(r)&&r>=0&&r<l){let a=s[r];if(!a){const d=h[r*2];a=s[r]={index:r,key:t(r),start:d,size:h[r*2+1],end:d+h[r*2+1],lane:0}}return a}}if(i==="length")return l}return Reflect.get(s,i,o)}})}function w(l,h,t){let e=t.initialDeps??[],s,i=!0;function o(){const n=l();return(n.length!==e.length||n.some((a,d)=>e[d]!==a))&&(e=n,s=h(...n),t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(s),i=!1),s}return o.updateDeps=n=>{e=n},o}function L(l,h){if(l===void 0)throw new Error("Unexpected undefined");return l}const J=(l,h)=>Math.abs(l-h)<1.01,U=(l,h,t)=>{let e;return function(...s){l.clearTimeout(e),e=l.setTimeout(()=>h.apply(this,s),t)}};let M;const R=()=>{if(M!==void 0)return M;if(typeof navigator>"u")return M=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return M=!0;const l=navigator.maxTouchPoints;return M=navigator.platform==="MacIntel"&&l!==void 0&&l>0},V=l=>{const{offsetWidth:h,offsetHeight:t}=l;return{width:h,height:t}},q=l=>l,X=l=>{const h=Math.max(l.startIndex-l.overscan,0),e=Math.min(l.endIndex+l.overscan,l.count-1)-h+1,s=new Array(e);for(let i=0;i<e;i++)s[i]=h+i;return s},$=(l,h)=>{const t=l.scrollElement;if(!t)return;const e=l.targetWindow;if(!e)return;const s=o=>{const{width:n,height:r}=o;h({width:Math.round(n),height:Math.round(r)})};if(s(V(t)),!e.ResizeObserver)return()=>{};const i=new e.ResizeObserver(o=>{const n=()=>{const r=o[0];if(r?.borderBoxSize){const a=r.borderBoxSize[0];if(a){s({width:a.inlineSize,height:a.blockSize});return}}s(V(t))};l.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(n):n()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},A={passive:!0},G=typeof window>"u"?!0:"onscrollend"in window,Q=(l,h,t)=>{const e=l.scrollElement;if(!e)return;const s=l.targetWindow;if(!s)return;const i=l.options.useScrollendEvent&&G;let o=0;const n=i?null:U(s,()=>h(o,!1),l.options.isScrollingResetDelay),r=m=>()=>{o=t(e),n?.(),h(o,m)},a=r(!0),d=r(!1);return e.addEventListener("scroll",a,A),i&&e.addEventListener("scrollend",d,A),()=>{e.removeEventListener("scroll",a),i&&e.removeEventListener("scrollend",d)}},Y=(l,h)=>Q(l,h,t=>{const{horizontal:e,isRtl:s}=l.options;return e?t.scrollLeft*(s&&-1||1):t.scrollTop}),Z=(l,h,t)=>{if(t.options.useCachedMeasurements){const e=t.indexFromElement(l),s=t.options.getItemKey(e);return t.itemSizeCache.get(s)??t.options.estimateSize(e)}if(h?.borderBoxSize){const e=h.borderBoxSize[0];if(e)return Math.round(e[t.options.horizontal?"inlineSize":"blockSize"])}if(!h){const e=t.indexFromElement(l),s=t.options.getItemKey(e),i=t.itemSizeCache.get(s);if(i!==void 0)return i}return l[t.options.horizontal?"offsetWidth":"offsetHeight"]},tt=(l,{adjustments:h=0,behavior:t},e)=>{var s,i;(i=(s=e.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[e.options.horizontal?"left":"top"]:l+h,behavior:t})},et=tt;class st{constructor(h){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var t,e,s;return((s=(e=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:e.now)==null?void 0:s.call(e))??Date.now()},this.observer=(()=>{let t=null;const e=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const o=()=>{const n=i.target,r=this.indexFromElement(n);if(!n.isConnected){this.observer.unobserve(n);for(const[a,d]of this.elementsCache)if(d===n){this.elementsCache.delete(a);break}return}this.shouldMeasureDuringScroll(r)&&this.resizeItem(r,this.options.measureElement(n,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()})}));return{disconnect:()=>{var s;(s=e())==null||s.disconnect(),t=null},observe:s=>{var i;return(i=e())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=e())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=t=>{var e,s;const i={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:q,rangeExtractor:X,onChange:()=>{},measureElement:Z,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const u in t){const g=t[u];g!==void 0&&(i[u]=g)}const o=this.options;let n=null,r=null,a=!1;if(o!==void 0&&o.enabled&&i.enabled&&i.anchorTo==="end"&&this.scrollElement!==null){const u=o.count,g=i.count,S=this.getMeasurements(),E=u>0?((e=S[0])==null?void 0:e.key)??o.getItemKey(0):null,O=u>0?((s=S[u-1])==null?void 0:s.key)??o.getItemKey(u-1):null;if(g!==u||u>0&&g>0&&(i.getItemKey(0)!==E||i.getItemKey(g-1)!==O)){a=!0;const b=u>0?this.getVirtualItemForOffset(this.getScrollOffset())??S[0]:null;b&&(n=[b.key,this.getScrollOffset()-b.start]);const v=i.followOnAppend===!0?"auto":i.followOnAppend||null;v&&g>u&&this.isAtEnd(o.scrollEndThreshold)&&(u===0||i.getItemKey(g-1)!==O)&&(r=v)}}this.options=i,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let d=!1,m=0;if(n&&this.scrollOffset!==null){const[u,g]=n,S=this.getMeasurements(),{count:E,getItemKey:O}=this.options;let c=0;for(;c<E&&O(c)!==u;)c++;if(c<E){const f=S[c];if(f){const b=f.start+g;b!==this.scrollOffset&&(m=b-this.scrollOffset,this.scrollOffset=b,d=!0)}}}(d||r)&&(this.pendingScrollAnchor=[d?n[0]:null,d?n[1]:0,r,m])},this.notify=t=>{var e,s;(s=(e=this.options).onChange)==null||s.call(e,this,t)},this.maybeNotify=w(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(i=>{this.observer.observe(i)}),this.unsubs.push(this.options.observeElementRect(this,i=>{this.scrollRect=i,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(i,o)=>{if(o&&this._intendedScrollOffset===null&&i===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(i-this._intendedScrollOffset)<1.5&&(i=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const n=this.getScrollOffset();this.scrollDirection=o?n===i?this.scrollDirection:n<i?"forward":"backward":null,this.scrollOffset=i,this.isScrolling=o,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const i=this.scrollElement,o=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!R()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",o,A),i.addEventListener("touchend",n,A),this.unsubs.push(()=>{i.removeEventListener("touchstart",o),i.removeEventListener("touchend",n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const s=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,s&&this.scrollElement&&this.options.enabled){const[i,o,n,r]=s;i!==null&&!n&&(R()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?r!==0&&(this._iosDeferredAdjustment+=r):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),n&&this.scrollToEnd({behavior:n})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const t=this.getScrollOffset(),e=this.getMaxScrollOffset();if(t<0||t>e)return;const s=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(t,{adjustments:this.scrollAdjustments+=s,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=w(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(t,e,s,i,o,n,r,a)=>(this.prevLanes!==void 0&&this.prevLanes!==n&&(this.lanesChangedFlag=!0),this.prevLanes=n,this.pendingMin=null,{count:t,paddingStart:e,scrollMargin:s,getItemKey:i,enabled:o,lanes:n,laneAssignmentMode:r,gap:a}),{key:!1}),this.getMeasurements=w(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:t,paddingStart:e,scrollMargin:s,getItemKey:i,enabled:o,lanes:n,laneAssignmentMode:r,gap:a},d)=>{const m=this.itemSizeCache;if(!o)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const c of this.laneAssignments.keys())c>=t&&this.laneAssignments.delete(c);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(c=>{this.itemSizeCache.set(c.key,c.size)}));const u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1),n===1){const c=t*2;let f=this._flatMeasurements;if(!f||f.length<c){const p=new Float64Array(c);f&&u>0&&p.set(f.subarray(0,u*2)),f=p,this._flatMeasurements=f}let b;if(u===0)b=e+s;else{const p=u-1;b=f[p*2]+f[p*2+1]+a}for(let p=u;p<t;p++){const T=i(p),x=m.get(T),z=typeof x=="number"?x:this.options.estimateSize(p);f[p*2]=b,f[p*2+1]=z,b+=z+a}const v=H(t,f,i);return this.measurementsCache=v,v}const g=this.measurementsCache.slice(0,u),S=new Array(n).fill(void 0),E=new Float64Array(n);let O=0;for(let c=0;c<u;c++){const f=g[c];f&&(S[f.lane]===void 0&&O++,S[f.lane]=c,E[f.lane]=f.end)}for(let c=u;c<t;c++){const f=i(c),b=this.laneAssignments.get(c);let v,p;const T=r==="estimate"||m.has(f);if(b!==void 0&&this.options.lanes>1){v=b;const y=S[v],I=y!==void 0?g[y]:void 0;p=I?I.end+a:e+s}else if(O===n){let y=0,I=E[0],D=S[0];for(let _=1;_<n;_++){const F=E[_];(F<I||F===I&&S[_]<D)&&(y=_,I=F,D=S[_])}v=y,p=I+a,T&&this.laneAssignments.set(c,v)}else v=c%this.options.lanes,p=e+s,T&&this.laneAssignments.set(c,v);const x=m.get(f),z=typeof x=="number"?x:this.options.estimateSize(c),k=p+z;g[c]={index:c,start:p,size:z,end:k,key:f,lane:v},S[v]===void 0&&O++,S[v]=c,E[v]=k}return this.measurementsCache=g,g},{key:!1,debug:()=>this.options.debug}),this.calculateRange=w(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,e,s,i)=>t.length===0||e===0?(this.range=null,null):(this.range=nt(t,e,s,i,i===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=w(()=>{let t=null,e=null;const s=this.calculateRange();return s&&(t=s.startIndex,e=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,e]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,e]},(t,e,s,i,o)=>i===null||o===null?[]:t({startIndex:i,endIndex:o,overscan:e,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=t=>{const e=this.options.indexAttribute,s=t.getAttribute(e);return s?parseInt(s,10):(console.warn(`Missing attribute name '${e}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var e;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const s=this.scrollState.index??((e=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:e.index);if(s!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),o=Math.max(0,s-i),n=Math.min(this.options.count-1,s+i);return t>=o&&t<=n}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((o,n)=>{o.isConnected||(this.observer.unobserve(o),this.elementsCache.delete(n))});return}const e=this.indexFromElement(t),s=this.options.getItemKey(e),i=this.elementsCache.get(s);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(s,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(e)&&this.resizeItem(e,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,e)=>{var s,i;if(t<0||t>=this.options.count)return;let o,n,r;const a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)r=this.options.getItemKey(t),n=a[t*2],o=a[t*2+1];else{const u=this.measurementsCache[t];if(!u)return;r=u.key,n=u.start,o=u.size}const d=this.itemSizeCache.get(r)??o,m=e-d;if(m!==0){const u=this.options.anchorTo==="end"&&((s=this.scrollState)==null?void 0:s.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,g=u?this.getTotalSize():0,S=((i=this.scrollState)==null?void 0:i.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[t]??{index:t,key:r,start:n,size:o,end:n+o,lane:0},m,this):n<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(r)||this.scrollDirection!=="backward"));(this.pendingMin===null||t<this.pendingMin)&&(this.pendingMin=t),this.itemSizeCache.set(r,e),this.itemSizeCacheVersion++,u?this.applyScrollAdjustment(this.getTotalSize()-g):S&&this.applyScrollAdjustment(m),this.notify(!1)}},this.getVirtualItems=w(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,e)=>{const s=[];for(let i=0,o=t.length;i<o;i++){const n=t[i],r=e[n];s.push(r)}return s},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const e=this.getMeasurements();if(e.length===0)return;const s=this._flatMeasurements,i=this.options.lanes===1&&s!=null,o=K(0,e.length-1,i?n=>s[n*2]:n=>L(e[n]).start,t);return L(e[o])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(t=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=t,this.getOffsetForAlignment=(t,e,s=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),o=this.getScrollOffset();e==="auto"&&(e=t>=o+i?"end":"start"),e==="center"?t+=(s-i)/2:e==="end"&&(t-=i);const n=this.getMaxScrollOffset();return Math.max(Math.min(n,t),0)},this.getOffsetForIndex=(t,e="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const s=this.getSize(),i=this.getScrollOffset(),o=this.measurementsCache[t];if(!o)return;if(e==="auto")if(o.end>=i+s-this.options.scrollPaddingEnd)e="end";else if(o.start<=i+this.options.scrollPaddingStart)e="start";else return[i,e];if(e==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),e];const n=e==="end"?o.end+this.options.scrollPaddingEnd:o.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(n,e,o.size),e]},this.scrollToOffset=(t,{align:e="start",behavior:s="auto"}={})=>{const i=this.getOffsetForAlignment(t,e),o=this.now();this.scrollState={index:null,align:e,behavior:s,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:e="auto",behavior:s="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,e);if(!i)return;const[o,n]=i,r=this.now();this.scrollState={index:t,align:n,behavior:s,startedAt:r,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:e="auto"}={})=>{const s=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:e,startedAt:i,lastTargetOffset:s,stableFrames:0},this._scrollToOffset(s,{adjustments:void 0,behavior:e}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:t="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:t});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:t})},this.getTotalSize=()=>{var t;const e=this.getMeasurements();let s;if(e.length===0)s=this.options.paddingStart;else if(this.options.lanes===1){const i=e.length-1,o=this._flatMeasurements;o!=null?s=o[i*2]+o[i*2+1]:s=((t=e[i])==null?void 0:t.end)??0}else{const i=Array(this.options.lanes).fill(null);let o=e.length-1;for(;o>=0&&i.some(n=>n===null);){const n=e[o];i[n.lane]===null&&(i[n.lane]=n.end),o--}s=Math.max(...i.filter(n=>n!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const t=[];if(this.itemSizeCache.size===0)return t;const e=this.getMeasurements();for(const s of e)s&&this.itemSizeCache.has(s.key)&&t.push({index:s.index,key:s.key,start:s.start,size:s.size,end:s.end,lane:s.lane});return t},this._scrollToOffset=(t,{adjustments:e,behavior:s})=>{this._intendedScrollOffset=t+(e??0),this.options.scrollToFn(t,{behavior:s,adjustments:e},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(h)}applyScrollAdjustment(h,t){h!==0&&(R()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=h:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=h,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const e=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,s=e?e[0]:this.scrollState.lastTargetOffset,i=1,o=s!==this.scrollState.lastTargetOffset;if(!o&&J(s,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.getScrollOffset()!==s&&this._scrollToOffset(s,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,o){const n=this.getSize()||600,r=Math.abs(s-this.getScrollOffset()),a=this.scrollState.behavior==="smooth"&&r>n;this.scrollState.lastTargetOffset=s,a||(this.scrollState.behavior="auto"),this._scrollToOffset(s,{adjustments:void 0,behavior:a?"smooth":"auto"})}this.scheduleScrollReconcile()}}const K=(l,h,t,e)=>{for(;l<=h;){const s=(l+h)/2|0,i=t(s);if(i<e)l=s+1;else if(i>e)h=s-1;else return s}return l>0?l-1:0};function it(l,h,t){let e=0;for(;e<=h;){const s=(e+h)/2|0,i=l[s*2];if(i<t)e=s+1;else if(i>t)h=s-1;else return s}return e>0?e-1:0}function nt(l,h,t,e,s){const i=l.length-1;if(l.length<=e)return{startIndex:0,endIndex:i};if(e===1&&s!==null){const a=it(s,i,t);let d=a;const m=t+h;for(;d<i&&s[d*2]+s[d*2+1]<m;)d++;return{startIndex:a,endIndex:d}}let n=K(0,i,a=>l[a].start,t),r=n;if(e===1)for(;r<i&&l[r].end<t+h;)r++;else if(e>1){const a=Array(e).fill(0);for(;r<i&&a.some(m=>m<t+h);){const m=l[r];a[m.lane]=m.end,r++}const d=Array(e).fill(t+h);for(;n>=0&&d.some(m=>m>=t);){const m=l[n];d[m.lane]=m.start,n--}n=Math.max(0,n-n%e),r=Math.min(i,r+(e-1-r%e))}return{startIndex:n,endIndex:r}}function ot(l){const h=new st(C(l)),t=P(h),e=h._didMount();return W(()=>C(l).getScrollElement(),s=>{s&&h._willUpdate()},{immediate:!0}),W(()=>C(l),s=>{h.setOptions({...s,onChange:(i,o)=>{var n;j(t),(n=s.onChange)==null||n.call(s,i,o)}}),h._willUpdate(),j(t)},{immediate:!0}),N(e),t}function rt(l){return ot(B(()=>({observeElementRect:$,observeElementOffset:Y,scrollToFn:et,...C(l)})))}export{rt as u};
@@ -0,0 +1 @@
1
+ import{av as o}from"./h49q_GXF.js";function n(){const e=o()?.vnode?.scopeId;return e?{[e]:""}:{}}export{n as u};
@@ -1,5 +1,5 @@
1
- import{_ as Ae}from"./9ti9eNH9.js";import{_ as Re}from"./B_13C0GF.js";import{_ as Fe,a as Oe}from"./DQM62mxB.js";import{d as ze,u as De,b as Me,w as le,e as Be,c as m,j as l,g as c,F as T,D as Le,h as D,o as i,i as u,k as o,f as w,y as M,t as h,s as qe,m as j,v as _,_ as He,l as W,p as Ke,E as We,r as f}from"./DCFbQvIN.js";import{_ as Ge}from"./DdH3op4b.js";import{_ as Je}from"./D_eDAIsT.js";import{_ as Qe}from"./B3Fsod9X.js";import{_ as Ye}from"./B1RmmOsM.js";import{_ as Ze}from"./DkT2nCqn.js";import{_ as Xe}from"./zv8WdMx0.js";import{_ as et}from"./BrxtP_cN.js";import{_ as tt}from"./oKrbs1XK.js";import{b as at,L as lt}from"./DWwiVTZX.js";import{u as ot}from"./BGL_V7Y4.js";import{u as oe}from"./E-_n_6vi.js";import{e as A}from"./BAKUqW95.js";import"./C2hNxjjz.js";import"./BpM6ZPIG.js";import"./BjaRappk.js";import"./Cpsq-kYE.js";import"./NERLHpOL.js";import"./CIEceDOw.js";import"./DGnQ69wW.js";const nt={class:"p-4 space-y-4"},st={key:2,class:"divide-y divide-gray-200 dark:divide-gray-800"},rt={class:"min-w-0 space-y-1"},it={class:"flex items-center gap-2 flex-wrap"},ut={class:"font-mono text-sm font-medium"},ct={class:"text-xs text-gray-500 dark:text-gray-400 font-mono truncate"},dt={key:0},mt={class:"text-xs text-gray-500 dark:text-gray-400 truncate"},pt={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},ft={class:"flex items-center gap-1 shrink-0"},vt={class:"space-y-4"},gt={class:"border border-dashed border-gray-300 dark:border-gray-700 rounded-lg p-3 space-y-2"},ht={key:0,class:"space-y-2"},_t={class:"flex items-center gap-2 flex-wrap"},bt={key:1,class:"text-xs text-gray-500"},xt={key:1,class:"text-xs text-gray-500 dark:text-gray-400"},yt={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},kt={key:0,class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},wt={class:"space-y-2"},Vt={class:"space-y-2"},Pt={class:"text-xs text-gray-500 w-4"},Ct={class:"space-y-2"},Ut={class:"font-mono"},Xt=ze({__name:"test-functions",async setup(It){let x,R;const P=De().params.id,p=Me(),{aiStatus:ne}=ot(),{data:F}=([x,R]=le(()=>oe(`/api/projects/${P}`,"$fxcwycDzZk")),x=await x,R(),x),{data:se,refresh:G,status:re}=([x,R]=le(()=>oe(`/api/projects/${P}/test-functions`,"$EE8k82eeQq")),x=await x,R(),x);Be(D(()=>({title:`Test functions — ${F.value?.label||F.value?.name||"Project"} — Piwi Dashboard`})));const B=D(()=>se.value?.testFunctions??[]),ie=[{label:"Page-object method",value:"page-object-method"},{label:"Helper function",value:"helper"},{label:"Fixture",value:"fixture"}],ue=[{label:"string",value:"string"},{label:"number",value:"number"},{label:"boolean",value:"boolean"},{label:"object",value:"object"}],ce=[{label:"goto",value:"goto"},{label:"click",value:"click"},{label:"fill",value:"fill"},{label:"check",value:"check"},{label:"uncheck",value:"uncheck"},{label:"selectOption",value:"selectOption"},{label:"press",value:"press"},{label:"assertVisible",value:"assertVisible"}],de=[{label:"element text",value:"text"},{label:"field value",value:"value"},{label:"test id",value:"testId"}],V=f(!1),L=f(!1),C=f(null);function O(){return{name:"",kind:"page-object-method",module:"",receiver:"",importName:"",urlPattern:"",params:[],steps:[{action:"click",role:"",name:"",testId:""}],paramSources:[]}}const a=f(O()),S=f(!1),y=f(""),q=f(!1),U=f(!1),k=f(null),E=f(null),I=f(""),H=f(!1),J=D(()=>U.value&&k.value!=null&&k.value<lt),me=D(()=>new Set(a.value.params.filter(n=>n.type==="object"&&n.name.trim()).map(n=>n.name.trim())));function Q(){S.value=!1,y.value="",I.value="",U.value=!1,k.value=null,E.value=null}function pe(){a.value=O(),C.value=null,Q(),V.value=!0}function fe(n){const e=n.entry;a.value={name:e.name,kind:e.kind,module:e.module,receiver:e.receiver??"",importName:e.importName??"",urlPattern:e.urlPattern??"",params:e.params.map(s=>({name:s.name,type:s.type,fields:(s.fields??[]).join(", ")})),steps:e.steps.map(s=>({action:s.action,role:s.target.role??"",name:s.target.name??"",testId:s.target.testId??""})),paramSources:e.paramSources.map(s=>({param:s.param,path:s.path??"",stepIndex:s.stepIndex,from:s.from}))},a.value.steps.length===0&&(a.value.steps=O().steps),C.value=n.id,Q(),V.value=!0}function Y(n){a.value.name=n.name,a.value.kind=n.kind,a.value.receiver=n.receiver??"",a.value.importName=n.importName??"",a.value.params=n.params.map(e=>({name:e.name,type:e.type,fields:(e.fields??[]).join(", ")})),a.value.steps=n.steps.map(e=>({action:e.action,role:e.target.role??"",name:e.target.name??"",testId:e.target.testId??""})),a.value.steps.length===0&&(a.value.steps=O().steps),a.value.paramSources=n.paramSources.map(e=>({param:e.param,path:e.path??"",stepIndex:e.stepIndex,from:e.from})),U.value=!0,k.value=n.confidence,E.value=n.notes}async function ve(){if(!y.value.trim()){p.add({title:"Paste some function code first",color:"error"});return}q.value=!0;try{const{proposal:n}=await $fetch(`/api/projects/${P}/test-functions/extract`,{method:"POST",body:{code:y.value}});Y(n),p.add({title:"Extracted — review the fields below before saving",color:"success"})}catch(n){p.add({title:"Extraction failed",description:A(n),color:"error"})}finally{q.value=!1}}async function ge(){if(!y.value.trim()){p.add({title:"Paste some function code first",color:"error"});return}try{await navigator.clipboard.writeText(at(y.value)),p.add({title:"Prompt copied",description:"Paste it into your AI chat, then paste the reply below.",color:"success"})}catch(n){p.add({title:"Failed to copy the prompt",description:A(n),color:"error"})}}async function he(){if(!I.value.trim()){p.add({title:"Paste the AI response first",color:"error"});return}H.value=!0;try{const{proposal:n}=await $fetch(`/api/projects/${P}/test-functions/validate-proposal`,{method:"POST",body:{responseText:I.value}});Y(n),p.add({title:"Applied — review the fields below before saving",color:"success"})}catch(n){p.add({title:"Couldn't apply that response",description:A(n),color:"error"})}finally{H.value=!1}}function _e(){a.value.params.push({name:"",type:"string",fields:""})}function be(n){a.value.params.splice(n,1)}function xe(){a.value.steps.push({action:"click",role:"",name:"",testId:""})}function ye(n){a.value.steps.length<=1||a.value.steps.splice(n,1)}function ke(){a.value.paramSources.push({param:"",path:"",stepIndex:0,from:"value"})}function we(n){a.value.paramSources.splice(n,1)}async function Ve(){if(!a.value.name.trim()){p.add({title:"Name is required",color:"error"});return}if(!a.value.module.trim()){p.add({title:"Module is required",color:"error"});return}L.value=!0;const n={name:a.value.name.trim(),kind:a.value.kind,module:a.value.module.trim(),receiver:a.value.kind==="page-object-method"&&a.value.receiver.trim()||null,importName:a.value.kind==="page-object-method"&&a.value.importName.trim()||null,urlPattern:a.value.urlPattern.trim()||null,params:a.value.params.filter(s=>s.name.trim()).map(s=>({name:s.name.trim(),type:s.type,...s.type==="object"?{fields:s.fields.split(",").map(K=>K.trim()).filter(Boolean)}:{}})),steps:a.value.steps.map(s=>({action:s.action,target:{role:s.role.trim()||null,name:s.name.trim()||null,testId:s.testId.trim()||null}})),paramSources:a.value.paramSources.filter(s=>s.param.trim()).map(s=>({param:s.param.trim(),path:s.path.trim()||null,stepIndex:s.stepIndex,from:s.from})),source:U.value?"ai-extracted":void 0,confidence:U.value?k.value??void 0:void 0},e=C.value!=null;try{e?await $fetch(`/api/test-functions/${C.value}`,{method:"PUT",body:n}):await $fetch(`/api/projects/${P}/test-functions`,{method:"POST",body:n}),p.add({title:e?"Function updated":"Function added",color:"success"}),V.value=!1,await G()}catch(s){p.add({title:e?"Failed to update function":"Failed to add function",description:A(s),color:"error"})}finally{L.value=!1}}const z=f(null),N=f(!1);function Pe(n){z.value=n,N.value=!0}async function Ce(){const n=z.value;if(n){N.value=!1;try{await $fetch(`/api/test-functions/${n.id}`,{method:"DELETE"}),p.add({title:"Function removed",color:"success"}),await G()}catch(e){p.add({title:"Failed to remove function",description:A(e),color:"error"})}finally{z.value=null}}}function Ue(n){return n.entry.steps.map(e=>`${e.action}(${e.target.role??e.target.testId??e.target.name??"?"})`).join(" → ")}return(n,e)=>{const s=Ae,K=Re,Ie=Oe,d=He,$e=Ge,je=Je,Z=qe,Se=Qe,Ee=Fe,X=Ke,ee=Ye,Ne=Ze,v=We,b=Xe,$=et,te=tt,Te=Le;return i(),m(T,null,[l(Ee,{id:"project-test-functions"},{header:c(()=>[l(Ie,null,{leading:c(()=>[l(s),l(K,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:o(F)?.label||o(F)?.name||"Project",to:`/projects/${o(P)}`},{label:"Test functions"}]},null,8,["items"])]),_:1})]),body:c(()=>[u("div",nt,[l(Se,{title:"Test function catalog",icon:"i-lucide-function-square",count:o(B).length||null,subtitle:"Page-object methods and helpers the Piwi Picker extension matches a recording against, to generate calls to your own code instead of raw locator lines."},{actions:c(()=>[l(d,{label:"Add function",icon:"i-lucide-plus",size:"sm",onClick:pe})]),default:c(()=>[o(re)==="pending"?(i(),w($e,{key:0})):o(B).length===0?(i(),w(je,{key:1,icon:"i-lucide-function-square",text:"No functions registered yet — add one, or extract one from a recording in the extension."})):(i(),m("div",st,[(i(!0),m(T,null,M(o(B),t=>(i(),m("div",{key:t.id,class:"py-3 flex items-start justify-between gap-3"},[u("div",rt,[u("div",it,[u("span",ut,h(t.name),1),l(Z,{color:"neutral",variant:"subtle",size:"sm"},{default:c(()=>[j(h(t.kind),1)]),_:2},1024),t.source!=="manual"?(i(),w(Z,{key:0,color:"primary",variant:"subtle",size:"sm"},{default:c(()=>[j(h(t.source),1)]),_:2},1024)):_("",!0)]),u("div",ct,[j(h(t.module),1),t.receiver?(i(),m("span",dt,"#"+h(t.receiver),1)):_("",!0)]),u("div",mt,h(Ue(t)),1),t.urlPattern?(i(),m("div",pt,[e[13]||(e[13]=j(" on ",-1)),u("code",null,h(t.urlPattern),1)])):_("",!0)]),u("div",ft,[l(d,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm","aria-label":`Edit ${t.name}`,onClick:g=>fe(t)},null,8,["aria-label","onClick"]),l(d,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm","aria-label":`Remove ${t.name}`,onClick:g=>Pe(t)},null,8,["aria-label","onClick"])])]))),128))]))]),_:1},8,["count"])])]),_:1}),l(Te,null,{default:c(()=>[l(te,{open:o(V),"onUpdate:open":e[10]||(e[10]=t=>W(V)?V.value=t:null),title:o(C)==null?"Add test function":"Edit test function",ui:{content:"max-w-2xl"}},{body:c(()=>[u("div",vt,[u("div",gt,[u("button",{type:"button",class:"flex items-center gap-2 text-sm font-medium w-full text-left",onClick:e[0]||(e[0]=t=>S.value=!o(S))},[l(X,{name:"i-lucide-sparkles",class:"text-primary"}),e[14]||(e[14]=u("span",null,"Paste from code (AI)",-1)),l(X,{name:o(S)?"i-lucide-chevron-up":"i-lucide-chevron-down",class:"ml-auto text-gray-400"},null,8,["name"])]),o(S)?(i(),m("div",ht,[e[15]||(e[15]=u("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," Paste a page-object method or helper function's source — the fields below are filled in from it, for you to review and edit before saving. Module and URL pattern aren't inferred; fill those in yourself. ",-1)),l(ee,{modelValue:o(y),"onUpdate:modelValue":e[1]||(e[1]=t=>W(y)?y.value=t:null),rows:8,placeholder:`async login(username: string, password: string) {
1
+ import{_ as Ae}from"./C9p0YCAi.js";import{_ as Re}from"./BTvE9qca.js";import{_ as Fe,a as Oe}from"./B_mN5eMV.js";import{d as De,u as Me,b as ze,w as le,e as Be,c as m,j as l,g as d,F as T,D as Le,h as M,o as i,i as u,k as o,f as w,y as z,t as h,s as qe,m as j,v as _,_ as He,l as K,p as We,E as Ke,r as f}from"./h49q_GXF.js";import{_ as Ge}from"./DHUT-BKj.js";import{_ as Je}from"./BVN50jIb.js";import{_ as Qe}from"./DLNNAYfu.js";import{_ as Ye}from"./CScusXhF.js";import{_ as Xe}from"./9N6hSApy.js";import{_ as Ze}from"./BKJetfRH.js";import{_ as et}from"./DDN2tt0a.js";import{_ as tt}from"./jjOqY9Tv.js";import{b as at,L as lt}from"./DWwiVTZX.js";import{u as ot}from"./Cf52zHyB.js";import{u as oe}from"./Cd8r0xk5.js";import{e as A}from"./CD3R-ggS.js";import"./BhH0TNTi.js";import"./BtSJxOdh.js";import"./BjaRappk.js";import"./CWoSSKhQ.js";import"./D4UlSVir.js";import"./xbO0VmDX.js";import"./DGnQ69wW.js";const nt={class:"p-4 space-y-4"},st={key:2,class:"divide-y divide-gray-200 dark:divide-gray-800"},rt={class:"min-w-0 space-y-1"},it={class:"flex items-center gap-2 flex-wrap"},ut={class:"font-mono text-sm font-medium"},dt={class:"text-xs text-gray-500 dark:text-gray-400 font-mono truncate"},ct={key:0},mt={class:"text-xs text-gray-500 dark:text-gray-400 truncate"},pt={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},ft={class:"flex items-center gap-1 shrink-0"},vt={class:"space-y-4"},gt={class:"border border-dashed border-gray-300 dark:border-gray-700 rounded-lg p-3 space-y-2"},ht={key:0,class:"space-y-2"},_t={class:"flex items-center gap-2 flex-wrap"},bt={key:1,class:"text-xs text-gray-500"},xt={key:1,class:"text-xs text-gray-500 dark:text-gray-400"},yt={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},kt={key:0,class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},wt={class:"space-y-2"},Vt={class:"space-y-2"},Pt={class:"text-xs text-gray-500 w-4"},Ct={class:"space-y-2"},Ut={class:"font-mono"},Zt=De({__name:"test-functions",async setup(It){let x,R;const P=Me().params.id,p=ze(),{aiStatus:ne}=ot(),{data:F}=([x,R]=le(()=>oe(`/api/projects/${P}`,"$hHDWk2vBQV")),x=await x,R(),x),{data:se,refresh:G,status:re}=([x,R]=le(()=>oe(`/api/projects/${P}/test-functions`,"$l0yitekV_H")),x=await x,R(),x);Be(M(()=>({title:`Test functions — ${F.value?.label||F.value?.name||"Project"} — Piwi Dashboard`})));const B=M(()=>se.value?.testFunctions??[]),ie=[{label:"Page-object method",value:"page-object-method"},{label:"Helper function",value:"helper"},{label:"Fixture",value:"fixture"}],ue=[{label:"string",value:"string"},{label:"number",value:"number"},{label:"boolean",value:"boolean"},{label:"object",value:"object"}],de=[{label:"goto",value:"goto"},{label:"click",value:"click"},{label:"fill",value:"fill"},{label:"check",value:"check"},{label:"uncheck",value:"uncheck"},{label:"selectOption",value:"selectOption"},{label:"press",value:"press"},{label:"assertVisible",value:"assertVisible"}],ce=[{label:"element text",value:"text"},{label:"field value",value:"value"},{label:"test id",value:"testId"}],V=f(!1),L=f(!1),C=f(null);function O(){return{name:"",kind:"page-object-method",module:"",receiver:"",importName:"",urlPattern:"",params:[],steps:[{action:"click",role:"",name:"",testId:""}],paramSources:[]}}const a=f(O()),S=f(!1),y=f(""),q=f(!1),U=f(!1),k=f(null),N=f(null),I=f(""),H=f(!1),J=M(()=>U.value&&k.value!=null&&k.value<lt),me=M(()=>new Set(a.value.params.filter(n=>n.type==="object"&&n.name.trim()).map(n=>n.name.trim())));function Q(){S.value=!1,y.value="",I.value="",U.value=!1,k.value=null,N.value=null}function pe(){a.value=O(),C.value=null,Q(),V.value=!0}function fe(n){const e=n.entry;a.value={name:e.name,kind:e.kind,module:e.module,receiver:e.receiver??"",importName:e.importName??"",urlPattern:e.urlPattern??"",params:e.params.map(s=>({name:s.name,type:s.type,fields:(s.fields??[]).join(", ")})),steps:e.steps.map(s=>({action:s.action,role:s.target.role??"",name:s.target.name??"",testId:s.target.testId??""})),paramSources:e.paramSources.map(s=>({param:s.param,path:s.path??"",stepIndex:s.stepIndex,from:s.from}))},a.value.steps.length===0&&(a.value.steps=O().steps),C.value=n.id,Q(),V.value=!0}function Y(n){a.value.name=n.name,a.value.kind=n.kind,a.value.receiver=n.receiver??"",a.value.importName=n.importName??"",a.value.params=n.params.map(e=>({name:e.name,type:e.type,fields:(e.fields??[]).join(", ")})),a.value.steps=n.steps.map(e=>({action:e.action,role:e.target.role??"",name:e.target.name??"",testId:e.target.testId??""})),a.value.steps.length===0&&(a.value.steps=O().steps),a.value.paramSources=n.paramSources.map(e=>({param:e.param,path:e.path??"",stepIndex:e.stepIndex,from:e.from})),U.value=!0,k.value=n.confidence,N.value=n.notes}async function ve(){if(!y.value.trim()){p.add({title:"Paste some function code first",color:"error"});return}q.value=!0;try{const{proposal:n}=await $fetch(`/api/projects/${P}/test-functions/extract`,{method:"POST",body:{code:y.value}});Y(n),p.add({title:"Extracted — review the fields below before saving",color:"success"})}catch(n){p.add({title:"Extraction failed",description:A(n),color:"error"})}finally{q.value=!1}}async function ge(){if(!y.value.trim()){p.add({title:"Paste some function code first",color:"error"});return}try{await navigator.clipboard.writeText(at(y.value)),p.add({title:"Prompt copied",description:"Paste it into your AI chat, then paste the reply below.",color:"success"})}catch(n){p.add({title:"Failed to copy the prompt",description:A(n),color:"error"})}}async function he(){if(!I.value.trim()){p.add({title:"Paste the AI response first",color:"error"});return}H.value=!0;try{const{proposal:n}=await $fetch(`/api/projects/${P}/test-functions/validate-proposal`,{method:"POST",body:{responseText:I.value}});Y(n),p.add({title:"Applied — review the fields below before saving",color:"success"})}catch(n){p.add({title:"Couldn't apply that response",description:A(n),color:"error"})}finally{H.value=!1}}function _e(){a.value.params.push({name:"",type:"string",fields:""})}function be(n){a.value.params.splice(n,1)}function xe(){a.value.steps.push({action:"click",role:"",name:"",testId:""})}function ye(n){a.value.steps.length<=1||a.value.steps.splice(n,1)}function ke(){a.value.paramSources.push({param:"",path:"",stepIndex:0,from:"value"})}function we(n){a.value.paramSources.splice(n,1)}async function Ve(){if(!a.value.name.trim()){p.add({title:"Name is required",color:"error"});return}if(!a.value.module.trim()){p.add({title:"Module is required",color:"error"});return}L.value=!0;const n={name:a.value.name.trim(),kind:a.value.kind,module:a.value.module.trim(),receiver:a.value.kind==="page-object-method"&&a.value.receiver.trim()||null,importName:a.value.kind==="page-object-method"&&a.value.importName.trim()||null,urlPattern:a.value.urlPattern.trim()||null,params:a.value.params.filter(s=>s.name.trim()).map(s=>({name:s.name.trim(),type:s.type,...s.type==="object"?{fields:s.fields.split(",").map(W=>W.trim()).filter(Boolean)}:{}})),steps:a.value.steps.map(s=>({action:s.action,target:{role:s.role.trim()||null,name:s.name.trim()||null,testId:s.testId.trim()||null}})),paramSources:a.value.paramSources.filter(s=>s.param.trim()).map(s=>({param:s.param.trim(),path:s.path.trim()||null,stepIndex:s.stepIndex,from:s.from})),source:U.value?"ai-extracted":void 0,confidence:U.value?k.value??void 0:void 0},e=C.value!=null;try{e?await $fetch(`/api/test-functions/${C.value}`,{method:"PUT",body:n}):await $fetch(`/api/projects/${P}/test-functions`,{method:"POST",body:n}),p.add({title:e?"Function updated":"Function added",color:"success"}),V.value=!1,await G()}catch(s){p.add({title:e?"Failed to update function":"Failed to add function",description:A(s),color:"error"})}finally{L.value=!1}}const D=f(null),E=f(!1);function Pe(n){D.value=n,E.value=!0}async function Ce(){const n=D.value;if(n){E.value=!1;try{await $fetch(`/api/test-functions/${n.id}`,{method:"DELETE"}),p.add({title:"Function removed",color:"success"}),await G()}catch(e){p.add({title:"Failed to remove function",description:A(e),color:"error"})}finally{D.value=null}}}function Ue(n){return n.entry.steps.map(e=>`${e.action}(${e.target.role??e.target.testId??e.target.name??"?"})`).join(" → ")}return(n,e)=>{const s=Ae,W=Re,Ie=Oe,c=He,$e=Ge,je=Je,X=qe,Se=Qe,Ne=Fe,Z=We,ee=Ye,Ee=Xe,v=Ke,b=Ze,$=et,te=tt,Te=Le;return i(),m(T,null,[l(Ne,{id:"project-test-functions"},{header:d(()=>[l(Ie,null,{leading:d(()=>[l(s),l(W,{items:[{label:"Home",icon:"i-lucide-house",to:"/"},{label:"Projects",to:"/projects"},{label:o(F)?.label||o(F)?.name||"Project",to:`/projects/${o(P)}`},{label:"Test functions"}]},null,8,["items"])]),_:1})]),body:d(()=>[u("div",nt,[l(Se,{title:"Test function catalog",icon:"i-lucide-function-square",count:o(B).length||null,subtitle:"Page-object methods and helpers the Piwi Picker extension matches a recording against, to generate calls to your own code instead of raw locator lines."},{actions:d(()=>[l(c,{label:"Add function",icon:"i-lucide-plus",size:"sm",onClick:pe})]),default:d(()=>[o(re)==="pending"?(i(),w($e,{key:0})):o(B).length===0?(i(),w(je,{key:1,icon:"i-lucide-function-square",text:"No functions registered yet — add one, or extract one from a recording in the extension."})):(i(),m("div",st,[(i(!0),m(T,null,z(o(B),t=>(i(),m("div",{key:t.id,class:"py-3 flex items-start justify-between gap-3"},[u("div",rt,[u("div",it,[u("span",ut,h(t.name),1),l(X,{color:"neutral",variant:"subtle",size:"sm"},{default:d(()=>[j(h(t.kind),1)]),_:2},1024),t.source!=="manual"?(i(),w(X,{key:0,color:"primary",variant:"subtle",size:"sm"},{default:d(()=>[j(h(t.source),1)]),_:2},1024)):_("",!0)]),u("div",dt,[j(h(t.module),1),t.receiver?(i(),m("span",ct,"#"+h(t.receiver),1)):_("",!0)]),u("div",mt,h(Ue(t)),1),t.urlPattern?(i(),m("div",pt,[e[13]||(e[13]=j(" on ",-1)),u("code",null,h(t.urlPattern),1)])):_("",!0)]),u("div",ft,[l(c,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"sm","aria-label":`Edit ${t.name}`,onClick:g=>fe(t)},null,8,["aria-label","onClick"]),l(c,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"sm","aria-label":`Remove ${t.name}`,onClick:g=>Pe(t)},null,8,["aria-label","onClick"])])]))),128))]))]),_:1},8,["count"])])]),_:1}),l(Te,null,{default:d(()=>[l(te,{open:o(V),"onUpdate:open":e[10]||(e[10]=t=>K(V)?V.value=t:null),title:o(C)==null?"Add test function":"Edit test function",ui:{content:"max-w-2xl"}},{body:d(()=>[u("div",vt,[u("div",gt,[u("button",{type:"button",class:"flex items-center gap-2 text-sm font-medium w-full text-left",onClick:e[0]||(e[0]=t=>S.value=!o(S))},[l(Z,{name:"i-lucide-sparkles",class:"text-primary"}),e[14]||(e[14]=u("span",null,"Paste from code (AI)",-1)),l(Z,{name:o(S)?"i-lucide-chevron-up":"i-lucide-chevron-down",class:"ml-auto text-gray-400"},null,8,["name"])]),o(S)?(i(),m("div",ht,[e[15]||(e[15]=u("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," Paste a page-object method or helper function's source — the fields below are filled in from it, for you to review and edit before saving. Module and URL pattern aren't inferred; fill those in yourself. ",-1)),l(ee,{modelValue:o(y),"onUpdate:modelValue":e[1]||(e[1]=t=>K(y)?y.value=t:null),rows:8,placeholder:`async login(username: string, password: string) {
2
2
  await this.page.getByRole('textbox', { name: 'Username' }).fill(username);
3
3
  await this.page.getByRole('textbox', { name: 'Password' }).fill(password);
4
4
  await this.page.getByRole('button', { name: 'Log in' }).click();
5
- }`,class:"w-full font-mono text-xs"},null,8,["modelValue"]),u("div",_t,[o(ne)?.configured?(i(),w(d,{key:0,label:"Extract",icon:"i-lucide-wand-2",size:"sm",loading:o(q),onClick:ve},null,8,["loading"])):_("",!0),l(d,{label:"Copy prompt for your own AI",icon:"i-lucide-clipboard-copy",size:"sm",color:"neutral",variant:"outline",onClick:ge}),o(U)&&!o(J)&&o(k)!=null?(i(),m("span",bt," Extracted at "+h(Math.round(o(k)*100))+"% confidence — review below before saving. ",1)):_("",!0)]),o(J)?(i(),w(Ne,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-triangle-alert",title:`Low confidence (${Math.round((o(k)??0)*100)}%) — check the pattern below carefully`,description:o(E)??"The extractor wasn't able to represent this function cleanly. Functions that branch on their arguments, loop, or call other helpers often can't be captured as a single fixed pattern — the fields below may be incomplete."},null,8,["title","description"])):o(E)?(i(),m("p",xt," Note: "+h(o(E)),1)):_("",!0),e[16]||(e[16]=u("p",{class:"text-xs text-gray-500 dark:text-gray-400 pt-1"}," No AI configured on this instance, or prefer to use your own? Copy the prompt above into any AI chat (ChatGPT, Claude.ai, an IDE assistant, …), then paste its reply here — this doesn't spend Piwi AI credits, it just parses and validates what you paste. ",-1)),l(ee,{modelValue:o(I),"onUpdate:modelValue":e[2]||(e[2]=t=>W(I)?I.value=t:null),rows:6,placeholder:"Paste the AI's JSON reply here…",class:"w-full font-mono text-xs"},null,8,["modelValue"]),l(d,{label:"Apply pasted response",icon:"i-lucide-check-check",size:"sm",color:"neutral",variant:"outline",loading:o(H),onClick:he},null,8,["loading"])])):_("",!0)]),u("div",yt,[l(b,{label:"Name",name:"name",required:"",help:"Becomes the called method/function name."},{default:c(()=>[l(v,{modelValue:o(a).name,"onUpdate:modelValue":e[3]||(e[3]=t=>o(a).name=t),placeholder:"e.g. addToCart",class:"w-full"},null,8,["modelValue"])]),_:1}),l(b,{label:"Kind",name:"kind"},{default:c(()=>[l($,{modelValue:o(a).kind,"onUpdate:modelValue":e[4]||(e[4]=t=>o(a).kind=t),items:ie,class:"w-full"},null,8,["modelValue"])]),_:1})]),l(b,{label:"Module",name:"module",required:"",help:"Import specifier, e.g. ./pages/CartPage"},{default:c(()=>[l(v,{modelValue:o(a).module,"onUpdate:modelValue":e[5]||(e[5]=t=>o(a).module=t),placeholder:"./pages/CartPage",class:"w-full"},null,8,["modelValue"])]),_:1}),o(a).kind==="page-object-method"?(i(),m("div",kt,[l(b,{label:"Receiver",name:"receiver",help:"Instance variable name, e.g. cartPage"},{default:c(()=>[l(v,{modelValue:o(a).receiver,"onUpdate:modelValue":e[6]||(e[6]=t=>o(a).receiver=t),placeholder:"cartPage",class:"w-full"},null,8,["modelValue"])]),_:1}),l(b,{label:"Class to import",name:"importName",help:"e.g. CartPage"},{default:c(()=>[l(v,{modelValue:o(a).importName,"onUpdate:modelValue":e[7]||(e[7]=t=>o(a).importName=t),placeholder:"CartPage",class:"w-full"},null,8,["modelValue"])]),_:1})])):_("",!0),l(b,{label:"URL pattern",name:"urlPattern",help:"Optional glob, e.g. **/cart — leave empty to match any page."},{default:c(()=>[l(v,{modelValue:o(a).urlPattern,"onUpdate:modelValue":e[8]||(e[8]=t=>o(a).urlPattern=t),placeholder:"**/cart",class:"w-full"},null,8,["modelValue"])]),_:1}),l(b,{label:"Parameters",help:"Use “object” for an options bag (e.g. { label }) and list its keys — generated calls then pass an object literal instead of a bare string."},{default:c(()=>[u("div",wt,[(i(!0),m(T,null,M(o(a).params,(t,g)=>(i(),m("div",{key:g,class:"flex items-center gap-2 flex-wrap"},[l(v,{modelValue:t.name,"onUpdate:modelValue":r=>t.name=r,placeholder:"param name",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l($,{modelValue:t.type,"onUpdate:modelValue":r=>t.type=r,items:ue,class:"w-32"},null,8,["modelValue","onUpdate:modelValue"]),t.type==="object"?(i(),w(v,{key:0,modelValue:t.fields,"onUpdate:modelValue":r=>t.fields=r,placeholder:"fields, comma-separated (e.g. label, testId)",class:"flex-1 min-w-40"},null,8,["modelValue","onUpdate:modelValue"])):_("",!0),l(d,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm",onClick:r=>be(g)},null,8,["onClick"])]))),128)),l(d,{label:"Add parameter",icon:"i-lucide-plus",color:"neutral",variant:"outline",size:"sm",onClick:_e})])]),_:1}),l(b,{label:"DOM pattern",required:"",help:"The ordered steps this function drives — matched against a recording."},{default:c(()=>[u("div",Vt,[(i(!0),m(T,null,M(o(a).steps,(t,g)=>(i(),m("div",{key:g,class:"flex items-center gap-2 flex-wrap"},[u("span",Pt,h(g+1)+".",1),l($,{modelValue:t.action,"onUpdate:modelValue":r=>t.action=r,items:ce,class:"w-36"},null,8,["modelValue","onUpdate:modelValue"]),l(v,{modelValue:t.role,"onUpdate:modelValue":r=>t.role=r,placeholder:"role (e.g. button)",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l(v,{modelValue:t.name,"onUpdate:modelValue":r=>t.name=r,placeholder:"accessible name",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l(v,{modelValue:t.testId,"onUpdate:modelValue":r=>t.testId=r,placeholder:"test id",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l(d,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm",disabled:o(a).steps.length<=1,onClick:r=>ye(g)},null,8,["disabled","onClick"])]))),128)),l(d,{label:"Add step",icon:"i-lucide-plus",color:"neutral",variant:"outline",size:"sm",onClick:xe})])]),_:1}),o(a).params.length>0?(i(),w(b,{key:1,label:"Parameter sources",help:"Where each argument's value comes from, at match time."},{default:c(()=>[u("div",Ct,[(i(!0),m(T,null,M(o(a).paramSources,(t,g)=>(i(),m("div",{key:g,class:"flex items-center gap-2 flex-wrap"},[l($,{modelValue:t.param,"onUpdate:modelValue":r=>t.param=r,items:o(a).params.filter(r=>r.name.trim()).map(r=>({label:r.name,value:r.name})),placeholder:"parameter",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue","items"]),o(me).has(t.param)?(i(),w(v,{key:0,modelValue:t.path,"onUpdate:modelValue":r=>t.path=r,placeholder:"field (e.g. label)",class:"w-40"},null,8,["modelValue","onUpdate:modelValue"])):_("",!0),l($,{modelValue:t.stepIndex,"onUpdate:modelValue":r=>t.stepIndex=r,items:o(a).steps.map((r,ae)=>({label:`step ${ae+1}`,value:ae})),class:"w-28"},null,8,["modelValue","onUpdate:modelValue","items"]),l($,{modelValue:t.from,"onUpdate:modelValue":r=>t.from=r,items:de,class:"w-36"},null,8,["modelValue","onUpdate:modelValue"]),l(d,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm",onClick:r=>we(g)},null,8,["onClick"])]))),128)),l(d,{label:"Add source",icon:"i-lucide-plus",color:"neutral",variant:"outline",size:"sm",onClick:ke})])]),_:1})):_("",!0)])]),footer:c(()=>[l(d,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[9]||(e[9]=t=>V.value=!1)}),l(d,{label:o(C)==null?"Add function":"Save changes",icon:"i-lucide-check",loading:o(L),onClick:Ve},null,8,["label","loading"])]),_:1},8,["open","title"]),l(te,{open:o(N),title:"Remove test function","onUpdate:open":e[12]||(e[12]=t=>N.value=t)},{body:c(()=>[u("p",null,[e[17]||(e[17]=j(" Remove ",-1)),u("code",Ut,h(o(z)?.name),1),e[18]||(e[18]=j(" from this project’s catalog? Recordings will stop matching against it and export raw locators instead. The function’s own source code is not touched. ",-1))])]),footer:c(()=>[l(d,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[11]||(e[11]=t=>N.value=!1)}),l(d,{color:"error",label:"Remove",icon:"i-lucide-trash-2",onClick:Ce})]),_:1},8,["open"])]),_:1})],64)}}});export{Xt as default};
5
+ }`,class:"w-full font-mono text-xs"},null,8,["modelValue"]),u("div",_t,[o(ne)?.configured?(i(),w(c,{key:0,label:"Extract",icon:"i-lucide-wand-2",size:"sm",loading:o(q),onClick:ve},null,8,["loading"])):_("",!0),l(c,{label:"Copy prompt for your own AI",icon:"i-lucide-clipboard-copy",size:"sm",color:"neutral",variant:"outline",onClick:ge}),o(U)&&!o(J)&&o(k)!=null?(i(),m("span",bt," Extracted at "+h(Math.round(o(k)*100))+"% confidence — review below before saving. ",1)):_("",!0)]),o(J)?(i(),w(Ee,{key:0,color:"warning",variant:"subtle",icon:"i-lucide-triangle-alert",title:`Low confidence (${Math.round((o(k)??0)*100)}%) — check the pattern below carefully`,description:o(N)??"The extractor wasn't able to represent this function cleanly. Functions that branch on their arguments, loop, or call other helpers often can't be captured as a single fixed pattern — the fields below may be incomplete."},null,8,["title","description"])):o(N)?(i(),m("p",xt," Note: "+h(o(N)),1)):_("",!0),e[16]||(e[16]=u("p",{class:"text-xs text-gray-500 dark:text-gray-400 pt-1"}," No AI configured on this instance, or prefer to use your own? Copy the prompt above into any AI chat (ChatGPT, Claude.ai, an IDE assistant, …), then paste its reply here — this doesn't spend Piwi AI credits, it just parses and validates what you paste. ",-1)),l(ee,{modelValue:o(I),"onUpdate:modelValue":e[2]||(e[2]=t=>K(I)?I.value=t:null),rows:6,placeholder:"Paste the AI's JSON reply here…",class:"w-full font-mono text-xs"},null,8,["modelValue"]),l(c,{label:"Apply pasted response",icon:"i-lucide-check-check",size:"sm",color:"neutral",variant:"outline",loading:o(H),onClick:he},null,8,["loading"])])):_("",!0)]),u("div",yt,[l(b,{label:"Name",name:"name",required:"",help:"Becomes the called method/function name."},{default:d(()=>[l(v,{modelValue:o(a).name,"onUpdate:modelValue":e[3]||(e[3]=t=>o(a).name=t),placeholder:"e.g. addToCart",class:"w-full"},null,8,["modelValue"])]),_:1}),l(b,{label:"Kind",name:"kind"},{default:d(()=>[l($,{modelValue:o(a).kind,"onUpdate:modelValue":e[4]||(e[4]=t=>o(a).kind=t),items:ie,class:"w-full"},null,8,["modelValue"])]),_:1})]),l(b,{label:"Module",name:"module",required:"",help:"Import specifier, e.g. ./pages/CartPage"},{default:d(()=>[l(v,{modelValue:o(a).module,"onUpdate:modelValue":e[5]||(e[5]=t=>o(a).module=t),placeholder:"./pages/CartPage",class:"w-full"},null,8,["modelValue"])]),_:1}),o(a).kind==="page-object-method"?(i(),m("div",kt,[l(b,{label:"Receiver",name:"receiver",help:"Instance variable name, e.g. cartPage"},{default:d(()=>[l(v,{modelValue:o(a).receiver,"onUpdate:modelValue":e[6]||(e[6]=t=>o(a).receiver=t),placeholder:"cartPage",class:"w-full"},null,8,["modelValue"])]),_:1}),l(b,{label:"Class to import",name:"importName",help:"e.g. CartPage"},{default:d(()=>[l(v,{modelValue:o(a).importName,"onUpdate:modelValue":e[7]||(e[7]=t=>o(a).importName=t),placeholder:"CartPage",class:"w-full"},null,8,["modelValue"])]),_:1})])):_("",!0),l(b,{label:"URL pattern",name:"urlPattern",help:"Optional glob, e.g. **/cart — leave empty to match any page."},{default:d(()=>[l(v,{modelValue:o(a).urlPattern,"onUpdate:modelValue":e[8]||(e[8]=t=>o(a).urlPattern=t),placeholder:"**/cart",class:"w-full"},null,8,["modelValue"])]),_:1}),l(b,{label:"Parameters",help:"Use “object” for an options bag (e.g. { label }) and list its keys — generated calls then pass an object literal instead of a bare string."},{default:d(()=>[u("div",wt,[(i(!0),m(T,null,z(o(a).params,(t,g)=>(i(),m("div",{key:g,class:"flex items-center gap-2 flex-wrap"},[l(v,{modelValue:t.name,"onUpdate:modelValue":r=>t.name=r,placeholder:"param name",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l($,{modelValue:t.type,"onUpdate:modelValue":r=>t.type=r,items:ue,class:"w-32"},null,8,["modelValue","onUpdate:modelValue"]),t.type==="object"?(i(),w(v,{key:0,modelValue:t.fields,"onUpdate:modelValue":r=>t.fields=r,placeholder:"fields, comma-separated (e.g. label, testId)",class:"flex-1 min-w-40"},null,8,["modelValue","onUpdate:modelValue"])):_("",!0),l(c,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm",onClick:r=>be(g)},null,8,["onClick"])]))),128)),l(c,{label:"Add parameter",icon:"i-lucide-plus",color:"neutral",variant:"outline",size:"sm",onClick:_e})])]),_:1}),l(b,{label:"DOM pattern",required:"",help:"The ordered steps this function drives — matched against a recording."},{default:d(()=>[u("div",Vt,[(i(!0),m(T,null,z(o(a).steps,(t,g)=>(i(),m("div",{key:g,class:"flex items-center gap-2 flex-wrap"},[u("span",Pt,h(g+1)+".",1),l($,{modelValue:t.action,"onUpdate:modelValue":r=>t.action=r,items:de,class:"w-36"},null,8,["modelValue","onUpdate:modelValue"]),l(v,{modelValue:t.role,"onUpdate:modelValue":r=>t.role=r,placeholder:"role (e.g. button)",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l(v,{modelValue:t.name,"onUpdate:modelValue":r=>t.name=r,placeholder:"accessible name",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l(v,{modelValue:t.testId,"onUpdate:modelValue":r=>t.testId=r,placeholder:"test id",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue"]),l(c,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm",disabled:o(a).steps.length<=1,onClick:r=>ye(g)},null,8,["disabled","onClick"])]))),128)),l(c,{label:"Add step",icon:"i-lucide-plus",color:"neutral",variant:"outline",size:"sm",onClick:xe})])]),_:1}),o(a).params.length>0?(i(),w(b,{key:1,label:"Parameter sources",help:"Where each argument's value comes from, at match time."},{default:d(()=>[u("div",Ct,[(i(!0),m(T,null,z(o(a).paramSources,(t,g)=>(i(),m("div",{key:g,class:"flex items-center gap-2 flex-wrap"},[l($,{modelValue:t.param,"onUpdate:modelValue":r=>t.param=r,items:o(a).params.filter(r=>r.name.trim()).map(r=>({label:r.name,value:r.name})),placeholder:"parameter",class:"flex-1 min-w-24"},null,8,["modelValue","onUpdate:modelValue","items"]),o(me).has(t.param)?(i(),w(v,{key:0,modelValue:t.path,"onUpdate:modelValue":r=>t.path=r,placeholder:"field (e.g. label)",class:"w-40"},null,8,["modelValue","onUpdate:modelValue"])):_("",!0),l($,{modelValue:t.stepIndex,"onUpdate:modelValue":r=>t.stepIndex=r,items:o(a).steps.map((r,ae)=>({label:`step ${ae+1}`,value:ae})),class:"w-28"},null,8,["modelValue","onUpdate:modelValue","items"]),l($,{modelValue:t.from,"onUpdate:modelValue":r=>t.from=r,items:ce,class:"w-36"},null,8,["modelValue","onUpdate:modelValue"]),l(c,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm",onClick:r=>we(g)},null,8,["onClick"])]))),128)),l(c,{label:"Add source",icon:"i-lucide-plus",color:"neutral",variant:"outline",size:"sm",onClick:ke})])]),_:1})):_("",!0)])]),footer:d(()=>[l(c,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[9]||(e[9]=t=>V.value=!1)}),l(c,{label:o(C)==null?"Add function":"Save changes",icon:"i-lucide-check",loading:o(L),onClick:Ve},null,8,["label","loading"])]),_:1},8,["open","title"]),l(te,{open:o(E),title:"Remove test function","onUpdate:open":e[12]||(e[12]=t=>E.value=t)},{body:d(()=>[u("p",null,[e[17]||(e[17]=j(" Remove ",-1)),u("code",Ut,h(o(D)?.name),1),e[18]||(e[18]=j(" from this project’s catalog? Recordings will stop matching against it and export raw locators instead. The function’s own source code is not touched. ",-1))])]),footer:d(()=>[l(c,{color:"neutral",variant:"ghost",label:"Cancel",onClick:e[11]||(e[11]=t=>E.value=!1)}),l(c,{color:"error",label:"Remove",icon:"i-lucide-trash-2",onClick:Ce})]),_:1},8,["open"])]),_:1})],64)}}});export{Zt as default};
@@ -1 +1 @@
1
- import{u}from"./rL4C0HV5.js";import{b as l,ao as f}from"./DCFbQvIN.js";import{e as w}from"./BAKUqW95.js";function p(r){let e="";for(let o=0;o<r.length;o+=32768)e+=String.fromCharCode(...r.subarray(o,o+32768));return btoa(e)}function y(){const r=u(),e=l();async function a(o,i,n={}){const s=f();if(!s){window.open(o,"_blank");return}try{const t=await fetch(o,{credentials:"include"});if(!t.ok)throw new Error(`Request failed (${t.status})`);const c=n.binary?p(new Uint8Array(await t.arrayBuffer())):await t.text(),d=await s.invoke("desktop_save_download",{filename:i,contents:c,encoding:n.binary?"base64":"utf8"});e.add({title:"Saved to Downloads",description:d,color:"success",icon:"i-lucide-download"})}catch(t){e.add({title:"Download failed",description:w(t),color:"error"})}}return{isDesktop:r,download:a}}export{y as u};
1
+ import{u}from"./BaDhDBCV.js";import{b as l,ao as f}from"./h49q_GXF.js";import{e as w}from"./CD3R-ggS.js";function p(r){let e="";for(let o=0;o<r.length;o+=32768)e+=String.fromCharCode(...r.subarray(o,o+32768));return btoa(e)}function y(){const r=u(),e=l();async function a(o,i,n={}){const s=f();if(!s){window.open(o,"_blank");return}try{const t=await fetch(o,{credentials:"include"});if(!t.ok)throw new Error(`Request failed (${t.status})`);const c=n.binary?p(new Uint8Array(await t.arrayBuffer())):await t.text(),d=await s.invoke("desktop_save_download",{filename:i,contents:c,encoding:n.binary?"base64":"utf8"});e.add({title:"Saved to Downloads",description:d,color:"success",icon:"i-lucide-download"})}catch(t){e.add({title:"Download failed",description:w(t),color:"error"})}}return{isDesktop:r,download:a}}export{y as u};
@@ -1 +1 @@
1
- import{d as a,o as t,c as n,t as o,R as s,q as c,aj as l}from"./DCFbQvIN.js";const r=a({__name:"TagBadge",props:{text:{},color:{},variant:{}},setup(e){return(i,m)=>(t(),n("span",{class:c(["tag-badge inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",e.variant==="outline"?"tag-badge--outline":""]),style:s({"--tag-color":e.color})},o(e.text),7))}}),p=Object.assign(l(r,[["__scopeId","data-v-58fcc931"]]),{__name:"TagBadge"});export{p as _};
1
+ import{d as a,o as t,c as n,t as o,R as s,q as c,aj as l}from"./h49q_GXF.js";const r=a({__name:"TagBadge",props:{text:{},color:{},variant:{}},setup(e){return(i,m)=>(t(),n("span",{class:c(["tag-badge inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",e.variant==="outline"?"tag-badge--outline":""]),style:s({"--tag-color":e.color})},o(e.text),7))}}),p=Object.assign(l(r,[["__scopeId","data-v-58fcc931"]]),{__name:"TagBadge"});export{p as _};