local-operator-ui 0.42.7 → 0.42.8
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.
- package/out/main/index.js +14340 -252
- package/out/preload/index.js +58 -2
- package/out/renderer/assets/{_basePickBy-CzIgSCTC.js → _basePickBy-D4Seo5Pz.js} +1 -1
- package/out/renderer/assets/{_baseUniq-Dm8qWLNb.js → _baseUniq-CgVRhJ9V.js} +1 -1
- package/out/renderer/assets/{agent-details-page-BCde4GYu.js → agent-details-page-DSmJIvXx.js} +1 -1
- package/out/renderer/assets/{agent-hub-page-3z0FBryb.js → agent-hub-page-CD_Db8P3.js} +2 -2
- package/out/renderer/assets/{agents-page-DgCWT1qP.js → agents-page-CUktXXX5.js} +3 -3
- package/out/renderer/assets/{approvalsOverlay-2dV79TsD.js → approvalsOverlay-DxEtCZZM.js} +1 -1
- package/out/renderer/assets/{arc-ARfG_3LB.js → arc-Ctuni3QD.js} +1 -1
- package/out/renderer/assets/{architectureDiagram-IEHRJDOE-DLZi8SG_.js → architectureDiagram-IEHRJDOE-CJgH5UIr.js} +1 -1
- package/out/renderer/assets/{blockDiagram-JOT3LUYC-BZ0-FsMz.js → blockDiagram-JOT3LUYC-DPrJH4Ov.js} +1 -1
- package/out/renderer/assets/{book-open-BrntK3Uq.js → book-open-CnrMa_Lj.js} +1 -1
- package/out/renderer/assets/browser-page-B4X8tPFL.js +1 -0
- package/out/renderer/assets/{browser-webauthn-prompt-BNVEHrv9.js → browser-webauthn-prompt-CKXKeFSp.js} +1 -1
- package/out/renderer/assets/{building-2-Bxp0hviH.js → building-2-KNn69NZT.js} +1 -1
- package/out/renderer/assets/{c4Diagram-VJAJSXHY-B52-jW50.js → c4Diagram-VJAJSXHY-CXM6-guv.js} +1 -1
- package/out/renderer/assets/channel-DXQf2vmt.js +1 -0
- package/out/renderer/assets/{chunk-4BMEZGHF-IC-SKIif.js → chunk-4BMEZGHF-D1rW0otO.js} +1 -1
- package/out/renderer/assets/{chunk-A2AXSNBT-BOfVuPOA.js → chunk-A2AXSNBT-CpRdsZLi.js} +1 -1
- package/out/renderer/assets/{chunk-AEK57VVT-B7dCXqfp.js → chunk-AEK57VVT-ZpJc0SjT.js} +1 -1
- package/out/renderer/assets/{chunk-D6G4REZN-U8cPWlh7.js → chunk-D6G4REZN-BnbKbjb5.js} +1 -1
- package/out/renderer/assets/{chunk-RZ5BOZE2-BrJk5jSy.js → chunk-RZ5BOZE2-fE5orPok.js} +1 -1
- package/out/renderer/assets/{chunk-XZIHB7SX-Ct7sEJeN.js → chunk-XZIHB7SX-BocbG9za.js} +1 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-wz5OSVRz.js +1 -0
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-wz5OSVRz.js +1 -0
- package/out/renderer/assets/clone-VMNU3Wnj.js +1 -0
- package/out/renderer/assets/{console-mirror-DZYqU_Y0.js → console-mirror-Biqf_qft.js} +1 -1
- package/out/renderer/assets/{consoleCapture-C1mA9bas.js → consoleCapture-OrznafR2.js} +1 -1
- package/out/renderer/assets/{conversation-input-sync-BDD5IcnH.js → conversation-input-sync-BwzJoCux.js} +257 -260
- package/out/renderer/assets/{dagre-OKDRZEBW-BOaauqFt.js → dagre-OKDRZEBW-CzB91IzU.js} +1 -1
- package/out/renderer/assets/{diagram-SSKATNLV-uExZkj8T.js → diagram-SSKATNLV-Bg5RhMEV.js} +1 -1
- package/out/renderer/assets/{diagram-VNBRO52H-Cq3LidRx.js → diagram-VNBRO52H-C1BWQ4vB.js} +1 -1
- package/out/renderer/assets/{erDiagram-Q7BY3M3F-dZe4cj0o.js → erDiagram-Q7BY3M3F-DjPk0V9l.js} +1 -1
- package/out/renderer/assets/{error-boundary--NwIbr7b.js → error-boundary-vmQ5tlCX.js} +4 -4
- package/out/renderer/assets/{flowDiagram-4HSFHLVR-XNGjxIUH.js → flowDiagram-4HSFHLVR-DqqDHbny.js} +1 -1
- package/out/renderer/assets/{ganttDiagram-APWFNJXF-BmHy8No7.js → ganttDiagram-APWFNJXF-6VnttUUq.js} +1 -1
- package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-49Keol_N.js → gitGraphDiagram-7IBYFJ6S-B2x6qu8n.js} +1 -1
- package/out/renderer/assets/{graph-CnkDtGXQ.js → graph-C6vbd8o2.js} +1 -1
- package/out/renderer/assets/{hash-BPbfeX-Z.js → hash-L2ujAC5o.js} +1 -1
- package/out/renderer/assets/{heart-BrZXiFCO.js → heart-DpdW9OuA.js} +1 -1
- package/out/renderer/assets/{index-BaGz6zcP.js → index-C6H07UMx.js} +1 -1
- package/out/renderer/assets/{index-BNz6rAaW.js → index-C80Kbbvh.js} +1 -1
- package/out/renderer/assets/index-DLDgY5fY.css +1 -0
- package/out/renderer/assets/{index-QsW4kELd.js → index-DOUqLzli.js} +212 -212
- package/out/renderer/assets/index-DZ0oVvBQ.js +55 -0
- package/out/renderer/assets/infoDiagram-PH2N3AL5-BNvFBjw9.js +2 -0
- package/out/renderer/assets/installer-ROSRHzoN.js +1 -0
- package/out/renderer/assets/{journeyDiagram-U35MCT3I-n_M_559I.js → journeyDiagram-U35MCT3I-iD67_k23.js} +1 -1
- package/out/renderer/assets/{kanban-definition-NDS4AKOZ-DMlK_O8P.js → kanban-definition-NDS4AKOZ-BOEu-vrY.js} +1 -1
- package/out/renderer/assets/{layout-DEDBIH-c.js → layout-B6vENNCe.js} +1 -1
- package/out/renderer/assets/legacy-agents-page-B7Wl6Uer.js +33 -0
- package/out/renderer/assets/{library-page-B63NCgBZ.js → library-page-B4nuLGOL.js} +20 -20
- package/out/renderer/assets/{mermaid.core-DjqyuNnS.js → mermaid.core-CIDX9z6e.js} +19 -19
- package/out/renderer/assets/mesh-page-CDYqDvSH.js +1 -0
- package/out/renderer/assets/messages-DbS1PwZU.js +27 -0
- package/out/renderer/assets/{mindmap-definition-ALO5MXBD-Dupy6ZMo.js → mindmap-definition-ALO5MXBD-DZFrqoQW.js} +1 -1
- package/out/renderer/assets/{mini-FETdH6cx.js → mini-BXzq_AA1.js} +1 -1
- package/out/renderer/assets/{notebook-pen-D1EpDnlr.js → notebook-pen-CMhgSRMw.js} +1 -1
- package/out/renderer/assets/{org-access-CWUOPtx3.js → org-access-CGaaYfna.js} +1 -1
- package/out/renderer/assets/{org-surface-gate-Dfe6IW6h.js → org-surface-gate-CGfGEFG5.js} +1 -1
- package/out/renderer/assets/{page-header-B3bOo0UX.js → page-header-CdCjG9NV.js} +1 -1
- package/out/renderer/assets/path-utils-CwYffJ73.js +58 -0
- package/out/renderer/assets/{pieDiagram-IB7DONF6-CQyDM6gY.js → pieDiagram-IB7DONF6-DA8UkA6f.js} +1 -1
- package/out/renderer/assets/projects-page-Cn-KQN1u.js +45 -0
- package/out/renderer/assets/{publication-validation-k7S0tWBX.js → publication-validation-tcVifSwS.js} +1 -1
- package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-Ak7UQ-OV.js → quadrantDiagram-7GDLP6J5-DfViwx-_.js} +1 -1
- package/out/renderer/assets/{radar-MK3ICKWK-CSn4i6lj.js → radar-MK3ICKWK-DybxyfeY.js} +1 -1
- package/out/renderer/assets/{radient-auth-buttons-DuGE8XTY.js → radient-auth-buttons-ByMhjwK9.js} +1 -1
- package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CBYNrzi6.js → requirementDiagram-KVF5MWMF-BHJJn_m3.js} +1 -1
- package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-D1Hj29Pl.js → sankeyDiagram-QLVOVGJD-DRtuiTmO.js} +1 -1
- package/out/renderer/assets/{schedules-page-D_-ba0FU.js → schedules-page-CWm4pp8U.js} +12 -12
- package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-xikcZJiP.js → sequenceDiagram-X6HHIX6F-BS-1w7ox.js} +1 -1
- package/out/renderer/assets/settings-page-D7ZRdQEG.js +287 -0
- package/out/renderer/assets/{smartart-BSlwSDRE.js → smartart-D3PbCQe4.js} +1 -1
- package/out/renderer/assets/{stateDiagram-DGXRK772-9l_IpDEE.js → stateDiagram-DGXRK772-Bejx0VAi.js} +1 -1
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-B-QCGmZj.js +1 -0
- package/out/renderer/assets/team-bridge-page-DrLX5SLK.js +21 -0
- package/out/renderer/assets/{timeline-definition-BDJGKUSR-BdXZrNNw.js → timeline-definition-BDJGKUSR-C1Rfmu0P.js} +1 -1
- package/out/renderer/assets/{use-download-agent-mutation-jPT3Mbn-.js → use-download-agent-mutation-BS29ofCo.js} +2 -2
- package/out/renderer/assets/{use-session-snapshot-DKVI2EOX.js → use-session-snapshot-DoZQzNKC.js} +1 -1
- package/out/renderer/assets/{xychartDiagram-VJFVF3MP-20Xo8qRt.js → xychartDiagram-VJFVF3MP-rQhoehfj.js} +1 -1
- package/out/renderer/browser-approvals-overlay.html +2 -2
- package/out/renderer/console-capture.html +6 -6
- package/out/renderer/index.html +8 -8
- package/out/renderer/installer.html +5 -5
- package/out/renderer/mini.html +8 -8
- package/package.json +4 -4
- package/out/renderer/assets/browser-page-CpskeShW.js +0 -1
- package/out/renderer/assets/channel-BaHap1lA.js +0 -1
- package/out/renderer/assets/classDiagram-GIVACNV2-BQJOqAFd.js +0 -1
- package/out/renderer/assets/classDiagram-v2-COTLJTTW-BQJOqAFd.js +0 -1
- package/out/renderer/assets/clone-DrReGn3F.js +0 -1
- package/out/renderer/assets/index-DhltrflG.js +0 -55
- package/out/renderer/assets/index-UXcKfWo6.css +0 -1
- package/out/renderer/assets/infoDiagram-PH2N3AL5-CK-0Q3Nw.js +0 -2
- package/out/renderer/assets/installer-C38KNAZa.js +0 -1
- package/out/renderer/assets/legacy-agents-page-VA3GryfD.js +0 -33
- package/out/renderer/assets/mesh-page-Bqns7KLZ.js +0 -1
- package/out/renderer/assets/messages-iLQrQMz2.js +0 -3
- package/out/renderer/assets/path-utils-D4lxN8Wn.js +0 -58
- package/out/renderer/assets/projects-page-BjAPFYDN.js +0 -45
- package/out/renderer/assets/settings-page-leUbM4YH.js +0 -287
- package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-Bx04P0q6.js +0 -1
- package/out/renderer/assets/team-bridge-page-CKVgbNNA.js +0 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as x,j as s,c as L}from"./index-DZ0oVvBQ.js";import{C as Ge,E as os,F as ds,G as se,H as cs,R as ms,I as xe,J as Ue,K as Q,L as Ke,M as Ve,N as Xe,a as us,O as ke,q as we,Q as hs}from"./path-utils-CwYffJ73.js";import{P as ps}from"./page-header-CdCjG9NV.js";import{u as W,B as V,A as ge,l as xs,p as fs,h as de,q as gs,r as vs,s as bs,t as _s,v as Ae,w as Pe,k as Le}from"./error-boundary-vmQ5tlCX.js";import{t as a}from"./messages-DbS1PwZU.js";import{C as pe,D as ks,E as ws,F as js,G as ys,I as Ns,J as Is,K as Cs,L as Ms,M as Ss,N as Ds,O as Es,Q as Rs,R as As,T as Ie,U as Ps,V as Ls,W as Ce,X as Ze,Y as Je,Z as Ts,_ as fe,$ as je,a0 as $s,a1 as Os,a2 as ve,a3 as Te,a4 as zs,a5 as Hs,a6 as ye,a7 as Ws,a8 as Qe,a9 as be,aa as Fs,ab as es,ac as qs,ad as Bs,ae as Ys,af as Gs,ag as Us,ah as Ks,ai as Vs,aj as Xs,ak as Zs,al as Js,am as Qs,an as et,ao as st,ap as tt,aq as nt,ar as at,as as it,at as rt,au as lt,av as he,aw as ot}from"./index-DOUqLzli.js";import{ax as Me,ay as Se,az as dt,aA as ss}from"./conversation-input-sync-BwzJoCux.js";import"./console-mirror-Biqf_qft.js";function ct(e){return e==="failed"?"text-danger":pe(e)?"text-ink-muted":"text-ink-dim"}function mt(e){return e==="failed"?a("ui.mesh.mesh_approvals_tray.abandon"):a("ui.mesh.mesh_approvals_tray.stop")}function ut(e){switch(e){case"requested":return[{term:a("ui.mesh.mesh_approvals_tray.signing"),text:a("ui.mesh.mesh_approvals_tray.approving_signs_with_this_machine_s_operator")}];case"approved":return[{term:a("ui.mesh.mesh_approvals_tray.next"),text:a("ui.mesh.mesh_approvals_tray.an_agent_runs_the_install_and_connect")},{term:a("ui.mesh.mesh_approvals_tray.stop"),text:a("ui.mesh.mesh_approvals_tray.stopping_now_denies_the_request_nothing_has")}];case"connecting":return[{term:a("ui.mesh.mesh_approvals_tray.stop"),text:a("ui.mesh.mesh_approvals_tray.stopping_now_denies_the_request_the_runner")}];case"failed":return[{term:a("ui.mesh.mesh_approvals_tray.after_a_stop"),text:a("ui.mesh.mesh_approvals_tray.the_runner_stopped_before_it_finished_abandoning")}];default:return[]}}const ht=({rows:e,error:n,pending:t,refusal:d,onDecide:m,onRetry:h,nowSeconds:f,networkNames:l})=>{W();const b=t!==null,v=x.useMemo(()=>e.filter(o=>pe(o.state)),[e]),w=x.useMemo(()=>e.filter(o=>!pe(o.state)),[e]),[E,C]=x.useState(!1),c=x.useRef(null),u=x.useRef(null),p=x.useRef(null),j=(o,I)=>{I==="deny"&&v.some(R=>R.approvalId===o&&R.kind==="credential")&&(p.current={id:o,origin:document.activeElement,sawPending:!1}),m(o,I)};x.useLayoutEffect(()=>{const o=p.current;if(!o)return;if(t?.approvalId===o.id&&(o.sawPending=!0),d?.approvalId===o.id){p.current=null;return}const I=e.find(M=>M.approvalId===o.id);if(I?.state==="requested"){!t&&o.sawPending&&(p.current=null);return}if(I?.state==="denied"&&t||(p.current=null,I?.state!=="denied"||document.activeElement!==document.body&&document.activeElement!==o.origin))return;(v.length?c.current?.querySelector('[data-tour-tag="mesh-approval-controls"] button:not(:disabled)'):u.current?.querySelector("button"))?.focus({preventScroll:!0})},[e,t,d,v.length]);const N=w.some(o=>o.state==="failed"),D=w.filter(o=>o.state==="failed").length,y=d!==null&&e.some(o=>o.approvalId===d.approvalId&&(pe(o.state)||E));return v.length===0&&w.length===0&&!n&&!d?null:s.jsxs("section",{ref:c,"aria-label":a("ui.mesh.mesh_approvals_tray.approvals"),"data-tour-tag":"mesh-approvals-tray",className:"flex flex-col gap-3",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx(ks,{"aria-hidden":"true",className:"size-4 text-ink-muted"}),s.jsx("h2",{className:"text-body-sm text-ink",children:a("ui.mesh.mesh_approvals_tray.approvals")}),v.length>0&&s.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_approvals_tray.waiting_count",{count:v.length})})]}),n&&s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx("p",{className:"min-w-0 flex-1 text-meta text-ink-muted",children:n}),s.jsx(V,{variant:"secondary",size:"sm",onClick:h,children:a("ui.mesh.mesh_approvals_tray.ask_again")})]}),v.length>0&&s.jsx("ul",{className:"flex flex-col divide-y divide-hairline",children:v.map(o=>s.jsx($e,{row:o,pending:t?.approvalId===o.approvalId?t:null,busy:b,refusal:d?.approvalId===o.approvalId?d:null,onDecide:j,nowSeconds:f,networkNames:l},o.approvalId))}),d&&!y&&s.jsx(ts,{refusal:d}),w.length>0&&s.jsx("div",{ref:u,children:s.jsx(Me,{open:E,onOpenChange:C,chevronClassName:"text-ink-dim",className:L(v.length>0&&"border-hairline border-t pt-3"),summary:s.jsxs("span",{className:"flex items-center gap-1.5 text-meta text-ink-muted",children:[a("ui.mesh.mesh_approvals_tray.settled_approvals"),s.jsxs("span",{className:"text-ink-dim",children:["(",w.length,")"]}),N&&s.jsx("span",{"aria-hidden":"true",className:"size-1.5 rounded-full bg-danger"}),D>0&&s.jsx("span",{className:"text-danger",children:a("ui.mesh.mesh_approvals_tray.failed_count",{count:D})})]}),children:s.jsx("ul",{className:"flex flex-col divide-y divide-hairline","data-tour-tag":"mesh-approvals-records",children:w.map(o=>s.jsx($e,{row:o,pending:t?.approvalId===o.approvalId?t:null,busy:b,refusal:d?.approvalId===o.approvalId?d:null,onDecide:j,nowSeconds:f,networkNames:l},o.approvalId))})})})]})},$e=({row:e,pending:n,busy:t,refusal:d,onDecide:m,nowSeconds:h,networkNames:f})=>{W();const l=pe(e.state),b=ws(e),v=js(e,f),w=ys(e,f),E=Ns(e),C=Is(e),c=Cs(e),u=Ms(e.expiresAt,h),p=e.kind==="credential"||e.kind==="unknown",j=p||e.canApproveHere===!1,N=j?[]:ut(e.state),D=Ss(e),y=Ds(e.state);return s.jsxs("li",{className:"flex flex-col gap-2 py-3 first:pt-0 last:pb-0","data-tour-tag":"mesh-approval-card",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[s.jsx("span",{className:L("text-meta",ct(e.state)),children:e.kind==="credential"&&e.state==="approved"?a("ui.mesh.approval.approved_pending_apply"):Es(e.state)}),s.jsx("div",{className:"grow"}),l&&u&&s.jsx("span",{className:"text-meta text-ink-dim",children:e.kind==="credential"?a("ui.mesh.approval.request_window",{remaining:u}):u})]}),s.jsx("p",{className:"text-body-sm text-ink [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-summary",children:l?v:b}),!j&&e.state==="failed"&&s.jsx("p",{className:"text-meta text-ink-muted","data-tour-tag":"mesh-approval-stopped-note",children:a("ui.mesh.mesh_approvals_tray.the_runner_stopped_before_it_finished_it")}),l&&j&&s.jsx("p",{className:"text-meta text-ink-muted whitespace-pre-wrap [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-cli-remedy",children:e.approveRemedy||a("ui.mesh.approval.cli_review")}),e.kind==="credential"&&e.state==="approved"&&s.jsx("p",{className:"text-meta text-ink-muted","data-tour-tag":"mesh-approval-apply-hint",children:e.details?.length?a("ui.mesh.approval.approved_apply_hint"):a("ui.mesh.approval.approved_details_missing")}),(D||y)&&s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[D&&s.jsx(V,{variant:"primary",size:"sm",disabled:t,onClick:()=>m(e.approvalId,"approve"),"data-tour-tag":"mesh-approval-approve",children:a("ui.mesh.mesh_approvals_tray.approve")}),y&&s.jsx(V,{variant:"ghost",size:"sm",disabled:t,onClick:()=>m(e.approvalId,"deny"),"data-tour-tag":l?"mesh-approval-deny":"mesh-approval-stop",children:l?a("ui.mesh.mesh_approvals_tray.deny"):mt(e.state)}),n&&s.jsx("span",{className:"text-meta text-ink-dim",children:n.decision==="approve"?a("ui.mesh.mesh_approvals_tray.waiting_for_the_signing_prompt"):a("ui.mesh.mesh_approvals_tray.writing_the_decision")})]}),s.jsxs(Me,{chevronClassName:"text-ink-dim",summary:s.jsx("span",{className:"text-meta",children:a("ui.mesh.mesh_approvals_tray.details")}),children:[p&&(e.details?.length?s.jsx("ul",{className:"flex flex-col gap-1.5 text-meta text-ink-muted [overflow-wrap:anywhere]","data-tour-tag":"mesh-approval-server-details",children:e.details.map((o,I)=>s.jsx("li",{className:"whitespace-pre-wrap",children:o},`${I}:${o}`))}):s.jsx("p",{className:"text-meta text-ink-muted",children:a("ui.mesh.approval.details_unavailable")})),w.length>0&&s.jsx("dl",{className:"grid grid-cols-[max-content_1fr] gap-x-4 gap-y-0.5 text-meta text-ink-dim","data-tour-tag":"mesh-approval-consequences",children:w.map(o=>s.jsxs(x.Fragment,{children:[s.jsx("dt",{className:"text-ink-muted",children:o.term}),s.jsx("dd",{children:o.consequence})]},o.term))}),(E||C)&&s.jsxs("p",{className:"text-meta text-ink-muted",children:[E&&s.jsx("span",{children:E}),E&&C&&s.jsx("span",{children:" · "}),C&&s.jsx("span",{className:"font-mono",children:C})]}),c&&s.jsx("p",{className:"text-meta text-ink-dim",children:c}),N.length>0&&s.jsx("dl",{className:"grid grid-cols-[max-content_1fr] gap-x-4 gap-y-0.5 text-meta","data-tour-tag":"mesh-approval-consequence",children:N.map(o=>s.jsxs(x.Fragment,{children:[s.jsx("dt",{className:"text-ink-muted",children:o.term}),s.jsx("dd",{className:"text-ink-muted",children:o.text})]},o.term))})]}),d&&s.jsx(ts,{refusal:d})]})},ts=({refusal:e})=>(W(),s.jsx(ge,{variant:"warning",className:"text-meta","data-tour-tag":"mesh-approval-refusal",children:s.jsxs("span",{className:"flex min-w-0 flex-wrap items-center gap-2",children:[s.jsx("span",{className:"min-w-0 flex-1",children:e.sentence}),s.jsx("span",{className:"shrink-0 font-mono text-ink-dim",children:e.code})]})})),pt=4,_e={kind:"idle"};function xt(e){switch(e.kind){case"dragging":case"settling":return e.payload.session.id;case"pressing":return null;default:return null}}function ee(e,n){switch(n.kind){case"press":return e.kind!=="idle"?e:{kind:"pressing",payload:n.payload,originX:n.x,originY:n.y,pointerId:n.pointerId};case"move":return e.kind==="pressing"?Math.max(Math.abs(n.x-e.originX),Math.abs(n.y-e.originY))<pt?e:{kind:"dragging",payload:e.payload,x:n.x,y:n.y,target:n.target,pointerId:e.pointerId}:e.kind==="dragging"?{...e,x:n.x,y:n.y,target:n.target}:e;case"release":return e.kind==="dragging"?{kind:"settling",payload:e.payload,target:e.target}:e.kind==="pressing"?_e:e;case"cancel":case"settled":return _e;default:return e}}const ft=({edges:e,geometry:n,selectedDeviceId:t})=>s.jsx("svg",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 left-0 overflow-visible",width:n.bounds.width,height:n.bounds.height,children:e.map(d=>{const m=n.networks.get(d.networkId),h=n.devices.get(d.deviceId);if(!m||!h)return null;const f=t!==null&&d.deviceId===t;return s.jsx("path",{"data-mesh-edge":d.key,d:Rs(m,h),fill:"none",strokeWidth:f?2:1.5,className:f?"stroke-ink":"stroke-ink-dim"},d.key)})}),De=({deviceId:e,name:n,compact:t=!1,deviceIds:d,className:m})=>{W();const h=Ge({name:n});return s.jsxs("span",{className:L("flex min-w-0 items-baseline gap-2",m),"data-mesh-device-identity":e,children:[s.jsx(xs,{content:n?.trim()?h:null,children:s.jsx("span",{className:"min-w-0 flex-1 truncate text-start","data-mesh-device-name":"",children:h})}),s.jsx("span",{className:"shrink-0 font-mono text-meta text-ink-muted","data-mesh-device-id":"",title:e,children:t?os(e,d):e})]})},gt={self:"border-l-hairline",reached:"border-l-hairline","relay-down":"border-l-warning","handshake-refused":"border-l-warning","address-unreachable":"border-l-warning","no-endpoint":"border-l-hairline","not-a-member":"border-l-hairline",unanswered:"border-l-warning","not-attempted":"border-l-hairline",unknown:"border-l-hairline"};function vt(e){return e.suspect?"border-l-danger":gt[se(e)]}const bt={self:"ring-2 ring-accent",reachable:null,relay_down:null,handshake_refused:null,unreachable:null,suspect:null},_t={accept:"border-accent bg-accent-wash",refuse:"border-warning"};function kt(e,n,t){return[Ge(e),e.id,Je(e,n),t].filter(Boolean).join(", ")}function te(e){return e.name.trim()||e.id.slice(-6)}function ns(e,n,t){if(t!=="reached"&&t!=="self"){const d=xe(t);return e.unreachable_reason?`${d} (${e.unreachable_reason})`:d}return e.live_state.trim()?e.live_state.trim():e.locality==="local"?a("ui.mesh.mesh_drop.on_this_device"):a("ui.mesh.mesh_node.on_device",{device:n})}const wt={resting:"border-l-2 border-l-hairline",attention:"border-l-2 border-l-warning"},jt=({network:e,x:n,y:t,refused:d})=>(W(),s.jsxs("li",{"data-mesh-network":e.id,"data-mesh-network-refused":d?"true":void 0,"data-glass-block":"",className:L("absolute flex items-center gap-2 rounded-md border bg-elevated px-3",d?"border-warning":"border-hairline"),style:{left:n,top:t,width:Ie,height:As},children:[s.jsx(Se,{"aria-hidden":"true",className:"size-4 shrink-0 text-ink-muted"}),s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("span",{className:"block truncate text-body-sm text-ink",children:e.label}),s.jsxs("span",{title:a("ui.mesh.mesh_list.epoch",{epoch:e.epoch}),className:"block truncate text-meta text-ink-dim",children:[a("ui.mesh.mesh_graph.device_count",{count:e.memberCount}),e.revokedCount>0?s.jsxs(s.Fragment,{children:[" · ",a("ui.mesh.mesh_list.revoked_count",{count:e.revokedCount})]}):null]})]})]})),yt=({device:e,deviceIds:n,x:t,y:d,nowSeconds:m,selected:h,sessions:f,sessionTotal:l,dropState:b,movingSessionId:v,draggedSessionId:w,onOpen:E,onChipPointerDown:C,onChipClick:c,onShowAllSessions:u})=>{W();const{activity:p}=ds(e,f.rows),j=p==="working",N=kt(e,m,j?"working":null),D=se(e);return s.jsxs("li",{"data-mesh-device":e.id,"data-mesh-state":e.state,"data-mesh-drop":b??void 0,"aria-current":h?"true":void 0,"data-glass-block":"",className:L("absolute flex flex-col rounded-md border border-l-4 border-control bg-elevated","hover:bg-row-hover",h&&"border-y-ink border-r-ink bg-row-selected",vt(e),bt[e.state],b&&_t[b]),style:{left:t,top:d,width:Ie,height:Ps},children:[s.jsxs("button",{type:"button","data-mesh-device-open":e.id,"data-mesh-reach":D,"aria-label":N,title:cs(e),onClick:()=>E(e.id),className:L("flex w-full flex-col justify-between rounded-t-[5px] px-3 pt-2 pb-2 text-start","cursor-pointer","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-[-2px]"),style:{height:Ls},children:[s.jsxs("span",{className:"flex w-full min-w-0 items-center gap-2",children:[s.jsx(dt,{"aria-hidden":"true",className:"size-4 shrink-0 text-ink-muted"}),s.jsx(De,{className:"min-w-0 flex-1 text-body-sm text-ink",deviceId:e.id,deviceIds:n,name:e.name,compact:!0}),e.suspect&&s.jsx(Ce,{"aria-hidden":"true",className:"size-3.5 shrink-0 text-danger"})]}),s.jsxs("span",{className:"flex w-full min-w-0 items-baseline gap-1",children:[s.jsx("span",{className:"w-3 shrink-0 font-mono text-body-sm text-ink tabular-nums",children:e.sessionCount??"–"}),s.jsx("span",{className:L("min-w-0 truncate text-meta",e.sessionCount===null?"text-ink-dim":"text-ink-muted"),children:Ze(e.sessionCount)})]}),s.jsxs("span",{"data-mesh-state-line":"",className:"flex w-full min-w-0 items-baseline gap-1.5 text-meta",children:[s.jsx("span",{"aria-hidden":"true",className:"shrink-0 text-ink-dim",children:ms[D]}),s.jsx("span",{className:L("shrink-0",Ue[D]),children:xe(D)}),j&&s.jsx("span",{"data-mesh-working":"",className:"shrink-0 text-info",children:a("ui.mesh.mesh_node.working")}),e.memberships.length>1&&s.jsx("span",{className:"min-w-0 truncate text-ink-dim",children:a("ui.mesh.mesh_node.memberships",{count:e.memberships.length})})]})]}),s.jsxs("ul",{"aria-label":a("ui.mesh.mesh_node.conversations_on",{device:Q(e,n,!0)}),className:L("m-0 flex h-6 list-none items-center gap-1 overflow-hidden px-3",b==="accept"&&"opacity-40"),children:[f.shown.map(y=>s.jsx(Nt,{session:y,ownerLabel:Q(e,n,!0),ownerReach:D,ownerReachable:e.reachable,moving:v===y.id,dragging:w===y.id,onPointerDown:C,onClick:()=>c(y)},y.id)),f.hidden>0&&s.jsx("li",{className:"shrink-0",children:s.jsxs("button",{type:"button","data-mesh-more":e.id,onClick:()=>u(e.id),className:L("flex min-h-6 items-center rounded-sm px-1.5 text-meta text-ink-dim","hover:bg-row-hover hover:text-ink","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),title:a("ui.mesh.mesh_node.shown_conversations",{shown:f.shown.length,total:l}),"aria-label":a("ui.mesh.mesh_node.show_all_conversations",{count:l}),children:["+",f.hidden]})})]})]})},Nt=({session:e,ownerLabel:n,ownerReach:t,ownerReachable:d,moving:m,dragging:h,onPointerDown:f,onClick:l})=>{W();const b=ns(e,n,t);return m?s.jsx("li",{role:"status","data-mesh-session":e.id,"data-mesh-moving":"true",children:s.jsx("span",{className:"flex min-h-6 items-center rounded-sm bg-sunken px-1.5 text-meta text-ink-muted",children:a("ui.mesh.mesh_card.moving")})}):s.jsx("li",{className:"min-w-0 flex-1","data-mesh-session-item":e.id,"data-mesh-dragging":h?"true":void 0,children:s.jsx("button",{type:"button","data-mesh-session":e.id,style:{touchAction:"none"},title:`${te(e)} · ${b}`,"aria-label":a("ui.mesh.mesh_node.open_conversation",{conversation:te(e),fact:b,owner:n}),onPointerDown:v=>f(v,e),onClick:()=>l(e),className:L("flex min-h-6 w-full max-w-32 items-center rounded-sm border border-hairline bg-surface px-1.5 text-start text-meta text-ink-muted","cursor-grab active:cursor-grabbing","hover:text-ink",wt[Ts(e,d)],h&&"opacity-60","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),children:s.jsx("span",{className:"min-w-0 flex-1 truncate",children:te(e)})})})};function Oe(e){const n=e.trim();if(!n)return null;if(n.startsWith("[")){const d=n.indexOf("]");if(d<=1)return null;const m=n.slice(1,d),h=n.slice(d+1);if(!h)return{host:m,port:null};if(!h.startsWith(":"))return null;const f=Number(h.slice(1));return{host:m,port:Number.isInteger(f)?f:null}}const t=n.lastIndexOf(":");if(t>0){const d=n.slice(t+1);if(/^\d+$/.test(d))return{host:n.slice(0,t),port:Number(d)}}return{host:n,port:null}}function ze(e){const n=e.trim().split(".");if(n.length!==4)return null;for(const t of n)if(!/^\d{1,3}$/.test(t)||Number(t)>255)return null;return`${n[0]}.${n[1]}.${n[2]}`}function It(e){return`${e}.x`}function Ct(e){const n=new Map;for(const d of e.values())for(const m of d)n.set(m,(n.get(m)??0)+1);const t=new Set;for(const[d,m]of n)m>1&&t.add(d);return t}function Ne(e){return new Set(e.endpoints.map(n=>n.trim()).filter(Boolean))}function Mt(e,n){const t=e.filter(c=>c.id!==n),d=e.find(c=>c.id===n)??null,m=new Map;for(const c of e)m.set(c.id,Ne(c));const h=Ct(m),f=new Set;for(const c of d?Ne(d):[]){if(h.has(c))continue;const u=Oe(c),p=u?ze(u.host):null;p&&f.add(p)}const l=c=>{const u=new Set;for(const p of Ne(c)){if(h.has(p))continue;const j=Oe(p),N=j?ze(j.host):null;N&&u.add(N)}return u},b=new Map,v=new Map;for(const c of t){const u=St(c);if(u){b.set(u,[...b.get(u)??[],c.id]);continue}for(const p of l(c))v.set(p,[...v.get(p)??[],c.id])}const w=new Map(e.map((c,u)=>[c.id,u])),E=c=>[...c].sort((u,p)=>(w.get(u)??0)-(w.get(p)??0)),C=[];for(const[c,u]of b)C.push({prefix:c,tier:"declared",deviceIds:E(u),get words(){return a("ui.mesh.mesh_scope.declared")}});for(const[c,u]of v)f.has(c)?C.push({prefix:c,tier:"shared",deviceIds:E(u),get words(){return a("ui.mesh.mesh_scope.shared_with_this_device")}}):u.length>1&&C.push({prefix:c,tier:"probable",deviceIds:E(u),get words(){return a("ui.mesh.mesh_scope.same_prefix")}});return C.sort((c,u)=>c.tier.localeCompare(u.tier)||c.prefix.localeCompare(u.prefix))}function St(e){for(const n of e.memberships){const t=n.scope.trim();if(t)return t}return""}const He={declared:0,shared:1,probable:2};function Dt(e,n){const t=new Map;for(const m of e){let h=null;for(const l of m.deviceIds){const b=n.get(l);b!==void 0&&(h===null||b<h.slot)&&(h={id:l,slot:b})}if(h===null)continue;const f=t.get(h.id);f===void 0?t.set(h.id,{slot:h.slot,groups:[m]}):f.groups.push(m)}const d=m=>{let h=-1;for(const f of m.deviceIds){const l=n.get(f);l!==void 0&&l>h&&(h=l)}return h};return[...t.entries()].sort((m,h)=>m[1].slot-h[1].slot).map(([m,h])=>({deviceId:m,groups:h.groups.sort((f,l)=>d(l)-d(f)||He[f.tier]-He[l.tier]||f.prefix.localeCompare(l.prefix))}))}function Et(e){return new Map(e.map(n=>[n.deviceId,n.groups.length]))}function Rt(e){return`${e.tier==="declared"?e.prefix:It(e.prefix)} · ${e.words}`}const We=(e,n)=>e.deviceIds.map(t=>n.devices.get(t)).filter(t=>t!==void 0),At=({stacks:e,geometry:n})=>(W(),s.jsx("div",{"aria-hidden":"true",className:"pointer-events-none absolute top-0 left-0",children:e.map(t=>{const d=t.groups.length,m=new Array(d).fill(0);let h=null;for(let l=d-1;l>=0;l-=1){const b=We(t.groups[l],n),v=(b.length===0?0:Math.max(...b.map(w=>w.y+w.height)))+fe;h=h===null?v:Math.max(v,h+je),m[l]=h}const f=n.devices.get(t.deviceId);return t.groups.map((l,b)=>{const v=We(l,n);if(v.length===0)return null;const w=d-1-b,E=Math.min(...v.map(N=>N.x)),C=Math.max(...v.map(N=>N.x)),u=(f?.y??Math.min(...v.map(N=>N.y)))-fe-$s*w,p=l.tier==="declared",j=Rt(l);return s.jsx("div",{"data-mesh-scope":`${l.tier}:${l.prefix}`,"data-mesh-scope-level":b,className:L("absolute rounded-lg",l.tier==="probable"?"border border-dashed border-hairline-strong":"border border-control"),style:{left:E-fe-je*w,top:u,width:C+Ie-E+(fe+je*w)*2,height:m[b]-u},children:s.jsx("span",{"data-mesh-scope-label":"",className:L("absolute bottom-full left-1 mb-0.5 whitespace-nowrap text-meta",l.tier==="probable"?"text-ink-dim":"text-ink-muted",p&&"font-medium"),children:j})},`${l.tier}:${l.prefix}`)})})})),Fe=48,qe=1.25,Pt=.0015,Lt=({graph:e,slots:n,nowSeconds:t,selectedDeviceId:d,sessions:m,sessionTotals:h,movingSessionId:f,canMove:l,onOpenDevice:b,onAskMove:v,onDropRefused:w,onShowAllSessions:E,summaryId:C})=>{W();const c=x.useRef(null),[u,p]=x.useState({width:0,height:0,clipWidth:0,clipHeight:0,left:0,top:0}),[j,N]=x.useState({k:1,tx:0,ty:0}),D=x.useRef(!1),y=x.useRef(!1),o=x.useRef(null),I=x.useMemo(()=>Mt(e.devices,e.selfDeviceId),[e.devices,e.selfDeviceId]),R=x.useMemo(()=>Dt(I,n.devices),[I,n]),M=x.useMemo(()=>Os(n,Et(R)),[n,R]),S=x.useMemo(()=>({selfDeviceId:e.selfDeviceId,devices:new Map(e.devices.map(i=>[i.id,i])),networks:new Map(e.networks.map(i=>[i.id,i]))}),[e]),[_,$]=x.useState(_e),ce=x.useRef({kind:"ground"}),ne=x.useCallback((i,r)=>{const g=document.elementFromPoint(i,r),A=g?.closest("[data-mesh-device]");if(A){const K=A.getAttribute("data-mesh-device");if(K)return{kind:"device",deviceId:K}}const H=g?.closest("[data-mesh-network]");if(H){const K=H.getAttribute("data-mesh-network");if(K)return{kind:"network",networkId:K}}return{kind:"ground"}},[]),T=x.useMemo(()=>_.kind!=="dragging"&&_.kind!=="settling"?null:ve(_.payload,_.target,S),[_,S]),Y=x.useCallback(i=>{if(!T)return null;if(T.kind==="plan"){const r=_.kind==="dragging"||_.kind==="settling"?_.target:null;return r&&r.kind==="device"&&r.deviceId===i?"accept":null}if(T.kind==="refused"){const r=_.kind==="dragging"||_.kind==="settling"?_.target:null;return r&&r.kind==="device"&&r.deviceId===i?"refuse":null}return null},[T,_]),ae=x.useCallback((i,r)=>{if(!l||i.button!==0)return;y.current=!1;const g=r.locality==="local"?e.selfDeviceId??"":r.owner_device,A=S.devices.get(g),H={session:r,ownerDeviceId:g,ownerLabel:A?Q(A,[...S.devices.keys()],!0):r.owner_device_name};try{i.currentTarget.setPointerCapture(i.pointerId)}catch{}$(K=>ee(K,{kind:"press",payload:H,x:i.clientX,y:i.clientY,pointerId:i.pointerId}))},[l,S,e.selfDeviceId]),ie=i=>{if(_.kind==="pressing"||_.kind==="dragging"){const r=ne(i.clientX,i.clientY);ce.current=r,$(g=>ee(g,{kind:"move",x:i.clientX,y:i.clientY,target:r}));return}X(i)},me=i=>{if(ue(i),_.kind!=="pressing"&&_.kind!=="dragging")return;if(_.kind==="pressing"){$(g=>ee(g,{kind:"cancel"}));return}const r=ve(_.payload,_.target,S);y.current=!0,$(g=>ee(g,{kind:"release"})),r.kind==="plan"?v({plan:r.plan,alternatives:r.alternatives,risky:r.risky}):r.kind==="refused"&&w({code:r.code,sentence:r.sentence,reach:r.reach,remedy:r.remedy,plan:r.plan??null}),$(g=>ee(g,{kind:"settled"}))};x.useEffect(()=>()=>$(_e),[]);const re=x.useCallback(()=>{N(Te(M.bounds,u))},[M.bounds,u]);x.useEffect(()=>{const i=c.current;if(!i)return;const r=()=>{const A=i.getBoundingClientRect();p({width:A.width,height:A.height,clipWidth:i.clientWidth,clipHeight:i.clientHeight,left:A.left,top:A.top})};r();const g=new ResizeObserver(r);return g.observe(i),()=>g.disconnect()},[]),x.useEffect(()=>{D.current||u.width<=0||u.height<=0||(D.current=!0,N(Te(M.bounds,u)))},[u,M.bounds]),x.useEffect(()=>{const i=o.current;if(o.current={width:u.width,height:u.height},!i||!D.current||u.width<=0||u.height<=0||u.width>=i.width&&u.height>=i.height||!d)return;const r=M.devices.get(d);r&&N(g=>{const A={width:u.clipWidth,height:u.clipHeight},H=Math.max(0,Math.min(A.width-M.bounds.width*g.k,A.height-M.bounds.height*g.k));return zs(g,r,A,Math.min(Ws,H))})},[u,d,M]);const q=_.kind==="dragging"?{x:_.x-u.left+12,y:_.y-u.top+12}:{x:0,y:0},le=T?Hs(T):null,G=x.useRef(null),k=x.useRef(null),P=x.useRef(null),O=x.useRef(null),U=x.useCallback(()=>{P.current=null;const i=G.current,r=k.current;if(G.current=null,k.current=null,i){const g=O.current;if(!g)return;N({k:g.transform.k,tx:g.transform.tx+(i.x-g.x),ty:g.transform.ty+(i.y-g.y)});return}r&&N(g=>ye(g,{x:r.x,y:r.y},g.k*Math.exp(-r.deltaY*Pt)))},[]),z=x.useCallback(()=>{P.current===null&&(P.current=requestAnimationFrame(U))},[U]);x.useEffect(()=>()=>{P.current!==null&&cancelAnimationFrame(P.current)},[]);const Z=i=>{!(i.target===i.currentTarget)&&i.button!==1||i.button!==0&&i.button!==1||(O.current={x:i.clientX,y:i.clientY,transform:j},i.currentTarget.setPointerCapture(i.pointerId),i.preventDefault())},X=i=>{O.current&&(G.current={x:i.clientX,y:i.clientY},z())},ue=i=>{O.current&&(O.current=null,G.current=null,i.currentTarget.hasPointerCapture(i.pointerId)&&i.currentTarget.releasePointerCapture(i.pointerId))},J=x.useCallback(i=>{if(i.deltaY===0)return;i.preventDefault();const r=i.currentTarget.getBoundingClientRect();k.current={x:i.clientX-r.left,y:i.clientY-r.top,deltaY:i.deltaY},z()},[z]);x.useEffect(()=>{const i=c.current;if(i)return i.addEventListener("wheel",J,{passive:!1}),()=>i.removeEventListener("wheel",J)},[J]);const oe=i=>{const r=i.shiftKey?Fe*4:Fe;switch(i.key){case"Escape":if(_.kind!=="pressing"&&_.kind!=="dragging")return;i.preventDefault(),_.kind==="dragging"&&(y.current=!0),$(g=>ee(g,{kind:"cancel"}));return;case"0":i.preventDefault(),re();return;case"+":case"=":i.preventDefault(),N(g=>ye(g,{x:u.width/2,y:u.height/2},g.k*qe));return;case"-":case"_":i.preventDefault(),N(g=>ye(g,{x:u.width/2,y:u.height/2},g.k/qe));return;case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"ArrowDown":{i.preventDefault();const g=i.key==="ArrowLeft"?r:i.key==="ArrowRight"?-r:0,A=i.key==="ArrowUp"?r:i.key==="ArrowDown"?-r:0;N(H=>({...H,tx:H.tx+g,ty:H.ty+A}));return}}};return s.jsxs("div",{ref:c,"data-mesh-canvas":"",role:"group","aria-labelledby":C,tabIndex:0,onPointerDown:Z,onPointerMove:ie,onPointerUp:me,onPointerCancel:i=>{_.kind==="dragging"&&(y.current=!0),$(r=>ee(r,{kind:"cancel"})),ue(i)},"data-mesh-gesture":_.kind,"data-glass-well":"clear",onKeyDown:oe,onDoubleClick:i=>{i.target===i.currentTarget&&re()},className:L("relative min-h-0 flex-1 overflow-hidden rounded-lg border border-hairline bg-sunken","[touch-action:none]","cursor-grab active:cursor-grabbing","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-[-2px]"),children:[s.jsx("div",{"data-mesh-ground":"","aria-hidden":"true",className:"mesh-ground pointer-events-none absolute inset-0",style:{backgroundPosition:`${j.tx}px ${j.ty}px`}}),s.jsxs("div",{"data-mesh-world":"",className:"absolute top-0 left-0",style:{transform:`translate3d(${j.tx}px, ${j.ty}px, 0) scale(${j.k})`,transformOrigin:"0 0",width:M.bounds.width,height:M.bounds.height},children:[s.jsx(At,{stacks:R,geometry:M}),s.jsx(ft,{edges:e.edges,geometry:M,selectedDeviceId:d}),s.jsx("ul",{"aria-label":a("ui.mesh.mesh_canvas.networks"),className:"m-0 list-none p-0",children:e.networks.map(i=>{const r=M.networks.get(i.id);return r?s.jsx(jt,{network:i,x:r.x,y:r.y,refused:T?.kind==="refused"&&_.kind==="dragging"&&_.target.kind==="network"&&_.target.networkId===i.id},i.id):null})}),s.jsx("ul",{"aria-label":a("ui.mesh.mesh_canvas.devices"),className:"m-0 list-none p-0",children:e.devices.map(i=>{const r=M.devices.get(i.id);return r?s.jsx(yt,{device:i,deviceIds:e.devices.map(g=>g.id),x:r.x,y:r.y,nowSeconds:t,selected:i.id===d,sessions:m.get(i.id)??{rows:[],shown:[],hidden:0},sessionTotal:h.get(i.id)??i.sessionCount??0,dropState:Y(i.id),movingSessionId:f,draggedSessionId:xt(_),onOpen:b,onChipPointerDown:ae,onChipClick:()=>{if(y.current){y.current=!1;return}b(i.id)},onShowAllSessions:E},i.id):null})})]}),_.kind==="dragging"&&s.jsx("div",{"data-mesh-ghost":"","aria-hidden":"true",className:"pointer-events-none absolute z-10 max-w-40 truncate rounded-sm border border-ink-dim bg-surface px-1.5 py-0.5 text-meta text-ink",style:{left:q.x,top:q.y},children:_.payload.session.name||"untitled"}),_.kind==="dragging"&&le&&s.jsx("div",{"data-mesh-indicator":"",className:L("pointer-events-none absolute z-10 rounded-sm border bg-surface px-2 py-1 text-meta",T?.kind==="refused"?"border-warning text-warning":"border-control text-ink"),style:{left:q.x,maxWidth:Math.max(160,u.width-q.x-12),...q.y>u.height*.6?{bottom:Math.max(12,u.height-q.y+8)}:{top:q.y+24}},children:le})]})};function Tt(e,n,t,d){const m=t.locality==="local"?n:t.owner_device,h=[],f=e.map(l=>l.id);for(const l of e){if(l.id===m)continue;if(l.id===n){h.push({deviceId:l.id,label:d,verb:a("ui.mesh.mesh_card.recall_to_this_device"),keepVerb:a("ui.mesh.mesh_card.copy_here_leave_it_there")});continue}const b=Q(l,f,!0);h.push({deviceId:l.id,label:b,verb:a("ui.mesh.mesh_card.move_to",{device:b}),keepVerb:a("ui.mesh.mesh_card.copy_to",{device:b})})}return h}function $t(e,n,t){return Tt(e.devices,e.selfDeviceId,n,t)}function as(e,n,t){const d=$t(e,n,t),m={selfDeviceId:e.selfDeviceId,devices:new Map(e.devices.map(l=>[l.id,l])),networks:new Map(e.networks.map(l=>[l.id,l]))},h=n.locality==="local"?e.selfDeviceId??"":n.owner_device,f=m.devices.get(h);return d.map(l=>{const b=ve({session:n,ownerDeviceId:h,ownerLabel:f?Q(f,e.devices.map(v=>v.id),!0):n.owner_device_name},{kind:"device",deviceId:l.deviceId},m);return{...l,refused:b.kind==="refused"&&b.code!=="busy"?b.sentence:null}})}const is=({session:e,destinations:n,disabled:t,onChoose:d,onOpenChange:m,trigger:h,triggerLabel:f})=>(W(),s.jsxs(gs,{onOpenChange:m,children:[s.jsx(vs,{asChild:!0,children:s.jsx("button",{type:"button","aria-label":f,"data-mesh-session-menu":e.id,disabled:t||n.length===0,className:"rounded-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 disabled:text-ink-disabled",children:h})}),s.jsxs(bs,{align:"start",className:"min-w-56",children:[s.jsx(_s,{children:te(e)}),s.jsx(Ae,{}),n.map(l=>s.jsx(Pe,{"data-mesh-move-to":l.deviceId,disabled:!!l.refused,title:l.refused??void 0,onSelect:()=>d(l,!1),children:l.verb},l.deviceId)),s.jsx(Ae,{}),n.map(l=>s.jsx(Pe,{"data-mesh-copy-to":l.deviceId,disabled:!!l.refused,title:l.refused??void 0,onSelect:()=>d(l,!0),children:l.keepVerb},`keep-${l.deviceId}`))]})]})),Ot=({device:e,deviceIds:n,sessions:t,sessionTotal:d,nowSeconds:m,destinationsFor:h,movingSessionId:f,canMove:l,canInvite:b,onClose:v,onMove:w,onShowInList:E,onInvite:C,onRemoveMember:c})=>{W();const u=se(e),p=Ke(e),j=e.reachable?[]:e.attempts??[];x.useEffect(()=>{const o=I=>{I.key!=="Escape"||I.defaultPrevented||I.target?.closest('[role="menu"],[role="dialog"]')||(document.querySelector(`[data-mesh-device-open="${e.id}"]`)?.focus(),v())};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[e.id,v]);const N=e.sessionCount===null?Ze(null):a("ui.mesh.mesh_card.conversation_count",{count:e.sessionCount}),D=e.suspect?Ve():[N,xe(u)].filter(Boolean).join(" · "),y=d>t.rows.length?a("ui.mesh.mesh_card.shown_of",{shown:t.rows.length,total:d}):`${t.rows.length}`;return s.jsxs("aside",{"aria-label":a("ui.mesh.mesh_card.device_details",{device:Q(e)}),"data-mesh-panel":e.id,"data-glass-block":"",className:"flex w-80 shrink-0 flex-col gap-3 overflow-y-auto rounded-md border border-hairline bg-surface p-4",children:[s.jsxs("header",{className:"flex flex-col gap-1",children:[s.jsx(V,{size:"sm",variant:"ghost",className:"w-fit self-end","data-mesh-panel-close":"",onClick:v,children:a("ui.mesh.mesh_actions.close")}),s.jsx("h2",{className:"text-body-sm text-ink",children:s.jsx(De,{deviceId:e.id,deviceIds:n,name:e.name,compact:!0})}),s.jsxs("p",{className:"flex items-center gap-1.5 text-meta text-ink-muted",children:[e.suspect&&s.jsx(Ce,{"aria-hidden":"true",className:"size-3.5 text-danger"}),!e.suspect&&u==="unanswered"&&s.jsx(fs,{"aria-hidden":"true",className:"size-3.5 text-warning"}),D]})]}),s.jsx(de,{}),s.jsxs("section",{className:"flex flex-col gap-2",children:[s.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.memberships")}),s.jsx("ul",{className:"m-0 flex list-none flex-col gap-2 p-0",children:e.memberships.map(o=>s.jsxs("li",{className:"flex flex-col gap-1",children:[s.jsxs("span",{className:"flex items-center gap-2 text-body-sm text-ink",children:[s.jsx(Se,{"aria-hidden":"true",className:"size-3.5 text-ink-muted"}),o.networkName]}),s.jsxs("span",{className:"text-meta text-ink-dim",children:[o.role||"member",o.capabilities.length>0?` · ${o.capabilities.join(", ")}`:""]}),b&&s.jsxs(V,{size:"sm",variant:"ghost",className:"w-fit","data-mesh-remove-member":`${o.networkId}:${e.id}`,onClick:()=>c(e,o.networkId),children:[a("ui.mesh.mesh_card.remove_from"),o.networkName,"…"]})]},o.networkId))}),b&&s.jsx(V,{size:"sm",variant:"secondary",className:"w-fit","data-mesh-invite":e.id,onClick:()=>C(e),children:a("ui.mesh.mesh_actions.invite_to_a_network")})]}),s.jsx(de,{}),s.jsxs("section",{className:"flex shrink-0 flex-col gap-2",children:[s.jsxs("h3",{className:"text-meta text-ink-dim",children:[a("ui.mesh.mesh_card.conversations"),s.jsxs("span",{className:"text-ink-disabled",children:["(",se(e)!=="self"&&se(e)!=="reached"?Qe(null):y,")"]})]}),be(e,m)?s.jsx("p",{className:"text-meta text-warning",children:be(e,m)}):t.rows.length===0?s.jsx("p",{className:"text-meta text-ink-dim",children:e.sessionCount===null?a("ui.mesh.mesh_card.this_device_did_not_report_its_conversations"):a("ui.mesh.mesh_card.no_conversations_here")}):s.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:t.rows.map(o=>s.jsxs("li",{"data-mesh-panel-session":o.id,className:L("flex items-center gap-2 rounded-sm px-2 py-1","border border-hairline bg-elevated",f===o.id&&"border-control"),children:[s.jsx("span",{className:"min-w-0 flex-1 truncate text-body-sm text-ink",title:te(o),children:te(o)}),s.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:ns(o,Q(e,n,!0),se(e))}),f===o.id?s.jsx("span",{className:"shrink-0 text-meta text-ink-muted",children:a("ui.mesh.mesh_card.moving")}):s.jsx(is,{session:o,destinations:h(o),disabled:!l,onChoose:(I,R)=>w(o,I,R),trigger:s.jsx(ss,{"aria-hidden":"true",className:"size-4"}),triggerLabel:a("ui.mesh.mesh_card.move_conversation",{conversation:te(o)})})]},o.id))})]}),s.jsx(de,{}),s.jsxs("section",{className:"flex flex-col gap-2",children:[s.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.network_addresses")}),e.endpoints.length===0?s.jsx("p",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.no_address_published")}):s.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:e.endpoints.map(o=>s.jsxs("li",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"min-w-0 truncate font-mono text-body-sm text-ink",children:o}),s.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:a("ui.mesh.mesh_card.advertised")})]},o))})]}),s.jsx(de,{}),s.jsxs("section",{className:"flex flex-col gap-2",children:[s.jsx("h3",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.status")}),s.jsxs("dl",{className:"m-0 flex flex-col gap-1",children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("dt",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.reach")}),s.jsx("dd",{className:"m-0 text-body-sm text-ink",children:xe(u)})]}),s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("dt",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_card.last_status_frame")}),s.jsx("dd",{className:"m-0 text-body-sm text-ink",children:e.lastSeenAt===null?a("ui.mesh.mesh_card.never"):Fs(m-e.lastSeenAt)})]})]}),!e.reachable&&(p!==""||j.length>0)&&s.jsxs("div",{className:"flex flex-col gap-1",children:[p&&s.jsx("p",{className:"m-0 text-meta text-warning",children:p}),e.linkState==="handshake_refused"&&s.jsx("p",{className:"m-0 text-meta text-ink-dim",children:a("ui.mesh.mesh_reach.handshake_refused_hint")}),j.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("span",{id:`mesh-attempts-label-${e.id}`,className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_reach.addresses_tried")}),s.jsx("ul",{role:"list","aria-labelledby":`mesh-attempts-label-${e.id}`,className:"m-0 flex list-none flex-col gap-0.5 p-0",children:j.map((o,I)=>{const R=Xe(o.detail);return s.jsxs("li",{"data-mesh-attempt":o.endpoint,className:"flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"min-w-0 truncate font-mono text-meta text-ink",children:o.endpoint}),s.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:R})]},`${o.endpoint}:${I}`)})})]})]}),!p&&j.length===0&&e.reason&&s.jsx("p",{className:"text-meta text-warning",children:e.reason})]}),s.jsx(de,{}),s.jsx(V,{size:"sm",variant:"ghost",className:"w-fit","data-mesh-show-in-list":e.id,onClick:()=>E(e.id),children:a("ui.mesh.mesh_card.show_in_list")})]})},zt=["name","chats","state"],Ht={get name(){return a("ui.mesh.mesh_list.name")},get chats(){return a("ui.mesh.mesh_list.sort_conversations")},get state(){return a("ui.mesh.mesh_list.state")}},Be={suspect:0,relay_down:1,handshake_refused:2,unreachable:3,self:4,reachable:5};function Wt(e,n){const t=[...e];switch(n){case"chats":return t.sort((d,m)=>(m.sessionCount??-1)-(d.sessionCount??-1)||d.label.localeCompare(m.label)),t;case"state":return t.sort((d,m)=>Be[d.state]-Be[m.state]||d.label.localeCompare(m.label)),t;default:return t.sort((d,m)=>d.label.localeCompare(m.label))}}const Ye=8;function Ft(e,n){if(e.locality==="local")return e.live_state||"here";const t=e.owner_device_name||n,d=e.live_state?` · ${e.live_state}`:"";return e.reachable?a("ui.mesh.mesh_list.on_device_state",{device:t,state:d}):a("ui.mesh.mesh_list.on_device_no_answer",{device:t})}const qt=({graph:e,nowSeconds:n,selectedDeviceId:t,sessions:d,selfLabel:m,canMove:h,onSelect:f,onMove:l,onInvite:b,onRemove:v})=>{W();const[w,E]=x.useState("name"),C=x.useMemo(()=>e.networks.map(c=>({network:c,members:Wt(e.devices.filter(u=>u.memberships.some(p=>p.networkId===c.id)),w)})),[e,w]);return s.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto pe-1",children:[s.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[s.jsx("legend",{className:"sr-only",children:a("ui.mesh.mesh_list.sort_devices_by")}),s.jsx("div",{"data-glass-well":"",className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:zt.map(c=>s.jsx("button",{type:"button","aria-pressed":w===c,onClick:()=>E(c),className:L("h-6 rounded-sm px-3 text-body-sm text-ink-muted transition-colors duration-fast ease-out-quart","hover:text-ink","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2",w===c&&"bg-surface text-ink"),children:Ht[c]},c))})]}),C.map(({network:c,members:u})=>s.jsxs("section",{"data-mesh-network-group":c.id,className:"flex flex-col gap-2",children:[s.jsxs("h2",{className:"flex flex-wrap items-baseline gap-2 text-body-sm text-ink",title:a("ui.mesh.mesh_list.epoch",{epoch:c.epoch}),children:[c.label,s.jsxs("span",{className:"text-meta text-ink-dim",children:[c.trust," ·"," ",a("ui.mesh.mesh_graph.device_count",{count:c.memberCount}),c.revokedCount>0?s.jsxs(s.Fragment,{children:[" · ",a("ui.mesh.mesh_list.revoked_count",{count:c.revokedCount})]}):null]})]}),s.jsx("ul",{className:"m-0 flex list-none flex-col gap-1 p-0",children:u.map(p=>{const j=p.memberships.find(S=>S.networkId===c.id),N=p.id===t,D=d.get(p.id),y=D?.rows??[],o=D?es(D,p.sessionCount):p.sessionCount??0,I=se(p),R=Ke(p),M=p.reachable?[]:p.attempts??[];return s.jsxs("li",{"data-mesh-device-row":p.id,"data-mesh-state":p.state,"aria-current":N?"true":void 0,className:L("flex flex-col gap-1 rounded-md px-3 py-2","border border-hairline bg-surface",N&&"border-ink bg-row-selected"),children:[s.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-3 gap-y-1",children:[s.jsx("button",{type:"button","data-mesh-device-open":p.id,onClick:()=>f(p.id),className:L("min-w-0 flex-1 text-start text-body-sm text-ink","hover:text-ink-muted","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2"),children:s.jsx(De,{deviceId:p.id,name:p.name})}),s.jsxs("span",{className:L("flex shrink-0 items-center gap-1 text-meta",Ue[I]),"data-mesh-reach":I,children:[p.suspect&&s.jsx(Ce,{"aria-hidden":"true",className:"size-3.5 shrink-0 text-danger"}),p.suspect?xe(I):Je(p,n),p.suspect&&s.jsx("span",{className:"shrink-0 rounded-sm border border-danger px-1 text-danger",children:Ve()})]}),s.jsxs("span",{className:"shrink-0 text-meta text-ink-dim",children:[j?.role?`${j.role} · `:"",a("ui.mesh.mesh_list.member")]})]}),(R!==""||M.length>0)&&!p.reachable&&s.jsxs("div",{className:"flex flex-col gap-0.5",children:[R&&s.jsx("span",{className:"text-meta text-warning",children:R}),M.map((S,_)=>{const $=Xe(S.detail);return s.jsx("span",{"data-mesh-attempt":S.endpoint,className:"text-meta text-ink-dim",children:$?`${S.endpoint} — ${$}`:S.endpoint},`${S.endpoint}:${_}`)})]}),be(p,n)?s.jsxs("span",{className:"text-meta text-warning",children:[a("ui.mesh.mesh_card.conversations")," (",Qe(null),") ·"," ",be(p,n)]}):y.length>0?s.jsxs(s.Fragment,{children:[s.jsx(de,{className:"my-1"}),s.jsx("ul",{className:"m-0 flex list-none flex-col gap-0.5 p-0",children:y.slice(0,Ye).map(S=>s.jsxs("li",{"data-mesh-row-session":S.id,className:"flex items-center gap-2 py-0.5",children:[s.jsx("span",{className:"min-w-0 flex-1 truncate text-meta text-ink-muted",children:S.name||S.id}),s.jsx("span",{className:"shrink-0 text-meta text-ink-dim",children:Ft(S,m)}),s.jsx(is,{session:S,destinations:as(e,S,m),disabled:!h,onChoose:(_,$)=>l(S,_,$),trigger:s.jsx(ss,{"aria-hidden":"true",className:"size-3.5"}),triggerLabel:a("ui.mesh.mesh_list.move_conversation",{conversation:S.name||S.id})})]},S.id))}),o>y.slice(0,Ye).length&&s.jsx("button",{type:"button",onClick:()=>f(p.id),className:"w-fit text-meta text-ink-dim hover:text-ink",children:a("ui.mesh.mesh_list.show_all_panel",{count:o})})]}):s.jsx("span",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_list.conversation_count",{count:o})}),(j||p.state!=="self")&&s.jsxs("div",{className:"flex flex-wrap items-center gap-1",children:[s.jsx(V,{size:"sm",variant:"ghost","data-mesh-invite":p.id,onClick:()=>b({deviceId:p.id,deviceName:p.name}),children:a("ui.mesh.mesh_actions.invite_to_a_network")}),j&&s.jsxs(V,{size:"sm",variant:"ghost","data-mesh-remove-member":`${c.id}:${p.id}`,onClick:()=>v({networkId:c.id,networkLabel:c.label,deviceId:p.id,deviceName:p.name}),children:[a("ui.mesh.mesh_card.remove_from"),c.label,"…"]})]})]},p.id)})})]},c.id)),e.unmatchedPeers.length>0&&s.jsxs("p",{className:"text-meta text-warning",children:[a("ui.mesh.mesh_graph.device_count",{count:e.unmatchedPeers.length})," ",a("ui.mesh.mesh_list.answered_the_peer_read_but_is_in")]})]})},Bt=({revoked:e})=>{if(e.length===0)return null;const n=a("ui.mesh.mesh_list.revoked_count",{count:e.length});return s.jsx(Me,{className:"contents",chevron:"trailing",chevronClassName:"text-ink-dim",rowClassName:"min-h-auto py-0",triggerClassName:"inline-flex w-auto items-center gap-1 align-baseline text-meta text-ink-dim hover:text-ink",triggerData:{"data-mesh-revoked-toggle":""},triggerLabel:a("ui.mesh.mesh_list.revoked_toggle_label"),summary:s.jsxs(s.Fragment,{children:[s.jsx("span",{"aria-hidden":"true",className:"inline-block whitespace-pre",children:" · "}),n]}),children:s.jsx("ul",{"data-mesh-revoked":"",className:"m-0 flex list-none flex-col gap-1 p-0",children:e.map(t=>s.jsxs("li",{"data-mesh-revoked-member":t.deviceId,className:"flex flex-wrap items-baseline gap-x-2 text-meta text-ink-dim",children:[s.jsx("span",{children:t.networkName}),s.jsx("span",{className:"font-mono text-body-sm text-ink",children:t.deviceId}),s.jsx("span",{className:"text-body-sm text-ink-muted",children:t.label}),s.jsxs("span",{children:[t.role?`${t.role} · `:"",a("ui.mesh.mesh_graph.revoked_membership")]})]},`${t.networkId}:${t.deviceId}`))})})},Yt=["canvas","list"],Gt={get canvas(){return a("ui.mesh.mesh_page.canvas")},get list(){return a("ui.mesh.mesh_page.list")}},Ut=({state:e,initialPresentation:n="canvas",graph:t,nowSeconds:d,checking:m,staleError:h,onRetry:f,approvals:l,sessions:b,sessionError:v,selfLabel:w,movingSessionId:E,canMove:C,pendingMove:c,onAskMove:u,onDropRefused:p,onChooseMove:j,onCancelMove:N,moveBusy:D,moveReport:y,onDismissReport:o,onWaitForIdle:I,onUndoCopy:R,invite:M,onOpenInvite:S,onInvite:_,onCloseInvite:$,inviteBusy:ce,inviteReceipt:ne,inviteRefusal:T,remove:Y,onOpenRemove:ae,onRemove:ie,onCloseRemove:me,removeBusy:re,removeRefusal:q,removed:le})=>{W();const[G,k]=x.useState(n),[P,O]=x.useState(null),U=t?qs(t):"",z="mesh-summary",Z=Bs(t),X=Ys(t,b,t?.selfDeviceId??null),ue=x.useMemo(()=>{const r=new Map;for(const g of t?.devices??[]){const A=X.byDevice.get(g.id);r.set(g.id,A?es(A,g.sessionCount):g.sessionCount??0)}return r},[t,X]),J=x.useCallback(r=>{O(r)},[]),oe=t?t.devices.find(r=>r.id===P)??null:null,i=x.useCallback((r,g,A)=>{if(!t)return null;const H={selfDeviceId:t.selfDeviceId,devices:new Map(t.devices.map(B=>[B.id,B])),networks:new Map(t.networks.map(B=>[B.id,B]))},K=r.locality==="local"?t.selfDeviceId??"":r.owner_device,Ee=H.devices.get(K),F=ve({session:r,ownerDeviceId:K,ownerLabel:Ee?Q(Ee,t.devices.map(B=>B.id),!0):r.owner_device_name},{kind:"device",deviceId:g.deviceId},H);if(F.kind==="refused")return p({code:F.code,sentence:F.sentence,reach:F.reach,remedy:F.remedy,plan:F.plan??null}),null;if(F.kind==="none")return null;const Re=A?F.alternatives.find(B=>B.keep)??F.plan:F.plan,rs=[F.plan,...F.alternatives].filter(B=>B.keep!==Re.keep),ls={plan:Re,alternatives:rs,risky:F.risky};u(ls)},[t,u,p]);return s.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-6 overflow-y-auto p-6",children:[s.jsx(ps,{title:a("ui.mesh.mesh_page.mesh"),icon:Se,subtitle:a("ui.mesh.mesh_page.devices_this_app_is_paired_with_and"),children:s.jsxs("div",{className:"flex items-center gap-4",children:[m&&s.jsx("output",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_page.checking")}),(e.kind==="ready"||e.kind==="loading")&&s.jsxs("fieldset",{className:"m-0 w-fit border-0 p-0",children:[s.jsx("legend",{className:"sr-only",children:a("ui.mesh.mesh_page.presentation")}),s.jsx("div",{"data-glass-well":"",className:"flex gap-0.5 rounded-md bg-sunken p-0.5",children:Yt.map(r=>s.jsx("button",{type:"button","data-mesh-presentation":r,"aria-pressed":G===r,disabled:e.kind!=="ready",onClick:()=>k(r),className:L("h-6 rounded-sm px-3 text-body-sm text-ink-muted transition-colors duration-fast ease-out-quart","hover:text-ink","focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2","disabled:text-ink-dim disabled:hover:text-ink-dim",G===r&&"bg-surface text-ink"),children:Gt[r]},r))})]})]})}),s.jsx(ht,{rows:l.rows,error:l.error,pending:l.pending,refusal:l.decisionRefusal,onDecide:l.onDecide,onRetry:l.onRetry,nowSeconds:l.nowSeconds,networkNames:new Map((t?.networks??[]).map(r=>[r.id,r.label]))}),e.kind==="loading"&&s.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:[s.jsx(Le,{className:"h-4 w-64"}),s.jsx(Le,{className:"min-h-40 w-full flex-1"})]}),e.kind==="error"&&s.jsxs(ge,{variant:"warning",className:"flex-col items-start gap-2",children:[s.jsx("p",{children:e.message}),s.jsx(V,{variant:"secondary",size:"sm",onClick:f,className:"w-fit",children:a("ui.mesh.mesh_approvals_tray.ask_again")})]}),e.kind==="empty"&&s.jsx("div",{"data-glass-block":"",className:"flex min-h-0 flex-1 items-center justify-center rounded-lg border border-hairline bg-surface p-6",children:s.jsxs("div",{className:"flex flex-col items-start gap-3",children:[s.jsx("h2",{className:"text-heading text-ink",children:a("ui.mesh.mesh_page.no_network_on_this_device")}),s.jsx("p",{className:"max-w-140 text-body-sm text-ink-muted",children:a("ui.mesh.mesh_page.this_device_is_not_in_any_network")}),s.jsx("code",{className:"rounded-sm bg-sunken px-2 py-1 font-mono text-meta text-ink",children:"lop network init <name>"}),s.jsx("p",{className:"text-meta text-ink-dim",children:a("ui.mesh.mesh_page.a_network_appears_here_once_this_device")})]})}),e.kind==="ready"&&t&&s.jsx(s.Fragment,{children:s.jsxs("div",{className:"flex min-h-[22rem] flex-1 gap-4",children:[s.jsxs("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col gap-3",children:[s.jsxs("div",{id:z,className:"text-meta text-ink-muted","data-mesh-summary":"",children:[s.jsx("span",{children:U}),s.jsx(Bt,{revoked:t.revoked})]}),h&&s.jsx(ge,{variant:"warning",children:s.jsx("p",{children:h})}),v&&s.jsx(ge,{variant:"warning",children:s.jsx("p",{children:v})}),y&&s.jsx(Gs,{receipt:y.kind==="moved"?{verb:y.verb,detail:y.detail,undo:y.undo}:null,refusal:y.kind==="refused"?y.refusal:null,canWait:y.kind==="refused"&&y.plan!==null,onWait:I,onRecheck:f,onUndo:R,onDismiss:o,pending:D}),G==="canvas"?s.jsx(Lt,{graph:t,slots:Z,nowSeconds:d,selectedDeviceId:P,sessions:X.byDevice,sessionTotals:ue,movingSessionId:E,canMove:C,onOpenDevice:J,onAskMove:u,onDropRefused:p,onShowAllSessions:J,summaryId:z}):s.jsx(qt,{graph:t,nowSeconds:d,selectedDeviceId:P,sessions:X.byDevice,selfLabel:w,canMove:C,onSelect:J,onMove:i,onInvite:S,onRemove:ae})]}),oe&&s.jsx(Ot,{device:oe,deviceIds:t.devices.map(r=>r.id),sessions:X.byDevice.get(oe.id)??{rows:[],shown:[],hidden:0},sessionTotal:ue.get(oe.id)??0,nowSeconds:d,canMove:C,canInvite:e.kind==="ready",movingSessionId:E,destinationsFor:r=>as(t,r,w),onClose:()=>O(null),onMove:i,onInvite:r=>S({deviceId:r.id,deviceName:r.name}),onRemoveMember:(r,g)=>{const A=t.networks.find(H=>H.id===g);ae({networkId:g,networkLabel:A?.label??g,deviceId:r.id,deviceName:r.name})},onShowInList:r=>{J(r),k("list")}})]})}),s.jsx(Us,{open:c!==null,plan:c?.plan??Kt,alternatives:c?.alternatives??[],risky:c?.risky??!1,busy:D,onCancel:N,onChoose:j}),M&&s.jsx(Ks,{open:M.open,options:M.options,deviceId:M.deviceId,deviceName:M.deviceName,onClose:$,onInvite:_,pending:ce,receipt:ne,refusal:T}),Y&&s.jsx(Vs,{open:Y.open,networkLabel:Y.networkLabel,deviceId:Y.deviceId,deviceName:Y.deviceName,onClose:me,onConfirm:ie,pending:re,refusal:q,removed:le})]})},Kt={sessionId:"",to:"",keep:!1,verb:"",waitS:0,lost:null},an=({initialPresentation:e})=>{W();const n=us(),t=ke(n.data,"peers")==="enabled",d=ke(n.data,"session_transfer")==="enabled",m=Xs(t,{stamp:()=>we.getState().beginAnswer()}),h=Zs(t),f=Js(t,{poll:!1,stamp:()=>we.getState().beginAnswer()}),l=x.useMemo(()=>({peers:m,networks:h}),[m,h]),b=Qs(l),v=et(l),w=st(),E=ke(n.data,"approvals")==="enabled",C=tt(t&&E,{poll:!1}),c=nt(),u=c.isError?{approvalId:c.variables?.approvalId??null,...at(c.error)}:null,p=x.useMemo(()=>Math.floor((C.dataUpdatedAt||Date.now())/1e3),[C.dataUpdatedAt]),j=we(k=>k.settlePlacement),N=it(),D=rt(),[y,o]=x.useState(null),[I,R]=x.useState(null),[M,S]=x.useState(null),[_,$]=x.useState(null),[ce,ne]=x.useState(null),[T,Y]=x.useState(null),[ae,ie]=x.useState(null),me=x.useMemo(()=>{const k=Math.max(m.dataUpdatedAt,h.dataUpdatedAt);return Math.floor((k||Date.now())/1e3)},[m.dataUpdatedAt,h.dataUpdatedAt]),re=x.useCallback(()=>{m.refetch(),h.refetch(),f.refetch()},[m,h,f]),q=x.useCallback((k,P)=>{o(null);const O={sessionId:k.sessionId,to:k.to,keep:k.keep,waitS:P??k.waitS};w.mutate(O,{onSuccess:U=>{if(U.kind==="moved"){const{receipt:z}=U;j(k.sessionId,z);const Z=z.locality==="local"?a("ui.mesh.mesh_drop.this_device"):v?.devices.find(X=>X.id===z.owner_device)?.label??z.owner_device;R({kind:"moved",verb:z.mode==="keep"?a("ui.mesh.mesh_page.copied"):a("ui.mesh.mesh_page.moved"),detail:z.mode==="keep"?a("ui.mesh.mesh_page.copy_receipt",{destination:Z,suffix:z.new_session_id.slice(-6)}):a("ui.mesh.mesh_page.move_receipt",{destination:Z,retirement:z.source_retired?a("ui.mesh.mesh_page.the_copy_here_is_gone"):""}),undo:z.mode==="keep"?{sessionId:z.new_session_id,to:"local",keep:!1,verb:a("ui.mesh.mesh_page.bring_copy_back",{device:Z}),waitS:0,lost:lt(Z,a("ui.mesh.mesh_drop.this_device"))}:null});return}R({kind:"refused",refusal:U.refusal,plan:k})},onError:()=>{R({kind:"refused",refusal:{code:"move_failed",sentence:a("ui.mesh.mesh_page.the_move_could_not_be_sent_nothing"),status:null,unconfirmed:!1},plan:k})}})},[v,w,j]),le=x.useMemo(()=>{if(!v)return[];const k=M?.deviceId,P=k?v.devices.find(O=>O.id===k):void 0;return v.networks.filter(O=>P?!P.memberships.some(U=>U.networkId===O.id):!0).map(O=>({id:O.id,label:O.label}))},[v,M]);if(!t)return s.jsx(hs,{to:"/chat",replace:!0});const G=b.kind==="ready"?m.error?he(m.error):h.error?he(h.error):null:null;return s.jsx(Ut,{initialPresentation:e,state:b,graph:v,nowSeconds:me,checking:m.isFetching||h.isFetching,staleError:G,onRetry:re,approvals:{rows:C.data??[],error:C.isError?ot(C.error):null,pending:c.isPending?c.variables??null:null,decisionRefusal:u,onDecide:(k,P)=>c.mutate({approvalId:k,decision:P}),onRetry:()=>void C.refetch(),nowSeconds:p},sessions:f.data?.rows??[],movingSessionId:w.isPending?w.variables?.sessionId??null:null,sessionError:f.isError?he(f.error):null,selfLabel:v?.devices.find(k=>k.state==="self")?.label??a("ui.mesh.mesh_drop.this_device"),canMove:d,pendingMove:y,onAskMove:o,onDropRefused:k=>R({kind:"refused",refusal:{code:k.code,sentence:k.sentence,reach:k.reach,status:null,unconfirmed:!1},plan:k.plan}),onChooseMove:k=>q(k),onCancelMove:()=>o(null),moveBusy:w.isPending,moveReport:I,onDismissReport:()=>R(null),onWaitForIdle:()=>{I?.kind!=="refused"||!I.plan||q(I.plan,Vt)},onUndoCopy:()=>{I?.kind!=="moved"||!I.undo||o({plan:I.undo,alternatives:[],risky:!1})},invite:M===null?null:{open:!0,deviceId:M.deviceId,deviceName:M.deviceName,options:le},onOpenInvite:k=>{$(null),ne(null),S(k)},onInvite:k=>{N.mutate(k,{onSuccess:P=>$(P),onError:P=>ne({code:"invite_refused",sentence:he(P),status:null,unconfirmed:!1})})},onCloseInvite:()=>S(null),inviteBusy:N.isPending,inviteReceipt:_,inviteRefusal:ce,remove:T===null?null:{open:!0,networkId:T.networkId,networkLabel:T.networkLabel,deviceId:T.deviceId,deviceName:T.deviceName},onOpenRemove:k=>{ie(null),Y(k)},onRemove:k=>{T&&D.mutate({networkId:T.networkId,deviceId:T.deviceId,confirm:k},{onSuccess:P=>ie(P)})},onCloseRemove:()=>Y(null),removeBusy:D.isPending,removeRefusal:D.isError?{code:"remove_refused",sentence:he(D.error),status:null,unconfirmed:!1}:null,removed:ae})},Vt=300;export{an as MeshPage,Ut as MeshSurface,an as default};
|