tide-commander 1.66.0 → 1.66.2
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/dist/assets/{BossLogsModal-D6nnEtFf.js → BossLogsModal-0wLAFY8o.js} +1 -1
- package/dist/assets/{BossSpawnModal-DmPw2xym.js → BossSpawnModal-KmlORzV6.js} +1 -1
- package/dist/assets/{ControlsModal-OEZddGmt.js → ControlsModal-D6AByCGe.js} +1 -1
- package/dist/assets/{DockerLogsModal-CzpJKdxd.js → DockerLogsModal-Bp1jShxL.js} +1 -1
- package/dist/assets/{EmbeddedEditor-Dh9neVWW.js → EmbeddedEditor-BfzqmAfy.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-FtYHQDDw.js → GmailOAuthSetup-BkryQqkx.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-reYSDcFV.js → GoogleOAuthSetup-D7GJc_Tp.js} +1 -1
- package/dist/assets/{IframeModal-DbW9WCx6.js → IframeModal-TBl1nkE6.js} +1 -1
- package/dist/assets/{IntegrationsPanel-DooKtzpO.js → IntegrationsPanel-CrC-7s3C.js} +2 -2
- package/dist/assets/{LogViewerModal-BamqTQzc.js → LogViewerModal-BUx5t5A_.js} +1 -1
- package/dist/assets/{MonitoringModal-DiOT_xpJ.js → MonitoringModal-CdEBDhPs.js} +1 -1
- package/dist/assets/{PM2LogsModal-C4hIfwGk.js → PM2LogsModal-CiW5DbV7.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-CQ3NdSvn.js → RestoreArchivedAreaModal-CCyZo3as.js} +1 -1
- package/dist/assets/{Scene2DCanvas-BfcwE6aA.js → Scene2DCanvas-CARFRp4q.js} +1 -1
- package/dist/assets/{SceneManager-D409BuL6.js → SceneManager-BWNzLSKo.js} +1 -1
- package/dist/assets/{SkillsPanel-B0V-BFfO.js → SkillsPanel-LFXR0iy0.js} +1 -1
- package/dist/assets/{SpawnModal-gPT83rW4.js → SpawnModal-BPlf3wKM.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-Dvvqv0yZ.js → SubordinateAssignmentModal-BAF7cWaT.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-BmDBe8xx.js → TriggerManagerPanel-C9J_KbGA.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-PS4W8Q3F.js → WorkflowEditorPanel-DjTG4lQ1.js} +1 -1
- package/dist/assets/{index-C7cIg4BE.js → index-94gPt5fm.js} +1 -1
- package/dist/assets/{index-cCrsvvfk.js → index-BGEtbFfN.js} +1 -1
- package/dist/assets/{index-BSdgxlrR.js → index-BMiK5Kho.js} +1 -1
- package/dist/assets/{index-DvbZsLxj.js → index-BOj1gGma.js} +1 -1
- package/dist/assets/{index-D9NmRir8.js → index-CPfO9E2Z.js} +2 -2
- package/dist/assets/{index-baPDjRvq.js → index-CvRDWTQl.js} +1 -1
- package/dist/assets/{index-CJYuOBJD.js → index-DTYriM_K.js} +3 -3
- package/dist/assets/{index-BkpkUL3C.js → index-L84OBSoD.js} +1 -1
- package/dist/assets/main-CYGaAWMo.css +1 -0
- package/dist/assets/{main-BzSUj-VM.js → main-DeBWAhnp.js} +46 -46
- package/dist/assets/{web-y3e1lmyW.js → web-DpoaoQc0.js} +1 -1
- package/dist/assets/{web-DffxvD3t.js → web-ojhnBPVV.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/main-B3L4mgQ4.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as U,a as Z,r as n,s as m,j as e,D as le,I as F,b as ce,c as ie,d as de,g as oe,e as ue,Q as me,R as be}from"./main-BzSUj-VM.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const he=({building:a,connections:x,activeConnectionId:l,activeDatabase:i,collapsed:j,onToggleCollapse:p,onConnectionChange:$,onDatabaseChange:N,onInsertTable:Q,onSelectTableQuery:P})=>{const{t:d}=U(["terminal"]),w=Z(a.id),[M,r]=n.useState(new Set),[o,v]=n.useState(""),[S,H]=n.useState(""),[O,q]=n.useState(!1),[V,R]=n.useState(null),z=n.useRef(null),g=n.useRef(null),A=n.useRef(null),y=l?w.databases.get(l)??[]:[],J=l&&i?`${l}:${i}`:"",f=J?w.tables.get(J)??[]:[],_=l?w.connectionStatus.get(l):void 0,D=n.useMemo(()=>{if(!o.trim())return y;const t=o.toLowerCase();return y.filter(u=>u.toLowerCase().includes(t))},[y,o]),h=n.useMemo(()=>{if(!S.trim())return f;const t=S.toLowerCase();return f.filter(u=>u.name.toLowerCase().includes(t))},[f,S]);n.useEffect(()=>{const t=u=>{g.current&&!g.current.contains(u.target)&&q(!1)};return O&&document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[O]),n.useEffect(()=>{l&&!_&&m.testDatabaseConnection(a.id,l)},[a.id,l,_]),n.useEffect(()=>{l&&(_!=null&&_.connected)&&y.length===0&&m.listDatabases(a.id,l)},[a.id,l,_==null?void 0:_.connected,y.length]),n.useEffect(()=>{l&&i&&f.length===0&&m.listTables(a.id,l,i)},[a.id,l,i,f.length]),n.useEffect(()=>{R(null),H("")},[l,i]);const C=n.useCallback(t=>{r(u=>{const k=new Set(u);if(k.has(t))k.delete(t);else if(k.add(t),l&&i){const T=`${l}:${i}:${t}`;w.tableSchemas.has(T)||m.getTableSchema(a.id,l,i,t)}return k})},[a.id,l,i,w.tableSchemas]),K=t=>{if(!l||!i)return null;const u=`${l}:${i}:${t}`;return w.tableSchemas.get(u)};return j?e.jsx("div",{className:"database-sidebar database-sidebar--collapsed",children:e.jsx("button",{className:"database-sidebar__toggle",onClick:p,title:d("terminal:database.expandSidebar"),children:"»"})}):e.jsxs("div",{className:"database-sidebar",children:[e.jsxs("div",{className:"database-sidebar__header",children:[e.jsx("span",{children:d("terminal:database.explorer")}),e.jsx("button",{className:"database-sidebar__toggle",onClick:p,title:d("terminal:database.collapseSidebar"),children:"«"})]}),e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:d("terminal:database.connection")}),e.jsx("select",{className:"database-sidebar__select",value:l||"",onChange:t=>$(t.target.value),children:x.length===0?e.jsx("option",{value:"",children:d("terminal:database.noConnections")}):x.map(t=>{var u;return e.jsxs("option",{value:t.id,children:[((u=le[t.engine])==null?void 0:u.icon)??"🗄️"," ",t.name]},t.id)})}),_&&e.jsx("div",{className:`database-sidebar__status ${_.connected?"database-sidebar__status--connected":"database-sidebar__status--error"}`,children:_.connected?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✓"}),d("terminal:database.connected"),_.serverVersion&&e.jsxs("span",{className:"database-sidebar__version",children:["(",_.serverVersion,")"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✗"}),_.error||d("terminal:database.disconnected")]})})]}),y.length>0&&e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:d("terminal:database.databaseTitle")}),e.jsxs("div",{className:"database-sidebar__searchable-select",ref:g,children:[e.jsx("input",{ref:z,className:"database-sidebar__search-input",type:"text",value:O?o:i||"",placeholder:d("terminal:database.selectDatabase"),onChange:t=>{v(t.target.value),O||q(!0)},onFocus:()=>{q(!0),v("")},onKeyDown:t=>{var u,k;t.key==="Escape"?(q(!1),v(""),(u=z.current)==null||u.blur()):t.key==="Enter"&&D.length===1&&(N(D[0]),q(!1),v(""),(k=z.current)==null||k.blur())}}),O&&e.jsx("div",{className:"database-sidebar__dropdown",children:D.length===0?e.jsx("div",{className:"database-sidebar__dropdown-empty",children:"No matches"}):D.map(t=>e.jsx("div",{className:`database-sidebar__dropdown-item ${t===i?"database-sidebar__dropdown-item--active":""}`,onMouseDown:u=>{u.preventDefault(),N(t),q(!1),v("")},children:t},t))})]})]}),f.length>0&&e.jsxs("div",{className:"database-sidebar__section database-sidebar__section--tables",children:[e.jsx("div",{className:"database-sidebar__section-title",children:S.trim()?d("terminal:database.tablesCount",{count:h.length})+` / ${f.length}`:d("terminal:database.tablesCount",{count:f.length})}),e.jsxs("div",{className:"database-sidebar__table-filter",children:[e.jsx("input",{ref:A,className:"database-sidebar__table-filter-input",type:"text",value:S,placeholder:d("terminal:database.filterTables"),onChange:t=>H(t.target.value),onKeyDown:t=>{var u;t.key==="Escape"&&(S?H(""):(u=A.current)==null||u.blur(),t.stopPropagation())}}),S&&e.jsx("button",{className:"database-sidebar__table-filter-clear",onClick:()=>{var t;H(""),(t=A.current)==null||t.focus()},title:"Clear filter",children:"×"})]}),e.jsxs("div",{className:"database-sidebar__tables",children:[S.trim()&&h.length===0&&e.jsx("div",{className:"database-sidebar__tables-empty",children:d("terminal:database.noTablesMatch")}),h.map(t=>{const u=M.has(t.name),k=u?K(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:()=>C(t.name),title:u?"Collapse table schema":"Expand table schema",children:e.jsx(F,{name:u?"caret-down":"caret-right",size:10})}),e.jsx("span",{className:"database-sidebar__table-icon",children:e.jsx(F,{name:t.type==="view"?"eye":"clipboard",size:12})}),e.jsx("span",{className:`database-sidebar__table-name ${V===t.name?"database-sidebar__table-name--selected":""}`,onClick:()=>R(t.name),onDoubleClick:()=>{R(t.name),P(t.name)},children:t.name}),e.jsx("button",{className:"database-sidebar__table-insert",onClick:T=>{T.stopPropagation(),Q(t.name)},title:d("terminal:database.insertTableName"),children:"+"})]}),u&&k&&e.jsx("div",{className:"database-sidebar__table-columns",children:k.columns.map(T=>e.jsxs("div",{className:"database-sidebar__column",onClick:()=>Q(T.name),title:`${T.type}${T.nullable?" NULL":" NOT NULL"}${T.primaryKey?" PK":""}`,children:[e.jsx("span",{className:"database-sidebar__column-icon",children:T.primaryKey?e.jsx(F,{name:"key",size:11}):null}),e.jsx("span",{className:"database-sidebar__column-name",children:T.name}),e.jsx("span",{className:"database-sidebar__column-type",children:T.type})]},T.name))})]},t.name)})]})]})]})},_e=({buildingId:a,history:x,onLoadQuery:l})=>{const{t:i}=U(["terminal"]),[j,p]=n.useState(""),[$,N]=n.useState(!1),Q=n.useMemo(()=>{let r=x;if($&&(r=r.filter(o=>o.favorite)),j.trim()){const o=j.toLowerCase();r=r.filter(v=>v.query.toLowerCase().includes(o)||v.database.toLowerCase().includes(o))}return r},[x,$,j]),P=r=>{const o=new Date(r),S=new Date().getTime()-o.getTime();return S<1440*60*1e3?o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):S<10080*60*1e3?o.toLocaleDateString([],{weekday:"short"})+" "+o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):o.toLocaleDateString([],{month:"short",day:"numeric"})},d=n.useCallback((r,o)=>{o.stopPropagation(),m.toggleQueryFavorite(a,r)},[a]),w=n.useCallback((r,o)=>{o.stopPropagation(),m.deleteQueryFromHistory(a,r)},[a]),M=n.useCallback(()=>{confirm(i("terminal:database.confirmClearHistory"))&&m.clearQueryHistory(a)},[a,i]);return x.length===0?e.jsxs("div",{className:"query-history query-history--empty",children:[e.jsx("p",{children:i("terminal:database.noHistory")}),e.jsx("p",{children:i("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:i("terminal:database.searchQueries"),value:j,onChange:r=>p(r.target.value)}),e.jsxs("label",{className:"query-history__filter",children:[e.jsx("input",{type:"checkbox",checked:$,onChange:r=>N(r.target.checked)}),i("terminal:database.favoritesOnly")]}),e.jsx("button",{className:"query-history__clear",onClick:M,title:i("terminal:database.clearAll"),children:i("terminal:database.clearAll")})]}),e.jsxs("div",{className:"query-history__list",children:[Q.map(r=>e.jsxs("div",{className:`query-history__item ${r.status==="error"?"query-history__item--error":""}`,onClick:()=>l(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(F,{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:P(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:i("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:o=>d(r.id,o),title:r.favorite?i("terminal:database.removeFromFavorites"):i("terminal:database.addToFavorites"),children:e.jsx(F,{name:"star",size:12,weight:r.favorite?"fill":"regular",color:r.favorite?"#facc15":void 0})}),e.jsx("button",{className:"query-history__delete",onClick:o=>w(r.id,o),title:i("terminal:database.deleteFromHistory"),children:e.jsx(F,{name:"trash",size:12})})]})]},r.id)),Q.length===0&&e.jsx("div",{className:"query-history__no-results",children:i("terminal:database.noQueriesMatch")})]})]})},xe=({tabs:a,activeTabId:x,onTabClick:l,onTabClose:i})=>{const{t:j}=U(["terminal"]);return e.jsx("div",{className:"database-tabs",children:a.map(p=>e.jsxs("div",{className:`database-tabs__tab ${x===p.id?"database-tabs__tab--active":""}`,children:[e.jsxs("button",{className:"database-tabs__tab-label",onClick:()=>l(p),title:`${p.connectionName} / ${p.database}`,children:[p.database,e.jsx("span",{className:"database-tabs__tab-connection",children:p.connectionName})]}),e.jsx("button",{className:"database-tabs__tab-close",onClick:()=>i(p.id),title:j("terminal:database.closeTab"),"aria-label":`Close ${p.database} tab`,children:"×"})]},p.id))})},ee=a=>`db-panel-${a}`;function pe(a){try{const x=localStorage.getItem(ee(a));return x?JSON.parse(x):{}}catch{return{}}}function fe(a,x){try{localStorage.setItem(ee(a),JSON.stringify(x))}catch{}}const ve=({building:a,onClose:x})=>{var I,Y,W,X;const{t:l}=U(["terminal","common"]),i=Z(a.id),j=ce(a.id),p=ie(a.id),$=de(a.id),N=n.useRef(pe(a.id)),Q=n.useRef(null),P=n.useRef(0),d=((I=a.database)==null?void 0:I.connections)??[],w=(s,c)=>`${s}:${c}`,M=s=>s?(N.current.queries??{})[s]??"":N.current.generalQuery??"",[r,o]=n.useState("results"),[v,S]=n.useState(0),[H,O]=n.useState(!1),[q,V]=n.useState(!1),[R,z]=n.useState(()=>(N.current.openTabs??[]).map(c=>{var b;return{id:`${c.connectionId}:${c.database}`,connectionId:c.connectionId,connectionName:((b=d.find(L=>L.id===c.connectionId))==null?void 0:b.name)??c.connectionId,database:c.database}})),[g,A]=n.useState(N.current.activeTabId??null),[y,J]=n.useState(()=>{const s=N.current.queries??{};return N.current.generalQuery,s}),[f,_]=n.useState(M(g)),D=n.useCallback(s=>{_(c=>{const b=typeof s=="function"?s(c):s;return J(L=>{const E={...L};return g&&(E[g]=b),E}),b})},[g]),h=i.activeConnectionId??N.current.connectionId??((Y=a.database)==null?void 0:Y.activeConnectionId)??((W=d[0])==null?void 0:W.id),C=i.activeDatabase??N.current.database??((X=a.database)==null?void 0:X.activeDatabase),K=d.find(s=>s.id===h),t=n.useCallback((s,c)=>{var E;const b=w(s,c),L=((E=d.find(G=>G.id===s))==null?void 0:E.name)??s;z(G=>{if(G.some(re=>re.id===b))return G;const ne={id:b,connectionId:s,connectionName:L,database:c};return[...G,ne]}),A(b),_(y[b]??""),m.setActiveConnection(a.id,s),m.setActiveDatabase(a.id,c)},[a.id,d,y]),u=n.useCallback(s=>{z(c=>c.filter(b=>b.id!==s)),g===s&&z(c=>{if(c.length>0){const b=c[0];A(b.id),_(y[b.id]??""),m.setActiveConnection(a.id,b.connectionId),m.setActiveDatabase(a.id,b.database)}else A(null),_("");return c})},[g,a.id,y]),k=n.useCallback(s=>{A(s.id),_(y[s.id]??""),m.setActiveConnection(a.id,s.connectionId),m.setActiveDatabase(a.id,s.database)},[a.id,y]);n.useEffect(()=>{if(!q&&d.length>0){const s=N.current;s.connectionId&&d.some(c=>c.id===s.connectionId)&&(m.setActiveConnection(a.id,s.connectionId),m.listDatabases(a.id,s.connectionId),s.database&&(m.setActiveDatabase(a.id,s.database),m.listTables(a.id,s.connectionId,s.database))),V(!0)}},[a.id,d,q]),n.useEffect(()=>{m.requestQueryHistory(a.id)},[a.id]),n.useEffect(()=>{const s=c=>{c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),x())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[x]),n.useEffect(()=>{q&&h&&fe(a.id,{connectionId:h,database:C,lastQuery:f,queries:y,generalQuery:"",openTabs:R.map(s=>({connectionId:s.connectionId,database:s.database})),activeTabId:g??void 0})},[a.id,h,C,f,q,R,g,y]);const T=n.useCallback(s=>{var c;if(!(!h||!C||!f.trim()||$))if(s==="cursor"){const b=(c=Q.current)==null?void 0:c.querySelector(".query-editor__textarea"),L=(b==null?void 0:b.selectionStart)??P.current,E=oe(f,L);E&&m.executeQuery(a.id,h,C,E)}else{const b=ue(f);b.length<=1?m.executeQuery(a.id,h,C,f.trim()):b.forEach((L,E)=>{setTimeout(()=>{m.executeQuery(a.id,h,C,L.sql)},E*150)})}},[a.id,h,C,f,$]),ae=n.useCallback(s=>{D(s),o("results")},[]),se=n.useCallback(s=>{m.setActiveConnection(a.id,s),m.listDatabases(a.id,s)},[a.id]),te=n.useCallback(s=>{h&&(t(h,s),m.listTables(a.id,h,s))},[a.id,h,t]),B=j[v];return d.length===0?e.jsxs("div",{className:"database-panel",ref:Q,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(F,{name:"database",size:16})}),e.jsx("span",{className:"database-panel__name",children:a.name})]}),e.jsx("button",{className:"database-panel__close",onClick:x,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(F,{name:"plug",size:32})}),e.jsx("h3",{children:l("terminal:database.noConnections")}),e.jsx("p",{children:l("terminal:database.noConnectionsDesc")}),e.jsx("p",{children:l("terminal:database.toGetStarted")}),e.jsxs("ol",{children:[e.jsx("li",{children:l("terminal:database.step1Close")}),e.jsx("li",{children:l("terminal:database.step2Settings")}),e.jsx("li",{children:l("terminal:database.step3AddConnection")}),e.jsx("li",{children:l("terminal:database.step4Reopen")})]})]})})]}):e.jsxs("div",{className:"database-panel",ref:Q,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:(K==null?void 0:K.engine)==="mysql"?"🐬":"🐘"}),e.jsx("span",{className:"database-panel__name",children:a.name}),K&&e.jsxs("span",{className:"database-panel__connection-info",children:[K.name," / ",C||l("terminal:database.noDatabaseSelected")]})]}),e.jsx("button",{className:"database-panel__close",onClick:x,children:"×"})]}),e.jsxs("div",{className:"database-panel__body",children:[e.jsx(he,{building:a,connections:d,activeConnectionId:h,activeDatabase:C,collapsed:H,onToggleCollapse:()=>O(!H),onConnectionChange:se,onDatabaseChange:te,onInsertTable:s=>D(c=>c+` ${s}`),onSelectTableQuery:s=>{const c=`SELECT * FROM ${s}`;D(c),h&&C&&m.executeQuery(a.id,h,C,c)}}),e.jsxs("div",{className:"database-panel__main",children:[R.length>0&&e.jsx(xe,{tabs:R,activeTabId:g,onTabClick:k,onTabClose:u}),e.jsx(me,{query:f,onChange:D,onExecute:T,isExecuting:$,disabled:!h||!C}),e.jsxs("div",{className:"database-panel__tabs",children:[e.jsxs("button",{className:`database-panel__tab ${r==="results"?"database-panel__tab--active":""}`,onClick:()=>o("results"),children:[l("terminal:database.results"),j.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:j.length})]}),e.jsxs("button",{className:`database-panel__tab ${r==="history"?"database-panel__tab--active":""}`,onClick:()=>o("history"),children:[l("terminal:database.history"),p.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:p.length})]}),r==="results"&&j.length>1&&e.jsxs("div",{className:"database-panel__result-nav",children:[e.jsxs("button",{disabled:v>=j.length-1,onClick:()=>S(s=>s+1),children:["← ",l("terminal:database.older")]}),e.jsxs("span",{children:[v+1," / ",j.length]}),e.jsxs("button",{disabled:v<=0,onClick:()=>S(s=>s-1),children:[l("terminal:database.newer")," →"]})]})]}),e.jsx("div",{className:"database-panel__tab-content",children:r==="results"?B?e.jsx(be,{result:B,buildingId:a.id,building:a}):e.jsxs("div",{className:"database-panel__empty",children:[e.jsx("p",{children:l("terminal:database.noResultsYet")}),e.jsx("p",{children:l("terminal:database.selectDbAndRun")})]}):e.jsx(_e,{buildingId:a.id,history:p,onLoadQuery:ae})})]})]})]})};export{ve as DatabasePanel,he as DatabaseSidebar,xe as DatabaseTabs,me as QueryEditor,_e as QueryHistoryPanel,be as ResultsTable};
|
|
1
|
+
import{u as U,a as Z,r as n,s as m,j as e,D as le,I as F,b as ce,c as ie,d as de,g as oe,e as ue,Q as me,R as be}from"./main-DeBWAhnp.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const he=({building:a,connections:x,activeConnectionId:l,activeDatabase:i,collapsed:j,onToggleCollapse:p,onConnectionChange:$,onDatabaseChange:N,onInsertTable:Q,onSelectTableQuery:P})=>{const{t:d}=U(["terminal"]),w=Z(a.id),[M,r]=n.useState(new Set),[o,v]=n.useState(""),[S,H]=n.useState(""),[O,q]=n.useState(!1),[V,R]=n.useState(null),z=n.useRef(null),g=n.useRef(null),A=n.useRef(null),y=l?w.databases.get(l)??[]:[],J=l&&i?`${l}:${i}`:"",f=J?w.tables.get(J)??[]:[],_=l?w.connectionStatus.get(l):void 0,D=n.useMemo(()=>{if(!o.trim())return y;const t=o.toLowerCase();return y.filter(u=>u.toLowerCase().includes(t))},[y,o]),h=n.useMemo(()=>{if(!S.trim())return f;const t=S.toLowerCase();return f.filter(u=>u.name.toLowerCase().includes(t))},[f,S]);n.useEffect(()=>{const t=u=>{g.current&&!g.current.contains(u.target)&&q(!1)};return O&&document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[O]),n.useEffect(()=>{l&&!_&&m.testDatabaseConnection(a.id,l)},[a.id,l,_]),n.useEffect(()=>{l&&(_!=null&&_.connected)&&y.length===0&&m.listDatabases(a.id,l)},[a.id,l,_==null?void 0:_.connected,y.length]),n.useEffect(()=>{l&&i&&f.length===0&&m.listTables(a.id,l,i)},[a.id,l,i,f.length]),n.useEffect(()=>{R(null),H("")},[l,i]);const C=n.useCallback(t=>{r(u=>{const k=new Set(u);if(k.has(t))k.delete(t);else if(k.add(t),l&&i){const T=`${l}:${i}:${t}`;w.tableSchemas.has(T)||m.getTableSchema(a.id,l,i,t)}return k})},[a.id,l,i,w.tableSchemas]),K=t=>{if(!l||!i)return null;const u=`${l}:${i}:${t}`;return w.tableSchemas.get(u)};return j?e.jsx("div",{className:"database-sidebar database-sidebar--collapsed",children:e.jsx("button",{className:"database-sidebar__toggle",onClick:p,title:d("terminal:database.expandSidebar"),children:"»"})}):e.jsxs("div",{className:"database-sidebar",children:[e.jsxs("div",{className:"database-sidebar__header",children:[e.jsx("span",{children:d("terminal:database.explorer")}),e.jsx("button",{className:"database-sidebar__toggle",onClick:p,title:d("terminal:database.collapseSidebar"),children:"«"})]}),e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:d("terminal:database.connection")}),e.jsx("select",{className:"database-sidebar__select",value:l||"",onChange:t=>$(t.target.value),children:x.length===0?e.jsx("option",{value:"",children:d("terminal:database.noConnections")}):x.map(t=>{var u;return e.jsxs("option",{value:t.id,children:[((u=le[t.engine])==null?void 0:u.icon)??"🗄️"," ",t.name]},t.id)})}),_&&e.jsx("div",{className:`database-sidebar__status ${_.connected?"database-sidebar__status--connected":"database-sidebar__status--error"}`,children:_.connected?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✓"}),d("terminal:database.connected"),_.serverVersion&&e.jsxs("span",{className:"database-sidebar__version",children:["(",_.serverVersion,")"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"database-sidebar__status-icon",children:"✗"}),_.error||d("terminal:database.disconnected")]})})]}),y.length>0&&e.jsxs("div",{className:"database-sidebar__section",children:[e.jsx("div",{className:"database-sidebar__section-title",children:d("terminal:database.databaseTitle")}),e.jsxs("div",{className:"database-sidebar__searchable-select",ref:g,children:[e.jsx("input",{ref:z,className:"database-sidebar__search-input",type:"text",value:O?o:i||"",placeholder:d("terminal:database.selectDatabase"),onChange:t=>{v(t.target.value),O||q(!0)},onFocus:()=>{q(!0),v("")},onKeyDown:t=>{var u,k;t.key==="Escape"?(q(!1),v(""),(u=z.current)==null||u.blur()):t.key==="Enter"&&D.length===1&&(N(D[0]),q(!1),v(""),(k=z.current)==null||k.blur())}}),O&&e.jsx("div",{className:"database-sidebar__dropdown",children:D.length===0?e.jsx("div",{className:"database-sidebar__dropdown-empty",children:"No matches"}):D.map(t=>e.jsx("div",{className:`database-sidebar__dropdown-item ${t===i?"database-sidebar__dropdown-item--active":""}`,onMouseDown:u=>{u.preventDefault(),N(t),q(!1),v("")},children:t},t))})]})]}),f.length>0&&e.jsxs("div",{className:"database-sidebar__section database-sidebar__section--tables",children:[e.jsx("div",{className:"database-sidebar__section-title",children:S.trim()?d("terminal:database.tablesCount",{count:h.length})+` / ${f.length}`:d("terminal:database.tablesCount",{count:f.length})}),e.jsxs("div",{className:"database-sidebar__table-filter",children:[e.jsx("input",{ref:A,className:"database-sidebar__table-filter-input",type:"text",value:S,placeholder:d("terminal:database.filterTables"),onChange:t=>H(t.target.value),onKeyDown:t=>{var u;t.key==="Escape"&&(S?H(""):(u=A.current)==null||u.blur(),t.stopPropagation())}}),S&&e.jsx("button",{className:"database-sidebar__table-filter-clear",onClick:()=>{var t;H(""),(t=A.current)==null||t.focus()},title:"Clear filter",children:"×"})]}),e.jsxs("div",{className:"database-sidebar__tables",children:[S.trim()&&h.length===0&&e.jsx("div",{className:"database-sidebar__tables-empty",children:d("terminal:database.noTablesMatch")}),h.map(t=>{const u=M.has(t.name),k=u?K(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:()=>C(t.name),title:u?"Collapse table schema":"Expand table schema",children:e.jsx(F,{name:u?"caret-down":"caret-right",size:10})}),e.jsx("span",{className:"database-sidebar__table-icon",children:e.jsx(F,{name:t.type==="view"?"eye":"clipboard",size:12})}),e.jsx("span",{className:`database-sidebar__table-name ${V===t.name?"database-sidebar__table-name--selected":""}`,onClick:()=>R(t.name),onDoubleClick:()=>{R(t.name),P(t.name)},children:t.name}),e.jsx("button",{className:"database-sidebar__table-insert",onClick:T=>{T.stopPropagation(),Q(t.name)},title:d("terminal:database.insertTableName"),children:"+"})]}),u&&k&&e.jsx("div",{className:"database-sidebar__table-columns",children:k.columns.map(T=>e.jsxs("div",{className:"database-sidebar__column",onClick:()=>Q(T.name),title:`${T.type}${T.nullable?" NULL":" NOT NULL"}${T.primaryKey?" PK":""}`,children:[e.jsx("span",{className:"database-sidebar__column-icon",children:T.primaryKey?e.jsx(F,{name:"key",size:11}):null}),e.jsx("span",{className:"database-sidebar__column-name",children:T.name}),e.jsx("span",{className:"database-sidebar__column-type",children:T.type})]},T.name))})]},t.name)})]})]})]})},_e=({buildingId:a,history:x,onLoadQuery:l})=>{const{t:i}=U(["terminal"]),[j,p]=n.useState(""),[$,N]=n.useState(!1),Q=n.useMemo(()=>{let r=x;if($&&(r=r.filter(o=>o.favorite)),j.trim()){const o=j.toLowerCase();r=r.filter(v=>v.query.toLowerCase().includes(o)||v.database.toLowerCase().includes(o))}return r},[x,$,j]),P=r=>{const o=new Date(r),S=new Date().getTime()-o.getTime();return S<1440*60*1e3?o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):S<10080*60*1e3?o.toLocaleDateString([],{weekday:"short"})+" "+o.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):o.toLocaleDateString([],{month:"short",day:"numeric"})},d=n.useCallback((r,o)=>{o.stopPropagation(),m.toggleQueryFavorite(a,r)},[a]),w=n.useCallback((r,o)=>{o.stopPropagation(),m.deleteQueryFromHistory(a,r)},[a]),M=n.useCallback(()=>{confirm(i("terminal:database.confirmClearHistory"))&&m.clearQueryHistory(a)},[a,i]);return x.length===0?e.jsxs("div",{className:"query-history query-history--empty",children:[e.jsx("p",{children:i("terminal:database.noHistory")}),e.jsx("p",{children:i("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:i("terminal:database.searchQueries"),value:j,onChange:r=>p(r.target.value)}),e.jsxs("label",{className:"query-history__filter",children:[e.jsx("input",{type:"checkbox",checked:$,onChange:r=>N(r.target.checked)}),i("terminal:database.favoritesOnly")]}),e.jsx("button",{className:"query-history__clear",onClick:M,title:i("terminal:database.clearAll"),children:i("terminal:database.clearAll")})]}),e.jsxs("div",{className:"query-history__list",children:[Q.map(r=>e.jsxs("div",{className:`query-history__item ${r.status==="error"?"query-history__item--error":""}`,onClick:()=>l(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(F,{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:P(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:i("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:o=>d(r.id,o),title:r.favorite?i("terminal:database.removeFromFavorites"):i("terminal:database.addToFavorites"),children:e.jsx(F,{name:"star",size:12,weight:r.favorite?"fill":"regular",color:r.favorite?"#facc15":void 0})}),e.jsx("button",{className:"query-history__delete",onClick:o=>w(r.id,o),title:i("terminal:database.deleteFromHistory"),children:e.jsx(F,{name:"trash",size:12})})]})]},r.id)),Q.length===0&&e.jsx("div",{className:"query-history__no-results",children:i("terminal:database.noQueriesMatch")})]})]})},xe=({tabs:a,activeTabId:x,onTabClick:l,onTabClose:i})=>{const{t:j}=U(["terminal"]);return e.jsx("div",{className:"database-tabs",children:a.map(p=>e.jsxs("div",{className:`database-tabs__tab ${x===p.id?"database-tabs__tab--active":""}`,children:[e.jsxs("button",{className:"database-tabs__tab-label",onClick:()=>l(p),title:`${p.connectionName} / ${p.database}`,children:[p.database,e.jsx("span",{className:"database-tabs__tab-connection",children:p.connectionName})]}),e.jsx("button",{className:"database-tabs__tab-close",onClick:()=>i(p.id),title:j("terminal:database.closeTab"),"aria-label":`Close ${p.database} tab`,children:"×"})]},p.id))})},ee=a=>`db-panel-${a}`;function pe(a){try{const x=localStorage.getItem(ee(a));return x?JSON.parse(x):{}}catch{return{}}}function fe(a,x){try{localStorage.setItem(ee(a),JSON.stringify(x))}catch{}}const ve=({building:a,onClose:x})=>{var I,Y,W,X;const{t:l}=U(["terminal","common"]),i=Z(a.id),j=ce(a.id),p=ie(a.id),$=de(a.id),N=n.useRef(pe(a.id)),Q=n.useRef(null),P=n.useRef(0),d=((I=a.database)==null?void 0:I.connections)??[],w=(s,c)=>`${s}:${c}`,M=s=>s?(N.current.queries??{})[s]??"":N.current.generalQuery??"",[r,o]=n.useState("results"),[v,S]=n.useState(0),[H,O]=n.useState(!1),[q,V]=n.useState(!1),[R,z]=n.useState(()=>(N.current.openTabs??[]).map(c=>{var b;return{id:`${c.connectionId}:${c.database}`,connectionId:c.connectionId,connectionName:((b=d.find(L=>L.id===c.connectionId))==null?void 0:b.name)??c.connectionId,database:c.database}})),[g,A]=n.useState(N.current.activeTabId??null),[y,J]=n.useState(()=>{const s=N.current.queries??{};return N.current.generalQuery,s}),[f,_]=n.useState(M(g)),D=n.useCallback(s=>{_(c=>{const b=typeof s=="function"?s(c):s;return J(L=>{const E={...L};return g&&(E[g]=b),E}),b})},[g]),h=i.activeConnectionId??N.current.connectionId??((Y=a.database)==null?void 0:Y.activeConnectionId)??((W=d[0])==null?void 0:W.id),C=i.activeDatabase??N.current.database??((X=a.database)==null?void 0:X.activeDatabase),K=d.find(s=>s.id===h),t=n.useCallback((s,c)=>{var E;const b=w(s,c),L=((E=d.find(G=>G.id===s))==null?void 0:E.name)??s;z(G=>{if(G.some(re=>re.id===b))return G;const ne={id:b,connectionId:s,connectionName:L,database:c};return[...G,ne]}),A(b),_(y[b]??""),m.setActiveConnection(a.id,s),m.setActiveDatabase(a.id,c)},[a.id,d,y]),u=n.useCallback(s=>{z(c=>c.filter(b=>b.id!==s)),g===s&&z(c=>{if(c.length>0){const b=c[0];A(b.id),_(y[b.id]??""),m.setActiveConnection(a.id,b.connectionId),m.setActiveDatabase(a.id,b.database)}else A(null),_("");return c})},[g,a.id,y]),k=n.useCallback(s=>{A(s.id),_(y[s.id]??""),m.setActiveConnection(a.id,s.connectionId),m.setActiveDatabase(a.id,s.database)},[a.id,y]);n.useEffect(()=>{if(!q&&d.length>0){const s=N.current;s.connectionId&&d.some(c=>c.id===s.connectionId)&&(m.setActiveConnection(a.id,s.connectionId),m.listDatabases(a.id,s.connectionId),s.database&&(m.setActiveDatabase(a.id,s.database),m.listTables(a.id,s.connectionId,s.database))),V(!0)}},[a.id,d,q]),n.useEffect(()=>{m.requestQueryHistory(a.id)},[a.id]),n.useEffect(()=>{const s=c=>{c.key==="Escape"&&(c.preventDefault(),c.stopPropagation(),x())};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[x]),n.useEffect(()=>{q&&h&&fe(a.id,{connectionId:h,database:C,lastQuery:f,queries:y,generalQuery:"",openTabs:R.map(s=>({connectionId:s.connectionId,database:s.database})),activeTabId:g??void 0})},[a.id,h,C,f,q,R,g,y]);const T=n.useCallback(s=>{var c;if(!(!h||!C||!f.trim()||$))if(s==="cursor"){const b=(c=Q.current)==null?void 0:c.querySelector(".query-editor__textarea"),L=(b==null?void 0:b.selectionStart)??P.current,E=oe(f,L);E&&m.executeQuery(a.id,h,C,E)}else{const b=ue(f);b.length<=1?m.executeQuery(a.id,h,C,f.trim()):b.forEach((L,E)=>{setTimeout(()=>{m.executeQuery(a.id,h,C,L.sql)},E*150)})}},[a.id,h,C,f,$]),ae=n.useCallback(s=>{D(s),o("results")},[]),se=n.useCallback(s=>{m.setActiveConnection(a.id,s),m.listDatabases(a.id,s)},[a.id]),te=n.useCallback(s=>{h&&(t(h,s),m.listTables(a.id,h,s))},[a.id,h,t]),B=j[v];return d.length===0?e.jsxs("div",{className:"database-panel",ref:Q,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(F,{name:"database",size:16})}),e.jsx("span",{className:"database-panel__name",children:a.name})]}),e.jsx("button",{className:"database-panel__close",onClick:x,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(F,{name:"plug",size:32})}),e.jsx("h3",{children:l("terminal:database.noConnections")}),e.jsx("p",{children:l("terminal:database.noConnectionsDesc")}),e.jsx("p",{children:l("terminal:database.toGetStarted")}),e.jsxs("ol",{children:[e.jsx("li",{children:l("terminal:database.step1Close")}),e.jsx("li",{children:l("terminal:database.step2Settings")}),e.jsx("li",{children:l("terminal:database.step3AddConnection")}),e.jsx("li",{children:l("terminal:database.step4Reopen")})]})]})})]}):e.jsxs("div",{className:"database-panel",ref:Q,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:(K==null?void 0:K.engine)==="mysql"?"🐬":"🐘"}),e.jsx("span",{className:"database-panel__name",children:a.name}),K&&e.jsxs("span",{className:"database-panel__connection-info",children:[K.name," / ",C||l("terminal:database.noDatabaseSelected")]})]}),e.jsx("button",{className:"database-panel__close",onClick:x,children:"×"})]}),e.jsxs("div",{className:"database-panel__body",children:[e.jsx(he,{building:a,connections:d,activeConnectionId:h,activeDatabase:C,collapsed:H,onToggleCollapse:()=>O(!H),onConnectionChange:se,onDatabaseChange:te,onInsertTable:s=>D(c=>c+` ${s}`),onSelectTableQuery:s=>{const c=`SELECT * FROM ${s}`;D(c),h&&C&&m.executeQuery(a.id,h,C,c)}}),e.jsxs("div",{className:"database-panel__main",children:[R.length>0&&e.jsx(xe,{tabs:R,activeTabId:g,onTabClick:k,onTabClose:u}),e.jsx(me,{query:f,onChange:D,onExecute:T,isExecuting:$,disabled:!h||!C}),e.jsxs("div",{className:"database-panel__tabs",children:[e.jsxs("button",{className:`database-panel__tab ${r==="results"?"database-panel__tab--active":""}`,onClick:()=>o("results"),children:[l("terminal:database.results"),j.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:j.length})]}),e.jsxs("button",{className:`database-panel__tab ${r==="history"?"database-panel__tab--active":""}`,onClick:()=>o("history"),children:[l("terminal:database.history"),p.length>0&&e.jsx("span",{className:"database-panel__tab-badge",children:p.length})]}),r==="results"&&j.length>1&&e.jsxs("div",{className:"database-panel__result-nav",children:[e.jsxs("button",{disabled:v>=j.length-1,onClick:()=>S(s=>s+1),children:["← ",l("terminal:database.older")]}),e.jsxs("span",{children:[v+1," / ",j.length]}),e.jsxs("button",{disabled:v<=0,onClick:()=>S(s=>s-1),children:[l("terminal:database.newer")," →"]})]})]}),e.jsx("div",{className:"database-panel__tab-content",children:r==="results"?B?e.jsx(be,{result:B,buildingId:a.id,building:a}):e.jsxs("div",{className:"database-panel__empty",children:[e.jsx("p",{children:l("terminal:database.noResultsYet")}),e.jsx("p",{children:l("terminal:database.selectDbAndRun")})]}):e.jsx(_e,{buildingId:a.id,history:p,onLoadQuery:ae})})]})]})]})};export{ve as DatabasePanel,he as DatabaseSidebar,xe as DatabaseTabs,me as QueryEditor,_e as QueryHistoryPanel,be as ResultsTable};
|