limixbot 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/assets/{ActivityPanel-wGakTVoB.js → ActivityPanel-SyXMCej4.js} +1 -1
  2. package/dist/assets/{App-nn1CRFOF.js → App-X_zk2xl3.js} +9 -9
  3. package/dist/assets/{AppEventEditor-qtzW6Wi9.js → AppEventEditor-B-cNA9KG.js} +1 -1
  4. package/dist/assets/{BotSettingsDialog-BqdSZ6Bc.js → BotSettingsDialog-CmheslCU.js} +1 -1
  5. package/dist/assets/{BrowserPanel-DEPSYPbp.js → BrowserPanel-BHNWYfsE.js} +1 -1
  6. package/dist/assets/{BrowserProfilesManager-CdHa_Pzc.js → BrowserProfilesManager-TkQi-a3T.js} +1 -1
  7. package/dist/assets/{CloudAddDialog-kw0Xoy-f.js → CloudAddDialog-CqMPQ-0_.js} +1 -1
  8. package/dist/assets/{ComputerFilesPane-dcjg6CsZ.js → ComputerFilesPane-C2_Khy6Z.js} +1 -1
  9. package/dist/assets/{ComputerPanel-DlRO3y4j.js → ComputerPanel-Zc6gSPqv.js} +2 -2
  10. package/dist/assets/{DataPanel-BgEoMjKG.js → DataPanel-BQfys1jK.js} +1 -1
  11. package/dist/assets/{DesktopViewer-QXLtwr1X.js → DesktopViewer-CmQvv2Qp.js} +1 -1
  12. package/dist/assets/{FilesView-B6okgCEu.js → FilesView-DIvdjTfH.js} +1 -1
  13. package/dist/assets/{GrokMoveDialog-Da43KH3C.js → GrokMoveDialog-ClB9Gmym.js} +1 -1
  14. package/dist/assets/{InspectorPanel-DrLnVkYH.js → InspectorPanel-D86H4VDB.js} +1 -1
  15. package/dist/assets/{KeyboardShortcutsModal-75ABeY6c.js → KeyboardShortcutsModal--OBnvszl.js} +1 -1
  16. package/dist/assets/{LiveDesktop-CWf3-i6p.js → LiveDesktop-qaS7h5XB.js} +1 -1
  17. package/dist/assets/{LocalVmWorkspace-CR3rH05s.js → LocalVmWorkspace-B-P5zHz6.js} +1 -1
  18. package/dist/assets/{MacLocalControl-CExicJY4.js → MacLocalControl-BYNcLKoB.js} +1 -1
  19. package/dist/assets/{MarkdownFilePreview-aTqNPS7m.js → MarkdownFilePreview-DlUycNRH.js} +1 -1
  20. package/dist/assets/{MenuMotion-DhUo51zl.js → MenuMotion-V6wxTHIu.js} +1 -1
  21. package/dist/assets/{NewBotDialog-D4lQtbBE.js → NewBotDialog-oiX-W3q2.js} +1 -1
  22. package/dist/assets/{PhoneAppDialog-D2qWAW76.js → PhoneAppDialog-PE1xfgqx.js} +1 -1
  23. package/dist/assets/{PlacesRail-BDV0ABcM.js → PlacesRail-B9RHHjvB.js} +1 -1
  24. package/dist/assets/{PluginsPanel-DZTFKo1y.js → PluginsPanel-DObrpruo.js} +1 -1
  25. package/dist/assets/{ProIntroduction-Bwnff7uQ.js → ProIntroduction-CC1iFzJ8.js} +1 -1
  26. package/dist/assets/{RemoteAgentSettingsPanel-Bgma6TDp.js → RemoteAgentSettingsPanel-BmTQFEnJ.js} +1 -1
  27. package/dist/assets/{RoomPanel-C_Sg2Z7z.js → RoomPanel-Dqe-JRuH.js} +1 -1
  28. package/dist/assets/{RoutinesPage-BPQYVlnE.js → RoutinesPage-DF0vugaB.js} +1 -1
  29. package/dist/assets/{SettingsModal-DHQ6sD8j.js → SettingsModal--kx8POGb.js} +1 -1
  30. package/dist/assets/{ShareTeamDialog-CilYt5Ya.js → ShareTeamDialog-CAAPet8R.js} +1 -1
  31. package/dist/assets/{SignedInSites-Cr70b2L2.js → SignedInSites-DMOzwYFf.js} +1 -1
  32. package/dist/assets/{TeamLibraryPanel-BDa1gQIZ.js → TeamLibraryPanel-D4zeyxsY.js} +1 -1
  33. package/dist/assets/{TeamMapPage-DqRb3TGJ.js → TeamMapPage-DG7S7JTR.js} +1 -1
  34. package/dist/assets/{TriggersPage-CUpJCafe.js → TriggersPage--3O5UVSD.js} +1 -1
  35. package/dist/assets/{VisibilitySection-c7NZIA9V.js → VisibilitySection-DQw13aWS.js} +1 -1
  36. package/dist/assets/{WebhookTrigger-rWCF-fSk.js → WebhookTrigger-D9RAfcql.js} +1 -1
  37. package/dist/assets/{WorksOnGrid-DihSwYt9.js → WorksOnGrid-CviOksXp.js} +1 -1
  38. package/dist/assets/{abnfDiagram-YUKMZFIV-BMYI5zF5.js → abnfDiagram-YUKMZFIV-BLZgYnje.js} +1 -1
  39. package/dist/assets/{activity-D2PL1gFe.js → activity-DCHcmn3c.js} +1 -1
  40. package/dist/assets/{architectureDiagram-47P4ROYG-Cq3f5Ag3.js → architectureDiagram-47P4ROYG-D0neESJD.js} +1 -1
  41. package/dist/assets/{blockDiagram-E7TT5TSB-8I28B3bb.js → blockDiagram-E7TT5TSB-CrnkLSzZ.js} +1 -1
  42. package/dist/assets/{c4Diagram-CRA5TL53-BtQWKLUx.js → c4Diagram-CRA5TL53-D0tNc6O-.js} +1 -1
  43. package/dist/assets/{calendar-days-CkTnLcm-.js → calendar-days-C5I0mEXB.js} +1 -1
  44. package/dist/assets/channel-uYq3EMr8.js +1 -0
  45. package/dist/assets/{chunk-2Q5K7J3B-BcHz75It.js → chunk-2Q5K7J3B-DGtBJhY1.js} +1 -1
  46. package/dist/assets/{chunk-5VM5RSS4-BLe2eJnK.js → chunk-5VM5RSS4-D5kTbdEy.js} +1 -1
  47. package/dist/assets/{chunk-7TKQ45FW-DHES88ZT.js → chunk-7TKQ45FW-DaN8eX-m.js} +1 -1
  48. package/dist/assets/{chunk-AW2ZBBNX-PI3r7l8j.js → chunk-AW2ZBBNX-DMhIBKZU.js} +1 -1
  49. package/dist/assets/{chunk-FVRAUYC3-BXEZl-_w.js → chunk-FVRAUYC3-Dos86Pqk.js} +2 -2
  50. package/dist/assets/{chunk-HTAEGDNF-BmMsXJLi.js → chunk-HTAEGDNF-CsLodVYj.js} +1 -1
  51. package/dist/assets/{chunk-JWPE2WC7-C5dZ5J6R.js → chunk-JWPE2WC7-6THZlDrB.js} +1 -1
  52. package/dist/assets/{chunk-KQW6MTUR-DvxBphgU.js → chunk-KQW6MTUR-CoD74fHy.js} +1 -1
  53. package/dist/assets/{chunk-XXDRQBXY-TMAqsYLp.js → chunk-XXDRQBXY-DMl-0hJf.js} +1 -1
  54. package/dist/assets/{classDiagram-v2-K4WV4PDN-BNcMl3ic.js → classDiagram-v2-K4WV4PDN-BscLWNpw.js} +1 -1
  55. package/dist/assets/{coins-V4mVN2W-.js → coins-CZu-SgM9.js} +1 -1
  56. package/dist/assets/{core-CLUt4bhC.js → core-BDlOAqLn.js} +1 -1
  57. package/dist/assets/{cose-bilkent-JH36ORCC-SqFMExgo.js → cose-bilkent-JH36ORCC-BeKB4nW9.js} +1 -1
  58. package/dist/assets/{cynefin-EF2NZ3EQ-8KVnqRYL.js → cynefin-EF2NZ3EQ-D0aWGmzz.js} +1 -1
  59. package/dist/assets/{cynefinDiagram-3GCD6N5R-DJDKuhvE.js → cynefinDiagram-3GCD6N5R-4SW-h53B.js} +1 -1
  60. package/dist/assets/{dagre-W4DXFKR2-BNOKfUQP.js → dagre-W4DXFKR2-DNq2AGoj.js} +1 -1
  61. package/dist/assets/de-B1J17cai.js +8 -0
  62. package/dist/assets/{diagram-2UJZ2QOL-CtypQwWI.js → diagram-2UJZ2QOL-lSLAkRD3.js} +1 -1
  63. package/dist/assets/{diagram-OVF4WLC6-DYGOe5dt.js → diagram-OVF4WLC6-BHf__HqF.js} +1 -1
  64. package/dist/assets/{diagram-PFPMY2P6-BmWki4-n.js → diagram-PFPMY2P6-B5YmPbc0.js} +1 -1
  65. package/dist/assets/{diagram-UMYRVEAY-BHkrgOw0.js → diagram-UMYRVEAY-DdOUcYJA.js} +1 -1
  66. package/dist/assets/{diagram-YEKJPTXX-BNnr9BVG.js → diagram-YEKJPTXX-r41O-hkk.js} +1 -1
  67. package/dist/assets/{diagram-ZIFT7M5P-D6dgtxhx.js → diagram-ZIFT7M5P-DKV_3_Sr.js} +1 -1
  68. package/dist/assets/{ebnfDiagram-VR2GEFS7-BB0cZ0XH.js → ebnfDiagram-VR2GEFS7-CD4xgv0O.js} +1 -1
  69. package/dist/assets/{elk-IJKZMXRS-DxEc1gip.js → elk-IJKZMXRS-D0Vwqj3g.js} +1 -1
  70. package/dist/assets/{erDiagram-O2IAPWRE-g0lX3P7o.js → erDiagram-O2IAPWRE-C388tpIL.js} +1 -1
  71. package/dist/assets/es-CS_V7OdX.js +6 -0
  72. package/dist/assets/{file-up-CVXxMYSO.js → file-up-DGhlT3MD.js} +1 -1
  73. package/dist/assets/{flowDiagram-OXPTDLAJ-CDuQPMTL.js → flowDiagram-OXPTDLAJ-B1p6s4tu.js} +1 -1
  74. package/dist/assets/fr-Dn65EJNi.js +8 -0
  75. package/dist/assets/{ganttDiagram-R7TSEDQI-BX2MBIv7.js → ganttDiagram-R7TSEDQI-BzJAoXbd.js} +1 -1
  76. package/dist/assets/{gitGraphDiagram-XJZIOB7I-B3TKmfsg.js → gitGraphDiagram-XJZIOB7I-Bb3SHitI.js} +1 -1
  77. package/dist/assets/hi-CHU0sl7u.js +1 -0
  78. package/dist/assets/{import-name-AOCSrYeN.js → import-name-B7AGian6.js} +1 -1
  79. package/dist/assets/{index-DUV18QHa.js → index-C-EiNxm_.js} +1 -1
  80. package/dist/assets/{index-qPZ2uEQ9.js → index-CmUdQ2of.js} +1 -1
  81. package/dist/assets/{index-CuCIbHWm.js → index-DJPPxxyF.js} +2 -2
  82. package/dist/assets/{infoDiagram-5W2HQ5XZ-DIr7IZbP.js → infoDiagram-5W2HQ5XZ-DUF-NVrB.js} +1 -1
  83. package/dist/assets/{ishikawaDiagram-K3B6WC7H-NMKEEmyA.js → ishikawaDiagram-K3B6WC7H-CITswxnS.js} +1 -1
  84. package/dist/assets/it-CbDr93sA.js +13 -0
  85. package/dist/assets/ja-CJbW-M3a.js +13 -0
  86. package/dist/assets/{journeyDiagram-COXZFDF6-DgZisK1u.js → journeyDiagram-COXZFDF6-C8xhr3tj.js} +1 -1
  87. package/dist/assets/{kanban-definition-P3RFRI5V-D9DXm2W-.js → kanban-definition-P3RFRI5V-C94FCxQq.js} +1 -1
  88. package/dist/assets/ko-ZQvzPil_.js +13 -0
  89. package/dist/assets/{mcp-servers-M4OhcNZG.js → mcp-servers-Cu4E6BBW.js} +1 -1
  90. package/dist/assets/{mermaid.core-DfRakiWl.js → mermaid.core-5_WMXhyJ.js} +4 -4
  91. package/dist/assets/{mindmap-definition-LZFPQGKD-Dssv5SKs.js → mindmap-definition-LZFPQGKD-Dgq8HUHz.js} +1 -1
  92. package/dist/assets/{minimize-DCuQCut-.js → minimize-C8Om8qhk.js} +1 -1
  93. package/dist/assets/{monitor-Dl1gHAr3.js → monitor-DUEBF6Jm.js} +1 -1
  94. package/dist/assets/{new-bot-B4NPoOi_.js → new-bot-DKmgM4tN.js} +1 -1
  95. package/dist/assets/{org-library-Ccr_VDG6.js → org-library-BqY2D4NK.js} +1 -1
  96. package/dist/assets/{package-format-CxnG4Kw8.js → package-format-BZOfdy7w.js} +1 -1
  97. package/dist/assets/{pegDiagram-BGZESJAR-CQbSQ3IE.js → pegDiagram-BGZESJAR-DM0SAjez.js} +1 -1
  98. package/dist/assets/{pieDiagram-CAPJLFHJ-C7ozPET8.js → pieDiagram-CAPJLFHJ-okeIqCL5.js} +1 -1
  99. package/dist/assets/pl-tZIDksyW.js +13 -0
  100. package/dist/assets/pt-br-BtcqPDCE.js +15 -0
  101. package/dist/assets/{quadrantDiagram-GDMTTRAM-DJk_Kyy9.js → quadrantDiagram-GDMTTRAM-ihMGhHs3.js} +1 -1
  102. package/dist/assets/{rail-fMmyqhzW.js → rail-JcqaOG9e.js} +1 -1
  103. package/dist/assets/{railroadDiagram-SM67HX2B-DMcwdEyc.js → railroadDiagram-SM67HX2B-CkWYP-ib.js} +1 -1
  104. package/dist/assets/{remote-desktop-panel-dbuIWW_m.js → remote-desktop-panel-ij2w_JZy.js} +1 -1
  105. package/dist/assets/{requirementDiagram-X7JNWC4A-CLiopj9D.js → requirementDiagram-X7JNWC4A-CSZ3nQJ1.js} +1 -1
  106. package/dist/assets/ru-Bfcy52OT.js +13 -0
  107. package/dist/assets/{sankeyDiagram-UM26HJRW-DWKPgJCC.js → sankeyDiagram-UM26HJRW-RL7DTxjH.js} +1 -1
  108. package/dist/assets/{sequenceDiagram-ZO4K6R2Y-CGfF9z1U.js → sequenceDiagram-ZO4K6R2Y-C6MjuYtv.js} +1 -1
  109. package/dist/assets/{sizeCapture-INFHLROL-CRjSCZFK.js → sizeCapture-INFHLROL-QtHNQM-7.js} +1 -1
  110. package/dist/assets/{stateDiagram-v2-TBUQTH76-CFIB5Of8.js → stateDiagram-v2-TBUQTH76-CwPZ7nQm.js} +1 -1
  111. package/dist/assets/{styles-BjZJZe6I.js → styles-Bj-lDRZL.js} +2 -2
  112. package/dist/assets/{swimlanes-N4OXWK64-DpmeGHcW.js → swimlanes-N4OXWK64-BfcwKeNi.js} +1 -1
  113. package/dist/assets/swimlanesDiagram-K3J5GTZL-D3m_eGXn.js +8 -0
  114. package/dist/assets/{team-share-CML_7_yJ.js → team-share-BQnZfIPS.js} +1 -1
  115. package/dist/assets/{timeline-definition-YOQAKGHF-DdTTKAK6.js → timeline-definition-YOQAKGHF-COZpJ85U.js} +1 -1
  116. package/dist/assets/tr-3Jw0E4fc.js +6 -0
  117. package/dist/assets/uk-B_Q6nXm0.js +1 -0
  118. package/dist/assets/{usecaseDiagram-VIAY4XPW-D5CELJJA.js → usecaseDiagram-VIAY4XPW-B6vldE5m.js} +1 -1
  119. package/dist/assets/{vennDiagram-BLWOH2XV-CujsBy3r.js → vennDiagram-BLWOH2XV-Cmgzf72_.js} +1 -1
  120. package/dist/assets/vi-VlbIiohE.js +6 -0
  121. package/dist/assets/{wardleyDiagram-YMQ3BMBF-QfDuuGBm.js → wardleyDiagram-YMQ3BMBF-XlosqW3x.js} +1 -1
  122. package/dist/assets/{xychartDiagram-TAQBALBS-B7n2GH_Y.js → xychartDiagram-TAQBALBS-Byro5SJm.js} +1 -1
  123. package/dist/assets/zh-BwjuB8Xo.js +13 -0
  124. package/dist/assets/zh-tw-CWDGum-b.js +15 -0
  125. package/dist/index.html +2 -2
  126. package/dist/rail.html +4 -4
  127. package/dist-server/index.js +695 -715
  128. package/dist-server/openmausbot.js +548 -558
  129. package/dist-server/package.json +1 -1
  130. package/dist-server/pair-cli.js +61 -61
  131. package/dist-server/server/brand.js +1 -1
  132. package/dist-server/server/index.js +2 -2
  133. package/dist-server/server/limix-report-config.js +1 -0
  134. package/dist-server/server/limix-report-mail.js +59 -0
  135. package/package.json +1 -1
  136. package/dist/assets/channel-BFWribVc.js +0 -1
  137. package/dist/assets/de-SCUOqYm5.js +0 -8
  138. package/dist/assets/es-A3rM0HzK.js +0 -6
  139. package/dist/assets/fr-DRDEDuSU.js +0 -8
  140. package/dist/assets/hi-Bar1etD1.js +0 -1
  141. package/dist/assets/it-CaaGmE6C.js +0 -13
  142. package/dist/assets/ja-C8goxgXK.js +0 -13
  143. package/dist/assets/ko-ClPjw23W.js +0 -13
  144. package/dist/assets/pl-BZRlEjRG.js +0 -13
  145. package/dist/assets/pt-br-Pn296bZX.js +0 -15
  146. package/dist/assets/ru-BjNOFHlt.js +0 -13
  147. package/dist/assets/swimlanesDiagram-K3J5GTZL-aGF7VI1o.js +0 -8
  148. package/dist/assets/tr-DvCKopMI.js +0 -6
  149. package/dist/assets/uk-eQInRbS6.js +0 -1
  150. package/dist/assets/vi-BWcvK_yD.js +0 -6
  151. package/dist/assets/zh-CIfUJ9rS.js +0 -13
  152. package/dist/assets/zh-tw-DnyY-W7m.js +0 -15
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DataPanel-BgEoMjKG.js","assets/styles-BjZJZe6I.js","assets/styles-D8FmJr6X.css","assets/App-nn1CRFOF.js","assets/index-CuCIbHWm.js","assets/PlacesRail-BDV0ABcM.js","assets/monitor-Dl1gHAr3.js","assets/MenuMotion-DhUo51zl.js","assets/calendar-days-CkTnLcm-.js","assets/LiveDesktop-CWf3-i6p.js","assets/desktop-connection-Dfaq6k5a.js","assets/desktop-viewer-CF-OpSo0.js"])))=>i.map(i=>d[i]);
2
- import{c as ht,r as a,t as n,j as e,a as K,am as hr,X as gr,an as vr,_ as Pn}from"./styles-BjZJZe6I.js";import{c as yr,a as wr,b as kr,i as jr,d as Nr}from"./remote-desktop-DDRRx8uY.js";import{v as Sr}from"./desktop-viewer-CF-OpSo0.js";import{dC as Ge,S as zn,E as Cr,D as Ir,bF as Er,bs as Rr,R as pt,Q as Pr,U as Xe,dD as zr,Y as Ye,br as Tr,F as Ar,dE as Dr,G as Ft,w as Tn,dF as $t,dG as dt,u as Lr,dH as Mr,dI as Or,dJ as Vr,dK as _r,a0 as Fr,dL as $r,dM as Br,dN as Wr,dO as Kr,dP as Ur,o as Hr,bK as qr,bJ as yn,n as F,dQ as Xr,dR as Yr,l as Gr,X as Jr,bL as wn,dS as Zr,dT as Qr,a1 as es,dU as kn,dV as ts,dW as ns,dX as rs,p as jn,dY as ss,dZ as Vt,a9 as as,aa as os,cl as is,d_ as ls,d$ as cs,Z as ds,A as us,e0 as ps,e1 as ms,e2 as xs,e3 as bs,q as fs,e4 as hs,e5 as gs,e6 as vs}from"./App-nn1CRFOF.js";import{L as O,p as Nn,M as ys,w as ws}from"./MacLocalControl-CExicJY4.js";import{R as ks,C as js}from"./ComputerFilesPane-dcjg6CsZ.js";import{L as A,X as An,u as Dn,d as Je,c as Ns,y as Sn,g as mt,W as Cn,o as Ss,e as In,f as Cs,s as Is}from"./PlacesRail-BDV0ABcM.js";import{u as Bt,B as Es}from"./BrowserPanel-DEPSYPbp.js";import{M as De}from"./monitor-Dl1gHAr3.js";import{C as Ln,w as Rs,a as Ps,p as zs,W as Ts}from"./WorksOnGrid-DihSwYt9.js";import{C as As}from"./MenuMotion-DhUo51zl.js";import"./index-CuCIbHWm.js";import"./RoutinesPage-BPQYVlnE.js";import"./ProIntroduction-Bwnff7uQ.js";import"./BrowserProfilesManager-CdHa_Pzc.js";import"./SignedInSites-Cr70b2L2.js";import"./minimize-DCuQCut-.js";import"./file-up-CVXxMYSO.js";const Ds=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]],Ls=ht("columns-2",Ds);const Ms=[["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m14.305 7.53.923-.382",key:"1mlnsw"}],["path",{d:"m15.228 4.852-.923-.383",key:"82mpwg"}],["path",{d:"m16.852 3.228-.383-.924",key:"ln4sir"}],["path",{d:"m16.852 8.772-.383.923",key:"1dejw0"}],["path",{d:"m19.148 3.228.383-.924",key:"192kgf"}],["path",{d:"m19.53 9.696-.382-.924",key:"fiavlr"}],["path",{d:"m20.772 4.852.924-.383",key:"1j8mgp"}],["path",{d:"m20.772 7.148.924.383",key:"zix9be"}],["path",{d:"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7",key:"1tnzv8"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}]],Os=ht("monitor-cog",Ms);const Vs=[["path",{d:"m14.5 12.5-5-5",key:"1jahn5"}],["path",{d:"m9.5 12.5 5-5",key:"1k2t7b"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]],_s=ht("monitor-x",Vs);const Fs=[["circle",{cx:"10",cy:"7",r:"1",key:"dypaad"}],["circle",{cx:"4",cy:"20",r:"1",key:"22iqad"}],["path",{d:"M4.7 19.3 19 5",key:"1enqfc"}],["path",{d:"m21 3-3 1 2 2Z",key:"d3ov82"}],["path",{d:"M9.26 7.68 5 12l2 5",key:"1esawj"}],["path",{d:"m10 14 5 2 3.5-3.5",key:"v8oal5"}],["path",{d:"m18 12 1-1 1 1-1 1Z",key:"1bh22v"}]],$s=ht("usb",Fs);function Bs({src:s,name:i,error:d,starting:S,opening:f,disabled:v,refreshing:k=!1,retry:j=0,onOpen:y,onRetry:P}){const[u,m]=a.useState(null),[h,g]=a.useState(null);a.useEffect(()=>{g(null)},[j]);const x=!!(s&&u===s&&h!==s),w=d??(s&&h===s?n("computer.preview.imageFailed"):null);return e.jsxs("div",{className:"relative h-full w-full","aria-busy":!w&&(!x||f||k),children:[s&&e.jsxs("button",{type:"button",onClick:y,disabled:v||S||f||!x,className:"group absolute inset-0 flex h-full w-full items-center justify-center disabled:cursor-wait","aria-label":n("computer.openLiveDesktopAria",{name:i}),title:n("computer.openLiveDesktop"),children:[e.jsx("img",{src:s,alt:n("computer.screenOf",{name:i}),onLoad:()=>{m(s),g(null)},onError:()=>g(s),className:`h-full w-full object-contain transition group-hover:brightness-75 ${x?"":"invisible"}`},j),x&&e.jsxs("span",{className:"absolute right-2 top-2 flex items-center gap-1 rounded-md bg-black/70 px-2 py-1 text-[11px] font-medium text-white",children:[f?e.jsx(A,{size:12,className:"animate-spin"}):e.jsx(Ge,{size:12}),f?n("computer.preview.connecting"):n("computer.open")]})]}),!x&&!w&&e.jsxs("div",{role:"status",className:"absolute inset-0 flex flex-col items-center justify-center gap-2 px-6 text-center text-[12px] text-ink-secondary",children:[e.jsx(A,{size:18,className:"animate-spin"}),S?n("computer.phase.starting"):n("computer.preview.connectingScreen")]}),x&&k&&!w&&e.jsxs("div",{role:"status",className:"absolute bottom-2 left-2 flex items-center gap-1 rounded-md bg-black/70 px-2 py-1 text-[11px] text-white",children:[e.jsx(A,{size:12,className:"animate-spin"}),n("computer.preview.connectingScreen")]}),w&&e.jsxs("div",{role:"alert",className:`absolute inset-x-0 flex flex-col items-center justify-center gap-2 bg-card/95 p-4 text-center text-[12px] text-ink-secondary ${x?"bottom-0":"inset-y-0"}`,children:[!x&&e.jsx(De,{size:22}),e.jsxs("span",{children:[x?n("computer.preview.paused"):n("computer.preview.cantConnect")," ",w]}),e.jsx("button",{type:"button",onClick:()=>P(!x),className:"rounded-md bg-control px-3 py-1.5 text-ink hover:bg-raised-hover",children:n("computer.preview.retry")})]})]})}function Ws({bot:s,backend:i,onBackend:d,onAutoStart:S}){return e.jsxs("div",{"data-testid":"vps-choices",children:[e.jsx(Ln,{compact:!0,value:i,onChange:d}),!s.computer&&e.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4 rounded-lg bg-inset px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[13px] text-ink",children:n("botAccess.cloud.startVps")}),e.jsx("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:n("botAccess.cloud.startVpsDescription")})]}),e.jsx(zn,{checked:!!s.autoStartVps,"aria-label":n("botAccess.cloud.startVps"),onClick:S})]})]})}const Ks={available:!1,devices:[]};function Us(){const s=window.ogb?.androidDevice,[i,d]=a.useState(Ks),[S,f]=a.useState(!1),v=Bt();return a.useEffect(()=>{if(!s){f(!0);return}if(!v)return;let k=!0,j=0,y=0;const P=async()=>{const m=++j,h=()=>m<y;try{const g=await s.status();k&&!h()&&(y=m,d(g))}catch(g){k&&!h()&&(y=m,d({available:!1,devices:[],reasonCode:"adb-failed",message:g instanceof Error?g.message:String(g)}))}finally{k&&!h()&&f(!0)}};P();const u=window.setInterval(()=>{P()},2e3);return()=>{k=!1,window.clearInterval(u)}},[s,v]),{...i,scanned:S}}function ct(s){return s.model==="Android device"?s.serial:s.model}function Hs({status:s}){const i=window.ogb?.androidDevice,d=Bt(),S=s.devices.filter(p=>p.state==="device"),[f,v]=a.useState(S[0]?.serial??s.devices[0]?.serial??""),[k,j]=a.useState(null),[y,P]=a.useState({width:0,height:0}),[u,m]=a.useState(null),h=a.useRef(null),g=a.useRef(null),x=a.useRef({x:0,y:0,timer:null}),w=s.devices.find(p=>p.serial===f)??s.devices[0],$=w?.serial,R=w?.state;a.useEffect(()=>{!w&&s.devices[0]&&v(s.devices[0].serial),w&&!s.devices.some(p=>p.serial===w.serial)&&v(s.devices[0]?.serial??"")},[w,s.devices]),a.useEffect(()=>{if(!i||!$||R!=="device"||!d){if(!d)return;j(null);return}let p=!0,C=null;const V=async()=>{try{const _=await i.frame($);p&&(j(_.dataUrl),m(null))}catch(_){p&&m(_ instanceof Error?_.message:String(_))}finally{p&&(C=window.setTimeout(()=>{V()},850))}};return V(),()=>{p=!1,C!==null&&window.clearTimeout(C)}},[i,$,R,d]),a.useEffect(()=>()=>{x.current.timer&&clearTimeout(x.current.timer)},[]);const D=p=>{!i||!w||w.state!=="device"||i.input(w.serial,p).catch(C=>{m(C instanceof Error?C.message:String(C))})},B=(p,C=!1)=>{if(!h.current||!y.width||!y.height)return null;const _=p.currentTarget.getBoundingClientRect(),L=Math.min(_.width/y.width,_.height/y.height),X=y.width*L,Z=y.height*L,Y=_.left+(_.width-X)/2,Le=_.top+(_.height-Z)/2,Ce=(p.clientX-Y)/X,te=(p.clientY-Le)/Z;return C?{x:Math.max(0,Math.min(1,Ce)),y:Math.max(0,Math.min(1,te))}:Ce>=0&&Ce<=1&&te>=0&&te<=1?{x:Ce,y:te}:null},ye=p=>{if(p.metaKey||p.ctrlKey||p.altKey)return;const C={ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up",Backspace:"delete",Delete:"delete",Enter:"enter",Escape:"back",Tab:"tab"};C[p.key]?(p.preventDefault(),D({type:"key",key:C[p.key]})):/^[A-Za-z0-9 _.,@-]$/.test(p.key)&&(p.preventDefault(),D({type:"text",text:p.key}))},me=p=>{if(!y.width||!y.height)return;p.preventDefault();const C=x.current;C.x+=p.deltaX,C.y+=p.deltaY,C.timer&&clearTimeout(C.timer),C.timer=setTimeout(()=>{const V=Math.abs(C.x)>Math.abs(C.y),_=V?C.x:C.y;if(C.x=0,C.y=0,C.timer=null,Math.abs(_)<2)return;const L=Math.max(.18,Math.min(.45,Math.abs(_)/500)),X=_>0?-1:1,Z=V?{x:.5,y:.5}:{x:.5,y:.65},Y=V?{x:Z.x+X*L,y:Z.y}:{x:Z.x,y:Z.y+X*L};D({type:"swipe",fromX:Z.x,fromY:Z.y,toX:Y.x,toY:Y.y,durationMs:260,width:y.width,height:y.height})},80)};if(!w)return null;const r=w.state==="device";return e.jsxs("div",{className:"space-y-3 pb-5",children:[e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 text-[15px] font-medium text-ink",children:[e.jsx(An,{size:16,className:"text-success"})," ",ct(w)]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:n("computer.android.usbSubtitle")})]}),e.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-[11px] text-success",children:[e.jsx(Cr,{size:12})," ",n("computer.android.usb")]})]}),s.devices.length>1&&e.jsx(Ir,{value:w.serial,onChange:p=>v(p.target.value),className:"mt-3 w-full",children:s.devices.map(p=>e.jsxs("option",{value:p.serial,children:[ct(p)," · ",p.state]},p.serial))})]}),r?e.jsxs(e.Fragment,{children:[e.jsx("div",{role:"application","aria-label":n("computer.android.screenAria",{name:ct(w)}),tabIndex:0,onKeyDown:ye,onWheel:me,onPointerDown:p=>{const C=B(p);C&&(p.currentTarget.setPointerCapture(p.pointerId),g.current={point:C,at:performance.now()})},onPointerUp:p=>{const C=g.current,V=B(p,!0);if(g.current=null,!C||!V)return;Math.hypot(V.x-C.point.x,V.y-C.point.y)<.012?D({type:"tap",...V,...y}):D({type:"swipe",fromX:C.point.x,fromY:C.point.y,toX:V.x,toY:V.y,durationMs:performance.now()-C.at,...y}),p.currentTarget.focus()},onPointerCancel:()=>{g.current=null},className:"mx-auto flex h-[520px] w-full touch-none cursor-pointer items-center justify-center overflow-hidden overscroll-none rounded-[28px] bg-black outline-none ring-1 ring-white/10 focus:ring-2 focus:ring-accent",children:k?e.jsx("img",{ref:h,src:k,alt:n("computer.android.screenAlt",{name:ct(w)}),draggable:!1,onLoad:p=>{P({width:p.currentTarget.naturalWidth,height:p.currentTarget.naturalHeight})},className:"pointer-events-none h-full w-full select-none object-contain"}):e.jsx(A,{size:20,className:"animate-spin text-ink-secondary"})}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>D({type:"key",key:"back"}),className:"flex items-center justify-center gap-1.5 rounded-lg bg-raised py-2 text-[12px] text-ink hover:bg-raised-hover",children:[e.jsx(Er,{size:13})," ",n("computer.android.back")]}),e.jsxs("button",{onClick:()=>D({type:"key",key:"home"}),className:"flex items-center justify-center gap-1.5 rounded-lg bg-raised py-2 text-[12px] text-ink hover:bg-raised-hover",children:[e.jsx(Rr,{size:12})," ",n("computer.android.home")]}),e.jsxs("button",{onClick:()=>D({type:"key",key:"recent"}),className:"flex items-center justify-center gap-1.5 rounded-lg bg-raised py-2 text-[12px] text-ink hover:bg-raised-hover",children:[e.jsx(pt,{size:13})," ",n("computer.android.recent")]})]}),e.jsx("div",{className:"text-center text-[11px] leading-relaxed text-ink-secondary",children:n("computer.android.hint")})]}):e.jsx("div",{className:"rounded-xl border border-warning/25 bg-warning/10 p-4 text-[12px] leading-relaxed text-warning",children:w.state==="unauthorized"?n("computer.android.unauthorized"):n("computer.android.badState",{state:w.state})}),u&&e.jsx("div",{className:"rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:u}),e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-[13px] font-medium text-ink",children:[e.jsx($s,{size:15,className:"text-accent"})," ",n("computer.android.setupTitle")]}),e.jsxs("ol",{className:"mt-2 list-decimal space-y-1.5 pl-4 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx("li",{children:n("computer.android.step1")}),e.jsx("li",{children:n("computer.android.step2").split(/(\{buildNumber\}|\{usbDebugging\})/).map((p,C)=>p==="{buildNumber}"||p==="{usbDebugging}"?e.jsx("span",{className:"text-ink",children:n(p==="{buildNumber}"?"computer.android.buildNumber":"computer.android.usbDebugging")},C):p)}),e.jsxs("li",{children:[n("computer.android.step3a")," ",e.jsx("span",{className:"text-ink",children:n("computer.android.allowUsbDebugging")})," ",n("computer.android.step3b")]})]}),e.jsx("div",{className:"mt-2 text-[11px] leading-relaxed text-ink-secondary",children:n("computer.android.agentNote")}),e.jsx("div",{className:"mt-2 rounded-lg bg-inset px-3 py-2 text-[11px] leading-relaxed text-ink-secondary",children:n("computer.android.harnessNote")})]})]})}const qs=1500,Xs=2e5,Mn=()=>Array.from(crypto.getRandomValues(new Uint8Array(18)),s=>s.toString(16).padStart(2,"0")).join("");function Ys(s,i){const d=window.setInterval(()=>{s.closed&&(window.clearInterval(d),i())},1e3)}async function Gs({botId:s,title:i,held:d,request:S,join:f,current:v}){let k=null,j=null;!window.ogb?.desktopViewer&&!window.ogb?.openExternal&&(j=window.open("","_blank"),j&&(j.opener=null));const y=()=>new DOMException("The selected conversation changed","AbortError");try{if(!d&&(k=Mn(),!(await S("take",k)).held))throw new O("computer.err.confirmControl");if(!v())throw y();const{joinUrl:P}=await f(AbortSignal.timeout(Xs)),u=typeof P=="string"&&P?P:null;if(!v())throw y();if(!u)throw new O("computer.err.noDesktopLink");if(window.ogb?.desktopViewer){if(!await window.ogb.desktopViewer.open(u,i,s))throw new O("computer.err.openDesktop")}else if(j){j.location.replace(u);const m=k;m&&Ys(j,()=>{S("release",m).catch(()=>{})})}else if(window.ogb?.openExternal){if(!await window.ogb.openExternal(u))throw new O("computer.err.openDesktopLink")}else if(!window.open(u,"_blank","noopener"))throw new O("computer.err.popupBlocked")}catch(P){throw j?.close(),k&&await S("release",k).catch(()=>{}),P}}function _t(s,i){fetch(s,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i),keepalive:!0}).catch(()=>{})}function Js({botId:s,session:i,held:d,request:S,viewerClose:f}){const[v,k]=a.useState(!1),[j,y]=a.useState(!1),[P,u]=a.useState(!1),m=a.useRef(null),h=a.useRef(f);h.current=f;const g=a.useCallback(()=>{k(!1),y(!1)},[]),x=a.useCallback(()=>{const R=m.current;m.current=null,g(),R&&(_t(`/api/bots/${s}/computer/control`,{action:"release",controlLeaseId:R.id}),R.viewerClose&&_t(R.viewerClose,{}))},[s,g]),w=a.useCallback(async(R=!1)=>{const D=Mn(),B=await S("take",D);if(!B.held)throw new O("computer.err.confirmControl");m.current=B.owned?{id:D,viewerClose:h.current}:null,k(!0),y(R)},[S]),$=a.useCallback(async()=>{const R=m.current?.viewerClose??h.current;m.current=null,g(),u(!0);try{await S("release")}finally{u(!1),R&&_t(R,{})}},[g,S]);return a.useEffect(()=>x,[i,x]),a.useEffect(()=>(window.addEventListener("pagehide",x),()=>window.removeEventListener("pagehide",x)),[x]),a.useEffect(()=>{if(!v||d)return;const R=setTimeout(()=>{m.current=null,g()},qs);return()=>clearTimeout(R)},[v,d,g]),{here:v,expanded:j,setExpanded:y,handingBack:P,take:w,handBack:$,leave:x}}function Zs({held:s,frame:i,name:d,disabled:S,takeDisabled:f,error:v,onTakeControl:k}){const[j,y]=a.useState(!1),P=a.useCallback(()=>y(!1),[]);return a.useEffect(()=>{s&&y(!1)},[s]),e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",onClick:()=>s?k(!0):y(!0),disabled:S,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n(s?"computer.openLiveDesktop":"computer.watchFullScreenTitle"),children:[e.jsx(Ge,{size:14}),n("computer.fullScreen")]}),j&&!s&&e.jsx(Qs,{frame:i,name:d,takeDisabled:f,error:v,onClose:P,onTakeControl:()=>k(!0)})]})}function Qs({frame:s,name:i,takeDisabled:d,error:S,onClose:f,onTakeControl:v}){const k=a.useRef(null),j=a.useRef(null),{dragProps:y,noDragStyle:P}=Dn(),u=Je().capabilities.windowChrome==="mac-inset",m=a.useRef(null),[h,g]=a.useState(!1);Ns(k,f),a.useEffect(()=>j.current?.focus(),[]),a.useEffect(()=>{const $=R=>{R.key!=="Escape"||R.defaultPrevented||!(R.target instanceof Node)||!k.current?.contains(R.target)||(R.preventDefault(),R.stopPropagation(),f())};return window.addEventListener("keydown",$,!0),()=>window.removeEventListener("keydown",$,!0)},[f]),a.useEffect(()=>{const $=document.activeElement;d&&($===m.current||$===document.body)&&k.current?.focus()},[d]);const x="flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[12px] focus-visible:outline-2 focus-visible:outline-focus disabled:opacity-50",w=n("computer.screenOf",{name:i});return e.jsxs("div",{ref:k,tabIndex:-1,"data-watch-full-screen":!0,role:"dialog","aria-modal":"true","aria-label":w,className:"fixed inset-0 z-[65] flex flex-col bg-app outline-none",children:[e.jsxs("header",{...y,className:K("flex shrink-0 flex-wrap items-center gap-2 border-b border-hairline/40 bg-panel px-3 py-2",u&&"pl-[86px]"),children:[e.jsx("span",{className:"min-w-0 truncate text-[13px] font-medium text-ink",children:w}),e.jsx("span",{className:"pointer-events-none rounded-full bg-black/70 px-2.5 py-1 text-[11px] font-medium text-white shadow-sm",children:n("computer.watchingBotWorks")}),e.jsxs("button",{ref:j,type:"button",style:P,onClick:f,"aria-label":n("desktopViewer.exitFullscreen"),className:K(x,"ml-auto bg-control text-ink hover:bg-raised-hover"),children:[e.jsx(Pr,{size:14,"aria-hidden":"true"}),e.jsx("span",{className:"max-sm:hidden",children:n("desktopViewer.exitFullscreen")})]}),e.jsxs("button",{ref:m,type:"button",style:P,onClick:()=>{g(!0),v()},disabled:d,className:K(x,"bg-accent font-medium text-accent-ink hover:brightness-110"),title:n("computer.takeControlTitle"),children:[e.jsx(Xe,{size:14,"aria-hidden":"true"}),n("computer.takeControl")]})]}),h&&S&&e.jsx("div",{role:"alert",className:"shrink-0 border-b border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:S}),e.jsx("div",{className:"relative flex min-h-0 flex-1 items-center justify-center overflow-hidden bg-inset",children:s?e.jsx("img",{src:s,alt:w,className:"h-full w-full object-contain"}):e.jsxs("span",{role:"status",className:"flex items-center gap-2 text-[12px] text-ink-secondary",children:[e.jsx(A,{size:16,className:"animate-spin","aria-hidden":"true"}),n("computer.waitingFrame")]})})]})}function ut(s){for(const i of s?.getTracks()??[])i.stop()}function ea(s){const i=s instanceof DOMException?s.name:"";return i==="NotAllowedError"||i==="AbortError"?{ok:!1,phase:"cancelled",messageKey:"computer.screen.cancelled"}:i==="NotFoundError"||i==="NotReadableError"||i==="NotSupportedError"||i==="SecurityError"?{ok:!1,phase:"unavailable",messageKey:"computer.screen.unavailableNow"}:{ok:!1,phase:"error",messageKey:"computer.screen.error"}}async function ta({beginIntent:s,getDisplayMedia:i}){try{if(!s())return{ok:!1,phase:"unavailable",messageKey:"computer.screen.unavailableWindow"};const d=await i({video:!0,audio:!1});return d.getVideoTracks().length===0?(ut(d),{ok:!1,phase:"unavailable",messageKey:"computer.screen.noVideoTrack"}):{ok:!0,stream:d}}catch(d){return ea(d)}}const qe={idle:"computer.screen.idle",ended:"computer.screen.ended",unavailable:"computer.screen.unavailable"};function na(){const{capabilities:s,ready:i}=Je(),d=s.screenPreview,S=s.host.platform==="linux",[f,v]=a.useState("idle"),[k,j]=a.useState(qe.idle),[y,P]=a.useState(""),u=a.useRef(null),m=a.useRef(null),h=a.useRef(0),g=a.useCallback((R,D)=>{h.current+=1;const B=m.current;m.current=null,u.current&&(u.current.srcObject=null),ut(B),v(R),j(D)},[]);a.useEffect(()=>()=>{h.current+=1;const R=m.current;m.current=null,ut(R)},[]);const x=async()=>{if(!d.available||!window.ogb?.beginScreenPreviewIntent||!navigator.mediaDevices?.getDisplayMedia){v("unavailable"),j(qe.unavailable);return}g("requesting","computer.screen.waiting");const R=h.current,D=await ta({beginIntent:()=>window.ogb.beginScreenPreviewIntent(),getDisplayMedia:r=>navigator.mediaDevices.getDisplayMedia(r)});if(R!==h.current){D.ok&&ut(D.stream);return}if(!D.ok){v(D.phase),j(D.messageKey);return}const B=D.stream,ye=B.getVideoTracks()[0];m.current=B,P(ye.label),ye.addEventListener("ended",()=>{m.current===B&&g("ended",qe.ended)},{once:!0});const me=u.current;if(!me){g("error","computer.screen.displayFailed");return}me.srcObject=B;try{await me.play()}catch{R===h.current&&m.current===B&&g("error","computer.screen.displayFailed");return}R!==h.current||m.current!==B||(v("streaming"),j("computer.screen.active"))};if(!S)return null;const w=y||n("computer.screen.selected"),$=f==="cancelled"||f==="ended"||f==="unavailable"||f==="error";return e.jsxs("section",{className:"mt-4 rounded-xl bg-card p-4","aria-labelledby":"local-preview-title",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{id:"local-preview-title",className:"text-[15px] font-medium text-ink",children:n("computer.screen.title")}),e.jsx("div",{className:"mt-0.5 text-[12px] leading-relaxed text-ink-secondary",children:n("computer.screen.subtitle")})]}),e.jsx("span",{className:"shrink-0 rounded-full bg-raised px-2 py-1 text-[10px] font-medium text-ink-secondary",children:n("computer.screen.badge")})]}),e.jsxs("div",{className:"relative mt-3 flex aspect-[16/10] items-center justify-center overflow-hidden rounded-lg bg-panel",children:[e.jsx("video",{ref:u,autoPlay:!0,muted:!0,playsInline:!0,"aria-label":n("computer.screen.videoAria"),className:f==="streaming"?"h-full w-full object-contain":"hidden"}),f!=="streaming"&&e.jsxs("div",{className:"flex flex-col items-center gap-2 px-6 text-center text-ink-secondary",children:[f==="requesting"?e.jsx(A,{size:18,className:"animate-spin"}):e.jsx(De,{size:22}),e.jsx("span",{className:"text-[12px]","aria-live":"polite",children:i?n(d.available?k:qe.unavailable):n("computer.screen.checking")})]})]}),f==="streaming"&&e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-3 text-[11px] text-ink-secondary",children:[e.jsx("span",{className:"truncate",title:w,children:d.interaction==="portal-picker"?w:n("vm.dest.local")}),e.jsxs("span",{className:"flex items-center gap-1.5 text-success",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-success"})," ",n("computer.screen.sharing")]})]}),e.jsxs("button",{type:"button",disabled:f==="requesting"||!d.available&&f!=="streaming",onClick:f==="streaming"?()=>g("idle",qe.idle):()=>{x()},className:"mt-3 flex w-full items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:cursor-not-allowed disabled:opacity-50",children:[f==="requesting"?e.jsx(A,{size:14,className:"animate-spin"}):f==="streaming"?e.jsx(zr,{size:13}):$?e.jsx(pt,{size:14}):e.jsx(De,{size:14}),f==="requesting"?n("computer.screen.choosing"):f==="streaming"?n("computer.screen.stop"):$?n("computer.linux.tryAgain"):d.interaction==="portal-picker"?n("computer.screen.choose"):n("computer.screen.start")]})]})}const ra="https://github.com/milind-soni/OpenMausBot/blob/main/docs/linux-desktop.md#enable-local-control",sa="https://github.com/milind-soni/OpenMausBot/blob/main/docs/linux-desktop.md#omarchy-hyprland-experimental",aa="https://cua.ai/docs/cua-sdk/guides/omarchy";function oa(){const{capabilities:s}=Je(),i=s.localComputer,[d,S]=a.useState(null),[f,v]=a.useState(null);if(s.host.platform!=="linux")return null;const k=d!==null||i.status==="checking"||i.status==="starting",j=i.available,y=i.reasonCode==="linux-wayland-seat-safety-blocked",P=i.reasonCode==="linux-hyprland-plugin-required",u=i.compositor==="hyprland",m=s.host.session==="wayland",h=i.driverSource==="bundled",g=async x=>{if(window.ogb?.localControl){S(x),v(null);try{if((x==="disable"||x==="retry")&&!(await fetch("/api/local-computer/interrupt",{method:"POST"})).ok){v({key:"computer.linux.stopFailed"});return}await window.ogb.localControl[x]()}catch(w){v(w instanceof Error?w.message:String(w))}finally{S(null)}}};return e.jsxs("section",{className:"mt-4 rounded-xl bg-card p-4","aria-labelledby":"linux-local-control-title",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("div",{id:"linux-local-control-title",className:"flex items-center gap-2 text-[15px] font-medium text-ink",children:[e.jsx(Os,{size:16,className:j?"text-success":"text-ink-secondary"}),n("computer.linux.title")]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:u?n("computer.linux.metaOmarchy"):n("computer.linux.meta",{session:m?"Wayland":"Xorg"})})]}),e.jsx("span",{className:K("shrink-0 rounded-full px-2 py-1 text-[10px] font-medium",j?"bg-success/10 text-success":y?"bg-danger/10 text-danger":P||i.enabled?"bg-warning/10 text-warning":"bg-raised text-ink-secondary"),children:j?n("computer.linux.ready"):y?n("computer.linux.waylandBadge"):P?n("computer.linux.pluginBadge"):i.enabled?n("vm.state.attention"):n("vm.dest.off")})]}),y?e.jsx("div",{className:"mt-3 rounded-lg border border-danger/20 bg-danger/5 p-3",children:e.jsxs("div",{className:"flex gap-2 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-danger"}),e.jsxs("span",{children:[n("computer.linux.waylandBefore")," ",e.jsx("strong",{className:"font-medium text-ink",children:n("computer.linux.waylandXorg")})," ",n("computer.linux.waylandAfter")]})]})}):P?e.jsxs("div",{className:"mt-3 rounded-lg border border-warning/20 bg-warning/5 p-3","data-linux-hyprland-plugin-required":!0,children:[e.jsxs("div",{className:"flex gap-2 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-warning"}),e.jsx("span",{children:n("computer.linux.hyprlandPlugin")})]}),e.jsxs("button",{type:"button",onClick:()=>window.open(aa,"_blank","noopener,noreferrer"),className:"mt-2 flex items-center gap-1.5 text-[12px] font-medium text-accent hover:underline",children:[n("computer.linux.omarchyGuide")," ",e.jsx(Sn,{size:11})]})]}):i.enabled?e.jsxs("div",{className:"mt-3 rounded-lg bg-panel p-3 text-[12px] text-ink-secondary",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[j?e.jsx(Tr,{size:15,className:"mt-0.5 shrink-0 text-success"}):k?e.jsx(A,{size:15,className:"mt-0.5 shrink-0 animate-spin"}):e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-warning"}),e.jsx("span",{"aria-live":"polite",children:j?n(u?"computer.linux.hyprlandReady":"computer.linux.readyMsg"):i.message??n("computer.linux.checking")})]}),i.driverPath&&e.jsxs("div",{className:"mt-2 break-all font-mono text-[10px] text-ink-tertiary",title:i.driverPath,children:[h?n("computer.linux.bundledDriver"):i.driverPath,i.driverVersion?` · ${i.driverVersion}`:""]})]}):e.jsx("div",{className:"mt-3 rounded-lg border border-warning/20 bg-warning/5 p-3",children:e.jsxs("div",{className:"flex gap-2 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-warning"}),e.jsxs("span",{children:[n("computer.linux.enableBefore")," ",e.jsx("strong",{className:"font-medium text-ink",children:n("vm.dest.local")})," ",n("computer.linux.enableAfter"),m&&!u&&` ${n("computer.linux.waylandInput")}`]})]})}),f&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:typeof f=="string"?f:n(f.key)}),!y&&e.jsx("div",{className:"mt-3 flex gap-2",children:P?e.jsxs("button",{type:"button",disabled:k,onClick:()=>{g("enable")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d==="enable"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(pt,{size:14}),n("computer.linux.tryAgain")]}):i.enabled?e.jsxs(e.Fragment,{children:[!j&&e.jsxs("button",{type:"button",disabled:k,onClick:()=>{g("retry")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d==="retry"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(pt,{size:14}),n("computer.linux.tryAgain")]}),e.jsxs("button",{type:"button",disabled:d!==null,onClick:()=>{g("disable")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d==="disable"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(mt,{size:14}),n("computer.linux.disable")]})]}):e.jsxs("button",{type:"button",disabled:k,onClick:()=>{g("enable")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-accent py-2 text-[13px] font-medium text-white hover:opacity-90 disabled:opacity-50",children:[d==="enable"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(mt,{size:14}),n("computer.linux.enable")]})}),e.jsxs("button",{type:"button",onClick:()=>window.open(u?sa:ra,"_blank","noopener,noreferrer"),className:"mt-2 flex w-full items-center justify-center gap-1.5 rounded-lg py-1.5 text-[11px] text-ink-secondary hover:bg-raised hover:text-ink",children:[s.host.packaged?n("computer.linux.guide"):n("computer.linux.driverSetup")," ",e.jsx(Sn,{size:11})]})]})}function ia(){const{capabilities:s}=Je(),[i,d]=a.useState(!1),[S,f]=a.useState(null),v=s.localComputer;if(s.host.platform!=="win32"||v.reasonCode==="remote-server"||v.available)return null;const k=async()=>{d(!0),f(null);try{await window.ogb?.localControl?.retry()}catch(j){f(j instanceof Error?j.message:String(j))}finally{d(!1)}};return e.jsx("section",{"data-windows-local-control":v.reasonCode??"unavailable",className:"mt-4 rounded-xl border border-warning/25 bg-warning/10 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(_s,{size:16,className:"mt-0.5 shrink-0 text-warning","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[14px] font-medium text-ink",children:n("computer.windows.title")}),e.jsxs("p",{className:"mt-1 text-[13px] leading-relaxed text-ink-secondary",children:[n("computer.windows.body"),v.reasonCode==="cua-driver-blocked"&&e.jsxs(e.Fragment,{children:[" ",n("computer.windows.blocked")]})]}),v.message&&e.jsxs("details",{className:"mt-2 text-[12px] text-ink-secondary",children:[e.jsx("summary",{className:"cursor-pointer",children:n("computer.windows.detail")}),e.jsx("p",{className:"mt-1 break-words",children:v.message})]}),S&&e.jsxs("div",{role:"alert",className:"mt-2 flex gap-1.5 text-[12px] text-danger",children:[e.jsx(Ye,{size:13,className:"mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:S})]}),e.jsx("div",{className:"mt-3 flex flex-wrap gap-2",children:e.jsxs("button",{type:"button",onClick:()=>{k()},disabled:i,className:"inline-flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[i&&e.jsx(A,{size:13,className:"animate-spin","aria-hidden":"true"}),n(i?"computer.windows.starting":"computer.windows.start")]})})]})]})})}const la={computer:{Icon:De,label:"computer.tab.computer"},routines:{Icon:Tn,label:"computer.tab.routines"},android:{Icon:An,label:"computer.tab.android"},browser:{Icon:Ft,label:"computer.tab.browser",tour:"computer-browser"},data:{Icon:Dr,label:"computer.tab.data",tour:"computer-data"},files:{Icon:Ar,label:"computer.tab.files"}},Ne="outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent/60",xt=s=>`computer-panel-tabs-tab-${s}`,On=s=>`computer-panel-tabs-panel-${s}`,ca=(s,i)=>({id:xt(s),role:"tab","aria-selected":i,"aria-controls":On(s),tabIndex:i?0:-1}),Se=s=>({role:"tabpanel",id:On(s),"aria-labelledby":xt(s),tabIndex:0});function da(s){const i=s.currentTarget;Math.abs(s.deltaY)<=Math.abs(s.deltaX)||i.scrollWidth<=i.clientWidth||(i.scrollLeft+=s.deltaY)}function ua(s,i,d){if(s.ctrlKey||s.metaKey||s.altKey)return;const S=Math.max(0,i.findIndex(k=>xt(k)===s.target.id)),f=s.key==="ArrowRight"?1:s.key==="ArrowLeft"?-1:0,v=s.key==="Home"?i[0]:s.key==="End"?i[i.length-1]:f?i[(S+f+i.length)%i.length]:void 0;v&&(s.preventDefault(),d(v),document.getElementById(xt(v))?.focus())}function pa(s,i,d){const S=i.scanned&&i.devices.length===0&&i.reasonCode!=="adb-unavailable"&&i.reasonCode!=="adb-failed";a.useEffect(()=>{!S||$t(s)!=="android"||(d("computer"),dt(s,"computer"))},[s,S,d])}const Vn="omb-computer-panel-width",bt=360,ft=960,ma=400,En=40;function xa(){try{const s=Number(localStorage.getItem(Vn));if(Number.isFinite(s)&&s>=bt&&s<=ft)return s}catch{}return ma}function ba(){const[s,i]=a.useState(xa),d=a.useRef(null),S=h=>{try{localStorage.setItem(Vn,String(h))}catch{}},f=h=>{d.current={x:h.clientX,width:s},h.currentTarget.setPointerCapture(h.pointerId)},v=h=>{if(!d.current)return;const g=Math.min(ft,Math.max(bt,d.current.width+(d.current.x-h.clientX)));i(g)},k=h=>{d.current&&(d.current=null,h.currentTarget.releasePointerCapture(h.pointerId),S(s))},j=h=>{i(g=>{const x=Math.min(ft,Math.max(bt,g+h));return S(x),x})},y=a.useRef(null),[P,u]=a.useState(null);return a.useEffect(()=>{const h=y.current?.closest("aside");if(!h)return;const g=()=>u(h.offsetWidth);g();const x=new ResizeObserver(g);return x.observe(h),()=>x.disconnect()},[]),{panelWidth:s,separatorRef:y,separatorWidth:P,onSeparatorKeyDown:h=>{if(h.ctrlKey||h.metaKey||h.altKey)return;const g=h.key==="ArrowLeft"?En:h.key==="ArrowRight"?-En:null;g===null||P===null||(h.preventDefault(),j(g))},onResizeStart:f,onResizeMove:v,onResizeEnd:k}}const fa=a.lazy(()=>Pn(()=>import("./DataPanel-BgEoMjKG.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])).then(s=>({default:s.DataPanel}))),_n=()=>Pn(()=>import("./LiveDesktop-CWf3-i6p.js"),__vite__mapDeps([9,1,2,10,11,5,6,7,3,4])).then(s=>({default:s.LiveDesktop})),ha=a.lazy(_n),Rn=Ss({held:In().optional().default(!1),helpReason:Is().nullable().optional().default(null),help:Cs().optional().transform(ds),owned:In().optional()}).passthrough();function Ma({bot:s,onOpenVmWorkspace:i}){const{dragProps:d}=Dn(),{panelWidth:S,separatorRef:f,separatorWidth:v,onSeparatorKeyDown:k,onResizeStart:j,onResizeMove:y,onResizeEnd:P}=ba(),{state:u,dispatch:m,flushBotPatches:h}=Lr(),g=s.tasks?.find(t=>t.threadId===s.threadId),x=Mr(s,g),w=Or(g),$=Vr(s),R=`${s.id}:${s.threadId}:${x}:${s.cloudBackend??"box"}:${$.modelSelection.instanceId}`,[D,B]=a.useState(null),ye=D?.key===R,me=x!=="auto"||ye,r={...$,computer:x==="auto"?ye?D.surface:void 0:x},p=`${r.id}:${r.threadId}:${r.computer}:${r.cloudBackend??"box"}`,C=a.useRef(p);C.current=p;const V=a.useRef(null);a.useEffect(()=>()=>V.current?.abort(),[p]);const _=!!r.busy,L=a.useCallback(t=>`/api/bots/${s.id}/${t}?threadId=${encodeURIComponent(s.threadId)}`,[s.id,s.threadId]),X=s.computer==="cloud"&&x==="cloud",Z=s.computer==="vm"&&x==="vm",{capabilities:Y,ready:Le}=Je(),Ce=Y.localComputer.available,te=Y.host.platform==="linux",Me=_r(u.instances,r),Wt=Fr("local",u.config)&&$r({capabilities:Y,providerSupportsLocal:Me}),[Kt,gt]=a.useState(null),Ut=Br({capabilities:Y,providerSupportsLocal:Me}),Fn=Wr(u.config,Y),[c,N]=a.useState("checking"),[Oe,Ht]=a.useState(null),[xe,ne]=a.useState(null),[vt,yt]=a.useState(null),z=r.cloudBackend??"box",Ze=!!(Oe&&Oe.botId===r.id&&Oe.computer===s.computer&&Oe.cloudBackend===z&&Oe.section===(r.section?.trim()??"")),U=!!(xe&&xe.botId===r.id&&xe.threadId===r.threadId&&xe.computer===r.computer&&xe.cloudBackend===z),we=U&&x==="auto"&&z==="box"&&vt?.botId===r.id&&vt.section===(r.section?.trim()??"")?vt:null,W=U&&Kr({computer:r.computer,cloudBackend:z,phase:c,botId:r.id,resolvedBotId:xe?.botId??null,resolvedComputer:xe?.computer??null,resolvedCloudBackend:xe?.cloudBackend??null}),Ie=a.useCallback(t=>{ne(null),yt(null),N("checking"),m({type:"updateBot",botId:r.id,patch:t})},[r.id,m]);a.useEffect(()=>{let t=!0;return Ht(null),h(r.id).then(o=>{t&&(o&&!Ur({computer:s.computer,cloudBackend:z,persistedBot:o})||o&&(o.section?.trim()??"")!==(r.section?.trim()??"")||Ht({botId:r.id,computer:s.computer,cloudBackend:z,section:r.section?.trim()??""}))}),()=>{t=!1}},[r.id,s.computer,r.section,z,h]);const[Ve,ae]=a.useState(null),[wt,Qe]=a.useState(null),[$n,ce]=a.useState(null),[Bn,Ee]=a.useState(!1),[qt,Wn]=a.useState(0),[Kn,kt]=a.useState(null),[G,et]=a.useState(null),[Xt,jt]=a.useState(null),[Un,Yt]=a.useState(null),[E,oe]=a.useState(null),[ie,Re]=a.useState(!1),[tt,Gt]=a.useState(!1),[nt,I]=a.useState(null),be=Nn(nt),Q=hr(),[Hn,_e]=a.useState(()=>$t(r.id)),Fe=u.dataResultFocus?.botId===r.id?u.dataResultFocus:void 0,[qn,Xn]=a.useState(),Nt=Us(),St=Nt.devices.length>0,Jt=xs({advanced:Q,androidConnected:St}),M=ls(Hn,{advanced:Q,androidConnected:St}),Ct=Hr(s.id,M),Zt=qr(u.config),fe=yn(u.config)&&r.browser!==!1&&(Zt||u.config?.browserEngine?.installable===!0),[Qt,Pe]=a.useState(0),[Yn,Gn]=a.useState(!1);a.useEffect(()=>{if(x!=="auto"||!Ze)return;const t=new AbortController;return B(null),F(L("computer"),{signal:t.signal}).then(o=>{if(t.signal.aborted)return;const l=o.surface;B({key:R,surface:l==="cloud"||l==="vm"||l==="local"||l==="browser"||l==="off"?l:void 0})}).catch(o=>{t.signal.aborted||(I(o instanceof Error?o:String(o)),N("error"))}),()=>t.abort()},[R,x,Ze,L,Qt]);const It=c==="vm-unavailable"&&G?.resumable===!0,$e=a.useRef(0),ke=a.useRef(null);a.useEffect(()=>(ke.current?.signal.aborted&&(ke.current=null,oe(null)),()=>{ke.current?.abort()}),[r.id,r.threadId,r.computer,M]);const rt=u.instances.find(t=>t.instanceId===r.modelSelection.instanceId),Be=a.useRef(!1),st=t=>{Be.current=!0,_e(t),dt(r.id,t)},en=a.useRef(null),at=`${s.id}:${s.threadId}:${x}:${s.cloudBackend??"box"}`;a.useEffect(()=>{const t=en.current;t===at&&(Be.current||!(r.computer==="browser"&&fe))||(t!==at&&(Be.current=!1),en.current=at,_e(r.computer==="browser"&&fe?"browser":t===null?$t(r.id):"computer"))},[at,r.id,r.computer,fe]),a.useEffect(()=>{!Fe||Fe.consumed||(Be.current=!0,Xn(Fe),_e("data"),dt(r.id,"data"),m({type:"dataResultFocusConsumed",requestId:Fe.requestId}))},[r.id,m,Fe]);const he=u.signInFocus?.botId===r.id?u.signInFocus:void 0,[Jn,Zn]=a.useState(),[Qn,er]=a.useState();Xr(r.id,t=>{st("browser"),er(t)}),a.useEffect(()=>{if(!he||he.consumed)return;const t=he.place==="browser"?"browser":"computer";Be.current=!0,_e(t),dt(r.id,t),t==="browser"&&Zn({url:he.url,site:he.site,nonce:he.requestId}),m({type:"signInFocusConsumed",requestId:he.requestId})},[r.id,m,he]),a.useEffect(()=>{let t=!0;const o=window.ogb?.desktopViewer;o?.currentState&&o.currentState().then(b=>{t&&Gt(b.open&&b.contextId===r.id)}).catch(()=>{});const l=o?.onState(b=>{b.contextId===r.id&&Gt(b.open)});return()=>{t=!1,l?.()}},[r.id]),pa(r.id,Nt,_e),a.useEffect(()=>{$e.current=0},[r.id,r.computer]);const tn=!!(rt?.snapshot.state==="available"&&rt.capabilities?.computerMcp),Et=yr(wr(rt)),nn=u.routines.filter(t=>t.botId===r.id).sort((t,o)=>Number(o.enabled)-Number(t.enabled)||(t.nextRunAt??1/0)-(o.nextRunAt??1/0)),tr=!!(u.config?.box.configured&&kr(u.instances,r.modelSelection.instanceId)?.snapshot.state==="available"),We=u.routineRuns.find(t=>t.botId===r.id&&["queued","running","waiting"].includes(t.status));a.useEffect(()=>{if(M!=="computer")return;let t=!0;if(ne(null),yt(null),N("checking"),Qe(null),ce(null),kt(null),et(null),jt(null),Yt(null),I(null),!(!Ze||!me)){if(r.computer===void 0){N("auto-unavailable");return}if(r.computer==="off"){N("off");return}if(r.computer==="browser"){N("browser");return}if(r.computer==="local"){Me||I(new O("computer.err.localEngine")),N(Le&&Ce&&Me?"local":"local-unavailable"),ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z});return}if(r.computer==="vm"){if(!tn){I(new O("computer.err.vmEngine")),N("vm-unavailable");return}let o;return F(L("local-computer")).then(l=>{if(!t)return;const b=l;if(ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),et(b),b.ready)$e.current=0,N("vm");else if(b.container==="running"&&b.imageMatches&&b.managed&&b.network==="loopback"&&b.security==="hardened"&&b.persistence==="durable"&&!b.desktopReady&&$e.current<15)$e.current+=1,I(null),N("checking"),o=window.setTimeout(()=>Pe(T=>T+1),2e3);else{const T=b.mode==="per-bot"&&b.container==="missing"&&b.image&&b.create_supported;I(T||b.resumable?null:new O("computer.err.vmOpenSettings",b.problem,"computer.err.vmNotReady")),N("vm-unavailable")}}).catch(l=>{t&&(I(l.message),N("vm-unavailable"))}),()=>{t=!1,o!==void 0&&window.clearTimeout(o)}}if(r.computer==="cloud"&&!Et){N("error");return}if(!(r.computer!=="cloud"&&!Le))return z==="vps"?(F(L("computer")).then(o=>{if(!t)return;const l=o;if(jt(l),ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),!l.configured){I(new O("computer.err.vpsAlias")),N("vps-unconfigured");return}if(l.ready){ae(l.container??null),N("ready");return}if(l.managed&&l.container!=="missing"&&!l.imageMatches){I(l.problem),N("vps-incompatible");return}if(X)return N("starting"),F(`/api/bots/${r.id}/computer/provision`,{method:"POST"}).then(b=>{t&&(ae(b.container??null),b.ready?(ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N("ready")):(I(b.problem??new O("computer.err.vpsNotReady")),N("error")))});ae(l.container??null),I(r.autoStartVps?new O("computer.err.vpsAuto",l.problem,"computer.err.vpsNoContainer"):new O("computer.err.vpsManual",l.problem,"computer.err.vpsNoContainer")),N(l.container==="stopped"?"vps-stopped":"vps-unconfigured")}).catch(o=>{t&&(I(o.message),N("error"))}),()=>{t=!1}):(F(L("computer")).then(o=>{if(!t)return;const l=Yr({computer:x==="cloud"?"cloud":void 0,configured:!!o.configured,boatState:typeof o.box?.state=="string"?o.box.state:null,canUseCloud:Et,autoLocal:!1,teamComputer:typeof o.teamComputer?.id=="string"&&typeof o.teamComputer?.name=="string",busy:s.busy});if(ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),!o.configured&&r.computer==="cloud"&&!o.teamComputer){N("unconfigured");return}if(l==="team-boat"){yt({id:o.teamComputer.id,name:o.teamComputer.name,botId:r.id,section:r.section?.trim()??""}),ae(typeof o.box?.state=="string"?o.box.state:o.configured?"missing":"unavailable"),I(typeof o.problem=="string"?o.problem:null),N("team-boat");return}if(l==="attach-ready-boat"||r.computer==="cloud"&&l==="show-ready-boat"){ae(typeof o.box?.state=="string"?o.box.state:null),N("ready");return}ae(typeof o.box?.state=="string"?o.box.state:null),N(l)}).catch(o=>{t&&(I(o.message),N("error"))}),()=>{t=!1})}},[r.id,r.threadId,r.computer,r.section,r.autoStartVps,r.vpsAlias,z,Qt,Le,Wt,te,Me,rt?.driverKind,tn,Et,u.config?.vps?.sshAlias,M,Ze,me,X,x,L]),a.useEffect(()=>{if(c!=="busy-boat")return;let t=!0;const o=()=>{if(!s.busy&&x==="cloud"){Pe(b=>b+1);return}F(L("computer"),{background:!0}).then(b=>{if(!t)return;const T=typeof b.box?.state=="string"?b.box.state:null;ae(T),cs(T)&&N("ready")}).catch(()=>{})},l=window.setInterval(o,5e3);return()=>{t=!1,window.clearInterval(l)}},[c,L,s.busy,x]);const H=u.computerControl[r.id]??{held:!1,helpReason:null},ot=a.useCallback(async(t,o)=>{const l=Rn.parse(await F(`/api/bots/${r.id}/computer/control`,{method:"POST",body:JSON.stringify({action:t,...o?{controlLeaseId:o}:{}})}));return m({type:"computerControl",botId:r.id,held:l.held===!0,helpReason:l.helpReason,help:l.help}),l},[r.id,m]),ee=U?c==="vm"&&G?.viewer_url&&G.target_key?Sr({key:G.target_key}):W&&z==="vps"?`vps/${r.id}`:null:null,le=Js({botId:r.id,session:`${p}:${M}`,held:H.held,request:ot,viewerClose:ee?.startsWith("vps/")?L("computer/viewer-close"):null}),pe=le.here&&!!ee;a.useEffect(()=>{ee&&_n()},[ee]);const ze=Bt(),Te=a.useRef(0),Rt=a.useRef(r.busy);a.useEffect(()=>{Rt.current=r.busy},[r.busy]),a.useEffect(()=>{if(Te.current=0,!!W)return Gr({screens:!0,onFrame:t=>{t.kind!=="screen"||t.botId!==r.id||t.threadId!==r.threadId||(Te.current=Date.now(),Qe({png:t.png,mime:t.mime??"image/png"}),ce(null),Ee(!1))}})},[W,r.id,r.threadId]),a.useEffect(()=>{if(M!=="computer"||!W||tt||pe||!ze||E||ie)return;let t=!1,o=-1/0,l=null,b=null;const T=new AbortController;ce(null),Ee(!0);const se=async()=>{if(t||T.signal.aborted||Date.now()-o<(l??(Rt.current?4e3:3e4))||Rt.current&&Date.now()-Te.current<1e4)return;t=!0,l=null;const q=Date.now();try{const{png:J,format:Ae}=await F(L("computer/screenshot"),{method:"POST",signal:AbortSignal.any([T.signal,AbortSignal.timeout(9e4)])});if(!T.signal.aborted&&Te.current<=q){if(typeof J!="string"||!J.trim())throw new O("computer.err.emptyFrame");Qe({png:J,mime:Ae==="jpeg"?"image/jpeg":"image/png"}),ce(null),Ee(!1),b=null}}catch(J){if(!T.signal.aborted&&Te.current<=q)if(J instanceof us&&jr(J)){l=1e3,b??=Date.now();const Ae=Date.now()-b>=1e4;ce(Ae?J:null),Ee(!Ae)}else b=null,Ee(!1),ce(J instanceof Error&&J.name==="TimeoutError"?new O("computer.err.frameTimeout"):J instanceof Error?J:new O("computer.err.screenUnavailable"))}finally{t=!1,o=Date.now()}};se();const ue=setInterval(se,1e3);return()=>{T.abort(),clearInterval(ue)}},[M,W,L,z,tt,pe,ze,E,ie,qt]),a.useEffect(()=>{if(M!=="computer"||c!=="vm"||!U||tt||pe||!ze)return;const t=new AbortController;let o=!1,l=-1/0,b=null,T=!0;const se=async()=>{if(!(o||t.signal.aborted)&&!(Date.now()-l<(b??(r.busy?3e3:3e4)))){o=!0,b=null;try{const{image:q}=await F(L("local-computer/screenshot"),{method:"POST",signal:t.signal});!t.signal.aborted&&typeof q=="string"&&(kt(q),ce(null))}catch(q){t.signal.aborted||(b=5e3,T?I(q instanceof Error?q.message:String(q)):ce(q instanceof Error?q:new O("computer.err.screenUnavailable")))}finally{o=!1,T=!1,l=Date.now()}}};se();const ue=window.setInterval(()=>{se()},r.busy?3e3:3e4);return()=>{t.abort(),window.clearInterval(ue)}},[M,c,U,L,tt,pe,ze,r.busy,I,ce,kt]);const[rn,Pt]=a.useState(0);a.useEffect(()=>{if(M!=="computer"||c!=="local"||!U||!window.ogb||te||!ze)return;let t=!0;Pt(0);const o=async()=>{try{const b=await window.ogb.screenFrame();t&&b?Yt(b):t&&Pt(T=>T+1)}catch{t&&Pt(b=>b+1)}};o();const l=setInterval(o,r.busy?3e3:3e4);return()=>{t=!1,clearInterval(l)}},[M,c,U,te,ze,r.busy,r.id,r.threadId]);const ge=U?c==="vm"?Kn:c==="local"&&!te?Un:W||r.computer==="cloud"&&c==="starting"?wt&&`data:${wt.mime};base64,${wt.png}`:null:null,nr=!!(ge&&(ee||W)),de=H.help??null,rr=de?u.bots.find(t=>t.id===de.botId)?.name??r.name:r.name;a.useEffect(()=>{let t=!0;return F(`/api/bots/${r.id}/computer/control`).then(o=>{if(!t)return;const l=Rn.parse(o);m({type:"computerControl",botId:r.id,held:l.held===!0,helpReason:l.helpReason,help:l.help})}).catch(()=>{}),()=>{t=!1}},[r.id]);const sn=a.useCallback(async()=>!0,[]),an=a.useCallback(async t=>Jr({action:t,syncNativeBrowser:M!=="browser",requestControl:ot,setNativeBrowserControl:sn}),[M,ot,sn]),sr=a.useCallback(async t=>{Re(!0),I(null);try{return await an(t),!0}catch(o){return I(o instanceof Error?o.message:String(o)),!1}finally{Re(!1)}},[an]),it=!!(de&&de.place!=="browser"&&de.place!=="local"&&(W||c==="vm"||we)),on=t=>de&&e.jsx(fs,{help:de,askerName:rr,takeControl:t&&{onClick:t,disabled:ie||E==="join",pending:E==="join"},onError:I}),ar=async()=>{const t=new AbortController;V.current=t;const o=()=>!t.signal.aborted&&C.current===p;oe("join"),Re(!0),I(null);try{await Gs({botId:r.id,title:n("computer.viewerTitle",{name:r.name}),held:H.held,request:ot,join:l=>F(L("computer/join"),{method:"POST",signal:AbortSignal.any([t.signal,l])}),current:o})}catch(l){o()&&I(l instanceof Error?l:String(l))}finally{V.current===t&&(V.current=null,oe(null),Re(!1))}},zt=E==="join"||c==="vm"&&!ee,ve=async(t=!1)=>{if(!ee)return W?ar():void 0;if(le.here)return le.setExpanded(t||le.expanded);Re(!0),I(null);try{await le.take(t)}catch(o){I(o instanceof Error?o:String(o))}finally{Re(!1)}},ln=async()=>{I(null),window.ogb?.desktopViewer?.close(r.id),await le.handBack().catch(t=>I(t instanceof Error?t:String(t)))},Tt=t=>{oe(t),I(null),F(`/api/bots/${r.id}/computer/${t}`,{method:"POST"}).then(o=>{t==="provision"&&(ae(o.container??null),o.ready?(r.computer==="cloud"&&ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N("ready")):(I(o.problem??new O("computer.err.vpsNotReady")),N("error"))),t==="sleep"&&(ne(null),ae(z==="vps"?"stopped":"archived"),N(z==="vps"?"vps-stopped":X?"cloud-asleep":"show-sleeping-boat"))}).catch(o=>{I(o.message)}).finally(()=>oe(null))},or=()=>{oe("provision"),I(null),N("starting"),F(`/api/bots/${r.id}/computer/provision`,{method:"POST"}).then(t=>{ae(t.state??null),ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N("ready")}).catch(t=>{if(Nr(t)){N("busy-boat");return}I(t.message),N("error")}).finally(()=>oe(null))},At=async t=>{if((t==="vm-recreate"||t==="vm-delete")&&!window.confirm(t==="vm-delete"?n("computer.confirm.deleteVm",{name:r.name}):n("computer.confirm.replaceVm",{name:r.name}))||ke.current)return;const o=new AbortController;ke.current=o,oe(t),I(null),$e.current=0;try{if((t==="vm-recreate"||t==="vm-delete")&&await F(`/api/bots/${r.id}/local-computer/remove`,{method:"POST",body:"{}",signal:o.signal}),t!=="vm-delete"){const l=t==="vm-start"&&G?.mode!=="per-bot"?"/api/local-computer/start":`/api/bots/${r.id}/local-computer/${t==="vm-start"?"start":"run"}`,b=await F(l,{method:"POST",body:"{}",signal:o.signal}),T=await ws(b,()=>F(L("local-computer"),{signal:o.signal}),o.signal);if(!T.ready)throw new Error(T.problem??n("computer.err.vmNotReady"));et(T),N("vm")}else et(l=>l&&{...l,container:"missing",ready:!1}),N("vm-unavailable")}catch(l){if(o.signal.aborted)return;I(l instanceof Error?l.message:String(l)),N("vm-unavailable")}finally{ke.current===o&&!o.signal.aborted&&(ke.current=null,oe(null),Pe(l=>l+1))}},ir=async()=>{if(window.confirm(n("computer.confirm.replaceVps",{name:r.name}))){oe("vps-replace"),I(null);try{await F(`/api/bots/${r.id}/computer/remove`,{method:"POST",body:"{}"});const t=await F(`/api/bots/${r.id}/computer/provision`,{method:"POST",body:"{}"});jt(t),ae(t.container??null),t.ready&&r.computer==="cloud"&&ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N(t.ready?"ready":"error"),t.ready||I(t.problem??new O("computer.err.vpsReplaceNotReady"))}catch(t){I(t instanceof Error?t.message:String(t)),N("error")}finally{oe(null),Pe(t=>t+1)}}},cn=()=>{window.sessionStorage.setItem("openmausbot.settings.section","computer"),m({type:"toggleAppSettings",open:!0})},dn=()=>m(hs("vps")),un=U&&(c==="vps-unconfigured"||c==="vps-stopped"||c==="vps-incompatible"),pn=U&&X&&(c==="vps-stopped"||c==="vps-unconfigured"&&!!Xt?.configured),mn=U&&X&&c==="vps-incompatible"&&!!Xt?.managed,Dt=Zt||u.config?.browserEngine?.installable===!0,[xn,bn]=a.useState(!1),fn=async()=>{if(!xn){bn(!0),I(null);try{if(!yn(u.config)){const t=await F("/api/config",{method:"PATCH",body:JSON.stringify({features:{browser:!0}})});m({type:"configStatus",config:t})}s.browser===!1&&m({type:"updateBot",botId:s.id,patch:{browser:!0}})}catch(t){I(t instanceof Error?t.message:n("settings.experimental.error"))}finally{bn(!1)}}},lr=()=>{I(null),m({type:"updateBot",botId:s.id,patch:{browser:!1}})},hn=e.jsxs("div",{"data-testid":"browser-switch-row",className:"mb-3 flex items-center gap-3 rounded-xl bg-card px-3 py-2.5",children:[e.jsx(Ft,{size:15,className:"shrink-0 text-ink-secondary","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[13px] font-medium text-ink",children:n("computer.browserSwitch.title",{name:r.name})}),!Dt&&e.jsx("div",{className:"text-[12px] text-ink-secondary",children:wn(u.config)})]}),e.jsx(zn,{checked:fe,disabled:xn||!fe&&!Dt,"aria-label":n("computer.browserSwitch.title",{name:r.name}),onClick:()=>fe?lr():void fn()})]}),cr=u.config?.managedPolicy,Lt=Zr(Ve,s.busy===!0),dr=!U||x!=="cloud"||z!=="box"?void 0:c==="starting"?"starting":c==="busy-boat"?Lt.spinner?"starting":Lt.line==="computer.cloud.asleep"?"asleep":"none":c==="ready"?"on":Ve==="archived"||Ve==="stopped"?"asleep":void 0,Ke=(t,o)=>ps({...ms({bot:r,place:t,seat:Fn,config:u.config,instances:u.instances,local:{ready:Wt,reason:Ut??n("computer.unavailableLocal")},...t==="cloud"?{computer:dr}:{},...t==="auto"&&we?{teamComputer:we.name}:{}}),...o?{refusal:o}:{}}),Mt=r.computer==="cloud"&&z==="box"&&c==="error"&&nt&&!(nt instanceof O)?Qr({message:be??"",status:Number(nt.status??0)||void 0},u.config?.box?.included===!0):void 0,re=Ke("cloud",Mt),je=Ke("auto"),ur=es(Y),Ue=Rs(u.config,Y).map(([t,o,l,b])=>{const T=Ps(t,s.computer,Y),se=zs(t,s.cloudBackend,cr),ue=t===null?je:t==="cloud"?re:Ke(t),q=!!se||kn(ue),J=!se&&ts(ue),Ae=se??(J?ue.line:t==="browser"?n("computer.browserOnlyTitle"):void 0);return{mode:t,labelKey:o,descriptionKey:l,Icon:b,simpleLabel:ns(t??void 0,Y.host.platform),selected:T,managedBy:se,disabled:q,unavailableTitle:Ae,view:ue,issue:J}}),lt=Ue.find(({selected:t})=>t)?.view??je,pr=t=>{if(t==="start"||t==="wake")return or();if(t==="try-again")return Pe(o=>o+1);if(t==="turn-on-browser")return void fn();if(t==="open-vm-settings")return cn();vs(t,{botId:s.id,threadId:s.threadId},m)},mr=t=>!!t&&t!=="watch"&&t!=="open-computer-panel"&&(t!=="start"&&t!=="wake"||X&&!s.busy),He=(t,o="mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover")=>t.action&&mr(t.action.id)?e.jsx("button",{type:"button","data-testid":"place-action",onClick:()=>pr(t.action.id),className:o,children:t.action.label}):null,gn=t=>{t===null&&s.computer===void 0||t===s.computer||(t==="local"&&gs(s)==="auto"?gt(r.id):Ie(t==="browser"?{computer:t,browser:!0}:{computer:t}))},xr=()=>{s.computer==="local"&&ur&&Ie({computer:null}),m({type:"updateTask",botId:s.id,threadId:s.threadId,patch:{surface:null}})},Ot=w&&s.computer!=="off"&&w!==s.computer?w:void 0,br=t=>K("flex shrink-0 items-center gap-1.5 rounded-full px-3 py-1 text-[13px] transition-colors @max-[28rem]/paneltabs:[&>svg]:hidden @max-[22rem]/paneltabs:px-2",t?"bg-raised text-ink shadow-sm":"text-ink-secondary hover:text-ink"),vn=t=>{t==="browser"&&I(null),st(t)},fr={checking:n("computer.phase.checking"),starting:z==="vps"?n("computer.phase.starting"):re.line,"busy-boat":re.line,unconfigured:re.line,"auto-unavailable":je.line,"team-boat":je.line,"show-ready-boat":n("computer.phase.showReadyBoat"),"show-sleeping-boat":n("computer.phase.showSleepingBoat"),"show-pending-boat":n("computer.phase.showPendingBoat"),"cloud-new":re.line,"cloud-asleep":re.line,"vps-unconfigured":n("computer.phase.vpsUnconfigured"),"vps-incompatible":n("computer.phase.vpsIncompatible"),"vps-stopped":n("computer.phase.vpsStopped"),"local-unavailable":Ut??n("computer.phase.localUnavailable"),"vm-unavailable":n("computer.phase.vmUnavailable"),browser:Ke("browser").line,off:Ke("off").line,error:r.computer==="cloud"&&(Mt||kn(re))?re.line:n("computer.phase.error")};return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:K("animate-panel-in relative flex h-full shrink-0 flex-col border-l border-hairline/40 bg-panel","max-md:absolute max-md:inset-0 max-md:z-40 max-md:w-full!"),ref:Ct,"data-computer-panel":!0,style:{width:S},children:[e.jsx("div",{ref:f,role:"separator","aria-orientation":"vertical","aria-label":n("computer.resizeAria"),"aria-valuemin":bt,"aria-valuemax":ft,"aria-valuenow":v??void 0,tabIndex:0,onKeyDown:k,onPointerDown:j,onPointerMove:y,onPointerUp:P,onPointerCancel:P,className:"absolute inset-y-0 left-0 z-10 w-1.5 cursor-col-resize hover:bg-accent/40 focus-visible:bg-accent/60 max-md:hidden"}),e.jsx("div",{...d,className:"@container/paneltabs ml-1.5 py-3 pl-2.5 pr-4",children:e.jsxs("div",{className:"relative flex min-h-7 items-center justify-center",children:[Q&&e.jsx("button",{onClick:()=>{jn(Ct.current,r.id),m({type:"toggleComputer",open:!1}),m({type:"toggleSettings",open:!0,section:"access"})},className:"absolute left-0 top-1/2 -translate-y-1/2 rounded-md p-1 text-ink-secondary hover:bg-control hover:text-ink",title:n("computer.botSettings"),children:e.jsx(rs,{size:18})}),e.jsx("div",{className:"mx-9 flex min-w-0 touch-pan-x gap-0.5 overflow-x-auto whitespace-nowrap rounded-full bg-inset p-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden","data-tour":"computer-tabs","data-testid":"computer-tabs",role:"tablist","aria-label":n("computer.tabsAria"),onWheel:da,onKeyDown:t=>ua(t,Jt,vn),children:Jt.map(t=>{const{Icon:o,label:l,tour:b}=la[t],T=_?t==="computer"&&bs(x)?"computer-tab-live":t==="browser"&&x==="browser"?"browser-tab-live":void 0:void 0;return e.jsxs("button",{type:"button","data-tour":b,...ca(t,t===M),title:n(l),onClick:()=>vn(t),className:br(t===M),children:[e.jsx(o,{size:13})," ",n(l),T&&e.jsx("span",{className:"size-1.5 animate-pulse rounded-full bg-success",role:"img","aria-label":n("place.live"),"data-testid":T})]},t)})}),e.jsx("button",{"data-computer-panel-close":!0,onClick:()=>{jn(Ct.current,r.id),m({type:"toggleComputer",open:!1})},className:"absolute right-0 top-1/2 -translate-y-1/2 rounded-md p-1 text-ink-secondary hover:bg-control hover:text-ink","aria-label":n("computer.close"),title:n("computer.close"),children:e.jsx(gr,{size:18})})]})}),M==="routines"?e.jsx("div",{...Se("routines"),className:K("min-h-0 flex-1 overflow-y-auto px-4 pb-4",Ne),children:e.jsx(ks,{bot:r,routines:nn,runs:u.routineRuns,defaultRunOn:tr?"cloud":"maus"},r.id)}):M==="browser"&&fe?e.jsxs("div",{...Se("browser"),className:K("flex min-h-0 flex-1 flex-col px-4 pb-4",Ne),children:[hn,de?.place==="browser"&&e.jsx("div",{className:"-mt-1 mb-3",children:on()}),e.jsx(Es,{bot:r,signIn:Jn,page:Qn}),be&&e.jsx("div",{role:"alert",className:"mt-2 rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:be})]}):M==="browser"?e.jsxs("div",{...Se("browser"),className:K("flex-1 overflow-y-auto px-5 pb-5",Ne),"data-testid":"browser-off",children:[hn,e.jsxs("div",{className:"mt-2 flex flex-col items-center gap-3 rounded-xl bg-card px-6 py-8 text-center",children:[e.jsx(Ft,{size:22,className:"text-ink-secondary","aria-hidden":"true"}),e.jsx("div",{className:"text-[14px] font-medium text-ink",children:n("computer.browserOff.title")}),e.jsx("p",{className:"text-[12px] leading-5 text-ink-secondary",children:Dt?n("computer.browserOff.body",{name:r.name}):wn(u.config)}),be&&e.jsx("div",{role:"alert",className:"w-full rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:be})]})]}):M==="data"?e.jsx("div",{...Se("data"),className:K("flex min-h-0 flex-1 flex-col overflow-hidden",Ne),children:e.jsx(a.Suspense,{fallback:e.jsx("div",{className:"flex flex-1 items-center justify-center text-[13px] text-ink-secondary",role:"status",children:n("data.loading")}),children:e.jsx(fa,{bot:r,requestedCard:qn},r.id)})}):M==="files"?e.jsx("div",{...Se("files"),className:K("flex min-h-0 flex-1 flex-col",Ne),children:e.jsx(js,{bot:r})}):M==="android"&&St?e.jsx("div",{...Se("android"),className:K("flex-1 overflow-y-auto px-4 pt-2",Ne),children:e.jsx(Hs,{status:Nt})}):e.jsxs("div",{...Se("computer"),className:K("flex-1 overflow-y-auto px-5 pb-5",Ne),children:[e.jsxs("div",{className:"mb-1.5 mt-2 flex items-center justify-between text-[13px] text-ink-secondary",children:[e.jsx("span",{children:n("computer.screenOf",{name:r.name})}),we&&e.jsx("span",{className:"text-[11px]",children:je.short}),c==="local"&&e.jsx("span",{className:"text-[11px]",children:n("computer.badge.local")}),pe&&e.jsxs("span",{className:"flex items-center gap-1.5 text-[11px] font-medium text-ink",children:[e.jsx("span",{className:"size-1.5 rounded-full bg-success"}),n("computer.inControl")]}),c==="vm"&&!pe&&e.jsx("span",{className:"text-[11px]",children:n("vm.dest.vm")}),(c==="show-ready-boat"||c==="show-sleeping-boat"||c==="show-pending-boat")&&e.jsx("span",{className:"text-[11px]",children:n("computer.badge.autoBoat")}),U&&r.computer==="cloud"&&z==="vps"&&(c==="ready"||c==="starting")&&!pe&&e.jsx("span",{className:"text-[11px]",children:n("computer.badge.vps")})]}),e.jsx("div",{className:K("relative flex aspect-[16/10] w-full items-center justify-center overflow-hidden rounded-xl bg-card",pe&&"ring-2 ring-accent"),children:pe&&ee?e.jsx(a.Suspense,{fallback:e.jsx(A,{size:18,className:"animate-spin text-ink-secondary"}),children:e.jsx(ha,{target:ee,threadId:r.threadId,name:r.name,poster:ge,expanded:le.expanded,onExpandedChange:le.setExpanded,onHandBack:()=>{ln()},handingBack:le.handingBack,onUnreachable:()=>{le.leave(),I(new O("computer.err.openDesktop"))}})}):W||r.computer==="cloud"&&c==="starting"?e.jsx(Bs,{src:ge,name:r.name,error:Nn($n),refreshing:Bn,retry:qt,starting:c==="starting",opening:E==="join",disabled:ie,onOpen:()=>{ve()},onRetry:t=>{Te.current=0,t&&Qe(null),ce(null),Ee(!0),Wn(o=>o+1)}},`${r.id}:${r.threadId}:${r.computer}:${z}`):ge&&nr?e.jsxs("button",{type:"button",onClick:()=>{ve()},disabled:ie||E==="join",className:"group relative flex h-full w-full cursor-pointer items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-wait","aria-label":n("computer.openLiveDesktopAria",{name:r.name}),title:n("computer.openLiveDesktop"),children:[e.jsx("img",{src:ge,alt:n("computer.screenOf",{name:r.name}),className:"h-full w-full object-contain transition group-hover:brightness-75 group-focus-visible:brightness-75"}),e.jsxs("span",{className:"pointer-events-none absolute right-2 top-2 flex items-center gap-1 rounded-md bg-black/70 px-2 py-1 text-[11px] font-medium text-white opacity-80 shadow-sm transition group-hover:opacity-100 group-focus-visible:opacity-100",children:[E==="join"?e.jsx(A,{size:12,className:"animate-spin"}):e.jsx(Ge,{size:12}),n("computer.open")]})]}):ge?e.jsx("img",{src:ge,alt:n("computer.screenOf",{name:r.name}),className:"h-full w-full object-contain",title:c==="vm"?n("computer.watchOnly"):void 0}):e.jsxs("div",{className:"flex flex-col items-center gap-2 px-6 text-center text-ink-secondary",children:[c==="checking"||c==="starting"||c==="busy-boat"&&Lt.spinner||c==="vm"||c==="local"&&!te?e.jsx(A,{size:18,className:"animate-spin"}):c==="off"?e.jsx(mt,{size:22}):e.jsx(De,{size:22}),e.jsx("span",{className:"text-[12px]",children:we?je.line:W?n("computer.waitingFrame"):c==="ready"?n("computer.autoChooseCloudOpen"):c==="vm"?n("computer.capturingVm"):c==="local"?te?n("computer.linuxReady"):rn>=3?n("computer.needsScreenPerm"):n("computer.capturingLocal"):It?n(E==="vm-start"?"vm.setup.starting":"computer.phase.vmStopped"):fr[c]}),we&&He(je),r.computer==="cloud"&&(c==="unconfigured"||c==="error")&&re.action?.id!=="add-boat-key"&&He(re),c==="local"&&!te&&rn>=3&&e.jsx("button",{onClick:()=>window.ogb?.permOpenSettings?.("screen"),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openSettings")}),c==="browser"&&fe&&e.jsx("button",{onClick:()=>st("browser"),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openBrowserTab")}),(c==="show-ready-boat"||c==="show-sleeping-boat"||c==="show-pending-boat")&&e.jsx("button",{type:"button",onClick:()=>Ie({computer:"cloud"}),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:c==="show-sleeping-boat"?n("computer.chooseCloudWake"):c==="show-ready-boat"?n("computer.chooseCloudOpen"):n("computer.chooseCloudManage")}),E===null&&(c==="cloud-new"||c==="cloud-asleep")&&He(re),It&&E!=="vm-start"&&e.jsx("p",{className:"text-[12px]",children:n(G?.stop_reason==="idle"?"vm.stopped.idle":"vm.stopped.detail")}),c==="vm-unavailable"&&(Z&&It&&G.mode!=="pool"?e.jsxs("button",{onClick:()=>{At("vm-start")},disabled:E!==null,"aria-busy":E==="vm-start",className:"mt-1 flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[E==="vm-start"&&e.jsx(A,{size:13,className:"animate-spin"}),n(E==="vm-start"?"vm.setup.starting":"vm.setup.start")]}):Z&&G?.mode==="per-bot"&&G.image&&G.create_supported?e.jsxs("button",{onClick:()=>{At(G.container==="missing"?"vm-create":"vm-recreate")},disabled:E!==null,className:"mt-1 rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[(E==="vm-create"||E==="vm-recreate")&&e.jsx(A,{size:13,className:"mr-1.5 inline animate-spin"}),G.container==="missing"?n("computer.createVm",{name:r.name}):n("computer.replaceVm",{name:r.name})]}):e.jsx("button",{onClick:cn,className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openVmSetup")})),!Q&&un&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-[12px]",children:n("computer.simple.needsSetup",{name:r.name})}),!pn&&!mn&&e.jsx("button",{type:"button",onClick:()=>vr(!0),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.simple.showAdvanced")})]}),Q&&U&&(c==="vps-unconfigured"||c==="vps-stopped")&&e.jsx("button",{onClick:dn,className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openVpsSettings")}),pn&&e.jsxs("button",{onClick:()=>Tt("provision"),disabled:E==="provision",className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[E==="provision"&&e.jsx(A,{size:13,className:"mr-1.5 inline animate-spin"}),c==="vps-stopped"?n("computer.startVps"):n("computer.prepareVps")]}),mn&&e.jsxs("button",{onClick:()=>{ir()},disabled:E==="vps-replace",className:"mt-1 rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[E==="vps-replace"&&e.jsx(A,{size:13,className:"mr-1.5 inline animate-spin"}),n("computer.replaceVps")]})]})}),be&&!Mt&&e.jsx("div",{className:"mt-2 rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:be}),(Yn||c==="unconfigured"&&re.action?.id==="add-boat-key")&&e.jsx("div",{"data-boat-key":!0,className:"mt-3 rounded-xl bg-card py-1.5",children:e.jsx(ss,{id:"box",via:"computer_panel",onSaved:t=>{Gn(!0),t&&Pe(o=>o+1)}})}),Q&&c==="vps-unconfigured"&&e.jsxs("div",{className:"mt-3 rounded-xl bg-card p-4",children:[e.jsx("div",{className:"mb-3 text-[13px] text-ink-secondary",children:n("computer.vpsAliasHint")}),e.jsx("button",{onClick:dn,className:"rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover",children:n("computer.openVpsSettings")})]}),Q&&c==="vm"&&G?.mode==="per-bot"&&window.ogb?.desktopWorkspace&&i&&e.jsxs("button",{type:"button",onClick:()=>i(r.id),disabled:E!==null,className:"mt-3 flex w-full items-center justify-center gap-2 rounded-lg border border-accent/30 bg-accent/10 py-2 text-[13px] font-medium text-ink hover:bg-accent/15 disabled:opacity-50",title:n("computer.twoDesktopsTitle"),children:[e.jsx(Ls,{size:14}),n("computer.twoDesktops")]}),de&&de.place!=="browser"&&on(it&&!H.held?()=>c==="vm"||W?void ve():void sr("take"):void 0),(W||c==="vm"||we)&&H.held&&e.jsxs("div",{className:"mt-3 rounded-xl border border-accent/25 bg-accent/10 p-4",children:[e.jsxs("div",{className:"text-[13px] leading-relaxed text-ink",children:[n("computer.youHaveWheel"),W&&!ee&&` ${n(Q?"computer.useOpenDesktop":"computer.simple.useFullScreen")}`]}),e.jsxs("button",{onClick:()=>{ln()},disabled:ie||le.handingBack,className:"mt-2 flex w-full items-center justify-center gap-2 rounded-lg bg-accent py-2 text-[13px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[e.jsx(Xe,{size:14}),n("computer.handBack")]})]}),Q&&c==="vm"&&(H.held||!it)&&e.jsxs("button",{onClick:()=>{ve(H.held)},disabled:ie||!ee,className:"mt-3 flex w-full items-center justify-center gap-2 rounded-lg bg-control py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:H.held?n("computer.openLiveDesktop"):n("computer.takeControlTitle"),children:[ie?e.jsx(A,{size:14,className:"animate-spin"}):H.held?e.jsx(Ge,{size:14}):e.jsx(Xe,{size:14}),n(H.held?"computer.fullScreen":"computer.takeControl")]}),Q&&Z&&c==="vm"&&G?.mode==="per-bot"&&e.jsxs("button",{onClick:()=>{At("vm-delete")},disabled:E!==null||s.busy,className:"mt-2 flex w-full items-center justify-center gap-2 rounded-lg border border-danger/30 py-2 text-[13px] text-danger hover:bg-danger/10 disabled:opacity-50",title:s.busy?n("computer.deleteVmBlocked"):n("computer.deleteVmTitle",{name:r.name}),children:[E==="vm-delete"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(mt,{size:14}),n("computer.deleteVm")]}),!Q&&(W||c==="vm")&&e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2","data-testid":"computer-actions",children:[!H.held&&!it&&e.jsxs("button",{type:"button",onClick:()=>{ve()},disabled:ie||zt,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-accent px-3 py-2 text-[13px] font-medium text-accent-ink hover:brightness-110 disabled:opacity-50",title:n("computer.takeControlTitle"),children:[E==="join"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Xe,{size:14}),n("computer.takeControl")]}),e.jsx(Zs,{held:H.held,frame:ge,name:r.name,onTakeControl:t=>{ve(t)},disabled:H.held&&zt,takeDisabled:ie||zt,error:be}),W&&X&&(z==="vps"||Ve!=="archived")&&e.jsxs("button",{type:"button",onClick:()=>Tt("sleep"),disabled:E==="sleep"||s.busy,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n("computer.sleepTitle"),children:[E==="sleep"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Cn,{size:14}),n("vm.cloud.sleep")]})]}),Q&&W&&e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[!H.held&&!it&&e.jsxs("button",{onClick:()=>{ve()},disabled:ie||E==="join",className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n("computer.takeControlTitle"),children:[E==="join"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Xe,{size:14}),n("computer.takeControl")]}),H.held&&e.jsxs("button",{onClick:()=>{ve(!0)},disabled:E==="join",className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[E==="join"?e.jsx(A,{size:14,className:"animate-spin"}):ee?e.jsx(Ge,{size:14}):e.jsx(De,{size:14}),n(ee?"computer.fullScreen":"computer.openLiveDesktop")]}),X&&(z==="vps"||Ve!=="archived")&&e.jsxs("button",{onClick:()=>Tt("sleep"),disabled:E==="sleep"||s.busy,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n("computer.sleepTitle"),children:[E==="sleep"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Cn,{size:14}),n("vm.cloud.sleep")]})]}),c!=="team-boat"&&(r.computer!==void 0||U)&&e.jsxs(e.Fragment,{children:[e.jsx(na,{}),e.jsx(oa,{}),e.jsx(ys,{}),e.jsx(ia,{})]}),Q?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mt-4 rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("computer.worksOn")}),e.jsx("p",{className:"mt-1 text-[12px] leading-5 text-ink-secondary",children:n(u.config?.cloudHome?"computer.worksOnHintCloudHome":"computer.worksOnHint")}),e.jsx(Ts,{options:Ue,onSelect:gn}),w&&e.jsx("p",{className:"mt-2 text-[12px] leading-5 text-ink-secondary","data-testid":"place-pinned-note",children:n("place.pinnedNote",{place:n(Vt(w))})}),e.jsxs("div",{className:"mt-3 border-t border-hairline/40 pt-3 text-[12px] leading-5 text-ink-secondary","aria-live":"polite","data-testid":"place-line",children:[lt.line,He(lt,"mt-1 block font-medium text-accent hover:underline")]}),s.computer==="cloud"&&e.jsx(Ln,{compact:!0,value:z,onChange:t=>Ie({cloudBackend:t})})]}),e.jsxs("button",{type:"button",onClick:()=>st("routines"),className:"mt-4 flex w-full items-start gap-3 rounded-xl bg-card p-4 text-left hover:bg-raised",children:[e.jsx(Tn,{size:17,className:"mt-0.5 shrink-0 text-accent"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsxs("span",{className:"block text-[14px] font-medium text-ink",children:[n("computer.tab.routines")," ",e.jsx("span",{className:"ml-1 text-[11px] text-ink-secondary",children:nn.length})]}),e.jsx("span",{className:K("mt-1 block truncate text-[12px]",We?os(We):"text-ink-secondary"),children:We?`${We.routineName} · ${as(We)}`:n("computer.routines.openTitle")})]}),e.jsx(As,{size:14,className:"shrink-0 text-ink-secondary rtl:-scale-x-100","aria-hidden":"true"})]})]}):e.jsxs("div",{className:"mt-4 rounded-xl bg-card p-4","data-testid":"where-works",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("computer.simple.whereWorks",{name:r.name})}),e.jsx("div",{role:"group","aria-label":n("computer.destinationAria"),className:"mt-3 grid grid-cols-3 gap-2",children:Ue.map(({mode:t,Icon:o,selected:l,disabled:b,unavailableTitle:T,simpleLabel:se,issue:ue,view:q})=>e.jsxs("button",{type:"button",disabled:b,title:T,"aria-pressed":l,onClick:()=>gn(t),className:K("flex min-w-0 flex-col items-center gap-1.5 rounded-lg border px-1.5 py-2.5 text-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-card",l?"border-accent/60 bg-accent/10 text-ink":"border-hairline/50 bg-panel/30 text-ink-secondary",b?"cursor-not-allowed opacity-50":"hover:border-accent/40 hover:bg-control/60"),children:[e.jsx(o,{size:16,className:K("shrink-0",l?"text-accent":"text-ink-secondary"),"aria-hidden":"true"}),e.jsx("span",{className:"w-full truncate text-[12px] font-medium leading-4",children:se}),ue&&e.jsx("span",{className:"w-full truncate text-[11px] leading-3 text-ink-secondary",children:q.short})]},t??"auto"))}),e.jsxs("div",{className:"mt-3 text-[12px] leading-5 text-ink-secondary","data-testid":"place-line",children:[lt.line,He(lt,"mt-1 block font-medium text-accent hover:underline")]}),Ot&&e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[e.jsx("p",{className:"min-w-0 flex-1 text-[12px] leading-5 text-ink-secondary","data-testid":"place-pinned-note",children:n("place.pinnedNoteSimple",{place:Ue.find(({mode:t})=>t===Ot)?.simpleLabel??n(Vt(Ot))})}),e.jsx("button",{type:"button",disabled:!!r.busy,title:r.busy?n("place.busy"):void 0,onClick:xr,className:"shrink-0 rounded-md px-2 py-0.5 text-[12px] font-medium leading-5 text-accent-text transition-colors hover:bg-control focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-not-allowed disabled:opacity-45 disabled:hover:bg-transparent","data-testid":"place-unpin",children:n("place.unpinSimple",{place:Ue.find(({selected:t})=>t)?.simpleLabel??n(Vt(s.computer??"auto"))})})]}),un&&e.jsx(Ws,{bot:r,backend:z,onBackend:t=>Ie({cloudBackend:t}),onAutoStart:()=>m({type:"updateBot",botId:r.id,patch:{autoStartVps:!r.autoStartVps}})})]})]})]}),e.jsx(is,{open:Kt!==null,onCancel:()=>gt(null),onConfirm:()=>{const t=Kt;gt(null),t&&(t===r.id&&(ne(null),N("checking")),m({type:"updateBot",botId:t,patch:{computer:"local",acknowledgeLocalAuto:!0}}))}})]})}export{Ma as ComputerPanel};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DataPanel-BQfys1jK.js","assets/styles-Bj-lDRZL.js","assets/styles-D8FmJr6X.css","assets/App-X_zk2xl3.js","assets/index-DJPPxxyF.js","assets/PlacesRail-B9RHHjvB.js","assets/monitor-DUEBF6Jm.js","assets/MenuMotion-V6wxTHIu.js","assets/calendar-days-C5I0mEXB.js","assets/LiveDesktop-qaS7h5XB.js","assets/desktop-connection-Dfaq6k5a.js","assets/desktop-viewer-CF-OpSo0.js"])))=>i.map(i=>d[i]);
2
+ import{c as ht,r as a,t as n,j as e,a as K,am as hr,X as gr,an as vr,_ as Pn}from"./styles-Bj-lDRZL.js";import{c as yr,a as wr,b as kr,i as jr,d as Nr}from"./remote-desktop-DDRRx8uY.js";import{v as Sr}from"./desktop-viewer-CF-OpSo0.js";import{dC as Ge,S as zn,E as Cr,D as Ir,bF as Er,bs as Rr,R as pt,Q as Pr,U as Xe,dD as zr,Y as Ye,br as Tr,F as Ar,dE as Dr,G as Ft,w as Tn,dF as $t,dG as dt,u as Lr,dH as Mr,dI as Or,dJ as Vr,dK as _r,a0 as Fr,dL as $r,dM as Br,dN as Wr,dO as Kr,dP as Ur,o as Hr,bK as qr,bJ as yn,n as F,dQ as Xr,dR as Yr,l as Gr,X as Jr,bL as wn,dS as Zr,dT as Qr,a1 as es,dU as kn,dV as ts,dW as ns,dX as rs,p as jn,dY as ss,dZ as Vt,a9 as as,aa as os,cl as is,d_ as ls,d$ as cs,Z as ds,A as us,e0 as ps,e1 as ms,e2 as xs,e3 as bs,q as fs,e4 as hs,e5 as gs,e6 as vs}from"./App-X_zk2xl3.js";import{L as O,p as Nn,M as ys,w as ws}from"./MacLocalControl-BYNcLKoB.js";import{R as ks,C as js}from"./ComputerFilesPane-C2_Khy6Z.js";import{L as A,X as An,u as Dn,d as Je,c as Ns,y as Sn,g as mt,W as Cn,o as Ss,e as In,f as Cs,s as Is}from"./PlacesRail-B9RHHjvB.js";import{u as Bt,B as Es}from"./BrowserPanel-BHNWYfsE.js";import{M as De}from"./monitor-DUEBF6Jm.js";import{C as Ln,w as Rs,a as Ps,p as zs,W as Ts}from"./WorksOnGrid-CviOksXp.js";import{C as As}from"./MenuMotion-V6wxTHIu.js";import"./index-DJPPxxyF.js";import"./RoutinesPage-DF0vugaB.js";import"./ProIntroduction-CC1iFzJ8.js";import"./BrowserProfilesManager-TkQi-a3T.js";import"./SignedInSites-DMOzwYFf.js";import"./minimize-C8Om8qhk.js";import"./file-up-DGhlT3MD.js";const Ds=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M12 3v18",key:"108xh3"}]],Ls=ht("columns-2",Ds);const Ms=[["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m14.305 7.53.923-.382",key:"1mlnsw"}],["path",{d:"m15.228 4.852-.923-.383",key:"82mpwg"}],["path",{d:"m16.852 3.228-.383-.924",key:"ln4sir"}],["path",{d:"m16.852 8.772-.383.923",key:"1dejw0"}],["path",{d:"m19.148 3.228.383-.924",key:"192kgf"}],["path",{d:"m19.53 9.696-.382-.924",key:"fiavlr"}],["path",{d:"m20.772 4.852.924-.383",key:"1j8mgp"}],["path",{d:"m20.772 7.148.924.383",key:"zix9be"}],["path",{d:"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7",key:"1tnzv8"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}]],Os=ht("monitor-cog",Ms);const Vs=[["path",{d:"m14.5 12.5-5-5",key:"1jahn5"}],["path",{d:"m9.5 12.5 5-5",key:"1k2t7b"}],["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"M8 21h8",key:"1ev6f3"}]],_s=ht("monitor-x",Vs);const Fs=[["circle",{cx:"10",cy:"7",r:"1",key:"dypaad"}],["circle",{cx:"4",cy:"20",r:"1",key:"22iqad"}],["path",{d:"M4.7 19.3 19 5",key:"1enqfc"}],["path",{d:"m21 3-3 1 2 2Z",key:"d3ov82"}],["path",{d:"M9.26 7.68 5 12l2 5",key:"1esawj"}],["path",{d:"m10 14 5 2 3.5-3.5",key:"v8oal5"}],["path",{d:"m18 12 1-1 1 1-1 1Z",key:"1bh22v"}]],$s=ht("usb",Fs);function Bs({src:s,name:i,error:d,starting:S,opening:f,disabled:v,refreshing:k=!1,retry:j=0,onOpen:y,onRetry:P}){const[u,m]=a.useState(null),[h,g]=a.useState(null);a.useEffect(()=>{g(null)},[j]);const x=!!(s&&u===s&&h!==s),w=d??(s&&h===s?n("computer.preview.imageFailed"):null);return e.jsxs("div",{className:"relative h-full w-full","aria-busy":!w&&(!x||f||k),children:[s&&e.jsxs("button",{type:"button",onClick:y,disabled:v||S||f||!x,className:"group absolute inset-0 flex h-full w-full items-center justify-center disabled:cursor-wait","aria-label":n("computer.openLiveDesktopAria",{name:i}),title:n("computer.openLiveDesktop"),children:[e.jsx("img",{src:s,alt:n("computer.screenOf",{name:i}),onLoad:()=>{m(s),g(null)},onError:()=>g(s),className:`h-full w-full object-contain transition group-hover:brightness-75 ${x?"":"invisible"}`},j),x&&e.jsxs("span",{className:"absolute right-2 top-2 flex items-center gap-1 rounded-md bg-black/70 px-2 py-1 text-[11px] font-medium text-white",children:[f?e.jsx(A,{size:12,className:"animate-spin"}):e.jsx(Ge,{size:12}),f?n("computer.preview.connecting"):n("computer.open")]})]}),!x&&!w&&e.jsxs("div",{role:"status",className:"absolute inset-0 flex flex-col items-center justify-center gap-2 px-6 text-center text-[12px] text-ink-secondary",children:[e.jsx(A,{size:18,className:"animate-spin"}),S?n("computer.phase.starting"):n("computer.preview.connectingScreen")]}),x&&k&&!w&&e.jsxs("div",{role:"status",className:"absolute bottom-2 left-2 flex items-center gap-1 rounded-md bg-black/70 px-2 py-1 text-[11px] text-white",children:[e.jsx(A,{size:12,className:"animate-spin"}),n("computer.preview.connectingScreen")]}),w&&e.jsxs("div",{role:"alert",className:`absolute inset-x-0 flex flex-col items-center justify-center gap-2 bg-card/95 p-4 text-center text-[12px] text-ink-secondary ${x?"bottom-0":"inset-y-0"}`,children:[!x&&e.jsx(De,{size:22}),e.jsxs("span",{children:[x?n("computer.preview.paused"):n("computer.preview.cantConnect")," ",w]}),e.jsx("button",{type:"button",onClick:()=>P(!x),className:"rounded-md bg-control px-3 py-1.5 text-ink hover:bg-raised-hover",children:n("computer.preview.retry")})]})]})}function Ws({bot:s,backend:i,onBackend:d,onAutoStart:S}){return e.jsxs("div",{"data-testid":"vps-choices",children:[e.jsx(Ln,{compact:!0,value:i,onChange:d}),!s.computer&&e.jsxs("div",{className:"mt-3 flex items-center justify-between gap-4 rounded-lg bg-inset px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[13px] text-ink",children:n("botAccess.cloud.startVps")}),e.jsx("div",{className:"mt-0.5 text-[12px] text-ink-secondary",children:n("botAccess.cloud.startVpsDescription")})]}),e.jsx(zn,{checked:!!s.autoStartVps,"aria-label":n("botAccess.cloud.startVps"),onClick:S})]})]})}const Ks={available:!1,devices:[]};function Us(){const s=window.ogb?.androidDevice,[i,d]=a.useState(Ks),[S,f]=a.useState(!1),v=Bt();return a.useEffect(()=>{if(!s){f(!0);return}if(!v)return;let k=!0,j=0,y=0;const P=async()=>{const m=++j,h=()=>m<y;try{const g=await s.status();k&&!h()&&(y=m,d(g))}catch(g){k&&!h()&&(y=m,d({available:!1,devices:[],reasonCode:"adb-failed",message:g instanceof Error?g.message:String(g)}))}finally{k&&!h()&&f(!0)}};P();const u=window.setInterval(()=>{P()},2e3);return()=>{k=!1,window.clearInterval(u)}},[s,v]),{...i,scanned:S}}function ct(s){return s.model==="Android device"?s.serial:s.model}function Hs({status:s}){const i=window.ogb?.androidDevice,d=Bt(),S=s.devices.filter(p=>p.state==="device"),[f,v]=a.useState(S[0]?.serial??s.devices[0]?.serial??""),[k,j]=a.useState(null),[y,P]=a.useState({width:0,height:0}),[u,m]=a.useState(null),h=a.useRef(null),g=a.useRef(null),x=a.useRef({x:0,y:0,timer:null}),w=s.devices.find(p=>p.serial===f)??s.devices[0],$=w?.serial,R=w?.state;a.useEffect(()=>{!w&&s.devices[0]&&v(s.devices[0].serial),w&&!s.devices.some(p=>p.serial===w.serial)&&v(s.devices[0]?.serial??"")},[w,s.devices]),a.useEffect(()=>{if(!i||!$||R!=="device"||!d){if(!d)return;j(null);return}let p=!0,C=null;const V=async()=>{try{const _=await i.frame($);p&&(j(_.dataUrl),m(null))}catch(_){p&&m(_ instanceof Error?_.message:String(_))}finally{p&&(C=window.setTimeout(()=>{V()},850))}};return V(),()=>{p=!1,C!==null&&window.clearTimeout(C)}},[i,$,R,d]),a.useEffect(()=>()=>{x.current.timer&&clearTimeout(x.current.timer)},[]);const D=p=>{!i||!w||w.state!=="device"||i.input(w.serial,p).catch(C=>{m(C instanceof Error?C.message:String(C))})},B=(p,C=!1)=>{if(!h.current||!y.width||!y.height)return null;const _=p.currentTarget.getBoundingClientRect(),L=Math.min(_.width/y.width,_.height/y.height),X=y.width*L,Z=y.height*L,Y=_.left+(_.width-X)/2,Le=_.top+(_.height-Z)/2,Ce=(p.clientX-Y)/X,te=(p.clientY-Le)/Z;return C?{x:Math.max(0,Math.min(1,Ce)),y:Math.max(0,Math.min(1,te))}:Ce>=0&&Ce<=1&&te>=0&&te<=1?{x:Ce,y:te}:null},ye=p=>{if(p.metaKey||p.ctrlKey||p.altKey)return;const C={ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up",Backspace:"delete",Delete:"delete",Enter:"enter",Escape:"back",Tab:"tab"};C[p.key]?(p.preventDefault(),D({type:"key",key:C[p.key]})):/^[A-Za-z0-9 _.,@-]$/.test(p.key)&&(p.preventDefault(),D({type:"text",text:p.key}))},me=p=>{if(!y.width||!y.height)return;p.preventDefault();const C=x.current;C.x+=p.deltaX,C.y+=p.deltaY,C.timer&&clearTimeout(C.timer),C.timer=setTimeout(()=>{const V=Math.abs(C.x)>Math.abs(C.y),_=V?C.x:C.y;if(C.x=0,C.y=0,C.timer=null,Math.abs(_)<2)return;const L=Math.max(.18,Math.min(.45,Math.abs(_)/500)),X=_>0?-1:1,Z=V?{x:.5,y:.5}:{x:.5,y:.65},Y=V?{x:Z.x+X*L,y:Z.y}:{x:Z.x,y:Z.y+X*L};D({type:"swipe",fromX:Z.x,fromY:Z.y,toX:Y.x,toY:Y.y,durationMs:260,width:y.width,height:y.height})},80)};if(!w)return null;const r=w.state==="device";return e.jsxs("div",{className:"space-y-3 pb-5",children:[e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 text-[15px] font-medium text-ink",children:[e.jsx(An,{size:16,className:"text-success"})," ",ct(w)]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:n("computer.android.usbSubtitle")})]}),e.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-[11px] text-success",children:[e.jsx(Cr,{size:12})," ",n("computer.android.usb")]})]}),s.devices.length>1&&e.jsx(Ir,{value:w.serial,onChange:p=>v(p.target.value),className:"mt-3 w-full",children:s.devices.map(p=>e.jsxs("option",{value:p.serial,children:[ct(p)," · ",p.state]},p.serial))})]}),r?e.jsxs(e.Fragment,{children:[e.jsx("div",{role:"application","aria-label":n("computer.android.screenAria",{name:ct(w)}),tabIndex:0,onKeyDown:ye,onWheel:me,onPointerDown:p=>{const C=B(p);C&&(p.currentTarget.setPointerCapture(p.pointerId),g.current={point:C,at:performance.now()})},onPointerUp:p=>{const C=g.current,V=B(p,!0);if(g.current=null,!C||!V)return;Math.hypot(V.x-C.point.x,V.y-C.point.y)<.012?D({type:"tap",...V,...y}):D({type:"swipe",fromX:C.point.x,fromY:C.point.y,toX:V.x,toY:V.y,durationMs:performance.now()-C.at,...y}),p.currentTarget.focus()},onPointerCancel:()=>{g.current=null},className:"mx-auto flex h-[520px] w-full touch-none cursor-pointer items-center justify-center overflow-hidden overscroll-none rounded-[28px] bg-black outline-none ring-1 ring-white/10 focus:ring-2 focus:ring-accent",children:k?e.jsx("img",{ref:h,src:k,alt:n("computer.android.screenAlt",{name:ct(w)}),draggable:!1,onLoad:p=>{P({width:p.currentTarget.naturalWidth,height:p.currentTarget.naturalHeight})},className:"pointer-events-none h-full w-full select-none object-contain"}):e.jsx(A,{size:20,className:"animate-spin text-ink-secondary"})}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("button",{onClick:()=>D({type:"key",key:"back"}),className:"flex items-center justify-center gap-1.5 rounded-lg bg-raised py-2 text-[12px] text-ink hover:bg-raised-hover",children:[e.jsx(Er,{size:13})," ",n("computer.android.back")]}),e.jsxs("button",{onClick:()=>D({type:"key",key:"home"}),className:"flex items-center justify-center gap-1.5 rounded-lg bg-raised py-2 text-[12px] text-ink hover:bg-raised-hover",children:[e.jsx(Rr,{size:12})," ",n("computer.android.home")]}),e.jsxs("button",{onClick:()=>D({type:"key",key:"recent"}),className:"flex items-center justify-center gap-1.5 rounded-lg bg-raised py-2 text-[12px] text-ink hover:bg-raised-hover",children:[e.jsx(pt,{size:13})," ",n("computer.android.recent")]})]}),e.jsx("div",{className:"text-center text-[11px] leading-relaxed text-ink-secondary",children:n("computer.android.hint")})]}):e.jsx("div",{className:"rounded-xl border border-warning/25 bg-warning/10 p-4 text-[12px] leading-relaxed text-warning",children:w.state==="unauthorized"?n("computer.android.unauthorized"):n("computer.android.badState",{state:w.state})}),u&&e.jsx("div",{className:"rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:u}),e.jsxs("div",{className:"rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-[13px] font-medium text-ink",children:[e.jsx($s,{size:15,className:"text-accent"})," ",n("computer.android.setupTitle")]}),e.jsxs("ol",{className:"mt-2 list-decimal space-y-1.5 pl-4 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx("li",{children:n("computer.android.step1")}),e.jsx("li",{children:n("computer.android.step2").split(/(\{buildNumber\}|\{usbDebugging\})/).map((p,C)=>p==="{buildNumber}"||p==="{usbDebugging}"?e.jsx("span",{className:"text-ink",children:n(p==="{buildNumber}"?"computer.android.buildNumber":"computer.android.usbDebugging")},C):p)}),e.jsxs("li",{children:[n("computer.android.step3a")," ",e.jsx("span",{className:"text-ink",children:n("computer.android.allowUsbDebugging")})," ",n("computer.android.step3b")]})]}),e.jsx("div",{className:"mt-2 text-[11px] leading-relaxed text-ink-secondary",children:n("computer.android.agentNote")}),e.jsx("div",{className:"mt-2 rounded-lg bg-inset px-3 py-2 text-[11px] leading-relaxed text-ink-secondary",children:n("computer.android.harnessNote")})]})]})}const qs=1500,Xs=2e5,Mn=()=>Array.from(crypto.getRandomValues(new Uint8Array(18)),s=>s.toString(16).padStart(2,"0")).join("");function Ys(s,i){const d=window.setInterval(()=>{s.closed&&(window.clearInterval(d),i())},1e3)}async function Gs({botId:s,title:i,held:d,request:S,join:f,current:v}){let k=null,j=null;!window.ogb?.desktopViewer&&!window.ogb?.openExternal&&(j=window.open("","_blank"),j&&(j.opener=null));const y=()=>new DOMException("The selected conversation changed","AbortError");try{if(!d&&(k=Mn(),!(await S("take",k)).held))throw new O("computer.err.confirmControl");if(!v())throw y();const{joinUrl:P}=await f(AbortSignal.timeout(Xs)),u=typeof P=="string"&&P?P:null;if(!v())throw y();if(!u)throw new O("computer.err.noDesktopLink");if(window.ogb?.desktopViewer){if(!await window.ogb.desktopViewer.open(u,i,s))throw new O("computer.err.openDesktop")}else if(j){j.location.replace(u);const m=k;m&&Ys(j,()=>{S("release",m).catch(()=>{})})}else if(window.ogb?.openExternal){if(!await window.ogb.openExternal(u))throw new O("computer.err.openDesktopLink")}else if(!window.open(u,"_blank","noopener"))throw new O("computer.err.popupBlocked")}catch(P){throw j?.close(),k&&await S("release",k).catch(()=>{}),P}}function _t(s,i){fetch(s,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i),keepalive:!0}).catch(()=>{})}function Js({botId:s,session:i,held:d,request:S,viewerClose:f}){const[v,k]=a.useState(!1),[j,y]=a.useState(!1),[P,u]=a.useState(!1),m=a.useRef(null),h=a.useRef(f);h.current=f;const g=a.useCallback(()=>{k(!1),y(!1)},[]),x=a.useCallback(()=>{const R=m.current;m.current=null,g(),R&&(_t(`/api/bots/${s}/computer/control`,{action:"release",controlLeaseId:R.id}),R.viewerClose&&_t(R.viewerClose,{}))},[s,g]),w=a.useCallback(async(R=!1)=>{const D=Mn(),B=await S("take",D);if(!B.held)throw new O("computer.err.confirmControl");m.current=B.owned?{id:D,viewerClose:h.current}:null,k(!0),y(R)},[S]),$=a.useCallback(async()=>{const R=m.current?.viewerClose??h.current;m.current=null,g(),u(!0);try{await S("release")}finally{u(!1),R&&_t(R,{})}},[g,S]);return a.useEffect(()=>x,[i,x]),a.useEffect(()=>(window.addEventListener("pagehide",x),()=>window.removeEventListener("pagehide",x)),[x]),a.useEffect(()=>{if(!v||d)return;const R=setTimeout(()=>{m.current=null,g()},qs);return()=>clearTimeout(R)},[v,d,g]),{here:v,expanded:j,setExpanded:y,handingBack:P,take:w,handBack:$,leave:x}}function Zs({held:s,frame:i,name:d,disabled:S,takeDisabled:f,error:v,onTakeControl:k}){const[j,y]=a.useState(!1),P=a.useCallback(()=>y(!1),[]);return a.useEffect(()=>{s&&y(!1)},[s]),e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",onClick:()=>s?k(!0):y(!0),disabled:S,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n(s?"computer.openLiveDesktop":"computer.watchFullScreenTitle"),children:[e.jsx(Ge,{size:14}),n("computer.fullScreen")]}),j&&!s&&e.jsx(Qs,{frame:i,name:d,takeDisabled:f,error:v,onClose:P,onTakeControl:()=>k(!0)})]})}function Qs({frame:s,name:i,takeDisabled:d,error:S,onClose:f,onTakeControl:v}){const k=a.useRef(null),j=a.useRef(null),{dragProps:y,noDragStyle:P}=Dn(),u=Je().capabilities.windowChrome==="mac-inset",m=a.useRef(null),[h,g]=a.useState(!1);Ns(k,f),a.useEffect(()=>j.current?.focus(),[]),a.useEffect(()=>{const $=R=>{R.key!=="Escape"||R.defaultPrevented||!(R.target instanceof Node)||!k.current?.contains(R.target)||(R.preventDefault(),R.stopPropagation(),f())};return window.addEventListener("keydown",$,!0),()=>window.removeEventListener("keydown",$,!0)},[f]),a.useEffect(()=>{const $=document.activeElement;d&&($===m.current||$===document.body)&&k.current?.focus()},[d]);const x="flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-[12px] focus-visible:outline-2 focus-visible:outline-focus disabled:opacity-50",w=n("computer.screenOf",{name:i});return e.jsxs("div",{ref:k,tabIndex:-1,"data-watch-full-screen":!0,role:"dialog","aria-modal":"true","aria-label":w,className:"fixed inset-0 z-[65] flex flex-col bg-app outline-none",children:[e.jsxs("header",{...y,className:K("flex shrink-0 flex-wrap items-center gap-2 border-b border-hairline/40 bg-panel px-3 py-2",u&&"pl-[86px]"),children:[e.jsx("span",{className:"min-w-0 truncate text-[13px] font-medium text-ink",children:w}),e.jsx("span",{className:"pointer-events-none rounded-full bg-black/70 px-2.5 py-1 text-[11px] font-medium text-white shadow-sm",children:n("computer.watchingBotWorks")}),e.jsxs("button",{ref:j,type:"button",style:P,onClick:f,"aria-label":n("desktopViewer.exitFullscreen"),className:K(x,"ml-auto bg-control text-ink hover:bg-raised-hover"),children:[e.jsx(Pr,{size:14,"aria-hidden":"true"}),e.jsx("span",{className:"max-sm:hidden",children:n("desktopViewer.exitFullscreen")})]}),e.jsxs("button",{ref:m,type:"button",style:P,onClick:()=>{g(!0),v()},disabled:d,className:K(x,"bg-accent font-medium text-accent-ink hover:brightness-110"),title:n("computer.takeControlTitle"),children:[e.jsx(Xe,{size:14,"aria-hidden":"true"}),n("computer.takeControl")]})]}),h&&S&&e.jsx("div",{role:"alert",className:"shrink-0 border-b border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:S}),e.jsx("div",{className:"relative flex min-h-0 flex-1 items-center justify-center overflow-hidden bg-inset",children:s?e.jsx("img",{src:s,alt:w,className:"h-full w-full object-contain"}):e.jsxs("span",{role:"status",className:"flex items-center gap-2 text-[12px] text-ink-secondary",children:[e.jsx(A,{size:16,className:"animate-spin","aria-hidden":"true"}),n("computer.waitingFrame")]})})]})}function ut(s){for(const i of s?.getTracks()??[])i.stop()}function ea(s){const i=s instanceof DOMException?s.name:"";return i==="NotAllowedError"||i==="AbortError"?{ok:!1,phase:"cancelled",messageKey:"computer.screen.cancelled"}:i==="NotFoundError"||i==="NotReadableError"||i==="NotSupportedError"||i==="SecurityError"?{ok:!1,phase:"unavailable",messageKey:"computer.screen.unavailableNow"}:{ok:!1,phase:"error",messageKey:"computer.screen.error"}}async function ta({beginIntent:s,getDisplayMedia:i}){try{if(!s())return{ok:!1,phase:"unavailable",messageKey:"computer.screen.unavailableWindow"};const d=await i({video:!0,audio:!1});return d.getVideoTracks().length===0?(ut(d),{ok:!1,phase:"unavailable",messageKey:"computer.screen.noVideoTrack"}):{ok:!0,stream:d}}catch(d){return ea(d)}}const qe={idle:"computer.screen.idle",ended:"computer.screen.ended",unavailable:"computer.screen.unavailable"};function na(){const{capabilities:s,ready:i}=Je(),d=s.screenPreview,S=s.host.platform==="linux",[f,v]=a.useState("idle"),[k,j]=a.useState(qe.idle),[y,P]=a.useState(""),u=a.useRef(null),m=a.useRef(null),h=a.useRef(0),g=a.useCallback((R,D)=>{h.current+=1;const B=m.current;m.current=null,u.current&&(u.current.srcObject=null),ut(B),v(R),j(D)},[]);a.useEffect(()=>()=>{h.current+=1;const R=m.current;m.current=null,ut(R)},[]);const x=async()=>{if(!d.available||!window.ogb?.beginScreenPreviewIntent||!navigator.mediaDevices?.getDisplayMedia){v("unavailable"),j(qe.unavailable);return}g("requesting","computer.screen.waiting");const R=h.current,D=await ta({beginIntent:()=>window.ogb.beginScreenPreviewIntent(),getDisplayMedia:r=>navigator.mediaDevices.getDisplayMedia(r)});if(R!==h.current){D.ok&&ut(D.stream);return}if(!D.ok){v(D.phase),j(D.messageKey);return}const B=D.stream,ye=B.getVideoTracks()[0];m.current=B,P(ye.label),ye.addEventListener("ended",()=>{m.current===B&&g("ended",qe.ended)},{once:!0});const me=u.current;if(!me){g("error","computer.screen.displayFailed");return}me.srcObject=B;try{await me.play()}catch{R===h.current&&m.current===B&&g("error","computer.screen.displayFailed");return}R!==h.current||m.current!==B||(v("streaming"),j("computer.screen.active"))};if(!S)return null;const w=y||n("computer.screen.selected"),$=f==="cancelled"||f==="ended"||f==="unavailable"||f==="error";return e.jsxs("section",{className:"mt-4 rounded-xl bg-card p-4","aria-labelledby":"local-preview-title",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{id:"local-preview-title",className:"text-[15px] font-medium text-ink",children:n("computer.screen.title")}),e.jsx("div",{className:"mt-0.5 text-[12px] leading-relaxed text-ink-secondary",children:n("computer.screen.subtitle")})]}),e.jsx("span",{className:"shrink-0 rounded-full bg-raised px-2 py-1 text-[10px] font-medium text-ink-secondary",children:n("computer.screen.badge")})]}),e.jsxs("div",{className:"relative mt-3 flex aspect-[16/10] items-center justify-center overflow-hidden rounded-lg bg-panel",children:[e.jsx("video",{ref:u,autoPlay:!0,muted:!0,playsInline:!0,"aria-label":n("computer.screen.videoAria"),className:f==="streaming"?"h-full w-full object-contain":"hidden"}),f!=="streaming"&&e.jsxs("div",{className:"flex flex-col items-center gap-2 px-6 text-center text-ink-secondary",children:[f==="requesting"?e.jsx(A,{size:18,className:"animate-spin"}):e.jsx(De,{size:22}),e.jsx("span",{className:"text-[12px]","aria-live":"polite",children:i?n(d.available?k:qe.unavailable):n("computer.screen.checking")})]})]}),f==="streaming"&&e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-3 text-[11px] text-ink-secondary",children:[e.jsx("span",{className:"truncate",title:w,children:d.interaction==="portal-picker"?w:n("vm.dest.local")}),e.jsxs("span",{className:"flex items-center gap-1.5 text-success",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-success"})," ",n("computer.screen.sharing")]})]}),e.jsxs("button",{type:"button",disabled:f==="requesting"||!d.available&&f!=="streaming",onClick:f==="streaming"?()=>g("idle",qe.idle):()=>{x()},className:"mt-3 flex w-full items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:cursor-not-allowed disabled:opacity-50",children:[f==="requesting"?e.jsx(A,{size:14,className:"animate-spin"}):f==="streaming"?e.jsx(zr,{size:13}):$?e.jsx(pt,{size:14}):e.jsx(De,{size:14}),f==="requesting"?n("computer.screen.choosing"):f==="streaming"?n("computer.screen.stop"):$?n("computer.linux.tryAgain"):d.interaction==="portal-picker"?n("computer.screen.choose"):n("computer.screen.start")]})]})}const ra="https://github.com/milind-soni/OpenMausBot/blob/main/docs/linux-desktop.md#enable-local-control",sa="https://github.com/milind-soni/OpenMausBot/blob/main/docs/linux-desktop.md#omarchy-hyprland-experimental",aa="https://cua.ai/docs/cua-sdk/guides/omarchy";function oa(){const{capabilities:s}=Je(),i=s.localComputer,[d,S]=a.useState(null),[f,v]=a.useState(null);if(s.host.platform!=="linux")return null;const k=d!==null||i.status==="checking"||i.status==="starting",j=i.available,y=i.reasonCode==="linux-wayland-seat-safety-blocked",P=i.reasonCode==="linux-hyprland-plugin-required",u=i.compositor==="hyprland",m=s.host.session==="wayland",h=i.driverSource==="bundled",g=async x=>{if(window.ogb?.localControl){S(x),v(null);try{if((x==="disable"||x==="retry")&&!(await fetch("/api/local-computer/interrupt",{method:"POST"})).ok){v({key:"computer.linux.stopFailed"});return}await window.ogb.localControl[x]()}catch(w){v(w instanceof Error?w.message:String(w))}finally{S(null)}}};return e.jsxs("section",{className:"mt-4 rounded-xl bg-card p-4","aria-labelledby":"linux-local-control-title",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("div",{id:"linux-local-control-title",className:"flex items-center gap-2 text-[15px] font-medium text-ink",children:[e.jsx(Os,{size:16,className:j?"text-success":"text-ink-secondary"}),n("computer.linux.title")]}),e.jsx("div",{className:"mt-1 text-[12px] leading-relaxed text-ink-secondary",children:u?n("computer.linux.metaOmarchy"):n("computer.linux.meta",{session:m?"Wayland":"Xorg"})})]}),e.jsx("span",{className:K("shrink-0 rounded-full px-2 py-1 text-[10px] font-medium",j?"bg-success/10 text-success":y?"bg-danger/10 text-danger":P||i.enabled?"bg-warning/10 text-warning":"bg-raised text-ink-secondary"),children:j?n("computer.linux.ready"):y?n("computer.linux.waylandBadge"):P?n("computer.linux.pluginBadge"):i.enabled?n("vm.state.attention"):n("vm.dest.off")})]}),y?e.jsx("div",{className:"mt-3 rounded-lg border border-danger/20 bg-danger/5 p-3",children:e.jsxs("div",{className:"flex gap-2 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-danger"}),e.jsxs("span",{children:[n("computer.linux.waylandBefore")," ",e.jsx("strong",{className:"font-medium text-ink",children:n("computer.linux.waylandXorg")})," ",n("computer.linux.waylandAfter")]})]})}):P?e.jsxs("div",{className:"mt-3 rounded-lg border border-warning/20 bg-warning/5 p-3","data-linux-hyprland-plugin-required":!0,children:[e.jsxs("div",{className:"flex gap-2 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-warning"}),e.jsx("span",{children:n("computer.linux.hyprlandPlugin")})]}),e.jsxs("button",{type:"button",onClick:()=>window.open(aa,"_blank","noopener,noreferrer"),className:"mt-2 flex items-center gap-1.5 text-[12px] font-medium text-accent hover:underline",children:[n("computer.linux.omarchyGuide")," ",e.jsx(Sn,{size:11})]})]}):i.enabled?e.jsxs("div",{className:"mt-3 rounded-lg bg-panel p-3 text-[12px] text-ink-secondary",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[j?e.jsx(Tr,{size:15,className:"mt-0.5 shrink-0 text-success"}):k?e.jsx(A,{size:15,className:"mt-0.5 shrink-0 animate-spin"}):e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-warning"}),e.jsx("span",{"aria-live":"polite",children:j?n(u?"computer.linux.hyprlandReady":"computer.linux.readyMsg"):i.message??n("computer.linux.checking")})]}),i.driverPath&&e.jsxs("div",{className:"mt-2 break-all font-mono text-[10px] text-ink-tertiary",title:i.driverPath,children:[h?n("computer.linux.bundledDriver"):i.driverPath,i.driverVersion?` · ${i.driverVersion}`:""]})]}):e.jsx("div",{className:"mt-3 rounded-lg border border-warning/20 bg-warning/5 p-3",children:e.jsxs("div",{className:"flex gap-2 text-[12px] leading-relaxed text-ink-secondary",children:[e.jsx(Ye,{size:15,className:"mt-0.5 shrink-0 text-warning"}),e.jsxs("span",{children:[n("computer.linux.enableBefore")," ",e.jsx("strong",{className:"font-medium text-ink",children:n("vm.dest.local")})," ",n("computer.linux.enableAfter"),m&&!u&&` ${n("computer.linux.waylandInput")}`]})]})}),f&&e.jsx("div",{className:"mt-2 text-[12px] text-danger",children:typeof f=="string"?f:n(f.key)}),!y&&e.jsx("div",{className:"mt-3 flex gap-2",children:P?e.jsxs("button",{type:"button",disabled:k,onClick:()=>{g("enable")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d==="enable"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(pt,{size:14}),n("computer.linux.tryAgain")]}):i.enabled?e.jsxs(e.Fragment,{children:[!j&&e.jsxs("button",{type:"button",disabled:k,onClick:()=>{g("retry")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d==="retry"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(pt,{size:14}),n("computer.linux.tryAgain")]}),e.jsxs("button",{type:"button",disabled:d!==null,onClick:()=>{g("disable")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-raised py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[d==="disable"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(mt,{size:14}),n("computer.linux.disable")]})]}):e.jsxs("button",{type:"button",disabled:k,onClick:()=>{g("enable")},className:"flex flex-1 items-center justify-center gap-2 rounded-lg bg-accent py-2 text-[13px] font-medium text-white hover:opacity-90 disabled:opacity-50",children:[d==="enable"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(mt,{size:14}),n("computer.linux.enable")]})}),e.jsxs("button",{type:"button",onClick:()=>window.open(u?sa:ra,"_blank","noopener,noreferrer"),className:"mt-2 flex w-full items-center justify-center gap-1.5 rounded-lg py-1.5 text-[11px] text-ink-secondary hover:bg-raised hover:text-ink",children:[s.host.packaged?n("computer.linux.guide"):n("computer.linux.driverSetup")," ",e.jsx(Sn,{size:11})]})]})}function ia(){const{capabilities:s}=Je(),[i,d]=a.useState(!1),[S,f]=a.useState(null),v=s.localComputer;if(s.host.platform!=="win32"||v.reasonCode==="remote-server"||v.available)return null;const k=async()=>{d(!0),f(null);try{await window.ogb?.localControl?.retry()}catch(j){f(j instanceof Error?j.message:String(j))}finally{d(!1)}};return e.jsx("section",{"data-windows-local-control":v.reasonCode??"unavailable",className:"mt-4 rounded-xl border border-warning/25 bg-warning/10 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(_s,{size:16,className:"mt-0.5 shrink-0 text-warning","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[14px] font-medium text-ink",children:n("computer.windows.title")}),e.jsxs("p",{className:"mt-1 text-[13px] leading-relaxed text-ink-secondary",children:[n("computer.windows.body"),v.reasonCode==="cua-driver-blocked"&&e.jsxs(e.Fragment,{children:[" ",n("computer.windows.blocked")]})]}),v.message&&e.jsxs("details",{className:"mt-2 text-[12px] text-ink-secondary",children:[e.jsx("summary",{className:"cursor-pointer",children:n("computer.windows.detail")}),e.jsx("p",{className:"mt-1 break-words",children:v.message})]}),S&&e.jsxs("div",{role:"alert",className:"mt-2 flex gap-1.5 text-[12px] text-danger",children:[e.jsx(Ye,{size:13,className:"mt-0.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:S})]}),e.jsx("div",{className:"mt-3 flex flex-wrap gap-2",children:e.jsxs("button",{type:"button",onClick:()=>{k()},disabled:i,className:"inline-flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[13px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[i&&e.jsx(A,{size:13,className:"animate-spin","aria-hidden":"true"}),n(i?"computer.windows.starting":"computer.windows.start")]})})]})]})})}const la={computer:{Icon:De,label:"computer.tab.computer"},routines:{Icon:Tn,label:"computer.tab.routines"},android:{Icon:An,label:"computer.tab.android"},browser:{Icon:Ft,label:"computer.tab.browser",tour:"computer-browser"},data:{Icon:Dr,label:"computer.tab.data",tour:"computer-data"},files:{Icon:Ar,label:"computer.tab.files"}},Ne="outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent/60",xt=s=>`computer-panel-tabs-tab-${s}`,On=s=>`computer-panel-tabs-panel-${s}`,ca=(s,i)=>({id:xt(s),role:"tab","aria-selected":i,"aria-controls":On(s),tabIndex:i?0:-1}),Se=s=>({role:"tabpanel",id:On(s),"aria-labelledby":xt(s),tabIndex:0});function da(s){const i=s.currentTarget;Math.abs(s.deltaY)<=Math.abs(s.deltaX)||i.scrollWidth<=i.clientWidth||(i.scrollLeft+=s.deltaY)}function ua(s,i,d){if(s.ctrlKey||s.metaKey||s.altKey)return;const S=Math.max(0,i.findIndex(k=>xt(k)===s.target.id)),f=s.key==="ArrowRight"?1:s.key==="ArrowLeft"?-1:0,v=s.key==="Home"?i[0]:s.key==="End"?i[i.length-1]:f?i[(S+f+i.length)%i.length]:void 0;v&&(s.preventDefault(),d(v),document.getElementById(xt(v))?.focus())}function pa(s,i,d){const S=i.scanned&&i.devices.length===0&&i.reasonCode!=="adb-unavailable"&&i.reasonCode!=="adb-failed";a.useEffect(()=>{!S||$t(s)!=="android"||(d("computer"),dt(s,"computer"))},[s,S,d])}const Vn="omb-computer-panel-width",bt=360,ft=960,ma=400,En=40;function xa(){try{const s=Number(localStorage.getItem(Vn));if(Number.isFinite(s)&&s>=bt&&s<=ft)return s}catch{}return ma}function ba(){const[s,i]=a.useState(xa),d=a.useRef(null),S=h=>{try{localStorage.setItem(Vn,String(h))}catch{}},f=h=>{d.current={x:h.clientX,width:s},h.currentTarget.setPointerCapture(h.pointerId)},v=h=>{if(!d.current)return;const g=Math.min(ft,Math.max(bt,d.current.width+(d.current.x-h.clientX)));i(g)},k=h=>{d.current&&(d.current=null,h.currentTarget.releasePointerCapture(h.pointerId),S(s))},j=h=>{i(g=>{const x=Math.min(ft,Math.max(bt,g+h));return S(x),x})},y=a.useRef(null),[P,u]=a.useState(null);return a.useEffect(()=>{const h=y.current?.closest("aside");if(!h)return;const g=()=>u(h.offsetWidth);g();const x=new ResizeObserver(g);return x.observe(h),()=>x.disconnect()},[]),{panelWidth:s,separatorRef:y,separatorWidth:P,onSeparatorKeyDown:h=>{if(h.ctrlKey||h.metaKey||h.altKey)return;const g=h.key==="ArrowLeft"?En:h.key==="ArrowRight"?-En:null;g===null||P===null||(h.preventDefault(),j(g))},onResizeStart:f,onResizeMove:v,onResizeEnd:k}}const fa=a.lazy(()=>Pn(()=>import("./DataPanel-BQfys1jK.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])).then(s=>({default:s.DataPanel}))),_n=()=>Pn(()=>import("./LiveDesktop-qaS7h5XB.js"),__vite__mapDeps([9,1,2,10,11,5,6,7,3,4])).then(s=>({default:s.LiveDesktop})),ha=a.lazy(_n),Rn=Ss({held:In().optional().default(!1),helpReason:Is().nullable().optional().default(null),help:Cs().optional().transform(ds),owned:In().optional()}).passthrough();function Ma({bot:s,onOpenVmWorkspace:i}){const{dragProps:d}=Dn(),{panelWidth:S,separatorRef:f,separatorWidth:v,onSeparatorKeyDown:k,onResizeStart:j,onResizeMove:y,onResizeEnd:P}=ba(),{state:u,dispatch:m,flushBotPatches:h}=Lr(),g=s.tasks?.find(t=>t.threadId===s.threadId),x=Mr(s,g),w=Or(g),$=Vr(s),R=`${s.id}:${s.threadId}:${x}:${s.cloudBackend??"box"}:${$.modelSelection.instanceId}`,[D,B]=a.useState(null),ye=D?.key===R,me=x!=="auto"||ye,r={...$,computer:x==="auto"?ye?D.surface:void 0:x},p=`${r.id}:${r.threadId}:${r.computer}:${r.cloudBackend??"box"}`,C=a.useRef(p);C.current=p;const V=a.useRef(null);a.useEffect(()=>()=>V.current?.abort(),[p]);const _=!!r.busy,L=a.useCallback(t=>`/api/bots/${s.id}/${t}?threadId=${encodeURIComponent(s.threadId)}`,[s.id,s.threadId]),X=s.computer==="cloud"&&x==="cloud",Z=s.computer==="vm"&&x==="vm",{capabilities:Y,ready:Le}=Je(),Ce=Y.localComputer.available,te=Y.host.platform==="linux",Me=_r(u.instances,r),Wt=Fr("local",u.config)&&$r({capabilities:Y,providerSupportsLocal:Me}),[Kt,gt]=a.useState(null),Ut=Br({capabilities:Y,providerSupportsLocal:Me}),Fn=Wr(u.config,Y),[c,N]=a.useState("checking"),[Oe,Ht]=a.useState(null),[xe,ne]=a.useState(null),[vt,yt]=a.useState(null),z=r.cloudBackend??"box",Ze=!!(Oe&&Oe.botId===r.id&&Oe.computer===s.computer&&Oe.cloudBackend===z&&Oe.section===(r.section?.trim()??"")),U=!!(xe&&xe.botId===r.id&&xe.threadId===r.threadId&&xe.computer===r.computer&&xe.cloudBackend===z),we=U&&x==="auto"&&z==="box"&&vt?.botId===r.id&&vt.section===(r.section?.trim()??"")?vt:null,W=U&&Kr({computer:r.computer,cloudBackend:z,phase:c,botId:r.id,resolvedBotId:xe?.botId??null,resolvedComputer:xe?.computer??null,resolvedCloudBackend:xe?.cloudBackend??null}),Ie=a.useCallback(t=>{ne(null),yt(null),N("checking"),m({type:"updateBot",botId:r.id,patch:t})},[r.id,m]);a.useEffect(()=>{let t=!0;return Ht(null),h(r.id).then(o=>{t&&(o&&!Ur({computer:s.computer,cloudBackend:z,persistedBot:o})||o&&(o.section?.trim()??"")!==(r.section?.trim()??"")||Ht({botId:r.id,computer:s.computer,cloudBackend:z,section:r.section?.trim()??""}))}),()=>{t=!1}},[r.id,s.computer,r.section,z,h]);const[Ve,ae]=a.useState(null),[wt,Qe]=a.useState(null),[$n,ce]=a.useState(null),[Bn,Ee]=a.useState(!1),[qt,Wn]=a.useState(0),[Kn,kt]=a.useState(null),[G,et]=a.useState(null),[Xt,jt]=a.useState(null),[Un,Yt]=a.useState(null),[E,oe]=a.useState(null),[ie,Re]=a.useState(!1),[tt,Gt]=a.useState(!1),[nt,I]=a.useState(null),be=Nn(nt),Q=hr(),[Hn,_e]=a.useState(()=>$t(r.id)),Fe=u.dataResultFocus?.botId===r.id?u.dataResultFocus:void 0,[qn,Xn]=a.useState(),Nt=Us(),St=Nt.devices.length>0,Jt=xs({advanced:Q,androidConnected:St}),M=ls(Hn,{advanced:Q,androidConnected:St}),Ct=Hr(s.id,M),Zt=qr(u.config),fe=yn(u.config)&&r.browser!==!1&&(Zt||u.config?.browserEngine?.installable===!0),[Qt,Pe]=a.useState(0),[Yn,Gn]=a.useState(!1);a.useEffect(()=>{if(x!=="auto"||!Ze)return;const t=new AbortController;return B(null),F(L("computer"),{signal:t.signal}).then(o=>{if(t.signal.aborted)return;const l=o.surface;B({key:R,surface:l==="cloud"||l==="vm"||l==="local"||l==="browser"||l==="off"?l:void 0})}).catch(o=>{t.signal.aborted||(I(o instanceof Error?o:String(o)),N("error"))}),()=>t.abort()},[R,x,Ze,L,Qt]);const It=c==="vm-unavailable"&&G?.resumable===!0,$e=a.useRef(0),ke=a.useRef(null);a.useEffect(()=>(ke.current?.signal.aborted&&(ke.current=null,oe(null)),()=>{ke.current?.abort()}),[r.id,r.threadId,r.computer,M]);const rt=u.instances.find(t=>t.instanceId===r.modelSelection.instanceId),Be=a.useRef(!1),st=t=>{Be.current=!0,_e(t),dt(r.id,t)},en=a.useRef(null),at=`${s.id}:${s.threadId}:${x}:${s.cloudBackend??"box"}`;a.useEffect(()=>{const t=en.current;t===at&&(Be.current||!(r.computer==="browser"&&fe))||(t!==at&&(Be.current=!1),en.current=at,_e(r.computer==="browser"&&fe?"browser":t===null?$t(r.id):"computer"))},[at,r.id,r.computer,fe]),a.useEffect(()=>{!Fe||Fe.consumed||(Be.current=!0,Xn(Fe),_e("data"),dt(r.id,"data"),m({type:"dataResultFocusConsumed",requestId:Fe.requestId}))},[r.id,m,Fe]);const he=u.signInFocus?.botId===r.id?u.signInFocus:void 0,[Jn,Zn]=a.useState(),[Qn,er]=a.useState();Xr(r.id,t=>{st("browser"),er(t)}),a.useEffect(()=>{if(!he||he.consumed)return;const t=he.place==="browser"?"browser":"computer";Be.current=!0,_e(t),dt(r.id,t),t==="browser"&&Zn({url:he.url,site:he.site,nonce:he.requestId}),m({type:"signInFocusConsumed",requestId:he.requestId})},[r.id,m,he]),a.useEffect(()=>{let t=!0;const o=window.ogb?.desktopViewer;o?.currentState&&o.currentState().then(b=>{t&&Gt(b.open&&b.contextId===r.id)}).catch(()=>{});const l=o?.onState(b=>{b.contextId===r.id&&Gt(b.open)});return()=>{t=!1,l?.()}},[r.id]),pa(r.id,Nt,_e),a.useEffect(()=>{$e.current=0},[r.id,r.computer]);const tn=!!(rt?.snapshot.state==="available"&&rt.capabilities?.computerMcp),Et=yr(wr(rt)),nn=u.routines.filter(t=>t.botId===r.id).sort((t,o)=>Number(o.enabled)-Number(t.enabled)||(t.nextRunAt??1/0)-(o.nextRunAt??1/0)),tr=!!(u.config?.box.configured&&kr(u.instances,r.modelSelection.instanceId)?.snapshot.state==="available"),We=u.routineRuns.find(t=>t.botId===r.id&&["queued","running","waiting"].includes(t.status));a.useEffect(()=>{if(M!=="computer")return;let t=!0;if(ne(null),yt(null),N("checking"),Qe(null),ce(null),kt(null),et(null),jt(null),Yt(null),I(null),!(!Ze||!me)){if(r.computer===void 0){N("auto-unavailable");return}if(r.computer==="off"){N("off");return}if(r.computer==="browser"){N("browser");return}if(r.computer==="local"){Me||I(new O("computer.err.localEngine")),N(Le&&Ce&&Me?"local":"local-unavailable"),ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z});return}if(r.computer==="vm"){if(!tn){I(new O("computer.err.vmEngine")),N("vm-unavailable");return}let o;return F(L("local-computer")).then(l=>{if(!t)return;const b=l;if(ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),et(b),b.ready)$e.current=0,N("vm");else if(b.container==="running"&&b.imageMatches&&b.managed&&b.network==="loopback"&&b.security==="hardened"&&b.persistence==="durable"&&!b.desktopReady&&$e.current<15)$e.current+=1,I(null),N("checking"),o=window.setTimeout(()=>Pe(T=>T+1),2e3);else{const T=b.mode==="per-bot"&&b.container==="missing"&&b.image&&b.create_supported;I(T||b.resumable?null:new O("computer.err.vmOpenSettings",b.problem,"computer.err.vmNotReady")),N("vm-unavailable")}}).catch(l=>{t&&(I(l.message),N("vm-unavailable"))}),()=>{t=!1,o!==void 0&&window.clearTimeout(o)}}if(r.computer==="cloud"&&!Et){N("error");return}if(!(r.computer!=="cloud"&&!Le))return z==="vps"?(F(L("computer")).then(o=>{if(!t)return;const l=o;if(jt(l),ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),!l.configured){I(new O("computer.err.vpsAlias")),N("vps-unconfigured");return}if(l.ready){ae(l.container??null),N("ready");return}if(l.managed&&l.container!=="missing"&&!l.imageMatches){I(l.problem),N("vps-incompatible");return}if(X)return N("starting"),F(`/api/bots/${r.id}/computer/provision`,{method:"POST"}).then(b=>{t&&(ae(b.container??null),b.ready?(ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N("ready")):(I(b.problem??new O("computer.err.vpsNotReady")),N("error")))});ae(l.container??null),I(r.autoStartVps?new O("computer.err.vpsAuto",l.problem,"computer.err.vpsNoContainer"):new O("computer.err.vpsManual",l.problem,"computer.err.vpsNoContainer")),N(l.container==="stopped"?"vps-stopped":"vps-unconfigured")}).catch(o=>{t&&(I(o.message),N("error"))}),()=>{t=!1}):(F(L("computer")).then(o=>{if(!t)return;const l=Yr({computer:x==="cloud"?"cloud":void 0,configured:!!o.configured,boatState:typeof o.box?.state=="string"?o.box.state:null,canUseCloud:Et,autoLocal:!1,teamComputer:typeof o.teamComputer?.id=="string"&&typeof o.teamComputer?.name=="string",busy:s.busy});if(ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),!o.configured&&r.computer==="cloud"&&!o.teamComputer){N("unconfigured");return}if(l==="team-boat"){yt({id:o.teamComputer.id,name:o.teamComputer.name,botId:r.id,section:r.section?.trim()??""}),ae(typeof o.box?.state=="string"?o.box.state:o.configured?"missing":"unavailable"),I(typeof o.problem=="string"?o.problem:null),N("team-boat");return}if(l==="attach-ready-boat"||r.computer==="cloud"&&l==="show-ready-boat"){ae(typeof o.box?.state=="string"?o.box.state:null),N("ready");return}ae(typeof o.box?.state=="string"?o.box.state:null),N(l)}).catch(o=>{t&&(I(o.message),N("error"))}),()=>{t=!1})}},[r.id,r.threadId,r.computer,r.section,r.autoStartVps,r.vpsAlias,z,Qt,Le,Wt,te,Me,rt?.driverKind,tn,Et,u.config?.vps?.sshAlias,M,Ze,me,X,x,L]),a.useEffect(()=>{if(c!=="busy-boat")return;let t=!0;const o=()=>{if(!s.busy&&x==="cloud"){Pe(b=>b+1);return}F(L("computer"),{background:!0}).then(b=>{if(!t)return;const T=typeof b.box?.state=="string"?b.box.state:null;ae(T),cs(T)&&N("ready")}).catch(()=>{})},l=window.setInterval(o,5e3);return()=>{t=!1,window.clearInterval(l)}},[c,L,s.busy,x]);const H=u.computerControl[r.id]??{held:!1,helpReason:null},ot=a.useCallback(async(t,o)=>{const l=Rn.parse(await F(`/api/bots/${r.id}/computer/control`,{method:"POST",body:JSON.stringify({action:t,...o?{controlLeaseId:o}:{}})}));return m({type:"computerControl",botId:r.id,held:l.held===!0,helpReason:l.helpReason,help:l.help}),l},[r.id,m]),ee=U?c==="vm"&&G?.viewer_url&&G.target_key?Sr({key:G.target_key}):W&&z==="vps"?`vps/${r.id}`:null:null,le=Js({botId:r.id,session:`${p}:${M}`,held:H.held,request:ot,viewerClose:ee?.startsWith("vps/")?L("computer/viewer-close"):null}),pe=le.here&&!!ee;a.useEffect(()=>{ee&&_n()},[ee]);const ze=Bt(),Te=a.useRef(0),Rt=a.useRef(r.busy);a.useEffect(()=>{Rt.current=r.busy},[r.busy]),a.useEffect(()=>{if(Te.current=0,!!W)return Gr({screens:!0,onFrame:t=>{t.kind!=="screen"||t.botId!==r.id||t.threadId!==r.threadId||(Te.current=Date.now(),Qe({png:t.png,mime:t.mime??"image/png"}),ce(null),Ee(!1))}})},[W,r.id,r.threadId]),a.useEffect(()=>{if(M!=="computer"||!W||tt||pe||!ze||E||ie)return;let t=!1,o=-1/0,l=null,b=null;const T=new AbortController;ce(null),Ee(!0);const se=async()=>{if(t||T.signal.aborted||Date.now()-o<(l??(Rt.current?4e3:3e4))||Rt.current&&Date.now()-Te.current<1e4)return;t=!0,l=null;const q=Date.now();try{const{png:J,format:Ae}=await F(L("computer/screenshot"),{method:"POST",signal:AbortSignal.any([T.signal,AbortSignal.timeout(9e4)])});if(!T.signal.aborted&&Te.current<=q){if(typeof J!="string"||!J.trim())throw new O("computer.err.emptyFrame");Qe({png:J,mime:Ae==="jpeg"?"image/jpeg":"image/png"}),ce(null),Ee(!1),b=null}}catch(J){if(!T.signal.aborted&&Te.current<=q)if(J instanceof us&&jr(J)){l=1e3,b??=Date.now();const Ae=Date.now()-b>=1e4;ce(Ae?J:null),Ee(!Ae)}else b=null,Ee(!1),ce(J instanceof Error&&J.name==="TimeoutError"?new O("computer.err.frameTimeout"):J instanceof Error?J:new O("computer.err.screenUnavailable"))}finally{t=!1,o=Date.now()}};se();const ue=setInterval(se,1e3);return()=>{T.abort(),clearInterval(ue)}},[M,W,L,z,tt,pe,ze,E,ie,qt]),a.useEffect(()=>{if(M!=="computer"||c!=="vm"||!U||tt||pe||!ze)return;const t=new AbortController;let o=!1,l=-1/0,b=null,T=!0;const se=async()=>{if(!(o||t.signal.aborted)&&!(Date.now()-l<(b??(r.busy?3e3:3e4)))){o=!0,b=null;try{const{image:q}=await F(L("local-computer/screenshot"),{method:"POST",signal:t.signal});!t.signal.aborted&&typeof q=="string"&&(kt(q),ce(null))}catch(q){t.signal.aborted||(b=5e3,T?I(q instanceof Error?q.message:String(q)):ce(q instanceof Error?q:new O("computer.err.screenUnavailable")))}finally{o=!1,T=!1,l=Date.now()}}};se();const ue=window.setInterval(()=>{se()},r.busy?3e3:3e4);return()=>{t.abort(),window.clearInterval(ue)}},[M,c,U,L,tt,pe,ze,r.busy,I,ce,kt]);const[rn,Pt]=a.useState(0);a.useEffect(()=>{if(M!=="computer"||c!=="local"||!U||!window.ogb||te||!ze)return;let t=!0;Pt(0);const o=async()=>{try{const b=await window.ogb.screenFrame();t&&b?Yt(b):t&&Pt(T=>T+1)}catch{t&&Pt(b=>b+1)}};o();const l=setInterval(o,r.busy?3e3:3e4);return()=>{t=!1,clearInterval(l)}},[M,c,U,te,ze,r.busy,r.id,r.threadId]);const ge=U?c==="vm"?Kn:c==="local"&&!te?Un:W||r.computer==="cloud"&&c==="starting"?wt&&`data:${wt.mime};base64,${wt.png}`:null:null,nr=!!(ge&&(ee||W)),de=H.help??null,rr=de?u.bots.find(t=>t.id===de.botId)?.name??r.name:r.name;a.useEffect(()=>{let t=!0;return F(`/api/bots/${r.id}/computer/control`).then(o=>{if(!t)return;const l=Rn.parse(o);m({type:"computerControl",botId:r.id,held:l.held===!0,helpReason:l.helpReason,help:l.help})}).catch(()=>{}),()=>{t=!1}},[r.id]);const sn=a.useCallback(async()=>!0,[]),an=a.useCallback(async t=>Jr({action:t,syncNativeBrowser:M!=="browser",requestControl:ot,setNativeBrowserControl:sn}),[M,ot,sn]),sr=a.useCallback(async t=>{Re(!0),I(null);try{return await an(t),!0}catch(o){return I(o instanceof Error?o.message:String(o)),!1}finally{Re(!1)}},[an]),it=!!(de&&de.place!=="browser"&&de.place!=="local"&&(W||c==="vm"||we)),on=t=>de&&e.jsx(fs,{help:de,askerName:rr,takeControl:t&&{onClick:t,disabled:ie||E==="join",pending:E==="join"},onError:I}),ar=async()=>{const t=new AbortController;V.current=t;const o=()=>!t.signal.aborted&&C.current===p;oe("join"),Re(!0),I(null);try{await Gs({botId:r.id,title:n("computer.viewerTitle",{name:r.name}),held:H.held,request:ot,join:l=>F(L("computer/join"),{method:"POST",signal:AbortSignal.any([t.signal,l])}),current:o})}catch(l){o()&&I(l instanceof Error?l:String(l))}finally{V.current===t&&(V.current=null,oe(null),Re(!1))}},zt=E==="join"||c==="vm"&&!ee,ve=async(t=!1)=>{if(!ee)return W?ar():void 0;if(le.here)return le.setExpanded(t||le.expanded);Re(!0),I(null);try{await le.take(t)}catch(o){I(o instanceof Error?o:String(o))}finally{Re(!1)}},ln=async()=>{I(null),window.ogb?.desktopViewer?.close(r.id),await le.handBack().catch(t=>I(t instanceof Error?t:String(t)))},Tt=t=>{oe(t),I(null),F(`/api/bots/${r.id}/computer/${t}`,{method:"POST"}).then(o=>{t==="provision"&&(ae(o.container??null),o.ready?(r.computer==="cloud"&&ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N("ready")):(I(o.problem??new O("computer.err.vpsNotReady")),N("error"))),t==="sleep"&&(ne(null),ae(z==="vps"?"stopped":"archived"),N(z==="vps"?"vps-stopped":X?"cloud-asleep":"show-sleeping-boat"))}).catch(o=>{I(o.message)}).finally(()=>oe(null))},or=()=>{oe("provision"),I(null),N("starting"),F(`/api/bots/${r.id}/computer/provision`,{method:"POST"}).then(t=>{ae(t.state??null),ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N("ready")}).catch(t=>{if(Nr(t)){N("busy-boat");return}I(t.message),N("error")}).finally(()=>oe(null))},At=async t=>{if((t==="vm-recreate"||t==="vm-delete")&&!window.confirm(t==="vm-delete"?n("computer.confirm.deleteVm",{name:r.name}):n("computer.confirm.replaceVm",{name:r.name}))||ke.current)return;const o=new AbortController;ke.current=o,oe(t),I(null),$e.current=0;try{if((t==="vm-recreate"||t==="vm-delete")&&await F(`/api/bots/${r.id}/local-computer/remove`,{method:"POST",body:"{}",signal:o.signal}),t!=="vm-delete"){const l=t==="vm-start"&&G?.mode!=="per-bot"?"/api/local-computer/start":`/api/bots/${r.id}/local-computer/${t==="vm-start"?"start":"run"}`,b=await F(l,{method:"POST",body:"{}",signal:o.signal}),T=await ws(b,()=>F(L("local-computer"),{signal:o.signal}),o.signal);if(!T.ready)throw new Error(T.problem??n("computer.err.vmNotReady"));et(T),N("vm")}else et(l=>l&&{...l,container:"missing",ready:!1}),N("vm-unavailable")}catch(l){if(o.signal.aborted)return;I(l instanceof Error?l.message:String(l)),N("vm-unavailable")}finally{ke.current===o&&!o.signal.aborted&&(ke.current=null,oe(null),Pe(l=>l+1))}},ir=async()=>{if(window.confirm(n("computer.confirm.replaceVps",{name:r.name}))){oe("vps-replace"),I(null);try{await F(`/api/bots/${r.id}/computer/remove`,{method:"POST",body:"{}"});const t=await F(`/api/bots/${r.id}/computer/provision`,{method:"POST",body:"{}"});jt(t),ae(t.container??null),t.ready&&r.computer==="cloud"&&ne({botId:r.id,threadId:r.threadId,computer:r.computer,cloudBackend:z}),N(t.ready?"ready":"error"),t.ready||I(t.problem??new O("computer.err.vpsReplaceNotReady"))}catch(t){I(t instanceof Error?t.message:String(t)),N("error")}finally{oe(null),Pe(t=>t+1)}}},cn=()=>{window.sessionStorage.setItem("openmausbot.settings.section","computer"),m({type:"toggleAppSettings",open:!0})},dn=()=>m(hs("vps")),un=U&&(c==="vps-unconfigured"||c==="vps-stopped"||c==="vps-incompatible"),pn=U&&X&&(c==="vps-stopped"||c==="vps-unconfigured"&&!!Xt?.configured),mn=U&&X&&c==="vps-incompatible"&&!!Xt?.managed,Dt=Zt||u.config?.browserEngine?.installable===!0,[xn,bn]=a.useState(!1),fn=async()=>{if(!xn){bn(!0),I(null);try{if(!yn(u.config)){const t=await F("/api/config",{method:"PATCH",body:JSON.stringify({features:{browser:!0}})});m({type:"configStatus",config:t})}s.browser===!1&&m({type:"updateBot",botId:s.id,patch:{browser:!0}})}catch(t){I(t instanceof Error?t.message:n("settings.experimental.error"))}finally{bn(!1)}}},lr=()=>{I(null),m({type:"updateBot",botId:s.id,patch:{browser:!1}})},hn=e.jsxs("div",{"data-testid":"browser-switch-row",className:"mb-3 flex items-center gap-3 rounded-xl bg-card px-3 py-2.5",children:[e.jsx(Ft,{size:15,className:"shrink-0 text-ink-secondary","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[13px] font-medium text-ink",children:n("computer.browserSwitch.title",{name:r.name})}),!Dt&&e.jsx("div",{className:"text-[12px] text-ink-secondary",children:wn(u.config)})]}),e.jsx(zn,{checked:fe,disabled:xn||!fe&&!Dt,"aria-label":n("computer.browserSwitch.title",{name:r.name}),onClick:()=>fe?lr():void fn()})]}),cr=u.config?.managedPolicy,Lt=Zr(Ve,s.busy===!0),dr=!U||x!=="cloud"||z!=="box"?void 0:c==="starting"?"starting":c==="busy-boat"?Lt.spinner?"starting":Lt.line==="computer.cloud.asleep"?"asleep":"none":c==="ready"?"on":Ve==="archived"||Ve==="stopped"?"asleep":void 0,Ke=(t,o)=>ps({...ms({bot:r,place:t,seat:Fn,config:u.config,instances:u.instances,local:{ready:Wt,reason:Ut??n("computer.unavailableLocal")},...t==="cloud"?{computer:dr}:{},...t==="auto"&&we?{teamComputer:we.name}:{}}),...o?{refusal:o}:{}}),Mt=r.computer==="cloud"&&z==="box"&&c==="error"&&nt&&!(nt instanceof O)?Qr({message:be??"",status:Number(nt.status??0)||void 0},u.config?.box?.included===!0):void 0,re=Ke("cloud",Mt),je=Ke("auto"),ur=es(Y),Ue=Rs(u.config,Y).map(([t,o,l,b])=>{const T=Ps(t,s.computer,Y),se=zs(t,s.cloudBackend,cr),ue=t===null?je:t==="cloud"?re:Ke(t),q=!!se||kn(ue),J=!se&&ts(ue),Ae=se??(J?ue.line:t==="browser"?n("computer.browserOnlyTitle"):void 0);return{mode:t,labelKey:o,descriptionKey:l,Icon:b,simpleLabel:ns(t??void 0,Y.host.platform),selected:T,managedBy:se,disabled:q,unavailableTitle:Ae,view:ue,issue:J}}),lt=Ue.find(({selected:t})=>t)?.view??je,pr=t=>{if(t==="start"||t==="wake")return or();if(t==="try-again")return Pe(o=>o+1);if(t==="turn-on-browser")return void fn();if(t==="open-vm-settings")return cn();vs(t,{botId:s.id,threadId:s.threadId},m)},mr=t=>!!t&&t!=="watch"&&t!=="open-computer-panel"&&(t!=="start"&&t!=="wake"||X&&!s.busy),He=(t,o="mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover")=>t.action&&mr(t.action.id)?e.jsx("button",{type:"button","data-testid":"place-action",onClick:()=>pr(t.action.id),className:o,children:t.action.label}):null,gn=t=>{t===null&&s.computer===void 0||t===s.computer||(t==="local"&&gs(s)==="auto"?gt(r.id):Ie(t==="browser"?{computer:t,browser:!0}:{computer:t}))},xr=()=>{s.computer==="local"&&ur&&Ie({computer:null}),m({type:"updateTask",botId:s.id,threadId:s.threadId,patch:{surface:null}})},Ot=w&&s.computer!=="off"&&w!==s.computer?w:void 0,br=t=>K("flex shrink-0 items-center gap-1.5 rounded-full px-3 py-1 text-[13px] transition-colors @max-[28rem]/paneltabs:[&>svg]:hidden @max-[22rem]/paneltabs:px-2",t?"bg-raised text-ink shadow-sm":"text-ink-secondary hover:text-ink"),vn=t=>{t==="browser"&&I(null),st(t)},fr={checking:n("computer.phase.checking"),starting:z==="vps"?n("computer.phase.starting"):re.line,"busy-boat":re.line,unconfigured:re.line,"auto-unavailable":je.line,"team-boat":je.line,"show-ready-boat":n("computer.phase.showReadyBoat"),"show-sleeping-boat":n("computer.phase.showSleepingBoat"),"show-pending-boat":n("computer.phase.showPendingBoat"),"cloud-new":re.line,"cloud-asleep":re.line,"vps-unconfigured":n("computer.phase.vpsUnconfigured"),"vps-incompatible":n("computer.phase.vpsIncompatible"),"vps-stopped":n("computer.phase.vpsStopped"),"local-unavailable":Ut??n("computer.phase.localUnavailable"),"vm-unavailable":n("computer.phase.vmUnavailable"),browser:Ke("browser").line,off:Ke("off").line,error:r.computer==="cloud"&&(Mt||kn(re))?re.line:n("computer.phase.error")};return e.jsxs(e.Fragment,{children:[e.jsxs("aside",{className:K("animate-panel-in relative flex h-full shrink-0 flex-col border-l border-hairline/40 bg-panel","max-md:absolute max-md:inset-0 max-md:z-40 max-md:w-full!"),ref:Ct,"data-computer-panel":!0,style:{width:S},children:[e.jsx("div",{ref:f,role:"separator","aria-orientation":"vertical","aria-label":n("computer.resizeAria"),"aria-valuemin":bt,"aria-valuemax":ft,"aria-valuenow":v??void 0,tabIndex:0,onKeyDown:k,onPointerDown:j,onPointerMove:y,onPointerUp:P,onPointerCancel:P,className:"absolute inset-y-0 left-0 z-10 w-1.5 cursor-col-resize hover:bg-accent/40 focus-visible:bg-accent/60 max-md:hidden"}),e.jsx("div",{...d,className:"@container/paneltabs ml-1.5 py-3 pl-2.5 pr-4",children:e.jsxs("div",{className:"relative flex min-h-7 items-center justify-center",children:[Q&&e.jsx("button",{onClick:()=>{jn(Ct.current,r.id),m({type:"toggleComputer",open:!1}),m({type:"toggleSettings",open:!0,section:"access"})},className:"absolute left-0 top-1/2 -translate-y-1/2 rounded-md p-1 text-ink-secondary hover:bg-control hover:text-ink",title:n("computer.botSettings"),children:e.jsx(rs,{size:18})}),e.jsx("div",{className:"mx-9 flex min-w-0 touch-pan-x gap-0.5 overflow-x-auto whitespace-nowrap rounded-full bg-inset p-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden","data-tour":"computer-tabs","data-testid":"computer-tabs",role:"tablist","aria-label":n("computer.tabsAria"),onWheel:da,onKeyDown:t=>ua(t,Jt,vn),children:Jt.map(t=>{const{Icon:o,label:l,tour:b}=la[t],T=_?t==="computer"&&bs(x)?"computer-tab-live":t==="browser"&&x==="browser"?"browser-tab-live":void 0:void 0;return e.jsxs("button",{type:"button","data-tour":b,...ca(t,t===M),title:n(l),onClick:()=>vn(t),className:br(t===M),children:[e.jsx(o,{size:13})," ",n(l),T&&e.jsx("span",{className:"size-1.5 animate-pulse rounded-full bg-success",role:"img","aria-label":n("place.live"),"data-testid":T})]},t)})}),e.jsx("button",{"data-computer-panel-close":!0,onClick:()=>{jn(Ct.current,r.id),m({type:"toggleComputer",open:!1})},className:"absolute right-0 top-1/2 -translate-y-1/2 rounded-md p-1 text-ink-secondary hover:bg-control hover:text-ink","aria-label":n("computer.close"),title:n("computer.close"),children:e.jsx(gr,{size:18})})]})}),M==="routines"?e.jsx("div",{...Se("routines"),className:K("min-h-0 flex-1 overflow-y-auto px-4 pb-4",Ne),children:e.jsx(ks,{bot:r,routines:nn,runs:u.routineRuns,defaultRunOn:tr?"cloud":"maus"},r.id)}):M==="browser"&&fe?e.jsxs("div",{...Se("browser"),className:K("flex min-h-0 flex-1 flex-col px-4 pb-4",Ne),children:[hn,de?.place==="browser"&&e.jsx("div",{className:"-mt-1 mb-3",children:on()}),e.jsx(Es,{bot:r,signIn:Jn,page:Qn}),be&&e.jsx("div",{role:"alert",className:"mt-2 rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:be})]}):M==="browser"?e.jsxs("div",{...Se("browser"),className:K("flex-1 overflow-y-auto px-5 pb-5",Ne),"data-testid":"browser-off",children:[hn,e.jsxs("div",{className:"mt-2 flex flex-col items-center gap-3 rounded-xl bg-card px-6 py-8 text-center",children:[e.jsx(Ft,{size:22,className:"text-ink-secondary","aria-hidden":"true"}),e.jsx("div",{className:"text-[14px] font-medium text-ink",children:n("computer.browserOff.title")}),e.jsx("p",{className:"text-[12px] leading-5 text-ink-secondary",children:Dt?n("computer.browserOff.body",{name:r.name}):wn(u.config)}),be&&e.jsx("div",{role:"alert",className:"w-full rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:be})]})]}):M==="data"?e.jsx("div",{...Se("data"),className:K("flex min-h-0 flex-1 flex-col overflow-hidden",Ne),children:e.jsx(a.Suspense,{fallback:e.jsx("div",{className:"flex flex-1 items-center justify-center text-[13px] text-ink-secondary",role:"status",children:n("data.loading")}),children:e.jsx(fa,{bot:r,requestedCard:qn},r.id)})}):M==="files"?e.jsx("div",{...Se("files"),className:K("flex min-h-0 flex-1 flex-col",Ne),children:e.jsx(js,{bot:r})}):M==="android"&&St?e.jsx("div",{...Se("android"),className:K("flex-1 overflow-y-auto px-4 pt-2",Ne),children:e.jsx(Hs,{status:Nt})}):e.jsxs("div",{...Se("computer"),className:K("flex-1 overflow-y-auto px-5 pb-5",Ne),children:[e.jsxs("div",{className:"mb-1.5 mt-2 flex items-center justify-between text-[13px] text-ink-secondary",children:[e.jsx("span",{children:n("computer.screenOf",{name:r.name})}),we&&e.jsx("span",{className:"text-[11px]",children:je.short}),c==="local"&&e.jsx("span",{className:"text-[11px]",children:n("computer.badge.local")}),pe&&e.jsxs("span",{className:"flex items-center gap-1.5 text-[11px] font-medium text-ink",children:[e.jsx("span",{className:"size-1.5 rounded-full bg-success"}),n("computer.inControl")]}),c==="vm"&&!pe&&e.jsx("span",{className:"text-[11px]",children:n("vm.dest.vm")}),(c==="show-ready-boat"||c==="show-sleeping-boat"||c==="show-pending-boat")&&e.jsx("span",{className:"text-[11px]",children:n("computer.badge.autoBoat")}),U&&r.computer==="cloud"&&z==="vps"&&(c==="ready"||c==="starting")&&!pe&&e.jsx("span",{className:"text-[11px]",children:n("computer.badge.vps")})]}),e.jsx("div",{className:K("relative flex aspect-[16/10] w-full items-center justify-center overflow-hidden rounded-xl bg-card",pe&&"ring-2 ring-accent"),children:pe&&ee?e.jsx(a.Suspense,{fallback:e.jsx(A,{size:18,className:"animate-spin text-ink-secondary"}),children:e.jsx(ha,{target:ee,threadId:r.threadId,name:r.name,poster:ge,expanded:le.expanded,onExpandedChange:le.setExpanded,onHandBack:()=>{ln()},handingBack:le.handingBack,onUnreachable:()=>{le.leave(),I(new O("computer.err.openDesktop"))}})}):W||r.computer==="cloud"&&c==="starting"?e.jsx(Bs,{src:ge,name:r.name,error:Nn($n),refreshing:Bn,retry:qt,starting:c==="starting",opening:E==="join",disabled:ie,onOpen:()=>{ve()},onRetry:t=>{Te.current=0,t&&Qe(null),ce(null),Ee(!0),Wn(o=>o+1)}},`${r.id}:${r.threadId}:${r.computer}:${z}`):ge&&nr?e.jsxs("button",{type:"button",onClick:()=>{ve()},disabled:ie||E==="join",className:"group relative flex h-full w-full cursor-pointer items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-wait","aria-label":n("computer.openLiveDesktopAria",{name:r.name}),title:n("computer.openLiveDesktop"),children:[e.jsx("img",{src:ge,alt:n("computer.screenOf",{name:r.name}),className:"h-full w-full object-contain transition group-hover:brightness-75 group-focus-visible:brightness-75"}),e.jsxs("span",{className:"pointer-events-none absolute right-2 top-2 flex items-center gap-1 rounded-md bg-black/70 px-2 py-1 text-[11px] font-medium text-white opacity-80 shadow-sm transition group-hover:opacity-100 group-focus-visible:opacity-100",children:[E==="join"?e.jsx(A,{size:12,className:"animate-spin"}):e.jsx(Ge,{size:12}),n("computer.open")]})]}):ge?e.jsx("img",{src:ge,alt:n("computer.screenOf",{name:r.name}),className:"h-full w-full object-contain",title:c==="vm"?n("computer.watchOnly"):void 0}):e.jsxs("div",{className:"flex flex-col items-center gap-2 px-6 text-center text-ink-secondary",children:[c==="checking"||c==="starting"||c==="busy-boat"&&Lt.spinner||c==="vm"||c==="local"&&!te?e.jsx(A,{size:18,className:"animate-spin"}):c==="off"?e.jsx(mt,{size:22}):e.jsx(De,{size:22}),e.jsx("span",{className:"text-[12px]",children:we?je.line:W?n("computer.waitingFrame"):c==="ready"?n("computer.autoChooseCloudOpen"):c==="vm"?n("computer.capturingVm"):c==="local"?te?n("computer.linuxReady"):rn>=3?n("computer.needsScreenPerm"):n("computer.capturingLocal"):It?n(E==="vm-start"?"vm.setup.starting":"computer.phase.vmStopped"):fr[c]}),we&&He(je),r.computer==="cloud"&&(c==="unconfigured"||c==="error")&&re.action?.id!=="add-boat-key"&&He(re),c==="local"&&!te&&rn>=3&&e.jsx("button",{onClick:()=>window.ogb?.permOpenSettings?.("screen"),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openSettings")}),c==="browser"&&fe&&e.jsx("button",{onClick:()=>st("browser"),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openBrowserTab")}),(c==="show-ready-boat"||c==="show-sleeping-boat"||c==="show-pending-boat")&&e.jsx("button",{type:"button",onClick:()=>Ie({computer:"cloud"}),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:c==="show-sleeping-boat"?n("computer.chooseCloudWake"):c==="show-ready-boat"?n("computer.chooseCloudOpen"):n("computer.chooseCloudManage")}),E===null&&(c==="cloud-new"||c==="cloud-asleep")&&He(re),It&&E!=="vm-start"&&e.jsx("p",{className:"text-[12px]",children:n(G?.stop_reason==="idle"?"vm.stopped.idle":"vm.stopped.detail")}),c==="vm-unavailable"&&(Z&&It&&G.mode!=="pool"?e.jsxs("button",{onClick:()=>{At("vm-start")},disabled:E!==null,"aria-busy":E==="vm-start",className:"mt-1 flex items-center gap-1.5 rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[E==="vm-start"&&e.jsx(A,{size:13,className:"animate-spin"}),n(E==="vm-start"?"vm.setup.starting":"vm.setup.start")]}):Z&&G?.mode==="per-bot"&&G.image&&G.create_supported?e.jsxs("button",{onClick:()=>{At(G.container==="missing"?"vm-create":"vm-recreate")},disabled:E!==null,className:"mt-1 rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[(E==="vm-create"||E==="vm-recreate")&&e.jsx(A,{size:13,className:"mr-1.5 inline animate-spin"}),G.container==="missing"?n("computer.createVm",{name:r.name}):n("computer.replaceVm",{name:r.name})]}):e.jsx("button",{onClick:cn,className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openVmSetup")})),!Q&&un&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-[12px]",children:n("computer.simple.needsSetup",{name:r.name})}),!pn&&!mn&&e.jsx("button",{type:"button",onClick:()=>vr(!0),className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.simple.showAdvanced")})]}),Q&&U&&(c==="vps-unconfigured"||c==="vps-stopped")&&e.jsx("button",{onClick:dn,className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover",children:n("computer.openVpsSettings")}),pn&&e.jsxs("button",{onClick:()=>Tt("provision"),disabled:E==="provision",className:"mt-1 rounded-lg bg-control px-3 py-1.5 text-[12px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[E==="provision"&&e.jsx(A,{size:13,className:"mr-1.5 inline animate-spin"}),c==="vps-stopped"?n("computer.startVps"):n("computer.prepareVps")]}),mn&&e.jsxs("button",{onClick:()=>{ir()},disabled:E==="vps-replace",className:"mt-1 rounded-lg bg-accent px-3 py-1.5 text-[12px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[E==="vps-replace"&&e.jsx(A,{size:13,className:"mr-1.5 inline animate-spin"}),n("computer.replaceVps")]})]})}),be&&!Mt&&e.jsx("div",{className:"mt-2 rounded-lg border border-danger/30 bg-danger/10 px-3 py-2 text-[12px] text-danger",children:be}),(Yn||c==="unconfigured"&&re.action?.id==="add-boat-key")&&e.jsx("div",{"data-boat-key":!0,className:"mt-3 rounded-xl bg-card py-1.5",children:e.jsx(ss,{id:"box",via:"computer_panel",onSaved:t=>{Gn(!0),t&&Pe(o=>o+1)}})}),Q&&c==="vps-unconfigured"&&e.jsxs("div",{className:"mt-3 rounded-xl bg-card p-4",children:[e.jsx("div",{className:"mb-3 text-[13px] text-ink-secondary",children:n("computer.vpsAliasHint")}),e.jsx("button",{onClick:dn,className:"rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover",children:n("computer.openVpsSettings")})]}),Q&&c==="vm"&&G?.mode==="per-bot"&&window.ogb?.desktopWorkspace&&i&&e.jsxs("button",{type:"button",onClick:()=>i(r.id),disabled:E!==null,className:"mt-3 flex w-full items-center justify-center gap-2 rounded-lg border border-accent/30 bg-accent/10 py-2 text-[13px] font-medium text-ink hover:bg-accent/15 disabled:opacity-50",title:n("computer.twoDesktopsTitle"),children:[e.jsx(Ls,{size:14}),n("computer.twoDesktops")]}),de&&de.place!=="browser"&&on(it&&!H.held?()=>c==="vm"||W?void ve():void sr("take"):void 0),(W||c==="vm"||we)&&H.held&&e.jsxs("div",{className:"mt-3 rounded-xl border border-accent/25 bg-accent/10 p-4",children:[e.jsxs("div",{className:"text-[13px] leading-relaxed text-ink",children:[n("computer.youHaveWheel"),W&&!ee&&` ${n(Q?"computer.useOpenDesktop":"computer.simple.useFullScreen")}`]}),e.jsxs("button",{onClick:()=>{ln()},disabled:ie||le.handingBack,className:"mt-2 flex w-full items-center justify-center gap-2 rounded-lg bg-accent py-2 text-[13px] font-medium text-white hover:brightness-110 disabled:opacity-50",children:[e.jsx(Xe,{size:14}),n("computer.handBack")]})]}),Q&&c==="vm"&&(H.held||!it)&&e.jsxs("button",{onClick:()=>{ve(H.held)},disabled:ie||!ee,className:"mt-3 flex w-full items-center justify-center gap-2 rounded-lg bg-control py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:H.held?n("computer.openLiveDesktop"):n("computer.takeControlTitle"),children:[ie?e.jsx(A,{size:14,className:"animate-spin"}):H.held?e.jsx(Ge,{size:14}):e.jsx(Xe,{size:14}),n(H.held?"computer.fullScreen":"computer.takeControl")]}),Q&&Z&&c==="vm"&&G?.mode==="per-bot"&&e.jsxs("button",{onClick:()=>{At("vm-delete")},disabled:E!==null||s.busy,className:"mt-2 flex w-full items-center justify-center gap-2 rounded-lg border border-danger/30 py-2 text-[13px] text-danger hover:bg-danger/10 disabled:opacity-50",title:s.busy?n("computer.deleteVmBlocked"):n("computer.deleteVmTitle",{name:r.name}),children:[E==="vm-delete"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(mt,{size:14}),n("computer.deleteVm")]}),!Q&&(W||c==="vm")&&e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2","data-testid":"computer-actions",children:[!H.held&&!it&&e.jsxs("button",{type:"button",onClick:()=>{ve()},disabled:ie||zt,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-accent px-3 py-2 text-[13px] font-medium text-accent-ink hover:brightness-110 disabled:opacity-50",title:n("computer.takeControlTitle"),children:[E==="join"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Xe,{size:14}),n("computer.takeControl")]}),e.jsx(Zs,{held:H.held,frame:ge,name:r.name,onTakeControl:t=>{ve(t)},disabled:H.held&&zt,takeDisabled:ie||zt,error:be}),W&&X&&(z==="vps"||Ve!=="archived")&&e.jsxs("button",{type:"button",onClick:()=>Tt("sleep"),disabled:E==="sleep"||s.busy,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n("computer.sleepTitle"),children:[E==="sleep"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Cn,{size:14}),n("vm.cloud.sleep")]})]}),Q&&W&&e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[!H.held&&!it&&e.jsxs("button",{onClick:()=>{ve()},disabled:ie||E==="join",className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n("computer.takeControlTitle"),children:[E==="join"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Xe,{size:14}),n("computer.takeControl")]}),H.held&&e.jsxs("button",{onClick:()=>{ve(!0)},disabled:E==="join",className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",children:[E==="join"?e.jsx(A,{size:14,className:"animate-spin"}):ee?e.jsx(Ge,{size:14}):e.jsx(De,{size:14}),n(ee?"computer.fullScreen":"computer.openLiveDesktop")]}),X&&(z==="vps"||Ve!=="archived")&&e.jsxs("button",{onClick:()=>Tt("sleep"),disabled:E==="sleep"||s.busy,className:"flex flex-auto items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-control px-3 py-2 text-[13px] text-ink hover:bg-raised-hover disabled:opacity-50",title:n("computer.sleepTitle"),children:[E==="sleep"?e.jsx(A,{size:14,className:"animate-spin"}):e.jsx(Cn,{size:14}),n("vm.cloud.sleep")]})]}),c!=="team-boat"&&(r.computer!==void 0||U)&&e.jsxs(e.Fragment,{children:[e.jsx(na,{}),e.jsx(oa,{}),e.jsx(ys,{}),e.jsx(ia,{})]}),Q?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mt-4 rounded-xl bg-card p-4",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("computer.worksOn")}),e.jsx("p",{className:"mt-1 text-[12px] leading-5 text-ink-secondary",children:n(u.config?.cloudHome?"computer.worksOnHintCloudHome":"computer.worksOnHint")}),e.jsx(Ts,{options:Ue,onSelect:gn}),w&&e.jsx("p",{className:"mt-2 text-[12px] leading-5 text-ink-secondary","data-testid":"place-pinned-note",children:n("place.pinnedNote",{place:n(Vt(w))})}),e.jsxs("div",{className:"mt-3 border-t border-hairline/40 pt-3 text-[12px] leading-5 text-ink-secondary","aria-live":"polite","data-testid":"place-line",children:[lt.line,He(lt,"mt-1 block font-medium text-accent hover:underline")]}),s.computer==="cloud"&&e.jsx(Ln,{compact:!0,value:z,onChange:t=>Ie({cloudBackend:t})})]}),e.jsxs("button",{type:"button",onClick:()=>st("routines"),className:"mt-4 flex w-full items-start gap-3 rounded-xl bg-card p-4 text-left hover:bg-raised",children:[e.jsx(Tn,{size:17,className:"mt-0.5 shrink-0 text-accent"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsxs("span",{className:"block text-[14px] font-medium text-ink",children:[n("computer.tab.routines")," ",e.jsx("span",{className:"ml-1 text-[11px] text-ink-secondary",children:nn.length})]}),e.jsx("span",{className:K("mt-1 block truncate text-[12px]",We?os(We):"text-ink-secondary"),children:We?`${We.routineName} · ${as(We)}`:n("computer.routines.openTitle")})]}),e.jsx(As,{size:14,className:"shrink-0 text-ink-secondary rtl:-scale-x-100","aria-hidden":"true"})]})]}):e.jsxs("div",{className:"mt-4 rounded-xl bg-card p-4","data-testid":"where-works",children:[e.jsx("div",{className:"text-[15px] font-medium text-ink",children:n("computer.simple.whereWorks",{name:r.name})}),e.jsx("div",{role:"group","aria-label":n("computer.destinationAria"),className:"mt-3 grid grid-cols-3 gap-2",children:Ue.map(({mode:t,Icon:o,selected:l,disabled:b,unavailableTitle:T,simpleLabel:se,issue:ue,view:q})=>e.jsxs("button",{type:"button",disabled:b,title:T,"aria-pressed":l,onClick:()=>gn(t),className:K("flex min-w-0 flex-col items-center gap-1.5 rounded-lg border px-1.5 py-2.5 text-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-card",l?"border-accent/60 bg-accent/10 text-ink":"border-hairline/50 bg-panel/30 text-ink-secondary",b?"cursor-not-allowed opacity-50":"hover:border-accent/40 hover:bg-control/60"),children:[e.jsx(o,{size:16,className:K("shrink-0",l?"text-accent":"text-ink-secondary"),"aria-hidden":"true"}),e.jsx("span",{className:"w-full truncate text-[12px] font-medium leading-4",children:se}),ue&&e.jsx("span",{className:"w-full truncate text-[11px] leading-3 text-ink-secondary",children:q.short})]},t??"auto"))}),e.jsxs("div",{className:"mt-3 text-[12px] leading-5 text-ink-secondary","data-testid":"place-line",children:[lt.line,He(lt,"mt-1 block font-medium text-accent hover:underline")]}),Ot&&e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[e.jsx("p",{className:"min-w-0 flex-1 text-[12px] leading-5 text-ink-secondary","data-testid":"place-pinned-note",children:n("place.pinnedNoteSimple",{place:Ue.find(({mode:t})=>t===Ot)?.simpleLabel??n(Vt(Ot))})}),e.jsx("button",{type:"button",disabled:!!r.busy,title:r.busy?n("place.busy"):void 0,onClick:xr,className:"shrink-0 rounded-md px-2 py-0.5 text-[12px] font-medium leading-5 text-accent-text transition-colors hover:bg-control focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent disabled:cursor-not-allowed disabled:opacity-45 disabled:hover:bg-transparent","data-testid":"place-unpin",children:n("place.unpinSimple",{place:Ue.find(({selected:t})=>t)?.simpleLabel??n(Vt(s.computer??"auto"))})})]}),un&&e.jsx(Ws,{bot:r,backend:z,onBackend:t=>Ie({cloudBackend:t}),onAutoStart:()=>m({type:"updateBot",botId:r.id,patch:{autoStartVps:!r.autoStartVps}})})]})]})]}),e.jsx(is,{open:Kt!==null,onCancel:()=>gt(null),onConfirm:()=>{const t=Kt;gt(null),t&&(t===r.id&&(ne(null),N("checking")),m({type:"updateBot",botId:t,patch:{computer:"local",acknowledgeLocalAuto:!0}}))}})]})}export{Ma as ComputerPanel};
@@ -1,4 +1,4 @@
1
- import{c as Sl,j as F,t as J,r as C,R as E,S as iy,f as su,a as nc,aj as Tp}from"./styles-BjZJZe6I.js";import{eb as gs,ec as sy,ed as Pp,ee as ny,ef as oy,bF as ry,eg as nu,eh as ly,ei as Ap,ej as ay,n as Tr,ek as Pr,el as cy,P as hy,M as dy,em as uy,en as Fp,u as fy,eo as gy,ep as py,dm as my,Q as Cy,dC as wy,dE as vy}from"./App-nn1CRFOF.js";import{Z as by,r as Mp,J as Ep,L as to}from"./PlacesRail-BDV0ABcM.js";import{C as yy}from"./calendar-days-CkTnLcm-.js";import"./index-CuCIbHWm.js";import"./monitor-Dl1gHAr3.js";import"./MenuMotion-DhUo51zl.js";const Sy=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]],xy=Sl("columns-3",Sy);const Ry=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M10 18h4",key:"1ulq68"}]],ky=Sl("list-filter",Ry);const Dy=[["circle",{cx:"9",cy:"12",r:"3",key:"u3jwor"}],["rect",{width:"20",height:"14",x:"2",y:"5",rx:"7",key:"g7kal2"}]],Ty=Sl("toggle-left",Dy);const Py=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],Ay=Sl("type",Py);function Fy({sources:t}){return t.length===0?null:F.jsx("ul",{className:"m-0 mt-1 flex max-h-10 list-none flex-wrap gap-x-4 overflow-y-auto p-0 text-[12px] text-ink-tertiary","aria-label":J("data.sources.label"),"data-testid":"sources-strip",children:t.map(e=>F.jsxs("li",{className:"flex items-baseline gap-2 py-0.5",children:[F.jsx("span",{className:"min-w-0 truncate font-mono",children:e.sqlName??e.name}),F.jsx("span",{className:"shrink-0",children:J("data.sources.rows",{count:gs(e.rowCount)})})]},e.name))})}var V={BACKSPACE:"Backspace",TAB:"Tab",ENTER:"Enter",ESCAPE:"Escape",SPACE:" ",LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",DOWN:"ArrowDown",DELETE:"Delete",F2:"F2",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown",PAGE_HOME:"Home",PAGE_END:"End",A:"KeyA",C:"KeyC",D:"KeyD",V:"KeyV",X:"KeyX",Y:"KeyY",Z:"KeyZ"},My=65,Ey=67,Ly=86,Iy=68,Oy=90,By=89;function Lp(t){const{keyCode:e}=t;let i;switch(e){case My:i=V.A;break;case Ey:i=V.C;break;case Ly:i=V.V;break;case Iy:i=V.D;break;case Oy:i=V.Z;break;case By:i=V.Y;break;default:i=t.code}return i}var oc="36.2.0",Hy=':where([class^=ag-]),:where([class^=ag-]):after,:where([class^=ag-]):before{box-sizing:border-box}:where([class^=ag-]):where(button){color:inherit}:where([class^=ag-]):where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){font-family:inherit;font-size:inherit;line-height:inherit;padding:0}:where([class^=ag-]):where(div,span,label):focus-visible{box-shadow:inset var(--ag-focus-shadow);outline:none;&:where(.invalid){box-shadow:inset var(--ag-focus-error-shadow)}}:where([class^=ag-]) ::-ms-clear{display:none}.ag-hidden{display:none!important}.ag-invisible{visibility:hidden!important}.ag-tab-guard{display:block;height:0;position:absolute;width:0}.ag-tab-guard-top{top:1px}.ag-tab-guard-bottom{bottom:1px}.ag-measurement-container{height:0;overflow:hidden;visibility:hidden;width:0}.ag-measurement-element-border{display:inline-block}.ag-measurement-element-border:before{border-left:var(--ag-internal-measurement-border);content:"";display:block}.ag-aria-description-container{border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;z-index:9999}.ag-popup{background-color:var(--ag-wrapper-background-color)}.ag-popup-child{max-width:min(100%,calc(100vw - 30px));top:0;z-index:5}.ag-popup-child:where(:not(.ag-tooltip-custom)){box-shadow:var(--ag-popup-shadow)}.ag-input-wrapper,.ag-picker-field-wrapper{align-items:center;display:flex;flex:1 1 auto;line-height:normal;position:relative}.ag-input-field{align-items:center;display:flex;flex-direction:row}.ag-input-field-input:where(:not([type=checkbox],[type=radio])){flex:1 1 auto;min-width:0;width:100%}.ag-styled-root{cursor:default;display:contents;line-height:normal;white-space:normal;-webkit-font-smoothing:antialiased;color:var(--ag-text-color);color-scheme:var(--ag-browser-color-scheme);font-family:var(--ag-font-family);font-size:var(--ag-font-size);font-weight:var(--ag-font-weight);--ag-indentation-level:0}:where(.ag-toolbar) .ag-react-container:where(:not(.ag-react-wrapper-block)){display:contents}:where(.ag-icon):before{align-items:center;background-color:currentcolor;color:inherit;content:"";display:flex;font-family:inherit;font-size:var(--ag-icon-size);font-style:normal;font-variant:normal;height:var(--ag-icon-size);justify-content:center;line-height:var(--ag-icon-size);-webkit-mask-size:contain;mask-size:contain;text-transform:none;width:var(--ag-icon-size)}.ag-icon{background-position:50%;background-repeat:no-repeat;background-size:contain;color:var(--ag-icon-color);display:block;height:var(--ag-icon-size);position:relative;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--ag-icon-size)}.ag-disabled .ag-icon,[disabled] .ag-icon{opacity:.5}.ag-icon-grip.ag-disabled,.ag-icon-grip[disabled]{opacity:.35}.ag-icon-loading{animation-duration:1s;animation-iteration-count:infinite;animation-name:spin;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ag-resizer{pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}:where(.ag-resizer){&.ag-resizer-topLeft{cursor:nwse-resize;height:5px;left:0;top:0;width:5px}&.ag-resizer-top{cursor:ns-resize;height:5px;left:5px;right:5px;top:0}&.ag-resizer-topRight{cursor:nesw-resize;height:5px;right:0;top:0;width:5px}&.ag-resizer-right{bottom:5px;cursor:ew-resize;right:0;top:5px;width:5px}&.ag-resizer-bottomRight{bottom:0;cursor:nwse-resize;height:5px;right:0;width:5px}&.ag-resizer-bottom{bottom:0;cursor:ns-resize;height:5px;left:5px;right:5px}&.ag-resizer-bottomLeft{bottom:0;cursor:nesw-resize;height:5px;left:0;width:5px}&.ag-resizer-left{bottom:5px;cursor:ew-resize;left:0;top:5px;width:5px}}.ag-menu{background-color:var(--ag-menu-background-color);border:var(--ag-menu-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-menu-shadow);color:var(--ag-menu-text-color);max-height:100%;overflow-y:auto;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}',Ny=typeof window!="object"||!window?.document?.fonts?.forEach,Gy=!1,Hh=()=>Ny&&!0||Gy,Ss=(t,e,i,s,n,o,r=!1)=>{if(Hh())return;let l=t;s&&(l=`@layer ${CSS.escape(s).replaceAll("\\.",".")} { ${t} }`);let a=li.map.get(e);if(a||(a=[],li.map.set(e,a)),a.some(u=>u.injectedCss===l))return;const c=document.createElement("style");o&&c.setAttribute("nonce",o),c.dataset.agCss=i,c.dataset.agCssVersion=oc,c.textContent=l;const h={rawCss:t,injectedCss:l,el:c,priority:n,isParams:r};let d;for(const u of a){if(u.priority>n)break;d=u}if(d){d.el.after(c);const u=a.indexOf(d);a.splice(u+1,0,h)}else e.nodeName==="STYLE"?e.after(c):e.insertBefore(c,e.querySelector(":not(title, meta)")),a.push(h)},Ip=(t,e,i,s)=>{Ss(Hy,t,"shared",e,0,i),s?.forEach((n,o)=>n.forEach(r=>Ss(r,t,o,e,0,i)))},Wy=(t,e,i,s,n,o)=>{if(Hh())return;const r=li.grids.get(t);r?r.paramsCss=e:li.grids.set(t,{styleContainer:s,paramsCss:e}),rc(s),e&&i&&Ss(e,s,i,n,2,o,!0)},Vy=t=>{const e=li.grids.get(t)?.styleContainer;if(!e)return;li.grids.delete(t),Array.from(li.grids.values()).some(s=>s.styleContainer===e)?rc(e):(rc(e,!0),li.map.delete(e))},rc=(t,e=!1)=>{const i=new Set;for(const n of li.grids.values())n.styleContainer===t&&i.add(n.paramsCss);const s=li.map.get(t)??[];for(let n=s.length-1;n>=0;n--)(e||s[n].isParams&&!i.has(s[n].rawCss))&&(s[n].el.remove(),s.splice(n,1))},Op=()=>{const t=globalThis.agStyleInjectionVersions??(globalThis.agStyleInjectionVersions=new Map);let e=t.get(oc);return e||(e={map:new WeakMap,grids:new Map,paramsId:0},t.set(oc,e)),e},li=Op(),gi=t=>new Bp(t),Oi="$default",_y=0,Bp=class{constructor({feature:t,params:e,modeParams:i={},css:s,cssImports:n}){this.feature=t,this.css=s,this.cssImports=n,this.modeParams={[Oi]:{...i[Oi]??{},...e??{}},...i}}use(t,e,i){let s=this._inject;if(s==null){let{css:n}=this;if(n){const o=`ag-theme-${this.feature??"part"}-${++_y}`;typeof n=="function"&&(n=n()),n=`:where(.${o}) {
1
+ import{c as Sl,j as F,t as J,r as C,R as E,S as iy,f as su,a as nc,aj as Tp}from"./styles-Bj-lDRZL.js";import{eb as gs,ec as sy,ed as Pp,ee as ny,ef as oy,bF as ry,eg as nu,eh as ly,ei as Ap,ej as ay,n as Tr,ek as Pr,el as cy,P as hy,M as dy,em as uy,en as Fp,u as fy,eo as gy,ep as py,dm as my,Q as Cy,dC as wy,dE as vy}from"./App-X_zk2xl3.js";import{Z as by,r as Mp,J as Ep,L as to}from"./PlacesRail-B9RHHjvB.js";import{C as yy}from"./calendar-days-C5I0mEXB.js";import"./index-DJPPxxyF.js";import"./monitor-DUEBF6Jm.js";import"./MenuMotion-V6wxTHIu.js";const Sy=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]],xy=Sl("columns-3",Sy);const Ry=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M10 18h4",key:"1ulq68"}]],ky=Sl("list-filter",Ry);const Dy=[["circle",{cx:"9",cy:"12",r:"3",key:"u3jwor"}],["rect",{width:"20",height:"14",x:"2",y:"5",rx:"7",key:"g7kal2"}]],Ty=Sl("toggle-left",Dy);const Py=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],Ay=Sl("type",Py);function Fy({sources:t}){return t.length===0?null:F.jsx("ul",{className:"m-0 mt-1 flex max-h-10 list-none flex-wrap gap-x-4 overflow-y-auto p-0 text-[12px] text-ink-tertiary","aria-label":J("data.sources.label"),"data-testid":"sources-strip",children:t.map(e=>F.jsxs("li",{className:"flex items-baseline gap-2 py-0.5",children:[F.jsx("span",{className:"min-w-0 truncate font-mono",children:e.sqlName??e.name}),F.jsx("span",{className:"shrink-0",children:J("data.sources.rows",{count:gs(e.rowCount)})})]},e.name))})}var V={BACKSPACE:"Backspace",TAB:"Tab",ENTER:"Enter",ESCAPE:"Escape",SPACE:" ",LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",DOWN:"ArrowDown",DELETE:"Delete",F2:"F2",PAGE_UP:"PageUp",PAGE_DOWN:"PageDown",PAGE_HOME:"Home",PAGE_END:"End",A:"KeyA",C:"KeyC",D:"KeyD",V:"KeyV",X:"KeyX",Y:"KeyY",Z:"KeyZ"},My=65,Ey=67,Ly=86,Iy=68,Oy=90,By=89;function Lp(t){const{keyCode:e}=t;let i;switch(e){case My:i=V.A;break;case Ey:i=V.C;break;case Ly:i=V.V;break;case Iy:i=V.D;break;case Oy:i=V.Z;break;case By:i=V.Y;break;default:i=t.code}return i}var oc="36.2.0",Hy=':where([class^=ag-]),:where([class^=ag-]):after,:where([class^=ag-]):before{box-sizing:border-box}:where([class^=ag-]):where(button){color:inherit}:where([class^=ag-]):where(input:not([type]),input[type=text],input[type=number],input[type=tel],input[type=date],input[type=datetime-local],textarea){font-family:inherit;font-size:inherit;line-height:inherit;padding:0}:where([class^=ag-]):where(div,span,label):focus-visible{box-shadow:inset var(--ag-focus-shadow);outline:none;&:where(.invalid){box-shadow:inset var(--ag-focus-error-shadow)}}:where([class^=ag-]) ::-ms-clear{display:none}.ag-hidden{display:none!important}.ag-invisible{visibility:hidden!important}.ag-tab-guard{display:block;height:0;position:absolute;width:0}.ag-tab-guard-top{top:1px}.ag-tab-guard-bottom{bottom:1px}.ag-measurement-container{height:0;overflow:hidden;visibility:hidden;width:0}.ag-measurement-element-border{display:inline-block}.ag-measurement-element-border:before{border-left:var(--ag-internal-measurement-border);content:"";display:block}.ag-aria-description-container{border:0;clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;z-index:9999}.ag-popup{background-color:var(--ag-wrapper-background-color)}.ag-popup-child{max-width:min(100%,calc(100vw - 30px));top:0;z-index:5}.ag-popup-child:where(:not(.ag-tooltip-custom)){box-shadow:var(--ag-popup-shadow)}.ag-input-wrapper,.ag-picker-field-wrapper{align-items:center;display:flex;flex:1 1 auto;line-height:normal;position:relative}.ag-input-field{align-items:center;display:flex;flex-direction:row}.ag-input-field-input:where(:not([type=checkbox],[type=radio])){flex:1 1 auto;min-width:0;width:100%}.ag-styled-root{cursor:default;display:contents;line-height:normal;white-space:normal;-webkit-font-smoothing:antialiased;color:var(--ag-text-color);color-scheme:var(--ag-browser-color-scheme);font-family:var(--ag-font-family);font-size:var(--ag-font-size);font-weight:var(--ag-font-weight);--ag-indentation-level:0}:where(.ag-toolbar) .ag-react-container:where(:not(.ag-react-wrapper-block)){display:contents}:where(.ag-icon):before{align-items:center;background-color:currentcolor;color:inherit;content:"";display:flex;font-family:inherit;font-size:var(--ag-icon-size);font-style:normal;font-variant:normal;height:var(--ag-icon-size);justify-content:center;line-height:var(--ag-icon-size);-webkit-mask-size:contain;mask-size:contain;text-transform:none;width:var(--ag-icon-size)}.ag-icon{background-position:50%;background-repeat:no-repeat;background-size:contain;color:var(--ag-icon-color);display:block;height:var(--ag-icon-size);position:relative;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--ag-icon-size)}.ag-disabled .ag-icon,[disabled] .ag-icon{opacity:.5}.ag-icon-grip.ag-disabled,.ag-icon-grip[disabled]{opacity:.35}.ag-icon-loading{animation-duration:1s;animation-iteration-count:infinite;animation-name:spin;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ag-resizer{pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}:where(.ag-resizer){&.ag-resizer-topLeft{cursor:nwse-resize;height:5px;left:0;top:0;width:5px}&.ag-resizer-top{cursor:ns-resize;height:5px;left:5px;right:5px;top:0}&.ag-resizer-topRight{cursor:nesw-resize;height:5px;right:0;top:0;width:5px}&.ag-resizer-right{bottom:5px;cursor:ew-resize;right:0;top:5px;width:5px}&.ag-resizer-bottomRight{bottom:0;cursor:nwse-resize;height:5px;right:0;width:5px}&.ag-resizer-bottom{bottom:0;cursor:ns-resize;height:5px;left:5px;right:5px}&.ag-resizer-bottomLeft{bottom:0;cursor:nesw-resize;height:5px;left:0;width:5px}&.ag-resizer-left{bottom:5px;cursor:ew-resize;left:0;top:5px;width:5px}}.ag-menu{background-color:var(--ag-menu-background-color);border:var(--ag-menu-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-menu-shadow);color:var(--ag-menu-text-color);max-height:100%;overflow-y:auto;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}',Ny=typeof window!="object"||!window?.document?.fonts?.forEach,Gy=!1,Hh=()=>Ny&&!0||Gy,Ss=(t,e,i,s,n,o,r=!1)=>{if(Hh())return;let l=t;s&&(l=`@layer ${CSS.escape(s).replaceAll("\\.",".")} { ${t} }`);let a=li.map.get(e);if(a||(a=[],li.map.set(e,a)),a.some(u=>u.injectedCss===l))return;const c=document.createElement("style");o&&c.setAttribute("nonce",o),c.dataset.agCss=i,c.dataset.agCssVersion=oc,c.textContent=l;const h={rawCss:t,injectedCss:l,el:c,priority:n,isParams:r};let d;for(const u of a){if(u.priority>n)break;d=u}if(d){d.el.after(c);const u=a.indexOf(d);a.splice(u+1,0,h)}else e.nodeName==="STYLE"?e.after(c):e.insertBefore(c,e.querySelector(":not(title, meta)")),a.push(h)},Ip=(t,e,i,s)=>{Ss(Hy,t,"shared",e,0,i),s?.forEach((n,o)=>n.forEach(r=>Ss(r,t,o,e,0,i)))},Wy=(t,e,i,s,n,o)=>{if(Hh())return;const r=li.grids.get(t);r?r.paramsCss=e:li.grids.set(t,{styleContainer:s,paramsCss:e}),rc(s),e&&i&&Ss(e,s,i,n,2,o,!0)},Vy=t=>{const e=li.grids.get(t)?.styleContainer;if(!e)return;li.grids.delete(t),Array.from(li.grids.values()).some(s=>s.styleContainer===e)?rc(e):(rc(e,!0),li.map.delete(e))},rc=(t,e=!1)=>{const i=new Set;for(const n of li.grids.values())n.styleContainer===t&&i.add(n.paramsCss);const s=li.map.get(t)??[];for(let n=s.length-1;n>=0;n--)(e||s[n].isParams&&!i.has(s[n].rawCss))&&(s[n].el.remove(),s.splice(n,1))},Op=()=>{const t=globalThis.agStyleInjectionVersions??(globalThis.agStyleInjectionVersions=new Map);let e=t.get(oc);return e||(e={map:new WeakMap,grids:new Map,paramsId:0},t.set(oc,e)),e},li=Op(),gi=t=>new Bp(t),Oi="$default",_y=0,Bp=class{constructor({feature:t,params:e,modeParams:i={},css:s,cssImports:n}){this.feature=t,this.css=s,this.cssImports=n,this.modeParams={[Oi]:{...i[Oi]??{},...e??{}},...i}}use(t,e,i){let s=this._inject;if(s==null){let{css:n}=this;if(n){const o=`ag-theme-${this.feature??"part"}-${++_y}`;typeof n=="function"&&(n=n()),n=`:where(.${o}) {
2
2
  ${n}
3
3
  }
4
4
  `;for(const r of this.cssImports??[])n=`@import url(${JSON.stringify(r)});
@@ -1 +1 @@
1
- import{c as W,r as s,t,j as e,a as d,C as X,X as $}from"./styles-BjZJZe6I.js";import{c as G,D as J,t as Q}from"./desktop-connection-Dfaq6k5a.js";import{u as Y,a as Z,K as ee,R as te,C as ne,S as se}from"./MenuMotion-DhUo51zl.js";import{M as oe}from"./monitor-Dl1gHAr3.js";import{M as ie,a as re}from"./minimize-DCuQCut-.js";import"./desktop-viewer-CF-OpSo0.js";const ae=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],le=W("clipboard",ae);function ce(u){return window.addEventListener("hashchange",u),()=>window.removeEventListener("hashchange",u)}const de=()=>location.hash;function me(){const u=s.useRef(null),o=s.useRef(null),[v,m]=s.useState(0),[x,p]=s.useState("connecting"),i=x==="connected",L=t(`desktopViewer.${x}`),[a,w]=s.useState(null),[b,S]=s.useState(!0),[f,B]=s.useState(!1),[M,P]=s.useState(""),[H,k]=s.useState(""),g=Y(a),y=Z(!b),r=g.value==="keyboard",R=s.useRef(a);R.current=a;const[j,C]=s.useState(""),O=s.useSyncExternalStore(ce,de),D=new URLSearchParams(O.slice(1)),N=D.get("target"),V=D.get("threadId");s.useEffect(()=>{k(""),C(""),w(null)},[N,V]),s.useEffect(()=>{const n=new AbortController;let l;const q=document.title;document.title=t("desktopViewer.title"),p("connecting"),G(u.current,N??"",{threadId:V,signal:n.signal,events:{connected:()=>p("connected"),disconnected:()=>p("disconnected"),clipboard:k}}).then(c=>{if(n.signal.aborted)return c.disconnect();l=c,o.current=c,c.focusOnClick=R.current===null},c=>{n.signal.aborted||p(c instanceof J&&c.invalid?"invalid":"disconnected")});const z=()=>{n.abort(),l?.disconnect()},K=c=>{c.persisted&&m(U=>U+1)};return window.addEventListener("pagehide",z),window.addEventListener("pageshow",K),()=>{z(),o.current===l&&(o.current=null),window.removeEventListener("pagehide",z),window.removeEventListener("pageshow",K),document.title=q}},[N,V,v]),s.useEffect(()=>{o.current&&(o.current.focusOnClick=a===null)},[a]),s.useEffect(()=>{const n=()=>B(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[]);const _=async()=>{P("");try{document.fullscreenElement?await document.exitFullscreen():await document.documentElement.requestFullscreen()}catch{P(t("desktopViewer.fullscreenFailed"))}},F=()=>{w(null),a&&document.getElementById(a)?.focus()},I=n=>requestAnimationFrame(()=>document.getElementById(n)?.focus()),T=n=>w(l=>l===n?null:n),A="transition-[width,translate,opacity] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none",E="ui-button min-h-11 rounded-xl focus-visible:outline-2 focus-visible:outline-focus";return e.jsxs("div",{className:"relative flex h-dvh overflow-hidden bg-app text-sm text-ink",style:{paddingLeft:"env(safe-area-inset-left)",paddingRight:"env(safe-area-inset-right)"},children:[e.jsx("aside",{"aria-label":t("desktopViewer.controls"),"aria-hidden":!b,inert:!b,className:d("z-10 flex shrink-0 items-center justify-center py-3",A,b?"w-[72px]":"w-0"),children:e.jsxs("div",{className:d("flex max-h-full w-14 shrink-0 flex-col items-center gap-1 overflow-y-auto rounded-2xl border border-hairline bg-panel p-1 shadow-xl",A,b?"translate-x-0 opacity-100":"-translate-x-12 opacity-0"),children:[e.jsxs("div",{className:"relative flex h-11 w-11 shrink-0 items-center justify-center text-ink-secondary",title:L,children:[e.jsx(oe,{size:20,"aria-hidden":"true"}),e.jsx("span",{className:d("absolute right-2 bottom-2 size-2 rounded-full ring-2 ring-panel",i?"bg-success":"bg-warning")})]}),e.jsx("div",{className:"my-1 h-px w-7 shrink-0 bg-hairline"}),e.jsx(h,{id:"keyboard",label:t("desktopViewer.keyboard"),icon:ee,disabled:!i,active:a==="keyboard",expanded:a==="keyboard",onClick:()=>T("keyboard")}),e.jsx(h,{id:"clipboard",label:t("desktopViewer.clipboard"),icon:le,disabled:!i,active:a==="clipboard",expanded:a==="clipboard",onClick:()=>T("clipboard")}),document.fullscreenEnabled&&e.jsx(h,{id:"fullscreen",label:t(f?"desktopViewer.exitFullscreen":"desktopViewer.fullscreen"),icon:f?ie:re,onClick:()=>{_()}}),e.jsx("div",{className:"my-1 h-px w-7 shrink-0 bg-hairline"}),e.jsx(h,{id:"retry",label:t("desktopViewer.reconnect"),icon:te,onClick:()=>{k(""),m(n=>n+1)}}),e.jsx(h,{id:"hide-controls",label:t("desktopViewer.hideControls"),icon:X,onClick:()=>{S(!1),w(null),I("show-controls")}})]})}),y.shown&&e.jsx("div",{...y.exitProps,className:d("absolute left-0 top-1/2 z-10 -translate-y-1/2 rounded-r-2xl border border-l-0 border-hairline bg-panel p-1 shadow-xl",y.className),children:e.jsx(h,{id:"show-controls",label:t("desktopViewer.showControls"),icon:ne,onClick:()=>{S(!0),I("hide-controls")}})}),e.jsxs("main",{className:d("relative flex min-w-0 flex-1 items-center justify-center overflow-hidden bg-inset",!f&&"my-2 mr-2 rounded-2xl border border-hairline",!f&&!b&&"ml-2"),children:[e.jsx("div",{id:"screen",ref:u,role:"application","aria-label":t("desktopViewer.title"),className:d("overflow-hidden",f?"h-full w-full":"h-[95%] w-[95%]")}),e.jsx("div",{className:i?"sr-only":"pointer-events-none absolute inset-x-3 top-3 flex justify-center",children:e.jsx("span",{id:"status",role:"status",className:"max-w-full rounded-full border border-hairline bg-panel/95 px-3 py-1.5 text-center text-xs text-ink-secondary shadow-sm",children:L})}),M&&e.jsx("p",{role:"alert",className:"absolute inset-x-3 bottom-3 rounded-xl border border-hairline bg-panel p-3 text-ink",children:M})]}),e.jsx("a",{id:"viewer-notice",href:"/novnc-NOTICE.txt",target:"_blank",rel:"license noopener noreferrer",title:t("desktopViewer.notice"),"aria-label":t("desktopViewer.notice"),className:"absolute bottom-2 right-2 z-10 flex min-h-6 w-11 items-center justify-center rounded-lg bg-app/80 text-[10px] text-ink-secondary hover:text-ink hover:underline",style:{marginRight:"env(safe-area-inset-right)",marginBottom:"env(safe-area-inset-bottom)"},children:"noVNC"}),g.shown&&e.jsxs("section",{...g.exitProps,"aria-label":t(r?"desktopViewer.keyboard":"desktopViewer.clipboard"),onKeyDown:n=>{n.key==="Escape"&&(n.stopPropagation(),F())},className:d("absolute left-[72px] top-1/2 z-20 max-h-[calc(100dvh-24px)] w-[min(320px,calc(100%-84px))] -translate-y-1/2 overflow-y-auto rounded-2xl border border-hairline bg-panel p-4 shadow-2xl",g.className),style:{marginLeft:"env(safe-area-inset-left)"},children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between gap-2",children:[e.jsx("h1",{className:"font-medium",children:t(r?"desktopViewer.keyboard":"desktopViewer.clipboard")}),e.jsx("button",{type:"button",title:t("desktopViewer.closePanel"),"aria-label":t("desktopViewer.closePanel"),onClick:F,className:"ui-icon-button shrink-0",children:e.jsx($,{size:18,"aria-hidden":"true"})})]}),e.jsxs("form",{onSubmit:n=>{n.preventDefault(),!(!o.current||!i||!r)&&(Q(o.current,j),C(""))},children:[e.jsx("label",{className:"mb-2 block text-xs leading-relaxed text-ink-secondary",htmlFor:r?"text":"clipboard-text",children:t(r?"desktopViewer.text":"desktopViewer.clipboardHint")}),e.jsx("textarea",{id:r?"text":"clipboard-text",className:"w-full resize-y rounded-xl border border-hairline bg-inset p-3 text-base text-ink outline-none focus:border-focus",rows:4,maxLength:r?4096:65536,autoComplete:"off",autoCapitalize:"off",spellCheck:!1,value:r?j:H,disabled:!r&&!i,onChange:n=>{const l=n.target.value;r?C(l):(k(l),i&&o.current?.clipboardPasteFrom(l))}}),r&&e.jsxs("button",{id:"send",type:"submit",className:"mt-3 flex min-h-11 w-full items-center justify-center gap-2 rounded-xl bg-accent px-3 font-medium text-accent-ink transition-opacity hover:opacity-90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus disabled:opacity-40",disabled:!i||!j,children:[e.jsx(se,{size:16,"aria-hidden":"true"}),t("desktopViewer.send")]})]}),r&&e.jsxs("div",{className:"mt-4 grid grid-cols-2 gap-2 border-t border-hairline pt-4",children:[e.jsx("button",{className:E,disabled:!i,onClick:()=>o.current?.sendKey(65289,"Tab"),children:t("desktopViewer.keyTab")}),e.jsx("button",{className:E,disabled:!i,onClick:()=>o.current?.sendKey(65307,"Escape"),children:t("desktopViewer.keyEscape")}),e.jsx("button",{id:"ctrl-alt-del",className:d(E,"col-span-2"),disabled:!i,onClick:()=>o.current?.sendCtrlAltDel(),children:t("desktopViewer.keyCtrlAltDel")})]})]})]})}function h({id:u,label:o,icon:v,disabled:m,active:x,expanded:p,onClick:i}){return e.jsx("button",{id:u,type:"button",title:o,"aria-label":o,"aria-pressed":x,"aria-expanded":p,disabled:m,onClick:i,className:d("ui-icon-button size-11 min-h-11 shrink-0 rounded-xl focus-visible:outline-2 focus-visible:outline-focus",x?"bg-accent/15 text-accent-text hover:bg-accent/25":"text-ink-secondary hover:bg-raised-hover hover:text-ink"),children:e.jsx(v,{size:19,strokeWidth:1.75,"aria-hidden":"true"})})}export{me as DesktopViewer};
1
+ import{c as W,r as s,t,j as e,a as d,C as X,X as $}from"./styles-Bj-lDRZL.js";import{c as G,D as J,t as Q}from"./desktop-connection-Dfaq6k5a.js";import{u as Y,a as Z,K as ee,R as te,C as ne,S as se}from"./MenuMotion-V6wxTHIu.js";import{M as oe}from"./monitor-DUEBF6Jm.js";import{M as ie,a as re}from"./minimize-C8Om8qhk.js";import"./desktop-viewer-CF-OpSo0.js";const ae=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],le=W("clipboard",ae);function ce(u){return window.addEventListener("hashchange",u),()=>window.removeEventListener("hashchange",u)}const de=()=>location.hash;function me(){const u=s.useRef(null),o=s.useRef(null),[v,m]=s.useState(0),[x,p]=s.useState("connecting"),i=x==="connected",L=t(`desktopViewer.${x}`),[a,w]=s.useState(null),[b,S]=s.useState(!0),[f,B]=s.useState(!1),[M,P]=s.useState(""),[H,k]=s.useState(""),g=Y(a),y=Z(!b),r=g.value==="keyboard",R=s.useRef(a);R.current=a;const[j,C]=s.useState(""),O=s.useSyncExternalStore(ce,de),D=new URLSearchParams(O.slice(1)),N=D.get("target"),V=D.get("threadId");s.useEffect(()=>{k(""),C(""),w(null)},[N,V]),s.useEffect(()=>{const n=new AbortController;let l;const q=document.title;document.title=t("desktopViewer.title"),p("connecting"),G(u.current,N??"",{threadId:V,signal:n.signal,events:{connected:()=>p("connected"),disconnected:()=>p("disconnected"),clipboard:k}}).then(c=>{if(n.signal.aborted)return c.disconnect();l=c,o.current=c,c.focusOnClick=R.current===null},c=>{n.signal.aborted||p(c instanceof J&&c.invalid?"invalid":"disconnected")});const z=()=>{n.abort(),l?.disconnect()},K=c=>{c.persisted&&m(U=>U+1)};return window.addEventListener("pagehide",z),window.addEventListener("pageshow",K),()=>{z(),o.current===l&&(o.current=null),window.removeEventListener("pagehide",z),window.removeEventListener("pageshow",K),document.title=q}},[N,V,v]),s.useEffect(()=>{o.current&&(o.current.focusOnClick=a===null)},[a]),s.useEffect(()=>{const n=()=>B(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",n),()=>document.removeEventListener("fullscreenchange",n)},[]);const _=async()=>{P("");try{document.fullscreenElement?await document.exitFullscreen():await document.documentElement.requestFullscreen()}catch{P(t("desktopViewer.fullscreenFailed"))}},F=()=>{w(null),a&&document.getElementById(a)?.focus()},I=n=>requestAnimationFrame(()=>document.getElementById(n)?.focus()),T=n=>w(l=>l===n?null:n),A="transition-[width,translate,opacity] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none",E="ui-button min-h-11 rounded-xl focus-visible:outline-2 focus-visible:outline-focus";return e.jsxs("div",{className:"relative flex h-dvh overflow-hidden bg-app text-sm text-ink",style:{paddingLeft:"env(safe-area-inset-left)",paddingRight:"env(safe-area-inset-right)"},children:[e.jsx("aside",{"aria-label":t("desktopViewer.controls"),"aria-hidden":!b,inert:!b,className:d("z-10 flex shrink-0 items-center justify-center py-3",A,b?"w-[72px]":"w-0"),children:e.jsxs("div",{className:d("flex max-h-full w-14 shrink-0 flex-col items-center gap-1 overflow-y-auto rounded-2xl border border-hairline bg-panel p-1 shadow-xl",A,b?"translate-x-0 opacity-100":"-translate-x-12 opacity-0"),children:[e.jsxs("div",{className:"relative flex h-11 w-11 shrink-0 items-center justify-center text-ink-secondary",title:L,children:[e.jsx(oe,{size:20,"aria-hidden":"true"}),e.jsx("span",{className:d("absolute right-2 bottom-2 size-2 rounded-full ring-2 ring-panel",i?"bg-success":"bg-warning")})]}),e.jsx("div",{className:"my-1 h-px w-7 shrink-0 bg-hairline"}),e.jsx(h,{id:"keyboard",label:t("desktopViewer.keyboard"),icon:ee,disabled:!i,active:a==="keyboard",expanded:a==="keyboard",onClick:()=>T("keyboard")}),e.jsx(h,{id:"clipboard",label:t("desktopViewer.clipboard"),icon:le,disabled:!i,active:a==="clipboard",expanded:a==="clipboard",onClick:()=>T("clipboard")}),document.fullscreenEnabled&&e.jsx(h,{id:"fullscreen",label:t(f?"desktopViewer.exitFullscreen":"desktopViewer.fullscreen"),icon:f?ie:re,onClick:()=>{_()}}),e.jsx("div",{className:"my-1 h-px w-7 shrink-0 bg-hairline"}),e.jsx(h,{id:"retry",label:t("desktopViewer.reconnect"),icon:te,onClick:()=>{k(""),m(n=>n+1)}}),e.jsx(h,{id:"hide-controls",label:t("desktopViewer.hideControls"),icon:X,onClick:()=>{S(!1),w(null),I("show-controls")}})]})}),y.shown&&e.jsx("div",{...y.exitProps,className:d("absolute left-0 top-1/2 z-10 -translate-y-1/2 rounded-r-2xl border border-l-0 border-hairline bg-panel p-1 shadow-xl",y.className),children:e.jsx(h,{id:"show-controls",label:t("desktopViewer.showControls"),icon:ne,onClick:()=>{S(!0),I("hide-controls")}})}),e.jsxs("main",{className:d("relative flex min-w-0 flex-1 items-center justify-center overflow-hidden bg-inset",!f&&"my-2 mr-2 rounded-2xl border border-hairline",!f&&!b&&"ml-2"),children:[e.jsx("div",{id:"screen",ref:u,role:"application","aria-label":t("desktopViewer.title"),className:d("overflow-hidden",f?"h-full w-full":"h-[95%] w-[95%]")}),e.jsx("div",{className:i?"sr-only":"pointer-events-none absolute inset-x-3 top-3 flex justify-center",children:e.jsx("span",{id:"status",role:"status",className:"max-w-full rounded-full border border-hairline bg-panel/95 px-3 py-1.5 text-center text-xs text-ink-secondary shadow-sm",children:L})}),M&&e.jsx("p",{role:"alert",className:"absolute inset-x-3 bottom-3 rounded-xl border border-hairline bg-panel p-3 text-ink",children:M})]}),e.jsx("a",{id:"viewer-notice",href:"/novnc-NOTICE.txt",target:"_blank",rel:"license noopener noreferrer",title:t("desktopViewer.notice"),"aria-label":t("desktopViewer.notice"),className:"absolute bottom-2 right-2 z-10 flex min-h-6 w-11 items-center justify-center rounded-lg bg-app/80 text-[10px] text-ink-secondary hover:text-ink hover:underline",style:{marginRight:"env(safe-area-inset-right)",marginBottom:"env(safe-area-inset-bottom)"},children:"noVNC"}),g.shown&&e.jsxs("section",{...g.exitProps,"aria-label":t(r?"desktopViewer.keyboard":"desktopViewer.clipboard"),onKeyDown:n=>{n.key==="Escape"&&(n.stopPropagation(),F())},className:d("absolute left-[72px] top-1/2 z-20 max-h-[calc(100dvh-24px)] w-[min(320px,calc(100%-84px))] -translate-y-1/2 overflow-y-auto rounded-2xl border border-hairline bg-panel p-4 shadow-2xl",g.className),style:{marginLeft:"env(safe-area-inset-left)"},children:[e.jsxs("div",{className:"mb-3 flex items-center justify-between gap-2",children:[e.jsx("h1",{className:"font-medium",children:t(r?"desktopViewer.keyboard":"desktopViewer.clipboard")}),e.jsx("button",{type:"button",title:t("desktopViewer.closePanel"),"aria-label":t("desktopViewer.closePanel"),onClick:F,className:"ui-icon-button shrink-0",children:e.jsx($,{size:18,"aria-hidden":"true"})})]}),e.jsxs("form",{onSubmit:n=>{n.preventDefault(),!(!o.current||!i||!r)&&(Q(o.current,j),C(""))},children:[e.jsx("label",{className:"mb-2 block text-xs leading-relaxed text-ink-secondary",htmlFor:r?"text":"clipboard-text",children:t(r?"desktopViewer.text":"desktopViewer.clipboardHint")}),e.jsx("textarea",{id:r?"text":"clipboard-text",className:"w-full resize-y rounded-xl border border-hairline bg-inset p-3 text-base text-ink outline-none focus:border-focus",rows:4,maxLength:r?4096:65536,autoComplete:"off",autoCapitalize:"off",spellCheck:!1,value:r?j:H,disabled:!r&&!i,onChange:n=>{const l=n.target.value;r?C(l):(k(l),i&&o.current?.clipboardPasteFrom(l))}}),r&&e.jsxs("button",{id:"send",type:"submit",className:"mt-3 flex min-h-11 w-full items-center justify-center gap-2 rounded-xl bg-accent px-3 font-medium text-accent-ink transition-opacity hover:opacity-90 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus disabled:opacity-40",disabled:!i||!j,children:[e.jsx(se,{size:16,"aria-hidden":"true"}),t("desktopViewer.send")]})]}),r&&e.jsxs("div",{className:"mt-4 grid grid-cols-2 gap-2 border-t border-hairline pt-4",children:[e.jsx("button",{className:E,disabled:!i,onClick:()=>o.current?.sendKey(65289,"Tab"),children:t("desktopViewer.keyTab")}),e.jsx("button",{className:E,disabled:!i,onClick:()=>o.current?.sendKey(65307,"Escape"),children:t("desktopViewer.keyEscape")}),e.jsx("button",{id:"ctrl-alt-del",className:d(E,"col-span-2"),disabled:!i,onClick:()=>o.current?.sendCtrlAltDel(),children:t("desktopViewer.keyCtrlAltDel")})]})]})]})}function h({id:u,label:o,icon:v,disabled:m,active:x,expanded:p,onClick:i}){return e.jsx("button",{id:u,type:"button",title:o,"aria-label":o,"aria-pressed":x,"aria-expanded":p,disabled:m,onClick:i,className:d("ui-icon-button size-11 min-h-11 shrink-0 rounded-xl focus-visible:outline-2 focus-visible:outline-focus",x?"bg-accent/15 text-accent-text hover:bg-accent/25":"text-ink-secondary hover:bg-raised-hover hover:text-ink"),children:e.jsx(v,{size:19,strokeWidth:1.75,"aria-hidden":"true"})})}export{me as DesktopViewer};
@@ -1,2 +1,2 @@
1
- import{j as e,t,r as m,a as j,b as D}from"./styles-BjZJZe6I.js";import{u as $,r as A,E as R,M as I}from"./PlacesRail-BDV0ABcM.js";import{c as K,F as L,u as M,b as H,S as U,C as S,d as _}from"./App-nn1CRFOF.js";import"./monitor-Dl1gHAr3.js";import"./index-CuCIbHWm.js";import"./MenuMotion-DhUo51zl.js";const G={"too-broad":"files.refusal.tooBroad","app-data":"files.refusal.appData","already-shared":"files.refusal.alreadyShared","not-a-folder":"files.refusal.notAFolder",private:"files.refusal.private"},z={type:"toggleAppSettings",open:!0,section:"cloudAccount"},y=s=>new Intl.NumberFormat(D()).format(s),N=s=>{const i=s>=1073741824?3:s>=1048576?2:1;return`${new Intl.NumberFormat(D(),{maximumFractionDigits:i===3?1:0}).format(s/1024**i)} ${["","KB","MB","GB"][i]}`};function F(s){return`${s.partial?t("files.countMore",{count:y(s.files)}):s.files===1?t("files.countOne"):t("files.count",{count:y(s.files)})} · ${N(s.bytes)}`}function E(s,i=!1){return t(i&&s==="not-a-folder"?"files.refusal.notAFolderListed":G[s]??"files.refusal.other")}const W=10080*6e4;function V(s,i=Date.now()){const o=s.kept?.[0];return o&&i-o.at<W&&(s.status==="synced"||s.status==="copying")?t("files.status.keptBoth",{file:o.path,copy:o.beside}):s.status==="copying"?t("files.status.copying",{done:y(s.done),files:y(s.files)}):s.status==="confirm-deletes"?t(s.pendingDeletes===1?"files.status.deletesOne":"files.status.deletes",{count:y(s.pendingDeletes)}):s.status==="problem"?s.problem||t("files.status.problem"):t(s.status==="waiting"?"files.status.waiting":s.status==="missing"?"files.status.missing":"files.status.synced")}function C(s){const o=(s instanceof Error?s.message:String(s??"")).replace(/^Error invoking remote method '[^']*': (?:\w*Error: )?/,"").split(`
1
+ import{j as e,t,r as m,a as j,b as D}from"./styles-Bj-lDRZL.js";import{u as $,r as A,E as R,M as I}from"./PlacesRail-B9RHHjvB.js";import{c as K,F as L,u as M,b as H,S as U,C as S,d as _}from"./App-X_zk2xl3.js";import"./monitor-DUEBF6Jm.js";import"./index-DJPPxxyF.js";import"./MenuMotion-V6wxTHIu.js";const G={"too-broad":"files.refusal.tooBroad","app-data":"files.refusal.appData","already-shared":"files.refusal.alreadyShared","not-a-folder":"files.refusal.notAFolder",private:"files.refusal.private"},z={type:"toggleAppSettings",open:!0,section:"cloudAccount"},y=s=>new Intl.NumberFormat(D()).format(s),N=s=>{const i=s>=1073741824?3:s>=1048576?2:1;return`${new Intl.NumberFormat(D(),{maximumFractionDigits:i===3?1:0}).format(s/1024**i)} ${["","KB","MB","GB"][i]}`};function F(s){return`${s.partial?t("files.countMore",{count:y(s.files)}):s.files===1?t("files.countOne"):t("files.count",{count:y(s.files)})} · ${N(s.bytes)}`}function E(s,i=!1){return t(i&&s==="not-a-folder"?"files.refusal.notAFolderListed":G[s]??"files.refusal.other")}const W=10080*6e4;function V(s,i=Date.now()){const o=s.kept?.[0];return o&&i-o.at<W&&(s.status==="synced"||s.status==="copying")?t("files.status.keptBoth",{file:o.path,copy:o.beside}):s.status==="copying"?t("files.status.copying",{done:y(s.done),files:y(s.files)}):s.status==="confirm-deletes"?t(s.pendingDeletes===1?"files.status.deletesOne":"files.status.deletes",{count:y(s.pendingDeletes)}):s.status==="problem"?s.problem||t("files.status.problem"):t(s.status==="waiting"?"files.status.waiting":s.status==="missing"?"files.status.missing":"files.status.synced")}function C(s){const o=(s instanceof Error?s.message:String(s??"")).replace(/^Error invoking remote method '[^']*': (?:\w*Error: )?/,"").split(`
2
2
  `)[0].trim();return o?t("files.failedWith",{reason:o}):t("files.failed")}function ne(){const{dragProps:s}=$(),i=K();return e.jsxs("main",{className:"flex min-w-0 flex-1 flex-col overflow-hidden bg-app text-ink",children:[e.jsxs("header",{...s,className:"flex shrink-0 items-center gap-2.5 border-b border-hairline/40 px-6 py-4 max-md:pl-12",children:[e.jsx(L,{size:18,className:"text-ink-secondary"}),e.jsx("h1",{className:"text-[17px] font-semibold",children:t("files.title")})]}),e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:e.jsx("div",{className:"mx-auto flex w-full max-w-2xl flex-col gap-8 px-6 py-6",children:i?e.jsx(q,{bridge:i}):e.jsx(O,{})})})]})}function O(){const{dispatch:s}=M();return e.jsxs("div",{className:"flex flex-col items-start gap-3",children:[e.jsx("p",{className:"text-[14px] text-ink",children:t("files.unavailable")}),e.jsx("button",{type:"button",className:"ui-button",onClick:()=>s(z),children:t("files.openSettings")})]})}function q({bridge:s}){const{state:i,dispatch:o}=M(),[n,u]=H(s),[a,c]=m.useState(null),[p,d]=m.useState(!1),[f,x]=m.useState(null),w=i.filesSuggest,k=n!==null&&n.phase!=="unavailable";m.useEffect(()=>{if(!k||!w)return;let l=!0;return s.checkFolders(w).then(r=>{l&&r.length&&c({kind:"suggest",checks:r,chosen:r.filter(g=>!g.refusal).map(g=>g.token)})}).catch(r=>{l&&x(C(r))}),()=>{l=!1}},[s,w,k]);const b=async l=>{d(!0),x(null);try{const r=await l();r&&u(r)}catch(r){x(C(r))}finally{d(!1)}},h=()=>c(null),v=l=>{h(),b(async()=>{let r;for(const g of l)r=await s.share(g);return r})},P=()=>{b(()=>s.moreSpace())};return n?n.phase==="unavailable"?e.jsx(O,{}):e.jsxs(e.Fragment,{children:[(n.phase==="offline"||n.phase==="asleep")&&e.jsx("p",{role:"status","data-files-phase":n.phase,className:"rounded-xl bg-card px-4 py-3 text-[13px] text-ink-secondary",children:t(n.phase==="asleep"?"files.asleep":"files.offline")}),n.phase==="signed-out"&&e.jsxs("div",{role:"status",className:"flex flex-wrap items-center justify-between gap-3 rounded-xl bg-card px-4 py-3",children:[e.jsx("p",{className:"text-[13px] text-ink",children:t("files.signedOut")}),e.jsx("button",{type:"button",className:"ui-button",onClick:()=>o(z),children:t("files.openSettings")})]}),f&&e.jsx("p",{role:"alert",className:"text-[13px] text-danger",children:f}),e.jsxs("section",{"aria-labelledby":"files-shared",className:"flex flex-col gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{id:"files-shared",className:"text-[15px] font-medium text-ink",children:t("files.shared.title")}),e.jsx("p",{className:"mt-1 text-[13px] leading-relaxed text-ink-secondary",children:t("files.shared.help")})]}),n.shared.length>0?e.jsx("ul",{className:"flex flex-col divide-y divide-hairline/40 rounded-xl bg-card",children:n.shared.map(l=>e.jsx(J,{folder:l,bridge:s,busy:p,run:b,onStop:()=>c({kind:"stop",folder:l})},l.id))}):e.jsx("p",{className:"text-[13px] text-ink-secondary",children:t("files.empty")}),e.jsx("button",{type:"button",disabled:p,className:"ui-button self-start",onClick:()=>{b(async()=>{const l=await s.pickFolder();l&&c({kind:"share",check:l})})},children:t("files.add")}),n.disk&&e.jsx(X,{disk:n.disk,busy:p,onMore:P})]}),e.jsxs("section",{"aria-labelledby":"files-outputs",className:"flex flex-col gap-3",children:[e.jsx("h2",{id:"files-outputs",className:"text-[15px] font-medium text-ink",children:t("files.outputs.title")}),e.jsxs("div",{className:"flex flex-col items-start gap-3 rounded-xl bg-card p-4",children:[e.jsxs("div",{className:"flex w-full items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{id:"files-outputs-switch",className:"text-[14px] text-ink",children:t("files.outputs.switch")}),e.jsx("p",{className:"mt-1 text-[12px] text-ink-secondary",children:t("files.outputs.help")})]}),e.jsx(U,{checked:n.outputs.enabled,disabled:p,"aria-labelledby":"files-outputs-switch",onClick:()=>{b(()=>s.setOutputs(!n.outputs.enabled))}})]}),n.outputs.problem&&e.jsx("p",{className:"text-[12px] text-danger",children:n.outputs.problem}),n.outputs.enabled&&e.jsx("button",{type:"button",className:"ui-button",onClick:()=>{b(()=>s.open({outputs:!0}))},children:t("files.outputs.open")})]})]}),a?.kind==="share"&&(a.check.refusal?e.jsx(B,{label:E(a.check.refusal),onClose:h,actions:e.jsx("button",{type:"button",autoFocus:!0,className:"ui-button ui-button-primary",onClick:h,children:t("files.ok")})}):e.jsx(S,{open:!0,tone:"neutral",icon:e.jsx(L,{size:18}),title:t("files.share.title",{name:a.check.name}),body:t("files.share.body",{size:F(a.check)}),confirmLabel:t("files.share.confirm"),onCancel:h,onConfirm:()=>v([a.check.token])})),a?.kind==="stop"&&e.jsx(S,{open:!0,title:t("files.stop.title",{name:a.folder.name}),body:t("files.stop.body"),confirmLabel:t("files.stop"),onCancel:h,onConfirm:()=>{h(),b(()=>s.stopSharing(a.folder.id))}}),a?.kind==="suggest"&&e.jsxs(B,{label:t("files.suggest.title"),onClose:h,actions:e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",autoFocus:!0,className:"ui-button",onClick:h,children:t("files.cancel")}),e.jsx("button",{type:"button",disabled:!a.chosen.length,className:"ui-button ui-button-primary",onClick:()=>v(a.chosen),children:t("files.share.confirm")})]}),children:[e.jsx("p",{className:"mt-1.5 text-[13px] leading-relaxed text-ink-secondary",children:t("files.suggest.body")}),e.jsx("ul",{className:"mt-3 flex max-h-72 flex-col gap-1 overflow-y-auto",children:a.checks.map((l,r)=>e.jsx("li",{children:e.jsxs("label",{className:j("flex items-start gap-3 rounded-lg px-2 py-2",l.refusal&&"opacity-50"),children:[e.jsx("input",{type:"checkbox",className:"mt-1",disabled:!!l.refusal,checked:!l.refusal&&a.chosen.includes(l.token),onChange:g=>c({...a,chosen:g.target.checked?[...a.chosen,l.token]:a.chosen.filter(T=>T!==l.token)})}),e.jsxs("span",{className:"flex min-w-0 flex-col",children:[e.jsx("span",{className:"truncate text-[14px] text-ink",title:l.pcPath,children:l.name}),e.jsx("span",{className:"text-[12px] text-ink-secondary",children:l.refusal?E(l.refusal,!0):F(l)})]})]})},`${r}:${l.pcPath}`))})]})]}):null}function J({folder:s,bridge:i,busy:o,run:n,onStop:u}){const a=(p,d,f=!1)=>e.jsx("button",{type:"button",disabled:o,className:j("ui-button ui-button-sm",f&&"ui-button-primary"),onClick:d,children:p}),c=s.status==="waiting"?a(t("files.moreSpace"),()=>{n(()=>i.moreSpace())}):s.status==="confirm-deletes"?e.jsxs(e.Fragment,{children:[a(t("files.deletes.remove"),()=>{n(()=>i.answerDeletes(s.id,!0))}),a(t("files.deletes.keep"),()=>{n(()=>i.answerDeletes(s.id,!1))})]}):s.status==="missing"?e.jsxs(e.Fragment,{children:[a(t("files.locate"),()=>{n(()=>i.locate(s.id))},!0),a(t("files.stop"),u)]}):null;return e.jsxs("li",{"data-files-folder":s.status,className:"flex items-start gap-3 px-4 py-3",children:[e.jsx(_,{size:18,className:"mt-0.5 shrink-0 text-ink-secondary"}),e.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-0.5",children:[e.jsx("span",{className:"truncate text-[14px] text-ink",title:s.pcPath,children:s.name}),e.jsx("span",{className:j("text-[12px]",s.status==="problem"||s.status==="missing"?"text-danger":"text-ink-secondary"),children:V(s)}),c&&e.jsx("div",{className:"mt-1.5 flex flex-wrap gap-2",children:c})]}),e.jsx(Q,{name:s.name,busy:o,onOpen:()=>{n(()=>i.open({folderId:s.id}))},onStop:u})]})}function Q({name:s,busy:i,onOpen:o,onStop:n}){const[u,a]=m.useState(!1),c=m.useRef(null);m.useEffect(()=>{if(!u)return;const d=x=>{x.key==="Escape"&&(x.stopPropagation(),a(!1))},f=x=>{x.target instanceof Node&&!c.current?.contains(x.target)&&a(!1)};return window.addEventListener("keydown",d,!0),window.addEventListener("pointerdown",f),()=>{window.removeEventListener("keydown",d,!0),window.removeEventListener("pointerdown",f)}},[u]);const p=(d,f,x=!1)=>e.jsx("button",{type:"button",role:"menuitem",disabled:i,className:j("ui-menu-row w-full text-left",x?"text-danger":"text-ink"),onClick:()=>{a(!1),f()},children:d});return e.jsxs("div",{ref:c,className:"relative shrink-0",children:[e.jsx("button",{type:"button","aria-haspopup":"menu","aria-expanded":u,"aria-label":t("files.more",{name:s}),className:"ui-icon-button hover:bg-control hover:text-ink",onClick:()=>a(d=>!d),children:e.jsx(R,{size:16})}),u&&e.jsxs("div",{role:"menu",className:j("absolute right-0 top-full z-40 mt-1 w-[220px] overflow-hidden text-[13px]",I),children:[p(t("files.openHere"),o),p(t("files.stop"),n,!0)]})]})}function X({disk:s,busy:i,onMore:o}){const n=s.totalBytes>0?Math.min(100,Math.round(s.usedBytes/s.totalBytes*100)):0;return e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("span",{className:"text-[12px] text-ink-secondary",children:t("files.storage",{used:N(s.usedBytes),total:N(s.totalBytes)})}),e.jsx("div",{className:"h-1 w-full overflow-hidden rounded-full bg-control","aria-hidden":"true",children:e.jsx("div",{className:j("h-full rounded-full",s.warn?"bg-warning":"bg-accent"),style:{width:`${n}%`}})}),s.warn&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-[12px] text-warning",children:t("files.almostFull")}),e.jsx("button",{type:"button",disabled:i,className:"ui-button ui-button-sm",onClick:o,children:t("files.moreSpace")})]})]})}function B({label:s,children:i,actions:o,onClose:n}){const u=m.useRef(n);return u.current=n,m.useEffect(()=>{const a=c=>{c.key==="Escape"&&(c.preventDefault(),u.current())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]),A.createPortal(e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/55 p-6",onMouseDown:a=>a.target===a.currentTarget&&n(),children:e.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":"files-dialog-label",className:"w-full max-w-[440px] rounded-2xl border border-hairline/50 bg-panel p-5 shadow-2xl",children:[e.jsx("h2",{id:"files-dialog-label",className:"text-[15px] font-semibold text-ink",children:s}),i,e.jsx("div",{className:"mt-5 flex justify-end gap-2",children:o})]})}),document.body)}export{ne as FilesView,C as failureText,F as folderSize,V as folderStatus,E as refusalText};