@vostride/agent-qa-dashboard-ui 0.1.17 → 0.1.19

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 (209) hide show
  1. package/dist/assets/{arrow-up-down-CwmMJuHC.js → arrow-up-down-B4k_G_pz.js} +1 -1
  2. package/dist/assets/badge-DHCU59H0.js +1 -0
  3. package/dist/assets/batch-action-bar-Dd_8W0p9.js +1 -0
  4. package/dist/assets/{circle-alert-RZI0g_tD.js → circle-alert-TPWM0719.js} +1 -1
  5. package/dist/assets/{circle-x-CcGlHxRU.js → circle-x-ITZ_DbXH.js} +1 -1
  6. package/dist/assets/config-DMv2WZOF.js +10 -0
  7. package/dist/assets/{copy-CWpai22Y.js → copy-D-NZb7QZ.js} +1 -1
  8. package/dist/assets/{cssMode-BB-fH2D6.js → cssMode-Ci86QdEV.js} +1 -1
  9. package/dist/assets/{display-step-nrAd20yH.js → display-step-CYKXUkbs.js} +1 -1
  10. package/dist/assets/dist-_gv57K8d.js +1 -0
  11. package/dist/assets/empty-state-3cB27tBp.js +1 -0
  12. package/dist/assets/{external-link-xaS9gsyo.js → external-link-DvyIDphy.js} +1 -1
  13. package/dist/assets/{eye-BmHDIr7J.js → eye-DkGk2gsF.js} +1 -1
  14. package/dist/assets/{file-code-B22xRpxi.js → file-code-DDa3GwxK.js} +1 -1
  15. package/dist/assets/{file-search-CeDGqauF.js → file-search-NMd1pdjr.js} +1 -1
  16. package/dist/assets/filename-validation-CaFIUcWo.js +1 -0
  17. package/dist/assets/{freemarker2-BZ9nT_ca.js → freemarker2-BAginoYi.js} +1 -1
  18. package/dist/assets/{grip-vertical-CJUfU7Zx.js → grip-vertical-MY-i_r9J.js} +1 -1
  19. package/dist/assets/{handlebars-CcFgORss.js → handlebars-C6jsxsLs.js} +1 -1
  20. package/dist/assets/hook-editor-Cjix8FD5.js +1 -0
  21. package/dist/assets/hook-runtime-DCkWsFrF.js +5 -0
  22. package/dist/assets/hook-viewer-Ca73H02j.js +1 -0
  23. package/dist/assets/hooks-3zdPj97l.js +1 -0
  24. package/dist/assets/{html-C5cEOw4y.js → html-Cyb0M0oP.js} +1 -1
  25. package/dist/assets/{htmlMode-B54wW7aG.js → htmlMode-DshMgI5s.js} +1 -1
  26. package/dist/assets/{id-badge-DO71VWC9.js → id-badge-CIlIhfqv.js} +2 -2
  27. package/dist/assets/index-Bu0wLCES.css +2 -0
  28. package/dist/assets/index-CWwAjH9Q.js +58 -0
  29. package/dist/assets/insights-_VG03kv7.js +1 -0
  30. package/dist/assets/{insights-line-grid-CJdb529A.js → insights-line-grid-eCcWaGgD.js} +5 -5
  31. package/dist/assets/{javascript-jZJvS0Ev.js → javascript-BsU_m_4o.js} +1 -1
  32. package/dist/assets/{jsonMode-BJu_sWuN.js → jsonMode-DUKNqYzB.js} +1 -1
  33. package/dist/assets/{lib-hhwTCYTD.js → lib-B4PNeU44.js} +1 -1
  34. package/dist/assets/{liquid-B0Wk3SRC.js → liquid-BYz2oQ7r.js} +1 -1
  35. package/dist/assets/live-run-CL1uuNh1.js +1 -0
  36. package/dist/assets/{lspLanguageFeatures-Bn8JS-MZ.js → lspLanguageFeatures-CPMJ3OMK.js} +1 -1
  37. package/dist/assets/{mdx-BE6dqG5T.js → mdx-Bfn3OASJ.js} +1 -1
  38. package/dist/assets/memory-CAPirlHn.js +1 -0
  39. package/dist/assets/memory-product-CBcChlmH.js +2 -0
  40. package/dist/assets/{monaco-editor-inner-C0PbrlIr.js → monaco-editor-inner-B2iWC3vK.js} +3 -3
  41. package/dist/assets/monaco-editor-q3UYuc-5.js +2 -0
  42. package/dist/assets/{monaco.contribution-Bq7keHQp.js → monaco.contribution-B-XUbmv5.js} +2 -2
  43. package/dist/assets/observation-block-DR8MBlgg.js +1 -0
  44. package/dist/assets/observation-markdown-BOJNfOw1.js +1 -0
  45. package/dist/assets/{pencil-Dga__f-A.js → pencil-DBjmgk_1.js} +1 -1
  46. package/dist/assets/plus-DWwmmJlz.js +1 -0
  47. package/dist/assets/popover-CuqW26_E.js +1 -0
  48. package/dist/assets/{python-DYEP_Px-.js → python-D7QiYvsM.js} +1 -1
  49. package/dist/assets/{razor-BARiZmvH.js → razor-ByxQWcvk.js} +1 -1
  50. package/dist/assets/{refresh-cw-Dhidp9m2.js → refresh-cw-BtT1wl9S.js} +1 -1
  51. package/dist/assets/resizable-C3bJVUPo.js +1 -0
  52. package/dist/assets/run-detail-Bo30AusG.js +1 -0
  53. package/dist/assets/runs-BDWggMSA.js +1 -0
  54. package/dist/assets/scroll-area-CPuygHdB.js +1 -0
  55. package/dist/assets/select-DF8sGWfv.js +1 -0
  56. package/dist/assets/shortcut-hints-CUbl8p3Z.js +1 -0
  57. package/dist/assets/split-button-BKCtgFiC.js +1 -0
  58. package/dist/assets/square-CEW9RAjr.js +1 -0
  59. package/dist/assets/step-name-pills-RalYL-ZJ.js +1 -0
  60. package/dist/assets/suite-editor-DMnWq7BC.js +5 -0
  61. package/dist/assets/suite-navbar-D9wliAeW.js +1 -0
  62. package/dist/assets/suite-viewer-D55qWO4b.js +1 -0
  63. package/dist/assets/suites-C02UROvF.js +1 -0
  64. package/dist/assets/switch-CgiZ-8Q1.js +1 -0
  65. package/dist/assets/tab-console-vamiKOKH.js +1 -0
  66. package/dist/assets/table-cLA2Rr2t.js +1 -0
  67. package/dist/assets/{tabs-C3NqUdx9.js → tabs-xxRH91gb.js} +1 -1
  68. package/dist/assets/test-editor-SQG9pODg.js +9 -0
  69. package/dist/assets/test-navbar-DGyMPxYJ.js +7 -0
  70. package/dist/assets/test-viewer-D3UUL8p1.js +1 -0
  71. package/dist/assets/tests-Dz-BuO2B.js +1 -0
  72. package/dist/assets/{tests-suites-table-widths-CPWjMEBc.js → tests-suites-table-widths-CAr7nQWt.js} +1 -1
  73. package/dist/assets/textarea-wN2tIsDn.js +1 -0
  74. package/dist/assets/{trash-2-sbLDCPlz.js → trash-2-B2a3jDA4.js} +1 -1
  75. package/dist/assets/{tsMode-BHB8FsID.js → tsMode-CPlGHPm6.js} +1 -1
  76. package/dist/assets/{typescript-BrDOgG8S.js → typescript-BAelS_Yl.js} +1 -1
  77. package/dist/assets/use-hook-run-session-RU-LfCyB.js +1 -0
  78. package/dist/assets/{use-keyboard-shortcuts-BM0qq0DE.js → use-keyboard-shortcuts-O6nfytzm.js} +1 -1
  79. package/dist/assets/use-page-title-C_f72ri7.js +1 -0
  80. package/dist/assets/use-run-status-favicon-CoVHCGAy.js +1 -0
  81. package/dist/assets/use-selection-queue-3FNZ4lRr.js +1 -0
  82. package/dist/assets/{viewer-url-state-BgjmiiI7.js → viewer-url-state-Dsu1DY22.js} +1 -1
  83. package/dist/assets/{workers-BbHjH3Kx.js → workers-Br5uqX4Z.js} +1 -1
  84. package/dist/assets/{xml-6YL6VXLw.js → xml-DB-ZrZ2e.js} +1 -1
  85. package/dist/assets/{yaml-sHG1-XNr.js → yaml-BeKBVxAt.js} +1 -1
  86. package/dist/assets/{zap-DwOV0Yov.js → zap-CHRkZMyJ.js} +1 -1
  87. package/dist/index.html +2 -2
  88. package/package.json +2 -2
  89. package/dist/assets/badge-D56AWxFv.js +0 -1
  90. package/dist/assets/batch-action-bar-DI05CPwy.js +0 -1
  91. package/dist/assets/config-BafxmOwJ.js +0 -10
  92. package/dist/assets/dist-CyWxUoCv.js +0 -1
  93. package/dist/assets/dist-DaacWHUX.js +0 -1
  94. package/dist/assets/dist-itgTE_D5.js +0 -1
  95. package/dist/assets/empty-state-DEbHhF9f.js +0 -1
  96. package/dist/assets/filename-validation-Dabe2ngK.js +0 -1
  97. package/dist/assets/hook-editor-CmPzPqnr.js +0 -1
  98. package/dist/assets/hook-runtime-D7L2zX15.js +0 -5
  99. package/dist/assets/hook-viewer-BvNgWI6w.js +0 -1
  100. package/dist/assets/hooks-C1lVbVNu.js +0 -1
  101. package/dist/assets/index-B5JVEaaS.css +0 -2
  102. package/dist/assets/index-C_HfATr4.js +0 -57
  103. package/dist/assets/insights-EjXDNx86.js +0 -1
  104. package/dist/assets/live-run-CnQOMMWG.js +0 -1
  105. package/dist/assets/memory-BSLWD6RW.js +0 -1
  106. package/dist/assets/memory-product-0B7_AV3X.js +0 -2
  107. package/dist/assets/monaco-editor-BYBlJAjA.js +0 -2
  108. package/dist/assets/observation-block-DvMkTmgC.js +0 -1
  109. package/dist/assets/observation-markdown-Bgcyet5t.js +0 -1
  110. package/dist/assets/plus-BhWnvE6F.js +0 -1
  111. package/dist/assets/popover-Boe1excX.js +0 -1
  112. package/dist/assets/resizable-o8j3Lihm.js +0 -1
  113. package/dist/assets/run-detail-CPo5ENE6.js +0 -1
  114. package/dist/assets/runs-CvH2p_Ks.js +0 -1
  115. package/dist/assets/scroll-area-B8cRs7wd.js +0 -1
  116. package/dist/assets/select-BE8tKMJy.js +0 -1
  117. package/dist/assets/shortcut-hints-BGIo5sip.js +0 -1
  118. package/dist/assets/split-button-CcR2TDPY.js +0 -1
  119. package/dist/assets/square-8TpalBCd.js +0 -1
  120. package/dist/assets/step-name-pills-0sDNmrmn.js +0 -1
  121. package/dist/assets/suite-editor-BUzpsLUR.js +0 -5
  122. package/dist/assets/suite-navbar-COFDYHho.js +0 -1
  123. package/dist/assets/suite-viewer-B62crjkX.js +0 -1
  124. package/dist/assets/suites-vH7UvBPg.js +0 -1
  125. package/dist/assets/switch-A6NW_YxI.js +0 -1
  126. package/dist/assets/tab-console-BXF3HNpW.js +0 -1
  127. package/dist/assets/table-D4kdbpq8.js +0 -1
  128. package/dist/assets/test-editor-BnD3gcCG.js +0 -9
  129. package/dist/assets/test-navbar-ZDxlwtJH.js +0 -7
  130. package/dist/assets/test-viewer-B-G8G6FH.js +0 -1
  131. package/dist/assets/tests-BcPHa9Nc.js +0 -1
  132. package/dist/assets/textarea-87HpNno6.js +0 -1
  133. package/dist/assets/use-hook-run-session-n1RKgcn6.js +0 -1
  134. package/dist/assets/use-page-title-CyHzJAcR.js +0 -1
  135. package/dist/assets/use-run-status-favicon-DTTz9_8q.js +0 -1
  136. package/dist/assets/use-selection-queue-CIpsCzay.js +0 -1
  137. /package/dist/assets/{abap-tccnpReA.js → abap-BEq1sfI-.js} +0 -0
  138. /package/dist/assets/{apex-BKVkKsbj.js → apex-B44QgtCx.js} +0 -0
  139. /package/dist/assets/{azcli-BRcTI6AW.js → azcli-DMZ9GGL6.js} +0 -0
  140. /package/dist/assets/{bat-CY1d4Jjr.js → bat-C9UmLmb8.js} +0 -0
  141. /package/dist/assets/{bicep--LouBhCq.js → bicep-DftblL_H.js} +0 -0
  142. /package/dist/assets/{cameligo-DSekJmSA.js → cameligo-CzLnGslK.js} +0 -0
  143. /package/dist/assets/{clojure-GBhsYY7r.js → clojure-ByLwyAQs.js} +0 -0
  144. /package/dist/assets/{coffee-9z_JJIkP.js → coffee-68kO868m.js} +0 -0
  145. /package/dist/assets/{cpp-D7LwQw_o.js → cpp-DzwB3t3R.js} +0 -0
  146. /package/dist/assets/{csharp-Df6S3RJJ.js → csharp-DYYXYf_U.js} +0 -0
  147. /package/dist/assets/{csp-AyuN80rc.js → csp-CM2i4rGd.js} +0 -0
  148. /package/dist/assets/{css-CYIs0S-t.js → css-DeSoHz_W.js} +0 -0
  149. /package/dist/assets/{cypher-CWTgbj6F.js → cypher-BKNyhJD3.js} +0 -0
  150. /package/dist/assets/{dart-BkjNQt7D.js → dart-BQc3JPCX.js} +0 -0
  151. /package/dist/assets/{dockerfile-jNxF4_km.js → dockerfile-BGxPbctm.js} +0 -0
  152. /package/dist/assets/{ecl-CybE3oEZ.js → ecl-CKjBzfQ2.js} +0 -0
  153. /package/dist/assets/{editor.api2-DEGvZ9jW.js → editor.api2-CX0IWJmc.js} +0 -0
  154. /package/dist/assets/{elixir-CdaOBnQZ.js → elixir-BBLR1E4J.js} +0 -0
  155. /package/dist/assets/{flow9-0HKoddfT.js → flow9-DZyS6Im9.js} +0 -0
  156. /package/dist/assets/{format-BpI4TiHn.js → format-Y_Dbfary.js} +0 -0
  157. /package/dist/assets/{fsharp-B4rCGS2D.js → fsharp-B_k18Kji.js} +0 -0
  158. /package/dist/assets/{go-BMkOAZO-.js → go-B5m-VPlE.js} +0 -0
  159. /package/dist/assets/{graphql-CT1i0Azo.js → graphql-B4NvZBRl.js} +0 -0
  160. /package/dist/assets/{hcl-Dqo24S10.js → hcl-CXiUP62m.js} +0 -0
  161. /package/dist/assets/{ini-B2qo6Bwi.js → ini-DIf6wU5x.js} +0 -0
  162. /package/dist/assets/{java-BIPaikgB.js → java-CpjOue3Z.js} +0 -0
  163. /package/dist/assets/{julia-DaOMlCPl.js → julia-dxHeF5LM.js} +0 -0
  164. /package/dist/assets/{kotlin-Bu1Cf0EE.js → kotlin-DRRSuc55.js} +0 -0
  165. /package/dist/assets/{less-CkzKMiAu.js → less-tNOoNPeH.js} +0 -0
  166. /package/dist/assets/{lexon-TKzNnbcT.js → lexon-zuaObGAE.js} +0 -0
  167. /package/dist/assets/{lua-6W3WJOvj.js → lua-BDGwBzPZ.js} +0 -0
  168. /package/dist/assets/{m3-B_B1XtJr.js → m3-FllEI98A.js} +0 -0
  169. /package/dist/assets/{markdown-LT3qFBoR.js → markdown-Dg9O28Mh.js} +0 -0
  170. /package/dist/assets/{marked.esm-Ba5AUJng.js → marked.esm-DGP46SGL.js} +0 -0
  171. /package/dist/assets/{mips-BuZ0JnPP.js → mips-BSEXxt-j.js} +0 -0
  172. /package/dist/assets/{msdax-BHMmXeIF.js → msdax-BUYxl4Gb.js} +0 -0
  173. /package/dist/assets/{mysql-B1RGnQ_F.js → mysql-CKjgZvko.js} +0 -0
  174. /package/dist/assets/{objective-c-CFGQUdp0.js → objective-c-CMAdlqWg.js} +0 -0
  175. /package/dist/assets/{pascal-Bunb0gdj.js → pascal-DnrBRw9P.js} +0 -0
  176. /package/dist/assets/{pascaligo-Ci9pazxY.js → pascaligo-DGZxRh0P.js} +0 -0
  177. /package/dist/assets/{perl-Brcsz0QG.js → perl-CKcCV5P6.js} +0 -0
  178. /package/dist/assets/{pgsql-BeM5icw2.js → pgsql-D117QWhR.js} +0 -0
  179. /package/dist/assets/{php-D_0c0usD.js → php-B7LpRV3v.js} +0 -0
  180. /package/dist/assets/{pla-BXJXsrLp.js → pla-75s5EwYc.js} +0 -0
  181. /package/dist/assets/{postiats-Bh7pQpS0.js → postiats-FKqEVO_y.js} +0 -0
  182. /package/dist/assets/{powerquery-17x2qNlN.js → powerquery-D2B9xeZA.js} +0 -0
  183. /package/dist/assets/{powershell-BK7CP1HA.js → powershell-DVyjSbmt.js} +0 -0
  184. /package/dist/assets/{protobuf-BIk_BSvx.js → protobuf-BBsLf-fq.js} +0 -0
  185. /package/dist/assets/{pug-AfVB1dqb.js → pug-CWV-ph9P.js} +0 -0
  186. /package/dist/assets/{qsharp-DdD7_Hjo.js → qsharp-QhIGXK1X.js} +0 -0
  187. /package/dist/assets/{r-BGqTutCA.js → r-BQomAm4N.js} +0 -0
  188. /package/dist/assets/{redis-Dlp6Na1w.js → redis-DzIifZp4.js} +0 -0
  189. /package/dist/assets/{redshift-i2kKyIGQ.js → redshift-C4TPhoa0.js} +0 -0
  190. /package/dist/assets/{restructuredtext-LmY6AGSd.js → restructuredtext-Dapr4eTe.js} +0 -0
  191. /package/dist/assets/{ruby-BxBoU2eR.js → ruby-BfU5yBGC.js} +0 -0
  192. /package/dist/assets/{rust-D9N2vQ1K.js → rust-BkuRlY3p.js} +0 -0
  193. /package/dist/assets/{sb-BLTMTQei.js → sb-C5vEAPYs.js} +0 -0
  194. /package/dist/assets/{scala-Ctl2an6m.js → scala-CUr1vafD.js} +0 -0
  195. /package/dist/assets/{scheme-DWYXU9Gm.js → scheme-wTgw6IJZ.js} +0 -0
  196. /package/dist/assets/{scss-Fo6PaAQp.js → scss-D_2qOFds.js} +0 -0
  197. /package/dist/assets/{shell-gQZQk28C.js → shell-CYPHnmAv.js} +0 -0
  198. /package/dist/assets/{solidity-np-sz1ji.js → solidity-Dg-teBwM.js} +0 -0
  199. /package/dist/assets/{sophia-Cpc3f9d7.js → sophia-BZcSzYf2.js} +0 -0
  200. /package/dist/assets/{sparql-BM_09I__.js → sparql-B198P2td.js} +0 -0
  201. /package/dist/assets/{sql-wg3M4gQ8.js → sql-DTwIGDsL.js} +0 -0
  202. /package/dist/assets/{st-CRbYFk1r.js → st-DRydv-vG.js} +0 -0
  203. /package/dist/assets/{swift-B8HA7HL5.js → swift-DsJ-FzuB.js} +0 -0
  204. /package/dist/assets/{systemverilog-Dm-upaoS.js → systemverilog-BfzGNA0B.js} +0 -0
  205. /package/dist/assets/{tcl-BroSe0zp.js → tcl-i-A18rYd.js} +0 -0
  206. /package/dist/assets/{twig-C-LV7gG6.js → twig-BcTx4v-O.js} +0 -0
  207. /package/dist/assets/{typespec-DxaoVH5m.js → typespec-C8pW8LGC.js} +0 -0
  208. /package/dist/assets/{vb-qvhMNncD.js → vb-DhhgAOPk.js} +0 -0
  209. /package/dist/assets/{wgsl-CZM87x1c.js → wgsl-CLi0cHxr.js} +0 -0
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{t}from"./use-page-title-CyHzJAcR.js";import{$ as n,A as r,B as i,C as a,D as o,E as s,F as c,G as l,H as u,I as d,J as f,K as p,L as m,M as h,N as g,O as _,P as v,Q as y,R as b,S as x,T as S,U as C,V as w,W as T,X as E,Y as D,Z as O,_ as k,_t as A,a as ee,at as j,b as M,bt as te,c as ne,ct as re,d as ie,dt as ae,et as oe,f as se,ft as N,g as ce,gt as le,h as ue,ht as de,i as fe,it as pe,j as P,k as me,l as he,lt as ge,m as _e,mt as ve,n as F,nt as ye,o as be,ot as I,p as xe,pt as Se,q as L,r as R,rt as Ce,s as we,st as Te,t as z,tt as Ee,u as De,ut as Oe,v as ke,vt as B,w as Ae,x as je,y as Me,yt as Ne,z as Pe}from"./insights-line-grid-CJdb529A.js";import{n as Fe,t as Ie}from"./scroll-area-B8cRs7wd.js";import{$n as Le,Hn as Re,J as ze,Kt as Be,Xt as Ve,Yn as He,at as Ue,dr as We,gr as Ge,ht as Ke,nr as qe,pr as Je,qt as V,t as Ye,tr as Xe}from"./index-C_HfATr4.js";import{a as Ze,i as H,n as Qe,o as $e,r as U,t as et}from"./table-D4kdbpq8.js";import{t as W}from"./format-BpI4TiHn.js";var G=e(Ge(),1),tt=new Set([`1d`,`7d`,`30d`,`all`]),nt=new Set([`test`,`suite`,`platform`]);function rt(e){let t=new URLSearchParams;return e.window!==`7d`&&t.set(`window`,e.window),e.breakdown!==`test`&&t.set(`breakdown`,e.breakdown),t}function it(){let[e,t]=Je(),n=e.get(`window`),r=tt.has(n)?n:`7d`,i=e.get(`breakdown`),a=nt.has(i)?i:`test`,o=(0,G.useMemo)(()=>({window:r,breakdown:a}),[r,a]);(0,G.useEffect)(()=>{let n=rt(o);e.toString()!==n.toString()&&t(n,{replace:!0})},[e,t,o]);let s=(0,G.useCallback)(e=>{t(rt({...o,...e}),{replace:!0})},[t,o]);return{window:r,breakdown:a,setWindow:(0,G.useCallback)(e=>s({window:e}),[s]),setBreakdown:(0,G.useCallback)(e=>s({breakdown:e}),[s])}}var at=e=>null;at.displayName=`Cell`;var ot=(e,t,n)=>{var i=Te();return(a,o)=>s=>{e?.(a,o,s),i(r({activeIndex:String(o),activeDataKey:t,activeCoordinate:a.tooltipPosition,activeGraphicalItemId:n}))}},st=e=>{var t=Te();return(n,r)=>i=>{e?.(n,r,i),t(_())}},ct=(e,t,n)=>{var r=Te();return(i,a)=>o=>{e?.(i,a,o),r(me({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},lt=(e,t,n)=>{var r=n??e;if(!ve(r))return ae(r,t,0)},ut=(e,t,n)=>{var r={},i=e.filter(d),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var[r,i]=e;return{stackId:r,dataKeys:i.map(e=>e.dataKey),barSize:lt(t,n,i[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:lt(t,n,e.barSize)}));return[...s,...c]};function dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?dt(Object(n),!0).forEach(function(t){ft(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function ft(e,t,n){return(t=pt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function pt(e){var t=mt(e,`string`);return typeof t==`symbol`?t:t+``}function mt(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ht(e,t,n,r,i){var a=r.length;if(!(a<1)){var o=ae(e,n,0,!0),s,c=[];if(j(r[0]?.barSize)){var l=!1,u=n/a,d=r.reduce((e,t)=>e+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:((n-d)/2>>0)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=ae(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m>>=0);var h=j(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var gt=(e,t,n,r,i,a,o)=>{var s=ve(o)?t:o,c=ht(n,r,i===a?a:i,e,s);return i!==a&&c!=null&&(c=c.map(e=>K(K({},e),{},{position:K(K({},e.position),{},{offset:e.position.offset-i/2})}))),c},_t=(e,t)=>{var n=m(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var i=e[r];if(i){var{stackedData:a}=i;if(a)return a.find(e=>e.key===n)}}}},vt=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function yt(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&j(e.zIndex)?e.zIndex:t}function q(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.xAxisId??0}function J(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.yAxisId??0}var bt=!0,xt=`Invariant failed`;function St(e,t){if(!e){if(bt)throw Error(xt);var n=typeof t==`function`?t():t,r=n?`${xt}: ${n}`:xt;throw Error(r)}}function Ct(){return Ct=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ct.apply(null,arguments)}function wt(e){return G.createElement(Me,Ct({shapeType:`rectangle`,activeClassName:`recharts-active-bar`,inActiveClassName:`recharts-inactive-bar`},e))}var Tt=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(de(e))return e;var i=de(n)||ve(n);return i?e(n,r):(!i&&St(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},Et=(e,t,n)=>n,Y=I([c,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),Dt=I([Y],e=>e?.maxBarSize),Ot=(e,t,n,r)=>r,kt=I([L,c,q,J,Et],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),At=(e,t,n)=>{var r=L(e),i=q(e,t),a=J(e,t);if(!(i==null||a==null))return r===`horizontal`?g(e,`yAxis`,a,n):g(e,`xAxis`,i,n)},jt=I([kt,w,(e,t)=>{var n=L(e),r=q(e,t),i=J(e,t);if(!(r==null||i==null))return n===`horizontal`?h(e,`xAxis`,r):h(e,`yAxis`,i)}],ut),Mt=(e,t,n)=>{var r=Y(e,t);if(r==null)return 0;var i=q(e,t),a=J(e,t);if(i==null||a==null)return 0;var o=L(e),s=u(e),{maxBarSize:c}=r,l=ve(c)?s:c,d,f;return o===`horizontal`?(d=P(e,`xAxis`,i,n),f=v(e,`xAxis`,i,n)):(d=P(e,`yAxis`,a,n),f=v(e,`yAxis`,a,n)),y(d,f,!0)??l??0},Nt=(e,t,n)=>{var r=L(e),i=q(e,t),a=J(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=P(e,`xAxis`,i,n),s=v(e,`xAxis`,i,n)):(o=P(e,`yAxis`,a,n),s=v(e,`yAxis`,a,n)),y(o,s)}},Pt=I([O,E,(e,t,n)=>{var r=q(e,t);if(r!=null)return P(e,`xAxis`,r,n)},(e,t,n)=>{var r=J(e,t);if(r!=null)return P(e,`yAxis`,r,n)},(e,t,n)=>{var r=q(e,t);if(r!=null)return v(e,`xAxis`,r,n)},(e,t,n)=>{var r=J(e,t);if(r!=null)return v(e,`yAxis`,r,n)},I([I([jt,u,i,Pe,Mt,Nt,Dt],gt),Y],vt),L,C,Nt,I([At,Y],_t),Y,Ot],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var{chartData:p,dataStartIndex:m,dataEndIndex:h}=c;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var{data:g}=d,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return mn({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}}),Ft=[`index`];function It(){return It=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},It.apply(null,arguments)}function Lt(e,t){if(e==null)return{};var n,r,i=Rt(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Rt(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var zt=(0,G.createContext)(void 0),Bt=e=>{var t=(0,G.useContext)(zt);if(t!=null)return t.stackId;if(e!=null)return Ee(e)},Vt=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,Ht=e=>{var t=(0,G.useContext)(zt);if(t!=null){var{stackId:n}=t;return`url(#${Vt(n,e)})`}},Ut=e=>{var{index:t}=e,n=Lt(e,Ft),r=Ht(t);return G.createElement(B,It({className:`recharts-bar-stack-layer`,clipPath:r},n))},Wt=[`onMouseEnter`,`onMouseLeave`,`onClick`],Gt=[`value`,`background`,`tooltipPosition`],Kt=[`id`],qt=[`onMouseEnter`,`onClick`,`onMouseLeave`];function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},X.apply(null,arguments)}function Jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Z(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Jt(Object(n),!0).forEach(function(t){Yt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Yt(e,t,n){return(t=Xt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Xt(e){var t=Zt(e,`string`);return typeof t==`symbol`?t:t+``}function Zt(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Q(e,t){if(e==null)return{};var n,r,i=Qt(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Qt(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var $t=e=>{var{dataKey:t,name:n,fill:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:ye(n,t),payload:e}]},en=G.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:i,name:a,hide:o,unit:s,tooltipType:c,id:l}=e,u={dataDefinedOnItem:void 0,getPosition:A,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:ye(a,t),hide:o,type:c,color:i,unit:s,graphicalItemId:l}};return G.createElement(ke,{tooltipEntrySettings:u})});function tn(e){var t=re(o),{data:n,dataKey:r,background:i,allOtherBarProps:a}=e,{onMouseEnter:s,onMouseLeave:c,onClick:l}=a,u=Q(a,Wt),d=ot(s,r,a.id),f=st(c),p=ct(l,r,a.id);if(!i||n==null)return null;var m=te(i);return G.createElement(S,{zIndex:yt(i,b.barBackground)},n.map((e,n)=>{var{value:a,background:o,tooltipPosition:s}=e,c=Q(e,Gt);if(!o)return null;var l=d(e,n),h=f(e,n),g=p(e,n),_=Z(Z(Z(Z(Z({option:i,isActive:String(n)===t},c),{},{fill:`#eee`},o),m),Oe(u,e,n)),{},{onMouseEnter:l,onMouseLeave:h,onClick:g,dataKey:r,index:n,className:`recharts-bar-background-rectangle`});return G.createElement(wt,X({key:`background-bar-${n}`},_))}))}function nn(e){var{showLabels:t,children:n,rects:r}=e,i=r?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return Z(Z({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return G.createElement(je,{value:t?i:void 0},n)}function rn(e){var{shape:t,activeBar:n,baseProps:r,entry:i,index:a,dataKey:c}=e,l=re(o),u=re(s),d=n&&String(i.originalDataIndex)===l&&(u==null||c===u),[f,p]=(0,G.useState)(!1),[m,h]=(0,G.useState)(!1);(0,G.useEffect)(()=>{var e;return d?(p(!0),e=requestAnimationFrame(()=>{h(!0)})):h(!1),()=>{cancelAnimationFrame(e)}},[d]);var g=(0,G.useCallback)(()=>{d||p(!1)},[d]),_=d&&m,v=d||f,y=d?n===!0?t:n:t,x=G.createElement(wt,X({},r,{name:String(r.name)},i,{isActive:_,option:y,index:a,dataKey:c,onTransitionEnd:g}));return v?G.createElement(S,{zIndex:b.activeBar},G.createElement(Ut,{index:i.originalDataIndex},x)):x}function an(e){var{shape:t,baseProps:n,entry:r,index:i,dataKey:a}=e;return G.createElement(wt,X({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a}))}function on(e){var{data:t,props:n}=e,r=Ne(n)??{},{id:i}=r,a=Q(r,Kt),{shape:o,dataKey:s,activeBar:c}=n,{onMouseEnter:l,onClick:u,onMouseLeave:d}=n,f=Q(n,qt),p=ot(l,s,i),m=st(d),h=ct(u,s,i);return t?G.createElement(G.Fragment,null,t.map((e,t)=>G.createElement(Ut,X({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},Oe(f,e,t),{onMouseEnter:p(e,t),onMouseLeave:m(e,t),onClick:h(e,t)}),c?G.createElement(rn,{shape:o,activeBar:c,baseProps:a,entry:e,index:t,dataKey:s}):G.createElement(an,{shape:o,baseProps:a,entry:e,index:t,dataKey:s})))):null}function sn(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,onAnimationEnd:u,onAnimationStart:d}=t,f=n.current,p=T(t,`recharts-bar-`),[m,h]=(0,G.useState)(!1),g=!m,_=(0,G.useCallback)(()=>{typeof u==`function`&&u(),h(!1)},[u]),v=(0,G.useCallback)(()=>{typeof d==`function`&&d(),h(!0)},[d]);return G.createElement(nn,{showLabels:g,rects:r},G.createElement(l,{animationId:p,begin:o,duration:s,isActive:a,easing:c,onAnimationEnd:_,onAnimationStart:v,key:p},e=>{var a=e===1?r:r?.map((t,n)=>{var r=f&&f[n];if(r)return Z(Z({},t),{},{x:N(r.x,t.x,e),y:N(r.y,t.y,e),width:N(r.width,t.width,e),height:N(r.height,t.height,e)});if(i===`horizontal`){var a=N(0,t.height,e),o=N(t.stackedBarStart,t.y,e);return Z(Z({},t),{},{y:o,height:a})}var s=N(0,t.width,e),c=N(t.stackedBarStart,t.x,e);return Z(Z({},t),{},{width:s,x:c})});return e>0&&(n.current=a??null),a==null?null:G.createElement(B,null,G.createElement(on,{props:t,data:a}))}),G.createElement(x,{label:t.label}),t.children)}function cn(e){var t=(0,G.useRef)(null);return G.createElement(sn,{previousRectanglesRef:t,props:e})}var ln=0,un=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:Ce(e,t)}},dn=class extends G.PureComponent{render(){var{hide:e,data:t,dataKey:n,className:r,xAxisId:i,yAxisId:a,needClip:o,background:s,id:c}=this.props;if(e||t==null)return null;var l=Le(`recharts-bar`,r),u=c;return G.createElement(B,{className:l,id:c},o&&G.createElement(`defs`,null,G.createElement(ie,{clipPathId:u,xAxisId:i,yAxisId:a})),G.createElement(B,{className:`recharts-bar-rectangles`,clipPath:o?`url(#clipPath-${u})`:void 0},G.createElement(tn,{data:t,dataKey:n,background:s,allOtherBarProps:this.props}),G.createElement(cn,this.props)))}},fn={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:ln,xAxisId:0,yAxisId:0,zIndex:b.bar};function pn(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u}=e,{needClip:d}=se(t,n),p=f(),m=D(),h=M(e.children,at),g=re(t=>Pt(t,e.id,m,h));if(p!==`vertical`&&p!==`horizontal`)return null;var _,v=g?.[0];return _=v==null||v.height==null||v.width==null?0:p===`vertical`?v.height/2:v.width/2,G.createElement(xe,{xAxisId:t,yAxisId:n,data:g,dataPointFormatter:un,errorBarOffset:_},G.createElement(dn,X({},e,{layout:p,needClip:d,data:g,xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u})))}function mn(e){var{layout:t,barSettings:{dataKey:r,minPointSize:i,hasCustomShape:a},pos:o,bandSize:s,xAxis:c,yAxis:l,xAxisTicks:u,yAxisTicks:d,stackedData:f,displayedData:p,offset:m,cells:h,parentViewBox:g,dataStartIndex:_}=e,v=t===`horizontal`?l:c,y=f?v.scale.domain():null,b=n({numericAxis:v}),x=v.scale.map(b);return p.map((e,n)=>{var p,v,S,C,w,T;if(f){var E=f[n+_];if(E==null)return null;p=pe(E,y)}else p=Ce(e,r),Array.isArray(p)||(p=[b,p]);var D=Tt(i,ln)(p[1],n);if(t===`horizontal`){var O=l.scale.map(p[0]),k=l.scale.map(p[1]);if(O==null||k==null)return null;v=oe({axis:c,ticks:u,bandSize:s,offset:o.offset,entry:e,index:n}),S=k??O??void 0,C=o.size;var A=O-k;if(w=Se(A)?0:A,T={x:v,y:m.top,width:C,height:m.height},Math.abs(D)>0&&Math.abs(w)<Math.abs(D)){var ee=le(w||D)*(Math.abs(D)-Math.abs(w));S-=ee,w+=ee}}else{var j=c.scale.map(p[0]),M=c.scale.map(p[1]);if(j==null||M==null)return null;if(v=j,S=oe({axis:l,ticks:d,bandSize:s,offset:o.offset,entry:e,index:n}),C=M-j,w=o.size,T={x:m.left,y:S,width:m.width,height:w},Math.abs(D)>0&&Math.abs(C)<Math.abs(D)){var te=le(C||D)*(Math.abs(D)-Math.abs(C));C+=te}}return v==null||S==null||C==null||w==null||!a&&(C===0||w===0)?null:Z(Z({},e),{},{stackedBarStart:x,x:v,y:S,width:C,height:w,value:f?p:p[1],payload:e,background:T,tooltipPosition:{x:v+C/2,y:S+w/2},parentViewBox:g,originalDataIndex:n},h&&h[n]&&h[n].props)}).filter(Boolean)}function hn(e){var t=ge(e,fn),n=Bt(t.stackId),r=D();return G.createElement(ce,{id:t.id,type:`bar`},e=>G.createElement(G.Fragment,null,G.createElement(k,{legendPayload:$t(t)}),G.createElement(en,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),G.createElement(ue,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),G.createElement(S,{zIndex:t.zIndex},G.createElement(pn,X({},t,{id:e})))))}var gn=G.memo(hn,p);gn.displayName=`Bar`;var _n=[`axis`,`item`],vn=(0,G.forwardRef)((e,t)=>G.createElement(ne,{chartName:`BarChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:_n,tooltipPayloadSearcher:Ae,categoricalChartProps:e,ref:t})),$=Xe(),yn={test:{title:`Test Breakdown`,label:`Test`},suite:{title:`Suite Breakdown`,label:`Suite`},platform:{title:`Platform Breakdown`,label:`Platform`}};function bn(e){return e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${Math.floor(e/6e4)}m ${Math.round(e%6e4/1e3)}s`}function xn(e){let t=e<=1?e*100:e;return Math.round(t*10)/10}function Sn(e,t){return e===`platform`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(U,{className:`px-4 py-2 font-medium`,children:t.label}),(0,$.jsx)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:t.runs}),(0,$.jsx)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:t.passed??0}),(0,$.jsx)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:t.failed??0}),(0,$.jsxs)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:[xn(t.passRate),`%`]})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(U,{className:`px-4 py-2 font-medium`,children:t.label}),(0,$.jsx)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:t.runs}),(0,$.jsxs)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:[xn(t.passRate),`%`]}),(0,$.jsxs)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:[xn(t.flakeRate),`%`]}),(0,$.jsx)(U,{className:`px-4 py-2 text-right font-mono tabular-nums`,children:bn(t.avgDuration)})]})}function Cn({dimension:e,rows:t,isRefreshing:n=!1}){let r=yn[e];return t.length===0?(0,$.jsx)(F,{children:(0,$.jsx)(R,{className:`px-4 py-6`,title:`No ${e} data in this window`,description:`Try another breakdown or widen the time window.`})}):(0,$.jsx)(F,{className:V(`overflow-hidden transition-opacity`,n&&`opacity-70`),"aria-busy":n||void 0,children:(0,$.jsxs)(Ie,{className:`w-full`,children:[(0,$.jsxs)(et,{children:[(0,$.jsx)(Ze,{children:(0,$.jsxs)($e,{className:`hover:bg-transparent`,children:[(0,$.jsx)(H,{className:`px-4`,children:r.label}),(0,$.jsx)(H,{className:`px-4 text-right`,children:`Runs`}),e===`platform`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(H,{className:`px-4 text-right`,children:`Passed`}),(0,$.jsx)(H,{className:`px-4 text-right`,children:`Failed`}),(0,$.jsx)(H,{className:`px-4 text-right`,children:`Pass Rate`})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(H,{className:`px-4 text-right`,children:`Pass Rate`}),(0,$.jsx)(H,{className:`px-4 text-right`,children:`Flake Rate`}),(0,$.jsx)(H,{className:`px-4 text-right`,children:`Avg Duration`})]})]})}),(0,$.jsx)(Qe,{children:t.map(t=>(0,$.jsx)($e,{className:`hover:bg-transparent`,children:Sn(e,t)},t.key))})]}),(0,$.jsx)(Fe,{orientation:`horizontal`})]})})}var wn={promptTokens:{label:`Input`,color:`var(--chart-1)`},completionTokens:{label:`Output`,color:`var(--chart-2)`}};function Tn(e){return new Intl.NumberFormat(`en-US`,{notation:`compact`,maximumFractionDigits:1}).format(e)}function En(e){let t=new Map;for(let n of e){let e=t.get(n.model)??{model:n.model,promptTokens:0,completionTokens:0};e.promptTokens+=n.promptTokens,e.completionTokens+=n.completionTokens,t.set(n.model,e)}return Array.from(t.values()).map(e=>({...e,totalTokens:e.promptTokens+e.completionTokens})).sort((e,t)=>t.totalTokens-e.totalTokens)}function Dn({active:e,payload:t,label:n}){if(!e||!t?.length)return null;let r=t.find(e=>e.dataKey===`promptTokens`)?.value??0,i=t.find(e=>e.dataKey===`completionTokens`)?.value??0,a=r+i;return(0,$.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl`,children:[(0,$.jsx)(`p`,{className:`mb-1 font-medium`,children:n??``}),(0,$.jsx)(`div`,{className:`grid gap-1`,children:[{label:`Input`,value:r,color:`var(--chart-1)`},{label:`Output`,value:i,color:`var(--chart-2)`},{label:`Total`,value:a,color:`var(--muted-foreground)`}].map(e=>(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(`div`,{className:`h-2.5 w-2.5 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:e.label})]}),(0,$.jsx)(`span`,{className:`font-mono font-medium tabular-nums`,children:W(e.value)})]},e.label))})]})}function On({data:e,className:t}){let n=En(e);return(0,$.jsx)(we,{config:wn,className:V(`h-[220px] w-full aspect-auto`,t),children:(0,$.jsxs)(vn,{data:n,layout:`vertical`,accessibilityLayer:!0,margin:{top:4,right:8,left:8,bottom:4},children:[(0,$.jsx)(_e,{horizontal:!1}),(0,$.jsx)(De,{type:`number`,tickFormatter:Tn,tickLine:!1,axisLine:!1}),(0,$.jsx)(he,{type:`category`,dataKey:`model`,tickLine:!1,axisLine:!1,width:96}),(0,$.jsx)(a,{content:(0,$.jsx)(Dn,{}),isAnimationActive:!1}),(0,$.jsx)(gn,{dataKey:`promptTokens`,fill:`var(--color-promptTokens)`,stackId:`tokens`,radius:[4,0,0,4],isAnimationActive:!1}),(0,$.jsx)(gn,{dataKey:`completionTokens`,fill:`var(--color-completionTokens)`,stackId:`tokens`,radius:[0,4,4,0],isAnimationActive:!1})]})})}function kn({title:e,description:t}){return(0,$.jsx)(R,{className:`min-h-48 px-5 py-6`,title:e,description:t})}function An(e){return e?e.byModel.some(e=>e.promptTokens>0||e.completionTokens>0):!1}function jn(e){return`${Math.round(e*100)}%`}function Mn(e){if(!e)return[];let t=new Map;for(let n of e.byModel){let e=t.get(n.model)??{model:n.model,promptTokens:0,completionTokens:0};e.promptTokens+=n.promptTokens,e.completionTokens+=n.completionTokens,t.set(n.model,e)}return Array.from(t.values()).map(e=>({...e,totalTokens:e.promptTokens+e.completionTokens})).sort((e,t)=>t.totalTokens-e.totalTokens)}function Nn({stats:e,tokenStats:t}){let n=e.memory,r=An(t),i=!!(n&&n.runs>0),a=Mn(t),o=(t?.totals.promptTokens??0)+(t?.totals.completionTokens??0),s=n?n.added+n.confirmed+n.deprecated:0,c=s>0?[{label:`Added`,value:n.added,color:`bg-[var(--chart-1)]`},{label:`Confirmed`,value:n.confirmed,color:`bg-[var(--chart-2)]`},{label:`Deprecated`,value:n.deprecated,color:`bg-[var(--chart-5)]`}]:[],l=t?.bySource[`test-run`],u=t?.bySource[`live-editor`];return(0,$.jsxs)(F,{className:`xl:grid-cols-2 xl:divide-x xl:divide-y-0 xl:items-stretch`,children:[r&&t?(0,$.jsxs)(z,{className:`flex h-full flex-col p-0`,children:[(0,$.jsxs)(`div`,{className:`border-b border-border px-5 py-5`,children:[(0,$.jsx)(`h2`,{className:`text-base font-semibold`,children:`Token Usage`}),(0,$.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Window-wide model activity, independent of the breakdown selector.`})]}),(0,$.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,$.jsxs)(`div`,{className:`grid gap-0 divide-y divide-border border-b border-border sm:grid-cols-3 sm:divide-x sm:divide-y-0`,children:[(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Total Tokens`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:W(o)})]}),(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Input`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:W(t.totals.promptTokens)})]}),(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Output`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:W(t.totals.completionTokens)})]})]}),(0,$.jsxs)(`div`,{className:`space-y-2 border-b border-border px-5 py-5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsx)(`p`,{className:`text-sm font-medium`,children:`By model`}),(0,$.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Input vs output across `,a.length,` active `,a.length===1?`model`:`models`]})]}),(0,$.jsx)(On,{data:t.byModel,className:`h-[200px]`})]}),(0,$.jsxs)(`div`,{className:`grid gap-0 divide-y divide-border sm:grid-cols-2 sm:divide-x sm:divide-y-0`,children:[(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Test Runs`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:W((l?.promptTokens??0)+(l?.completionTokens??0))})]}),(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Live Editor`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:W((u?.promptTokens??0)+(u?.completionTokens??0))})]})]})]})]}):(0,$.jsx)(kn,{title:`No token usage in this window`,description:`Token metrics appear after runs or live sessions use model calls.`}),i&&n?(0,$.jsxs)(z,{className:`flex h-full flex-col p-0`,children:[(0,$.jsxs)(`div`,{className:`border-b border-border px-5 py-5`,children:[(0,$.jsx)(`h2`,{className:`text-base font-semibold`,children:`Memory Curator`}),(0,$.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Observation activity and curator usage across the selected window.`})]}),(0,$.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,$.jsxs)(`div`,{className:`grid gap-0 divide-y divide-border border-b border-border sm:grid-cols-3 sm:divide-x sm:divide-y-0`,children:[(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Runs With Memory`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:n.runs})]}),(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Observations`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:s})]}),(0,$.jsxs)(`div`,{className:`px-4 py-3`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Curator Tokens`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:W(n.curatorTokens)})]})]}),(0,$.jsxs)(`div`,{className:`grid flex-1 gap-0 divide-y divide-border lg:grid-cols-2 lg:divide-x lg:divide-y-0`,children:[(0,$.jsxs)(`div`,{className:`px-4 py-4`,children:[(0,$.jsx)(`p`,{className:`text-sm font-medium`,children:`Observation Mix`}),c.length>0?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`mt-4 flex h-3 overflow-hidden rounded-full bg-muted`,children:c.map(e=>(0,$.jsx)(`div`,{className:e.color,style:{width:`${e.value===0?0:e.value/s*100}%`}},e.label))}),(0,$.jsx)(`div`,{className:`mt-4 space-y-2`,children:c.map(e=>(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-sm`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`size-2 rounded-full ${e.color}`}),(0,$.jsx)(`span`,{className:`text-muted-foreground`,children:e.label})]}),(0,$.jsx)(`span`,{className:`font-mono tabular-nums`,children:e.value})]},e.label))})]}):(0,$.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:`No observation mix is available in this window yet.`})]}),(0,$.jsxs)(`div`,{className:`px-4 py-4`,children:[(0,$.jsx)(`p`,{className:`text-sm font-medium`,children:`Curator Snapshot`}),(0,$.jsxs)(`div`,{className:`mt-4 grid gap-4 sm:grid-cols-2`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Added Share`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:s>0?jn(n.added/s):`0%`})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Tokens / Run`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:n.runs>0?W(Math.round(n.curatorTokens/n.runs)):`0`})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Confirmed`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:n.confirmed})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Deprecated`}),(0,$.jsx)(`p`,{className:`mt-1 text-xl font-semibold`,children:n.deprecated})]})]})]})]})]})]}):(0,$.jsx)(kn,{title:`No memory-curator activity in this window`,description:`Memory metrics appear after runs create or confirm observations.`})]})}var Pn=[{value:`1d`,label:`1D`},{value:`7d`,label:`7D`},{value:`30d`,label:`30D`},{value:`all`,label:`All Time`}],Fn=[{value:`test`,label:`Test`,title:`Test Breakdown`},{value:`suite`,label:`Suite`,title:`Suite Breakdown`},{value:`platform`,label:`Platform`,title:`Platform Breakdown`}];function In(e){let t=new Date;return t.setDate(t.getDate()-e),t.toISOString()}function Ln(e){let t=e<=1?e*100:e;return`${Math.round(t)}%`}function Rn(e){if(e!==`all`)return In(e===`1d`?1:e===`30d`?30:7)}function zn(){t(`Insights`);let e=We(),{window:n,breakdown:r,setWindow:i,setBreakdown:a}=it(),[o,s]=(0,G.useState)(null),[c,l]=(0,G.useState)(null),[u,d]=(0,G.useState)([]),[f,p]=(0,G.useState)(!1),[m,h]=(0,G.useState)(!1),[g,_]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(!1),[S,C]=(0,G.useState)(!1),[w,T]=(0,G.useState)(`all`);if((0,G.useEffect)(()=>{let e=!1;async function t(){let t=Rn(n),r=w===`scoped`?`passRate`:void 0;f&&_(!0);try{let[n,i]=await Promise.all([Ue({from:t,scope:r}),Ke({from:t})]);if(e)return;s(n),l(i),x(!1)}catch{if(e)return;f||(s(null),l(null)),x(!0)}finally{if(e)return;p(!0),_(!1)}}return t(),()=>{e=!0}},[n,w]),(0,G.useEffect)(()=>{let e=!1;async function t(){let t=Rn(n),i=w===`scoped`?`passRate`:void 0;m&&y(!0);try{let n=await ze(r,{from:t,limit:25,scope:i});if(e)return;d(n.rows),C(!1)}catch{if(e)return;m||d([]),C(!0)}finally{if(e)return;h(!0),y(!1)}}return t(),()=>{e=!0}},[n,r,w]),!f||!m)return(0,$.jsx)(Ye,{});let E=!!(o&&o.totalRuns>0),D=o&&o.totalRuns>0?Math.round(o.passed/o.totalRuns*100):0,O=Fn.find(e=>e.value===r)??Fn[0],k=o&&o.runs.length>0?Math.round(o.totalRuns/o.runs.length):0,A=b&&!o,j=n===`all`?`selected range`:`selected window`,M=o?.scope?.configured??!1,te=w===`scoped`&&M;return(0,$.jsxs)(`div`,{"data-insights-page-root":!0,className:`h-full min-h-0 overflow-y-auto p-4 md:p-6 space-y-6`,children:[(0,$.jsxs)(`header`,{className:`flex flex-col gap-4 md:flex-row md:items-start md:justify-between`,children:[(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,children:`Insights`}),(0,$.jsx)(`p`,{className:`max-w-2xl text-sm text-muted-foreground`,children:`Window-wide reliability, cost, and curator signals with a separate comparison section for tests, suites, and platforms.`})]}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 md:items-end`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:justify-end`,children:[M?(0,$.jsx)(`div`,{className:`inline-flex rounded border border-border p-0.5`,"aria-label":`Run scope`,children:[`scoped`,`all`].map(e=>(0,$.jsx)(Be,{type:`button`,size:`xs`,variant:w===e?`default`:`ghost`,"aria-pressed":w===e,className:`h-7 rounded-[2px] px-2 text-xs`,onClick:()=>T(e),children:e===`scoped`?`Scoped`:`All runs`},e))}):null,(0,$.jsx)(`div`,{className:`inline-flex rounded border border-border p-0.5`,"aria-label":`Time window`,children:Pn.map(e=>(0,$.jsx)(Be,{type:`button`,variant:n===e.value?`default`:`ghost`,size:`xs`,"aria-pressed":n===e.value,className:`h-7 rounded-[2px] px-2 text-xs`,onClick:()=>(0,G.startTransition)(()=>i(e.value)),children:e.label},e.value))})]}),g?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground md:justify-end`,children:[(0,$.jsx)(Re,{className:`size-3 animate-spin`}),(0,$.jsx)(`span`,{children:`Refreshing selected range`})]}):null]})]}),A?(0,$.jsx)(F,{className:`mt-6`,children:(0,$.jsx)(R,{title:`Insights unavailable`,description:`Refresh the page. If the problem continues, change the time window and verify analytics data is available.`})}):!E||!o?(0,$.jsx)(F,{className:`mt-6 min-h-[50vh]`,children:(0,$.jsxs)(z,{className:`flex min-h-[50vh] flex-col items-center justify-center text-center`,children:[(0,$.jsx)(He,{className:`mb-4 h-8 w-8 text-muted-foreground`}),(0,$.jsx)(`h3`,{className:`text-lg font-semibold`,children:`No runs in this window`}),(0,$.jsx)(`p`,{className:`mt-1 max-w-sm text-sm text-muted-foreground`,children:`Run or rerun tests to populate insights. If you expect older data, switch to 30D or All Time.`}),(0,$.jsx)(Be,{className:`mt-6`,onClick:()=>e(qe.runs),children:`Open Runs`})]})}):(0,$.jsxs)(`div`,{className:`mt-6 space-y-6`,children:[b?(0,$.jsx)(F,{className:`border-amber-500/30`,children:(0,$.jsx)(R,{description:`The latest refresh failed. Showing the previous ${j} instead.`})}):null,(0,$.jsxs)(`section`,{className:`space-y-4`,children:[(0,$.jsxs)(F,{className:`xl:grid-cols-[minmax(0,340px)_minmax(0,1fr)_minmax(0,1fr)] xl:divide-x xl:divide-y-0 xl:items-stretch`,children:[(0,$.jsx)(z,{className:`p-0`,children:(0,$.jsxs)(`div`,{className:`grid h-full auto-rows-fr gap-0 sm:grid-cols-2`,children:[(0,$.jsx)(fe,{className:`border-b border-border sm:border-r`,label:`Total Runs`,value:o.totalRuns.toLocaleString(),description:`${k} ${te?`scoped `:``}runs per active day in this ${n===`all`?`range`:`window`}.`}),(0,$.jsx)(fe,{className:`border-b border-border`,label:`Pass Rate`,value:`${D}%`,description:`${o.passed} successful ${te?`scoped `:``}runs out of ${o.totalRuns}.`}),(0,$.jsx)(fe,{className:`border-b border-border sm:border-b-0 sm:border-r`,label:`Avg Duration`,value:Ve(o.avgDuration),description:`Average runtime for completed runs in the selected range.`}),(0,$.jsx)(fe,{label:`Flake Rate`,value:Ln(o.flakeRate),description:`${o.failed} failed runs with healed/flaky behavior tracked separately.`})]})}),(0,$.jsxs)(z,{className:`h-full`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{className:`text-base font-semibold`,children:`Pass Rate`}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Trend for successful outcomes across the selected window.`})]}),(0,$.jsx)(be,{data:o.runs.map(e=>{let t=e.passed+e.failed;return{date:e.date,passRate:t>0?Math.round(e.passed/t*1e3)/10:0}}),className:V(`mt-4 h-[200px]`,g&&`opacity-70`)})]}),(0,$.jsxs)(z,{className:`h-full`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{className:`text-base font-semibold`,children:`Duration`}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Average run duration by day for the selected window.`})]}),(0,$.jsx)(ee,{data:o.runs.map(e=>({date:e.date,duration:e.duration})),className:V(`mt-4 h-[200px]`,g&&`opacity-70`)})]})]}),(0,$.jsx)(`div`,{className:V(`transition-opacity`,g&&`opacity-70`),children:(0,$.jsx)(Nn,{stats:o,tokenStats:c})})]}),(0,$.jsxs)(`section`,{className:`space-y-4`,children:[(0,$.jsxs)(F,{"data-insights-breakdown-block":!0,"aria-busy":v,className:`divide-y-0 lg:grid-cols-[minmax(0,1fr)_auto]`,children:[(0,$.jsxs)(z,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{className:`text-lg font-semibold`,children:O.title}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Compare reliability in a focused lower section so the overall window summary stays stable.`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[v?(0,$.jsx)(Re,{className:`size-3 animate-spin`}):null,(0,$.jsx)(`span`,{children:S?`Unable to refresh comparison. Showing previous results.`:v?`Updating comparison`:`${O.label} comparison`})]})]}),(0,$.jsxs)(z,{className:`space-y-2 lg:text-right`,children:[(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Break down by`}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2 lg:justify-end`,children:Fn.map(e=>(0,$.jsx)(Be,{variant:r===e.value?`default`:`outline`,size:`sm`,onClick:()=>(0,G.startTransition)(()=>a(e.value)),children:e.label},e.value))})]})]}),S&&u.length===0?(0,$.jsx)(F,{children:(0,$.jsx)(R,{title:`Breakdown unavailable`,children:(0,$.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Refresh the page or pick another window to reload the selected comparison.`})})}):(0,$.jsx)(Cn,{dimension:r,rows:u,isRefreshing:v})]})]})]})}export{zn as default};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{a as t,c as n,n as r,o as i,r as a,s as o,t as s}from"./use-run-status-favicon-DTTz9_8q.js";import{d as c}from"./tab-console-BXF3HNpW.js";import{t as l}from"./circle-x-CcGlHxRU.js";import{t as u}from"./square-8TpalBCd.js";import{t as d}from"./use-page-title-CyHzJAcR.js";import{C as f,Ct as ee,G as te,It as ne,Kn as re,Kt as p,Nt as m,Rn as ie,Zn as h,ar as g,dr as ae,et as _,fr as oe,gr as se,ir as v,lr as y,n as ce,nr as le,or as ue,qt as de,rr as b,sr as fe,tr as x}from"./index-C_HfATr4.js";import{t as S}from"./badge-D56AWxFv.js";import{n as pe,r as me,t as he}from"./resizable-o8j3Lihm.js";import{t as ge}from"./empty-state-DEbHhF9f.js";import{i as C,n as w,r as T}from"./display-step-nrAd20yH.js";var _e=h(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),ve=h(`radio`,[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),E=e(se(),1);function D(e=null){return R({runId:e,testInfo:null,steps:[],displaySteps:[],setupHooks:[],teardownHooks:[],inlineLogs:[],suiteTests:[],completedSteps:0,passedSteps:0,failedSteps:0,totalSteps:0,processedEventIds:[],stepNodes:[]})}function O(e){let t=e.runId??null,n=e.parentRunId??null,r=U(e);return t&&e.stepId?`step:${t}:${e.stepId}`:t&&typeof e.stepIndex==`number`?`step:${t}:index:${e.stepIndex}`:n&&r!==null&&e.stepId?`step:${n}:suite:${r}:step:${e.stepId}`:n&&r!==null&&typeof e.stepIndex==`number`?`step:${n}:suite:${r}:index:${e.stepIndex}`:n&&e.stepId?`step:${n}:${e.stepId}`:n&&typeof e.stepIndex==`number`?`step:${n}:index:${e.stepIndex}`:null}function ye(e){return`hook:${e.runId??e.parentRunId??`unknown-run`}:${e.hookExecutionId}`}function k(e,t){if(t.eventId&&e.processedEventIds.includes(t.eventId))return e;let n=t.eventId?{...e,processedEventIds:[...e.processedEventIds,t.eventId]}:e;switch(t.type){case`run-start`:return R({...n,runId:t.runId});case`test-start`:return A(n,t);case`test-complete`:return j(n,t);case`step-start`:return M(n,t);case`step-phase`:return N(n,t);case`step-complete`:return P(n,t);case`hook-start`:return F(n,t);case`hook-end`:return I(n,t);case`run-complete`:return L(n,t);case`run-error`:return L(n,{type:`run-complete`,runId:t.runId,status:`failed`,duration:0});default:return n}}function be(e,t){let n={...e},r=Te(t,e.suiteTests),i=t.run?.id??e.runId??null,a=[...t.steps??[],...(t.childRuns??[]).flatMap(e=>e.steps)];t.run&&(n={...n,runId:n.runId??t.run.id,finalStatus:t.run.status}),t.suiteTests&&(n={...n,suiteTests:t.suiteTests});for(let e of a){let t=r.get(e.runId)??null,a=n.stepNodes.findIndex(n=>n.runId&&n.runId!==e.runId?!1:n.runId===e.runId&&n.stepId&&n.stepId===e.id||n.runId===e.runId&&typeof n.stepIndex==`number`&&n.stepIndex===e.stepOrder||!n.runId&&i&&n.parentRunId===i&&t!==null&&U(n)===t&&(n.stepId&&n.stepId===e.id||typeof n.stepIndex==`number`&&n.stepIndex===e.stepOrder)?!0:!n.runId&&!n.parentRunId&&n.name===e.name&&n.status!==`running`),o=a>=0?n.stepNodes[a]:null,s=q(w(e),o),c=a>=0?n.stepNodes[a].key:`step:${e.runId}:index:${e.stepOrder}`,l={...a>=0?n.stepNodes[a]:{key:c,phases:[],phaseGroups:{},status:y(e.status)},key:c,runId:e.runId,stepId:e.id,stepIndex:e.stepOrder,name:e.name,status:y(e.status),duration:e.duration,error:e.error??void 0,display:s},u=[...n.stepNodes];a>=0?u[a]=l:u.push(l),n={...n,stepNodes:u}}let o=[...t.logs??[],...(t.childRuns??[]).flatMap(e=>e.logs??[])];if(o.length>0){let e=Y(n.setupHooks,o.filter(e=>e.phase===`setup`)),t=Y(n.teardownHooks,o.filter(e=>e.phase===`teardown`)),r=Y(n.inlineLogs,o.filter(e=>e.phase===`inline`));n={...n,setupHooks:e,teardownHooks:t,inlineLogs:r}}return R(n)}function A(e,t){let n={name:t.testName,filePath:t.filePath,totalSteps:t.totalSteps},r=e.suiteTests;if(t.parentRunId&&typeof t.suiteIndex==`number`){let e=ke(t),n=[...r];n[t.suiteIndex]=e,r=n.filter(Boolean)}return R({...e,runId:e.runId??t.parentRunId??t.runId,testInfo:n,suiteTests:r})}function j(e,t){if(!t.parentRunId||typeof t.suiteIndex!=`number`)return e;let n=[...e.suiteTests],r=n[t.suiteIndex];return r&&(n[t.suiteIndex]={...r,status:t.status,duration:t.duration,endedAt:new Date().toISOString()}),R({...e,suiteTests:n})}function M(e,t){let n=H(e,t),r=e.stepNodes.findIndex(e=>e.key===n),i={...r>=0?e.stepNodes[r]:{key:n,phases:[],phaseGroups:{}},key:n,runId:t.runId,parentRunId:t.parentRunId,suiteIndex:t.suiteIndex,testIndex:t.testIndex,stepIndex:t.stepIndex,stepId:t.stepId,testName:t.testName,name:t.stepName,status:`running`};return R({...e,stepNodes:J(e.stepNodes,r,i)})}function N(e,t){let n=V(e,t);if(n<0)return N(M(e,{...t,type:`step-start`,timestamp:t.timestamp}),t);let r=e.stepNodes[n],i={phase:t.phase,subActionIndex:t.subActionIndex,phaseOrdinal:t.phaseOrdinal,text:t.text,confidence:t.confidence,action:t.action,success:t.success,duration:t.duration,timestamp:t.timestamp},a=[...r.phases,i],o={...r.phaseGroups};typeof t.subActionIndex==`number`&&(o[t.subActionIndex]=[...o[t.subActionIndex]??[],i]);let s={...r,phases:a,phaseGroups:o,observation:t.phase===`observe`?t.text:r.observation,reasoning:t.phase===`plan`?t.text:r.reasoning,plannedAction:t.phase===`execute`?t.action:r.plannedAction,action:t.phase===`execute`?t.action:r.action,confidence:t.phase===`plan`?t.confidence??null:r.confidence};return R({...e,stepNodes:J(e.stepNodes,n,s)})}function P(e,t){let n=V(e,t),r=n>=0?e.stepNodes[n].key:H(e,t),i={...n>=0?e.stepNodes[n]:{key:r,phases:[],phaseGroups:{}},key:r,runId:t.runId,parentRunId:t.parentRunId,suiteIndex:t.suiteIndex,testIndex:t.testIndex,stepIndex:t.stepIndex,stepId:t.stepId,name:t.stepName,testName:t.testName,status:y(t.status),duration:t.duration,error:t.error,screenshot:t.screenshot,screenshotBefore:t.screenshotBefore,observation:t.observation,reasoning:t.reasoning,plannedAction:t.plannedAction,result:t.result,annotation:t.annotation??null};return R({...e,stepNodes:J(e.stepNodes,n,i)})}function F(e,t){return R(De(e,Ee(t,`running`),t.phase))}function I(e,t){return R(De(e,Ee(t,t.status),t.phase))}function L(e,t){let n=b(t.status);return R({...e,finalStatus:t.status,stepNodes:e.stepNodes.map(e=>e.status===`running`?{...e,status:n}:e)})}function R(e){let t=C(e.stepNodes.map(Se)),n=[...e.setupHooks.map(z),...e.stepNodes.map(xe),...e.teardownHooks.map(z)],r=t.filter(e=>![`pending`,`running`].includes(e.status)).length,i=t.filter(e=>[`passed`,`healed`,`flaky`].includes(e.status)).length,a=t.filter(e=>[`failed`,`cancelled`,`skipped`].includes(e.status)).length,o=e.testInfo?.totalSteps??t.length;return{...e,displaySteps:t,steps:n,completedSteps:r,passedSteps:i,failedSteps:a,totalSteps:o}}function z(e){return{id:e.id,kind:`hook`,hookPhase:e.phase,hookExecutionId:e.id,name:e.name,status:e.status,duration:e.duration,error:e.stderr??void 0}}function xe(e){return{id:e.key,kind:`step`,name:e.name,status:e.status,duration:e.duration,error:e.error,screenshot:e.screenshot,reasoning:e.reasoning,observation:e.observation,result:e.result,plannedAction:e.plannedAction,annotation:e.annotation??void 0,phases:e.phases}}function Se(e){if(e.display)return{...e.display,id:e.key,rawRunId:e.display.rawRunId??e.runId??null,runId:e.display.runId??e.runId??null};let t=B(e),n=t?.find(e=>!!(e.observation||e.reasoning||e.plannedAction!=null));return{id:e.key,name:e.name,status:e.status,duration:e.duration??0,subActionsData:t,originalStepName:null,variableSnapshot:null,screenshotPath:Oe(e.screenshot),screenshotBeforePath:Oe(e.screenshotBefore),annotationData:e.annotation??null,observation:e.observation??n?.observation??null,reasoning:e.reasoning??n?.reasoning??null,plannedAction:e.plannedAction??n?.plannedAction??null,action:e.action??e.plannedAction??n?.plannedAction??null,error:e.error??null,confidence:e.confidence??n?.confidence??null,runId:e.runId??null,stepOrder:e.stepIndex??0,consoleLogs:null,networkLogs:null,healingAttempts:null,screenContextBefore:null,screenContextAfter:null,rawRunId:e.runId??null,rawStepOrder:e.stepIndex??0,displayStepOrder:(e.stepIndex??0)+1,displayStepTotal:null}}function B(e){let t=Object.entries(e.phaseGroups);return t.length===0?T(e.phases):t.sort(([e],[t])=>Number(e)-Number(t)).map(([e,t])=>Ce(Number(e),t))}function Ce(e,t){let n=t.find(e=>e.phase===`observe`),r=t.find(e=>e.phase===`plan`),i=t.find(e=>e.phase===`execute`),a=t.find(e=>e.phase===`verify`);return{index:e,observation:n?.text??``,reasoning:r?.text??``,plannedAction:i?.action??null,result:a?a.success?`success`:`failure`:`in-progress`,error:void 0,screenStateBefore:``,cached:!1,confidence:r?.confidence,verifierReasoning:a?.text,phaseDurations:{observe:n?.duration,plan:r?.duration,execute:i?.duration,verify:a?.duration}}}function V(e,t){let n=O(t);if(n){let t=e.stepNodes.findIndex(e=>e.key===n);if(t>=0)return t}if(t.runId&&typeof t.stepIndex==`number`){let n=e.stepNodes.findIndex(e=>e.runId===t.runId&&e.stepIndex===t.stepIndex);if(n>=0)return n}let r=we(e.stepNodes,t);if(r>=0)return r;if(t.stepId){let n=e.stepNodes.findIndex(e=>e.stepId===t.stepId&&W(e,t));if(n>=0)return n}return e.stepNodes.findIndex(e=>e.name===t.stepName&&e.status===`running`&&W(e,t))}function H(e,t){let n=U(t),r=t.parentRunId&&n!==null?`${t.parentRunId}:suite:${n}`:t.runId??t.parentRunId??e.runId??`legacy`;return O(t)??`step:${r}:${t.stepName}:${e.stepNodes.length}`}function U(e){return typeof e.suiteIndex==`number`?e.suiteIndex:typeof e.testIndex==`number`?e.testIndex:null}function we(e,t){let n=U(t);return!t.parentRunId||n===null||typeof t.stepIndex!=`number`?-1:e.findIndex(e=>e.parentRunId===t.parentRunId&&U(e)===n&&e.stepIndex===t.stepIndex)}function W(e,t){if(t.runId&&e.runId&&e.runId!==t.runId||t.parentRunId&&e.parentRunId&&e.parentRunId!==t.parentRunId)return!1;let n=U(t),r=U(e);return!(n!==null&&r!==null&&n!==r)}function Te(e,t){let n=new Map;return t.forEach((e,t)=>G(n,e,t)),e.suiteTests?.forEach((e,t)=>G(n,e,t)),e.childRuns?.forEach((e,t)=>G(n,e.run,t)),n}function G(e,t,n){e.set(t.id,K(t)??e.get(t.id)??n)}function K(e){let t=e.metadata?.suiteIndex;if(typeof t==`number`)return t;if(typeof t==`string`&&t.trim()!==``){let e=Number(t);if(Number.isInteger(e))return e}return null}function q(e,t){if(!t||e.subActionsData)return e;let n=B(t);if(!n)return e;let r=n.find(e=>!!(e.observation||e.reasoning||e.plannedAction!=null));return{...e,subActionsData:n,observation:e.observation??t.observation??r?.observation??null,reasoning:e.reasoning??t.reasoning??r?.reasoning??null,plannedAction:e.plannedAction??t.plannedAction??r?.plannedAction??null,action:e.action??t.action??t.plannedAction??r?.plannedAction??null,confidence:e.confidence??t.confidence??r?.confidence??null}}function J(e,t,n){let r=[...e];return t>=0?r[t]=n:r.push(n),r}function Ee(e,t){return{id:ye(e),runId:e.runId??e.parentRunId??``,stepId:e.stepId??null,type:`logType`in e&&e.logType?e.logType:`hook`,name:e.hookName,hookId:e.hookId??null,phase:e.phase,status:t,duration:`duration`in e?e.duration:0,stdout:`stdout`in e?e.stdout??null:null,stderr:`stderr`in e?e.stderr??null:null,returnData:null,variables:`variables`in e?e.variables??null:null,createdAt:e.timestamp}}function De(e,t,n){return n===`setup`?{...e,setupHooks:Y(e.setupHooks,[t])}:n===`teardown`?{...e,teardownHooks:Y(e.teardownHooks,[t])}:{...e,inlineLogs:Y(e.inlineLogs,[t])}}function Y(e,t){let n=[...e];for(let e of t){let t=n.findIndex(t=>t.id===e.id||t.id.endsWith(`:${e.id}`));t>=0?n[t]={...n[t],...e,id:n[t].id}:n.push(e)}return n}function Oe(e){return e?e.startsWith(`data:image/`)||e.startsWith(`blob:`)||e.startsWith(`http://`)||e.startsWith(`https://`)?e:`data:image/png;base64,${e}`:null}function ke(e){let t=e.timestamp??new Date().toISOString();return{id:e.runId,name:e.testName,filePath:e.filePath,status:`running`,duration:0,attributes:{},environment:null,metadata:{suiteIndex:e.suiteIndex},startedAt:t,endedAt:null,videoPath:null,failureSummary:null,errorLog:null,memoryLog:null,testId:null,suiteId:e.parentRunId??null,platform:`unknown`,testFileContent:null,modelName:null,llmProvider:null,parentRunId:e.parentRunId??null,attemptNumber:1,retryCount:0,maxRetries:0,createdAt:t}}function Ae(e,t){let[n,r]=(0,E.useState)(()=>D(e)),[i,a]=(0,E.useState)(`idle`),[o,s]=(0,E.useState)(),[c,l]=(0,E.useState)(0),[u,d]=(0,E.useState)(),f=(0,E.useRef)(null),te=(0,E.useCallback)(e=>{r(t=>be(t,e))},[]);return(0,E.useEffect)(()=>{if(!e){a(`idle`);return}let n=!1;r(D(e)),s(void 0),d(void 0),l(0),a(`connecting`);let i=t?new Date(t).getTime():Date.now();l(Math.max(0,Math.floor((Date.now()-i)/1e3)));let o=setInterval(()=>{n||l(Math.max(0,Math.floor((Date.now()-i)/1e3)))},1e3),c=ee(e,{onRunStart:e=>{n||(a(`running`),r(t=>k(t,{type:`run-start`,runId:e.runId,status:e.status,eventId:e.eventId})))},onTestStart:e=>{n||r(t=>k(t,e))},onHookStart:e=>{n||r(t=>k(t,e))},onHookEnd:e=>{n||r(t=>k(t,e))},onStepStart:e=>{n||r(t=>k(t,e))},onStepComplete:e=>{n||r(t=>k(t,e))},onStepPhase:e=>{n||r(t=>k(t,e))},onRunComplete:e=>{if(!n){let t=v(e.status);a(`complete`),s(t.normalized),clearInterval(o),r(t=>k(t,e))}},onRunError:e=>{n||(a(`error`),d(e.error),clearInterval(o),r(t=>k(t,{type:`run-error`,...e})))}});return f.current=c,()=>{n=!0,clearInterval(o),c.close(),f.current=null}},[e,t]),{steps:n.steps,displaySteps:n.displaySteps,setupHooks:n.setupHooks,teardownHooks:n.teardownHooks,inlineLogs:n.inlineLogs,suiteTests:n.suiteTests,testInfo:n.testInfo,runStatus:i,finalStatus:o,elapsed:c,error:u,completedSteps:n.completedSteps,passedSteps:n.passedSteps,failedSteps:n.failedSteps,totalSteps:n.totalSteps,mergeFinalArtifacts:te}}var X=x();function je(e){let t=Math.floor(e/60),n=e%60;return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`}function Me({status:e,finalStatus:t}){if(e===`complete`&&t){let e=v(t);return(0,X.jsx)(S,{className:g(e.tone),children:e.label})}switch(e){case`connecting`:return(0,X.jsx)(S,{className:`border-amber-500/20 bg-amber-500/15 text-amber-500`,children:`Connecting...`});case`running`:return(0,X.jsx)(S,{className:`border-blue-500/20 bg-blue-500/15 text-blue-500`,children:`Running`});case`complete`:return(0,X.jsx)(S,{className:`border-emerald-500/20 bg-emerald-500/15 text-emerald-500`,children:`Complete`});case`error`:return(0,X.jsx)(S,{variant:`destructive`,children:`Error`});default:return(0,X.jsx)(S,{variant:`outline`,children:`Idle`})}}function Ne(e){return e?e.type===`step`?`step:${e.stepId}`:e.type===`subaction`?`sub:${e.stepId}:${e.subIndex}`:e.type===`execution`?`exec:${e.stepId}:${e.logId}`:e.type===`hook`?`hook:${e.hookId}`:e.type===`suite-hook`?`suite-hook:${e.phase}:${e.hookId}`:e.type===`test-hook`?`test-hook:${e.testIndex}:${e.phase}:${e.hookId}`:`test:${e.testIndex}`:null}function Pe(e,t){return e.stepId?e.stepId===t.id||t.id.endsWith(`:${e.stepId}`)?!0:t.rawRunId&&e.runId&&t.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===t.rawStepOrder:!1}function Fe(e,t,n,r){if(!e)return!1;if(e.type===`hook`)return n.some(t=>t.id===e.hookId);if(e.type===`execution`)return r.some(t=>t.id===e.logId);if(i(e)){let n=t.find(t=>t.id===e.stepId);return n?e.type===`subaction`?!!n.subActionsData?.[e.subIndex]:!0:!1}return!1}function Ie(e,t,n,r){let i=[...e].reverse().find(e=>e.status===`running`)??e.at(-1);if(i){let e=r.filter(e=>Pe(e,i)),t=[...e].reverse().find(e=>e.status===`running`)??e.at(-1);if(t)return{type:`execution`,stepId:i.id,logId:t.id};let n=i.subActionsData??[];return n.length>0?{type:`subaction`,stepId:i.id,subIndex:n.length-1}:{type:`step`,stepId:i.id}}let a=[...t,...n].at(-1);return a?{type:`hook`,hookId:a.id}:null}function Le(){d(`Live Run`);let{id:e}=oe(),ee=ae(),[h,g]=(0,E.useState)(null),[se,y]=(0,E.useState)(!1),[b,x]=(0,E.useState)(!1),[S,C]=(0,E.useState)(null),[w,T]=(0,E.useState)(!0),[D,O]=(0,E.useState)(`overview`),[ye,k]=(0,E.useState)(),be=(0,E.useRef)(null),{displaySteps:A,setupHooks:j,teardownHooks:M,inlineLogs:N,suiteTests:P,testInfo:F,runStatus:I,finalStatus:L,elapsed:R,error:z,completedSteps:xe,passedSteps:Se,failedSteps:B,totalSteps:Ce,mergeFinalArtifacts:V}=Ae(e??null,h?.startedAt),[H,U]=(0,E.useState)(!1);async function we(){if(!(b||!e)){x(!0);try{await f(e),m.success(`Run cancelled`)}catch{m.error(`Failed to cancel run`)}finally{x(!1)}}}(0,E.useEffect)(()=>{if(!e)return;let t=!1;return g(null),U(!1),y(!0),_(e).then(e=>{t||g(e.run)}).catch(e=>{let n=e instanceof Error&&e.message.includes(`404`);!t&&!n&&m.error(`Failed to load run details`)}).finally(()=>{t||y(!1)}),()=>{t=!0}},[e]);let W=!!(h&&fe(h.status));(0,E.useEffect)(()=>{if(!e||H||!(I===`complete`||I===`error`||W))return;let t=!1;async function n(){try{let[n,r]=await Promise.all([_(e),te(e).catch(()=>({logs:[]}))]);if(t)return;let i=[];if(n.tests&&n.tests.length>0)for(let e of n.tests)try{let n=await _(e.id);if(t)return;i.push({run:n.run,steps:n.steps})}catch{i.push({run:e,steps:[]})}V({run:n.run,steps:n.steps,logs:r.logs,suiteTests:n.tests,childRuns:i}),g(n.run),U(!0)}catch{t||U(!0)}}return n(),()=>{t=!0}},[W,H,e,V,I]);let Te=L?s(L):h&&W?s(h.status):I===`error`?`failed`:I===`connecting`||I===`running`?`running`:`default`;r(e?Te:`default`);let G=(0,E.useMemo)(()=>[...j,...M],[j,M]),K=(0,E.useMemo)(()=>Ie(A,j,M,N),[A,N,j,M]),q=Ne(K),J=Ne(S);(0,E.useEffect)(()=>{if(!K){S&&C(null);return}if(w||!S){J!==q&&C(K);return}if(!Fe(S,A,G,N)){let e=i(S)?A.find(e=>e.id===S.stepId):null;C(e?{type:`step`,stepId:e.id}:K)}},[G,J,A,N,w,q,K,S]);let Ee=(0,E.useCallback)(e=>{T(!1),C(e)},[]),De=(0,E.useCallback)(()=>{T(!0),K&&C(K)},[K]),Y=(0,E.useMemo)(()=>i(S)?A.find(e=>e.id===S.stepId)??null:null,[A,S]),Oe=(0,E.useMemo)(()=>!o(S)||!Y?null:Y.subActionsData?.[S.subIndex]??null,[S,Y]),ke=(0,E.useMemo)(()=>Y?N.filter(e=>Pe(e,Y)):[],[N,Y]),Le=(0,E.useMemo)(()=>S?.type===`hook`?G.find(e=>e.id===S.hookId)??null:null,[G,S]),Re=(0,E.useMemo)(()=>S?.type===`execution`?N.find(e=>e.id===S.logId)??null:null,[N,S]);if(!e)return(0,X.jsx)(ge,{icon:ve,title:`No run selected`,description:`Select a test run to watch live execution`});if(I===`idle`&&se)return(0,X.jsx)(ce,{});let Z=!!(W&&!L&&I!==`running`),ze=F?.name??h?.name??`Test Run`,Be=F?.filePath??h?.filePath??void 0,Q=Ce||A.length,Ve=xe||A.filter(e=>![`pending`,`running`].includes(e.status)).length,He=Q>0?Math.round(Ve/Q*100):0,Ue=(I===`running`||I===`connecting`)&&!Z,We=I===`complete`||I===`error`||Z,$=v(L??h?.status),Ge=!!(L||Z),Ke=A.length>0||j.length>0||M.length>0,qe=P.length>0?`all`:void 0;return(0,X.jsx)(ne,{children:(0,X.jsxs)(`div`,{className:`flex h-screen min-w-0 flex-col overflow-hidden`,children:[(0,X.jsxs)(`div`,{className:`flex h-14 shrink-0 items-center justify-between border-b px-3`,children:[(0,X.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,X.jsx)(ve,{className:de(`h-4 w-4 shrink-0`,Ue&&`animate-pulse text-blue-500`,We&&`text-muted-foreground`)}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`h2`,{className:`text-base font-semibold leading-tight`,children:`Live Execution`}),(0,X.jsx)(Me,{status:Z?`complete`:I,finalStatus:L??h?.status})]}),(0,X.jsxs)(`div`,{className:`min-w-0 truncate text-xs text-muted-foreground`,children:[(0,X.jsx)(`span`,{className:`font-medium text-foreground`,children:ze}),Be&&(0,X.jsx)(`span`,{className:`ml-2`,children:Be})]})]})]}),(0,X.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,X.jsx)(p,{variant:`ghost`,size:`sm`,onClick:De,disabled:!K||w,className:`h-7 px-2 text-xs`,children:`Latest`}),Ue&&(0,X.jsxs)(p,{variant:`ghost`,size:`sm`,onClick:we,disabled:b,className:`h-7 px-2 text-xs text-muted-foreground transition-colors hover:bg-red-500/10 hover:text-red-400`,children:[(0,X.jsx)(l,{className:`size-3.5`}),b?`Cancelling...`:`Cancel`]}),(0,X.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-sm text-muted-foreground`,children:[(0,X.jsx)(c,{className:`h-3.5 w-3.5`}),je(R)]}),(0,X.jsxs)(p,{variant:`outline`,size:`sm`,onClick:()=>ee(le.runDetail(e)),className:`h-7 px-2 text-xs`,children:[`View Full Results`,(0,X.jsx)(_e,{className:`ml-1 h-3.5 w-3.5`})]})]})]}),(0,X.jsxs)(`div`,{className:`shrink-0 border-b px-3 py-2`,children:[Q>0?(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-muted-foreground`,children:[(0,X.jsxs)(`span`,{children:[`Step `,Ve,` of `,Q]}),(0,X.jsxs)(`span`,{children:[He,`%`]})]}),(0,X.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-muted`,children:(0,X.jsx)(`div`,{className:de(`h-full rounded-full transition-all duration-300`,I===`error`||Ge&&$.tone===`danger`?`bg-destructive`:Ge&&$.tone===`muted`?`bg-muted-foreground`:`bg-emerald-500`),style:{width:`${He}%`}})})]}):null,I===`error`&&z?(0,X.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 rounded-[2px] bg-destructive/10 p-2 text-destructive`,children:[(0,X.jsx)(ie,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,X.jsxs)(`div`,{className:`text-sm`,children:[(0,X.jsx)(`p`,{className:`font-medium`,children:`Run Error`}),(0,X.jsx)(`p`,{className:`mt-1 text-xs`,children:z})]})]}):Ge?(0,X.jsxs)(`div`,{className:`mt-2 flex items-center gap-4 text-sm`,children:[(0,X.jsxs)(`span`,{className:de(`flex items-center gap-1.5 font-medium`,ue($.tone)),children:[$.normalized===`passed`?(0,X.jsx)(re,{className:`h-4 w-4`}):$.normalized===`cancelled`?(0,X.jsx)(u,{className:`h-4 w-4`}):$.normalized===`flaky`||$.normalized===`healed`?(0,X.jsx)(ie,{className:`h-4 w-4`}):(0,X.jsx)(l,{className:`h-4 w-4`}),$.label]}),A.length>0&&(0,X.jsxs)(`span`,{className:`text-muted-foreground`,children:[Se,` passed, `,B,` failed`]})]}):null]}),(0,X.jsxs)(me,{orientation:`horizontal`,className:`min-h-0 flex-1 overflow-hidden`,children:[(0,X.jsx)(pe,{defaultSize:35,minSize:20,children:(0,X.jsx)(`div`,{className:`flex h-full min-h-0 min-w-[280px] flex-col overflow-y-auto`,children:Ke?(0,X.jsx)(t,{steps:A,selection:S,onSelect:Ee,suiteTests:P.length>0?P:void 0,suiteSelectedView:qe,setupHooks:j,teardownHooks:M,inlineLogs:N}):(0,X.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Waiting for live events...`})})}),(0,X.jsx)(he,{withHandle:!0}),(0,X.jsx)(pe,{defaultSize:65,minSize:30,children:(0,X.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:S?.type===`hook`&&Le?(0,X.jsx)(n,{log:Le}):S?.type===`execution`&&Re?(0,X.jsx)(n,{log:Re}):(0,X.jsx)(a,{activeTab:D,onTabChange:O,step:Y,subAction:Oe,runId:Y?.rawRunId??e,allSteps:A,executionLogs:ke,platform:h?.platform,screenshotSide:ye,onScreenshotSideChange:e=>k(e),pipelineRef:be})})})]})]})})}export{Le as default};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{n as t,r as n}from"./shortcut-hints-BGIo5sip.js";import{t as r}from"./use-page-title-CyHzJAcR.js";import{t as i}from"./scroll-area-B8cRs7wd.js";import{Ft as a,Gt as o,It as s,Jt as c,Kt as l,Lt as u,Pt as d,X as f,Xn as p,Yt as m,a as h,dr as g,gr as _,nr as v,qt as y,tr as b}from"./index-C_HfATr4.js";import{a as x,i as S,n as C,o as w,r as T,t as E}from"./table-D4kdbpq8.js";import{t as D}from"./empty-state-DEbHhF9f.js";import{t as O}from"./use-keyboard-shortcuts-BM0qq0DE.js";var k=e(_(),1),A=b(),j=3,M={scope:`9rem`,source:`8rem`,lastConfirmed:`9rem`};function N(){r(`Memory`);let e=g(),[t,n]=(0,k.useState)([]),[_,y]=(0,k.useState)(!0),[b,j]=(0,k.useState)(!1),[N,B]=(0,k.useState)(``),[V,H]=(0,k.useState)(-1),U=(0,k.useRef)([]),W=(0,k.useCallback)(()=>{let e=!1;return y(!0),j(!1),f().then(t=>{e||n(t.products)}).catch(()=>{e||(n([]),j(!0))}).finally(()=>{e||y(!1)}),()=>{e=!0}},[]);(0,k.useEffect)(()=>W(),[W]);let G=(0,k.useMemo)(()=>{let e=N.trim().toLowerCase();return e?t.filter(t=>t.productKey.toLowerCase().includes(e)):t},[t,N]),K=(0,k.useCallback)(e=>{B(e),H(-1)},[]),q=(0,k.useCallback)((t,n)=>{n&&n.preventDefault(),e(v.memoryProduct(t.productKey))},[e]);return O((0,k.useMemo)(()=>{let t=()=>H(e=>Math.min(e+1,G.length-1)),n=()=>H(e=>Math.max(e-1,0));return{j:t,arrowdown:t,k:n,arrowup:n,enter:t=>{if(V<0||!G[V])return;let n=G[V],r=v.memoryProduct(n.productKey);if(t.metaKey||t.ctrlKey){window.open(r,`_blank`);return}e(r)}}},[G,e,V])),(0,k.useEffect)(()=>{if(V<0)return;let e=U.current[V];e&&document.activeElement!==e&&e.focus()},[V,G.length]),_?(0,A.jsx)(h,{}):b?(0,A.jsxs)(`div`,{className:`space-y-4`,children:[(0,A.jsx)(P,{}),(0,A.jsxs)(`div`,{className:`rounded-md border bg-card p-4`,children:[(0,A.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Couldn't load memory. Refresh the page. If it continues, verify the dashboard server can read the workspace memory directory.`}),(0,A.jsx)(l,{className:`mt-4`,variant:`outline`,onClick:W,children:`Refresh`})]})]}):t.length===0?(0,A.jsxs)(`div`,{className:`space-y-4`,children:[(0,A.jsx)(P,{}),(0,A.jsx)(D,{icon:p,title:`No product memory yet`,description:`Run tests or suites with memory enabled to build memory for this workspace.`,actionLabel:`Open Runs`,onAction:()=>e(v.runs)})]}):(0,A.jsx)(s,{children:(0,A.jsxs)(`div`,{className:`space-y-4`,children:[(0,A.jsx)(P,{actions:(0,A.jsx)(F,{})}),(0,A.jsx)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:(0,A.jsx)(o,{placeholder:`Search products`,value:N,onChange:e=>K(e.target.value),className:`max-w-[220px]`})}),(0,A.jsx)(i,{className:`rounded-md border`,children:(0,A.jsxs)(E,{className:`min-w-full table-fixed`,children:[(0,A.jsxs)(`colgroup`,{children:[(0,A.jsx)(`col`,{"data-column-id":`product`}),(0,A.jsx)(`col`,{"data-column-id":`scope`,style:{width:M.scope}}),(0,A.jsx)(`col`,{"data-column-id":`source`,style:{width:M.source}}),(0,A.jsx)(`col`,{"data-column-id":`lastConfirmed`,style:{width:M.lastConfirmed}})]}),(0,A.jsx)(x,{children:(0,A.jsxs)(w,{className:`hover:bg-transparent`,children:[(0,A.jsx)(S,{"data-column-id":`product`,className:I(`product`),children:`Product`}),(0,A.jsx)(S,{"data-column-id":`scope`,className:I(`scope`),children:`Product / Suite / Test`}),(0,A.jsx)(S,{"data-column-id":`source`,className:I(`source`),children:`Suite / Test`}),(0,A.jsx)(S,{"data-column-id":`lastConfirmed`,className:I(`lastConfirmed`),children:`Last confirmed`})]})}),(0,A.jsx)(C,{children:G.length>0?G.map((e,t)=>{let n=t===V,r=z(e.targetReferences),i=[e.scopeCounts.product,e.scopeCounts.suite,e.scopeCounts.test].join(` / `),o=[e.sourceCounts.suite,e.sourceCounts.test].join(` / `);return(0,A.jsxs)(w,{ref:e=>{U.current[t]=e},"data-memory-product":e.productKey,tabIndex:n?0:-1,"aria-selected":n,className:R(n),onClick:()=>{H(t),q(e)},onFocus:()=>H(t),onKeyDown:t=>{t.key===`Enter`&&q(e,t)},children:[(0,A.jsx)(T,{"data-column-id":`product`,className:L(`product`),children:(0,A.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,A.jsx)(`span`,{className:`block whitespace-normal break-words text-sm font-medium leading-snug text-foreground`,children:e.productKey}),r?(0,A.jsx)(`span`,{"data-memory-targets":!0,title:e.targetReferences.join(`, `),className:`block truncate text-xs leading-snug text-muted-foreground`,children:r}):null]})}),(0,A.jsx)(T,{"data-column-id":`scope`,className:L(`scope`),children:(0,A.jsx)(`span`,{className:`whitespace-nowrap font-mono text-sm tabular-nums text-foreground`,children:i})}),(0,A.jsx)(T,{"data-column-id":`source`,className:L(`source`),children:(0,A.jsx)(`span`,{className:`whitespace-nowrap font-mono text-sm tabular-nums text-foreground`,children:o})}),(0,A.jsx)(T,{"data-column-id":`lastConfirmed`,className:L(`lastConfirmed`),children:e.freshness?(0,A.jsxs)(d,{children:[(0,A.jsx)(u,{asChild:!0,children:(0,A.jsx)(`span`,{className:`block truncate text-sm text-muted-foreground`,children:c(e.freshness)})}),(0,A.jsx)(a,{children:m(e.freshness)})]}):(0,A.jsx)(`span`,{className:`block truncate text-sm text-muted-foreground`,children:`No confirmations yet`})})]},e.productKey)}):(0,A.jsx)(w,{children:(0,A.jsx)(T,{colSpan:4,className:`h-24 text-center text-sm text-muted-foreground`,children:`No matching products.`})})})]})})]})})}function P({actions:e}){return(0,A.jsxs)(`header`,{className:`space-y-1`,children:[(0,A.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,A.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Memory`}),e?(0,A.jsx)(`div`,{className:`shrink-0`,children:e}):null]}),(0,A.jsx)(`p`,{className:`max-w-2xl text-sm text-muted-foreground`,children:`Browse what the agent has learned for each product.`})]})}function F(){return(0,A.jsxs)(d,{children:[(0,A.jsx)(u,{asChild:!0,children:(0,A.jsx)(l,{variant:`ghost`,size:`icon-sm`,"aria-label":`Keyboard shortcuts`,title:`Keyboard shortcuts`,children:(0,A.jsx)(n,{className:`h-4 w-4`})})}),(0,A.jsxs)(a,{side:`bottom`,className:`space-y-2 p-3`,children:[(0,A.jsx)(`p`,{className:`text-xs font-medium text-foreground`,children:`Keyboard shortcuts`}),(0,A.jsx)(t,{hints:[{key:`J / ↓`,label:`Next row`},{key:`K / ↑`,label:`Previous row`},{key:`Enter`,label:`Open memory`},{key:`⌘ / Ctrl+Enter`,label:`Open in new tab`}]})]})]})}function I(e){return y(`h-10 bg-background px-3 text-[13px] font-medium text-foreground/90`,e!==`product`&&`text-right`)}function L(e){return y(`py-2 align-top`,e===`product`&&`max-w-0 px-3`,(e===`scope`||e===`source`)&&`px-3 text-right`,e===`lastConfirmed`&&`max-w-0 px-3 text-right`)}function R(e){return y(`cursor-pointer outline-none hover:bg-muted/20 focus-visible:bg-primary/10 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary/60`,e&&`bg-primary/10 ring-1 ring-inset ring-primary/60`)}function z(e){if(e.length===0)return null;let t=e.slice(0,j),n=e.length-t.length;return n<=0?t.join(`, `):`${t.join(`, `)}, +${n} more`}export{N as default};
@@ -1,2 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{i as t,n,o as r,s as i,t as a}from"./select-BE8tKMJy.js";import{t as o}from"./copy-CWpai22Y.js";import{t as s}from"./observation-block-DvMkTmgC.js";import{n as c,r as l}from"./shortcut-hints-BGIo5sip.js";import{t as u}from"./use-page-title-CyHzJAcR.js";import{n as d,r as f,t as p}from"./popover-Boe1excX.js";import{Ft as m,It as h,Kt as g,Lt as _,Nt as v,Pt as y,Qt as b,Rt as x,S as ee,Xn as S,Z as C,dr as w,fr as te,gr as T,nr as E,qn as D,qt as O,tr as k,ur as A}from"./index-C_HfATr4.js";import{t as j}from"./empty-state-DEbHhF9f.js";import{t as ne}from"./use-keyboard-shortcuts-BM0qq0DE.js";var M=e(T(),1),N=k(),P={any:`Any (0.00 - 1.00)`,high:`High (0.75 - 1.00)`,medium:`Medium (0.50 - 0.74)`,low:`Low (0.00 - 0.49)`},F={last_confirmed:`Last confirmed`,updated:`Updated`,created:`Created`},I=[`all`,`7d`,`30d`,`90d`];function L({filters:e,onConfidenceChange:o,onDateBasisChange:s,onDateWindowChange:c,showHeading:l=!0}){return(0,N.jsxs)(`aside`,{"data-workspace-filter-rail":`true`,className:`space-y-4`,children:[l?(0,N.jsx)(`p`,{className:`text-[11px] font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`Filters`}):null,(0,N.jsxs)(`div`,{className:`space-y-5`,children:[(0,N.jsxs)(`div`,{className:`space-y-2`,children:[(0,N.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Confidence`}),(0,N.jsxs)(a,{onValueChange:e=>o(e),children:[(0,N.jsx)(r,{className:`w-full justify-between bg-background/70`,children:(0,N.jsx)(i,{placeholder:P[e.confidence]})}),(0,N.jsxs)(n,{children:[(0,N.jsx)(t,{value:`any`,children:P.any}),(0,N.jsx)(t,{value:`high`,children:P.high}),(0,N.jsx)(t,{value:`medium`,children:P.medium}),(0,N.jsx)(t,{value:`low`,children:P.low})]})]})]}),(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Date`}),(0,N.jsxs)(a,{onValueChange:e=>s(e),children:[(0,N.jsx)(r,{className:`w-full justify-between bg-background/70`,children:(0,N.jsx)(i,{placeholder:F[e.dateBasis]})}),(0,N.jsxs)(n,{children:[(0,N.jsx)(t,{value:`last_confirmed`,children:`Last confirmed`}),(0,N.jsx)(t,{value:`updated`,children:`Updated`}),(0,N.jsx)(t,{value:`created`,children:`Created`})]})]}),(0,N.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:I.map(t=>(0,N.jsx)(g,{type:`button`,variant:e.dateWindow===t?`default`:`outline`,size:`xs`,"aria-pressed":e.dateWindow===t,onClick:()=>c(t),children:t===`all`?`All time`:t},t))})]})]})]})}function R({onCopyPage:e,onShortcutsOpenChange:t,productKey:n,shortcutsOpen:r}){return(0,N.jsxs)(`div`,{"data-workspace-navbar":`true`,className:`flex h-14 min-w-0 shrink-0 items-center justify-between border-b bg-background px-4`,children:[(0,N.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,N.jsx)(A,{to:E.memory,className:`shrink-0 text-sm text-muted-foreground transition-colors hover:text-foreground`,children:`Memory`}),(0,N.jsx)(D,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`}),(0,N.jsx)(`span`,{className:`truncate text-sm font-medium`,children:n})]}),(0,N.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,N.jsxs)(g,{"data-workspace-copy-button":`true`,type:`button`,variant:`outline`,size:`sm`,className:`h-7 gap-1 rounded-sm px-2.5 text-xs [&_svg:not([class*='size-'])]:size-3.5`,onClick:()=>{e()},children:[(0,N.jsx)(o,{className:`size-4`}),`Copy page`]}),(0,N.jsxs)(p,{open:r,onOpenChange:t,children:[(0,N.jsxs)(y,{children:[(0,N.jsx)(_,{asChild:!0,children:(0,N.jsx)(f,{asChild:!0,children:(0,N.jsx)(g,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Keyboard shortcuts`,onClick:()=>t(!r),children:(0,N.jsx)(l,{className:`size-4`})})})}),(0,N.jsx)(m,{children:`Shortcuts`})]}),(0,N.jsx)(d,{align:`end`,sideOffset:8,className:`w-72 p-4`,children:(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`h4`,{className:`mb-2 text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:`Navigation`}),(0,N.jsx)(c,{hints:[{key:`J / ↓`,label:`Next entry`},{key:`K / ↑`,label:`Previous entry`}]})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`h4`,{className:`mb-2 text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:`Actions`}),(0,N.jsx)(c,{hints:[{key:`C`,label:`Copy page`},{key:`Shift+?`,label:`Toggle shortcuts`},{key:`Esc`,label:`Close`}]})]})]})})]})]})]})}function z({activeAnchorId:e=null,document:t,onNavigate:n,showHeading:r=!0}){let i=(0,M.useRef)(null);return(0,M.useEffect)(()=>{i.current?.scrollIntoView({block:`nearest`,inline:`nearest`})},[e]),(0,N.jsxs)(`aside`,{"data-workspace-outline":`true`,className:`space-y-3`,children:[r?(0,N.jsx)(`p`,{className:`text-[11px] font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:`On this page`}):null,(0,N.jsx)(`nav`,{"aria-label":`Page outline`,children:(0,N.jsx)(`ul`,{className:`space-y-1`,children:t.outline.map(t=>B(t,0,e,n,i))})})]})}function B(e,t,n,r,i){let a=n===e.anchorId;return(0,N.jsxs)(`li`,{className:`space-y-1`,children:[(0,N.jsx)(`button`,{type:`button`,ref:a?i:null,"data-workspace-outline-item":e.anchorId,"data-active":a?`true`:void 0,"aria-current":a?`location`:void 0,className:O(`block w-full rounded-md px-2 py-1.5 text-left text-sm transition-colors hover:bg-accent hover:text-foreground`,t===0?`font-medium text-foreground`:`text-muted-foreground`,t===1?`pl-4`:``,t>=2?`pl-6 text-[13px]`:``,a?`bg-accent text-foreground`:``),onClick:()=>r(e.anchorId),children:e.title}),e.children.length>0?(0,N.jsx)(`ul`,{className:`space-y-1`,children:e.children.map(e=>B(e,t+1,n,r,i))}):null]},e.anchorId)}var V=[{id:`product`,title:`Product`},{id:`suite`,title:`Suite`},{id:`test`,title:`Test`}],H={confidence:`any`,dateBasis:`last_confirmed`,dateWindow:`all`};function U(e,t){let n=V.map(({id:n,title:r})=>({anchorId:`memory-section-${n}`,groups:K(n,e,t.filter(e=>e.scope===n)),id:n,title:r}));return{outline:q(n),productKey:e,sections:n}}function re(e,t,n){return e.filter(e=>ie(e,t.confidence)&&ae(e,t.dateBasis,t.dateWindow,n))}function W(e){return e.flatMap(e=>[e.anchorId,...W(e.children)])}function G(e,t=[]){let n=[`# Memory: ${e.productKey}`,``];t.length>0&&n.push(`> ${t.length} invalid memory file${t.length===1?``:`s`} hidden from this workspace.`,`> ${t.map(e=>e.filename).join(`, `)}`,``);for(let t of e.sections){if(n.push(`## ${t.title}`,``),t.id===`product`){for(let e of t.groups[0]?.observations??[])n.push(`### ${e.observation.title}`,``,e.observation.content,``);continue}for(let e of t.groups){e.title&&n.push(`### ${e.title}`,``);for(let t of e.observations)n.push(`#### ${t.observation.title}`,``,t.observation.content,``)}}return n.join(`
2
- `).trim()}function K(e,t,n){let r=[...n].sort(Y);if(e===`product`)return r.length>0?[{anchorId:`memory-group-product-${Q(t)}`,id:t,title:null,observations:r.map(Z)}]:[];let i=new Map;for(let e of r){let t=e.scopeRef?.id??e.scopeId,n=i.get(t);if(n){n.observations.push(e);continue}i.set(t,{title:e.scopeRef?.label??e.scopeId,observations:[e]})}return[...i.entries()].map(([t,n])=>({anchorId:`memory-group-${e}-${Q(t)}`,id:t,title:n.title,observations:n.observations.sort(Y).map(Z)})).sort(J)}function q(e){return e.map(e=>({anchorId:e.anchorId,children:e.id===`product`?(e.groups[0]?.observations??[]).map(e=>({anchorId:e.anchorId,children:[],id:e.observation.id,title:e.observation.title})):e.groups.map(t=>({anchorId:t.anchorId,children:t.observations.map(e=>({anchorId:e.anchorId,children:[],id:e.observation.id,title:e.observation.title})),id:t.id,title:t.title??e.title})),id:e.id,title:e.title}))}function J(e,t){let n=e.observations[0]?.observation,r=t.observations[0]?.observation;if(n&&r){let e=Y(n,r);if(e!==0)return e}return(e.title??``).localeCompare(t.title??``)}function Y(e,t){return X(e.last_confirmed,t.last_confirmed)||X(e.updated,t.updated)||e.title.localeCompare(t.title)}function X(e,t){return t.localeCompare(e)}function ie(e,t){switch(t){case`any`:return!0;case`high`:return e.trust>=.75;case`medium`:return e.trust>=.5&&e.trust<.75;case`low`:return e.trust<.5}}function ae(e,t,n,r){if(n===`all`)return!0;let i=e[t],a=new Date(i).getTime();if(Number.isNaN(a))return!1;let o=new Date(r),s=oe(n);return o.setDate(o.getDate()-s),a>=o.getTime()}function oe(e){switch(e){case`7d`:return 7;case`30d`:return 30;case`90d`:return 90}}function Z(e){return{anchorId:`memory-observation-${Q(e.id)}`,id:e.id,observation:e}}function Q(e){return e.trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function se(){let{product:e}=te();u(e?`Memory · ${e}`:`Memory`);let t=w(),[n,r]=(0,M.useState)(null),[i,a]=(0,M.useState)(!0),[o,s]=(0,M.useState)(!1),[c,l]=(0,M.useState)(!1),[d,f]=(0,M.useState)(H),[p,m]=(0,M.useState)(null),[g,_]=(0,M.useState)(!1),y=b(),T=(0,M.useCallback)(()=>{if(!e)return a(!1),s(!0),()=>{};let t=!1;return a(!0),l(!1),s(!1),C(e).then(e=>{t||r(e.product)}).catch(e=>{if(!t){if(r(null),e instanceof ee&&e.status===404){s(!0);return}l(!0)}}).finally(()=>{t||a(!1)}),()=>{t=!0}},[e]);(0,M.useEffect)(()=>T(),[T]),(0,M.useEffect)(()=>{f(H)},[e]),(0,M.useEffect)(()=>{_(!1)},[e]);let D=(0,M.useMemo)(()=>new Date,[e]),O=(0,M.useMemo)(()=>n?U(n.productKey,n.observations):null,[n]),k=(0,M.useMemo)(()=>n?re(n.observations,d,D):[],[n,d,D]),A=(0,M.useMemo)(()=>n?U(n.productKey,k):null,[n,k]),P=(0,M.useMemo)(()=>O&&n?G(O,n.invalidFiles):null,[n,O]),F=(0,M.useMemo)(()=>A?W(A.outline):[],[A]);(0,M.useEffect)(()=>{if(!A){m(null);return}let e=W(A.outline);if(m(t=>t&&e.includes(t)?t:e[0]??null),typeof IntersectionObserver>`u`)return;let t=new Map(e.map((e,t)=>[e,t])),n=new IntersectionObserver(e=>{let n=e.filter(e=>e.isIntersecting).sort((e,n)=>{let r=n.intersectionRatio-e.intersectionRatio;return r===0?(t.get(e.target.id)??2**53-1)-(t.get(n.target.id)??2**53-1):r})[0];n&&m(n.target.id)},{rootMargin:`-72px 0px -55% 0px`,threshold:[.2,.6,1]});for(let t of e){let e=document.getElementById(t);e&&n.observe(e)}return()=>n.disconnect()},[A]);let I=(0,M.useCallback)(e=>{m(e),document.getElementById(e)?.scrollIntoView({block:`start`})},[]),B=(0,M.useCallback)(async()=>{if(P)try{await navigator.clipboard.writeText(P),v.success(`Copied page as Markdown`)}catch{v.error(`Couldn't copy page`)}},[P]),V=(0,M.useCallback)(e=>{if(F.length===0)return;let t=p?F.indexOf(p):-1,n=F[t<0?0:Math.min(F.length-1,Math.max(0,t+e))];n&&I(n)},[p,I,F]),K=(0,M.useCallback)(e=>{f(t=>({...t,confidence:e}))},[]),q=(0,M.useCallback)(e=>{f(t=>({...t,dateBasis:e}))},[]),J=(0,M.useCallback)(e=>{f(t=>({...t,dateWindow:e}))},[]);return ne((0,M.useMemo)(()=>({j:()=>V(1),arrowdown:()=>V(1),k:()=>V(-1),arrowup:()=>V(-1),c:()=>{B()},"shift+?":()=>_(e=>!e),escape:()=>_(!1)}),[B,V])),i?(0,N.jsxs)(`div`,{className:`space-y-4`,children:[(0,N.jsxs)(`div`,{className:`space-y-3`,children:[(0,N.jsx)(x,{className:`h-8 w-32`}),(0,N.jsx)(x,{className:`h-9 w-72 max-w-full`}),(0,N.jsx)(x,{className:`h-4 w-64 max-w-full`})]}),(0,N.jsx)(x,{className:`h-28 w-full rounded-md`}),(0,N.jsx)(x,{className:`h-56 w-full rounded-md`})]}):o?(0,N.jsx)(j,{icon:S,title:`Memory not found for this product`,description:`This product doesn't currently have cataloged memory in this workspace, or the product key changed.`,actionLabel:`Back to Memory`,onAction:()=>t(E.memory)}):c||!n?(0,N.jsx)(`div`,{className:`rounded-md border bg-card p-4`,children:(0,N.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Couldn't load this memory workspace. Refresh the page. If it continues, verify the dashboard server can read the workspace memory directory.`})}):(0,N.jsx)(h,{children:(0,N.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,N.jsx)(R,{onCopyPage:B,onShortcutsOpenChange:_,productKey:n.productKey,shortcutsOpen:g}),y?(0,N.jsx)(`div`,{className:`workspace-scrollbar min-h-0 flex-1 overflow-y-auto overscroll-y-contain px-3 py-3`,children:(0,N.jsx)(ce,{activeAnchorId:p,detail:n,document:A,filters:d,onConfidenceChange:K,onDateBasisChange:q,onDateWindowChange:J,onNavigate:I})}):(0,N.jsxs)(`div`,{"data-workspace-shell":`true`,className:`grid min-h-0 flex-1 grid-cols-[15rem_minmax(0,1fr)_14rem] overflow-hidden`,children:[(0,N.jsx)(`aside`,{className:`workspace-scrollbar min-h-0 overflow-y-auto overscroll-y-contain border-r border-border bg-background`,children:(0,N.jsx)(`div`,{className:`min-h-full px-3 py-3`,children:A?(0,N.jsx)(z,{activeAnchorId:p,document:A,onNavigate:I}):null})}),(0,N.jsx)(`div`,{className:`workspace-scrollbar min-h-0 min-w-0 overflow-y-auto overscroll-y-contain bg-muted/[0.04]`,children:(0,N.jsx)($,{detail:n,document:A})}),(0,N.jsx)(`aside`,{className:`workspace-scrollbar min-h-0 overflow-y-auto overscroll-y-contain border-l border-border bg-background`,children:(0,N.jsx)(`div`,{className:`min-h-full px-3 py-3`,children:(0,N.jsx)(L,{filters:d,onConfidenceChange:K,onDateBasisChange:q,onDateWindowChange:J})})})]})]})})}function ce({activeAnchorId:e,detail:t,document:n,filters:r,onConfidenceChange:i,onDateBasisChange:a,onDateWindowChange:o,onNavigate:s}){return(0,N.jsxs)(`div`,{className:`space-y-4`,children:[n?(0,N.jsxs)(`details`,{className:`border bg-card px-3 py-2.5`,children:[(0,N.jsx)(`summary`,{className:`cursor-pointer text-sm font-medium text-foreground`,children:`On this page`}),(0,N.jsx)(`div`,{className:`mt-3`,children:(0,N.jsx)(z,{activeAnchorId:e,document:n,onNavigate:s,showHeading:!1})})]}):null,(0,N.jsxs)(`details`,{className:`border bg-card px-3 py-2.5`,children:[(0,N.jsx)(`summary`,{className:`cursor-pointer text-sm font-medium text-foreground`,children:`Filters`}),(0,N.jsx)(`div`,{className:`mt-3`,children:(0,N.jsx)(L,{filters:r,onConfidenceChange:i,onDateBasisChange:a,onDateWindowChange:o,showHeading:!1})})]}),(0,N.jsx)($,{detail:t,document:n})]})}function $({detail:e,document:t}){return(0,N.jsx)(`div`,{"data-workspace-reader-page":`true`,className:`min-h-full w-full bg-card/55`,children:(0,N.jsxs)(`div`,{className:`px-4 py-4 sm:px-5`,children:[e.invalidFiles.length>0?(0,N.jsxs)(`div`,{className:`mb-4 border border-amber-500/40 bg-amber-500/10 px-3 py-2 text-sm text-amber-950 dark:text-amber-200`,children:[(0,N.jsxs)(`p`,{className:`font-medium`,children:[e.invalidFiles.length,` invalid memory file`,e.invalidFiles.length===1?``:`s`,` hidden from this workspace.`]}),(0,N.jsx)(`p`,{className:`mt-1 text-xs text-amber-900/80 dark:text-amber-200/80`,children:e.invalidFiles.map(e=>e.filename).join(`, `)})]}):null,e.observations.length===0?(0,N.jsx)(j,{icon:S,title:`No memory in this product yet`,description:`This product doesn't have cataloged observations in this workspace yet. Run tests or suites with memory enabled, then reopen this workspace.`}):t&&le(t)?(0,N.jsx)(`article`,{className:`w-full space-y-10`,children:t.sections.map(e=>(0,N.jsxs)(`section`,{id:e.anchorId,"data-workspace-section":e.id,className:`scroll-mt-20 space-y-5`,children:[(0,N.jsx)(`header`,{className:`border-b pb-3`,children:(0,N.jsx)(`h2`,{className:`text-xl font-semibold tracking-tight text-foreground`,children:e.title})}),e.groups.length>0?(0,N.jsx)(`div`,{className:`space-y-8`,children:e.groups.map(e=>(0,N.jsxs)(`div`,{className:`space-y-5`,children:[(0,N.jsx)(`div`,{id:e.anchorId,className:`scroll-mt-20`,children:e.title?(0,N.jsx)(`h3`,{className:`text-base font-medium tracking-tight text-foreground`,children:e.title}):(0,N.jsx)(`span`,{className:`sr-only`,children:`Product observations`})}),(0,N.jsx)(`div`,{className:`space-y-8`,children:e.observations.map(e=>(0,N.jsx)(`div`,{id:e.anchorId,className:`scroll-mt-24`,children:(0,N.jsx)(s,{observation:e.observation,query:``})},e.observation.id))})]},e.anchorId))}):(0,N.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No `,e.title.toLowerCase(),` observations in this workspace yet.`]})]},e.id))}):(0,N.jsx)(j,{icon:S,title:`No observations match these filters`,description:`Clear one or more filters to return to the full document.`})]})})}function le(e){return e.sections.some(e=>e.groups.some(e=>e.observations.length>0))}export{se as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-editor-inner-C0PbrlIr.js","assets/chunk-CilyBKbf.js","assets/index-C_HfATr4.js","assets/index-B5JVEaaS.css","assets/editor.api2-DEGvZ9jW.js","assets/editor-Br_kD0ds.css","assets/workers-BbHjH3Kx.js","assets/monaco.contribution-Bq7keHQp.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./chunk-CilyBKbf.js";import{Zn as t,gr as n,mr as r,qt as i,tr as a}from"./index-C_HfATr4.js";var o=t(`circle-play`,[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),s=t(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),c=e(n(),1),l=a(),u=(0,c.lazy)(()=>r(()=>import(`./monaco-editor-inner-C0PbrlIr.js`),__vite__mapDeps([0,1,2,3,4,5,6,7])));function d({className:e}){return(0,l.jsx)(`div`,{className:i(`flex items-center justify-center bg-background border border-border rounded-md`,e),children:(0,l.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Loading editor...`})})}function f(e){return(0,l.jsx)(c.Suspense,{fallback:(0,l.jsx)(d,{className:e.className}),children:(0,l.jsx)(u,{...e})})}export{s as n,o as r,f as t};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{n as t,r as n,t as r}from"./popover-Boe1excX.js";import{Kt as i,Yt as a,Zn as o,gr as s,tr as c}from"./index-C_HfATr4.js";import{t as l}from"./observation-markdown-Bgcyet5t.js";var u=o(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),d=e(s(),1),f=c();function p({observation:e,onRequestClose:n}){return(0,f.jsx)(t,{align:`start`,side:`bottom`,sideOffset:10,className:`w-fit min-w-[22rem] max-w-[calc(100vw-2rem)] space-y-4 rounded-xl border border-border/70 bg-popover p-5 shadow-xl`,onEscapeKeyDown:()=>n?.(),onOpenAutoFocus:e=>e.preventDefault(),onCloseAutoFocus:e=>e.preventDefault(),children:(0,f.jsxs)(`div`,{className:`space-y-3`,children:[g(e)&&e.scopeRef?(0,f.jsx)(m,{label:`Scope reference`,reference:e.scopeRef}):null,g(e)&&e.sourceTestRef?(0,f.jsx)(m,{label:`Source test`,reference:e.sourceTestRef}):(0,f.jsx)(h,{label:`Source test`,value:e.source_test,mono:!0}),(0,f.jsx)(h,{label:`Trust`,value:e.trust.toFixed(2),mono:!0}),(0,f.jsx)(h,{label:`Created`,value:a(e.created),mono:!0}),g(e)?(0,f.jsx)(h,{label:`Updated`,value:a(e.updated),mono:!0}):null,(0,f.jsx)(h,{label:`Last confirmed`,value:a(e.last_confirmed),mono:!0}),!g(e)&&e.scope!==`product`?(0,f.jsx)(h,{label:`Scope id`,value:e.scopeId,mono:!0}):null]})})}function m({label:e,reference:t}){let n=(0,f.jsxs)(`span`,{className:`block min-w-0 space-y-1 text-right`,children:[(0,f.jsx)(`span`,{className:`block text-sm leading-tight text-foreground`,children:t.label}),t.targetName?(0,f.jsx)(`span`,{className:`block break-words font-mono text-[11px] leading-tight text-muted-foreground`,children:t.targetName}):null]});return(0,f.jsxs)(`div`,{className:`grid grid-cols-[5.5rem_minmax(0,1fr)] items-start gap-4 text-sm`,children:[(0,f.jsx)(`span`,{className:`pt-0.5 text-xs text-muted-foreground`,children:e}),t.href?(0,f.jsx)(`a`,{href:t.href,className:`block min-w-0 text-right hover:underline`,children:n}):n]})}function h({label:e,mono:t=!1,value:n}){return(0,f.jsxs)(`div`,{className:`grid grid-cols-[5.5rem_minmax(0,1fr)] items-start gap-4 text-sm`,children:[(0,f.jsx)(`span`,{className:`pt-0.5 text-xs text-muted-foreground`,children:e}),(0,f.jsx)(`span`,{className:t?`min-w-0 break-words text-right font-mono text-[13px] text-foreground`:`min-w-0 break-words text-right text-sm text-foreground`,children:n})]})}function g(e){return`updated`in e}function _({observation:e,query:t,showScopeLabel:a=!1}){let[o,s]=(0,d.useState)(!1);return(0,f.jsxs)(`div`,{"data-observation-block":e.id,className:`space-y-2.5`,children:[a?(0,f.jsx)(`p`,{className:`text-[11px] uppercase tracking-[0.14em] text-muted-foreground`,children:b(e.scope)}):null,(0,f.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,f.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,f.jsx)(`h3`,{className:`min-w-0 flex-1 select-text text-base font-medium tracking-tight text-foreground`,children:v(e.title,t)}),(0,f.jsx)(`div`,{className:`shrink-0`,children:(0,f.jsxs)(r,{open:o,onOpenChange:s,children:[(0,f.jsx)(n,{asChild:!0,children:(0,f.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Observation details`,className:`size-7 rounded-sm text-muted-foreground hover:text-foreground`,children:(0,f.jsx)(u,{className:`size-4`})})}),(0,f.jsx)(p,{observation:e,onRequestClose:()=>{s(!1)}})]})})]}),(0,f.jsx)(l,{className:`select-text leading-7`,content:e.content})]})]})}function v(e,t){let n=t.trim();if(!n)return e;let r=n.toLowerCase(),i=RegExp(`(${y(n)})`,`ig`);return e.split(i).map((e,t)=>e.toLowerCase()===r?(0,f.jsx)(`mark`,{className:`rounded-sm bg-primary/15 px-0.5 text-foreground`,children:e},`${e}-${t}`):(0,f.jsx)(d.Fragment,{children:e},`${e}-${t}`))}function y(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function b(e){switch(e){case`product`:return`Product`;case`suite`:return`Suite`;case`test`:return`Test`}}export{_ as t};
@@ -1 +0,0 @@
1
- import{qt as e,tr as t}from"./index-C_HfATr4.js";import{t as n}from"./marked.esm-Ba5AUJng.js";var r=t(),i=new n.Renderer;i.html=({text:e})=>o(e);function a({className:t,content:a}){let o=n.parse(a,{async:!1,gfm:!0,renderer:i});return(0,r.jsx)(`div`,{className:e(`markdown-preview text-sm text-foreground`,t),role:`document`,dangerouslySetInnerHTML:{__html:o}})}function o(e){return e.replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`).replaceAll(`'`,`&#39;`)}export{a as t};
@@ -1 +0,0 @@
1
- import{Zn as e}from"./index-C_HfATr4.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{$t as t,Cn as n,Dn as r,En as i,Fn as a,Mn as o,Sn as s,_n as c,bn as l,en as u,gn as d,gr as f,hn as p,kn as m,nn as h,qt as g,rn as _,tn as v,tr as y,vn as b,wn as x,yn as S}from"./index-C_HfATr4.js";var C=e(f(),1),w=y(),T=`Popover`,[E,ee]=r(T,[_]),D=_(),[O,k]=E(T),A=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=D(t),l=C.useRef(null),[u,d]=C.useState(!1),[f,p]=x({prop:r,defaultProp:i??!1,onChange:a,caller:T});return(0,w.jsx)(h,{...c,children:(0,w.jsx)(O,{scope:t,contentId:s(),triggerRef:l,open:f,onOpenChange:p,onOpenToggle:C.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:u,onCustomAnchorAdd:C.useCallback(()=>d(!0),[]),onCustomAnchorRemove:C.useCallback(()=>d(!1),[]),modal:o,children:n})})};A.displayName=T;var j=`PopoverAnchor`,M=C.forwardRef((e,n)=>{let{__scopePopover:r,...i}=e,a=k(j,r),o=D(r),{onCustomAnchorAdd:s,onCustomAnchorRemove:c}=a;return C.useEffect(()=>(s(),()=>c()),[s,c]),(0,w.jsx)(t,{...o,...i,ref:n})});M.displayName=j;var N=`PopoverTrigger`,P=C.forwardRef((e,n)=>{let{__scopePopover:r,...o}=e,s=k(N,r),c=D(r),l=a(n,s.triggerRef),u=(0,w.jsx)(m.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":s.open,"aria-controls":s.contentId,"data-state":Y(s.open),...o,ref:l,onClick:i(e.onClick,s.onOpenToggle)});return s.hasCustomAnchor?u:(0,w.jsx)(t,{asChild:!0,...c,children:u})});P.displayName=N;var F=`PopoverPortal`,[I,L]=E(F,{forceMount:void 0}),R=e=>{let{__scopePopover:t,forceMount:r,children:i,container:a}=e,o=k(F,t);return(0,w.jsx)(I,{scope:t,forceMount:r,children:(0,w.jsx)(n,{present:r||o.open,children:(0,w.jsx)(b,{asChild:!0,container:a,children:i})})})};R.displayName=F;var z=`PopoverContent`,B=C.forwardRef((e,t)=>{let r=L(z,e.__scopePopover),{forceMount:i=r.forceMount,...a}=e,o=k(z,e.__scopePopover);return(0,w.jsx)(n,{present:i||o.open,children:o.modal?(0,w.jsx)(H,{...a,ref:t}):(0,w.jsx)(U,{...a,ref:t})})});B.displayName=z;var V=o(`PopoverContent.RemoveScroll`),H=C.forwardRef((e,t)=>{let n=k(z,e.__scopePopover),r=C.useRef(null),o=a(t,r),s=C.useRef(!1);return C.useEffect(()=>{let e=r.current;if(e)return p(e)},[]),(0,w.jsx)(d,{as:V,allowPinchZoom:!0,children:(0,w.jsx)(W,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:i(e.onCloseAutoFocus,e=>{e.preventDefault(),s.current||n.triggerRef.current?.focus()}),onPointerDownOutside:i(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;s.current=t.button===2||n},{checkForDefaultPrevented:!1}),onFocusOutside:i(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),U=C.forwardRef((e,t)=>{let n=k(z,e.__scopePopover),r=C.useRef(!1),i=C.useRef(!1);return(0,w.jsx)(W,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),W=C.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,...p}=e,m=k(z,n),h=D(n);return c(),(0,w.jsx)(S,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,w.jsx)(l,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:f,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:d,onDismiss:()=>m.onOpenChange(!1),children:(0,w.jsx)(v,{"data-state":Y(m.open),role:`dialog`,id:m.contentId,...h,...p,ref:t,style:{...p.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),G=`PopoverClose`,K=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,a=k(G,n);return(0,w.jsx)(m.button,{type:`button`,...r,ref:t,onClick:i(e.onClick,()=>a.onOpenChange(!1))})});K.displayName=G;var q=`PopoverArrow`,J=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=D(n);return(0,w.jsx)(u,{...i,...r,ref:t})});J.displayName=q;function Y(e){return e?`open`:`closed`}var X=A,Z=P,Q=R,$=B;function te({...e}){return(0,w.jsx)(X,{"data-slot":`popover`,...e})}function ne({...e}){return(0,w.jsx)(Z,{"data-slot":`popover-trigger`,...e})}function re({className:e,align:t=`center`,sideOffset:n=4,...r}){return(0,w.jsx)(Q,{children:(0,w.jsx)($,{"data-slot":`popover-content`,align:t,sideOffset:n,className:g(`z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,e),...r})})}export{re as n,ne as r,te as t};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{t}from"./grip-vertical-CJUfU7Zx.js";import{gr as n,qt as r,tr as i}from"./index-C_HfATr4.js";var a=i(),o=e(n(),1);function s(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function c(e,t){let n=getComputedStyle(e.ownerDocument.body);return t*parseFloat(n.fontSize)}function l(e){return e/100*window.innerHeight}function u(e){return e/100*window.innerWidth}function d(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}function f({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=d(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=c(t,i);break;case`em`:r=s(t,i);break;case`vh`:r=l(i);break;case`vw`:r=u(i);break}return r}function p(e){return parseFloat(e.toFixed(3))}function m({group:e}){let{orientation:t,panels:n}=e;return n.reduce((e,n)=>(e+=t===`horizontal`?n.element.offsetWidth:n.element.offsetHeight,e),0)}function h(e){let{panels:t}=e,n=m({group:e});return n===0?t.map(e=>({groupResizeBehavior:e.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:e.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:e.panelConstraints.disabled,minSize:0,maxSize:100,panelId:e.id})):t.map(e=>{let{element:t,panelConstraints:r}=e,i=0;r.collapsedSize!==void 0&&(i=p(f({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=p(f({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=p(f({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=p(f({groupSize:n,panelElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsible:r.collapsible===!0,defaultSize:a,disabled:r.disabled,minSize:o,maxSize:s,panelId:e.id}})}function g(e,t=`Assertion error`){if(!e)throw Error(t)}function _(e,t){return Array.from(t).sort(e===`horizontal`?v:y)}function v(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function y(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function b(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function x(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function S({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=x(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return g(i,`No rect found`),i}var C;function w(){return C===void 0&&(C=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),C}function T(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=_(n,Array.from(t.children).filter(b).map(e=>({element:e}))).map(({element:e})=>e),o=[],s=!1,c=!1,l=-1,u=-1,d=0,f,p=[];{let e=-1;for(let t of a)t.hasAttribute(`data-panel`)&&(e++,t.hasAttribute(`data-disabled`)||(d++,l===-1&&(l=e),u=e))}if(d>1){let t=-1;for(let d of a)if(d.hasAttribute(`data-panel`)){t++;let i=r.find(e=>e.element===d);if(i){if(f){let r=f.element.getBoundingClientRect(),a=d.getBoundingClientRect(),h;if(c){let e=n===`horizontal`?new DOMRect(r.right,r.top,0,r.height):new DOMRect(r.left,r.bottom,r.width,0),t=n===`horizontal`?new DOMRect(a.left,a.top,0,a.height):new DOMRect(a.left,a.top,a.width,0);switch(p.length){case 0:h=[e,t];break;case 1:{let i=p[0];h=[i,S({orientation:n,rects:[r,a],targetRect:i.element.getBoundingClientRect()})===r?t:e];break}default:h=p;break}}else h=p.length?p:[n===`horizontal`?new DOMRect(r.right,a.top,a.left-r.right,a.height):new DOMRect(a.left,r.bottom,a.width,a.top-r.bottom)];for(let n of h){let r=`width`in n?n:n.element.getBoundingClientRect(),a=w()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(r.width<a){let e=a-r.width;r=new DOMRect(r.x-e/2,r.y,r.width+e,r.height)}if(r.height<a){let e=a-r.height;r=new DOMRect(r.x,r.y-e/2,r.width,r.height+e)}!s&&!(t<=l||t>u)&&o.push({group:e,groupSize:m({group:e}),panels:[f,i],separator:`width`in n?void 0:n,rect:r}),s=!1}}c=!1,f=i,p=[]}}else if(d.hasAttribute(`data-separator`)){d.ariaDisabled!==null&&(s=!0);let e=i.find(e=>e.element===d);e?p.push(e):(f=void 0,p=[])}else c=!0}return o}var E=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0)if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},D=new Map,O=new E;function k(e){D=new Map(D),D.delete(e)}function A(e,t){for(let[t]of D)if(t.id===e)return t}function j(e,t){for(let[t,n]of D)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function M(){return D}function N(e,t){return O.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function P(e,t){let n=D.get(e);D=new Map(D),D.set(e,t),O.emit(`groupChange`,{group:e,prev:n,next:t})}function ee(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=x(n,a.rect);switch(e){case`horizontal`:t.x<=i.x&&(r=a,i=t);break;case`vertical`:t.y<=i.y&&(r=a,i=t);break}}return r?{distance:i,hitRegion:r}:void 0}function te(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function ne(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:ce(e),b:ce(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();g(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:se(oe(n.a)),b:se(oe(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var re=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function ie(e){let t=getComputedStyle(le(e)??e).display;return t===`flex`||t===`inline-flex`}function ae(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||ie(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||re.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function oe(e){let t=e.length;for(;t--;){let n=e[t];if(g(n,`Missing node`),ae(n))return n}return null}function se(e){return e&&Number(getComputedStyle(e).zIndex)||0}function ce(e){let t=[];for(;e;)t.push(e),e=le(e);return t}function le(e){let{parentNode:t}=e;return te(t)?t.host:t}function ue(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function de({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!b(n)||n.contains(e)||e.contains(n))return!0;if(ne(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(ue(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function F(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=T(r),a=ee(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&de({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function fe(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function I(e,t,n=0){return Math.abs(p(e)-p(t))<=n}function L(e,t){return I(e,t)?0:e>t?1:-1}function R({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsible:a,disabled:o,maxSize:s=100,minSize:c=0}=t;if(o&&!e)return n;if(L(r,c)<0)if(a){let e=(i+c)/2;r=L(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=p(r),r}function z({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(I(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;g(u!=null,`Invalid first pivot index`),g(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];g(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(g(n!=null,`Previous layout not found for panel index ${t}`),I(n,i)){let t=o-n;L(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];g(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(g(n!=null,`Previous layout not found for panel index ${t}`),I(n,o)){let t=n-i;L(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];g(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&L(i,c)<0)if(e>0){let t=c-o,n=t/2;L(i+e,c)<0&&(e=L(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;L(i-e,c)<0&&(e=L(100+e,n)>0?0:-t)}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];g(e!=null,`Previous layout not found for panel index ${r}`);let a=R({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];g(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=R({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!I(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(fe(c,l))return i;{let t=e<0?d:u,r=s[t];g(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=R({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!I(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];g(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=R({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(I(i,s)||(t-=s-i,l[r]=s),I(t,0))break;e>0?r--:r++}}}if(!I(Object.values(l).reduce((e,t)=>t+e,0),100,.1))return i;let p=Object.keys(i);return l.reduce((e,t,n)=>(e[p[n]]=t,e),{})}function B(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||L(e[n],t[n])!==0)return!1;return!0}function V({layout:e,panelConstraints:t}){let n=Object.values(e),r=[...n],i=r.reduce((e,t)=>e+t,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(e=>`${e}%`).join(`, `)}`);if(!I(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];g(t!=null,`No layout data found for index ${e}`),r[e]=100/i*t}let a=0;for(let e=0;e<t.length;e++){let i=n[e];g(i!=null,`No layout data found for index ${e}`);let o=r[e];g(o!=null,`No layout data found for index ${e}`);let s=R({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!I(a,0))for(let e=0;e<t.length;e++){let n=r[e];g(n!=null,`No layout data found for index ${e}`);let i=n+a,o=R({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,I(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function pe({groupId:e,panelId:t}){let n=()=>{let t=M();for(let[n,{defaultLayoutDeferred:r,derivedPanelConstraints:i,layout:a,groupSize:o,separatorToPanels:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:n,groupSize:o,layout:a,separatorToPanels:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedPanelConstraints.find(e=>e.panelId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().group.panels.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=({nextSize:e,panels:n,prevLayout:r,derivedPanelConstraints:i})=>{let o=a(),s=n.findIndex(e=>e.id===t),c=s===0,l=s===n.length-1;if(l&&e<o&&(c||n.slice(0,s).every((e,t)=>{let n=i[t];return n?.collapsible&&I(n.collapsedSize,r[n.panelId])}))){let e=n.slice(0,s).reduce((e,t)=>e+r[t.id],0);return{...r,[t]:p(100-e)}}return z({delta:l?o-e:e-o,initialLayout:r,panelConstraints:i,pivotIndices:l?[s-1,s]:[s,s+1],prevLayout:r,trigger:`imperative-api`})},s=e=>{if(e===a())return;let{defaultLayoutDeferred:t,derivedPanelConstraints:r,group:i,groupSize:s,layout:c,separatorToPanels:l}=n(),u=V({layout:o({nextSize:e,panels:i.panels,prevLayout:c,derivedPanelConstraints:r}),panelConstraints:r});B(c,u)||P(i,{defaultLayoutDeferred:t,derivedPanelConstraints:r,groupSize:s,layout:u,separatorToPanels:l})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),o=a();e&&o!==t&&(n.expandToSize=o,s(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:o}=i(),c=a();if(e&&c===t){let e=o.expandToSize??n;e===0&&(e=1),s(e)}},getSize:()=>{let{group:e}=n(),t=a(),{element:r}=i();return{asPercentage:t,inPixels:e.orientation===`horizontal`?r.offsetWidth:r.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&I(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=m({group:t});s(p(f({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function me(e){e.defaultPrevented||F(e,M()).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=pe({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function H(e){let t=M();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function he({groupId:e}){let t=()=>{let t=M();for(let[n,r]of t)if(n.id===e)return{group:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedPanelConstraints:r,group:i,groupSize:a,layout:o,separatorToPanels:s}=t(),c=V({layout:e,panelConstraints:r});return n?o:(B(o,c)||P(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function U(e,t){let n=H(e),r=j(n.id,!0),i=n.separators.find(t=>t.element===e);g(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);g(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=he({groupId:n.id}).getLayout(),c=V({layout:z({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});B(s,c)||P(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function ge(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=H(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&U(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&U(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&U(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&U(t,-5);break;case`End`:e.preventDefault(),U(t,100);break;case`Enter`:{e.preventDefault();let n=H(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=j(n.id,!0),o=n.separators.find(e=>e.element===t);g(o,`Matching separator not found`);let s=a.get(o);g(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(g(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];U(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=H(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);g(r!==null,`Index not found`),n[e.shiftKey?r>0?r-1:n.length-1:r+1<n.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),U(t,-100);break}}var W={cursorFlags:0,state:`inactive`},G=new E;function K(){return W}function _e(e){return G.addListener(`change`,e)}function ve(e){let t=W,n={...W};n.cursorFlags=e,W=n,G.emit(`change`,{prev:t,next:n})}function q(e){let t=W;W=e,G.emit(`change`,{prev:t,next:e})}function ye(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=M(),n=F(e,t),r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({focusVisible:!1,preventScroll:!0})));let n=t.get(e.group);n&&r.set(e.group,n.layout)}),q({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var be=e=>e,J=()=>{},xe=1,Se=2,Ce=4,we=8,Te=3,Ee=12,Y;function De(){return Y===void 0&&(Y=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(Y=!0)),Y}function Oe({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(!(r===0&&i===0)){switch(n){case`active`:if(e&&De()){let t=(e&xe)!==0,n=(e&Se)!==0,r=(e&Ce)!==0,i=(e&we)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}break}return De()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var ke=new WeakMap;function Ae(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=ke.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));let r=K();switch(r.state){case`active`:case`hover`:{let e=Oe({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(e=>e.group),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}ke.set(e,{prevStyle:t,styleSheet:n})}function je({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:a,prevCursorFlags:o}){let s=0;n.forEach(e=>{let{group:n,groupSize:o}=e,{orientation:c,panels:l}=n,{disableCursor:u}=n.mutableState,d=0;d=a?c===`horizontal`?(t.clientX-a.x)/o*100:(t.clientY-a.y)/o*100:c===`horizontal`?t.clientX<0?-100:100:t.clientY<0?-100:100;let f=r.get(n),p=i.get(n);if(!f||!p)return;let{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:_,separatorToPanels:v}=p;if(h&&_&&v){let t=z({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(B(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?xe:Se;break;case`vertical`:s|=d<0?Ce:we;break}}else P(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Te:c|=s&Te,t.movementY===0?c|=o&Ee:c|=s&Ee,ve(c),Ae(e)}function Me(e){let t=M(),n=K();switch(n.state){case`active`:je({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function Ne(e){if(e.defaultPrevented)return;let t=K(),n=M();switch(t.state){case`active`:if(e.buttons===0){q({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=j(e.group.id,!0);P(e.group,t)});return}for(let n of t.hitRegions)if(n.separator){let{element:t}=n.separator;t.hasPointerCapture?.(e.pointerId)||t.setPointerCapture?.(e.pointerId)}je({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=F(e,n);r.length===0?t.state!==`inactive`&&q({cursorFlags:0,state:`inactive`}):q({cursorFlags:0,hitRegions:r,state:`hover`}),Ae(e.currentTarget);break}}}function Pe(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(K().state){case`hover`:q({cursorFlags:0,state:`inactive`})}}function Fe(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=K();switch(t.state){case`active`:q({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(Ae(e.currentTarget),t.hitRegions.forEach(e=>{let t=j(e.group.id,!0);P(e.group,t)}),e.preventDefault())}}function Ie(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=p(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=p((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function Le(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=m({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:p(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function Re(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function ze({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.panels){let e=r[l.id]??0;switch(l.panelConstraints.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=p(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e;break}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=p((r[e]??0)/a*l);else{let e=p(l/c.length);for(let t of c)u[t]=e}return u}function Be(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}var X=new Map;function Ve(e){let t=!0;g(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=m({group:e});if(t===0)return;let n=j(e.id);if(!n)return;let r=h(e),i=n.defaultLayoutDeferred?Ie(r):n.layout,a=V({layout:ze({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&B(n.layout,a)&&Re(n.derivedPanelConstraints,r)&&n.groupSize===t)return;P(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else Le(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{g(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=m({group:e}),s=h(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(Be(e.panels,l)||(l=void 0));let u=V({layout:e.mutableState.layouts[c]??l??Ie(s),panelConstraints:s}),d=e.element.ownerDocument;X.set(d,(X.get(d)??0)+1);let f=new Map;return T(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),P(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{g(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,ge)}),X.get(d)===1&&(d.addEventListener(`dblclick`,me,!0),d.addEventListener(`pointerdown`,ye,!0),d.addEventListener(`pointerleave`,Me),d.addEventListener(`pointermove`,Ne),d.addEventListener(`pointerout`,Pe),d.addEventListener(`pointerup`,Fe,!0)),function(){t=!1,X.set(d,Math.max(0,(X.get(d)??0)-1)),k(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,ge)}),X.get(d)||(d.removeEventListener(`dblclick`,me,!0),d.removeEventListener(`pointerdown`,ye,!0),d.removeEventListener(`pointerleave`,Me),d.removeEventListener(`pointermove`,Ne),d.removeEventListener(`pointerout`,Pe),d.removeEventListener(`pointerup`,Fe,!0)),a.disconnect()}}function He(){let[e,t]=(0,o.useState)({});return[e,(0,o.useCallback)(()=>t({}),[])]}function Ue(e){let t=(0,o.useId)();return`${e??t}`}var Z=typeof window<`u`?o.useLayoutEffect:o.useEffect;function Q(e){let t=(0,o.useRef)(e);return Z(()=>{t.current=e},[e]),(0,o.useCallback)((...e)=>t.current?.(...e),[t])}function We(...e){return Q(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function Ge(e){let t=(0,o.useRef)({...e});return Z(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var Ke=(0,o.createContext)(null);function qe(e,t){let n=(0,o.useRef)({getLayout:()=>({}),setLayout:be});(0,o.useImperativeHandle)(t,()=>n.current,[]),Z(()=>{Object.assign(n.current,he({groupId:e}))})}function Je({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:s,groupRef:c,id:l,onLayoutChange:u,onLayoutChanged:d,orientation:f=`horizontal`,resizeTargetMinimumSize:p={coarse:20,fine:10},style:m,...g}){let v=(0,o.useRef)({onLayoutChange:{},onLayoutChanged:{}}),y=Q(e=>{B(v.current.onLayoutChange,e)||(v.current.onLayoutChange=e,u?.(e))}),b=Q(e=>{B(v.current.onLayoutChanged,e)||(v.current.onLayoutChanged=e,d?.(e))}),x=Ue(l),S=(0,o.useRef)(null),[C,w]=He(),T=(0,o.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:p,separators:[]}),E=We(S,s);qe(x,c);let D=Q((e,t)=>{let r=K(),i=A(e),a=j(e);if(a){let e=!1;switch(r.state){case`active`:e=r.hitRegions.some(e=>e.group===i);break}return{flexGrow:a.layout[t]??1,pointerEvents:e?`none`:void 0}}if(n?.[t])return{flexGrow:n?.[t]}}),O=Ge({defaultLayout:n,disableCursor:r}),k=(0,o.useMemo)(()=>({get disableCursor(){return!!O.disableCursor},getPanelStyles:D,id:x,orientation:f,registerPanel:e=>{let t=T.current;return t.panels=_(f,[...t.panels,e]),w(),()=>{t.panels=t.panels.filter(t=>t!==e),w()}},registerSeparator:e=>{let t=T.current;return t.separators=_(f,[...t.separators,e]),w(),()=>{t.separators=t.separators.filter(t=>t!==e),w()}},updatePanelProps:(e,{disabled:t})=>{let n=T.current.panels.find(t=>t.id===e);n&&(n.panelConstraints.disabled=t);let r=A(x),i=j(x);r&&i&&P(r,{...i,derivedPanelConstraints:h(r)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let r=T.current.separators.find(t=>t.id===e);r&&(r.disabled=t,r.disableDoubleClick=n)}}),[D,x,w,f,O]),M=(0,o.useRef)(null);return Z(()=>{let e=S.current;if(e===null)return;let t=T.current,n;if(O.defaultLayout!==void 0&&Object.keys(O.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=O.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:x,mutableState:{defaultLayout:n,disableCursor:!!O.disableCursor,expandedPanelSizes:T.current.lastExpandedPanelSizes,layouts:T.current.layouts},orientation:f,panels:t.panels,resizeTargetMinimumSize:t.resizeTargetMinimumSize,separators:t.separators};M.current=r;let a=Ve(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=j(r.id,!0);!o&&s.length>0&&(y(c),b(c));let l=N(x,e=>{let{defaultLayoutDeferred:t,derivedPanelConstraints:n,layout:i}=e.next;if(t||n.length===0)return;let a=r.panels.map(({id:e})=>e).join(`,`);r.mutableState.layouts[a]=i,n.forEach(t=>{if(t.collapsible){let{layout:n}=e.prev??{};if(n){let e=I(t.collapsedSize,i[t.panelId]),a=I(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=K().state!==`active`;y(i),o&&b(i)});return()=>{M.current=null,a(),l()}},[i,x,b,y,f,C,O]),(0,o.useEffect)(()=>{let e=M.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,a.jsx)(Ke.Provider,{value:k,children:(0,a.jsx)(`div`,{...g,className:t,"data-group":!0,"data-testid":x,id:x,ref:E,style:{height:`100%`,width:`100%`,overflow:`hidden`,...m,display:`flex`,flexDirection:f===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:f===`horizontal`?`pan-y`:`pan-x`},children:e})})}Je.displayName=`Group`;function $(){let e=(0,o.useContext)(Ke);return g(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function Ye(e,t){let{id:n}=$(),r=(0,o.useRef)({collapse:J,expand:J,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:J});(0,o.useImperativeHandle)(t,()=>r.current,[]),Z(()=>{Object.assign(r.current,pe({groupId:n,panelId:e}))})}function Xe({children:e,className:t,collapsedSize:n=`0%`,collapsible:r=!1,defaultSize:i,disabled:s,elementRef:c,groupResizeBehavior:l=`preserve-relative-size`,id:u,maxSize:d=`100%`,minSize:f=`0%`,onResize:p,panelRef:m,style:h,...g}){let _=!!u,v=Ue(u),y=Ge({disabled:s}),b=(0,o.useRef)(null),x=We(b,c),{getPanelStyles:S,id:C,orientation:w,registerPanel:T,updatePanelProps:E}=$(),D=p!==null,O=Q((e,t,n)=>{p?.(e,u,n)});Z(()=>{let e=b.current;if(e!==null)return T({element:e,id:v,idIsStable:_,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:D?O:void 0,panelConstraints:{groupResizeBehavior:l,collapsedSize:n,collapsible:r,defaultSize:i,disabled:y.disabled,maxSize:d,minSize:f}})},[l,n,r,i,D,v,_,d,f,O,T,y]),(0,o.useEffect)(()=>{E(v,{disabled:s})},[s,v,E]),Ye(v,m);let k=()=>{let e=S(C,v);if(e)return JSON.stringify(e)},A=(0,o.useSyncExternalStore)(e=>N(C,e),k,k),j;return j=A?JSON.parse(A):i?{flexGrow:void 0,flexShrink:void 0,flexBasis:i}:{flexGrow:1},(0,a.jsx)(`div`,{...g,"data-disabled":s||void 0,"data-panel":!0,"data-testid":v,id:v,ref:x,style:{...Ze,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...j},children:(0,a.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...h,touchAction:w===`horizontal`?`pan-y`:`pan-x`},children:e})})}Xe.displayName=`Panel`;var Ze={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function Qe({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,a,o=e[n],s=t.find(e=>e.panelId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=V({layout:z({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=V({layout:z({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function $e({children:e,className:t,disabled:n,disableDoubleClick:r,elementRef:i,id:s,style:c,...l}){let u=Ue(s),d=Ge({disabled:n,disableDoubleClick:r}),[f,p]=(0,o.useState)({}),[m,h]=(0,o.useState)(`inactive`),[g,_]=(0,o.useState)(!1),v=(0,o.useRef)(null),y=We(v,i),{disableCursor:b,id:x,orientation:S,registerSeparator:C,updateSeparatorProps:w}=$(),T=S===`horizontal`?`vertical`:`horizontal`;Z(()=>{let e=v.current;if(e!==null){let t={disabled:d.disabled,disableDoubleClick:d.disableDoubleClick,element:e,id:u},n=C(t),r=_e(e=>{h(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=N(x,e=>{let{derivedPanelConstraints:n,layout:r,separatorToPanels:i}=e.next,a=i.get(t);if(a){let e=a[0],t=a.indexOf(e);p(Qe({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[x,u,C,d]),(0,o.useEffect)(()=>{w(u,{disabled:n,disableDoubleClick:r})},[n,r,u,w]);let E;n&&!b&&(E=`not-allowed`);let D;if(n)D=`disabled`;else switch(m){case`active`:D=`active`;break;default:D=g?`focus`:m}return(0,a.jsx)(`div`,{...l,"aria-controls":f.valueControls,"aria-disabled":n||void 0,"aria-orientation":T,"aria-valuemax":f.valueMax,"aria-valuemin":f.valueMin,"aria-valuenow":f.valueNow,children:e,className:t,"data-separator":D,"data-testid":u,id:u,onBlur:()=>_(!1),onFocus:()=>_(!0),ref:y,role:`separator`,style:{flexBasis:`auto`,cursor:E,...c,flexGrow:0,flexShrink:0,touchAction:`none`},tabIndex:n?void 0:0})}$e.displayName=`Separator`;function et({className:e,...t}){return(0,a.jsx)(Je,{"data-slot":`resizable-panel-group`,className:r(`flex h-full w-full aria-[orientation=vertical]:flex-col`,e),...t})}function tt({className:e,...t}){return(0,a.jsx)(Xe,{"data-slot":`resizable-panel`,className:r(`overflow-hidden`,e),...t})}function nt({withHandle:e,className:n,...i}){return(0,a.jsx)($e,{"data-slot":`resizable-handle`,className:r(`relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90`,n),...i,children:e&&(0,a.jsx)(`div`,{className:`z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border`,children:(0,a.jsx)(t,{className:`size-2.5`})})})}export{tt as n,et as r,nt as t};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{a as t,c as n,i as r,l as i,n as a,o,r as s,s as c,t as l}from"./use-run-status-favicon-DTTz9_8q.js";import{c as u,d,f as ee,l as f,s as p}from"./tab-console-BXF3HNpW.js";import{i as te,n as ne,o as re,s as ie,t as ae,u as m}from"./select-BE8tKMJy.js";import{t as oe}from"./circle-alert-RZI0g_tD.js";import{t as se}from"./copy-CWpai22Y.js";import{t as ce}from"./external-link-xaS9gsyo.js";import{t as le}from"./file-search-CeDGqauF.js";import{n as h,r as ue}from"./shortcut-hints-BGIo5sip.js";import{t as de}from"./use-page-title-CyHzJAcR.js";import{n as fe,r as pe,t as me}from"./popover-Boe1excX.js";import{t as he}from"./scroll-area-B8cRs7wd.js";import{i as ge,n as _e,r as ve,t as ye}from"./tabs-C3NqUdx9.js";import{Bt as be,Ft as g,G as xe,Ht as Se,I as Ce,In as we,It as Te,Kt as _,L as Ee,Lt as v,Nt as De,Pt as y,Rt as b,Tt as Oe,Ut as x,Vt as ke,Xt as S,Zn as Ae,ar as je,dr as Me,et as Ne,fr as Pe,gr as Fe,ir as C,n as Ie,nr as w,pr as Le,qn as T,qt as E,tr as D,tt as Re,zt as O}from"./index-C_HfATr4.js";import{t as k}from"./badge-D56AWxFv.js";import{n as ze,r as Be,t as Ve}from"./resizable-o8j3Lihm.js";import{t as He}from"./empty-state-DEbHhF9f.js";import{t as Ue}from"./use-keyboard-shortcuts-BM0qq0DE.js";import{t as A}from"./format-BpI4TiHn.js";import{i as We,n as Ge}from"./display-step-nrAd20yH.js";var Ke=Ae(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),qe=Ae(`panel-right-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),Je=Ae(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Ye=Ae(`video`,[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]),j=e(Fe(),1),M=D();function Xe({status:e}){switch(e){case`passed`:return(0,M.jsx)(k,{className:`bg-emerald-500/15 text-emerald-500 border-emerald-500/20`,children:`Passed`});case`failed`:return(0,M.jsx)(k,{variant:`destructive`,children:`Failed`});case`healed`:return(0,M.jsx)(k,{className:`bg-amber-500/15 text-amber-500 border-amber-500/20`,children:`Healed`});case`flaky`:return(0,M.jsx)(k,{className:`bg-amber-500/15 text-amber-500 border-amber-500/20`,children:`Flaky`});case`skipped`:return(0,M.jsx)(k,{variant:`secondary`,children:`Skipped`});case`cancelled`:return(0,M.jsx)(k,{className:`bg-muted text-muted-foreground border-border`,children:`Cancelled`});default:return(0,M.jsx)(k,{variant:`outline`,children:e})}}function Ze({run:e,steps:t,shortcutsOpen:n,onToggleShortcuts:a,onOpenArtifacts:o}){let s=Me(),c=t.reduce((e,t)=>e+(t.totalTokens??0),0),l=t.reduce((e,t)=>e+(t.promptTokens??0),0),u=t.reduce((e,t)=>e+(t.completionTokens??0),0),f=e.suiteId!=null&&e.parentRunId==null,p=f&&e.suiteId?w.suiteView(e.suiteId):e.testId?w.testView(e.testId):null,te=f&&e.suiteId?`Open suite`:`Open test`,ne=r(e.id,e.videoPath),re=e.metadata?.farmSessionUrl;return(0,M.jsxs)(`div`,{className:`flex h-14 shrink-0 items-center justify-between border-b px-4 min-w-0`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,M.jsx)(`button`,{onClick:()=>s(w.runs),className:`text-sm text-muted-foreground hover:text-foreground transition-colors shrink-0`,children:`Runs`}),(0,M.jsx)(T,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,M.jsx)(`span`,{className:`text-sm font-medium truncate`,children:e.name}),p?(0,M.jsx)(`a`,{href:p,target:`_blank`,rel:`noopener noreferrer`,"aria-label":te,className:`shrink-0 text-muted-foreground transition-colors hover:text-foreground`,children:(0,M.jsx)(i,{className:`h-3.5 w-3.5`})}):null,(0,M.jsx)(Xe,{status:e.status})]}),(0,M.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0`,children:[e.modelName&&(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1`,children:[(0,M.jsx)(ee,{className:`h-3.5 w-3.5`}),e.modelName]}),c>0&&(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1 cursor-default`,children:[(0,M.jsx)(Ke,{className:`h-3.5 w-3.5`}),A(l),` / `,A(u)]})}),(0,M.jsx)(g,{children:`Prompt tokens / Completion tokens`})]}),(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground flex items-center gap-1`,children:[(0,M.jsx)(d,{className:`h-3.5 w-3.5`}),S(e.duration)]}),(0,M.jsx)(`div`,{className:`h-4 w-px bg-border`}),(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,"aria-label":`Open run artifacts`,onClick:()=>o?.(`attributes`),children:(0,M.jsx)(qe,{className:`h-3.5 w-3.5`})})}),(0,M.jsx)(g,{children:`Run details (I/C/M)`})]}),(0,M.jsxs)(me,{open:n,onOpenChange:e=>{e!==n&&a()},children:[(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(pe,{asChild:!0,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,"aria-label":`Keyboard shortcuts`,children:(0,M.jsx)(ue,{className:`h-3.5 w-3.5`})})})}),(0,M.jsx)(g,{children:`Shortcuts (Shift+?)`})]}),(0,M.jsx)(fe,{align:`end`,sideOffset:8,className:`w-72 p-4`,children:(0,M.jsxs)(`div`,{className:`space-y-3`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Navigation`}),(0,M.jsx)(h,{hints:[{key:`↑ / K`,label:`Previous item`},{key:`↓ / J`,label:`Next item`},{key:`Shift+↑`,label:`Previous step`},{key:`Shift+↓`,label:`Next step`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Tabs`}),(0,M.jsx)(h,{hints:[{key:`1`,label:`Overview`},{key:`2`,label:`Env`},{key:`3`,label:`Network`},{key:`4`,label:`Console`},{key:`5`,label:`ARIA`},{key:`6`,label:`A11y`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Screenshots`}),(0,M.jsx)(h,{hints:[{key:`B`,label:`Before screenshot`},{key:`A`,label:`After screenshot`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Phases`}),(0,M.jsx)(h,{hints:[{key:`Shift+1`,label:`Toggle Observe`},{key:`Shift+2`,label:`Toggle Plan`},{key:`Shift+3`,label:`Toggle Execute`},{key:`Shift+4`,label:`Toggle Verify`}]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`h4`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium mb-2`,children:`Actions`}),(0,M.jsx)(h,{hints:[{key:`I`,label:`Details: Attributes`},{key:`C`,label:`Artifacts: Config`},{key:`M`,label:`Artifacts: Memory`},{key:`R`,label:`Re-run`},{key:`V`,label:`Video`},{key:`Shift+?`,label:`Shortcuts`},{key:`Esc`,label:`Close`}]})]})]})})]}),(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,"aria-label":`Re-run`,onClick:()=>{let t=e.attributes[`agent-qa.runner`]===`local`;Oe({file:e.filePath??e.name,local:t}).then(e=>{De.success(`Re-run started`),s(w.runLive(e.runId))}).catch(()=>De.error(`Failed to start re-run`))},children:(0,M.jsx)(Je,{className:`h-3.5 w-3.5`})})}),(0,M.jsx)(g,{children:`Re-run (R)`})]}),ne&&(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(`a`,{href:ne,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`Open recording`,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,children:(0,M.jsx)(Ye,{className:`h-3.5 w-3.5`})})})}),(0,M.jsx)(g,{children:`Recording (V)`})]}),re&&(0,M.jsxs)(y,{children:[(0,M.jsx)(v,{asChild:!0,children:(0,M.jsx)(`a`,{href:re,target:`_blank`,rel:`noopener noreferrer`,children:(0,M.jsx)(_,{variant:`ghost`,size:`icon-sm`,children:(0,M.jsx)(ce,{className:`h-3.5 w-3.5`})})})}),(0,M.jsx)(g,{children:`BrowserStack`})]})]})]})}function N(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function P(e){return Array.isArray(e)}function F(e,t=`Not captured`){return e===void 0?t:e===null?`None`:typeof e==`boolean`?e?`true`:`false`:typeof e==`number`?Number.isFinite(e)?String(e):`None`:typeof e==`string`?e.length>0?e:`None`:Array.isArray(e)?`${e.length} ${e.length===1?`item`:`items`}`:N(e)?`${Object.keys(e).length} ${Object.keys(e).length===1?`field`:`fields`}`:String(e)}function Qe({section:e}){return(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border px-4 py-4 text-sm text-muted-foreground`,children:[e,` was not captured for this run.`]})}function I({title:e,badges:t=[],children:n,className:r}){return(0,M.jsxs)(`section`,{className:E(`rounded-[2px] border border-border bg-transparent`,r),children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-2 border-b px-4 py-3`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,children:e}),t.map(e=>(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:e},e))]}),(0,M.jsx)(`div`,{className:`space-y-3 px-4 py-4`,children:n})]})}function L({rows:e}){return(0,M.jsx)(`div`,{className:`divide-y divide-border/50`,children:e.map(e=>(0,M.jsxs)(`div`,{className:`grid gap-1 py-1.5 text-xs sm:grid-cols-[160px_minmax(0,1fr)] sm:gap-3`,children:[(0,M.jsx)(`dt`,{className:`font-medium text-muted-foreground`,children:e.label}),(0,M.jsx)(`dd`,{className:E(`min-w-0 break-words text-foreground`,e.mono&&`break-all font-mono`),children:e.value})]},e.label))})}function $e({value:e}){return(0,M.jsx)(`span`,{className:E(`break-words`,(e==null||typeof e==`boolean`||typeof e==`number`)&&`font-mono text-[11px]`,e==null?`text-muted-foreground`:`text-foreground`),children:F(e)})}function R({value:e,label:t=`root`,level:n=0}){if(P(e))return(0,M.jsxs)(p,{children:[(0,M.jsxs)(f,{className:`group flex w-full min-w-0 items-center gap-1.5 py-1.5 text-left text-xs hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{className:`min-w-0 truncate font-medium text-muted-foreground`,children:t}),(0,M.jsxs)(`span`,{className:`font-mono text-[11px] text-foreground`,children:[e.length,` `,e.length===1?`item`:`items`]})]}),(0,M.jsx)(u,{children:(0,M.jsx)(`div`,{className:`ml-3 border-l border-border pl-3`,children:e.length===0?(0,M.jsx)(`div`,{className:`py-1.5 text-xs text-muted-foreground`,children:`None`}):e.map((e,r)=>(0,M.jsx)(R,{label:`${r}`,value:e,level:n+1},`${t}-${r}`))})})]});if(N(e)){let r=Object.entries(e);return(0,M.jsxs)(p,{defaultOpen:n===0,children:[(0,M.jsxs)(f,{className:`group flex w-full min-w-0 items-center gap-1.5 py-1.5 text-left text-xs hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{className:`min-w-0 truncate font-medium text-muted-foreground`,children:t}),(0,M.jsxs)(`span`,{className:`font-mono text-[11px] text-foreground`,children:[r.length,` `,r.length===1?`field`:`fields`]})]}),(0,M.jsx)(u,{children:(0,M.jsx)(`div`,{className:`ml-3 border-l border-border pl-3`,children:r.length===0?(0,M.jsx)(`div`,{className:`py-1.5 text-xs text-muted-foreground`,children:`None`}):r.map(([e,t])=>(0,M.jsx)(R,{label:e,value:t,level:n+1},e))})})]})}return(0,M.jsxs)(`div`,{className:`grid gap-1 py-1.5 text-xs sm:grid-cols-[160px_minmax(0,1fr)] sm:gap-3`,children:[(0,M.jsx)(`span`,{className:`min-w-0 break-words font-medium text-muted-foreground`,children:t}),(0,M.jsx)($e,{value:e})]})}function et({label:e,content:t}){return t?(0,M.jsxs)(p,{children:[(0,M.jsxs)(f,{className:`group flex w-full items-center gap-1.5 rounded-[2px] py-1.5 text-left text-xs font-medium text-muted-foreground hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),e]}),(0,M.jsx)(u,{children:(0,M.jsx)(`pre`,{className:`mt-2 max-h-80 overflow-x-auto overflow-y-auto rounded-[2px] border border-border bg-muted/30 p-3 font-mono text-[11px] leading-relaxed whitespace-pre text-foreground`,children:t})})]}):null}function z(e,t){return e?e[t]:void 0}function B(e,t){let n=z(e,t);return typeof n==`string`&&n.length>0?n:null}function V(e,t){let n=z(e,t);return N(n)?n:null}function H(e,t){let n=z(e,t);return P(n)?n:[]}function tt(e){return N(e)&&[B(e,`code`),B(e,`phase`),B(e,`message`)].filter(Boolean).join(` - `)||null}function U(e){let t=B(e,`kind`);return t===`test`||t===`suite`?t:`unknown`}function W(e,t){let n=B(e,`childRunId`);if(n)return n;let r=B(e,`testId`),i=B(e,`name`);return t.children.find(({run:e})=>!!(r&&e.testId===r||i&&e.name===i))?.run.id??null}function G({config:e}){let t=V(e,`envFile`),n=V(e,`secretsFile`),r=H(e,`hooks`),i=V(e,`model`),a=B(n,`path`),o=B(n,`status`),s=typeof z(n,`count`)==`number`?z(n,`count`):null;return(0,M.jsx)(L,{rows:[{label:`Raw config`,value:B(e,`rawConfigContent`)?`Captured`:`Not captured`},{label:`Env file`,value:F(B(t,`path`))},{label:`Secrets file`,value:n?(0,M.jsxs)(`span`,{className:`inline-flex min-w-0 flex-wrap items-center gap-1.5`,children:[(0,M.jsx)(`span`,{className:`break-all font-mono text-xs`,children:F(a)}),o?(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:o}):null,s===null?null:(0,M.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[s,` secret`,s===1?``:`s`]})]}):`Not captured`},{label:`CLI vars`,value:F(Object.keys(V(e,`cliVars`)??{}).length),mono:!0},{label:`Inline vars`,value:F(Object.keys(V(e,`inlineVars`)??{}).length),mono:!0},{label:`Hooks`,value:F(r.length),mono:!0},{label:`Model`,value:i?(0,M.jsx)(R,{label:`model`,value:i}):`Not captured`}]})}function nt({source:e}){let t=U(e),n=tt(z(e,`error`));return(0,M.jsx)(L,{rows:[{label:`Kind`,value:t,mono:!0},{label:`Name`,value:F(B(e,`name`))},{label:t===`suite`?`Suite ID`:`Test ID`,value:F(B(e,t===`suite`?`suiteId`:`testId`)),mono:!0},{label:`Path`,value:F(B(e,`filePath`)),mono:!0},{label:`Load status`,value:F(B(e,`loadStatus`)),mono:!0},{label:`Error`,value:n??`None`}]})}function rt({source:e,response:t}){let n=H(e,`members`).filter(N).sort((e,t)=>(typeof e.index==`number`?e.index:0)-(typeof t.index==`number`?t.index:0));return n.length===0?null:(0,M.jsx)(I,{title:`Suite Members`,badges:[`${n.length} members`],children:(0,M.jsx)(`div`,{className:`space-y-3`,children:n.map(e=>{let n=V(e,`ref`),r=typeof e.index==`number`?e.index:0,i=W(e,t),a=tt(z(e,`error`));return(0,M.jsxs)(`div`,{"data-suite-member-index":r,className:`rounded-[2px] border border-border p-3`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[`#`,r+1]}),(0,M.jsx)(`span`,{className:`min-w-0 flex-1 break-words text-sm font-medium`,children:B(e,`name`)??B(n,`test`)??`Unnamed member`}),(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:F(B(e,`loadStatus`))})]}),(0,M.jsx)(L,{rows:[{label:`Test ID`,value:F(B(e,`testId`)),mono:!0},{label:`Ref`,value:F(B(n,`test`)),mono:!0},{label:`Ref ID`,value:F(B(n,`id`)),mono:!0},{label:`Path`,value:F(B(e,`filePath`)),mono:!0},{label:`Target`,value:F(B(e,`target`))},{label:`Child run`,value:i?(0,M.jsx)(`a`,{className:`break-all text-primary hover:underline`,href:w.runDetail(i),children:i}):`Not captured`,mono:!!i},{label:`Error`,value:a??`None`}]}),(0,M.jsxs)(p,{children:[(0,M.jsxs)(f,{className:`group mt-2 flex w-full items-center gap-1.5 text-left text-xs font-medium text-muted-foreground hover:text-foreground`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),`Member snapshots`]}),(0,M.jsxs)(u,{className:`mt-2 space-y-2`,children:[(0,M.jsx)(et,{label:`Raw member YAML`,content:B(e,`rawYaml`)}),z(e,`resolvedDefinition`)===void 0?null:(0,M.jsx)(R,{label:`resolvedDefinition`,value:z(e,`resolvedDefinition`)})]})]})]},`${r}-${B(e,`testId`)??B(n,`test`)??`member`}`)})})})}function K({response:e}){let t=e.artifact,n=t?.payload??{schemaVersion:1},r=N(n)?n:{schemaVersion:1},i=V(r,`config`),a=V(r,`source`),o=V(r,`runtime`),s=H(r,`errors`),c=new Set(e.missingSections),l=U(a);return(0,M.jsxs)(`div`,{className:`space-y-4`,children:[(0,M.jsx)(I,{title:`Run Summary`,badges:[t?.kind??`unknown`],children:(0,M.jsx)(L,{rows:[{label:`Run`,value:e.run.name},{label:`Run ID`,value:e.run.id,mono:!0},{label:`Artifact kind`,value:t?.kind??`unknown`,mono:!0},{label:`Schema version`,value:t?.schemaVersion??r.schemaVersion??`Not captured`,mono:!0},{label:`Finalized`,value:t?.finalizedAt??`Not finalized`,mono:!0},{label:`Test ID`,value:F(e.run.testId),mono:!0},{label:`Suite ID`,value:F(e.run.suiteId),mono:!0},{label:`Platform`,value:F(e.run.platform)},{label:`Target`,value:F(e.run.targetName)}]})}),(0,M.jsx)(I,{title:`Global Config`,children:c.has(`config`)||!i?(0,M.jsx)(Qe,{section:`Config`}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(G,{config:i}),z(i,`parsedConfig`)===void 0?null:(0,M.jsx)(R,{label:`parsedConfig`,value:z(i,`parsedConfig`)}),(0,M.jsx)(et,{label:`Raw global config`,content:B(i,`rawConfigContent`)})]})}),(0,M.jsx)(I,{title:`Effective Config`,children:c.has(`config`)||!i?(0,M.jsx)(Qe,{section:`Config`}):(0,M.jsx)(R,{label:`effectiveConfig`,value:z(i,`effectiveConfig`)})}),(0,M.jsx)(I,{title:`Source Snapshot`,badges:[l],children:c.has(`source`)||!a?(0,M.jsx)(Qe,{section:`Source`}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(nt,{source:a}),(0,M.jsx)(et,{label:l===`suite`?`Raw suite YAML`:`Raw test YAML`,content:B(a,`rawYaml`)}),z(a,`resolvedDefinition`)===void 0?null:(0,M.jsx)(R,{label:`resolvedDefinition`,value:z(a,`resolvedDefinition`)})]})}),a?(0,M.jsx)(rt,{source:a,response:e}):null,o||s.length>0?(0,M.jsxs)(I,{title:`Runtime and Errors`,badges:s.length>0?[`${s.length} errors`]:[],children:[o?(0,M.jsx)(R,{label:`runtime`,value:o}):null,s.length>0?(0,M.jsx)(`div`,{className:`space-y-2`,children:s.map((e,t)=>(0,M.jsx)(`div`,{className:`rounded-[2px] border border-red-500/20 bg-red-500/5 p-3 text-sm`,children:tt(e)??JSON.stringify(e)},t))}):null]}):null]})}var it=[{action:`add`,title:`Added`,className:`border-emerald-500/20 bg-emerald-500/5 text-emerald-500`,railClassName:`border-l-emerald-500/80`,surfaceClassName:`bg-emerald-500/[0.04]`},{action:`confirm`,title:`Updated/Confirmed`,className:`border-blue-500/20 bg-blue-500/5 text-blue-500`,railClassName:`border-l-blue-500/80`,surfaceClassName:`bg-blue-500/[0.04]`},{action:`deprecate`,title:`Deprecated`,className:`border-amber-500/25 bg-amber-500/5 text-amber-500`,railClassName:`border-l-amber-500/80`,surfaceClassName:`bg-amber-500/[0.04]`},{action:`delete`,title:`Deleted`,className:`border-red-500/20 bg-red-500/5 text-red-500`,railClassName:`border-l-red-500/80`,surfaceClassName:`bg-red-500/[0.04]`}];function q(e,t){return e?e[t]:void 0}function J(e,t){let n=q(e,t);return typeof n==`string`&&n.length>0?n:null}function Y(e,t){let n=q(e,t);return typeof n==`number`&&Number.isFinite(n)?n:null}function X(e){if(!N(e))return null;let t=J(e,`id`),n=J(e,`title`),r=J(e,`content`),i=Y(e,`trust`),a=Y(e,`confirmed_count`),o=Y(e,`contradicted_count`);return!t||!n||!r||i===null||a===null||o===null?null:{id:t,title:n,content:r,trust:i,last_confirmed:J(e,`last_confirmed`)??`Not captured`,confirmed_count:a,contradicted_count:o,source_test:J(e,`source_test`)??`Not captured`}}function at(e){if(!N(e))return null;let t=J(e,`action`);if(t!==`add`&&t!==`confirm`&&t!==`deprecate`&&t!==`delete`)return null;let n=J(e,`tier`);return n!==`products`&&n!==`suites`&&n!==`tests`?null:{action:t,tier:n,scope:J(e,`scope`)??`unknown`,observationId:J(e,`observationId`)??X(q(e,`after`))?.id??X(q(e,`before`))?.id??`unknown`,reasoning:J(e,`reasoning`)??`No curator reasoning captured.`,before:X(q(e,`before`)),after:X(q(e,`after`)),error:J(e,`error`)??void 0}}function ot(e){return N(e)?[`added`,`confirmed`,`deprecated`,`deleted`,`deltas`,`errors`,`curatorDuration`,`tokenUsage`].some(t=>t in e):!1}function st(e){let t=e?.payload;if(!N(t))return null;let n=q(t,`memory`);if(!N(n))return null;let r=q(n,`log`);return ot(r)?r:null}function Z(e){if(!e)return null;try{let t=JSON.parse(e);return ot(t)?t:null}catch{return null}}function Q(e){let t=[];for(let n of e.children){let e=st(n.artifact);if(e){t.push(e);continue}let r=Z(n.run.memoryLog);r&&t.push(r)}return t}function $(e,t){return e.reduce((e,n)=>e+(Y(n,t)??0),0)}function ct(e){let t=!1,n={promptTokens:0,completionTokens:0,totalTokens:0};for(let r of e){let e=q(r,`tokenUsage`);N(e)&&(t=!0,n.promptTokens+=Y(e,`promptTokens`)??0,n.completionTokens+=Y(e,`completionTokens`)??0,n.totalTokens+=Y(e,`totalTokens`)??0)}return t?n:void 0}function lt(e){if(e.length===0)return null;let t=e.flatMap(e=>{let t=q(e,`deltas`);return P(t)?t:[]}),n=e.flatMap(e=>{let t=q(e,`errors`);return P(t)?t:[]}),r={added:$(e,`added`),confirmed:$(e,`confirmed`),deprecated:$(e,`deprecated`),deleted:$(e,`deleted`),errors:n,curatorDuration:$(e,`curatorDuration`),deltas:t},i=ct(e);return i&&(r.tokenUsage=i),r}function ut(e){let t=st(e.artifact);if(t)return t;let n=Q(e);return n.length>0?lt(n):Z(e.run.memoryLog)}function dt(e){let t=q(e,`deltas`);return P(t)?t.map(at).filter(e=>!!e):[]}function ft(e){return Object.fromEntries(it.map(t=>[t.action,e.filter(e=>e.action===t.action)]))}function pt(e,t,n){return Y(e,t===`confirm`?`confirmed`:t===`add`?`added`:t===`deprecate`?`deprecated`:`deleted`)??n}function mt(e,t){if(e==null||t==null)return null;let n=Math.round((t-e)*1e3)/1e3;return n===0?`0`:n>0?`+${n}`:String(n)}function ht(e,t){return!e||!t?[]:[`title`,`content`,`trust`,`confirmed_count`,`contradicted_count`,`last_confirmed`,`source_test`].filter(n=>e[n]!==t[n])}function gt({log:e,counts:t}){let n=q(e,`tokenUsage`),r=Y(e,`curatorDuration`),i=N(n)?Y(n,`promptTokens`):null,a=N(n)?Y(n,`completionTokens`):null,o=N(n)?Y(n,`totalTokens`):null;return(0,M.jsxs)(`section`,{className:`rounded-[2px] border border-border/60 bg-muted/20 px-3 py-3`,children:[(0,M.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-4`,children:it.map(e=>(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:e.title}),(0,M.jsx)(`div`,{className:`mt-1 font-mono text-lg text-foreground`,children:t[e.action]})]},e.action))}),(0,M.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-3 border-t border-border/40 pt-2 text-xs text-muted-foreground`,children:[(0,M.jsxs)(`span`,{children:[`Curator duration: `,r==null?`Not captured`:S(r)]}),(0,M.jsxs)(`span`,{children:[`Tokens: `,o==null?`Not captured`:`${A(i??0)} / ${A(a??0)} / ${A(o)}`]})]})]})}function _t({label:e,observation:t}){return t?(0,M.jsxs)(`div`,{className:`space-y-2`,children:[(0,M.jsx)(`div`,{className:`text-[11px] font-semibold text-muted-foreground`,children:e}),(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,M.jsxs)(`span`,{className:`min-w-0 break-words`,children:[`Title `,(0,M.jsx)(`span`,{className:`text-foreground`,children:t.title})]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Trust `,t.trust]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Confirmed `,t.confirmed_count]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Contradicted `,t.contradicted_count]}),(0,M.jsxs)(`span`,{className:`min-w-0 break-all font-mono`,children:[`ID `,t.id]}),(0,M.jsxs)(`span`,{className:`min-w-0 break-all font-mono`,children:[`Source `,t.source_test]}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[`Last `,t.last_confirmed]})]}),(0,M.jsx)(`p`,{className:`whitespace-pre-wrap break-words text-sm leading-6 text-foreground`,children:t.content})]}):null}function vt({delta:e,group:t}){let n=e.after?.title??e.before?.title??e.observationId,r=mt(e.before?.trust,e.after?.trust),i=mt(e.before?.confirmed_count,e.after?.confirmed_count),a=mt(e.before?.contradicted_count,e.after?.contradicted_count),o=ht(e.before,e.after);return(0,M.jsx)(p,{children:(0,M.jsxs)(`div`,{className:E(`border-y border-l-2 border-border/55 px-4 py-3`,t.railClassName,t.surfaceClassName),children:[(0,M.jsxs)(f,{className:`group flex w-full min-w-0 items-start gap-2 text-left`,children:[(0,M.jsx)(T,{className:`mt-1 h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsx)(`h4`,{className:`min-w-0 flex-1 break-words text-sm font-medium text-foreground`,children:n}),(0,M.jsx)(k,{variant:`outline`,className:E(`text-[10px]`,t.className),children:it.find(t=>t.action===e.action)?.title??e.action}),(0,M.jsxs)(k,{variant:`outline`,className:`max-w-full whitespace-normal break-all text-left text-[10px]`,children:[e.tier,`/`,e.scope]})]}),(0,M.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2 font-mono text-[11px] text-muted-foreground`,children:[(0,M.jsx)(`span`,{className:`break-all`,children:e.observationId}),r?(0,M.jsxs)(`span`,{children:[`trust `,r]}):null,i?(0,M.jsxs)(`span`,{children:[`confirmed `,i]}):null,a?(0,M.jsxs)(`span`,{children:[`contradicted `,a]}):null]}),(0,M.jsx)(`p`,{className:`mt-2 line-clamp-2 break-words text-xs text-muted-foreground`,children:e.reasoning})]})]}),(0,M.jsxs)(u,{className:`mt-3 space-y-3`,children:[o.length>0?(0,M.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`Changed fields: `,(0,M.jsx)(`span`,{className:`font-mono text-foreground`,children:o.join(`, `)})]}):(0,M.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Changed fields: None captured`}),e.error?(0,M.jsxs)(`div`,{className:`text-xs text-red-500`,children:[`Error: `,e.error]}):null,e.action===`add`?(0,M.jsx)(_t,{label:`After`,observation:e.after}):e.action===`delete`?(0,M.jsx)(_t,{label:`Before`,observation:e.before}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(_t,{label:`Before`,observation:e.before}),(0,M.jsx)(_t,{label:`After`,observation:e.after})]})]})]})})}function yt({response:e}){let t=ut(e);if(!t)return(0,M.jsx)(`div`,{className:`rounded-[2px] border border-border px-4 py-4 text-sm text-muted-foreground`,children:`Memory was not captured for this run.`});let n=ft(dt(t)),r={add:pt(t,`add`,n.add.length),confirm:pt(t,`confirm`,n.confirm.length),deprecate:pt(t,`deprecate`,n.deprecate.length),delete:pt(t,`delete`,n.delete.length)},i=r.add+r.confirm+r.deprecate+r.delete;return(0,M.jsxs)(`div`,{className:`space-y-4`,children:[(0,M.jsx)(gt,{log:t,counts:r}),i===0?(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border px-4 py-4`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`No memory changes`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Memory completed without adding, updating, deprecating, or deleting observations.`})]}):null,it.map(e=>{let t=n[e.action];return(0,M.jsxs)(`section`,{className:`scroll-mt-4 space-y-3`,children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-2 px-1`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,children:e.title}),(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[r[e.action],` changes`]})]}),(0,M.jsx)(`div`,{"data-memory-group":e.title,className:`space-y-3`,children:t.length===0?(0,M.jsxs)(`div`,{className:`px-1 text-sm text-muted-foreground`,children:[`No `,e.title.toLowerCase(),` changes.`]}):t.map(t=>(0,M.jsx)(vt,{delta:t,group:e},`${t.action}-${t.observationId}`))})]},e.action)}),P(q(t,`errors`))&&q(t,`errors`).length>0?(0,M.jsxs)(`section`,{className:`space-y-3`,children:[(0,M.jsxs)(`header`,{className:`flex min-w-0 items-center gap-2 px-1`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 flex-1 truncate text-sm font-semibold text-foreground`,children:`Memory Errors`}),(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[q(t,`errors`).length,` errors`]})]}),(0,M.jsx)(`div`,{className:`space-y-2`,children:q(t,`errors`).map((e,t)=>(0,M.jsx)(`div`,{className:`rounded-[2px] border border-red-500/20 bg-red-500/5 p-3 text-sm text-red-500`,children:F(e)},t))})]}):null]})}function bt(){return(0,M.jsxs)(`div`,{className:`space-y-4`,"aria-label":`Loading artifact data`,children:[(0,M.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading artifact data...`}),[0,1,2].map(e=>(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border p-4`,children:[(0,M.jsx)(b,{className:`h-4 w-40`}),(0,M.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[(0,M.jsx)(b,{className:`h-3 w-full`}),(0,M.jsx)(b,{className:`h-3 w-5/6`}),(0,M.jsx)(b,{className:`h-3 w-3/5`})]})]},e))]})}function xt({error:e,onRetry:t}){return(0,M.jsx)(`div`,{className:`rounded-[2px] border border-red-500/20 bg-red-500/5 p-4`,children:(0,M.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,M.jsx)(oe,{className:`mt-0.5 h-4 w-4 shrink-0 text-red-500`}),(0,M.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`Could not load artifact data`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Retry the request. If it continues, verify the dashboard server can read run artifacts.`}),(0,M.jsx)(`p`,{className:`mt-2 break-words font-mono text-xs text-red-500`,children:e}),(0,M.jsx)(_,{className:`mt-3`,size:`sm`,variant:`outline`,onClick:t,children:`Retry`})]})]})})}function St(){return(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border p-4`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`Artifact data is not available for this run`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`This run does not have a persisted artifact record.`})]})}function Ct(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e[t];return n&&typeof n==`object`&&!Array.isArray(n)?n:null}function wt(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let t=Object.entries(e).filter(e=>typeof e[1]==`string`);return Object.fromEntries(t)}function Tt(e){let t=wt(e.run.attributes);if(Object.keys(t).length>0)return t;let n=e.artifact?.payload;return wt(Ct(Ct(n,`metadata`),`attributes`))}function Et(e){return Object.entries(e).sort(([e],[t])=>{let n=e.startsWith(`agent-qa.`);return n===t.startsWith(`agent-qa.`)?e.localeCompare(t):n?-1:1})}function Dt(e){navigator.clipboard?.writeText(e)}function Ot({response:e}){let t=Et(Tt(e));return t.length===0?(0,M.jsxs)(`div`,{className:`rounded-[2px] border border-border p-4`,children:[(0,M.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:`No run attributes`}),(0,M.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`This run did not record any attributes.`})]}):(0,M.jsxs)(`div`,{className:`space-y-3`,children:[(0,M.jsx)(`div`,{className:`flex justify-end`,children:(0,M.jsxs)(_,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>Dt(JSON.stringify(Object.fromEntries(t),null,2)),children:[(0,M.jsx)(se,{className:`size-4`}),`Copy JSON`]})}),(0,M.jsx)(`div`,{className:`overflow-hidden rounded-[2px] border border-border`,children:(0,M.jsx)(`table`,{className:`w-full table-fixed text-sm`,children:(0,M.jsx)(`tbody`,{children:t.map(([e,t])=>(0,M.jsxs)(`tr`,{className:`border-b border-border/70 last:border-b-0`,children:[(0,M.jsx)(`th`,{className:`w-[240px] align-top px-3 py-2 text-left font-mono text-xs font-medium text-muted-foreground`,children:e}),(0,M.jsx)(`td`,{className:`align-top px-3 py-2`,children:(0,M.jsxs)(`div`,{className:`flex min-w-0 items-start gap-2`,children:[(0,M.jsx)(`span`,{className:`min-w-0 flex-1 break-all font-mono text-xs text-foreground`,children:t}),(0,M.jsx)(_,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Copy ${e} value`,title:`Copy value`,onClick:()=>Dt(t),children:(0,M.jsx)(se,{className:`size-3.5`})})]})})]},e))})})})]})}function kt({tab:e,response:t}){return e===`attributes`?(0,M.jsx)(Ot,{response:t}):e===`config`?(0,M.jsx)(K,{response:t}):(0,M.jsx)(yt,{response:t})}function At({tab:e,response:t,loading:n,error:r,onRetry:i}){return n?(0,M.jsx)(bt,{}):r?(0,M.jsx)(xt,{error:r,onRetry:i}):!t||e!==`attributes`&&!t.artifact?(0,M.jsx)(St,{}):(0,M.jsx)(kt,{tab:e,response:t})}function jt({run:e,open:t,tab:n,response:r,loading:i,error:a,onOpenChange:o,onTabChange:s,onRetry:c}){let l=r?.artifact??null,u=e.name||`Run ${e.id}`;return(0,M.jsx)(O,{open:t,onOpenChange:o,children:(0,M.jsxs)(be,{side:`right`,className:`w-[min(820px,92vw)] sm:max-w-none gap-0 overflow-hidden p-0`,children:[(0,M.jsxs)(Se,{className:`border-b px-4 py-3 pr-12`,children:[(0,M.jsx)(x,{className:`text-base leading-snug`,children:`Run details`}),(0,M.jsx)(ke,{className:`truncate text-xs`,children:u}),(0,M.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 pt-1 text-xs text-muted-foreground`,children:[(0,M.jsx)(`span`,{className:`break-all font-mono`,children:e.id}),l?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(k,{variant:`outline`,className:`text-[10px]`,children:l.kind}),(0,M.jsxs)(k,{variant:`outline`,className:`text-[10px]`,children:[`schema `,l.schemaVersion]}),(0,M.jsx)(k,{variant:`outline`,className:E(`text-[10px]`,l.finalizedAt?`border-emerald-500/20 text-emerald-500`:`border-amber-500/25 text-amber-500`),children:l.finalizedAt?`finalized`:`open`})]}):null]})]}),(0,M.jsxs)(ye,{value:n,onValueChange:e=>s(e),className:`min-h-0 flex-1 overflow-hidden`,children:[(0,M.jsx)(`div`,{className:`border-b px-3`,children:(0,M.jsxs)(ve,{variant:`line`,className:`h-9 w-full justify-start`,children:[(0,M.jsx)(ge,{value:`attributes`,className:`max-w-32 flex-none`,children:`Attributes`}),(0,M.jsx)(ge,{value:`config`,className:`max-w-32 flex-none`,children:`Config`}),(0,M.jsx)(ge,{value:`memory`,className:`max-w-32 flex-none`,children:`Memory`})]})}),(0,M.jsxs)(he,{className:`min-h-0 flex-1`,children:[(0,M.jsx)(_e,{value:`attributes`,className:`m-0 px-4 py-4`,children:(0,M.jsx)(At,{tab:`attributes`,response:r,loading:i,error:a,onRetry:c})}),(0,M.jsx)(_e,{value:`config`,className:`m-0 px-4 py-4`,children:(0,M.jsx)(At,{tab:`config`,response:r,loading:i,error:a,onRetry:c})}),(0,M.jsx)(_e,{value:`memory`,className:`m-0 px-4 py-4`,children:(0,M.jsx)(At,{tab:`memory`,response:r,loading:i,error:a,onRetry:c})})]})]})]})})}function Mt({status:e}){let t=C(e);return(0,M.jsx)(k,{className:je(t.tone),children:t.label})}function Nt(e,t){let n=e.split(/\s+/);return n.length<=t?{truncated:e,isTruncated:!1}:{truncated:n.slice(0,t).join(` `)+`...`,isTruncated:!0}}function Pt({summary:e}){let[t,n]=(0,j.useState)(!1),[r,i]=(0,j.useState)(!1),{truncated:a,isTruncated:o}=Nt(e,20);return(0,M.jsx)(`div`,{className:`mx-2 mt-2 rounded-[2px] border border-red-500/20 bg-red-500/5 px-3 py-2 shrink-0`,children:(0,M.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,M.jsx)(oe,{className:`h-4 w-4 text-red-400 shrink-0 mt-0.5`}),(0,M.jsx)(`span`,{className:`flex-1 text-sm text-foreground/80 select-text`,children:t?e:a}),(0,M.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(e),i(!0),setTimeout(()=>i(!1),2e3)},className:`shrink-0 mt-0.5 p-0.5 rounded-sm hover:bg-red-500/10 transition-colors`,title:`Copy failure summary`,children:r?(0,M.jsx)(m,{className:`h-3.5 w-3.5 text-emerald-400`}):(0,M.jsx)(se,{className:`h-3.5 w-3.5 text-muted-foreground`})}),o&&(0,M.jsx)(`button`,{onClick:()=>n(e=>!e),className:`shrink-0 mt-0.5 p-0.5 rounded-sm hover:bg-red-500/10 transition-colors`,children:(0,M.jsx)(T,{className:E(`h-3.5 w-3.5 text-muted-foreground transition-transform`,t&&`rotate-90`)})})]})})}function Ft(e,t){let n=new Map(t.map((e,t)=>[e.id,t]));return[...e].sort((e,t)=>{let r=n.get(e.runId)??0,i=n.get(t.runId)??0;return r===i?e.stepOrder-t.stepOrder:r-i})}function It(e){return e?.suiteId!=null&&e.parentRunId==null}function Lt(e,t,n,r){return We((r&&n===`all`&&t.length>0?Ft(e,t):[...e].sort((e,t)=>e.stepOrder-t.stepOrder)).map(Ge))}function Rt(e,t,n){let r=t.get(`step`),i=t.get(`run`),a=t.get(`sub`);if(r){let t=Number.parseInt(r,10),o=e.find(e=>e.rawStepOrder===t?n&&i?e.rawRunId===i:!0:!1);if(o)return a==null?{type:`step`,stepId:o.id}:{type:`subaction`,stepId:o.id,subIndex:Number.parseInt(a,10)}}return e.length>0?{type:`step`,stepId:e[0].id}:null}function zt(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=n.top+12,a=n.bottom-12;if(r.top>=i&&r.bottom<=a)return;let o=r.top<i?e.scrollTop+(r.top-i):e.scrollTop+(r.bottom-a),s=Math.max(0,o);if(typeof e.scrollTo==`function`){e.scrollTo({top:s,behavior:`smooth`});return}e.scrollTop=s}function Bt(){let{id:e}=Pe(),i=Me(),[d,ee]=Le(),[m,oe]=(0,j.useState)(null);de(m?`Run - ${m.name}`:`Run`),a(l(m?.status));let[se,ce]=(0,j.useState)([]),[h,ue]=(0,j.useState)([]),[fe,pe]=(0,j.useState)(null),[me,he]=(0,j.useState)(!0),[ge,_e]=(0,j.useState)(!1),[ve,ye]=(0,j.useState)(!1),[be,g]=(0,j.useState)(1),Se=(0,j.useRef)(null),v=(0,j.useRef)(null),y=(0,j.useRef)(null),b=(0,j.useRef)(null),[x,ke]=(0,j.useState)([]),[S,Ae]=(0,j.useState)(`all`),[je,Fe]=(0,j.useState)([]),[C,D]=(0,j.useState)(null),[O,k]=(0,j.useState)([]),[We,Ge]=(0,j.useState)(null),[Ke,qe]=(0,j.useState)(!1),[Je,Ye]=(0,j.useState)(null),[Xe,N]=(0,j.useState)(!1),[P,F]=(0,j.useState)(`attributes`),[Qe,I]=(0,j.useState)(null),[L,$e]=(0,j.useState)(!1),[R,et]=(0,j.useState)(null),z=(0,j.useRef)(null),B=(0,j.useRef)(0),[V,H]=(0,j.useState)(()=>{let e=d.get(`tab`);return e===`screenshot`?`overview`:e??`overview`});(0,j.useEffect)(()=>{if(!e)return;b.current=null;let t=!1,n=0;async function r(){try{let{executions:n}=await Ee();if(t)return;if(n.some(t=>t.runId===e)){i(w.runLive(e),{replace:!0});return}}catch{}try{let n=await Ne(e);if(t)return;if(oe(n.run),It(n.run)&&n.tests&&n.tests.length>0){ke(n.tests),Ae(`all`);let e=[];for(let r of n.tests)try{let n=await Ne(r.id);if(t)return;e.push(...n.steps)}catch{}Fe(e),ce(e),D(Rt(Lt(e,n.tests,`all`,!0),d,!0))}else{ce(n.steps);let e=n.attempts??[];if(ue(e),e.length>0){let n=e[e.length-1];pe(n.id);let r=await Ne(n.id);t||(ce(r.steps),D(Rt(Lt(r.steps,[],``,!1),d,!1)))}else D(Rt(Lt(n.steps,[],``,!1),d,!1))}}catch(e){if(t)return;if(e instanceof Error&&e.message.includes(`404`)){if(n<5){n++,setTimeout(()=>{t||r()},1e3);return}_e(!0)}else De.error(`Failed to load run`)}finally{t||he(!1)}}return r(),()=>{t=!0}},[e,i]),(0,j.useEffect)(()=>{if(!e||me)return;let t=!1;return xe(e).then(({logs:e})=>{t||k(e)}).catch(()=>{}),()=>{t=!0}},[e,me]),(0,j.useEffect)(()=>{z.current=null,B.current+=1,I(null),et(null),$e(!1)},[m?.id]);let tt=(0,j.useCallback)(async()=>{if(!m?.id)return;let e=B.current+1;B.current=e,$e(!0),et(null);try{let t=await Re(m.id);if(B.current!==e)return;z.current=m.id,I(t)}catch(t){if(B.current!==e)return;et(t instanceof Error?t.message:`Failed to load artifact data`)}finally{B.current===e&&$e(!1)}},[m?.id]);(0,j.useEffect)(()=>{!Xe||!m?.id||L||R||z.current===m.id&&Qe||tt()},[Xe,R,L,Qe,tt,m?.id]);let U=(0,j.useCallback)(e=>{F(e),N(!0)},[]),W=(0,j.useMemo)(()=>Lt(se,x,S,It(m)),[se,x,S,m]),G=(0,j.useMemo)(()=>o(C)?W.find(e=>e.id===C.stepId)??null:null,[C,W]),nt=G?.rawRunId??m?.id??null;(0,j.useEffect)(()=>{if(!nt){Ge(null);return}Ge(null);let e=!1;return Ce(nt).then(t=>{e||Ge(t)}).catch(()=>{e||Ge(null)}),()=>{e=!0}},[nt]);let rt=(0,j.useMemo)(()=>!c(C)||!G?null:G.subActionsData?.[C.subIndex]??null,[C,G]),K=(0,j.useMemo)(()=>{if(!G)return null;if(rt){let e=rt.screenshotBeforePath??null,t=rt.screenshotAfterPath??null;return!e&&!t?null:{key:[G.id,`sub`,rt.index,e??``,t??``].join(`|`),beforePath:e,afterPath:t}}let e=G.screenshotBeforePath,t=G.screenshotPath;return!e&&!t?null:{key:[G.id,`step`,e??``,t??``].join(`|`),beforePath:e,afterPath:t}},[G,rt]),it=K&&Je?.key===K.key?Je.side:void 0,q=o(C)?C.stepId:null,J=(0,j.useMemo)(()=>O.filter(e=>e.stepId===null&&e.phase===`setup`),[O]),Y=(0,j.useMemo)(()=>O.filter(e=>e.stepId===null&&e.phase===`teardown`),[O]),X=(0,j.useMemo)(()=>O.filter(e=>e.stepId!==null),[O]),at=(0,j.useMemo)(()=>G?X.filter(e=>e.stepId===G.id?!0:!e.stepId||G.rawRunId&&e.runId&&G.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===G.rawStepOrder):[],[X,G]),ot=(0,j.useMemo)(()=>C?.type===`hook`?O.find(e=>e.id===C.hookId)??null:null,[C,O]),st=(0,j.useMemo)(()=>C?.type===`execution`?O.find(e=>e.id===C.logId)??null:null,[C,O]),Z=(0,j.useMemo)(()=>{let e=[],t=It(m)&&S===`all`&&x.length>0,n=t?new Set(x.map(e=>e.id)):null;for(let t of J)(!n||!n.has(t.runId))&&e.push({type:`hook`,logId:t.id});if(t){let t=new Map;for(let e of W){let n=e.rawRunId??e.id,r=t.get(n)??[];r.push(e),t.set(n,r)}for(let[n,r]of t){for(let t of J)t.runId===n&&e.push({type:`hook`,logId:t.id});for(let t of r)if(e.push({type:`step`,stepId:t.id}),t.id===q){let n=X.filter(e=>e.stepId===t.id?!0:!e.stepId||t.rawRunId&&e.runId&&t.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===t.rawStepOrder);for(let r of n)e.push({type:`exec`,stepId:t.id,logId:r.id});t.subActionsData&&t.subActionsData.forEach((n,r)=>{e.push({type:`sub`,stepId:t.id,subIndex:r})})}for(let t of Y)t.runId===n&&e.push({type:`hook`,logId:t.id})}}else for(let t of W)if(e.push({type:`step`,stepId:t.id}),t.id===q){let n=X.filter(e=>e.stepId===t.id?!0:!e.stepId||t.rawRunId&&e.runId&&t.rawRunId!==e.runId?!1:Number.parseInt(e.stepId,10)===t.rawStepOrder);for(let r of n)e.push({type:`exec`,stepId:t.id,logId:r.id});t.subActionsData&&t.subActionsData.forEach((n,r)=>{e.push({type:`sub`,stepId:t.id,subIndex:r})})}for(let t of Y)(!n||!n.has(t.runId))&&e.push({type:`hook`,logId:t.id});return e},[W,q,X,J,Y,m,S,x]),Q=(0,j.useMemo)(()=>C?Z.findIndex(e=>C.type===`hook`&&e.type===`hook`?e.logId===C.hookId:C.type===`step`&&e.type===`step`?e.stepId===C.stepId:C.type===`subaction`&&e.type===`sub`?e.stepId===C.stepId&&e.subIndex===C.subIndex:C.type===`execution`&&e.type===`exec`?e.logId===C.logId:!1):-1,[Z,C]);function $(e){return e.type===`hook`?{type:`hook`,hookId:e.logId}:e.type===`step`?{type:`step`,stepId:e.stepId}:e.type===`exec`?{type:`execution`,stepId:e.stepId,logId:e.logId}:{type:`subaction`,stepId:e.stepId,subIndex:e.subIndex}}let ct=[`overview`,`env`,`network`,`console`,`aria`,`a11y`],lt=(0,j.useCallback)(e=>{V===`overview`&&K&&(e===`before`?K.beforePath:K.afterPath)&&Ye({key:K.key,side:e})},[V,K]);Ue((0,j.useMemo)(()=>{let e={arrowdown:()=>{Z.length!==0&&D($(Q===-1?Z[0]:Z[Math.min(Q+1,Z.length-1)]))},arrowup:()=>{Z.length!==0&&D($(Q===-1?Z[Z.length-1]:Z[Math.max(Q-1,0)]))},j:()=>{e.arrowdown({})},k:()=>{e.arrowup({})},"shift+arrowdown":()=>{if(Z.length===0)return;let e=Z.findIndex((e,t)=>t>Q&&e.type===`step`);e!==-1&&D($(Z[e]))},"shift+arrowup":()=>{if(Z.length===0)return;let e=-1;for(let t=Q-1;t>=0;t--)if(Z[t].type===`step`){e=t;break}e!==-1&&D($(Z[e]))},1:()=>H(ct[0]),2:()=>H(ct[1]),3:()=>H(ct[2]),4:()=>H(ct[3]),5:()=>H(ct[4]),6:()=>H(ct[5]),a:()=>lt(`after`),b:()=>lt(`before`),i:()=>U(`attributes`),c:()=>U(`config`),m:()=>U(`memory`),r:()=>{if(!m)return;let e=m.attributes[`agent-qa.runner`]===`local`;Oe({file:m.filePath??m.name,local:e}).then(e=>{De.success(`Re-run started`),i(w.runLive(e.runId))}).catch(()=>De.error(`Failed to start re-run`))},escape:()=>{Xe?N(!1):ve?ye(!1):D(null)},v:()=>{m?.videoPath&&ye(!0)},"shift+?":()=>qe(e=>!e),"shift+!":()=>v.current?.togglePhase(0),"shift+@":()=>v.current?.togglePhase(1),"shift+#":()=>v.current?.togglePhase(2),"shift+$":()=>v.current?.togglePhase(3)};return e},[Z,Q,C,m,i,Xe,ve,v,lt,U])),(0,j.useEffect)(()=>{let e=o(C)?W.find(e=>e.id===C.stepId):null,t=e?.rawStepOrder,n=e?.rawRunId;ee(e=>{let r=new URLSearchParams(e);return t==null?r.delete(`step`):r.set(`step`,String(t)),It(m)&&S===`all`&&n?r.set(`run`,n):r.delete(`run`),c(C)?r.set(`sub`,String(C.subIndex)):r.delete(`sub`),V===`overview`?r.delete(`tab`):r.set(`tab`,V),r},{replace:!0})},[C,V,W,m,S,ee]),(0,j.useEffect)(()=>{if(!o(C))return;let e=y.current;if(!e)return;if(C.type===`step`&&!d.has(`step`)&&!d.has(`sub`)&&W[0]?.id===C.stepId){b.current=C.stepId;return}b.current=null;let t=C.type===`step`?`[data-step-id="${C.stepId}"]`:C.type===`execution`?`[data-execution-id="${C.logId}"]`:c(C)?`[data-sub-action-id="${C.stepId}-${C.subIndex}"]`:null;if(!t)return;let n=requestAnimationFrame(()=>{let n=e.querySelector(t);n&&zt(e,n)});return()=>cancelAnimationFrame(n)},[C,W,d]);let ut=(0,j.useCallback)(async e=>{pe(e);try{let t=await Ne(e);ce(t.steps),D(Rt(Lt(t.steps,[],``,!1),d,!1))}catch{De.error(`Failed to load attempt`)}},[d]),dt=(0,j.useCallback)(async t=>{if(Ae(t),t===`all`)ce(je),D(Rt(Lt(je,x,`all`,It(m)),d,!0)),e&&xe(e).then(({logs:e})=>k(e)).catch(()=>{});else try{let e=await Ne(t);ce(e.steps);let{logs:n}=await xe(t);k(n),D(Rt(Lt(e.steps,[],t,!1),d,!1))}catch{De.error(`Failed to load test steps`)}},[je,e,m,d,x]);if(me)return(0,M.jsx)(Ie,{});if(ge||!m)return(0,M.jsx)(He,{icon:le,title:`Run not found`,description:`This test run doesn't exist or has been deleted`,actionLabel:`View All Runs`,onAction:()=>i(w.runs)});let ft=r(m.id,m.videoPath);return(0,M.jsx)(Te,{children:(0,M.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,M.jsx)(Ze,{run:m,steps:se,shortcutsOpen:Ke,onToggleShortcuts:()=>qe(e=>!e),onOpenArtifacts:U}),(0,M.jsxs)(Be,{orientation:`horizontal`,className:`min-h-0 flex-1 overflow-hidden`,children:[(0,M.jsx)(ze,{defaultSize:35,minSize:20,children:(0,M.jsxs)(`div`,{ref:y,className:`flex h-full min-h-0 min-w-0 flex-col overflow-y-auto`,children:[It(m)&&x.length>0?(0,M.jsx)(`div`,{className:`border-b px-3 py-2 shrink-0`,children:(0,M.jsxs)(ae,{value:S,onValueChange:dt,children:[(0,M.jsx)(re,{className:`w-full h-8 text-xs`,children:(0,M.jsx)(ie,{})}),(0,M.jsxs)(ne,{children:[(0,M.jsxs)(te,{value:`all`,children:[`All Tests (`,x.length,`)`]}),x.map(e=>(0,M.jsx)(te,{value:e.id,children:(0,M.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e.name,(0,M.jsx)(Mt,{status:e.status})]})},e.id))]})]})}):h.length>0?(0,M.jsx)(`div`,{className:`flex gap-1 border-b px-3 py-2 shrink-0`,children:h.map(e=>(0,M.jsxs)(`button`,{onClick:()=>ut(e.id),className:E(`px-3 py-1 text-xs rounded-sm border-b-2 transition-colors`,fe===e.id?`border-primary text-foreground font-medium`:`border-transparent text-muted-foreground hover:text-foreground`),children:[`Attempt `,e.attemptNumber,(0,M.jsx)(`span`,{className:`ml-1.5`,children:(0,M.jsx)(Mt,{status:e.status})})]},e.id))}):null,m.status===`failed`&&m.failureSummary&&(0,M.jsx)(Pt,{summary:m.failureSummary}),m.status===`failed`&&m.errorLog&&(0,M.jsxs)(p,{className:`mx-2 mt-1`,children:[(0,M.jsxs)(f,{className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors group w-full`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{children:`Error Details`})]}),(0,M.jsx)(u,{children:(0,M.jsx)(`pre`,{className:`mt-1 text-xs font-mono bg-muted/30 border border-border/50 rounded-[2px] px-3 py-2 overflow-x-auto whitespace-pre-wrap max-h-60 overflow-y-auto text-foreground/70 select-text`,children:m.errorLog})})]}),m.memoryLog&&(()=>{let e=JSON.parse(m.memoryLog);return(0,M.jsxs)(p,{className:`mx-2 mt-1`,children:[(0,M.jsxs)(f,{className:`flex items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors group w-full`,children:[(0,M.jsx)(T,{className:`h-3 w-3 transition-transform group-data-[state=open]:rotate-90`}),(0,M.jsx)(`span`,{children:`Memory`}),(0,M.jsxs)(`span`,{className:`ml-1 text-[10px] opacity-60`,children:[e.added,`A `,e.confirmed,`C `,e.deprecated,`D`]})]}),(0,M.jsx)(u,{children:(0,M.jsxs)(`div`,{className:`mt-1 grid grid-cols-2 gap-x-6 gap-y-1 text-xs px-3 py-2 bg-muted/30 border border-border/50 rounded-[2px]`,children:[(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Added`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.added})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Confirmed`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.confirmed})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Deprecated`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.deprecated})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Errors`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.errors.length})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Curator Duration`}),(0,M.jsxs)(`span`,{className:`font-mono`,children:[(e.curatorDuration/1e3).toFixed(1),`s`]})]}),(0,M.jsxs)(`div`,{className:`flex justify-between`,children:[(0,M.jsx)(`span`,{className:`text-muted-foreground`,children:`Tokens`}),(0,M.jsx)(`span`,{className:`font-mono`,children:e.tokenUsage?`${A(e.tokenUsage.promptTokens)} / ${A(e.tokenUsage.completionTokens)}`:`—`})]})]})})]})})(),(0,M.jsx)(t,{steps:W,selection:C,onSelect:D,suiteTests:It(m)?x:void 0,suiteSelectedView:S,setupHooks:J,teardownHooks:Y,inlineLogs:X})]})}),(0,M.jsx)(Ve,{withHandle:!0}),(0,M.jsx)(ze,{defaultSize:65,minSize:30,children:(0,M.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col overflow-hidden`,children:C?.type===`hook`&&ot?(0,M.jsx)(n,{log:ot}):C?.type===`execution`&&st?(0,M.jsx)(n,{log:st}):(0,M.jsx)(s,{activeTab:V,onTabChange:H,step:G,subAction:rt,runId:G?.rawRunId??m.id,allSteps:W,executionLogs:at,accessibilitySummary:We,platform:m.platform,screenshotSide:it,onScreenshotSideChange:lt,pipelineRef:v})})})]}),(0,M.jsx)(jt,{run:m,open:Xe,tab:P,response:Qe,loading:L,error:R,onOpenChange:N,onTabChange:F,onRetry:tt}),ve&&ft&&(0,M.jsxs)(`div`,{className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-sm flex items-center justify-center`,onClick:()=>ye(!1),children:[(0,M.jsx)(_,{variant:`secondary`,size:`icon-sm`,className:`absolute top-4 right-4 h-8 w-8 bg-background/80 backdrop-blur-sm z-10`,onClick:()=>ye(!1),children:(0,M.jsx)(we,{className:`h-4 w-4`})}),(0,M.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,onClick:e=>e.stopPropagation(),children:[(0,M.jsx)(`video`,{ref:Se,src:ft,controls:!0,autoPlay:!0,className:`rounded-lg`,style:{maxWidth:`90vw`,maxHeight:`calc(90vh - 3rem)`},onLoadedMetadata:()=>{Se.current&&(Se.current.playbackRate=be)}}),(0,M.jsx)(`div`,{className:`flex items-center gap-1 bg-background/80 backdrop-blur-sm rounded-full px-1 py-0.5`,children:[.5,1,1.5,2,3,4].map(e=>(0,M.jsxs)(`button`,{onClick:()=>{g(e),Se.current&&(Se.current.playbackRate=e)},className:`px-2.5 py-1 rounded-full text-xs font-medium transition-colors ${be===e?`bg-primary text-primary-foreground`:`text-muted-foreground hover:text-foreground hover:bg-muted`}`,children:[e,`x`]},e))})]})]})]})})}export{Bt as default};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{t}from"./arrow-up-down-CwmMJuHC.js";import{i as n,l as r,n as i,o as a,s as o,t as s}from"./select-BE8tKMJy.js";import{n as c}from"./split-button-CcR2TDPY.js";import{n as l,r as u}from"./shortcut-hints-BGIo5sip.js";import{t as d}from"./plus-BhWnvE6F.js";import{t as f}from"./trash-2-sbLDCPlz.js";import{t as p}from"./use-page-title-CyHzJAcR.js";import{n as m,t as h}from"./batch-action-bar-DI05CPwy.js";import{n as g,r as _,t as v}from"./popover-Boe1excX.js";import{n as y,t as b}from"./scroll-area-B8cRs7wd.js";import{i as x,r as ee,t as te}from"./tabs-C3NqUdx9.js";import{$ as ne,Ft as re,Gt as ie,In as ae,It as oe,Jt as se,Kt as S,L as ce,Lt as C,Nt as w,Pt as T,Tt as le,Vn as ue,Xt as de,Yt as fe,Zt as pe,a as me,ar as he,dr as E,gr as D,ir as O,it as ge,j as _e,nr as ve,nt as ye,pr as k,qn as A,qt as j,rt as M,tr as N,vt as be,zn as P}from"./index-C_HfATr4.js";import{t as F}from"./badge-D56AWxFv.js";import{n as I,o as xe,r as L,t as R}from"./lib-hhwTCYTD.js";import{a as Se,i as z,n as Ce,o as B,r as V,t as we}from"./table-D4kdbpq8.js";import{t as Te}from"./empty-state-DEbHhF9f.js";import{t as Ee}from"./use-keyboard-shortcuts-BM0qq0DE.js";import{n as De,t as Oe}from"./use-selection-queue-CIpsCzay.js";var H=e(D(),1),U=N();function ke({startedAt:e}){let[t,n]=(0,H.useState)(()=>{let t=new Date(pe(e)).getTime();return Math.max(0,Math.floor((Date.now()-t)/1e3))});return(0,H.useEffect)(()=>{let t=new Date(pe(e)).getTime(),r=setInterval(()=>{n(Math.max(0,Math.floor((Date.now()-t)/1e3)))},1e3);return()=>clearInterval(r)},[e]),(0,U.jsxs)(`span`,{className:`text-blue-500 tabular-nums`,children:[Math.floor(t/60),`m `,t%60,`s`]})}var Ae={select:`44px`,status:`136px`,target:`180px`,attributes:`260px`,duration:`104px`,createdAt:`128px`},W=[`agent-qa.trigger`,`agent-qa.runner`];function G(e){return e===`ios`?`iOS`:e.charAt(0).toUpperCase()+e.slice(1)}function je(e){return`${e.targetName?.trim()||`No target`} (${G(e.platform)})`}function Me(e){return e.suiteId!=null&&e.parentRunId==null}function K(e,t){let n=new Map(t.map((e,t)=>[e,t])),r=new Map(W.map((e,t)=>[e,t]));return Object.entries(e??{}).filter(([,e])=>typeof e==`string`).sort(([e],[t])=>{let i=n.get(e),a=n.get(t);if(i!==void 0||a!==void 0)return(i??2**53-1)-(a??2**53-1);let o=r.get(e),s=r.get(t);return o!==void 0||s!==void 0?(o??2**53-1)-(s??2**53-1):e.localeCompare(t)})}function q({attributes:e,activeKeys:t}){let n=K(e,t);if(n.length===0)return(0,U.jsx)(`span`,{className:`text-[12px] text-muted-foreground`,children:`No attributes`});let r=n.length>2?1:2,i=n.slice(0,r),a=n.length-i.length;return(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsxs)(`div`,{className:`max-h-[38px] overflow-hidden text-[12px] leading-[18px]`,"aria-label":n.map(([e,t])=>`${e}=${t}`).join(`, `),children:[i.map(([e,t])=>(0,U.jsxs)(`div`,{className:`min-w-0 truncate font-mono`,children:[(0,U.jsxs)(`span`,{className:`text-muted-foreground`,children:[e,`=`]}),(0,U.jsx)(`span`,{className:`text-foreground`,children:t})]},e)),a>0?(0,U.jsxs)(`div`,{className:`font-mono text-[11px] text-muted-foreground`,children:[`+`,a,` more`]}):null]})}),(0,U.jsx)(re,{side:`top`,align:`start`,className:`max-w-[420px] p-2`,children:(0,U.jsx)(`div`,{className:`max-h-64 overflow-auto font-mono text-[11px] leading-5`,children:n.map(([e,t])=>(0,U.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-2`,children:[(0,U.jsx)(`span`,{className:`truncate text-muted-foreground`,children:e}),(0,U.jsx)(`span`,{className:`truncate text-foreground`,children:t})]},e))})})]})}function J(e){return e.mode===`regex`?`${e.key} matches ${e.value}`:`${e.key} = ${e.value}`}function Ne({predicates:e,onChange:t}){let[n,r]=(0,H.useState)(!1),[i,a]=(0,H.useState)(``),[o,s]=(0,H.useState)(``),[c,l]=(0,H.useState)(`exact`),[u,p]=(0,H.useState)(null),[m,h]=(0,H.useState)([]),[y,b]=(0,H.useState)([]);(0,H.useEffect)(()=>{if(!n)return;let e=!1;return ye({q:i,limit:8}).then(t=>{e||h(t.keys)}).catch(()=>{e||h([])}),()=>{e=!0}},[i,n]),(0,H.useEffect)(()=>{if(!n||!i.trim()){b([]);return}let e=!1;return M(i.trim(),{q:o,limit:8}).then(t=>{e||b(t.values)}).catch(()=>{e||b([])}),()=>{e=!0}},[i,n,o]);function x(){let n=i.trim(),r=o.trim();if(!n||!r){p(`Enter an attribute key and value, or remove this filter.`);return}if(c===`regex`)try{new RegExp(r)}catch{p(`Enter a valid regular expression.`);return}p(null);let u=e.filter(e=>e.key!==n);t?.([...u,{key:n,value:r,mode:c}]),a(``),s(``),l(`exact`)}function ee(n){t?.(e.filter((e,t)=>t!==n))}return(0,U.jsxs)(v,{open:n,onOpenChange:r,children:[(0,U.jsx)(_,{asChild:!0,children:(0,U.jsxs)(S,{type:`button`,variant:e.length>0?`secondary`:`outline`,size:`sm`,"aria-label":`Filter by attributes`,className:`h-9 gap-2`,children:[(0,U.jsx)(P,{className:`size-4`}),`Attributes`,e.length>0?` (${e.length})`:``]})}),(0,U.jsxs)(g,{align:`start`,className:`w-[380px] p-0`,children:[(0,U.jsx)(`div`,{className:`border-b px-3 py-2`,children:(0,U.jsx)(`h3`,{className:`text-sm font-medium`,children:`Filter by attributes`})}),(0,U.jsxs)(`div`,{className:`space-y-3 p-3`,children:[(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,htmlFor:`run-attribute-key`,children:`Key`}),(0,U.jsx)(ie,{id:`run-attribute-key`,value:i,onChange:e=>{a(e.target.value),p(null)},placeholder:`git.branch`}),(0,U.jsx)(`div`,{className:`max-h-28 overflow-y-auto rounded border border-border/60`,children:m.length>0?m.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 px-2 py-1 text-left text-xs hover:bg-muted`,onClick:()=>a(e.key),children:[(0,U.jsx)(`span`,{className:`truncate font-mono`,children:e.key}),(0,U.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.count})]},e.key)):(0,U.jsx)(`div`,{className:`px-2 py-2 text-xs text-muted-foreground`,children:`No attributes found`})})]}),(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,htmlFor:`run-attribute-value`,children:`Value`}),(0,U.jsx)(ie,{id:`run-attribute-value`,value:o,onChange:e=>{s(e.target.value),p(null)},placeholder:c===`regex`?`^(master|main)$`:`master`,"aria-describedby":u?`run-attribute-filter-error`:void 0}),(0,U.jsx)(`div`,{className:`max-h-28 overflow-y-auto rounded border border-border/60`,children:y.length>0?y.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 px-2 py-1 text-left text-xs hover:bg-muted`,onClick:()=>s(e.value),children:[(0,U.jsx)(`span`,{className:`truncate font-mono`,children:e.value}),(0,U.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.count})]},e.value)):(0,U.jsx)(`div`,{className:`px-2 py-2 text-xs text-muted-foreground`,children:`No values found for this key`})})]})]}),(0,U.jsxs)(`div`,{className:`inline-flex rounded border border-border p-0.5`,children:[(0,U.jsx)(`button`,{type:`button`,className:j(`rounded-[2px] px-2 py-1 text-xs`,c===`exact`?`bg-primary text-primary-foreground`:`text-muted-foreground`),"aria-pressed":c===`exact`,onClick:()=>l(`exact`),children:`Exact match`}),(0,U.jsx)(`button`,{type:`button`,className:j(`rounded-[2px] px-2 py-1 text-xs`,c===`regex`?`bg-primary text-primary-foreground`:`text-muted-foreground`),"aria-pressed":c===`regex`,onClick:()=>l(`regex`),children:`Regex`})]}),u?(0,U.jsx)(`p`,{id:`run-attribute-filter-error`,className:`text-xs text-destructive`,children:u}):null,(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(S,{type:`button`,size:`sm`,onClick:x,children:[(0,U.jsx)(d,{className:`size-4`}),`Apply filter`]}),(0,U.jsx)(S,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>t?.([]),disabled:e.length===0,children:`Clear attributes`})]}),e.length>0?(0,U.jsx)(`div`,{className:`space-y-1 border-t pt-3`,children:e.map((e,t)=>(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,U.jsx)(`span`,{className:`min-w-0 flex-1 break-all font-mono`,children:J(e)}),(0,U.jsx)(S,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":`Remove ${e.key} filter`,onClick:()=>ee(t),children:(0,U.jsx)(f,{className:`size-3.5`})})]},`${e.key}-${e.mode}`))}):null]})]})]})}function Y({status:e}){let t=O(e);return(0,U.jsx)(F,{className:he(t.tone),children:t.label})}function Pe({column:e,label:n}){return(0,U.jsx)(`div`,{className:`flex justify-end`,children:(0,U.jsxs)(S,{type:`button`,variant:`ghost`,size:`xs`,"data-runs-sort-button":`compact`,className:`h-7 max-w-full shrink justify-end px-1.5 text-[12px] leading-none text-foreground/90`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[(0,U.jsx)(`span`,{className:`truncate`,children:n}),(0,U.jsx)(t,{})]})})}var Fe=[{accessorKey:`status`,header:({column:e})=>(0,U.jsxs)(S,{variant:`ghost`,className:`-ml-2`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[`Status`,(0,U.jsx)(t,{className:`ml-2 h-4 w-4`})]})},{accessorKey:`name`,header:({column:e})=>(0,U.jsxs)(S,{variant:`ghost`,className:`-ml-2`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[`Test Name`,(0,U.jsx)(t,{className:`ml-2 h-4 w-4`})]})},{id:`target`,accessorFn:e=>`${e.targetName??`No target`} ${e.platform}`,header:({column:e})=>(0,U.jsxs)(S,{variant:`ghost`,className:`-ml-2`,onClick:()=>e.toggleSorting(e.getIsSorted()===`asc`),children:[`Target`,(0,U.jsx)(t,{className:`ml-2 h-4 w-4`})]})},{id:`attributes`,accessorFn:e=>Object.entries(e.attributes??{}).map(([e,t])=>`${e}=${t}`).join(` `),header:`Attributes`},{accessorKey:`duration`,header:({column:e})=>(0,U.jsx)(Pe,{column:e,label:`Duration`})},{accessorKey:`createdAt`,header:({column:e})=>(0,U.jsx)(Pe,{column:e,label:`Started`})}];function Ie(e){e.stopPropagation()}function Le(e,t){if(e.length===0)return!1;let n=e.filter(e=>t.has(e)).length;return n===0?!1:n===e.length?!0:`indeterminate`}function Re(e){let t=Ae[e];if(t)return{width:t,minWidth:t}}function X(e){return j(`h-10 bg-background text-[13px] font-medium text-foreground/90`,e===`select`&&`w-11 px-2 text-center`,e===`status`&&`w-[136px] px-3`,e===`name`&&`px-3`,e===`target`&&`w-[180px] px-3`,e===`attributes`&&`w-[260px] px-3`,e===`duration`&&`w-[104px] px-3 text-right`,e===`createdAt`&&`w-[128px] px-3 text-right`)}function Z(e,t){return j(`py-2 align-top`,e===`select`&&`w-11 px-2`,e===`status`&&`w-[136px] px-3`,e===`name`&&j(`max-w-0 px-3`,t&&`pl-8`),e===`target`&&`w-[180px] max-w-0 px-3 text-muted-foreground`,e===`attributes`&&`w-[260px] max-w-0 px-3`,e===`duration`&&`w-[104px] px-3 text-right tabular-nums`,e===`createdAt`&&`w-[128px] px-3 text-right tabular-nums`)}function Q({isActive:e,isBatchSelected:t,isChild:n}){return j(`cursor-pointer outline-none hover:bg-muted/20 focus-visible:bg-primary/10`,n&&`bg-muted/[0.04]`,t&&!e&&`bg-muted/20`,e&&`bg-primary/10 ring-1 ring-inset ring-primary/60`)}function ze(e,t){let n=[];for(let r of e)if(n.push({id:r.id,run:r,isChild:!1,parentId:null}),!(!Me(r)||!t.has(r.id)))for(let e of r.tests??[])n.push({id:e.id,run:e,isChild:!0,parentId:r.id});return n}function Be({runs:e,total:t,isLoading:c,page:l,onPageChange:u,onSearchChange:d,searchValue:f,selectedRunId:p=null,onSelectedRunIdChange:h,expandedSuites:g=new Set,onToggleSuite:_,onOpenRun:v,onVisibleRunsChange:x,platformFilter:ee=``,onPlatformChange:te,targetFilter:ne=``,targetOptions:ae=[],onTargetChange:ce,attributePredicates:w=[],onAttributePredicatesChange:le,sorting:ue,onSortingChange:pe,headerActions:me,topSlot:he,enableSelection:E=!1,selectedRunIds:D=new Set,onToggleRunSelection:O,onToggleVisibleSelection:ge}){let[_e,ve]=(0,H.useState)([]),ye=ue??_e,k=pe??ve,j=I({data:e,columns:[...E?[{id:`select`,header:({table:e})=>(0,U.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,U.jsx)(m,{checked:Le(e.getRowModel().rows.map(e=>e.original.id),D),onCheckedChange:t=>ge?.(e.getRowModel().rows.map(e=>e.original),t===!0),onClick:e=>e.stopPropagation(),"aria-label":`Select all`})}),enableSorting:!1}]:[],...Fe],getRowId:e=>e.id,getCoreRowModel:L(),getSortedRowModel:xe(),onSortingChange:k,state:{sorting:ye}}),M=j.getHeaderGroups(),N=j.getRowModel().rows,be=(0,H.useMemo)(()=>N.map(e=>e.original),[N]),P=(0,H.useMemo)(()=>ze(be,g),[g,be]),F=Math.ceil(t/50),Te=l*50+1,Ee=Math.min((l+1)*50,t),De=Array.from(new Set([ne,...ae].filter(e=>!!e))),Oe=[...E?[`select`]:[],`status`,`name`,`target`,`attributes`,`duration`,`createdAt`],Ae=(0,H.useMemo)(()=>w.map(e=>e.key),[w]);(0,H.useEffect)(()=>{x?.(P)},[x,P]),(0,H.useEffect)(()=>{if(!p)return;let e=document.querySelector(`[data-runs-row-surface="${p}"]`);e&&document.activeElement!==e&&e.focus()},[p]);function W(e){return e.status===`running`&&e.startedAt?(0,U.jsx)(`span`,{className:`text-sm tabular-nums`,children:(0,U.jsx)(ke,{startedAt:e.startedAt})}):e.status===`running`?(0,U.jsx)(`span`,{className:`text-sm text-blue-500`,children:`Starting...`}):(0,U.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:de(e.duration)})}function G(e,t){h?.(e.id),v?.(e,t)}function K(e,t){t.key===`Enter`&&(t.preventDefault(),G(e,t))}return(0,U.jsx)(oe,{children:(0,U.jsxs)(`div`,{className:`flex min-h-0 w-full flex-1 flex-col gap-4`,children:[(0,U.jsxs)(`div`,{className:`shrink-0 space-y-4`,children:[he,(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(ie,{placeholder:`Search runs...`,value:f,onChange:e=>d(e.target.value),className:`max-w-[220px]`}),te&&(0,U.jsxs)(s,{value:ee||`all`,onValueChange:e=>te(e===`all`?``:e),children:[(0,U.jsx)(a,{className:`w-[140px]`,children:(0,U.jsx)(o,{placeholder:`All platforms`})}),(0,U.jsxs)(i,{children:[(0,U.jsx)(n,{value:`all`,children:`All platforms`}),(0,U.jsx)(n,{value:`web`,children:`Web`}),(0,U.jsx)(n,{value:`android`,children:`Android`}),(0,U.jsx)(n,{value:`ios`,children:`iOS`})]})]}),ce&&(0,U.jsxs)(s,{value:ne||`all`,onValueChange:e=>ce(e===`all`?``:e),children:[(0,U.jsx)(a,{className:`w-[180px]`,children:(0,U.jsx)(o,{placeholder:`All targets`})}),(0,U.jsxs)(i,{children:[(0,U.jsx)(n,{value:`all`,children:`All targets`}),De.map(e=>(0,U.jsx)(n,{value:e,children:e},e))]})]}),le&&(0,U.jsx)(Ne,{predicates:w,onChange:le}),(0,U.jsx)(`div`,{className:`flex-1`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[c&&(0,U.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`}),me]})]})]}),(0,U.jsxs)(b,{className:`min-h-0 flex-1 rounded-md border`,children:[(0,U.jsxs)(we,{className:`min-w-full table-fixed`,children:[(0,U.jsx)(`colgroup`,{children:Oe.map(e=>(0,U.jsx)(`col`,{style:Re(e)},e))}),(0,U.jsx)(Se,{children:M.map(e=>(0,U.jsx)(B,{className:`hover:bg-transparent`,children:e.headers.map(e=>(0,U.jsx)(z,{className:X(e.column.id),children:e.isPlaceholder?null:R(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,U.jsx)(Ce,{children:N.length?N.map(e=>{let t=e.original,n=Me(t),i=n&&g.has(t.id),a=t.tests??[],o=a.filter(e=>e.status===`passed`).length,s=p===t.id,c=D.has(t.id);return(0,U.jsxs)(H.Fragment,{children:[(0,U.jsxs)(B,{tabIndex:s?0:-1,"data-runs-row-surface":t.id,"data-active":String(s),"data-state":c?`selected`:void 0,"aria-selected":s,className:Q({isActive:s,isBatchSelected:c,isChild:!1}),onClick:e=>G(t,e),onFocus:()=>h?.(t.id),onKeyDown:e=>K(t,e),children:[E&&(0,U.jsx)(V,{className:Z(`select`,!1),onClick:e=>e.stopPropagation(),children:(0,U.jsx)(`div`,{className:`flex items-center justify-center`,children:(0,U.jsx)(m,{checked:D.has(t.id),onCheckedChange:e=>O?.(t,e===!0),"aria-label":`Select row`})})}),(0,U.jsx)(V,{className:Z(`status`,!1),children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(Y,{status:t.status}),n&&a.length>0&&(0,U.jsxs)(`span`,{className:`text-[11px] text-muted-foreground/80 tabular-nums`,children:[o,`/`,a.length]})]})}),(0,U.jsx)(V,{className:Z(`name`,!1),children:(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2.5`,children:[n&&(0,U.jsx)(`button`,{type:`button`,className:`rounded p-0.5 hover:bg-muted`,onClick:e=>{Ie(e),_?.(t.id)},children:i?(0,U.jsx)(r,{className:`h-4 w-4 text-muted-foreground`}):(0,U.jsx)(A,{className:`h-4 w-4 text-muted-foreground`})}),(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-sm font-medium leading-snug text-foreground`,children:t.name})]})}),(0,U.jsx)(V,{className:Z(`target`,!1),children:(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-[13px] leading-snug text-muted-foreground/90`,children:je(t)})}),(0,U.jsx)(V,{className:Z(`attributes`,!1),children:(0,U.jsx)(q,{attributes:t.attributes,activeKeys:Ae})}),(0,U.jsx)(V,{className:Z(`duration`,!1),children:W(t)}),(0,U.jsx)(V,{className:Z(`createdAt`,!1),children:(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,children:se(t.createdAt)})}),(0,U.jsx)(re,{children:fe(t.createdAt)})]})})]}),i&&a.map(t=>{let n=p===t.id;return(0,U.jsxs)(B,{tabIndex:n?0:-1,"data-runs-row-surface":t.id,"data-active":String(n),"aria-selected":n,className:Q({isActive:n,isBatchSelected:!1,isChild:!0}),onClick:e=>G(t,e),onFocus:()=>h?.(t.id),onKeyDown:e=>K(t,e),children:[E&&(0,U.jsx)(V,{className:Z(`select`,!0)}),(0,U.jsx)(V,{className:Z(`status`,!0),children:(0,U.jsx)(Y,{status:t.status})}),(0,U.jsx)(V,{className:Z(`name`,!0),children:(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-sm leading-snug text-foreground/90`,children:t.name})}),(0,U.jsx)(V,{className:Z(`target`,!0),children:(0,U.jsx)(`span`,{className:`block whitespace-normal break-words text-[13px] leading-snug text-muted-foreground`,children:je(t)})}),(0,U.jsx)(V,{className:Z(`attributes`,!0),children:(0,U.jsx)(q,{attributes:t.attributes,activeKeys:Ae})}),(0,U.jsx)(V,{className:Z(`duration`,!0),children:W(t)}),(0,U.jsx)(V,{className:Z(`createdAt`,!0),children:(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsx)(`span`,{className:`truncate text-sm text-muted-foreground`,children:se(t.createdAt)})}),(0,U.jsx)(re,{children:fe(t.createdAt)})]})})]},`${e.id}-child-${t.id}`)})]},e.id)}):(0,U.jsx)(B,{children:(0,U.jsx)(V,{colSpan:Oe.length,className:`h-24 text-center`,children:`No results.`})})})]}),(0,U.jsx)(y,{orientation:`horizontal`})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between px-1`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t>0?`Showing ${Te}-${Ee} of ${t}`:`No runs found`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(S,{variant:`outline`,size:`sm`,onClick:()=>u(l-1),disabled:l===0,children:`Previous`}),(0,U.jsx)(S,{variant:`outline`,size:`sm`,onClick:()=>u(l+1),disabled:l>=F-1||F===0,children:`Next`})]})]})]})})}var $=new Set([`all`,`running`,`queued`,`completed`,`failed`]),Ve=new Set([`asc`,`desc`]);function He(e){if(!e)return 1;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>1?t:1}function Ue(e){let t=new URLSearchParams;e.tab!==`all`&&t.set(`tab`,e.tab),e.search&&t.set(`search`,e.search),e.platform&&t.set(`platform`,e.platform),e.target&&t.set(`target`,e.target);for(let n of e.attributePredicates){if(!n.key||!n.value)continue;let e=n.mode===`regex`?`attributes[${n.key}][regex]`:`attributes[${n.key}]`;t.set(e,n.value)}return e.sort&&(t.set(`sort`,e.sort),t.set(`order`,e.order)),e.page>1&&t.set(`page`,String(e.page)),t}function We(e){let t=[];for(let[n,r]of e.entries()){let e=/^attributes\[([^\]]+)\](?:\[(regex)\])?$/.exec(n);!e||!r||t.push({key:e[1],value:r,mode:e[2]===`regex`?`regex`:`exact`})}return t}function Ge(){let[e,t]=k(),n=e.get(`tab`),r=n&&$.has(n)?n:`all`,i=e.get(`search`)??``,a=e.get(`platform`)??``,o=e.get(`target`)??``,s=(0,H.useMemo)(()=>We(e),[e]),c=e.get(`sort`)??``,l=e.get(`order`)??`desc`,u=Ve.has(l)?l:`desc`,d=He(e.get(`page`)),f=(0,H.useMemo)(()=>c?[{id:c,desc:u===`desc`}]:[],[c,u]),p=(0,H.useRef)(f);p.current=f;let m=(0,H.useMemo)(()=>({tab:r,search:i,platform:a,target:o,attributePredicates:s,sort:c,order:u,page:d}),[r,i,a,o,s,c,u,d]);(0,H.useEffect)(()=>{let n=Ue(m);e.toString()!==n.toString()&&t(n,{replace:!0})},[e,t,m]);let h=(0,H.useCallback)((e,n)=>{let r={...m,...e};n?.resetPage&&(r.page=1),t(Ue(r),{replace:!0})},[t,m]);return{tab:r,search:i,platform:a,target:o,attributePredicates:s,sort:c,order:u,page:d,sorting:f,onSortingChange:(0,H.useCallback)(e=>{let t=typeof e==`function`?e(p.current):e;t.length>0?h({sort:t[0].id,order:t[0].desc?`desc`:`asc`}):h({sort:``,order:`desc`})},[h]),setTab:(0,H.useCallback)(e=>h({tab:e},{resetPage:!0}),[h]),setSearch:(0,H.useCallback)(e=>h({search:e},{resetPage:!0}),[h]),setPlatform:(0,H.useCallback)(e=>h({platform:e},{resetPage:!0}),[h]),setTarget:(0,H.useCallback)(e=>h({target:e},{resetPage:!0}),[h]),setAttributePredicates:(0,H.useCallback)(e=>h({attributePredicates:e},{resetPage:!0}),[h]),setPage:(0,H.useCallback)(e=>h({page:e}),[h])}}var Ke={all:``,running:`running`,queued:`pending`,completed:`passed`,failed:`failed`};function qe(e,t){let n=e.trim().toLowerCase();if(!n)return!0;let r=t.runId.toLowerCase().includes(n),i=(t.testName??``).toLowerCase().includes(n);return r||i}function Je(){p(`Runs`);let e=E(),[t,n]=(0,H.useState)([]),[r,i]=(0,H.useState)(0),[a,o]=(0,H.useState)([]),[s,d]=(0,H.useState)(!0),{tab:f,search:m,platform:g,target:_,attributePredicates:v,page:y,sorting:b,onSortingChange:ie,setTab:se,setSearch:de,setPlatform:fe,setTarget:pe,setAttributePredicates:he,setPage:D}=Ge(),[O,ye]=(0,H.useState)(!1),[k,A]=(0,H.useState)(null),[j,M]=(0,H.useState)([]),[N,P]=(0,H.useState)(()=>new Set),[I,xe]=(0,H.useState)(null),[L,R]=(0,H.useState)(!1),[Se,z]=(0,H.useState)(!1),[Ce,B]=(0,H.useState)(!0),[V,we]=(0,H.useState)(!0),{hasFarm:ke,isLoading:Ae}=c(),W=(0,H.useCallback)(async(e,t,r,a)=>{try{if(r&&r!==`running`){n(e),i(t);return}let{executions:o}=await ce();if(o.length===0){n(e),i(t);return}let s=new Set(e.map(e=>e.id)),c=o.filter(e=>!s.has(e.runId)).filter(e=>qe(a,e)).map(e=>({id:e.runId,name:e.testName??`Running test...`,filePath:null,status:`running`,duration:e.duration,attributes:{},environment:null,metadata:null,startedAt:e.startedAt,endedAt:null,videoPath:null,failureSummary:null,errorLog:null,memoryLog:null,testId:null,suiteId:null,platform:`web`,testFileContent:null,modelName:null,llmProvider:null,parentRunId:null,attemptNumber:1,retryCount:0,maxRetries:0,createdAt:e.startedAt}));n([...c,...e]),i(t+c.length)}catch{n(e),i(t)}},[]),G=(0,H.useCallback)(e=>({limit:50,offset:(e.page-1)*50,name:e.name||void 0,status:e.status||void 0,platform:e.platform||void 0,target:e.target||void 0,attributes:e.attributes}),[]),je=Ke[f]??``,Me=(0,H.useCallback)(async e=>{try{d(!0);let[t,n]=await Promise.all([ge(G(e)),ne()]);xe(n),o(t.targets??[]),await W(t.runs,t.total,e.status,e.name)}catch{w.error(`Failed to load runs`)}finally{d(!1),ye(!0)}},[W,G]),K=(0,H.useCallback)(async e=>{try{let[t,n]=await Promise.all([ge(G(e)),ne()]);xe(n),o(t.targets??[]),await W(t.runs,t.total,e.status,e.name)}catch{}},[W,G]),q=(0,H.useMemo)(()=>({page:y,name:m,status:je,platform:g,target:_,attributes:v}),[y,m,je,g,_,v]);(0,H.useEffect)(()=>{Me(q)},[Me,q]),(0,H.useEffect)(()=>{if(!O)return;let e=setInterval(()=>{K(q)},5e3);return()=>clearInterval(e)},[O,K,q]),(0,H.useEffect)(()=>{A(null),P(new Set),M([])},[f,m,g,_,v,y]),(0,H.useEffect)(()=>{k&&(j.some(e=>e.id===k)||A(t.find(e=>e.tests?.some(e=>e.id===k))?.id??null))},[t,k,j]);let J=Oe({items:t,getId:e=>e.id,visibleIds:t.map(e=>e.id)}),Ne=J.selectedIds,Y=J.selectedItems,Pe=(0,H.useCallback)(()=>{J.clearSelection(),z(!1),B(!0),we(!0)},[J]),Fe=(0,H.useCallback)(async e=>{if(Y.length===0)return;let t=Y.flatMap(e=>e.filePath?[e.filePath]:[]);if(t.length===0){w.error(`No selected runs can be rerun`);return}R(!0);try{let n=await Promise.allSettled(t.map(t=>le({file:t,local:e,noCache:!Ce,noMemory:!V}))),r=n.filter(e=>e.status===`fulfilled`).length,i=n.length-r;i>0?w.error(`${r} runs queued, ${i} failed`):w.success(`${r} runs queued`),z(!1)}finally{R(!1)}},[Y,Ce,V]),Ie=(0,H.useCallback)(async()=>{if(Y.length===0)return;let e=Array.from(new Set(Y.flatMap(e=>e.filePath?[e.filePath]:[])));if(e.length===0){w.error(`No selected runs have file paths to purge`);return}R(!0);try{let t=await Promise.allSettled(e.map(e=>be({file:e}))),n=t.filter(e=>e.status===`fulfilled`).length,r=t.filter(e=>e.status===`fulfilled`).reduce((e,t)=>e+t.value.purged,0),i=t.length-n;i>0?w.error(`Purged ${r} plans from ${n} tests, ${i} failed`):w.success(`Purged ${r} cached plan${r===1?``:`s`} from ${n} test${n===1?``:`s`}`)}finally{R(!1)}},[Y]),Le=(0,H.useCallback)(async()=>{if(Y.length!==0){R(!0);try{let e=await Promise.allSettled(Y.map(e=>_e(e.id))),t=Y.filter((t,n)=>e[n]?.status===`fulfilled`),r=new Set(e.flatMap(e=>e.status===`fulfilled`?e.value.deletedRunIds:[])),a=e.length-t.length;t.length>0&&(J.setItemsSelected(t,!1),n(e=>e.filter(e=>!r.has(e.id))),i(e=>Math.max(0,e-t.length)),z(!1)),a>0?w.error(`Deleted ${t.length} run${t.length===1?``:`s`}, ${a} failed`):w.success(`Deleted ${t.length} run${t.length===1?``:`s`}`)}finally{R(!1)}}},[Y,J]),Re=(0,H.useCallback)(e=>{P(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),X=(0,H.useCallback)((t,n)=>{let r=ve.runDetailOrLive(t.id,t.status);if(n?.metaKey||n?.ctrlKey||n?.button===1){window.open(r,`_blank`,`noopener,noreferrer`);return}e(r)},[e]),Z=(0,H.useCallback)((e,t)=>{X(e,t)},[X]),Q=(0,H.useMemo)(()=>j.findIndex(e=>e.id===k),[k,j]);Ee((0,H.useMemo)(()=>{let e=e=>{if(j.length!==0){if(Q===-1){A(e>0?j[0].id:j[j.length-1].id);return}A(j[Math.max(0,Math.min(Q+e,j.length-1))].id)}},t=()=>e(1),n=()=>e(-1);return{j:t,arrowdown:t,k:n,arrowup:n,enter:e=>{Q<0||X(j[Q].run,e)}}},[X,Q,j]));let ze=I?.running.count??0,$=I?.pending.count??0,Ve=$>0||ze>0;if(!O)return(0,U.jsx)(me,{});let He=!!m||f!==`all`||!!g||!!_||v.length>0;if(t.length===0&&!He)return(0,U.jsx)(Te,{icon:ue,title:`No test runs yet`,description:`Run your first test to see results here`,actionLabel:`View Tests`,onAction:()=>e(ve.tests)});let Ue=(0,U.jsx)(te,{value:f,onValueChange:se,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(ee,{variant:`line`,children:[(0,U.jsx)(x,{value:`all`,children:`All`}),(0,U.jsxs)(x,{value:`running`,children:[`Running`,ze>0&&(0,U.jsx)(F,{variant:`secondary`,className:`ml-1 px-1.5 text-xs`,children:ze})]}),(0,U.jsxs)(x,{value:`queued`,children:[`Queued`,$>0&&(0,U.jsx)(F,{variant:`secondary`,className:`ml-1 px-1.5 text-xs`,children:$})]}),(0,U.jsx)(x,{value:`completed`,children:`Completed`}),(0,U.jsx)(x,{value:`failed`,children:`Failed`})]}),Ve&&I&&(0,U.jsxs)(F,{variant:`outline`,className:`text-xs`,children:[I.activeSlots,`/`,I.concurrency,` slots`]})]})});return(0,U.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-4 overflow-hidden`,children:[(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3`,children:[(0,U.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight`,children:`Runs`}),(0,U.jsx)(oe,{children:(0,U.jsxs)(T,{children:[(0,U.jsx)(C,{asChild:!0,children:(0,U.jsx)(S,{variant:`ghost`,size:`icon-sm`,"aria-label":`Keyboard shortcuts`,children:(0,U.jsx)(u,{className:`h-4 w-4`})})}),(0,U.jsx)(re,{side:`bottom`,className:`p-3`,children:(0,U.jsx)(l,{hints:[{key:`J / ↓`,label:`Next row`},{key:`K / ↑`,label:`Previous row`},{key:`Enter`,label:`Open run`},{key:`⌘+Enter`,label:`Open in new tab`}]})})]})})]}),(0,U.jsx)(Be,{topSlot:Ue,runs:t,total:r,isLoading:s,page:y-1,onPageChange:e=>D(e+1),onSearchChange:de,searchValue:m,selectedRunId:k,onSelectedRunIdChange:A,expandedSuites:N,onToggleSuite:Re,onOpenRun:Z,onVisibleRunsChange:M,platformFilter:g,onPlatformChange:fe,targetFilter:_,targetOptions:a,onTargetChange:pe,attributePredicates:v,onAttributePredicatesChange:he,sorting:b,onSortingChange:ie,enableSelection:!0,selectedRunIds:J.selectedIdSet,onToggleRunSelection:J.setItemSelected,onToggleVisibleSelection:J.setItemsSelected}),(0,U.jsx)(h,{selectedCount:Ne.length,summaryMeta:J.hiddenCount>0?`${J.hiddenCount} hidden by filters`:void 0,secondaryIcon:(0,U.jsx)(ae,{className:`size-4`}),secondaryAriaLabel:`Clear queue`,onDelete:Le,actionSlot:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(De,{selectedCount:J.selectedCount,hiddenCount:J.hiddenCount,useCache:Ce,useMemory:V,browserStackAvailable:!Ae&&ke,open:Se,onOpenChange:z,onUseCacheChange:B,onUseMemoryChange:we,onRunLocal:()=>Fe(!0),onRunBrowserStack:()=>Fe(!1),disabled:L}),(0,U.jsx)(S,{variant:`outline`,size:`sm`,onClick:Ie,disabled:L,children:`Purge cache`})]}),onCancel:Pe,isRunning:L})]})}export{Je as default};
@@ -1 +0,0 @@
1
- import{r as e}from"./chunk-CilyBKbf.js";import{n as t,r as n}from"./use-page-title-CyHzJAcR.js";import{Cn as r,Dn as i,En as a,Fn as o,Tn as s,gr as c,kn as l,qt as u,tr as d,xn as f}from"./index-C_HfATr4.js";var p=e(c(),1),m=d();function h(e,t){return p.useReducer((e,n)=>t[e][n]??e,e)}var g=`ScrollArea`,[_,v]=i(g),[y,b]=_(g),x=p.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:i=`hover`,dir:a,scrollHideDelay:s=600,...c}=e,[u,d]=p.useState(null),[f,h]=p.useState(null),[g,_]=p.useState(null),[v,b]=p.useState(null),[x,S]=p.useState(null),[C,w]=p.useState(0),[T,E]=p.useState(0),[D,O]=p.useState(!1),[k,A]=p.useState(!1),j=o(t,e=>d(e)),M=n(a);return(0,m.jsx)(y,{scope:r,type:i,dir:M,scrollHideDelay:s,scrollArea:u,viewport:f,onViewportChange:h,content:g,onContentChange:_,scrollbarX:v,onScrollbarXChange:b,scrollbarXEnabled:D,onScrollbarXEnabledChange:O,scrollbarY:x,onScrollbarYChange:S,scrollbarYEnabled:k,onScrollbarYEnabledChange:A,onCornerWidthChange:w,onCornerHeightChange:E,children:(0,m.jsx)(l.div,{dir:M,...c,ref:j,style:{position:`relative`,"--radix-scroll-area-corner-width":C+`px`,"--radix-scroll-area-corner-height":T+`px`,...e.style}})})});x.displayName=g;var S=`ScrollAreaViewport`,C=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,s=b(S,n),c=o(t,p.useRef(null),s.onViewportChange);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,m.jsx)(l.div,{"data-radix-scroll-area-viewport":``,...a,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,m.jsx)(`div`,{ref:s.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});C.displayName=S;var w=`ScrollAreaScrollbar`,T=p.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=b(w,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return p.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,m.jsx)(E,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,m.jsx)(D,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,m.jsx)(O,{...r,ref:t,forceMount:n}):i.type===`always`?(0,m.jsx)(k,{...r,ref:t}):null});T.displayName=w;var E=p.forwardRef((e,t)=>{let{forceMount:n,...i}=e,a=b(w,e.__scopeScrollArea),[o,s]=p.useState(!1);return p.useEffect(()=>{let e=a.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),s(!0)},r=()=>{t=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[a.scrollArea,a.scrollHideDelay]),(0,m.jsx)(r,{present:n||o,children:(0,m.jsx)(O,{"data-state":o?`visible`:`hidden`,...i,ref:t})})}),D=p.forwardRef((e,t)=>{let{forceMount:n,...i}=e,o=b(w,e.__scopeScrollArea),s=e.orientation===`horizontal`,c=Y(()=>u(`SCROLL_END`),100),[l,u]=h(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return p.useEffect(()=>{if(l===`idle`){let e=window.setTimeout(()=>u(`HIDE`),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[l,o.scrollHideDelay,u]),p.useEffect(()=>{let e=o.viewport,t=s?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(u(`SCROLL`),c()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[o.viewport,s,u,c]),(0,m.jsx)(r,{present:n||l!==`hidden`,children:(0,m.jsx)(k,{"data-state":l===`hidden`?`hidden`:`visible`,...i,ref:t,onPointerEnter:a(e.onPointerEnter,()=>u(`POINTER_ENTER`)),onPointerLeave:a(e.onPointerLeave,()=>u(`POINTER_LEAVE`))})})}),O=p.forwardRef((e,t)=>{let n=b(w,e.__scopeScrollArea),{forceMount:i,...a}=e,[o,s]=p.useState(!1),c=e.orientation===`horizontal`,l=Y(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;s(c?e:t)}},10);return X(n.viewport,l),X(n.content,l),(0,m.jsx)(r,{present:i||o,children:(0,m.jsx)(k,{"data-state":o?`visible`:`hidden`,...a,ref:t})})}),k=p.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=b(w,e.__scopeScrollArea),a=p.useRef(null),o=p.useRef(0),[s,c]=p.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=H(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return W(e,o.current,s,t)}return n===`horizontal`?(0,m.jsx)(A,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=G(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,m.jsx)(j,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=G(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),A=p.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=b(w,e.__scopeScrollArea),[s,c]=p.useState(),l=p.useRef(null),u=o(t,l,a.onScrollbarXChange);return p.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,m.jsx)(P,{"data-orientation":`horizontal`,...i,ref:u,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":U(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),q(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&a.viewport&&s&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:V(s.paddingLeft),paddingEnd:V(s.paddingRight)}})}})}),j=p.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=b(w,e.__scopeScrollArea),[s,c]=p.useState(),l=p.useRef(null),u=o(t,l,a.onScrollbarYChange);return p.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,m.jsx)(P,{"data-orientation":`vertical`,...i,ref:u,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":U(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),q(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&a.viewport&&s&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:V(s.paddingTop),paddingEnd:V(s.paddingBottom)}})}})}),[M,N]=_(w),P=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:s,onThumbPointerUp:c,onThumbPointerDown:u,onThumbPositionChange:d,onDragScroll:h,onWheelScroll:g,onResize:_,...v}=e,y=b(w,n),[x,S]=p.useState(null),C=o(t,e=>S(e)),T=p.useRef(null),E=p.useRef(``),D=y.viewport,O=r.content-r.viewport,k=f(g),A=f(d),j=Y(_,10);function N(e){T.current&&h({x:e.clientX-T.current.left,y:e.clientY-T.current.top})}return p.useEffect(()=>{let e=e=>{let t=e.target;x?.contains(t)&&k(e,O)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[D,x,O,k]),p.useEffect(A,[r,A]),X(x,j),X(y.content,j),(0,m.jsx)(M,{scope:n,scrollbar:x,hasThumb:i,onThumbChange:f(s),onThumbPointerUp:f(c),onThumbPositionChange:A,onThumbPointerDown:f(u),children:(0,m.jsx)(l.div,{...v,ref:C,style:{position:`absolute`,...v.style},onPointerDown:a(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),T.current=x.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,y.viewport&&(y.viewport.style.scrollBehavior=`auto`),N(e))}),onPointerMove:a(e.onPointerMove,N),onPointerUp:a(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,y.viewport&&(y.viewport.style.scrollBehavior=``),T.current=null})})})}),F=`ScrollAreaThumb`,I=p.forwardRef((e,t)=>{let{forceMount:n,...i}=e,a=N(F,e.__scopeScrollArea);return(0,m.jsx)(r,{present:n||a.hasThumb,children:(0,m.jsx)(L,{ref:t,...i})})}),L=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,s=b(F,n),c=N(F,n),{onThumbPositionChange:u}=c,d=o(t,e=>c.onThumbChange(e)),f=p.useRef(void 0),h=Y(()=>{f.current&&=(f.current(),void 0)},100);return p.useEffect(()=>{let e=s.viewport;if(e){let t=()=>{h(),f.current||(f.current=J(e,u),u())};return u(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[s.viewport,h,u]),(0,m.jsx)(l.div,{"data-state":c.hasThumb?`visible`:`hidden`,...i,ref:d,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:a(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;c.onThumbPointerDown({x:n,y:r})}),onPointerUp:a(e.onPointerUp,c.onThumbPointerUp)})});I.displayName=F;var R=`ScrollAreaCorner`,z=p.forwardRef((e,t)=>{let n=b(R,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,m.jsx)(B,{...e,ref:t}):null});z.displayName=R;var B=p.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=b(R,n),[a,o]=p.useState(0),[s,c]=p.useState(0),u=!!(a&&s);return X(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),X(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),u?(0,m.jsx)(l.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function V(e){return e?parseInt(e,10):0}function H(e,t){let n=e/t;return isNaN(n)?0:n}function U(e){let t=H(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function W(e,t,n,r=`ltr`){let i=U(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return K([c,l],d)(e)}function G(e,n,r=`ltr`){let i=U(n),a=n.scrollbar.paddingStart+n.scrollbar.paddingEnd,o=n.scrollbar.size-a,s=n.content-n.viewport,c=o-i,l=t(e,r===`ltr`?[0,s]:[s*-1,0]);return K([0,s],[0,c])(l)}function K(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function q(e,t){return e>0&&e<t}var J=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function Y(e,t){let n=f(e),r=p.useRef(0);return p.useEffect(()=>()=>window.clearTimeout(r.current),[]),p.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function X(e,t){let n=f(t);s(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Z=x,Q=C,ee=z;function te({className:e,children:t,...n}){return(0,m.jsxs)(Z,{"data-slot":`scroll-area`,className:u(`relative`,e),...n,children:[(0,m.jsx)(Q,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,m.jsx)($,{}),(0,m.jsx)(ee,{})]})}function $({className:e,orientation:t=`vertical`,...n}){return(0,m.jsx)(T,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:u(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,m.jsx)(I,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}export{$ as n,te as t};