tide-commander 1.147.0 → 1.148.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/assets/BossLogsModal-CZMHgMBE.js +1 -0
- package/dist/assets/{BossSpawnModal-CUwoW0Sf.js → BossSpawnModal-C6DxqtKP.js} +1 -1
- package/dist/assets/ControlsModal-DJ8Scm16.js +1 -0
- package/dist/assets/DockerLogsModal-Vb4gqdFz.js +2 -0
- package/dist/assets/{EmbeddedEditor-BMYfaUnw.js → EmbeddedEditor-D4sHERAj.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-Dbtb1OBi.js → GmailOAuthSetup-COIYIbJS.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-C1yqIQfH.js → GoogleOAuthSetup-DJS59Soi.js} +1 -1
- package/dist/assets/{IframeModal-BTbe5Yn5.js → IframeModal-CFysTkn9.js} +1 -1
- package/dist/assets/{IntegrationsPanel-yQWerful.js → IntegrationsPanel-BK8g9ceY.js} +2 -2
- package/dist/assets/{LogViewerModal-BY937mmt.js → LogViewerModal-DRxR0HYq.js} +1 -1
- package/dist/assets/{MonitoringModal-Bj3A6bRy.js → MonitoringModal-CL7UMOdX.js} +1 -1
- package/dist/assets/{PM2LogsModal-Decrm_7x.js → PM2LogsModal-I3aouUlw.js} +2 -2
- package/dist/assets/{RestoreArchivedAreaModal-C-rElyzS.js → RestoreArchivedAreaModal-PWAg6w6b.js} +1 -1
- package/dist/assets/{Scene2DCanvas-CeV8ekZS.js → Scene2DCanvas-DYPHkU3i.js} +1 -1
- package/dist/assets/{SceneManager-L8gYUY47.js → SceneManager-QqKygyaw.js} +1 -1
- package/dist/assets/{SkillsPanel-4xdKN32N.js → SkillsPanel-EQ74sIa6.js} +1 -1
- package/dist/assets/{SlackMultiInstanceSetup-SpaaTx-U.js → SlackMultiInstanceSetup-CLMUteI0.js} +1 -1
- package/dist/assets/{SpawnModal-CLCiiyq8.js → SpawnModal-BOeStihN.js} +1 -1
- package/dist/assets/{StatisticsModal-C-OFWiji.js → StatisticsModal-D6MgA_o0.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-CWdKTQmZ.js → SubordinateAssignmentModal-C6n0pMn3.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-CBOTJAh5.js → TriggerManagerPanel-Umd8iUg1.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-DkarjTHg.js → WorkflowEditorPanel-CxjBxs9O.js} +1 -1
- package/dist/assets/{area-logos-DTgRsq2i.js → area-logos-CThPeqIM.js} +1 -1
- package/dist/assets/index-BUN7MVf5.js +19 -0
- package/dist/assets/index-Cz-ypmob.js +1 -0
- package/dist/assets/index-DOzFBkSH.js +1 -0
- package/dist/assets/index-DP7kd91h.js +1 -0
- package/dist/assets/{index-DeQF0VwE.js → index-DRyMARFk.js} +3 -3
- package/dist/assets/{index-DpbaMTtY.js → index-DelocTaH.js} +1 -1
- package/dist/assets/index-DuWmOZdY.js +2 -0
- package/dist/assets/{index-CJmfcMr5.js → index-h3Cuh2Zn.js} +2 -2
- package/dist/assets/{index-BRZblJT3.js → index-maZSt2YW.js} +5 -5
- package/dist/assets/main-C2zgPci-.js +256 -0
- package/dist/assets/main-C3JO2TRI.css +1 -0
- package/dist/assets/{web-BtHsiyJs.js → web-CNjTPilF.js} +1 -1
- package/dist/assets/{web-Cuk1Hyv3.js → web-CfvEypdU.js} +1 -1
- package/dist/assets/{web-SGSzb8AX.js → web-bcYaAwP6.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/locales/de/tools.json +3 -1
- package/dist/locales/en/tools.json +3 -1
- package/dist/locales/es/tools.json +3 -1
- package/dist/locales/fr/tools.json +4 -2
- package/dist/locales/hi/tools.json +4 -2
- package/dist/locales/it/tools.json +19 -17
- package/dist/locales/ja/tools.json +4 -2
- package/dist/locales/pt/tools.json +3 -1
- package/dist/locales/ru/tools.json +3 -1
- package/dist/locales/zh-CN/tools.json +3 -1
- package/package.json +1 -1
- package/dist/assets/BossLogsModal-BNaw48Iw.js +0 -1
- package/dist/assets/ControlsModal-Cum949Ak.js +0 -1
- package/dist/assets/DockerLogsModal-BwS_K2nA.js +0 -2
- package/dist/assets/index-CYzyzrf5.js +0 -2
- package/dist/assets/index-Cw5qH62A.js +0 -1
- package/dist/assets/index-D-86ThGv.js +0 -1
- package/dist/assets/index-D-CrEqAx.js +0 -19
- package/dist/assets/index-DppEdN8L.js +0 -1
- package/dist/assets/main-BSv4nhlm.js +0 -256
- package/dist/assets/main-ijcbyjBn.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as U,a as ee,r as l,s as u,j as e,D as oe,I as L,C as me,b as be,c as ue,d as he,g as _e,e as pe,Q as xe,R as fe}from"./main-BSv4nhlm.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const je=({building:a,connections:j,activeConnectionId:d,activeDatabase:n,collapsed:y,onToggleCollapse:_,onConnectionChange:D,onDatabaseChange:R,onInsertTable:N,onSelectTableQuery:F})=>{const{t:x}=U(["terminal"]),f=ee(a.id),[I,G]=l.useState(new Set),[T,r]=l.useState(""),[i,g]=l.useState(""),[w,O]=l.useState(!1),[P,J]=l.useState(null),H=l.useRef(null),K=l.useRef(null),C=l.useRef(null),k=d?f.databases.get(d)??[]:[],q=d&&n?`${d}:${n}`:"",$=q?f.tables.get(q)??[]:[],h=d?f.connectionStatus.get(d):void 0,E=l.useMemo(()=>{if(!T.trim())return k;const t=T.toLowerCase();return k.filter(o=>o.toLowerCase().includes(t))},[k,T]),z=l.useMemo(()=>{if(!i.trim())return $;const t=i.toLowerCase();return $.filter(o=>o.name.toLowerCase().includes(t))},[$,i]);l.useEffect(()=>{const t=o=>{K.current&&!K.current.contains(o.target)&&O(!1)};return w&&document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[w]),l.useEffect(()=>{d&&!h&&u.testDatabaseConnection(a.id,d)},[a.id,d,h]),l.useEffect(()=>{d&&(h!=null&&h.connected)&&k.length===0&&u.listDatabases(a.id,d)},[a.id,d,h==null?void 0:h.connected,k.length]),l.useEffect(()=>{d&&n&&$.length===0&&u.listTables(a.id,d,n)},[a.id,d,n,$.length]),l.useEffect(()=>{J(null),g("")},[d,n]);const b=l.useCallback(t=>{G(o=>{const v=new Set(o);if(v.has(t))v.delete(t);else if(v.add(t),d&&n){const S=`${d}:${n}:${t}`;f.tableSchemas.has(S)||u.getTableSchema(a.id,d,n,t)}return v})},[a.id,d,n,f.tableSchemas]),p=t=>{if(!d||!n)return null;const o=`${d}:${n}:${t}`;return f.tableSchemas.get(o)};return y?e.jsx("div",{className:"database-sidebar database-sidebar--collapsed",children:e.jsx("button",{className:"database-sidebar__toggle",onClick:_,title:x("terminal:database.expandSidebar"),children:"»"})}):e.jsxs("div",{className:"database-sidebar",children:[e.jsxs("div",{className:"database-sidebar__header",children:[e.jsx("span",{children:x("terminal:database.explorer")}),e.jsx("button",{className:"database-sidebar__toggle",onClick:_,title:x("terminal:database.collapseSidebar"),children:"«"})]}),e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:x("terminal:database.connection")}),e.jsx("select",{className:"database-sidebar__select",value:d||"",onChange:t=>D(t.target.value),children:j.length===0?e.jsx("option",{value:"",children:x("terminal:database.noConnections")}):j.map(t=>{var o;return e.jsxs("option",{value:t.id,children:[((o=oe[t.engine])==null?void 0:o.icon)??"🗄️"," ",t.name]},t.id)})}),h&&e.jsx("div",{className:`database-sidebar__status ${h.connected?"database-sidebar__status--connected":"database-sidebar__status--error"}`,children:h.connected?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✓"}),x("terminal:database.connected"),h.serverVersion&&e.jsxs("span",{className:"database-sidebar__version",children:["(",h.serverVersion,")"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✗"}),h.error||x("terminal:database.disconnected")]})})]}),k.length>0&&e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:x("terminal:database.databaseTitle")}),e.jsxs("div",{className:"database-sidebar__searchable-select",ref:K,children:[e.jsx("input",{ref:H,className:"database-sidebar__search-input",type:"text",value:w?T:n||"",placeholder:x("terminal:database.selectDatabase"),onChange:t=>{r(t.target.value),w||O(!0)},onFocus:()=>{O(!0),r("")},onKeyDown:t=>{var o,v;t.key==="Escape"?(O(!1),r(""),(o=H.current)==null||o.blur()):t.key==="Enter"&&E.length===1&&(R(E[0]),O(!1),r(""),(v=H.current)==null||v.blur())}}),w&&e.jsx("div",{className:"database-sidebar__dropdown",children:E.length===0?e.jsx("div",{className:"database-sidebar__dropdown-empty",children:"No matches"}):E.map(t=>e.jsx("div",{className:`database-sidebar__dropdown-item ${t===n?"database-sidebar__dropdown-item--active":""}`,onMouseDown:o=>{o.preventDefault(),R(t),O(!1),r("")},children:t},t))})]})]}),$.length>0&&e.jsxs("div",{className:"database-sidebar__section database-sidebar__section--tables",children:[e.jsx("div",{className:"database-sidebar__section-title",children:i.trim()?x("terminal:database.tablesCount",{count:z.length})+` / ${$.length}`:x("terminal:database.tablesCount",{count:$.length})}),e.jsxs("div",{className:"database-sidebar__table-filter",children:[e.jsx("input",{ref:C,className:"database-sidebar__table-filter-input",type:"text",value:i,placeholder:x("terminal:database.filterTables"),onChange:t=>g(t.target.value),onKeyDown:t=>{var o;t.key==="Escape"&&(i?g(""):(o=C.current)==null||o.blur(),t.stopPropagation())}}),i&&e.jsx("button",{className:"database-sidebar__table-filter-clear",onClick:()=>{var t;g(""),(t=C.current)==null||t.focus()},title:"Clear filter",children:"×"})]}),e.jsxs("div",{className:"database-sidebar__tables",children:[i.trim()&&z.length===0&&e.jsx("div",{className:"database-sidebar__tables-empty",children:x("terminal:database.noTablesMatch")}),z.map(t=>{const o=I.has(t.name),v=o?p(t.name):null;return e.jsxs("div",{className:"database-sidebar__table",children:[e.jsxs("div",{className:"database-sidebar__table-header",children:[e.jsx("button",{className:"database-sidebar__table-expand",onClick:()=>b(t.name),title:o?"Collapse table schema":"Expand table schema",children:e.jsx(L,{name:o?"caret-down":"caret-right",size:10})}),e.jsx("span",{className:"database-sidebar__table-icon",children:e.jsx(L,{name:t.type==="view"?"eye":"clipboard",size:12})}),e.jsx("span",{className:`database-sidebar__table-name ${P===t.name?"database-sidebar__table-name--selected":""}`,onClick:()=>J(t.name),onDoubleClick:()=>{J(t.name),F(t.name)},children:t.name}),e.jsx("button",{className:"database-sidebar__table-insert",onClick:S=>{S.stopPropagation(),N(t.name)},title:x("terminal:database.insertTableName"),children:"+"})]}),o&&v&&e.jsx("div",{className:"database-sidebar__table-columns",children:v.columns.map(S=>e.jsxs("div",{className:"database-sidebar__column",onClick:()=>N(S.name),title:`${S.type}${S.nullable?" NULL":" NOT NULL"}${S.primaryKey?" PK":""}`,children:[e.jsx("span",{className:"database-sidebar__column-icon",children:S.primaryKey?e.jsx(L,{name:"key",size:11}):null}),e.jsx("span",{className:"database-sidebar__column-name",children:S.name}),e.jsx("span",{className:"database-sidebar__column-type",children:S.type})]},S.name))})]},t.name)})]})]})]})},ye=({buildingId:a,history:j,onLoadQuery:d})=>{const{t:n}=U(["terminal","common"]),[y,_]=l.useState(""),[D,R]=l.useState(!1),[N,F]=l.useState(!1),x=l.useMemo(()=>{let r=j;if(D&&(r=r.filter(i=>i.favorite)),y.trim()){const i=y.toLowerCase();r=r.filter(g=>g.query.toLowerCase().includes(i)||g.database.toLowerCase().includes(i))}return r},[j,D,y]),f=r=>{const i=new Date(r),w=new Date().getTime()-i.getTime();return w<1440*60*1e3?i.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):w<10080*60*1e3?i.toLocaleDateString([],{weekday:"short"})+" "+i.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):i.toLocaleDateString([],{month:"short",day:"numeric"})},I=l.useCallback((r,i)=>{i.stopPropagation(),u.toggleQueryFavorite(a,r)},[a]),G=l.useCallback((r,i)=>{i.stopPropagation(),u.deleteQueryFromHistory(a,r)},[a]),T=l.useCallback(()=>{F(!0)},[]);return j.length===0?e.jsxs("div",{className:"query-history query-history--empty",children:[e.jsx("p",{children:n("terminal:database.noHistory")}),e.jsx("p",{children:n("terminal:database.queriesAppearHere")})]}):e.jsxs("div",{className:"query-history",children:[e.jsxs("div",{className:"query-history__toolbar",children:[e.jsx("input",{type:"text",className:"query-history__search",placeholder:n("terminal:database.searchQueries"),value:y,onChange:r=>_(r.target.value)}),e.jsxs("label",{className:"query-history__filter",children:[e.jsx("input",{type:"checkbox",checked:D,onChange:r=>R(r.target.checked)}),n("terminal:database.favoritesOnly")]}),e.jsx("button",{className:"query-history__clear",onClick:T,title:n("terminal:database.clearAll"),children:n("terminal:database.clearAll")})]}),e.jsxs("div",{className:"query-history__list",children:[x.map(r=>e.jsxs("div",{className:`query-history__item ${r.status==="error"?"query-history__item--error":""}`,onClick:()=>d(r.query),children:[e.jsxs("div",{className:"query-history__item-header",children:[e.jsx("span",{className:`query-history__status ${r.status==="success"?"query-history__status--success":"query-history__status--error"}`,children:e.jsx(L,{name:r.status==="success"?"check":"cross",size:12})}),e.jsx("span",{className:"query-history__database",children:r.database}),e.jsx("span",{className:"query-history__date",children:f(r.executedAt)}),e.jsxs("span",{className:"query-history__duration",children:[r.duration,"ms"]}),r.rowCount!==void 0&&e.jsx("span",{className:"query-history__row-count",children:n("terminal:database.rowCount",{count:r.rowCount})})]}),e.jsx("div",{className:"query-history__query",children:e.jsx("code",{children:r.query.length>200?r.query.substring(0,200)+"...":r.query})}),r.error&&e.jsx("div",{className:"query-history__error",children:r.error}),e.jsxs("div",{className:"query-history__actions",children:[e.jsx("button",{className:`query-history__favorite ${r.favorite?"query-history__favorite--active":""}`,onClick:i=>I(r.id,i),title:r.favorite?n("terminal:database.removeFromFavorites"):n("terminal:database.addToFavorites"),children:e.jsx(L,{name:"star",size:12,weight:r.favorite?"fill":"regular",color:r.favorite?"#facc15":void 0})}),e.jsx("button",{className:"query-history__delete",onClick:i=>G(r.id,i),title:n("terminal:database.deleteFromHistory"),children:e.jsx(L,{name:"trash",size:12})})]})]},r.id)),x.length===0&&e.jsx("div",{className:"query-history__no-results",children:n("terminal:database.noQueriesMatch")})]}),e.jsx(me,{isOpen:N,title:n("terminal:database.clearAll"),message:n("terminal:database.confirmClearHistory"),confirmLabel:n("terminal:database.clearAll"),cancelLabel:n("common:buttons.cancel"),variant:"danger",onConfirm:()=>u.clearQueryHistory(a),onClose:()=>F(!1)})]})},Ne=({tabs:a,activeTabId:j,onTabClick:d,onTabClose:n})=>{const{t:y}=U(["terminal"]);return e.jsx("div",{className:"database-tabs",children:a.map(_=>e.jsxs("div",{className:`database-tabs__tab ${j===_.id?"database-tabs__tab--active":""}`,children:[e.jsxs("button",{className:"database-tabs__tab-label",onClick:()=>d(_),title:`${_.connectionName} / ${_.database}`,children:[_.database,e.jsx("span",{className:"database-tabs__tab-connection",children:_.connectionName})]}),e.jsx("button",{className:"database-tabs__tab-close",onClick:()=>n(_.id),title:y("terminal:database.closeTab"),"aria-label":`Close ${_.database} tab`,children:"×"})]},_.id))})},ae=a=>`db-panel-${a}`;function ve(a){try{const j=localStorage.getItem(ae(a));return j?JSON.parse(j):{}}catch{return{}}}function Se(a,j){try{localStorage.setItem(ae(a),JSON.stringify(j))}catch{}}const we=({building:a,onClose:j,onMinimize:d})=>{var W,Y,X,Z;const{t:n}=U(["terminal","common"]),y=ee(a.id),_=be(a.id),D=ue(a.id),R=he(a.id),N=l.useRef(ve(a.id)),F=l.useRef(null),x=l.useRef(0),f=((W=a.database)==null?void 0:W.connections)??[],I=(s,c)=>`${s}:${c}`,G=s=>s?(N.current.queries??{})[s]??"":N.current.generalQuery??"",[T,r]=l.useState("results"),[i,g]=l.useState(0),[w,O]=l.useState(!1),[P,J]=l.useState(!1),[H,K]=l.useState(()=>(N.current.openTabs??[]).map(c=>{var m;return{id:`${c.connectionId}:${c.database}`,connectionId:c.connectionId,connectionName:((m=f.find(A=>A.id===c.connectionId))==null?void 0:m.name)??c.connectionId,database:c.database}})),[C,k]=l.useState(N.current.activeTabId??null),[q,$]=l.useState(()=>{const s=N.current.queries??{};return N.current.generalQuery,s}),[h,E]=l.useState(G(C)),z=l.useCallback(s=>{E(c=>{const m=typeof s=="function"?s(c):s;return $(A=>{const Q={...A};return C&&(Q[C]=m),Q}),m})},[C]),b=y.activeConnectionId??N.current.connectionId??((Y=a.database)==null?void 0:Y.activeConnectionId)??((X=f[0])==null?void 0:X.id),p=y.activeDatabase??N.current.database??((Z=a.database)==null?void 0:Z.activeDatabase),t=f.find(s=>s.id===b),o=b&&p?`${b}:${p}`:"",v=o?y.tables.get(o)??[]:[],S=l.useMemo(()=>{const s=new Map;return!b||!p||v.forEach(c=>{const m=y.tableSchemas.get(`${b}:${p}:${c.name}`);m&&s.set(c.name,{columns:m.columns})}),s},[b,p,v,y.tableSchemas]),V=l.useCallback((s,c)=>{var Q;const m=I(s,c),A=((Q=f.find(M=>M.id===s))==null?void 0:Q.name)??s;K(M=>{if(M.some(de=>de.id===m))return M;const ie={id:m,connectionId:s,connectionName:A,database:c};return[...M,ie]}),k(m),E(q[m]??""),u.setActiveConnection(a.id,s),u.setActiveDatabase(a.id,c)},[a.id,f,q]),se=l.useCallback(s=>{K(c=>c.filter(m=>m.id!==s)),C===s&&K(c=>{if(c.length>0){const m=c[0];k(m.id),E(q[m.id]??""),u.setActiveConnection(a.id,m.connectionId),u.setActiveDatabase(a.id,m.database)}else k(null),E("");return c})},[C,a.id,q]),te=l.useCallback(s=>{k(s.id),E(q[s.id]??""),u.setActiveConnection(a.id,s.connectionId),u.setActiveDatabase(a.id,s.database)},[a.id,q]);l.useEffect(()=>{if(!P&&f.length>0){const s=N.current;s.connectionId&&f.some(c=>c.id===s.connectionId)&&(u.setActiveConnection(a.id,s.connectionId),u.listDatabases(a.id,s.connectionId),s.database&&(u.setActiveDatabase(a.id,s.database),u.listTables(a.id,s.connectionId,s.database))),J(!0)}},[a.id,f,P]),l.useEffect(()=>{u.requestQueryHistory(a.id)},[a.id]),l.useEffect(()=>{const s=c=>{c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),j())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[j]),l.useEffect(()=>{P&&b&&Se(a.id,{connectionId:b,database:p,lastQuery:h,queries:q,generalQuery:"",openTabs:H.map(s=>({connectionId:s.connectionId,database:s.database})),activeTabId:C??void 0})},[a.id,b,p,h,P,H,C,q]);const ne=l.useCallback(s=>{var c;if(!(!b||!p||!h.trim()||R))if(s==="cursor"){const m=(c=F.current)==null?void 0:c.querySelector(".query-editor__textarea"),A=(m==null?void 0:m.selectionStart)??x.current,Q=_e(h,A);Q&&u.executeQuery(a.id,b,p,Q)}else{const m=pe(h);if(m.length<=1)u.executeQuery(a.id,b,p,h.trim());else{const A=b,Q=p;(async()=>{for(const M of m)await u.executeQueryAndWait(a.id,A,Q,M.sql)})()}}},[a.id,b,p,h,R]),re=l.useCallback(s=>{z(s),r("results")},[]),le=l.useCallback(s=>{u.setActiveConnection(a.id,s),u.listDatabases(a.id,s)},[a.id]),ce=l.useCallback(s=>{b&&(V(b,s),u.listTables(a.id,b,s))},[a.id,b,V]),B=_[i];return f.length===0?e.jsxs("div",{className:"database-panel",ref:F,children:[e.jsxs("div",{className:"database-panel__header",children:[e.jsxs("div",{className:"database-panel__title",children:[e.jsx("span",{className:"database-panel__icon",children:e.jsx(L,{name:"database",size:16})}),e.jsx("span",{className:"database-panel__name",children:a.name})]}),e.jsx("button",{className:"database-panel__close",onClick:j,children:"×"})]}),e.jsx("div",{className:"database-panel__body",children:e.jsxs("div",{className:"database-panel__no-connections",children:[e.jsx("div",{className:"database-panel__no-connections-icon",children:e.jsx(L,{name:"plug",size:32})}),e.jsx("h3",{children:n("terminal:database.noConnections")}),e.jsx("p",{children:n("terminal:database.noConnectionsDesc")}),e.jsx("p",{children:n("terminal:database.toGetStarted")}),e.jsxs("ol",{children:[e.jsx("li",{children:n("terminal:database.step1Close")}),e.jsx("li",{children:n("terminal:database.step2Settings")}),e.jsx("li",{children:n("terminal:database.step3AddConnection")}),e.jsx("li",{children:n("terminal:database.step4Reopen")})]})]})})]}):e.jsxs("div",{className:"database-panel",ref:F,children:[e.jsxs("div",{className:"database-panel__header",children:[e.jsxs("div",{className:"database-panel__title",children:[e.jsx("span",{className:"database-panel__icon",children:(t==null?void 0:t.engine)==="mysql"?"🐬":"🐘"}),e.jsx("span",{className:"database-panel__name",children:a.name}),t&&e.jsxs("span",{className:"database-panel__connection-info",children:[t.name," / ",p||n("terminal:database.noDatabaseSelected")]})]}),e.jsxs("div",{className:"database-panel__header-actions",children:[d&&e.jsx("button",{className:"database-panel__close",onClick:d,title:"Minimize — dock below the terminal input",children:e.jsx(L,{name:"arrow-down",size:14})}),e.jsx("button",{className:"database-panel__close",onClick:j,children:"×"})]})]}),e.jsxs("div",{className:"database-panel__body",children:[e.jsx(je,{building:a,connections:f,activeConnectionId:b,activeDatabase:p,collapsed:w,onToggleCollapse:()=>O(!w),onConnectionChange:le,onDatabaseChange:ce,onInsertTable:s=>z(c=>c+` ${s}`),onSelectTableQuery:s=>{const c=`SELECT * FROM ${s}`;z(c),b&&p&&u.executeQuery(a.id,b,p,c)}}),e.jsxs("div",{className:"database-panel__main",children:[H.length>0&&e.jsx(Ne,{tabs:H,activeTabId:C,onTabClick:te,onTabClose:se}),e.jsx(xe,{query:h,onChange:z,onExecute:ne,isExecuting:R,disabled:!b||!p,tables:v,tableSchemas:S,onRequestTableSchema:s=>{b&&p&&u.getTableSchema(a.id,b,p,s)}}),e.jsxs("div",{className:"database-panel__tabs",children:[e.jsxs("button",{className:`database-panel__tab ${T==="results"?"database-panel__tab--active":""}`,onClick:()=>r("results"),children:[n("terminal:database.results"),_.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:_.length})]}),e.jsxs("button",{className:`database-panel__tab ${T==="history"?"database-panel__tab--active":""}`,onClick:()=>r("history"),children:[n("terminal:database.history"),D.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:D.length})]}),T==="results"&&_.length>1&&e.jsxs("div",{className:"database-panel__result-nav",children:[e.jsxs("button",{disabled:i>=_.length-1,onClick:()=>g(s=>s+1),children:["← ",n("terminal:database.older")]}),e.jsxs("span",{children:[i+1," / ",_.length]}),e.jsxs("button",{disabled:i<=0,onClick:()=>g(s=>s-1),children:[n("terminal:database.newer")," →"]})]})]}),e.jsx("div",{className:"database-panel__tab-content",children:T==="results"?B?e.jsx(fe,{result:B,buildingId:a.id,building:a}):e.jsxs("div",{className:"database-panel__empty",children:[e.jsx("p",{children:n("terminal:database.noResultsYet")}),e.jsx("p",{children:n("terminal:database.selectDbAndRun")})]}):e.jsx(ye,{buildingId:a.id,history:D,onLoadQuery:re})})]})]})]})};export{we as DatabasePanel,je as DatabaseSidebar,Ne as DatabaseTabs,xe as QueryEditor,ye as QueryHistoryPanel,fe as ResultsTable};
|
|
1
|
+
import{u as U,a as ee,r as l,s as u,j as e,D as oe,I as L,C as me,b as be,c as ue,d as he,g as _e,e as pe,Q as xe,R as fe}from"./main-C2zgPci-.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const je=({building:a,connections:j,activeConnectionId:d,activeDatabase:n,collapsed:y,onToggleCollapse:_,onConnectionChange:D,onDatabaseChange:R,onInsertTable:N,onSelectTableQuery:F})=>{const{t:x}=U(["terminal"]),f=ee(a.id),[I,G]=l.useState(new Set),[T,r]=l.useState(""),[i,g]=l.useState(""),[w,O]=l.useState(!1),[P,J]=l.useState(null),H=l.useRef(null),K=l.useRef(null),C=l.useRef(null),k=d?f.databases.get(d)??[]:[],q=d&&n?`${d}:${n}`:"",$=q?f.tables.get(q)??[]:[],h=d?f.connectionStatus.get(d):void 0,E=l.useMemo(()=>{if(!T.trim())return k;const t=T.toLowerCase();return k.filter(o=>o.toLowerCase().includes(t))},[k,T]),z=l.useMemo(()=>{if(!i.trim())return $;const t=i.toLowerCase();return $.filter(o=>o.name.toLowerCase().includes(t))},[$,i]);l.useEffect(()=>{const t=o=>{K.current&&!K.current.contains(o.target)&&O(!1)};return w&&document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[w]),l.useEffect(()=>{d&&!h&&u.testDatabaseConnection(a.id,d)},[a.id,d,h]),l.useEffect(()=>{d&&(h!=null&&h.connected)&&k.length===0&&u.listDatabases(a.id,d)},[a.id,d,h==null?void 0:h.connected,k.length]),l.useEffect(()=>{d&&n&&$.length===0&&u.listTables(a.id,d,n)},[a.id,d,n,$.length]),l.useEffect(()=>{J(null),g("")},[d,n]);const b=l.useCallback(t=>{G(o=>{const v=new Set(o);if(v.has(t))v.delete(t);else if(v.add(t),d&&n){const S=`${d}:${n}:${t}`;f.tableSchemas.has(S)||u.getTableSchema(a.id,d,n,t)}return v})},[a.id,d,n,f.tableSchemas]),p=t=>{if(!d||!n)return null;const o=`${d}:${n}:${t}`;return f.tableSchemas.get(o)};return y?e.jsx("div",{className:"database-sidebar database-sidebar--collapsed",children:e.jsx("button",{className:"database-sidebar__toggle",onClick:_,title:x("terminal:database.expandSidebar"),children:"»"})}):e.jsxs("div",{className:"database-sidebar",children:[e.jsxs("div",{className:"database-sidebar__header",children:[e.jsx("span",{children:x("terminal:database.explorer")}),e.jsx("button",{className:"database-sidebar__toggle",onClick:_,title:x("terminal:database.collapseSidebar"),children:"«"})]}),e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:x("terminal:database.connection")}),e.jsx("select",{className:"database-sidebar__select",value:d||"",onChange:t=>D(t.target.value),children:j.length===0?e.jsx("option",{value:"",children:x("terminal:database.noConnections")}):j.map(t=>{var o;return e.jsxs("option",{value:t.id,children:[((o=oe[t.engine])==null?void 0:o.icon)??"🗄️"," ",t.name]},t.id)})}),h&&e.jsx("div",{className:`database-sidebar__status ${h.connected?"database-sidebar__status--connected":"database-sidebar__status--error"}`,children:h.connected?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✓"}),x("terminal:database.connected"),h.serverVersion&&e.jsxs("span",{className:"database-sidebar__version",children:["(",h.serverVersion,")"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✗"}),h.error||x("terminal:database.disconnected")]})})]}),k.length>0&&e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:x("terminal:database.databaseTitle")}),e.jsxs("div",{className:"database-sidebar__searchable-select",ref:K,children:[e.jsx("input",{ref:H,className:"database-sidebar__search-input",type:"text",value:w?T:n||"",placeholder:x("terminal:database.selectDatabase"),onChange:t=>{r(t.target.value),w||O(!0)},onFocus:()=>{O(!0),r("")},onKeyDown:t=>{var o,v;t.key==="Escape"?(O(!1),r(""),(o=H.current)==null||o.blur()):t.key==="Enter"&&E.length===1&&(R(E[0]),O(!1),r(""),(v=H.current)==null||v.blur())}}),w&&e.jsx("div",{className:"database-sidebar__dropdown",children:E.length===0?e.jsx("div",{className:"database-sidebar__dropdown-empty",children:"No matches"}):E.map(t=>e.jsx("div",{className:`database-sidebar__dropdown-item ${t===n?"database-sidebar__dropdown-item--active":""}`,onMouseDown:o=>{o.preventDefault(),R(t),O(!1),r("")},children:t},t))})]})]}),$.length>0&&e.jsxs("div",{className:"database-sidebar__section database-sidebar__section--tables",children:[e.jsx("div",{className:"database-sidebar__section-title",children:i.trim()?x("terminal:database.tablesCount",{count:z.length})+` / ${$.length}`:x("terminal:database.tablesCount",{count:$.length})}),e.jsxs("div",{className:"database-sidebar__table-filter",children:[e.jsx("input",{ref:C,className:"database-sidebar__table-filter-input",type:"text",value:i,placeholder:x("terminal:database.filterTables"),onChange:t=>g(t.target.value),onKeyDown:t=>{var o;t.key==="Escape"&&(i?g(""):(o=C.current)==null||o.blur(),t.stopPropagation())}}),i&&e.jsx("button",{className:"database-sidebar__table-filter-clear",onClick:()=>{var t;g(""),(t=C.current)==null||t.focus()},title:"Clear filter",children:"×"})]}),e.jsxs("div",{className:"database-sidebar__tables",children:[i.trim()&&z.length===0&&e.jsx("div",{className:"database-sidebar__tables-empty",children:x("terminal:database.noTablesMatch")}),z.map(t=>{const o=I.has(t.name),v=o?p(t.name):null;return e.jsxs("div",{className:"database-sidebar__table",children:[e.jsxs("div",{className:"database-sidebar__table-header",children:[e.jsx("button",{className:"database-sidebar__table-expand",onClick:()=>b(t.name),title:o?"Collapse table schema":"Expand table schema",children:e.jsx(L,{name:o?"caret-down":"caret-right",size:10})}),e.jsx("span",{className:"database-sidebar__table-icon",children:e.jsx(L,{name:t.type==="view"?"eye":"clipboard",size:12})}),e.jsx("span",{className:`database-sidebar__table-name ${P===t.name?"database-sidebar__table-name--selected":""}`,onClick:()=>J(t.name),onDoubleClick:()=>{J(t.name),F(t.name)},children:t.name}),e.jsx("button",{className:"database-sidebar__table-insert",onClick:S=>{S.stopPropagation(),N(t.name)},title:x("terminal:database.insertTableName"),children:"+"})]}),o&&v&&e.jsx("div",{className:"database-sidebar__table-columns",children:v.columns.map(S=>e.jsxs("div",{className:"database-sidebar__column",onClick:()=>N(S.name),title:`${S.type}${S.nullable?" NULL":" NOT NULL"}${S.primaryKey?" PK":""}`,children:[e.jsx("span",{className:"database-sidebar__column-icon",children:S.primaryKey?e.jsx(L,{name:"key",size:11}):null}),e.jsx("span",{className:"database-sidebar__column-name",children:S.name}),e.jsx("span",{className:"database-sidebar__column-type",children:S.type})]},S.name))})]},t.name)})]})]})]})},ye=({buildingId:a,history:j,onLoadQuery:d})=>{const{t:n}=U(["terminal","common"]),[y,_]=l.useState(""),[D,R]=l.useState(!1),[N,F]=l.useState(!1),x=l.useMemo(()=>{let r=j;if(D&&(r=r.filter(i=>i.favorite)),y.trim()){const i=y.toLowerCase();r=r.filter(g=>g.query.toLowerCase().includes(i)||g.database.toLowerCase().includes(i))}return r},[j,D,y]),f=r=>{const i=new Date(r),w=new Date().getTime()-i.getTime();return w<1440*60*1e3?i.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):w<10080*60*1e3?i.toLocaleDateString([],{weekday:"short"})+" "+i.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):i.toLocaleDateString([],{month:"short",day:"numeric"})},I=l.useCallback((r,i)=>{i.stopPropagation(),u.toggleQueryFavorite(a,r)},[a]),G=l.useCallback((r,i)=>{i.stopPropagation(),u.deleteQueryFromHistory(a,r)},[a]),T=l.useCallback(()=>{F(!0)},[]);return j.length===0?e.jsxs("div",{className:"query-history query-history--empty",children:[e.jsx("p",{children:n("terminal:database.noHistory")}),e.jsx("p",{children:n("terminal:database.queriesAppearHere")})]}):e.jsxs("div",{className:"query-history",children:[e.jsxs("div",{className:"query-history__toolbar",children:[e.jsx("input",{type:"text",className:"query-history__search",placeholder:n("terminal:database.searchQueries"),value:y,onChange:r=>_(r.target.value)}),e.jsxs("label",{className:"query-history__filter",children:[e.jsx("input",{type:"checkbox",checked:D,onChange:r=>R(r.target.checked)}),n("terminal:database.favoritesOnly")]}),e.jsx("button",{className:"query-history__clear",onClick:T,title:n("terminal:database.clearAll"),children:n("terminal:database.clearAll")})]}),e.jsxs("div",{className:"query-history__list",children:[x.map(r=>e.jsxs("div",{className:`query-history__item ${r.status==="error"?"query-history__item--error":""}`,onClick:()=>d(r.query),children:[e.jsxs("div",{className:"query-history__item-header",children:[e.jsx("span",{className:`query-history__status ${r.status==="success"?"query-history__status--success":"query-history__status--error"}`,children:e.jsx(L,{name:r.status==="success"?"check":"cross",size:12})}),e.jsx("span",{className:"query-history__database",children:r.database}),e.jsx("span",{className:"query-history__date",children:f(r.executedAt)}),e.jsxs("span",{className:"query-history__duration",children:[r.duration,"ms"]}),r.rowCount!==void 0&&e.jsx("span",{className:"query-history__row-count",children:n("terminal:database.rowCount",{count:r.rowCount})})]}),e.jsx("div",{className:"query-history__query",children:e.jsx("code",{children:r.query.length>200?r.query.substring(0,200)+"...":r.query})}),r.error&&e.jsx("div",{className:"query-history__error",children:r.error}),e.jsxs("div",{className:"query-history__actions",children:[e.jsx("button",{className:`query-history__favorite ${r.favorite?"query-history__favorite--active":""}`,onClick:i=>I(r.id,i),title:r.favorite?n("terminal:database.removeFromFavorites"):n("terminal:database.addToFavorites"),children:e.jsx(L,{name:"star",size:12,weight:r.favorite?"fill":"regular",color:r.favorite?"#facc15":void 0})}),e.jsx("button",{className:"query-history__delete",onClick:i=>G(r.id,i),title:n("terminal:database.deleteFromHistory"),children:e.jsx(L,{name:"trash",size:12})})]})]},r.id)),x.length===0&&e.jsx("div",{className:"query-history__no-results",children:n("terminal:database.noQueriesMatch")})]}),e.jsx(me,{isOpen:N,title:n("terminal:database.clearAll"),message:n("terminal:database.confirmClearHistory"),confirmLabel:n("terminal:database.clearAll"),cancelLabel:n("common:buttons.cancel"),variant:"danger",onConfirm:()=>u.clearQueryHistory(a),onClose:()=>F(!1)})]})},Ne=({tabs:a,activeTabId:j,onTabClick:d,onTabClose:n})=>{const{t:y}=U(["terminal"]);return e.jsx("div",{className:"database-tabs",children:a.map(_=>e.jsxs("div",{className:`database-tabs__tab ${j===_.id?"database-tabs__tab--active":""}`,children:[e.jsxs("button",{className:"database-tabs__tab-label",onClick:()=>d(_),title:`${_.connectionName} / ${_.database}`,children:[_.database,e.jsx("span",{className:"database-tabs__tab-connection",children:_.connectionName})]}),e.jsx("button",{className:"database-tabs__tab-close",onClick:()=>n(_.id),title:y("terminal:database.closeTab"),"aria-label":`Close ${_.database} tab`,children:"×"})]},_.id))})},ae=a=>`db-panel-${a}`;function ve(a){try{const j=localStorage.getItem(ae(a));return j?JSON.parse(j):{}}catch{return{}}}function Se(a,j){try{localStorage.setItem(ae(a),JSON.stringify(j))}catch{}}const we=({building:a,onClose:j,onMinimize:d})=>{var W,Y,X,Z;const{t:n}=U(["terminal","common"]),y=ee(a.id),_=be(a.id),D=ue(a.id),R=he(a.id),N=l.useRef(ve(a.id)),F=l.useRef(null),x=l.useRef(0),f=((W=a.database)==null?void 0:W.connections)??[],I=(s,c)=>`${s}:${c}`,G=s=>s?(N.current.queries??{})[s]??"":N.current.generalQuery??"",[T,r]=l.useState("results"),[i,g]=l.useState(0),[w,O]=l.useState(!1),[P,J]=l.useState(!1),[H,K]=l.useState(()=>(N.current.openTabs??[]).map(c=>{var m;return{id:`${c.connectionId}:${c.database}`,connectionId:c.connectionId,connectionName:((m=f.find(A=>A.id===c.connectionId))==null?void 0:m.name)??c.connectionId,database:c.database}})),[C,k]=l.useState(N.current.activeTabId??null),[q,$]=l.useState(()=>{const s=N.current.queries??{};return N.current.generalQuery,s}),[h,E]=l.useState(G(C)),z=l.useCallback(s=>{E(c=>{const m=typeof s=="function"?s(c):s;return $(A=>{const Q={...A};return C&&(Q[C]=m),Q}),m})},[C]),b=y.activeConnectionId??N.current.connectionId??((Y=a.database)==null?void 0:Y.activeConnectionId)??((X=f[0])==null?void 0:X.id),p=y.activeDatabase??N.current.database??((Z=a.database)==null?void 0:Z.activeDatabase),t=f.find(s=>s.id===b),o=b&&p?`${b}:${p}`:"",v=o?y.tables.get(o)??[]:[],S=l.useMemo(()=>{const s=new Map;return!b||!p||v.forEach(c=>{const m=y.tableSchemas.get(`${b}:${p}:${c.name}`);m&&s.set(c.name,{columns:m.columns})}),s},[b,p,v,y.tableSchemas]),V=l.useCallback((s,c)=>{var Q;const m=I(s,c),A=((Q=f.find(M=>M.id===s))==null?void 0:Q.name)??s;K(M=>{if(M.some(de=>de.id===m))return M;const ie={id:m,connectionId:s,connectionName:A,database:c};return[...M,ie]}),k(m),E(q[m]??""),u.setActiveConnection(a.id,s),u.setActiveDatabase(a.id,c)},[a.id,f,q]),se=l.useCallback(s=>{K(c=>c.filter(m=>m.id!==s)),C===s&&K(c=>{if(c.length>0){const m=c[0];k(m.id),E(q[m.id]??""),u.setActiveConnection(a.id,m.connectionId),u.setActiveDatabase(a.id,m.database)}else k(null),E("");return c})},[C,a.id,q]),te=l.useCallback(s=>{k(s.id),E(q[s.id]??""),u.setActiveConnection(a.id,s.connectionId),u.setActiveDatabase(a.id,s.database)},[a.id,q]);l.useEffect(()=>{if(!P&&f.length>0){const s=N.current;s.connectionId&&f.some(c=>c.id===s.connectionId)&&(u.setActiveConnection(a.id,s.connectionId),u.listDatabases(a.id,s.connectionId),s.database&&(u.setActiveDatabase(a.id,s.database),u.listTables(a.id,s.connectionId,s.database))),J(!0)}},[a.id,f,P]),l.useEffect(()=>{u.requestQueryHistory(a.id)},[a.id]),l.useEffect(()=>{const s=c=>{c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),j())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[j]),l.useEffect(()=>{P&&b&&Se(a.id,{connectionId:b,database:p,lastQuery:h,queries:q,generalQuery:"",openTabs:H.map(s=>({connectionId:s.connectionId,database:s.database})),activeTabId:C??void 0})},[a.id,b,p,h,P,H,C,q]);const ne=l.useCallback(s=>{var c;if(!(!b||!p||!h.trim()||R))if(s==="cursor"){const m=(c=F.current)==null?void 0:c.querySelector(".query-editor__textarea"),A=(m==null?void 0:m.selectionStart)??x.current,Q=_e(h,A);Q&&u.executeQuery(a.id,b,p,Q)}else{const m=pe(h);if(m.length<=1)u.executeQuery(a.id,b,p,h.trim());else{const A=b,Q=p;(async()=>{for(const M of m)await u.executeQueryAndWait(a.id,A,Q,M.sql)})()}}},[a.id,b,p,h,R]),re=l.useCallback(s=>{z(s),r("results")},[]),le=l.useCallback(s=>{u.setActiveConnection(a.id,s),u.listDatabases(a.id,s)},[a.id]),ce=l.useCallback(s=>{b&&(V(b,s),u.listTables(a.id,b,s))},[a.id,b,V]),B=_[i];return f.length===0?e.jsxs("div",{className:"database-panel",ref:F,children:[e.jsxs("div",{className:"database-panel__header",children:[e.jsxs("div",{className:"database-panel__title",children:[e.jsx("span",{className:"database-panel__icon",children:e.jsx(L,{name:"database",size:16})}),e.jsx("span",{className:"database-panel__name",children:a.name})]}),e.jsx("button",{className:"database-panel__close",onClick:j,children:"×"})]}),e.jsx("div",{className:"database-panel__body",children:e.jsxs("div",{className:"database-panel__no-connections",children:[e.jsx("div",{className:"database-panel__no-connections-icon",children:e.jsx(L,{name:"plug",size:32})}),e.jsx("h3",{children:n("terminal:database.noConnections")}),e.jsx("p",{children:n("terminal:database.noConnectionsDesc")}),e.jsx("p",{children:n("terminal:database.toGetStarted")}),e.jsxs("ol",{children:[e.jsx("li",{children:n("terminal:database.step1Close")}),e.jsx("li",{children:n("terminal:database.step2Settings")}),e.jsx("li",{children:n("terminal:database.step3AddConnection")}),e.jsx("li",{children:n("terminal:database.step4Reopen")})]})]})})]}):e.jsxs("div",{className:"database-panel",ref:F,children:[e.jsxs("div",{className:"database-panel__header",children:[e.jsxs("div",{className:"database-panel__title",children:[e.jsx("span",{className:"database-panel__icon",children:(t==null?void 0:t.engine)==="mysql"?"🐬":"🐘"}),e.jsx("span",{className:"database-panel__name",children:a.name}),t&&e.jsxs("span",{className:"database-panel__connection-info",children:[t.name," / ",p||n("terminal:database.noDatabaseSelected")]})]}),e.jsxs("div",{className:"database-panel__header-actions",children:[d&&e.jsx("button",{className:"database-panel__close",onClick:d,title:"Minimize — dock below the terminal input",children:e.jsx(L,{name:"arrow-down",size:14})}),e.jsx("button",{className:"database-panel__close",onClick:j,children:"×"})]})]}),e.jsxs("div",{className:"database-panel__body",children:[e.jsx(je,{building:a,connections:f,activeConnectionId:b,activeDatabase:p,collapsed:w,onToggleCollapse:()=>O(!w),onConnectionChange:le,onDatabaseChange:ce,onInsertTable:s=>z(c=>c+` ${s}`),onSelectTableQuery:s=>{const c=`SELECT * FROM ${s}`;z(c),b&&p&&u.executeQuery(a.id,b,p,c)}}),e.jsxs("div",{className:"database-panel__main",children:[H.length>0&&e.jsx(Ne,{tabs:H,activeTabId:C,onTabClick:te,onTabClose:se}),e.jsx(xe,{query:h,onChange:z,onExecute:ne,isExecuting:R,disabled:!b||!p,tables:v,tableSchemas:S,onRequestTableSchema:s=>{b&&p&&u.getTableSchema(a.id,b,p,s)}}),e.jsxs("div",{className:"database-panel__tabs",children:[e.jsxs("button",{className:`database-panel__tab ${T==="results"?"database-panel__tab--active":""}`,onClick:()=>r("results"),children:[n("terminal:database.results"),_.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:_.length})]}),e.jsxs("button",{className:`database-panel__tab ${T==="history"?"database-panel__tab--active":""}`,onClick:()=>r("history"),children:[n("terminal:database.history"),D.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:D.length})]}),T==="results"&&_.length>1&&e.jsxs("div",{className:"database-panel__result-nav",children:[e.jsxs("button",{disabled:i>=_.length-1,onClick:()=>g(s=>s+1),children:["← ",n("terminal:database.older")]}),e.jsxs("span",{children:[i+1," / ",_.length]}),e.jsxs("button",{disabled:i<=0,onClick:()=>g(s=>s-1),children:[n("terminal:database.newer")," →"]})]})]}),e.jsx("div",{className:"database-panel__tab-content",children:T==="results"?B?e.jsx(fe,{result:B,buildingId:a.id,building:a}):e.jsxs("div",{className:"database-panel__empty",children:[e.jsx("p",{children:n("terminal:database.noResultsYet")}),e.jsx("p",{children:n("terminal:database.selectDbAndRun")})]}):e.jsx(ye,{buildingId:a.id,history:D,onLoadQuery:re})})]})]})]})};export{we as DatabasePanel,je as DatabaseSidebar,Ne as DatabaseTabs,xe as QueryEditor,ye as QueryHistoryPanel,fe as ResultsTable};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as a,H as wn,J as qt,K as ln,L as rn,j as e,M as on,N as vn,u as Ut,O as Cn,P as jn,U as Nn,V as yn,W as kn,X as An,Y as Sn,Z as En,_ as Yt,S as E,$ as Kt,a0 as Ht,a1 as Zt,a2 as Nt,a3 as Ae,a4 as Mn,s as f,a5 as cn,m as dn,a6 as In,z as Jt,B as Qt,I as p,a7 as Tn,q as Pn,a8 as Ln,a9 as un,aa as pn,ab as Rn,ac as $n,ad as Dn,ae as zn,af as On,ag as Bn,ah as Fn,ai as Wn,aj as Hn,ak as Un,al as Vn,am as Xn,an as en,C as Gn,ao as qn,ap as tn,aq as Yn,ar as Kn,as as Zn,at as Jn,au as Qn,av as ea,aw as ta,ax as na,ay as aa,az as sa,aA as ia,aB as la,aC as ra,aD as oa,aE as Ke,aF as ca,aG as da,aH as ua,aI as pa,aJ as rt,aK as ma,aL as fa,aM as ha,aN as ga,aO as xa,aP as ba,aQ as _a}from"./main-C2zgPci-.js";import{g as wa}from"./area-logos-CThPeqIM.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";function va(u){const o=a.useRef(u);o.current=u,a.useEffect(()=>{if(!wn())return;let m=null,h=!1;return qt.addListener("backButton",()=>{o.current()==="exit"&&qt.exitApp()}).then(y=>{h?y.remove():m=y}),()=>{h=!0,m&&(m.remove(),m=null)}},[])}async function Ca(u){const o=ln(),m=await fetch(`${rn()}/api/agents/${u}/terminal`,{method:"POST",headers:{Authorization:`Bearer ${o}`}});if(!m.ok){const h=await m.json().catch(()=>({}));throw new Error((h==null?void 0:h.error)||`Failed to start terminal (${m.status})`)}return m.json()}async function ja(u){const o=ln();await fetch(`${rn()}/api/agents/${u}/terminal`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}})}const ot=new Map;function Na({agentId:u}){const[o,m]=a.useState(null),[h,y]=a.useState(null);return a.useEffect(()=>{let $=!1;const T=ot.get(u);return T&&(clearTimeout(T),ot.delete(u)),m(null),y(null),Ca(u).then(B=>{$||m(B.url)}).catch(B=>{$||y(B instanceof Error?B.message:"Failed to start terminal")}),()=>{$=!0;const B=ot.get(u);B&&clearTimeout(B),ot.set(u,setTimeout(()=>{ot.delete(u),ja(u)},2500))}},[u]),h?e.jsx("div",{className:"flat-classic-terminal flat-classic-terminal--message",children:e.jsx("span",{children:h})}):o?e.jsx("div",{className:"flat-classic-terminal",children:e.jsx(on,{terminalUrl:o,visible:!0})}):e.jsx("div",{className:"flat-classic-terminal flat-classic-terminal--message",children:e.jsx("span",{children:"Attaching to interactive session…"})})}const Bt=new Map,ya=6e4;function ka({agentId:u,contextSummary:o}){const{t:m}=Ut(["terminal","common"]),[h,y]=a.useState(()=>{var D;return((D=Bt.get(u))==null?void 0:D.snapshot)??null}),[$,T]=a.useState(!1),[B,te]=a.useState(null),w=a.useRef(0);a.useEffect(()=>{const D=Bt.get(u);if(D&&Date.now()-D.fetchedAt<ya){y(D.snapshot);return}const X=++w.current;T(!0),te(null),Cn(u).then(J=>{X===w.current&&(Bt.set(u,{snapshot:J,fetchedAt:Date.now()}),y(J),T(!1))}).catch(J=>{X===w.current&&(te(J.message||"Failed to load plan limits"),T(!1))})},[u]);const F=[];if(h!=null&&h.rateLimits){const D=[{key:"fiveHour",label:m("terminal:usage.currentSession"),window:h.rateLimits.fiveHour},{key:"sevenDay",label:m("terminal:usage.currentWeekAll"),window:h.rateLimits.sevenDay},{key:"sevenDayOpus",label:m("terminal:usage.currentWeekOpus"),window:h.rateLimits.sevenDayOpus},{key:"sevenDaySonnet",label:m("terminal:usage.currentWeekSonnet"),window:h.rateLimits.sevenDaySonnet}];for(const X of D)X.window&&F.push({...X,window:X.window})}return e.jsxs("div",{className:"plan-limits-tooltip",children:[o&&e.jsx("div",{className:"plan-limits-tooltip__context",children:o}),e.jsx("div",{className:"plan-limits-tooltip__title",children:m("terminal:usage.limits")}),$&&!h&&e.jsxs("div",{className:"plan-limits-tooltip__muted",children:[m("common:status.loading"),"…"]}),!$&&B&&!h&&e.jsx("div",{className:"plan-limits-tooltip__muted",children:m("terminal:usage.limitsError",{message:B})}),F.length>0?e.jsx("div",{className:"plan-limits-tooltip__gauges",children:F.map(({key:D,label:X,window:J})=>{const Q=Math.max(0,Math.min(100,J.utilization)),oe=Nn(Q);return e.jsxs("div",{className:"plan-limits-tooltip__gauge",children:[e.jsxs("div",{className:"plan-limits-tooltip__gauge-head",children:[e.jsx("span",{className:"plan-limits-tooltip__gauge-label",children:X}),e.jsx("span",{className:"plan-limits-tooltip__gauge-percent",style:{color:oe},children:m("terminal:usage.percentUsed",{percent:Math.round(Q)})})]}),e.jsx("div",{className:"plan-limits-tooltip__bar",children:e.jsx("div",{className:"plan-limits-tooltip__bar-fill",style:{width:`${Q}%`,background:oe}})}),e.jsx("div",{className:"plan-limits-tooltip__reset",children:m("terminal:usage.resets",{time:jn(J.resetsAt)})})]},D)})}):h&&!$&&e.jsx("div",{className:"plan-limits-tooltip__muted",children:h.rateLimitsError?m("terminal:usage.limitsError",{message:h.rateLimitsError}):h.cliHint})]})}function Aa({agentId:u,disabled:o,contextSummary:m,children:h}){return e.jsx(vn,{position:"top",maxWidth:320,disabled:o,className:"plan-limits-tooltip-wrapper",triggerStyle:{display:"inline-flex",alignItems:"center"},content:e.jsx(ka,{agentId:u,contextSummary:m}),children:h})}const Sa=a.memo(function({className:o=""}){const{t:m}=Ut(["common"]),[h,y]=yn(),$=a.useRef(null),[T,B]=a.useState(null);a.useLayoutEffect(()=>{const w=$.current;if(!w)return;const F=w.querySelector(".view-mode-toggle__btn--active");F&&B({left:F.offsetLeft,width:F.offsetWidth})},[h]);const te=a.useCallback(w=>{if(w!==h){if(typeof window<"u"&&window.dispatchEvent(new CustomEvent("tide:viewmode-switch-pressed",{detail:{mode:w}})),w==="3d"){requestAnimationFrame(()=>y(w));return}y(w)}},[h,y]);return e.jsxs("div",{className:`view-mode-toggle ${o}`,ref:$,children:[T&&e.jsx("div",{className:"view-mode-toggle__indicator",style:{left:T.left,width:T.width}}),kn.map(w=>e.jsxs("button",{className:`view-mode-toggle__btn ${h===w?"view-mode-toggle__btn--active":""}`,onClick:()=>te(w),title:m(`common:viewMode.descriptions.${w}`),children:[e.jsxs("span",{className:"view-mode-toggle__icon",children:[w==="2d"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),e.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),e.jsx("line",{x1:"12",y1:"3",x2:"12",y2:"21"})]}),w==="3d"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e.jsx("path",{d:"M2 17l10 5 10-5"}),e.jsx("path",{d:"M2 12l10 5 10-5"})]}),w==="flat"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"3",width:"8",height:"8",rx:"1"}),e.jsx("rect",{x:"13",y:"3",width:"8",height:"8",rx:"1"}),e.jsx("rect",{x:"3",y:"13",width:"8",height:"8",rx:"1"}),e.jsx("rect",{x:"13",y:"13",width:"8",height:"8",rx:"1"})]}),w==="dashboard"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),e.jsx("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),e.jsx("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),e.jsx("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]})]}),e.jsx("span",{className:"view-mode-toggle__label",children:m(`common:viewMode.labels.${w}`)})]},w))]})}),yt=3,kt=280,nn=320,Ft=240,an=64,Ea=["simple","chat","advanced"],Ma={simple:"Simple",chat:"Chat",advanced:"Advanced"},Ia={simple:"○",chat:"◐",advanced:"◉"},Ta={simple:"Simple view — clean messages only",chat:"Chat view — assistant replies (no tool calls)",advanced:"Advanced view — everything including tools"},sn="flat-clear-context",mn="tide:flat-embedded-panels";function fn(){try{const u=localStorage.getItem(mn),o=u?JSON.parse(u):{};return o&&typeof o=="object"?o:{}}catch{return{}}}function Wt(u,o){try{const m=fn();o?m[u]=o:delete m[u],localStorage.setItem(mn,JSON.stringify(m))}catch{}}function Pa(u){const o=u.split("/").filter(Boolean);return o.length===0?u:o.slice(-2).join("/")}function La(u){if(u.provider==="codex"){const $=u.codexModel||"gpt-5.6-luna",T=xa[$];return{model:(T==null?void 0:T.label)||$}}if(u.provider==="opencode")return{model:u.opencodeModel||"opencode"};const o=u.model||"sonnet",m=_a[o],h=u.effort,y=h?ba[h]:void 0;return{model:(m==null?void 0:m.label)||o,effort:y==null?void 0:y.label}}function Ra(u,o){if(o.type==="rectangle"&&o.width&&o.height){const m=o.width/2,h=o.height/2;return u.x>=o.center.x-m&&u.x<=o.center.x+m&&u.z>=o.center.z-h&&u.z<=o.center.z+h}if(o.type==="circle"&&o.radius){const m=u.x-o.center.x,h=u.z-o.center.z;return m*m+h*h<=o.radius*o.radius}return!1}const $a=qn.memo(function({agentId:o,terminalViewMode:m,onTerminalViewModeChange:h,inspectorOpen:y,onToggleInspector:$,onImageClick:T,onFileClick:B,onBashClick:te,onViewMarkdown:w,onRequestClearSubordinates:F,keyboard:D,canNavigateBack:X,canNavigateForward:J,onNavigateBack:Q,onNavigateForward:oe,agentInfoOpen:Fe,onToggleAgentInfo:Ze,onHeaderContextMenu:ct,onBuildingContextMenu:K}){var it,bt;const b=tn(o),I=dn(),Je=Yn(),ne=a.useRef(null),We=a.useRef(null),{displayedAgentId:Re,fadingOut:Qe}=Kn(o),dt=tn(Re),He=!!Je.interactiveMode&&((b==null?void 0:b.provider)??"claude")==="claude"&&!!(b!=null&&b.sessionId),[fe,$e]=a.useState(!1);a.useEffect(()=>{$e(!1)},[o]),a.useEffect(()=>{!He&&fe&&$e(!1)},[He,fe]),a.useEffect(()=>{const n=We.current;if(!n)return;const r=d=>{d.button===3?(d.preventDefault(),d.stopPropagation(),Q()):d.button===4&&(d.preventDefault(),d.stopPropagation(),oe())},i=d=>{(d.button===3||d.button===4)&&d.preventDefault()};return n.addEventListener("mouseup",r),n.addEventListener("mousedown",i),()=>{n.removeEventListener("mouseup",r),n.removeEventListener("mousedown",i)}},[Q,oe]),a.useEffect(()=>{const n=We.current;if(!n)return;let r=0,i=0,d=0;const O=250,re=600,P=80,Le=1.5,Ye=L=>{let U=L instanceof HTMLElement?L:null;for(;U&&U!==n;){const wt=window.getComputedStyle(U).overflowX;if((wt==="auto"||wt==="scroll")&&U.scrollWidth>U.clientWidth)return!0;U=U.parentElement}return!1},_t=L=>{const U=Date.now();if(U<d){L.preventDefault();return}if(Math.abs(L.deltaX)<=Math.abs(L.deltaY)*Le){r=0;return}if(Ye(L.target)){r=0;return}U-i>O&&(r=0),i=U,r+=L.deltaX,r<=-P?(r=0,d=U+re,L.preventDefault(),Q()):r>=P&&(r=0,d=U+re,L.preventDefault(),oe())};return n.addEventListener("wheel",_t,{passive:!1}),()=>n.removeEventListener("wheel",_t)},[Q,oe]);const et=cn(),Se=a.useMemo(()=>{if(!b)return null;const n=new Set,r=[];for(const i of et.values())i.archived||i.directories.length===0||i.assignedAgentIds.includes(o)&&(n.add(i.id),r.push(i));for(const i of et.values())i.archived||i.directories.length===0||n.has(i.id)||Ra({x:b.position.x,z:b.position.z},i)&&(n.add(i.id),r.push(i));return r.length===0?null:r.flatMap(i=>i.directories.filter(d=>d&&d.trim().length>0).map(d=>({areaId:i.id,areaName:i.name,dir:d})))},[b,o,et]),{branches:Ee,fetchRemote:he,fetchingDirs:ge}=Zn(Se),Ue=a.useMemo(()=>{var i;const n=f.getAreaForAgent(o);if(!n)return[];const r=[];for(const d of I.values())d.type==="terminal"&&f.isPositionInArea(d.position,n)&&r.push({id:d.id,name:d.name,hasUrl:!!((i=d.terminalStatus)!=null&&i.url)});return r},[o,I]),Ve=a.useMemo(()=>{var i;const n=f.getAreaForAgent(o);if(!n)return[];const r=[];for(const d of I.values())d.type==="server"&&((i=d.pm2)!=null&&i.enabled)&&f.isPositionInArea(d.position,n)&&r.push({id:d.id,name:d.name});return r},[o,I]),xe=a.useMemo(()=>{const n=f.getAreaForAgent(o);if(!n)return[];const r=[];for(const i of I.values())i.type==="database"&&i.database&&f.isPositionInArea(i.position,n)&&r.push({id:i.id,name:i.name});return r},[o,I]),Me=Jn(),ce=a.useMemo(()=>{const n=f.getAreaForAgent(o);if(!n)return[];const r=[];for(const i of I.values())if(i.type==="tests"&&f.isPositionInArea(i.position,n)){const d=!!i.folderPath&&Me.some(O=>Qn(O,i.folderPath));r.push({id:i.id,name:i.name,working:d})}return r},[o,I,Me]),be=a.useMemo(()=>{const n=f.getAreaForAgent(o);if(!n)return[];const r=[];for(const i of I.values())i.type==="http"&&f.isPositionInArea(i.position,n)&&r.push({id:i.id,name:i.name});return r},[o,I]),[,de]=a.useReducer(n=>n+1,0),_e=((it=ne.current)==null?void 0:it.search.searchMode)??!1,Ie=a.useCallback(()=>{var n;(n=ne.current)==null||n.search.toggleSearch(),de()},[]),we=ea(),tt=we.isPending(sn),[C,ve]=a.useState(null),W=C?I.get(C.buildingId):null,[ut,Te]=a.useState(""),[Ce,At]=a.useState(()=>ta()),z=a.useMemo(()=>{var n;return((n=f.getAreaForAgent(o))==null?void 0:n.id)??null},[o,I]),De=a.useCallback((n,r)=>{Te(""),ve(i=>{const d=(i==null?void 0:i.buildingId)===r?null:{type:n,buildingId:r};return z&&Wt(z,d),d})},[z]),ae=a.useCallback(()=>{Te(""),ve(null),z&&Wt(z,null)},[z]);a.useEffect(()=>{if((C==null?void 0:C.type)!=="pm2-logs")return;const n=C.buildingId;return f.startLogStreaming(n,200),()=>f.stopLogStreaming(n)},[C]);const{height:St,onResizeStart:Et}=na(),{sidePanelWidth:Mt,handleSidePanelResizeStart:It}=aa(),[ze,pt]=a.useState(()=>Ht(E.GIT_PANEL_OPEN,!1)),[je,_]=a.useState(()=>Ht(E.BUILDINGS_PANEL_OPEN,!1)),[Oe,mt]=a.useState(!1),Ne=a.useCallback(()=>{mt(n=>{const r=!n;return r&&sa.setEnabled(!0),r})},[]),se=a.useCallback(()=>mt(!1),[]),Xe=a.useCallback(()=>{pt(n=>{const r=!n;return Ae(E.GIT_PANEL_OPEN,r),r})},[]),ft=a.useCallback(()=>{_(n=>{const r=!n;return Ae(E.BUILDINGS_PANEL_OPEN,r),r})},[]),Tt=a.useCallback(()=>{pt(!1),Ae(E.GIT_PANEL_OPEN,!1)},[]),Pt=a.useCallback(()=>{_(!1),Ae(E.BUILDINGS_PANEL_OPEN,!1)},[]),Lt=ia(),Pe=a.useMemo(()=>({terminal:Ue,"pm2-logs":Ve,database:xe,tests:ce,http:be}),[Ue,Ve,xe,ce,be]);a.useEffect(()=>{if(!C)return;Pe[C.type].some(r=>r.id===C.buildingId)||(Te(""),ve(null))},[C,Pe]);const Ge=a.useRef(void 0);a.useEffect(()=>{var r;if(Ge.current===z)return;Ge.current=z;const n=z?fn()[z]:void 0;Te(""),n&&((r=Pe[n.type])!=null&&r.some(i=>i.id===n.buildingId))?ve(n):ve(null)},[z,Pe]),a.useEffect(()=>{const n=r=>{var O;const i=r.detail;if(!(i!=null&&i.buildingId)||!(i!=null&&i.type)||!((O=Pe[i.type])!=null&&O.some(re=>re.id===i.buildingId)))return;i.handled=!0,Te("");const d={type:i.type,buildingId:i.buildingId};ve(d),z&&Wt(z,d)};return window.addEventListener("tide:dock-building-flat",n),()=>window.removeEventListener("tide:dock-building-flat",n)},[Pe,z]);const[ie,ue]=a.useState(!1),pe=a.useRef(null);if(a.useEffect(()=>{if(!ie)return;const n=r=>{pe.current&&!pe.current.contains(r.target)&&ue(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[ie]),!b)return e.jsx("div",{className:"flat-chat flat-chat--empty",children:e.jsxs("div",{className:"flat-chat__placeholder",children:[e.jsx("span",{className:"flat-chat__placeholder-icon",children:"💬"}),e.jsx("span",{className:"flat-chat__placeholder-text",children:"Select an agent to start chatting"})]})});const ye=b.contextStats,Z=!!ye,ke=ye?ye.totalTokens:b.contextUsed||0,ht=ye?ye.contextWindow:b.contextLimit||2e5,Rt=ye?ye.usedPercent:Math.round(ke/ht*100),me=Math.max(0,Math.min(100,Rt)),nt=Math.round(me*10)/10,$t=Math.round((100-me)*10)/10,gt=me>=80?"#ff4a4a":me>=60?"#ff9e4a":me>=40?"#ffd700":"#4aff9e",at=(ke/1e3).toFixed(1),ee=(ht/1e3).toFixed(1),le=b.cwd,st=le?Pa(le):null,qe=((bt=b.subordinateIds)==null?void 0:bt.length)||0,xt=qe>0;return e.jsxs("div",{ref:We,className:`flat-terminal-wrapper ${ze||je||Oe?"flat-terminal-wrapper--with-side-panel":""} ${Qe?"pane-fading-out":""}`,style:{"--guake-side-panel-width":`min(${Mt}px, 70%)`},children:[e.jsxs("div",{className:"flat-terminal-wrapper__header",children:[e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__header-main ${Fe?"flat-terminal-wrapper__header-main--active":""}`,onClick:Ze,onContextMenu:n=>{n.preventDefault(),n.stopPropagation(),ct({x:n.clientX,y:n.clientY})},title:Fe?"Hide agent info":"Show agent info","aria-pressed":Fe,children:[e.jsx(un,{agent:b,size:28}),e.jsxs("span",{className:"flat-terminal-wrapper__header-info",children:[e.jsx("span",{className:"flat-terminal-wrapper__header-name",children:b.name}),e.jsx("span",{className:"flat-terminal-wrapper__header-status",style:{color:pn(b.status)},children:b.status})]}),b.taskLabel&&e.jsxs("span",{className:"flat-terminal-wrapper__header-task",title:b.taskLabel,children:["📋 ",b.taskLabel]}),e.jsxs("span",{className:"flat-terminal-wrapper__header-model",children:[e.jsx("img",{src:b.provider==="codex"?"/assets/codex.png":b.provider==="opencode"?"/assets/opencode.png":"/assets/claude.png",alt:b.provider,className:"flat-terminal-wrapper__header-provider-icon",title:b.provider==="codex"?"Codex Agent":b.provider==="opencode"?"OpenCode Agent":"Claude Agent"}),(()=>{const{model:n,effort:r}=La(b);return e.jsxs("span",{className:"flat-terminal-wrapper__header-model-chip",title:r?`Model: ${n} · Effort: ${r}`:`Model: ${n}`,children:[e.jsx("span",{className:"flat-terminal-wrapper__header-model-name",children:n}),r&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"flat-terminal-wrapper__header-model-sep","aria-hidden":"true",children:"·"}),e.jsx("span",{className:"flat-terminal-wrapper__header-model-effort",children:r})]})]})})()]})]}),e.jsxs("div",{className:"flat-terminal-wrapper__header-meta",children:[e.jsxs("div",{className:"flat-terminal-wrapper__view-mode",role:"group","aria-label":"Message view mode",children:[Ea.map(n=>e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__view-mode-btn ${!fe&&m===n?"flat-terminal-wrapper__view-mode-btn--active":""}`,onClick:()=>{$e(!1),h(n)},title:Ta[n],"aria-pressed":!fe&&m===n,children:[e.jsx("span",{className:"flat-terminal-wrapper__view-mode-icon","aria-hidden":"true",children:Ia[n]}),e.jsx("span",{className:"flat-terminal-wrapper__view-mode-label",children:Ma[n]})]},n)),He&&e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__view-mode-btn ${fe?"flat-terminal-wrapper__view-mode-btn--active":""}`,onClick:()=>$e(n=>!n),title:"Classic TUI — attach to the live interactive claude session in a terminal","aria-pressed":fe,children:[e.jsx("span",{className:"flat-terminal-wrapper__view-mode-icon","aria-hidden":"true",children:e.jsx(p,{name:"terminal",size:13})}),e.jsx("span",{className:"flat-terminal-wrapper__view-mode-label",children:"Classic TUI"})]})]}),e.jsxs("div",{className:"flat-terminal-wrapper__actions",role:"group","aria-label":"Terminal actions",children:[e.jsx("button",{type:"button",className:"flat-terminal-wrapper__action-btn",onClick:Q,disabled:!X,title:"Back to previous agent","aria-label":"Back to previous agent",children:e.jsx(p,{name:"arrow-left",size:14})}),e.jsx("button",{type:"button",className:"flat-terminal-wrapper__action-btn",onClick:oe,disabled:!J,title:"Forward to next agent","aria-label":"Forward to next agent",children:e.jsx(p,{name:"arrow-right",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${_e?"flat-terminal-wrapper__action-btn--active":""}`,onClick:Ie,title:_e?"Close search":"Search messages","aria-pressed":_e,children:e.jsx(p,{name:_e?"cross":"search",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn flat-terminal-wrapper__action-btn--danger ${tt?"flat-terminal-wrapper__action-btn--confirm":""}`,onClick:()=>we.handleClick(sn,()=>{var n;f.clearContext(o),(n=ne.current)==null||n.historyLoader.clearHistory()}),title:tt?"Click again to confirm clear context":"Clear context",children:e.jsx(p,{name:tt?"question":"clear",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${ze?"flat-terminal-wrapper__action-btn--active":""}`,onClick:Xe,title:ze?"Hide git panel":"Show git changes","aria-pressed":ze,children:e.jsx(p,{name:"git-branch",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${je?"flat-terminal-wrapper__action-btn--active":""}`,onClick:ft,title:je?"Hide buildings panel":"Show area buildings","aria-pressed":je,children:e.jsx(p,{name:"buildings",size:14})}),e.jsxs("div",{className:"flat-terminal-wrapper__more",ref:pe,children:[e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${ie?"flat-terminal-wrapper__action-btn--active":""}`,onClick:()=>ue(n=>!n),title:"More actions","aria-expanded":ie,children:"⋮"}),ie&&e.jsxs("div",{className:"flat-terminal-wrapper__more-menu",role:"menu",children:[e.jsxs("button",{type:"button",role:"menuitem",className:`flat-terminal-wrapper__more-item ${Oe?"flat-terminal-wrapper__more-item--active":""}`,onClick:()=>{Ne(),ue(!1)},title:Oe?"Hide Debug Panel":"Show Debug Panel",children:[e.jsx(p,{name:"bug",size:14}),e.jsx("span",{children:Oe?"Hide Debug Panel":"Show Debug Panel"})]}),e.jsx("div",{className:"flat-terminal-wrapper__more-divider"}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item",onClick:()=>{f.collapseContext(o),ue(!1)},disabled:b.status!=="idle",title:b.status!=="idle"?"Agent must be idle to collapse context":"Collapse context",children:[e.jsx(p,{name:"package",size:14}),e.jsx("span",{children:"Collapse context"})]}),xt&&e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item flat-terminal-wrapper__more-item--danger",onClick:()=>{F(o,qe),ue(!1)},children:[e.jsx(p,{name:"crown",size:14}),e.jsxs("span",{children:["Clear ",qe," subordinate",qe===1?"":"s"]})]}),e.jsx("div",{className:"flat-terminal-wrapper__more-divider"}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item flat-terminal-wrapper__more-item--danger",onClick:()=>{f.killAgent(o),ue(!1)},children:[e.jsx(p,{name:"cross",size:14}),e.jsx("span",{children:"Remove agent"})]})]})]})]}),e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__inspector-toggle ${y?"flat-terminal-wrapper__inspector-toggle--active":""}`,onClick:$,title:y?"Hide inspector panel":"Show inspector panel","aria-label":y?"Hide inspector panel":"Show inspector panel","aria-pressed":y,children:[e.jsx("span",{className:"flat-terminal-wrapper__inspector-icon","aria-hidden":"true",children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"}),e.jsx("line",{x1:"10",y1:"2.5",x2:"10",y2:"13.5"})]})}),e.jsx("span",{className:"flat-terminal-wrapper__inspector-label",children:"Inspector"})]}),e.jsx("button",{type:"button",className:"flat-terminal-wrapper__close",onClick:()=>f.deselectAll(),title:"Close chat","aria-label":"Close chat",children:e.jsx(p,{name:"cross",size:14})})]})]}),fe&&He?e.jsx(Na,{agentId:o}):Re&&dt?e.jsx(la,{ref:ne,agentId:Re,agent:dt,viewMode:m,isOpen:!0,onImageClick:T,onFileClick:B,onBashClick:te,onViewMarkdown:w,keyboard:D,hasModalOpen:!1},Re):null,C&&W&&(()=>{var O,re;const n=C.type,r={terminal:"terminal","pm2-logs":"scroll",database:"hard-drives",tests:"flask",http:"globe"},i=n==="terminal"&&!((O=W.terminalStatus)!=null&&O.url),d=!i;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"guake-bottom-terminal-resize",onMouseDown:Et,role:"separator","aria-orientation":"horizontal","aria-label":"Resize embedded panel"}),e.jsxs("div",{className:"flat-bottom-panel",role:"region","aria-label":`${W.name} panel`,style:{height:St},children:[e.jsxs("div",{className:"flat-bottom-panel__header",children:[e.jsxs("span",{className:"flat-bottom-panel__title",children:[e.jsx(p,{name:r[n],size:12}),e.jsx("span",{children:W.name}),i&&e.jsx("span",{className:"flat-bottom-panel__muted",children:"(starting...)"})]}),e.jsxs("span",{className:"flat-bottom-panel__header-actions",children:[n==="pm2-logs"&&e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",className:"guake-bottom-terminal-filter",value:ut,onChange:P=>Te(P.target.value),placeholder:"Filter logs","aria-label":`Filter logs for ${W.name}`,spellCheck:!1}),e.jsx("select",{className:"guake-bottom-terminal-retention",value:Ce===null?"unlimited":String(Ce),onChange:P=>{const Le=P.target.value==="unlimited"?null:Number(P.target.value);At(Le),oa(Le)},"aria-label":`Max log retention for ${W.name}`,children:ra.map(P=>e.jsx("option",{value:P===null?"unlimited":String(P),children:P===null?"Unlimited":`${P.toLocaleString()} lines`},P===null?"unlimited":P))}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>f.clearStreamingLogs(C.buildingId),title:"Clear logs",children:e.jsx(p,{name:"trash",size:12})}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>f.sendBuildingCommand(C.buildingId,"restart"),title:"Restart",children:e.jsx(p,{name:"restart",size:12})})]}),d&&e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>{ae(),Ke(C.buildingId)},title:"Maximize — open as modal","aria-label":"Open as modal",children:e.jsx(p,{name:"fullscreen",size:12})}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:ae,title:"Close panel","aria-label":"Close panel",children:e.jsx(p,{name:"cross",size:12})})]})]}),e.jsx("div",{className:"flat-bottom-panel__body",children:n==="terminal"?(re=W.terminalStatus)!=null&&re.url?e.jsx(on,{terminalUrl:W.terminalStatus.url,visible:!0}):e.jsx("div",{className:"flat-bottom-panel__placeholder",children:"Starting terminal..."}):n==="pm2-logs"?e.jsx(ca,{buildingId:C.buildingId,filterText:ut,maxRetention:Ce}):n==="database"?e.jsx(da,{building:W}):n==="tests"?e.jsx("div",{className:"tests-panel-host",children:e.jsx(ua,{building:W,autoFocusSearch:!1})}):e.jsx("div",{className:"http-requests-panel-host",children:e.jsx(pa,{building:W,autoFocusSearch:!1})})})]})]})})(),e.jsxs("div",{className:"flat-terminal-wrapper__statusbar",role:"contentinfo",children:[b.isDetached&&e.jsxs("span",{className:"flat-terminal-wrapper__detached",title:"Reattaching session...",children:[e.jsx(p,{name:"refresh",size:12}),e.jsx("span",{children:"Reattaching"})]}),le&&st&&e.jsxs("span",{className:"flat-terminal-wrapper__cwd",title:`Open in file explorer: ${le}`,"aria-label":`Open ${le} in file explorer`,role:"button",tabIndex:0,onClick:()=>f.openFileExplorer(le),onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),f.openFileExplorer(le))},children:[e.jsx("span",{className:"flat-terminal-wrapper__cwd-icon",children:e.jsx(p,{name:"folder",size:12})}),e.jsx("span",{className:"flat-terminal-wrapper__cwd-text",children:st})]}),Se&&Se.map(({areaId:n,areaName:r,dir:i})=>{const d=Ee.get(i),O=ge.has(i),re=i.split("/").filter(Boolean).pop()||i;return e.jsxs("span",{className:"flat-terminal-wrapper__area-dir",title:`${r}: ${i}${d?` (${d.branch}${d.ahead?` ↑${d.ahead}`:""}${d.behind?` ↓${d.behind}`:""})`:""}`,onClick:()=>f.openFileExplorerForAreaFolder(n,i),children:[e.jsx(p,{name:"folder-open",size:12}),e.jsx("span",{className:"flat-terminal-wrapper__area-dir-name",children:re}),d&&e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"flat-terminal-wrapper__area-dir-branch",children:[e.jsx(p,{name:"git-branch",size:10})," ",d.branch]}),d.ahead>0&&e.jsxs("span",{className:"flat-terminal-wrapper__branch-ahead",title:`${d.ahead} ahead`,children:[e.jsx(p,{name:"arrow-up",size:9}),d.ahead]}),d.behind>0&&e.jsxs("span",{className:"flat-terminal-wrapper__branch-behind",title:`${d.behind} behind`,children:[e.jsx(p,{name:"arrow-down",size:9}),d.behind]}),e.jsx("span",{className:`flat-terminal-wrapper__area-fetch ${O?"flat-terminal-wrapper__area-fetch--fetching":""}`,title:"Git fetch",onClick:P=>{P.stopPropagation(),he(i)},children:e.jsx(p,{name:O?"hourglass":"download",size:12})})]})]},`${n}:${i}`)}),e.jsx(Aa,{agentId:o,disabled:((b==null?void 0:b.provider)??"claude")!=="claude",contextSummary:Z?`Context: ${at}k / ${ee}k tokens (${nt}% used)`:void 0,children:e.jsxs("span",{className:"flat-terminal-wrapper__context",tabIndex:0,role:"button",onClick:()=>f.setContextModalAgentId(o),onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),f.setContextModalAgentId(o))},title:((b==null?void 0:b.provider)??"claude")!=="claude"?Z?`Context usage: ${at}k / ${ee}k tokens (${nt}% used). Click to view stats.`:"Click to fetch context stats":void 0,children:[e.jsx("span",{className:"flat-terminal-wrapper__context-icon",children:e.jsx(p,{name:"dashboard",size:12})}),e.jsx("span",{className:"flat-terminal-wrapper__context-label",children:"Ctx:"}),e.jsx("span",{className:"flat-terminal-wrapper__context-bar",children:e.jsx("span",{className:"flat-terminal-wrapper__context-bar-fill",style:{width:`${me}%`,backgroundColor:gt}})}),e.jsxs("span",{className:"flat-terminal-wrapper__context-tokens",style:{color:gt},children:[at,"k/",ee,"k"]}),e.jsxs("span",{className:"flat-terminal-wrapper__context-free",children:["(",$t,"% free)"]}),!Z&&e.jsx("span",{className:"flat-terminal-wrapper__context-warning",title:"No context stats yet",children:e.jsx(p,{name:"warn",size:12})})]})}),e.jsx("div",{className:"flat-terminal-wrapper__statusbar-spacer","aria-hidden":"true"}),Ue.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area terminals",children:Ue.map(n=>{const r=(C==null?void 0:C.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${r?"flat-terminal-wrapper__building-btn--active":""} ${n.hasUrl?"":"flat-terminal-wrapper__building-btn--offline"}`,title:`${r?"Hide":"Show"} terminal: ${n.name}${n.hasUrl?"":" (starting...)"}`,onClick:()=>{if(r){ae();return}if(n.hasUrl&&rt(n.id)==="modal"){Ke(n.id);return}n.hasUrl||f.sendBuildingCommand(n.id,"start"),De("terminal",n.id)},onContextMenu:i=>{i.preventDefault(),i.stopPropagation(),K(n.id,{x:i.clientX,y:i.clientY})},children:e.jsx(p,{name:"terminal",size:14})},n.id)})}),Ve.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area PM2 logs",children:Ve.map(n=>{const r=(C==null?void 0:C.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${r?"flat-terminal-wrapper__building-btn--active":""}`,title:`${r?"Hide":"Show"} logs: ${n.name}`,onClick:()=>{r?ae():rt(n.id)==="modal"?Ke(n.id):De("pm2-logs",n.id)},onContextMenu:i=>{i.preventDefault(),i.stopPropagation(),K(n.id,{x:i.clientX,y:i.clientY})},children:e.jsx(p,{name:"scroll",size:14})},n.id)})}),xe.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area databases",children:xe.map(n=>{const r=(C==null?void 0:C.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${r?"flat-terminal-wrapper__building-btn--active":""}`,title:`${r?"Hide":"Show"} database: ${n.name}`,onClick:()=>{r?ae():rt(n.id)==="modal"?Ke(n.id):De("database",n.id)},onContextMenu:i=>{i.preventDefault(),i.stopPropagation(),K(n.id,{x:i.clientX,y:i.clientY})},children:e.jsx(p,{name:"hard-drives",size:14})},n.id)})}),ce.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area tests",children:ce.map(n=>{const r=(C==null?void 0:C.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${r?"flat-terminal-wrapper__building-btn--active":""} ${n.working?"flat-terminal-wrapper__building-btn--tests-working":""}`,title:n.working?`Running tests: ${n.name}`:`${r?"Hide":"Show"} tests: ${n.name}`,onClick:()=>{r?ae():rt(n.id)==="modal"?Ke(n.id):De("tests",n.id)},onContextMenu:i=>{i.preventDefault(),i.stopPropagation(),K(n.id,{x:i.clientX,y:i.clientY})},children:e.jsx(p,{name:"flask",size:14})},n.id)})}),be.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area HTTP requests",children:be.map(n=>{const r=(C==null?void 0:C.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${r?"flat-terminal-wrapper__building-btn--active":""}`,title:`${r?"Hide":"Show"} HTTP requests: ${n.name}`,onClick:()=>{r?ae():rt(n.id)==="modal"?Ke(n.id):De("http",n.id)},onContextMenu:i=>{i.preventDefault(),i.stopPropagation(),K(n.id,{x:i.clientX,y:i.clientY})},children:e.jsx(p,{name:"globe",size:14})},n.id)})}),e.jsx("div",{className:"flat-terminal-wrapper__theme",children:e.jsx(ma,{})})]}),ze&&e.jsx(fa,{agentId:o,agents:Lt,onClose:Tt,branchInfoMap:Ee,fetchRemote:he,fetchingDirs:ge,onResizeStart:n=>It(n,"right")}),je&&e.jsx(ha,{agentId:o,onClose:Pt}),Oe&&e.jsx(ga,{agentId:o,onClose:se})]})}),Da={groups:[],gridCols:1,gridRows:1,positions:new Map};function Wa({onAgentClick:u,onBuildingClick:o,onBuildingDoubleClick:m,onBuildingPopup:h,onAreaContextMenu:y,onOpenSpawnModal:$,onOpenBossSpawnModal:T,onOpenAreaModal:B}){const{t:te}=Ut(["common"]),w=An(),F=Sn(),[D,X]=a.useState(null),[J,Q]=a.useState(null),[oe,Fe]=a.useState(null);En("flatview-image-modal",D!==null,()=>X(null));const[Ze,ct]=a.useState(null),[K,b]=a.useState(null),[I,Je]=a.useState(null),[ne,We]=a.useState(null),[Re,Qe]=a.useState(!1),dt=a.useCallback(()=>{Qe(t=>!t)},[]),He=a.useCallback(()=>{Qe(!1)},[]),[fe,$e]=a.useState(()=>{const t=Yt(E.VIEW_MODE);return t==="simple"||t==="chat"||t==="advanced"?t:"simple"}),et=a.useCallback(t=>{$e(t),Kt(E.VIEW_MODE,t)},[]);a.useEffect(()=>{const t=s=>{if(s.key!==E.VIEW_MODE)return;const l=s.newValue;(l==="simple"||l==="chat"||l==="advanced")&&$e(l)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]);const[Se,Ee]=a.useState(()=>Ht(E.FLAT_INSPECTOR_OPEN,!1)),[he,ge]=a.useState(!1),Ue=a.useCallback(()=>ge(t=>!t),[]),Ve=a.useCallback(()=>ge(!1),[]);a.useEffect(()=>{window.dispatchEvent(new CustomEvent("tide-flat-agents-drawer-state",{detail:{open:he}}))},[he]),a.useEffect(()=>{window.dispatchEvent(new CustomEvent("tide-flat-inspector-state",{detail:{open:Se}}))},[Se]),a.useEffect(()=>{const t=()=>ge(j=>!j),s=()=>{Ee(j=>{const k=!j;return Ae(E.FLAT_INSPECTOR_OPEN,k),k})},l=()=>{ge(!1),Ee(!1),Ae(E.FLAT_INSPECTOR_OPEN,!1)},g=()=>ge(!1),x=()=>{Ee(!1),Ae(E.FLAT_INSPECTOR_OPEN,!1)};return window.addEventListener("tide-toggle-flat-agents-drawer",t),window.addEventListener("tide-toggle-flat-inspector",s),window.addEventListener("tide-close-flat-side-views",l),window.addEventListener("tide-close-flat-agents-drawer-only",g),window.addEventListener("tide-close-flat-inspector-only",x),()=>{window.removeEventListener("tide-toggle-flat-agents-drawer",t),window.removeEventListener("tide-toggle-flat-inspector",s),window.removeEventListener("tide-close-flat-side-views",l),window.removeEventListener("tide-close-flat-agents-drawer-only",g),window.removeEventListener("tide-close-flat-inspector-only",x)}},[]);const xe=a.useRef(null),Me=a.useRef(null),[ce,be]=a.useState(()=>{const t=Zt(E.FLAT_MIDDLE_WIDTH,0);return t>=kt?t:null}),[de,_e]=a.useState(()=>{const t=Zt(E.FLAT_INSPECTOR_WIDTH,0);return t>=Ft?t:null}),Ie=a.useCallback(t=>{if(typeof window>"u")return t;const s=de!==null?yt+de:0,l=window.innerWidth-an-yt-nn-s;return Math.max(kt,Math.min(Math.max(l,kt),t))},[de]),we=a.useCallback(t=>{var x;if(typeof window>"u")return t;const s=(x=xe.current)==null?void 0:x.querySelector(".flat-middle"),l=(s==null?void 0:s.getBoundingClientRect().width)??kt,g=window.innerWidth-an-l-yt-nn-yt;return Math.max(Ft,Math.min(Math.max(g,Ft),t))},[]);a.useEffect(()=>{if(ce===null&&de===null)return;const t=()=>{be(s=>{if(s===null)return s;const l=Ie(s);return l===s?s:l}),_e(s=>{if(s===null)return s;const l=we(s);return l===s?s:l})};return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[ce,de,Ie,we]);const tt=a.useCallback(t=>{var l;if(t.button!==0)return;const s=(l=xe.current)==null?void 0:l.querySelector(".flat-middle");s&&(t.currentTarget.setPointerCapture(t.pointerId),Me.current={kind:"middle",startX:t.clientX,startWidth:s.getBoundingClientRect().width,pointerId:t.pointerId},document.body.classList.add("flat-splitter-dragging"))},[]),C=a.useCallback(t=>{var l;if(t.button!==0)return;const s=(l=xe.current)==null?void 0:l.querySelector(".flat-inspector");s&&(t.currentTarget.setPointerCapture(t.pointerId),Me.current={kind:"inspector",startX:t.clientX,startWidth:s.getBoundingClientRect().width,pointerId:t.pointerId},document.body.classList.add("flat-splitter-dragging"))},[]),ve=a.useCallback(t=>{const s=Me.current;if(!s||t.pointerId!==s.pointerId)return;const l=t.clientX-s.startX;s.kind==="middle"?be(Ie(s.startWidth+l)):_e(we(s.startWidth-l))},[Ie,we]),W=a.useCallback(t=>{const s=Me.current;if(!s||t.pointerId!==s.pointerId)return;try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}if(Me.current=null,document.body.classList.remove("flat-splitter-dragging"),!(Math.abs(t.clientX-s.startX)>2))return;const g=t.clientX-s.startX;if(s.kind==="middle"){const x=Ie(s.startWidth+g);be(x),Nt(E.FLAT_MIDDLE_WIDTH,x)}else{const x=we(s.startWidth-g);_e(x),Nt(E.FLAT_INSPECTOR_WIDTH,x)}},[Ie,we]),ut=a.useCallback(()=>{be(null),Nt(E.FLAT_MIDDLE_WIDTH,0)},[]),Te=a.useCallback(()=>{_e(null),Nt(E.FLAT_INSPECTOR_WIDTH,0)},[]),[Ce,At]=a.useState(()=>Yt(E.FLAT_INSPECTOR_VIEW)==="tracking"?"tracking":"agent"),z=a.useCallback(t=>{At(t),Kt(E.FLAT_INSPECTOR_VIEW,t)},[]),De=a.useCallback(()=>{Ee(t=>{const s=!t;return Ae(E.FLAT_INSPECTOR_OPEN,s),s})},[]),ae=a.useCallback(()=>{Ee(!1),Ae(E.FLAT_INSPECTOR_OPEN,!1)},[]),St=Mn(),Et=a.useCallback((t,s)=>{X({url:t,name:s})},[]),Mt=a.useCallback((t,s)=>{Q({command:t,output:s,isLive:!1})},[]),It=a.useCallback((t,s)=>{var x;const l=F.size>0?Array.from(F)[0]:null,g=l?(x=f.getState().agents.get(l))==null?void 0:x.cwd:void 0;f.setFileViewerPath(t,s,g)},[F]),ze=a.useCallback(t=>{Fe(t)},[]),pt=a.useCallback((t,s)=>{ct({agentId:t,count:s})},[]),je=a.useCallback(t=>{m?m(t):o(t)},[o,m]),_=a.useMemo(()=>F.size>0?Array.from(F)[0]:null,[F]),Oe=a.useCallback(t=>{_&&b({agentId:_,position:t})},[_]),mt=a.useCallback((t,s)=>{Je({buildingId:t,position:s})},[]);a.useEffect(()=>{Qe(!1)},[_]);const Ne=a.useRef([]),se=a.useRef(-1),Xe=a.useRef(!1),ft=a.useRef(null),[Tt,Pt]=a.useState(!1),[Lt,Pe]=a.useState(!1),Ge=a.useRef(!1),ie=a.useRef(null),ue=a.useRef(!1),pe=a.useMemo(()=>new Set(w.map(t=>t.id)),[w]),ye=a.useMemo(()=>{const t=new Map(w.map(l=>[l.id,l])),s=new Map;for(const l of w)if((l.isBoss||l.class==="boss")&&l.subordinateIds&&l.subordinateIds.length>0){const g=l.subordinateIds.map(x=>t.get(x)).filter(x=>x!==void 0);g.length>0&&s.set(l.id,g)}return s},[w]),Z=a.useCallback(()=>{const t=Ne.current,s=se.current;Pt(s>0),Pe(s>=0&&s<t.length-1)},[]),ke=a.useCallback(t=>{const s=Ne.current;if(s.length===0)return;let l=se.current+t;for(;l>=0&&l<s.length;){const g=s[l];if(pe.has(g)){Xe.current=!0,se.current=l,Z(),f.selectAgent(g);return}l+=t}},[pe,Z]),ht=a.useCallback(()=>ke(-1),[ke]),Rt=a.useCallback(()=>ke(1),[ke]);va(a.useCallback(()=>{const t=Ne.current,s=se.current;return t.length>0&&s>0?(ke(-1),"handled"):"exit"},[ke]));const me=a.useCallback((t,s)=>{if(typeof window>"u")return;const l=window.history.state,x={...typeof l=="object"&&l!==null?l:{},__flatAgentNav:{agentId:t}};s==="replace"?window.history.replaceState(x,"",window.location.href):window.history.pushState(x,"",window.location.href)},[]);a.useEffect(()=>{if(!_){Ge.current=!1,ie.current=null;return}if(!Ge.current){me(_,"replace"),Ge.current=!0,ie.current=_;return}if(ue.current){ue.current=!1,ie.current=_;return}ie.current!==_&&(me(_,"push"),ie.current=_)},[_,me]),a.useEffect(()=>{const t=s=>{var j,k;const l=(k=(j=s.state)==null?void 0:j.__flatAgentNav)==null?void 0:k.agentId;if(!l||typeof l!="string"||!pe.has(l)||l===_)return;ue.current=!0,Xe.current=!0;const g=Ne.current,x=g.lastIndexOf(l);x>=0?se.current=x:(g.push(l),se.current=g.length-1),Z(),f.selectAgent(l)};return window.addEventListener("popstate",t),()=>window.removeEventListener("popstate",t)},[pe,_,Z]),a.useEffect(()=>{if(!_){Ne.current=[],se.current=-1,Z();return}if(ft.current=_,Xe.current){Xe.current=!1,Z();return}const t=Ne.current,s=se.current;if(s>=0&&t[s]===_){Z();return}const l=s<t.length-1?t.slice(0,s+1):t.slice();l.push(_),l.length>100&&l.shift(),Ne.current=l,se.current=l.length-1,Z()},[_,Z]);const nt=a.useCallback(t=>{u(t),ge(!1)},[u]),$t=_??"",gt=a.useCallback(()=>{},[]),at=a.useCallback(t=>{nt(t)},[nt]),ee=Se,[le,st]=a.useState(ee),[qe,xt]=a.useState(ee);a.useEffect(()=>{if(ee){st(!0);return}xt(!1);const t=setTimeout(()=>st(!1),240);return()=>clearTimeout(t)},[ee]),a.useEffect(()=>{if(!le||!ee)return;let t=0;const s=requestAnimationFrame(()=>{t=requestAnimationFrame(()=>xt(!0))});return()=>{cancelAnimationFrame(s),cancelAnimationFrame(t)}},[le,ee]);const it=a.useRef(null);a.useEffect(()=>{if(_)return;const t=s=>{if(s.key!==" "&&s.key!=="Backspace")return;const l=s.target;if(l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable)return;const g=ft.current;!g||!pe.has(g)||(s.preventDefault(),f.selectAgent(g))};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[_,pe]);const[bt,n]=a.useState(new Set),r=a.useCallback(t=>{n(s=>{const l=new Set(s);return l.has(t)?l.delete(t):l.add(t),l})},[]),[i,d]=a.useState(()=>typeof window<"u"&&window.matchMedia("(max-width: 768px)").matches);a.useEffect(()=>{if(typeof window>"u")return;const t=window.matchMedia("(max-width: 768px)"),s=l=>d(l.matches);return t.addEventListener("change",s),()=>t.removeEventListener("change",s)},[]);const[O,re]=a.useState(null),P=a.useCallback(t=>{re(s=>s===t?null:t)},[]),Le=cn(),Ye=dn(),[_t]=In(),L=a.useMemo(()=>{if(_)return Da;const t=new Map,s=[];for(const v of w){const S=f.getAreaForAgent(v.id);if(!Jt((S==null?void 0:S.id)??null))continue;if(!S||S.archived){s.push(v);continue}const M=t.get(S.id);M?M.push(v):t.set(S.id,[v])}const l=new Map,g=[];for(const v of Ye.values()){let S=!1;for(const M of Le.values())if(!M.archived&&Qt(M.id)&&f.isPositionInArea(v.position,M)){const G=l.get(M.id);G?G.push(v):l.set(M.id,[v]),S=!0;break}!S&&Jt(null)&&g.push(v)}const x=[];for(const[,v]of Le){if(v.archived||!Qt(v.id))continue;const S=t.get(v.id),M=l.get(v.id)??[];(S&&S.length>0||M.length>0)&&x.push({area:v,agents:S??[],buildings:M})}(s.length>0||g.length>0)&&x.push({area:{id:"__unassigned__",name:"Unassigned",color:"#6272a4",center:{x:0,z:0},type:"circle",radius:0,directories:[],archived:!1,assignedAgentIds:[],zIndex:0},agents:s,buildings:g});const j=x.filter(v=>v.area.id!=="__unassigned__"),k=x.filter(v=>v.area.id==="__unassigned__");let c=1,A=1;const V=new Map;if(j.length>1){let v=1/0,S=-1/0,M=1/0,G=-1/0;for(const q of j)v=Math.min(v,q.area.center.x),S=Math.max(S,q.area.center.x),M=Math.min(M,q.area.center.z),G=Math.max(G,q.area.center.z);const vt=S-v||1,Ct=G-M||1;if(j.length<=4){c=j.length,A=1;const q=[...j].sort((Y,Dt)=>Y.area.center.x-Dt.area.center.x);for(let Y=0;Y<q.length;Y++)V.set(q[Y].area.id,{row:1,col:Y+1})}else{const q=[...j].sort((N,H)=>N.area.center.x-H.area.center.x),Y=[];for(let N=1;N<q.length;N++)Y.push(q[N].area.center.x-q[N-1].area.center.x);const Dt=Y.reduce((N,H)=>N+H,0)/Y.length||1;let Vt=1;for(const N of Y)N>Dt*1.3&&Vt++;c=Math.max(2,Math.min(Vt,j.length));const zt=[...j].sort((N,H)=>N.area.center.z-H.area.center.z),jt=[];for(let N=1;N<zt.length;N++)jt.push(zt[N].area.center.z-zt[N-1].area.center.z);const gn=jt.reduce((N,H)=>N+H,0)/jt.length||1;let Xt=1;for(const N of jt)N>gn*1.3&&Xt++;A=Math.max(2,Math.min(Xt,j.length)),c=Math.max(c,Math.ceil(j.length/A)),A=Math.max(A,Math.ceil(j.length/c));const xn=vt/c,bn=Ct/A,Ot=new Set;for(const N of j){let H=Math.min(c-1,Math.max(0,Math.floor((N.area.center.x-v)/xn))),Be=Math.min(A-1,Math.max(0,Math.floor((N.area.center.z-M)/bn))),lt=`${Be},${H}`,Gt=0;const _n=A*c;for(;Ot.has(lt)&&Gt<_n;)H++,H>=c&&(H=0,Be=(Be+1)%A),lt=`${Be},${H}`,Gt++;Ot.has(lt)&&(Be=A,H=0,lt=`${Be},${H}`,A++),Ot.add(lt),V.set(N.area.id,{row:Be+1,col:H+1})}}}const R=v=>{v.sort((S,M)=>{var vt,Ct,q,Y;const G=(((vt=S.position)==null?void 0:vt.z)??0)-(((Ct=M.position)==null?void 0:Ct.z)??0);return G!==0?G:(((q=S.position)==null?void 0:q.x)??0)-(((Y=M.position)==null?void 0:Y.x)??0)})};for(const v of j)R(v.agents);for(const v of k)R(v.agents);return{groups:[...j,...k],gridCols:c,gridRows:A,positions:V}},[w,Le,Ye,_t,_]),U=a.useMemo(()=>{if(!K)return[];const t=w.find(s=>s.id===K.agentId);return t?[{id:"edit-agent",label:"Edit Agent",icon:e.jsx(p,{name:"edit",size:14}),onClick:()=>{window.dispatchEvent(new CustomEvent("tide:open-agent-edit",{detail:{agentId:t.id}}))}},{id:"open-chat",label:"Open Chat",icon:e.jsx(p,{name:"chat",size:14}),onClick:()=>u(t.id)},{id:"clone-agent",label:"Clone Agent",icon:e.jsx(p,{name:"clipboard",size:14}),onClick:()=>f.cloneAgent(t.id)},{id:"fork-agent",label:"Fork Agent (with history)",icon:e.jsx(p,{name:"git-branch",size:14}),onClick:()=>f.forkAgent(t.id)},{id:"delete-agent",label:"Delete Agent",icon:e.jsx(p,{name:"trash",size:14}),danger:!0,onClick:()=>{We({agentId:t.id,name:t.name})}}]:[]},[K,w,u]),wt=a.useMemo(()=>{var j;if(!I)return[];const t=Ye.get(I.buildingId);if(!t)return[];const s=[],l=t.type==="server"||t.type==="docker"||t.type==="terminal",g=t.status==="running",x=t.type==="boss";if(s.push({id:"open",label:t.type==="database"?"Open Database":t.type==="folder"?"Open Folder":t.type==="tests"?"Open Tests":t.type==="http"?"Open Requests":t.type==="boss"?"View Boss Logs":t.type==="terminal"?"Open Terminal":t.type==="server"&&((j=t.pm2)!=null&&j.enabled)?"View PM2 Logs":"Open",icon:e.jsx(p,{name:t.type==="database"?"database":t.type==="folder"?"folder":t.type==="tests"?"flask":t.type==="http"?"globe":t.type==="terminal"?"terminal":"eye",size:14}),onClick:()=>je(t.id)}),l&&(g||s.push({id:"start",label:"Start",icon:e.jsx(p,{name:"play",size:14}),onClick:()=>f.sendBuildingCommand(t.id,"start")}),g&&(s.push({id:"restart",label:"Restart",icon:e.jsx(p,{name:"refresh",size:14}),onClick:()=>f.sendBuildingCommand(t.id,"restart")}),s.push({id:"stop",label:"Stop",icon:e.jsx(p,{name:"stop",size:14}),onClick:()=>f.sendBuildingCommand(t.id,"stop")}))),x&&t.subordinateBuildingIds&&t.subordinateBuildingIds.length>0&&(s.push({id:"start-all",label:"Start All Subordinates",icon:e.jsx(p,{name:"launch",size:14}),onClick:()=>{for(const k of t.subordinateBuildingIds)f.sendBuildingCommand(k,"start")}}),s.push({id:"stop-all",label:"Stop All Subordinates",icon:e.jsx(p,{name:"pause",size:14}),onClick:()=>{for(const k of t.subordinateBuildingIds)f.sendBuildingCommand(k,"stop")}}),s.push({id:"restart-all",label:"Restart All Subordinates",icon:e.jsx(p,{name:"restart",size:14}),onClick:()=>{for(const k of t.subordinateBuildingIds)f.sendBuildingCommand(k,"restart")}})),l&&s.push({id:"health-check",label:"Health Check",icon:e.jsx(p,{name:"health",size:14}),onClick:()=>f.sendBuildingCommand(t.id,"healthCheck")}),s.push({id:"divider-edit",label:"",divider:!0,onClick:()=>{}}),s.push({id:"edit",label:"Edit Building",icon:e.jsx(p,{name:"edit",size:14}),onClick:()=>{window.dispatchEvent(new CustomEvent("tide:building-edit",{detail:{buildingId:t.id}}))}}),s.push({id:"clone",label:"Clone Building",icon:e.jsx(p,{name:"copy",size:14}),onClick:()=>{f.createBuilding({name:`${t.name} (Copy)`,type:t.type,style:t.style,color:t.color,scale:t.scale,position:{x:t.position.x+2,z:t.position.z+2},cwd:t.cwd,folderPath:t.folderPath,commands:t.commands,pm2:t.pm2,docker:t.docker,database:t.database,terminal:t.terminal,urls:t.urls,subordinateBuildingIds:t.subordinateBuildingIds})}}),t.urls&&t.urls.length>0)for(const k of t.urls)s.push({id:`url-${k.label}`,label:k.label,icon:e.jsx(p,{name:"link",size:14}),onClick:()=>window.open(k.url,"_blank","noopener,noreferrer")});return s.push({id:"divider-danger",label:"",divider:!0,onClick:()=>{}}),s.push({id:"delete",label:"Delete Building",icon:e.jsx(p,{name:"trash",size:14}),danger:!0,onClick:()=>f.deleteBuilding(t.id)}),s},[I,Ye,je]),hn=a.useCallback(t=>{const s=new Set(L.groups.map(l=>l.area.id));s.delete(t),n(s),requestAnimationFrame(()=>{const l=it.current;if(!l)return;const g=l.querySelector(`[data-area-id="${t}"]`);if(!g)return;const x=l.getBoundingClientRect(),k=g.getBoundingClientRect().top-x.top+l.scrollTop-8;l.scrollTo({top:Math.max(0,k),behavior:"smooth"})})},[L]);return e.jsxs("div",{ref:xe,className:`flat-view ${ee?"flat-view--with-inspector":""} ${_?"flat-view--has-chat":""} ${he?"flat-view--mobile-sidebar-open":""}`,style:(()=>{if(ce===null&&de===null)return;const t={};return ce!==null&&(t["--flat-middle-width"]=`${ce}px`),de!==null&&(t["--flat-inspector-width"]=`${de}px`),t})(),children:[he&&e.jsx("div",{className:"flat-mobile-sidebar-backdrop",onClick:Ve,"aria-hidden":"true"}),e.jsxs("div",{className:"flat-middle",children:[e.jsx("div",{className:"flat-middle__header",children:e.jsxs("div",{className:"flat-middle__actions",children:[e.jsx("button",{className:"flat-cta-btn flat-cta-btn--agent",onClick:$,title:"Create new agent",children:"+ Agent"}),e.jsx("button",{className:"flat-cta-btn flat-cta-btn--boss",onClick:T,title:"Create new boss agent",children:"+ Boss"}),e.jsx("button",{className:"flat-cta-btn flat-cta-btn--area",onClick:B,title:"Create new area",children:"+ Area"})]})}),e.jsx("div",{className:"flat-middle__content",children:e.jsx(Tn,{activeAgentId:$t,onClose:gt,onSelectAgent:at,collapsedAreas:bt,onToggleArea:r,agentListRef:it})})]}),e.jsx("div",{className:"flat-splitter flat-splitter--middle",role:"separator","aria-orientation":"vertical","aria-label":"Resize agents panel",title:"Drag to resize · Double-click to reset",onPointerDown:tt,onPointerMove:ve,onPointerUp:W,onPointerCancel:W,onDoubleClick:ut}),e.jsxs("div",{className:"flat-right",children:[e.jsxs("button",{type:"button",className:"flat-mobile-sidebar-toggle","aria-label":he?"Close agents sidebar":"Open agents sidebar","aria-expanded":he,onClick:Ue,children:[e.jsx(p,{name:"list",size:18}),e.jsx("span",{className:"flat-mobile-sidebar-toggle__label",children:"Agents"})]}),_?e.jsx($a,{agentId:_,terminalViewMode:fe,onTerminalViewModeChange:et,inspectorOpen:Se,onToggleInspector:De,onImageClick:Et,onFileClick:It,onBashClick:Mt,onViewMarkdown:ze,onRequestClearSubordinates:pt,keyboard:St,canNavigateBack:Tt,canNavigateForward:Lt,onNavigateBack:ht,onNavigateForward:Rt,agentInfoOpen:Re,onToggleAgentInfo:dt,onHeaderContextMenu:Oe,onBuildingContextMenu:mt}):e.jsx("div",{className:"flat-chat flat-chat--empty",children:e.jsxs("div",{className:"flat-map",children:[e.jsxs("div",{className:"flat-map__header",children:[e.jsx("span",{className:"flat-map__title",children:"🗺️ Areas"}),e.jsx("span",{className:"flat-map__hint",children:"Click an area to focus it, or an agent to chat"}),e.jsx(Sa,{className:"flat-map__view-mode"})]}),e.jsx("div",{className:"flat-map__grid",style:{gridTemplateColumns:`repeat(${L.gridCols}, 1fr)`},children:L.groups.length===0?e.jsx("div",{className:"flat-map__empty",children:e.jsx("span",{children:"No areas or agents yet"})}):(()=>{var s;const t=i&&O?((s=L.positions.get(O))==null?void 0:s.row)??null:null;return L.groups.map(l=>{var k;const g=l.area.id,x=L.positions.get(g),j=i&&O!==g;return i&&t!=null&&(x==null?void 0:x.row)===t&&g!==O?null:e.jsxs("div",{className:`flat-map-area-card${j?" flat-map-area-card--collapsed":""}`,style:{"--area-color":l.area.color,gridRow:x==null?void 0:x.row,gridColumn:x==null?void 0:x.col},onContextMenu:c=>{y&&(c.preventDefault(),c.stopPropagation(),y(g,{x:c.clientX,y:c.clientY}))},children:[((k=l.area.logo)==null?void 0:k.filename)&&e.jsx("img",{className:"flat-map-area-card__logo",src:wa(l.area.logo.filename),alt:"","aria-hidden":"true",onError:c=>{c.currentTarget.style.display="none"}}),e.jsxs("button",{type:"button",className:"flat-map-area-card__header",onClick:()=>i?P(g):hn(g),title:i?j?`Expand ${l.area.name}`:`Collapse ${l.area.name}`:`Focus ${l.area.name} in left panel`,"aria-expanded":i?!j:void 0,children:[e.jsx("span",{className:"flat-map-area-card__color",style:{background:l.area.color}}),e.jsx("span",{className:"flat-map-area-card__name",children:l.area.name}),e.jsx("span",{className:"flat-map-area-card__count",children:l.agents.length}),i&&e.jsx(p,{name:j?"caret-down":"caret-up",size:11,className:"flat-map-area-card__caret"})]}),e.jsx("div",{className:"flat-map-area-card__agents",children:l.agents.map(c=>{const A=c.isBoss||c.class==="boss",V=A?ye.get(c.id):void 0,R=Pn(c),v=R.usedPercent>=80?"#ff4a4a":R.usedPercent>=60?"#ff9e4a":R.usedPercent>=40?"#ffd700":"#4aff9e",S=`Context: ${(R.totalTokens/1e3).toFixed(1)}k / ${(R.contextWindow/1e3).toFixed(1)}k (${R.usedPercent}% used, ${R.freePercent}% free)`,M=c.latestTodos&&c.latestTodos.length>0||V&&V.length>0;return e.jsx(Ln,{todos:c.latestTodos,subordinates:V,position:"top",children:e.jsxs("button",{type:"button",className:`flat-map-agent-chip ${c.status}`,onClick:()=>u(c.id),onContextMenu:G=>{G.preventDefault(),G.stopPropagation(),b({agentId:c.id,position:{x:G.clientX,y:G.clientY}})},title:M?void 0:`${A?"Boss · ":""}Open chat with ${c.name}
|
|
2
|
+
${S}`,children:[e.jsx(un,{agent:c,size:16}),A&&e.jsx("span",{className:"flat-map-agent-chip__crown","aria-hidden":"true",children:e.jsx(p,{name:"crown",size:11,color:"#ffd700",weight:"fill"})}),e.jsx("span",{className:"flat-map-agent-chip__name",children:c.name}),e.jsx("img",{src:c.provider==="codex"?"/assets/codex.png":c.provider==="opencode"?"/assets/opencode.png":"/assets/claude.png",alt:c.provider,className:"flat-map-agent-chip__provider-icon",title:c.provider==="codex"?"Codex Agent":c.provider==="opencode"?"OpenCode Agent":"Claude Agent"}),e.jsx("span",{className:"flat-map-agent-chip__dot",style:{backgroundColor:pn(c.status)}}),c.latestTodos&&c.latestTodos.length>0&&e.jsx(Rn,{todos:c.latestTodos,maxDots:6}),A&&V&&V.length>0&&e.jsx($n,{subordinates:V,maxDots:6}),e.jsx("span",{className:"flat-map-agent-chip__context-bar","aria-hidden":"true",children:e.jsx("span",{className:"flat-map-agent-chip__context-bar-fill",style:{width:`${R.usedPercent}%`,backgroundColor:v}})})]})},c.id)})}),l.area.directories.length>0&&e.jsx("div",{className:"flat-map-area-card__folders",role:"group","aria-label":`${l.area.name} folders`,children:l.area.directories.map(c=>{const A=c.split("/").filter(Boolean).pop()||c;return e.jsxs("button",{type:"button",className:"flat-map-folder-chip",onClick:V=>{V.stopPropagation(),f.openFileExplorerForAreaFolder(g,c)},title:`Open in file explorer: ${c}`,children:[e.jsx(p,{name:"folder-open",size:12}),e.jsx("span",{className:"flat-map-folder-chip__name",children:A})]},c)})}),l.buildings.length>0&&e.jsx("div",{className:"flat-map-area-card__buildings",children:l.buildings.map(c=>{var V;const A=(V=Dn[c.type])==null?void 0:V.color;return e.jsxs("button",{type:"button",className:`flat-map-building-chip flat-map-building-chip--${c.status}`,style:A?{"--building-type-color":A}:void 0,onClick:R=>{if(h){const v=R.currentTarget.getBoundingClientRect();h(c.id,{x:v.right,y:v.top+v.height/2})}else je(c.id)},onContextMenu:R=>{R.preventDefault(),R.stopPropagation(),Je({buildingId:c.id,position:{x:R.clientX,y:R.clientY}})},title:`${c.name} · ${c.type} · ${c.status}`,children:[e.jsx(p,{name:zn(c.type),size:12,color:A}),e.jsx("span",{className:"flat-map-building-chip__name",children:c.name}),e.jsx("span",{className:"flat-map-building-chip__dot",style:{backgroundColor:On(c.status)}})]},c.id)})})]},g)})})()})]})})]}),ee&&e.jsx("div",{className:"flat-splitter flat-splitter--inspector",role:"separator","aria-orientation":"vertical","aria-label":"Resize inspector panel",title:"Drag to resize · Double-click to reset",onPointerDown:C,onPointerMove:ve,onPointerUp:W,onPointerCancel:W,onDoubleClick:Te}),le&&e.jsxs("aside",{className:`flat-inspector ${qe?"flat-inspector--open":"flat-inspector--closing"}`,"aria-label":"Inspector panel",children:[e.jsxs("div",{className:"flat-inspector__header",children:[e.jsxs("div",{className:"flat-inspector__tabs",role:"tablist","aria-label":"Inspector view",children:[e.jsx("button",{type:"button",role:"tab","aria-selected":Ce==="agent",className:`flat-inspector__tab ${Ce==="agent"?"flat-inspector__tab--active":""}`,onClick:()=>z("agent"),children:"Agent"}),e.jsx("button",{type:"button",role:"tab","aria-selected":Ce==="tracking",className:`flat-inspector__tab ${Ce==="tracking"?"flat-inspector__tab--active":""}`,onClick:()=>z("tracking"),children:"Tracking"})]}),e.jsx("button",{type:"button",className:"flat-inspector__close",onClick:ae,title:"Close inspector","aria-label":"Close inspector",children:"✕"})]}),e.jsx("div",{className:"flat-inspector__body",children:Ce==="tracking"?e.jsx(Bn,{activeAgentId:_??"",onSelectAgent:t=>{u(t),window.innerWidth<=768&&ae()}}):(()=>{if(!_)return e.jsx("div",{className:"flat-inspector__empty",children:e.jsx("span",{children:"Select an agent to inspect"})});const t=w.find(s=>s.id===_);return t?e.jsx(Fn,{agent:t,onFocusAgent:s=>{u(s),window.innerWidth<=768&&ae()},onKillAgent:s=>f.killAgent(s)}):e.jsx("div",{className:"flat-inspector__empty",children:e.jsx("span",{children:"Agent not found"})})})()})]}),D&&e.jsx(Wn,{url:D.url,name:D.name,onClose:()=>X(null)}),J&&e.jsx(Hn,{state:J,onClose:()=>Q(null)}),e.jsx(Un,{agent:_?w.find(t=>t.id===_)??null:null,content:oe,onClose:()=>Fe(null)}),Ze&&e.jsx(Vn,{action:"clear-subordinates",selectedAgentId:Ze.agentId,subordinateCount:Ze.count,onClose:()=>ct(null),onClearHistory:()=>{}}),e.jsx(Xn,{agent:_?w.find(t=>t.id===_)??null:null,isOpen:Re&&!!_,onClose:He}),e.jsx(en,{isOpen:K!==null,position:(K==null?void 0:K.position)??{x:0,y:0},worldPosition:{x:0,z:0},actions:U,onClose:()=>b(null)}),e.jsx(en,{isOpen:I!==null,position:(I==null?void 0:I.position)??{x:0,y:0},worldPosition:{x:0,z:0},actions:wt,onClose:()=>Je(null)}),e.jsx(Gn,{isOpen:ne!==null,title:te("common:confirm.removeAgentTitle"),message:te("common:confirm.removeAgentMessage",{name:(ne==null?void 0:ne.name)??""}),confirmLabel:te("common:buttons.remove"),cancelLabel:te("common:buttons.cancel"),variant:"danger",onConfirm:()=>{ne&&f.removeAgentFromServer(ne.agentId)},onClose:()=>We(null)})]})}export{Wa as FlatView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-
|
|
2
|
-
import{
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-bcYaAwP6.js","assets/main-C2zgPci-.js","assets/vendor-react--Eh9ivFN.js","assets/vendor-three-Chj50gSY.js","assets/main-C3JO2TRI.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{cZ as e,c2 as o}from"./main-C2zgPci-.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";var i;(function(r){r.Heavy="HEAVY",r.Medium="MEDIUM",r.Light="LIGHT"})(i||(i={}));var t;(function(r){r.Success="SUCCESS",r.Warning="WARNING",r.Error="ERROR"})(t||(t={}));const c=e("Haptics",{web:()=>o(()=>import("./web-bcYaAwP6.js"),__vite__mapDeps([0,1,2,3,4])).then(r=>new r.HapticsWeb)});export{c as Haptics,i as ImpactStyle,t as NotificationType};
|