planche 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/app/assets/{AboutDialog-BKZYkJTp.js → AboutDialog-rGCGtC6B.js} +1 -1
- package/app/assets/{ConnectDialog-BR8x82WA.js → ConnectDialog-BvwpdRuF.js} +1 -1
- package/app/assets/{CopyDatabaseDialog-BNy2T6Gr.js → CopyDatabaseDialog-BkcTNeQX.js} +1 -1
- package/app/assets/{CopyTableDialog-BPlrWZkd.js → CopyTableDialog-CXrlyol9.js} +1 -1
- package/app/assets/{CreateDatabaseDialog-CSGP8uim.js → CreateDatabaseDialog-DCnuqOmy.js} +1 -1
- package/app/assets/{DataDiffDialog-DnPrMjJH.js → DataDiffDialog-BbE_4J8s.js} +1 -1
- package/app/assets/{DownloadToCSVDialog-BAB8dFZb.js → DownloadToCSVDialog-Ceyr73gw.js} +1 -1
- package/app/assets/{EditSchemaDialog-DbtEwLFq.js → EditSchemaDialog-cLRK39Vw.js} +1 -1
- package/app/assets/{FindReplaceDialog-uWQWnCuI.js → FindReplaceDialog-1fXjxKMo.js} +1 -1
- package/app/assets/{FlushDialog-Cs0aKhnC.js → FlushDialog-CqSjI_mY.js} +1 -1
- package/app/assets/{LinkColumnDialog-Wug5N1I5.js → LinkColumnDialog-BZo_6ObH.js} +1 -1
- package/app/assets/{LocalHistoryDialog-DNRc52tY.js → LocalHistoryDialog-C14Mxnyy.js} +1 -1
- package/app/assets/{ProcessListDialog-EFZx2I21.js → ProcessListDialog-Dx3dPvT0.js} +1 -1
- package/app/assets/{QuickCommandPalette-CpXQe_fD.js → QuickCommandPalette-GiKovkpY.js} +1 -1
- package/app/assets/{RowFormDialog-DGJRhveF.js → RowFormDialog-cdxpPm0O.js} +1 -1
- package/app/assets/{SafetySettingsDialog-EPYmYqI7.js → SafetySettingsDialog-WQlpckyU.js} +1 -1
- package/app/assets/{SchemaDiffDialog-CepiDNT4.js → SchemaDiffDialog-BfuoMLOD.js} +1 -1
- package/app/assets/{SchemaToHTMLDialog-Cl7FtDQ4.js → SchemaToHTMLDialog-DealbXXH.js} +1 -1
- package/app/assets/{StatusDialog-BorcEOOv.js → StatusDialog-B2gxU15M.js} +1 -1
- package/app/assets/{UserAddDialog-DvKVbCtu.js → UserAddDialog-DGCGDytU.js} +1 -1
- package/app/assets/{UserManagerDialog-lyWevcWM.js → UserManagerDialog-DCoyy-3y.js} +1 -1
- package/app/assets/{VariablesDialog-BVUkQuDm.js → VariablesDialog-2PmzReYr.js} +1 -1
- package/app/assets/{database-D3ZazTXj.js → database-7RkacLLF.js} +1 -1
- package/app/assets/{dbms-Cq4imB7l.js → dbms-Bsjvyvsp.js} +1 -1
- package/app/assets/{de-B9X_f_18.js → de-a3uUFgyR.js} +1 -1
- package/app/assets/{engine-BmvPzjsq.js → engine-DRzYxvTs.js} +1 -1
- package/app/assets/{fr-ByU5YzKG.js → fr-mAuj3xjE.js} +1 -1
- package/app/assets/{i18n-9War-oHy.js → i18n-DFnLZX4V.js} +2 -2
- package/app/assets/{ja-nAp-4B2u.js → ja-Ct4KapSS.js} +1 -1
- package/app/assets/{ko-BeLRvuuF.js → ko-Kd4KO98m.js} +1 -1
- package/app/assets/main-B9Gu9otb.js +940 -0
- package/app/assets/main-zsfz90dl.css +2 -0
- package/app/assets/query-execution-DSSJw-rD.js +7 -0
- package/app/assets/{schema-nodes-n_QZJb21.js → schema-nodes-D3-cz2Xk.js} +1 -1
- package/app/assets/{select-XqkC478q.js → select-UCsaLUTL.js} +1 -1
- package/app/assets/{table-copy-WMW8qLUH.js → table-copy-DEPZiyTM.js} +1 -1
- package/app/assets/{use-engine-z0WEd5U4.js → use-engine-5vf18JRu.js} +1 -1
- package/app/assets/{zh-QBkIdY--.js → zh-B5o8i7gH.js} +1 -1
- package/app/index.html +10 -10
- package/package.json +1 -1
- package/app/assets/main-CCLlOK4N.js +0 -940
- package/app/assets/main-DntTuWCY.css +0 -2
- package/app/assets/query-execution-C80kZc4y.js +0 -7
package/README.md
CHANGED
|
@@ -118,7 +118,16 @@ database connections open and forwards queries with the matching driver
|
|
|
118
118
|
|
|
119
119
|
When `planche.dev` cannot be reached, the agent serves the copy of the app it
|
|
120
120
|
ships with (at its own address) instead of opening a browser error page, so it
|
|
121
|
-
keeps working offline. `--
|
|
121
|
+
keeps working offline. `--serve-app` forces that from the start and
|
|
122
|
+
`--no-serve-app` turns it off.
|
|
123
|
+
|
|
124
|
+
That makes the agent usable on networks with no way out. Only installing it
|
|
125
|
+
needs the outside world — `npm i -g planche` where npm is reachable, or
|
|
126
|
+
`npm pack planche` for a tarball to carry in or push to an internal registry.
|
|
127
|
+
From then on the served page makes no requests outside the machine at all: the
|
|
128
|
+
editor, the SQLite engine and the icons are part of the package, and there is
|
|
129
|
+
no CDN, web font or analytics. Hosted databases (Neon, Supabase, D1), SSH to
|
|
130
|
+
unreachable hosts and the sample database are what you lose.
|
|
122
131
|
|
|
123
132
|
## Gateway mode
|
|
124
133
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./ui-store-DWSBgCoR.js";import{t}from"./main-
|
|
1
|
+
import{n as e}from"./ui-store-DWSBgCoR.js";import{t}from"./main-B9Gu9otb.js";import{l as n,m as r,t as i}from"./button-BGQhw-yz.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./dialog-z_ZHxAMN.js";var d=n(),f=`https://planche.dev`;function p(){let n=e(e=>e.activeDialog),p=e(e=>e.closeDialog),{t:m}=r();return(0,d.jsx)(u,{open:n===`about`,onOpenChange:e=>{e||p()},children:(0,d.jsxs)(s,{className:`sm:max-w-[440px]`,children:[(0,d.jsx)(a,{children:(0,d.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,d.jsx)(t,{size:44,className:`shrink-0`}),(0,d.jsxs)(`div`,{className:`grid gap-1`,children:[(0,d.jsx)(c,{children:m(`about.title`)}),(0,d.jsx)(l,{children:m(`about.tagline`)})]})]})}),(0,d.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[(0,d.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-4 gap-y-1`,children:[(0,d.jsx)(`dt`,{className:`text-muted-foreground`,children:m(`about.version`)}),(0,d.jsx)(`dd`,{children:`0.1.1`}),(0,d.jsx)(`dt`,{className:`text-muted-foreground`,children:m(`about.website`)}),(0,d.jsx)(`dd`,{children:(0,d.jsx)(`a`,{href:f,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:f})})]}),(0,d.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`© 2026 Juwon Jeong. `,m(`about.rights`)]}),(0,d.jsx)(`p`,{className:`rounded-md border bg-muted/40 p-3 text-xs text-muted-foreground`,children:m(`about.disclaimer`)})]}),(0,d.jsx)(o,{children:(0,d.jsx)(i,{onClick:p,children:m(`settings.done`)})})]})})}export{p as AboutDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{C as i,K as a,M as o,N as s,S as c,a as l,b as u,c as d,d as f,i as p,j as m,l as h,n as g,o as _,r as v,s as y,u as b,w as x,x as S,y as C}from"./main-CCLlOK4N.js";import{l as w,m as T,t as E}from"./button-BGQhw-yz.js";import{a as D,i as O,n as k,r as A,t as j}from"./select-XqkC478q.js";import{t as M}from"./connection-store-B9-4NAfR.js";import{n as ee}from"./query-store-fCiE0iiG.js";import{O as N,S as te,T as ne,b as re,j as P,k as F,l as I,m as ie,n as ae,s as L,t as oe,w as se}from"./database-D3ZazTXj.js";import{n as R,t as z}from"./dbms-Cq4imB7l.js";import{a as ce,i as le,n as ue,o as de,t as fe}from"./dialog-z_ZHxAMN.js";var B=e(t(),1),V=new Set([`postgres:`,`postgresql:`]);function H(e){let t=e.trim().replace(/^psql\s+(['"])?/,``).replace(/['"]$/,``);if(!/^postgres(ql)?:\/\//i.test(t))return null;let n;try{n=new URL(t)}catch{return null}if(!V.has(n.protocol.toLowerCase())||!n.hostname)return null;let r=e=>{try{return decodeURIComponent(e)}catch{return e}},i={host:n.hostname};n.port&&(i.port=Number(n.port)),n.username&&(i.user=r(n.username)),n.password&&(i.pass=r(n.password));let a=r(n.pathname.replace(/^\//,``));return a&&(i.database=a),i}var U=w(),W=[`utf8`,`utf8mb4`,`latin1`,`ascii`,`euckr`,`sjis`,`big5`],G={enabled:!1,host:``,port:22,user:``,auth:`key`};function K({label:e,htmlFor:t,children:n}){return(0,U.jsxs)(`div`,{className:`grid grid-cols-[120px_minmax(0,1fr)] items-center gap-2`,children:[(0,U.jsx)(h,{htmlFor:t,children:e}),n]})}function pe({value:e,onChange:t}){let{t:n}=T();function r(n,r){t({...e,[n]:r})}let i=e.dbms===`sqlite`,a=e.transport??`browser`,c=i&&a===`browser`,l=F.has(e.dbms),u=e.dbms===`d1`,d=z.find(t=>t.id===e.dbms)?.capabilities,p=e.ssh??G,[m,h]=(0,B.useState)(``),g=m.trim()===``?`empty`:H(m)?`applied`:`invalid`,v=e.dbms===`supabase`&&e.port===6543;function x(n){h(n);let r=H(n);r&&t({...e,host:r.host??e.host,port:r.port??z.find(t=>t.id===e.dbms)?.defaultPort??e.port,user:r.user??e.user,pass:r.pass??e.pass,database:r.database??e.database})}function S(n){t({...e,ssh:{...p,...n}})}async function C(e){e&&S({privateKey:await e.text(),privateKeyName:e.name})}return(0,U.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,U.jsx)(K,{label:n(`connection.form.hostName`),htmlFor:`conn-hostName`,children:(0,U.jsx)(b,{id:`conn-hostName`,placeholder:n(`connection.form.hostNamePlaceholder`),value:e.hostName,onChange:e=>r(`hostName`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.dataSource`),children:(0,U.jsxs)(j,{value:e.dbms,onValueChange:n=>{let r=z.find(e=>e.id===n);if(!r)return;let i=r.id,a=F.has(i)||i===`d1`;h(``),t({...e,dbms:i,transactionMode:r.capabilities.transactions?e.transactionMode:`auto`,port:r.defaultPort??e.port,host:a&&e.host===`localhost`?``:!a&&e.host===``?`localhost`:e.host,user:a||l||u?y(i):e.user,database:e.database&&!a&&!l&&!u?e.database:_(i)??e.database})},children:[(0,U.jsx)(O,{id:`conn-dbms`,className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsx)(k,{children:z.map(e=>(0,U.jsx)(A,{value:e.id,children:(0,U.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(f,{dbms:e.id}),e.label]})},e.id))})]})}),l&&(0,U.jsx)(K,{label:n(`connection.form.connectionString`),htmlFor:`conn-uri`,children:(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(b,{id:`conn-uri`,type:`password`,autoComplete:`off`,spellCheck:!1,className:`font-mono text-xs`,placeholder:e.dbms===`neon`?`postgresql://neondb_owner:npg_…@ep-….neon.tech/neondb?sslmode=require`:`postgresql://postgres.[ref]:[password]@aws-0-….pooler.supabase.com:5432/postgres`,value:m,onChange:e=>x(e.target.value)}),(0,U.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed ${g===`invalid`?`text-destructive`:`text-muted-foreground`}`,children:n(g===`invalid`?`connection.form.connectionStringInvalid`:g===`applied`?`connection.form.connectionStringApplied`:e.dbms===`neon`?`connection.form.neonHint`:`connection.form.supabaseHint`)})]})}),i&&(0,U.jsxs)(K,{label:n(`connection.form.openVia`),children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`radio`,name:`transport`,value:`browser`,checked:a===`browser`,onChange:()=>r(`transport`,`browser`),className:`accent-primary`}),n(`connection.form.viaBrowser`)]}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`radio`,name:`transport`,value:`tunnel`,checked:a===`tunnel`,onChange:()=>r(`transport`,`tunnel`),className:`accent-primary`}),n(`connection.form.viaAgent`)]})]}),(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(a===`browser`?`connection.form.viaBrowserHint`:`connection.form.viaAgentHint`)})]}),c?(0,U.jsx)(K,{label:n(`connection.form.databaseFile`),children:(0,U.jsxs)(`div`,{className:`min-w-0 text-xs text-muted-foreground leading-relaxed`,children:[e.file?(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,U.jsx)(`span`,{className:`min-w-0 break-all text-foreground`,title:e.file,children:e.file}),(0,U.jsx)(E,{type:`button`,variant:`outline`,size:`sm`,className:`h-6 shrink-0 px-2 text-xs`,onClick:()=>{L(e.id),r(`file`,``)},children:n(`connection.form.changeFile`)})]}):(0,U.jsx)(`p`,{children:n(`connection.form.filePickerHint`)}),(0,U.jsx)(`p`,{className:`mt-1`,children:n(`connection.form.fileRememberedHint`)})]})}):null,!c&&(0,U.jsx)(K,{label:n(`connection.form.authToken`),htmlFor:`conn-authToken`,children:(0,U.jsx)(b,{id:`conn-authToken`,type:`password`,placeholder:n(`connection.form.authTokenPlaceholder`),value:e.authToken,onChange:e=>r(`authToken`,e.target.value.trim())})}),c?null:u?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.d1AccountId`),htmlFor:`conn-d1-account`,children:(0,U.jsx)(b,{id:`conn-d1-account`,className:`font-mono text-xs`,spellCheck:!1,placeholder:`023e105f4ecef8ad9ca31a8372d0c353`,value:e.accountId??``,onChange:e=>r(`accountId`,e.target.value.trim())})}),(0,U.jsx)(K,{label:n(`connection.form.d1DatabaseId`),htmlFor:`conn-d1-database`,children:(0,U.jsx)(b,{id:`conn-d1-database`,className:`font-mono text-xs`,spellCheck:!1,placeholder:`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`,value:e.databaseId??``,onChange:e=>r(`databaseId`,e.target.value.trim())})}),(0,U.jsx)(K,{label:n(`connection.form.d1ApiToken`),htmlFor:`conn-pass`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(b,{id:`conn-pass`,type:`password`,value:e.pass,onChange:e=>r(`pass`,e.target.value.trim())}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs whitespace-nowrap cursor-pointer`,title:n(`connection.form.savePasswordHint`),children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:e.savePassword??!0,onChange:e=>r(`savePassword`,e.target.checked)}),n(`connection.form.savePassword`)]})]})}),(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.d1Hint`)}),(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.d1LimitsHint`)})]}):i?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.databaseFile`),htmlFor:`conn-file`,children:(0,U.jsx)(b,{id:`conn-file`,placeholder:n(`connection.form.filePathPlaceholder`),value:e.file??``,onChange:e=>r(`file`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.createIfMissing`),htmlFor:`conn-create`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-create`,type:`checkbox`,checked:e.createIfMissing??!1,onChange:e=>r(`createIfMissing`,e.target.checked),className:`size-4 accent-primary cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`connection.form.createIfMissingHint`)})]})})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.host`),htmlFor:`conn-host`,children:(0,U.jsx)(b,{id:`conn-host`,placeholder:e.dbms===`neon`?`ep-….aws.neon.tech`:e.dbms===`supabase`?`aws-0-….pooler.supabase.com`:`localhost`,value:e.host,onChange:e=>r(`host`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.port`),htmlFor:`conn-port`,children:(0,U.jsx)(b,{id:`conn-port`,type:`number`,value:e.port,onChange:t=>r(`port`,Number(t.target.value)||z.find(t=>t.id===e.dbms)?.defaultPort||3306)})}),v&&(0,U.jsx)(`p`,{className:`col-start-2 rounded-md border border-yellow-500/40 bg-yellow-500/10 px-2 py-1.5 text-xs leading-relaxed text-foreground`,children:n(`connection.form.supabasePoolerWarning`)}),(P(e.dbms)||e.dbms===`mssql`||e.dbms===`oracle`)&&(0,U.jsx)(K,{label:e.dbms===`oracle`?n(`connection.form.serviceName`):n(`connection.form.database`),htmlFor:`conn-database`,children:(0,U.jsx)(b,{id:`conn-database`,placeholder:_(e.dbms),value:e.database??``,onChange:e=>r(`database`,e.target.value.trim())})}),(0,U.jsx)(K,{label:n(`connection.form.user`),htmlFor:`conn-user`,children:(0,U.jsx)(b,{id:`conn-user`,placeholder:y(e.dbms),value:e.user,onChange:e=>r(`user`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.password`),htmlFor:`conn-pass`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(b,{id:`conn-pass`,type:`password`,value:e.pass,onChange:e=>r(`pass`,e.target.value)}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs whitespace-nowrap cursor-pointer`,title:n(`connection.form.savePasswordHint`),children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:e.savePassword??!0,onChange:e=>r(`savePassword`,e.target.checked)}),n(`connection.form.savePassword`)]})]})}),l&&(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.managedTlsHint`)}),!l&&e.dbms!==`oracle`&&(0,U.jsx)(K,{label:n(`connection.form.tls`),children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:e.ssl??!1,onChange:e=>r(`ssl`,e.target.checked),className:`size-4 accent-primary`}),n(`connection.form.tlsEnable`)]}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer ${e.ssl?``:`opacity-50`}`,title:n(`connection.form.tlsVerifyHint`),children:[(0,U.jsx)(`input`,{type:`checkbox`,disabled:!e.ssl,checked:e.sslVerify??!1,onChange:e=>r(`sslVerify`,e.target.checked),className:`size-4 accent-primary`}),n(`connection.form.tlsVerify`)]})]})}),!l&&(0,U.jsx)(K,{label:n(`connection.form.charset`),children:(0,U.jsxs)(j,{value:e.charset,onValueChange:e=>r(`charset`,e),children:[(0,U.jsx)(O,{className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsx)(k,{children:W.map(e=>(0,U.jsx)(A,{value:e,children:e},e))})]})})]}),!i&&!l&&!u&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{className:`mt-1 border-t pt-3 text-xs font-medium text-muted-foreground`,children:n(`connection.form.ssh`)}),(0,U.jsx)(K,{label:n(`connection.form.sshTunnel`),htmlFor:`conn-ssh`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-ssh`,type:`checkbox`,checked:p.enabled,onChange:e=>S({enabled:e.target.checked}),className:`size-4 accent-primary cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`connection.form.sshTunnelHint`)})]})}),p.enabled&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.sshHost`),htmlFor:`conn-ssh-host`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(b,{id:`conn-ssh-host`,placeholder:n(`connection.form.sshHostPlaceholder`),value:p.host,onChange:e=>S({host:e.target.value.trim()})}),(0,U.jsx)(b,{"aria-label":n(`connection.form.sshPort`),type:`number`,className:`w-24 shrink-0`,value:p.port,onChange:e=>S({port:Number(e.target.value)||22})})]})}),(0,U.jsx)(K,{label:n(`connection.form.sshUser`),htmlFor:`conn-ssh-user`,children:(0,U.jsx)(b,{id:`conn-ssh-user`,placeholder:n(`connection.form.sshUserPlaceholder`),value:p.user,onChange:e=>S({user:e.target.value.trim()})})}),(0,U.jsx)(K,{label:n(`connection.form.sshAuth`),children:(0,U.jsxs)(j,{value:p.auth,onValueChange:e=>S({auth:e}),children:[(0,U.jsx)(O,{className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsxs)(k,{children:[(0,U.jsx)(A,{value:`key`,children:n(`connection.form.sshAuthKey`)}),(0,U.jsx)(A,{value:`password`,children:n(`connection.form.sshAuthPassword`)}),(0,U.jsx)(A,{value:`agent`,children:n(`connection.form.sshAuthAgent`)})]})]})}),p.auth===`password`&&(0,U.jsx)(K,{label:n(`connection.form.sshPassword`),htmlFor:`conn-ssh-pass`,children:(0,U.jsx)(b,{id:`conn-ssh-pass`,type:`password`,value:p.password??``,onChange:e=>S({password:e.target.value})})}),p.auth===`key`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.sshKey`),htmlFor:`conn-ssh-key`,children:(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-ssh-key`,type:`file`,className:`hidden`,onChange:e=>{C(e.target.files?.[0]),e.target.value=``}}),(0,U.jsx)(E,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 shrink-0 px-2 text-xs`,onClick:()=>document.getElementById(`conn-ssh-key`)?.click(),children:p.privateKey?n(`connection.form.changeFile`):n(`connection.form.sshKeyPick`)}),(0,U.jsx)(`span`,{className:`min-w-0 truncate text-xs text-muted-foreground`,title:p.privateKeyName,children:p.privateKey?p.privateKeyName||n(`connection.form.sshKeyLoaded`):n(`connection.form.sshKeyHint`)})]})}),(0,U.jsx)(K,{label:n(`connection.form.sshPassphrase`),htmlFor:`conn-ssh-passphrase`,children:(0,U.jsx)(b,{id:`conn-ssh-passphrase`,type:`password`,placeholder:n(`connection.form.sshPassphrasePlaceholder`),value:p.passphrase??``,onChange:e=>S({passphrase:e.target.value})})})]}),p.auth===`agent`&&(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.sshAuthAgentHint`)}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.sshTargetHint`)}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.sshSecretsHint`)})]})]}),(0,U.jsx)(K,{label:n(`connection.form.autoConnection`),htmlFor:`conn-auto`,children:(0,U.jsx)(`div`,{className:`flex items-center`,children:(0,U.jsx)(`input`,{id:`conn-auto`,type:`checkbox`,checked:e.autoConnection,onChange:e=>r(`autoConnection`,e.target.checked),className:`size-4 accent-primary cursor-pointer`})})}),(0,U.jsx)(`div`,{className:`mt-1 border-t pt-3 text-xs font-medium text-muted-foreground`,children:n(`connection.form.safety`)}),(0,U.jsx)(K,{label:n(`connection.form.environment`),children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[o.map(t=>{let n=(e.environmentColor??`none`)===t.id;return(0,U.jsx)(`button`,{type:`button`,title:s(t.id),"aria-label":s(t.id),"aria-pressed":n,onClick:()=>r(`environmentColor`,t.id),className:`size-6 rounded-full border-2 transition-transform ${n?`scale-110 border-foreground`:`border-transparent hover:scale-105`}`,style:{background:t.id===`none`?`repeating-linear-gradient(45deg, transparent, transparent 3px, var(--muted-foreground) 3px, var(--muted-foreground) 4px)`:t.hex}},t.id)}),(0,U.jsx)(`span`,{className:`ml-1 text-xs text-muted-foreground`,children:n(`connection.form.environmentHint`)})]})}),(0,U.jsx)(K,{label:n(`connection.form.readOnly`),htmlFor:`conn-readonly`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-readonly`,type:`checkbox`,checked:e.readOnly??!1,onChange:e=>r(`readOnly`,e.target.checked),className:`size-4 accent-primary cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`connection.form.readOnlyHint`)})]})}),d?.transactions!==!1&&(0,U.jsx)(K,{label:n(`connection.form.transactions`),children:(0,U.jsxs)(j,{value:e.transactionMode??`auto`,onValueChange:e=>r(`transactionMode`,e),children:[(0,U.jsx)(O,{className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsxs)(k,{children:[(0,U.jsx)(A,{value:`auto`,children:n(`connection.form.txAuto`)}),(0,U.jsx)(A,{value:`manual`,children:n(`connection.form.txManual`)})]})]})})]})}function q(){let{t:e}=T(),{activeDialog:t,closeDialog:o,showMessage:s}=n(),[h,_]=(0,B.useState)(!1),{savedConnections:y,addSavedConnection:b,updateSavedConnection:w,deleteSavedConnection:D,openConnection:O}=M(),k=r(`connect`)?.profileId,[A,j]=(0,B.useState)(()=>k??null),[P,F]=(0,B.useState)(()=>{let e=k?y.find(e=>e.id===k):void 0;return e?{...e}:null}),L=t===`connect`,[z,V]=(0,B.useState)(null),[H,W]=(0,B.useState)(null),G=d(e=>e.url),K=d(e=>e.token);(0,B.useEffect)(()=>{if(!L)return;let e=!1;return(async()=>{try{let t=await te();if(e||t.state!==`online`||!t.gateway){e||V(null);return}let n=await se();e||(V({name:n.gateway,profiles:n.profiles}),W(null))}catch(t){e||W(t instanceof Error?t.message:String(t))}})(),()=>{e=!0}},[L,G,K]);function q(t){let r=y.find(e=>e.gatewayProfile===t.name);if(r){Y(r);return}let i=v(t);b(i),Y(i),n.getState().setFooterMessage(e(`connection.dialog.gatewayAdded`,{name:t.name}))}function J(e){e||(o(),j(null),F(null))}function Y(e){j(e.id),F({...e})}function me(e){F(e),w(e.id,e)}function he(){let e=l();b(e),j(e.id),F(e)}function ge(){A&&(D(A),j(null),F(null))}let[_e,X]=(0,B.useState)(!1),ve=ee(e=>e.addQueryTab);function Z(t){let n=M.getState().activeConnections.some(e=>e.id===t.id);if(O(t),n){re.getState().removeTree(t.id),o(),j(null),F(null);return}ve(t.id,{id:`tab-${Date.now()}`,title:e(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),o(),j(null),F(null)}async function ye(t){let r=await oe(t.id,{interactive:!0});if(!r)return;let i={...t,file:r.fileName,serverConnectionId:r.connectionId};w(t.id,{file:r.fileName}),Z(i),M.getState().setFileDetached(t.id,r.fileDetached),r.restoredUnsaved?n.getState().setFooterMessage(e(r.diskChanged?`connection.dialog.restoredUnsavedDiskChanged`:`connection.dialog.restoredUnsaved`,{file:r.fileName})):r.wal&&!r.walApplied?n.getState().setFooterMessage(e(`connection.dialog.walPending`,{file:r.fileName})):r.walApplied&&n.getState().setFooterMessage(e(`connection.dialog.walApplied`,{file:r.fileName}))}async function Q(t,r){try{return await r(t)}catch(i){let a=ne(i);if(!a||!(`ssh`in t)||!t.ssh||!await n.getState().requestDestructiveConfirm({title:e(`connection.dialog.hostKeyTitle`),description:e(`connection.dialog.hostKeyDescription`,a),confirmLabel:e(`connection.dialog.hostKeyAccept`)}))throw i;return r({...t,ssh:{...t.ssh,acceptHostKey:a.fingerprint}})}}async function $(){if(P){X(!0);try{if(I(P)===`browser`){await ye(P);return}let t=await Q(N(P),e=>ae(e,P.authToken||void 0));t.success?Z({...P,serverConnectionId:t.connectionId}):s({tone:`error`,title:e(`connection.dialog.connectFailedTitle`),description:t.message??e(`connection.dialog.unknownError`)})}catch(t){s({tone:`error`,title:e(`connection.dialog.connectFailedTitle`),description:t instanceof Error?t.message:String(t)})}finally{X(!1)}}}async function be(){if(P){if(I(P)===`browser`){s({tone:`info`,title:e(`connection.dialog.testConnection`),description:e(`connection.dialog.browserTestHint`)});return}_(!0);try{let t=await Q(N(P),e=>ie(e,P.authToken||void 0));t.success?s({tone:`success`,title:e(`connection.dialog.testSuccess`),description:e(`connection.dialog.testSuccessDescription`)}):s({tone:`error`,title:e(`connection.dialog.testFailedTitle`),description:t.message??e(`connection.dialog.unknownError`)})}catch(t){s({tone:`error`,title:e(`connection.dialog.testFailedTitle`),description:t instanceof Error?t.message:String(t)})}finally{_(!1)}}}return(0,U.jsx)(fe,{open:L,onOpenChange:J,children:(0,U.jsxs)(ue,{className:`sm:max-w-[1100px] h-[85vh] max-h-[85vh] flex flex-col`,children:[(0,U.jsx)(ce,{children:(0,U.jsx)(de,{children:e(`connection.dialog.title`)})}),(0,U.jsxs)(`p`,{className:`flex items-start gap-2 rounded-md border border-catppuccin-green/40 bg-catppuccin-green/10 px-3 py-2 text-xs leading-relaxed text-foreground`,children:[(0,U.jsx)(a,{className:`mt-0.5 size-4 shrink-0 text-catppuccin-green`,"aria-hidden":!0}),(0,U.jsx)(`span`,{children:e(`connection.dialog.privacy`)})]}),(0,U.jsxs)(`div`,{className:`flex flex-1 gap-4 overflow-hidden min-h-0`,children:[(0,U.jsxs)(`div`,{className:`w-[460px] shrink-0 border rounded-md overflow-hidden flex flex-col`,children:[(z||H)&&(0,U.jsxs)(`div`,{className:`border-b p-2 text-xs space-y-1 max-h-40 overflow-auto`,children:[(0,U.jsxs)(`p`,{className:`font-medium`,children:[e(`connection.dialog.gatewayTitle`),z?` — ${z.name}`:``]}),H&&(0,U.jsx)(`p`,{className:`text-destructive`,children:e(`connection.dialog.gatewayLoadFailed`,{error:H})}),z?.profiles.map(t=>(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5 truncate`,children:[(0,U.jsx)(f,{dbms:g[t.driver],className:`size-3.5`}),(0,U.jsx)(`span`,{className:`truncate`,children:t.name}),(0,U.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,t.readOnly?e(`connection.dialog.gatewayReadOnly`):e(`connection.dialog.gatewayWritable`),`)`]})]}),(0,U.jsx)(E,{size:`sm`,variant:`outline`,className:`h-6 px-2 text-xs`,onClick:()=>q(t),children:e(`connection.dialog.gatewayAdd`)})]},t.name))]}),(0,U.jsx)(m,{className:`h-full`,children:(0,U.jsxs)(C,{className:`table-fixed`,children:[(0,U.jsx)(i,{children:(0,U.jsxs)(x,{children:[(0,U.jsx)(c,{className:`w-[32%]`,children:e(`connection.dialog.colHostName`)}),(0,U.jsx)(c,{className:`w-[40%]`,children:e(`connection.dialog.colTarget`)}),(0,U.jsx)(c,{className:`w-[28%]`,children:e(`connection.dialog.colDbms`)})]})}),(0,U.jsx)(u,{children:y.length===0?(0,U.jsx)(x,{children:(0,U.jsx)(S,{colSpan:3,className:`text-center text-muted-foreground`,children:e(`connection.dialog.noSaved`)})}):y.map(t=>(0,U.jsxs)(x,{"data-state":A===t.id?`selected`:void 0,className:`cursor-pointer`,onClick:()=>Y(t),onDoubleClick:()=>{Y(t),$()},children:[(0,U.jsx)(S,{className:`truncate font-medium`,title:t.hostName,children:t.hostName||e(`connection.dialog.unnamed`)}),(0,U.jsx)(S,{className:`truncate`,title:t.dbms===`sqlite`?t.file:t.dbms===`d1`?t.databaseId:`${t.user}@${t.host}:${t.port}`,children:t.dbms===`sqlite`?t.file||(I(t)===`browser`?e(`connection.dialog.pickOnConnect`):e(`connection.dialog.noFile`)):t.dbms===`d1`?t.databaseId||`—`:`${t.user}@${t.host}:${t.port}`}),(0,U.jsx)(S,{className:`truncate`,title:R(t.dbms).label,children:(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(f,{dbms:t.dbms,className:`size-3.5`}),(0,U.jsx)(`span`,{className:`truncate`,children:R(t.dbms).label})]})})]},t.id))})]})})]}),(0,U.jsx)(`div`,{className:`flex-1 border rounded-md overflow-auto`,children:P?(0,U.jsxs)(U.Fragment,{children:[I(P)!==`browser`&&(0,U.jsx)(`div`,{className:`p-4 pb-0`,children:(0,U.jsx)(p,{})}),P.gatewayProfile?(0,U.jsxs)(`div`,{className:`p-4 space-y-2 text-sm`,children:[(0,U.jsxs)(`p`,{className:`font-medium flex items-center gap-2`,children:[(0,U.jsx)(f,{dbms:P.dbms,className:`size-4`}),P.hostName]}),(0,U.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connection.dialog.gatewayProfileHint`,{name:P.gatewayProfile})}),(0,U.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[P.readOnly?e(`connection.dialog.gatewayReadOnly`):e(`connection.dialog.gatewayWritable`),P.database?` · ${P.database}`:``]})]}):(0,U.jsx)(pe,{value:P,onChange:me})]}):(0,U.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:e(`connection.dialog.selectPrompt`)})})]}),(0,U.jsxs)(le,{className:`sm:justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(E,{variant:`outline`,onClick:he,children:e(`connection.dialog.addNew`)}),(0,U.jsx)(E,{variant:`destructive`,onClick:ge,disabled:!A,children:e(`connection.dialog.delete`)})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(E,{variant:`outline`,onClick:be,disabled:!P||h,children:e(`connection.dialog.testConnection`)}),(0,U.jsx)(E,{onClick:$,disabled:!P||_e,children:e(`connection.dialog.connect`)}),(0,U.jsx)(E,{variant:`outline`,onClick:()=>J(!1),children:e(`connection.dialog.close`)})]})]})]})})}export{q as ConnectDialog};
|
|
1
|
+
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{C as i,K as a,M as o,N as s,S as c,a as l,b as u,c as d,d as f,i as p,j as m,l as h,n as g,o as _,r as v,s as y,u as b,w as x,x as S,y as C}from"./main-B9Gu9otb.js";import{l as w,m as T,t as E}from"./button-BGQhw-yz.js";import{a as D,i as O,n as k,r as A,t as j}from"./select-UCsaLUTL.js";import{t as M}from"./connection-store-B9-4NAfR.js";import{n as ee}from"./query-store-fCiE0iiG.js";import{O as N,S as te,T as ne,b as re,j as P,k as F,l as I,m as ie,n as ae,s as L,t as oe,w as se}from"./database-7RkacLLF.js";import{n as R,t as z}from"./dbms-Bsjvyvsp.js";import{a as ce,i as le,n as ue,o as de,t as fe}from"./dialog-z_ZHxAMN.js";var B=e(t(),1),V=new Set([`postgres:`,`postgresql:`]);function H(e){let t=e.trim().replace(/^psql\s+(['"])?/,``).replace(/['"]$/,``);if(!/^postgres(ql)?:\/\//i.test(t))return null;let n;try{n=new URL(t)}catch{return null}if(!V.has(n.protocol.toLowerCase())||!n.hostname)return null;let r=e=>{try{return decodeURIComponent(e)}catch{return e}},i={host:n.hostname};n.port&&(i.port=Number(n.port)),n.username&&(i.user=r(n.username)),n.password&&(i.pass=r(n.password));let a=r(n.pathname.replace(/^\//,``));return a&&(i.database=a),i}var U=w(),W=[`utf8`,`utf8mb4`,`latin1`,`ascii`,`euckr`,`sjis`,`big5`],G={enabled:!1,host:``,port:22,user:``,auth:`key`};function K({label:e,htmlFor:t,children:n}){return(0,U.jsxs)(`div`,{className:`grid grid-cols-[120px_minmax(0,1fr)] items-center gap-2`,children:[(0,U.jsx)(h,{htmlFor:t,children:e}),n]})}function pe({value:e,onChange:t}){let{t:n}=T();function r(n,r){t({...e,[n]:r})}let i=e.dbms===`sqlite`,a=e.transport??`browser`,c=i&&a===`browser`,l=F.has(e.dbms),u=e.dbms===`d1`,d=z.find(t=>t.id===e.dbms)?.capabilities,p=e.ssh??G,[m,h]=(0,B.useState)(``),g=m.trim()===``?`empty`:H(m)?`applied`:`invalid`,v=e.dbms===`supabase`&&e.port===6543;function x(n){h(n);let r=H(n);r&&t({...e,host:r.host??e.host,port:r.port??z.find(t=>t.id===e.dbms)?.defaultPort??e.port,user:r.user??e.user,pass:r.pass??e.pass,database:r.database??e.database})}function S(n){t({...e,ssh:{...p,...n}})}async function C(e){e&&S({privateKey:await e.text(),privateKeyName:e.name})}return(0,U.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[(0,U.jsx)(K,{label:n(`connection.form.hostName`),htmlFor:`conn-hostName`,children:(0,U.jsx)(b,{id:`conn-hostName`,placeholder:n(`connection.form.hostNamePlaceholder`),value:e.hostName,onChange:e=>r(`hostName`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.dataSource`),children:(0,U.jsxs)(j,{value:e.dbms,onValueChange:n=>{let r=z.find(e=>e.id===n);if(!r)return;let i=r.id,a=F.has(i)||i===`d1`;h(``),t({...e,dbms:i,transactionMode:r.capabilities.transactions?e.transactionMode:`auto`,port:r.defaultPort??e.port,host:a&&e.host===`localhost`?``:!a&&e.host===``?`localhost`:e.host,user:a||l||u?y(i):e.user,database:e.database&&!a&&!l&&!u?e.database:_(i)??e.database})},children:[(0,U.jsx)(O,{id:`conn-dbms`,className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsx)(k,{children:z.map(e=>(0,U.jsx)(A,{value:e.id,children:(0,U.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(f,{dbms:e.id}),e.label]})},e.id))})]})}),l&&(0,U.jsx)(K,{label:n(`connection.form.connectionString`),htmlFor:`conn-uri`,children:(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(b,{id:`conn-uri`,type:`password`,autoComplete:`off`,spellCheck:!1,className:`font-mono text-xs`,placeholder:e.dbms===`neon`?`postgresql://neondb_owner:npg_…@ep-….neon.tech/neondb?sslmode=require`:`postgresql://postgres.[ref]:[password]@aws-0-….pooler.supabase.com:5432/postgres`,value:m,onChange:e=>x(e.target.value)}),(0,U.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed ${g===`invalid`?`text-destructive`:`text-muted-foreground`}`,children:n(g===`invalid`?`connection.form.connectionStringInvalid`:g===`applied`?`connection.form.connectionStringApplied`:e.dbms===`neon`?`connection.form.neonHint`:`connection.form.supabaseHint`)})]})}),i&&(0,U.jsxs)(K,{label:n(`connection.form.openVia`),children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`radio`,name:`transport`,value:`browser`,checked:a===`browser`,onChange:()=>r(`transport`,`browser`),className:`accent-primary`}),n(`connection.form.viaBrowser`)]}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-sm cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`radio`,name:`transport`,value:`tunnel`,checked:a===`tunnel`,onChange:()=>r(`transport`,`tunnel`),className:`accent-primary`}),n(`connection.form.viaAgent`)]})]}),(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(a===`browser`?`connection.form.viaBrowserHint`:`connection.form.viaAgentHint`)})]}),c?(0,U.jsx)(K,{label:n(`connection.form.databaseFile`),children:(0,U.jsxs)(`div`,{className:`min-w-0 text-xs text-muted-foreground leading-relaxed`,children:[e.file?(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,U.jsx)(`span`,{className:`min-w-0 break-all text-foreground`,title:e.file,children:e.file}),(0,U.jsx)(E,{type:`button`,variant:`outline`,size:`sm`,className:`h-6 shrink-0 px-2 text-xs`,onClick:()=>{L(e.id),r(`file`,``)},children:n(`connection.form.changeFile`)})]}):(0,U.jsx)(`p`,{children:n(`connection.form.filePickerHint`)}),(0,U.jsx)(`p`,{className:`mt-1`,children:n(`connection.form.fileRememberedHint`)})]})}):null,!c&&(0,U.jsx)(K,{label:n(`connection.form.authToken`),htmlFor:`conn-authToken`,children:(0,U.jsx)(b,{id:`conn-authToken`,type:`password`,placeholder:n(`connection.form.authTokenPlaceholder`),value:e.authToken,onChange:e=>r(`authToken`,e.target.value.trim())})}),c?null:u?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.d1AccountId`),htmlFor:`conn-d1-account`,children:(0,U.jsx)(b,{id:`conn-d1-account`,className:`font-mono text-xs`,spellCheck:!1,placeholder:`023e105f4ecef8ad9ca31a8372d0c353`,value:e.accountId??``,onChange:e=>r(`accountId`,e.target.value.trim())})}),(0,U.jsx)(K,{label:n(`connection.form.d1DatabaseId`),htmlFor:`conn-d1-database`,children:(0,U.jsx)(b,{id:`conn-d1-database`,className:`font-mono text-xs`,spellCheck:!1,placeholder:`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`,value:e.databaseId??``,onChange:e=>r(`databaseId`,e.target.value.trim())})}),(0,U.jsx)(K,{label:n(`connection.form.d1ApiToken`),htmlFor:`conn-pass`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(b,{id:`conn-pass`,type:`password`,value:e.pass,onChange:e=>r(`pass`,e.target.value.trim())}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs whitespace-nowrap cursor-pointer`,title:n(`connection.form.savePasswordHint`),children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:e.savePassword??!0,onChange:e=>r(`savePassword`,e.target.checked)}),n(`connection.form.savePassword`)]})]})}),(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.d1Hint`)}),(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.d1LimitsHint`)})]}):i?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.databaseFile`),htmlFor:`conn-file`,children:(0,U.jsx)(b,{id:`conn-file`,placeholder:n(`connection.form.filePathPlaceholder`),value:e.file??``,onChange:e=>r(`file`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.createIfMissing`),htmlFor:`conn-create`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-create`,type:`checkbox`,checked:e.createIfMissing??!1,onChange:e=>r(`createIfMissing`,e.target.checked),className:`size-4 accent-primary cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`connection.form.createIfMissingHint`)})]})})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.host`),htmlFor:`conn-host`,children:(0,U.jsx)(b,{id:`conn-host`,placeholder:e.dbms===`neon`?`ep-….aws.neon.tech`:e.dbms===`supabase`?`aws-0-….pooler.supabase.com`:`localhost`,value:e.host,onChange:e=>r(`host`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.port`),htmlFor:`conn-port`,children:(0,U.jsx)(b,{id:`conn-port`,type:`number`,value:e.port,onChange:t=>r(`port`,Number(t.target.value)||z.find(t=>t.id===e.dbms)?.defaultPort||3306)})}),v&&(0,U.jsx)(`p`,{className:`col-start-2 rounded-md border border-yellow-500/40 bg-yellow-500/10 px-2 py-1.5 text-xs leading-relaxed text-foreground`,children:n(`connection.form.supabasePoolerWarning`)}),(P(e.dbms)||e.dbms===`mssql`||e.dbms===`oracle`)&&(0,U.jsx)(K,{label:e.dbms===`oracle`?n(`connection.form.serviceName`):n(`connection.form.database`),htmlFor:`conn-database`,children:(0,U.jsx)(b,{id:`conn-database`,placeholder:_(e.dbms),value:e.database??``,onChange:e=>r(`database`,e.target.value.trim())})}),(0,U.jsx)(K,{label:n(`connection.form.user`),htmlFor:`conn-user`,children:(0,U.jsx)(b,{id:`conn-user`,placeholder:y(e.dbms),value:e.user,onChange:e=>r(`user`,e.target.value)})}),(0,U.jsx)(K,{label:n(`connection.form.password`),htmlFor:`conn-pass`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(b,{id:`conn-pass`,type:`password`,value:e.pass,onChange:e=>r(`pass`,e.target.value)}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs whitespace-nowrap cursor-pointer`,title:n(`connection.form.savePasswordHint`),children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:e.savePassword??!0,onChange:e=>r(`savePassword`,e.target.checked)}),n(`connection.form.savePassword`)]})]})}),l&&(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.managedTlsHint`)}),!l&&e.dbms!==`oracle`&&(0,U.jsx)(K,{label:n(`connection.form.tls`),children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:e.ssl??!1,onChange:e=>r(`ssl`,e.target.checked),className:`size-4 accent-primary`}),n(`connection.form.tlsEnable`)]}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer ${e.ssl?``:`opacity-50`}`,title:n(`connection.form.tlsVerifyHint`),children:[(0,U.jsx)(`input`,{type:`checkbox`,disabled:!e.ssl,checked:e.sslVerify??!1,onChange:e=>r(`sslVerify`,e.target.checked),className:`size-4 accent-primary`}),n(`connection.form.tlsVerify`)]})]})}),!l&&(0,U.jsx)(K,{label:n(`connection.form.charset`),children:(0,U.jsxs)(j,{value:e.charset,onValueChange:e=>r(`charset`,e),children:[(0,U.jsx)(O,{className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsx)(k,{children:W.map(e=>(0,U.jsx)(A,{value:e,children:e},e))})]})})]}),!i&&!l&&!u&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{className:`mt-1 border-t pt-3 text-xs font-medium text-muted-foreground`,children:n(`connection.form.ssh`)}),(0,U.jsx)(K,{label:n(`connection.form.sshTunnel`),htmlFor:`conn-ssh`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-ssh`,type:`checkbox`,checked:p.enabled,onChange:e=>S({enabled:e.target.checked}),className:`size-4 accent-primary cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`connection.form.sshTunnelHint`)})]})}),p.enabled&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.sshHost`),htmlFor:`conn-ssh-host`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(b,{id:`conn-ssh-host`,placeholder:n(`connection.form.sshHostPlaceholder`),value:p.host,onChange:e=>S({host:e.target.value.trim()})}),(0,U.jsx)(b,{"aria-label":n(`connection.form.sshPort`),type:`number`,className:`w-24 shrink-0`,value:p.port,onChange:e=>S({port:Number(e.target.value)||22})})]})}),(0,U.jsx)(K,{label:n(`connection.form.sshUser`),htmlFor:`conn-ssh-user`,children:(0,U.jsx)(b,{id:`conn-ssh-user`,placeholder:n(`connection.form.sshUserPlaceholder`),value:p.user,onChange:e=>S({user:e.target.value.trim()})})}),(0,U.jsx)(K,{label:n(`connection.form.sshAuth`),children:(0,U.jsxs)(j,{value:p.auth,onValueChange:e=>S({auth:e}),children:[(0,U.jsx)(O,{className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsxs)(k,{children:[(0,U.jsx)(A,{value:`key`,children:n(`connection.form.sshAuthKey`)}),(0,U.jsx)(A,{value:`password`,children:n(`connection.form.sshAuthPassword`)}),(0,U.jsx)(A,{value:`agent`,children:n(`connection.form.sshAuthAgent`)})]})]})}),p.auth===`password`&&(0,U.jsx)(K,{label:n(`connection.form.sshPassword`),htmlFor:`conn-ssh-pass`,children:(0,U.jsx)(b,{id:`conn-ssh-pass`,type:`password`,value:p.password??``,onChange:e=>S({password:e.target.value})})}),p.auth===`key`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:n(`connection.form.sshKey`),htmlFor:`conn-ssh-key`,children:(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-ssh-key`,type:`file`,className:`hidden`,onChange:e=>{C(e.target.files?.[0]),e.target.value=``}}),(0,U.jsx)(E,{type:`button`,variant:`outline`,size:`sm`,className:`h-7 shrink-0 px-2 text-xs`,onClick:()=>document.getElementById(`conn-ssh-key`)?.click(),children:p.privateKey?n(`connection.form.changeFile`):n(`connection.form.sshKeyPick`)}),(0,U.jsx)(`span`,{className:`min-w-0 truncate text-xs text-muted-foreground`,title:p.privateKeyName,children:p.privateKey?p.privateKeyName||n(`connection.form.sshKeyLoaded`):n(`connection.form.sshKeyHint`)})]})}),(0,U.jsx)(K,{label:n(`connection.form.sshPassphrase`),htmlFor:`conn-ssh-passphrase`,children:(0,U.jsx)(b,{id:`conn-ssh-passphrase`,type:`password`,placeholder:n(`connection.form.sshPassphrasePlaceholder`),value:p.passphrase??``,onChange:e=>S({passphrase:e.target.value})})})]}),p.auth===`agent`&&(0,U.jsx)(`p`,{className:`col-start-2 text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.sshAuthAgentHint`)}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.sshTargetHint`)}),(0,U.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed`,children:n(`connection.form.sshSecretsHint`)})]})]}),(0,U.jsx)(K,{label:n(`connection.form.autoConnection`),htmlFor:`conn-auto`,children:(0,U.jsx)(`div`,{className:`flex items-center`,children:(0,U.jsx)(`input`,{id:`conn-auto`,type:`checkbox`,checked:e.autoConnection,onChange:e=>r(`autoConnection`,e.target.checked),className:`size-4 accent-primary cursor-pointer`})})}),(0,U.jsx)(`div`,{className:`mt-1 border-t pt-3 text-xs font-medium text-muted-foreground`,children:n(`connection.form.safety`)}),(0,U.jsx)(K,{label:n(`connection.form.environment`),children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[o.map(t=>{let n=(e.environmentColor??`none`)===t.id;return(0,U.jsx)(`button`,{type:`button`,title:s(t.id),"aria-label":s(t.id),"aria-pressed":n,onClick:()=>r(`environmentColor`,t.id),className:`size-6 rounded-full border-2 transition-transform ${n?`scale-110 border-foreground`:`border-transparent hover:scale-105`}`,style:{background:t.id===`none`?`repeating-linear-gradient(45deg, transparent, transparent 3px, var(--muted-foreground) 3px, var(--muted-foreground) 4px)`:t.hex}},t.id)}),(0,U.jsx)(`span`,{className:`ml-1 text-xs text-muted-foreground`,children:n(`connection.form.environmentHint`)})]})}),(0,U.jsx)(K,{label:n(`connection.form.readOnly`),htmlFor:`conn-readonly`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{id:`conn-readonly`,type:`checkbox`,checked:e.readOnly??!1,onChange:e=>r(`readOnly`,e.target.checked),className:`size-4 accent-primary cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`connection.form.readOnlyHint`)})]})}),d?.transactions!==!1&&(0,U.jsx)(K,{label:n(`connection.form.transactions`),children:(0,U.jsxs)(j,{value:e.transactionMode??`auto`,onValueChange:e=>r(`transactionMode`,e),children:[(0,U.jsx)(O,{className:`w-full`,children:(0,U.jsx)(D,{})}),(0,U.jsxs)(k,{children:[(0,U.jsx)(A,{value:`auto`,children:n(`connection.form.txAuto`)}),(0,U.jsx)(A,{value:`manual`,children:n(`connection.form.txManual`)})]})]})})]})}function q(){let{t:e}=T(),{activeDialog:t,closeDialog:o,showMessage:s}=n(),[h,_]=(0,B.useState)(!1),{savedConnections:y,addSavedConnection:b,updateSavedConnection:w,deleteSavedConnection:D,openConnection:O}=M(),k=r(`connect`)?.profileId,[A,j]=(0,B.useState)(()=>k??null),[P,F]=(0,B.useState)(()=>{let e=k?y.find(e=>e.id===k):void 0;return e?{...e}:null}),L=t===`connect`,[z,V]=(0,B.useState)(null),[H,W]=(0,B.useState)(null),G=d(e=>e.url),K=d(e=>e.token);(0,B.useEffect)(()=>{if(!L)return;let e=!1;return(async()=>{try{let t=await te();if(e||t.state!==`online`||!t.gateway){e||V(null);return}let n=await se();e||(V({name:n.gateway,profiles:n.profiles}),W(null))}catch(t){e||W(t instanceof Error?t.message:String(t))}})(),()=>{e=!0}},[L,G,K]);function q(t){let r=y.find(e=>e.gatewayProfile===t.name);if(r){Y(r);return}let i=v(t);b(i),Y(i),n.getState().setFooterMessage(e(`connection.dialog.gatewayAdded`,{name:t.name}))}function J(e){e||(o(),j(null),F(null))}function Y(e){j(e.id),F({...e})}function me(e){F(e),w(e.id,e)}function he(){let e=l();b(e),j(e.id),F(e)}function ge(){A&&(D(A),j(null),F(null))}let[_e,X]=(0,B.useState)(!1),ve=ee(e=>e.addQueryTab);function Z(t){let n=M.getState().activeConnections.some(e=>e.id===t.id);if(O(t),n){re.getState().removeTree(t.id),o(),j(null),F(null);return}ve(t.id,{id:`tab-${Date.now()}`,title:e(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),o(),j(null),F(null)}async function ye(t){let r=await oe(t.id,{interactive:!0});if(!r)return;let i={...t,file:r.fileName,serverConnectionId:r.connectionId};w(t.id,{file:r.fileName}),Z(i),M.getState().setFileDetached(t.id,r.fileDetached),r.restoredUnsaved?n.getState().setFooterMessage(e(r.diskChanged?`connection.dialog.restoredUnsavedDiskChanged`:`connection.dialog.restoredUnsaved`,{file:r.fileName})):r.wal&&!r.walApplied?n.getState().setFooterMessage(e(`connection.dialog.walPending`,{file:r.fileName})):r.walApplied&&n.getState().setFooterMessage(e(`connection.dialog.walApplied`,{file:r.fileName}))}async function Q(t,r){try{return await r(t)}catch(i){let a=ne(i);if(!a||!(`ssh`in t)||!t.ssh||!await n.getState().requestDestructiveConfirm({title:e(`connection.dialog.hostKeyTitle`),description:e(`connection.dialog.hostKeyDescription`,a),confirmLabel:e(`connection.dialog.hostKeyAccept`)}))throw i;return r({...t,ssh:{...t.ssh,acceptHostKey:a.fingerprint}})}}async function $(){if(P){X(!0);try{if(I(P)===`browser`){await ye(P);return}let t=await Q(N(P),e=>ae(e,P.authToken||void 0));t.success?Z({...P,serverConnectionId:t.connectionId}):s({tone:`error`,title:e(`connection.dialog.connectFailedTitle`),description:t.message??e(`connection.dialog.unknownError`)})}catch(t){s({tone:`error`,title:e(`connection.dialog.connectFailedTitle`),description:t instanceof Error?t.message:String(t)})}finally{X(!1)}}}async function be(){if(P){if(I(P)===`browser`){s({tone:`info`,title:e(`connection.dialog.testConnection`),description:e(`connection.dialog.browserTestHint`)});return}_(!0);try{let t=await Q(N(P),e=>ie(e,P.authToken||void 0));t.success?s({tone:`success`,title:e(`connection.dialog.testSuccess`),description:e(`connection.dialog.testSuccessDescription`)}):s({tone:`error`,title:e(`connection.dialog.testFailedTitle`),description:t.message??e(`connection.dialog.unknownError`)})}catch(t){s({tone:`error`,title:e(`connection.dialog.testFailedTitle`),description:t instanceof Error?t.message:String(t)})}finally{_(!1)}}}return(0,U.jsx)(fe,{open:L,onOpenChange:J,children:(0,U.jsxs)(ue,{className:`sm:max-w-[1100px] h-[85vh] max-h-[85vh] flex flex-col`,children:[(0,U.jsx)(ce,{children:(0,U.jsx)(de,{children:e(`connection.dialog.title`)})}),(0,U.jsxs)(`p`,{className:`flex items-start gap-2 rounded-md border border-catppuccin-green/40 bg-catppuccin-green/10 px-3 py-2 text-xs leading-relaxed text-foreground`,children:[(0,U.jsx)(a,{className:`mt-0.5 size-4 shrink-0 text-catppuccin-green`,"aria-hidden":!0}),(0,U.jsx)(`span`,{children:e(`connection.dialog.privacy`)})]}),(0,U.jsxs)(`div`,{className:`flex flex-1 gap-4 overflow-hidden min-h-0`,children:[(0,U.jsxs)(`div`,{className:`w-[460px] shrink-0 border rounded-md overflow-hidden flex flex-col`,children:[(z||H)&&(0,U.jsxs)(`div`,{className:`border-b p-2 text-xs space-y-1 max-h-40 overflow-auto`,children:[(0,U.jsxs)(`p`,{className:`font-medium`,children:[e(`connection.dialog.gatewayTitle`),z?` — ${z.name}`:``]}),H&&(0,U.jsx)(`p`,{className:`text-destructive`,children:e(`connection.dialog.gatewayLoadFailed`,{error:H})}),z?.profiles.map(t=>(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5 truncate`,children:[(0,U.jsx)(f,{dbms:g[t.driver],className:`size-3.5`}),(0,U.jsx)(`span`,{className:`truncate`,children:t.name}),(0,U.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,t.readOnly?e(`connection.dialog.gatewayReadOnly`):e(`connection.dialog.gatewayWritable`),`)`]})]}),(0,U.jsx)(E,{size:`sm`,variant:`outline`,className:`h-6 px-2 text-xs`,onClick:()=>q(t),children:e(`connection.dialog.gatewayAdd`)})]},t.name))]}),(0,U.jsx)(m,{className:`h-full`,children:(0,U.jsxs)(C,{className:`table-fixed`,children:[(0,U.jsx)(i,{children:(0,U.jsxs)(x,{children:[(0,U.jsx)(c,{className:`w-[32%]`,children:e(`connection.dialog.colHostName`)}),(0,U.jsx)(c,{className:`w-[40%]`,children:e(`connection.dialog.colTarget`)}),(0,U.jsx)(c,{className:`w-[28%]`,children:e(`connection.dialog.colDbms`)})]})}),(0,U.jsx)(u,{children:y.length===0?(0,U.jsx)(x,{children:(0,U.jsx)(S,{colSpan:3,className:`text-center text-muted-foreground`,children:e(`connection.dialog.noSaved`)})}):y.map(t=>(0,U.jsxs)(x,{"data-state":A===t.id?`selected`:void 0,className:`cursor-pointer`,onClick:()=>Y(t),onDoubleClick:()=>{Y(t),$()},children:[(0,U.jsx)(S,{className:`truncate font-medium`,title:t.hostName,children:t.hostName||e(`connection.dialog.unnamed`)}),(0,U.jsx)(S,{className:`truncate`,title:t.dbms===`sqlite`?t.file:t.dbms===`d1`?t.databaseId:`${t.user}@${t.host}:${t.port}`,children:t.dbms===`sqlite`?t.file||(I(t)===`browser`?e(`connection.dialog.pickOnConnect`):e(`connection.dialog.noFile`)):t.dbms===`d1`?t.databaseId||`—`:`${t.user}@${t.host}:${t.port}`}),(0,U.jsx)(S,{className:`truncate`,title:R(t.dbms).label,children:(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(f,{dbms:t.dbms,className:`size-3.5`}),(0,U.jsx)(`span`,{className:`truncate`,children:R(t.dbms).label})]})})]},t.id))})]})})]}),(0,U.jsx)(`div`,{className:`flex-1 border rounded-md overflow-auto`,children:P?(0,U.jsxs)(U.Fragment,{children:[I(P)!==`browser`&&(0,U.jsx)(`div`,{className:`p-4 pb-0`,children:(0,U.jsx)(p,{})}),P.gatewayProfile?(0,U.jsxs)(`div`,{className:`p-4 space-y-2 text-sm`,children:[(0,U.jsxs)(`p`,{className:`font-medium flex items-center gap-2`,children:[(0,U.jsx)(f,{dbms:P.dbms,className:`size-4`}),P.hostName]}),(0,U.jsx)(`p`,{className:`text-muted-foreground`,children:e(`connection.dialog.gatewayProfileHint`,{name:P.gatewayProfile})}),(0,U.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[P.readOnly?e(`connection.dialog.gatewayReadOnly`):e(`connection.dialog.gatewayWritable`),P.database?` · ${P.database}`:``]})]}):(0,U.jsx)(pe,{value:P,onChange:me})]}):(0,U.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:e(`connection.dialog.selectPrompt`)})})]}),(0,U.jsxs)(le,{className:`sm:justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(E,{variant:`outline`,onClick:he,children:e(`connection.dialog.addNew`)}),(0,U.jsx)(E,{variant:`destructive`,onClick:ge,disabled:!A,children:e(`connection.dialog.delete`)})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(E,{variant:`outline`,onClick:be,disabled:!P||h,children:e(`connection.dialog.testConnection`)}),(0,U.jsx)(E,{onClick:$,disabled:!P||_e,children:e(`connection.dialog.connect`)}),(0,U.jsx)(E,{variant:`outline`,onClick:()=>J(!1),children:e(`connection.dialog.close`)})]})]})]})})}export{q as ConnectDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{l as i,u as a}from"./main-
|
|
1
|
+
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{l as i,u as a}from"./main-B9Gu9otb.js";import{l as o,m as s,t as c}from"./button-BGQhw-yz.js";import{a as l,i as u,n as d,o as f,t as p}from"./dialog-z_ZHxAMN.js";var m=e(t(),1),h=o();function g(){let{t:e}=s(),{activeDialog:t,closeDialog:o}=n(),g=r(`copy-database`),_=t===`copy-database`,v=g?.database??``,[y,b]=(0,m.useState)(``),[x,S]=(0,m.useState)(`structure_data`);function C(e){e||(o(),b(``),S(`structure_data`))}function w(){o()}return(0,h.jsx)(p,{open:_,onOpenChange:C,children:(0,h.jsxs)(d,{className:`sm:max-w-[450px]`,children:[(0,h.jsx)(l,{children:(0,h.jsx)(f,{children:e(`database.copy.title`)})}),(0,h.jsxs)(`div`,{className:`space-y-4`,children:[(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(i,{children:e(`database.copy.source`)}),(0,h.jsx)(a,{value:v,disabled:!0})]}),(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(i,{htmlFor:`target-db-name`,children:e(`database.copy.target`)}),(0,h.jsx)(a,{id:`target-db-name`,value:y,onChange:e=>b(e.target.value),placeholder:e(`database.copy.targetPlaceholder`)})]}),(0,h.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,h.jsx)(i,{children:e(`database.copy.options`)}),(0,h.jsxs)(`div`,{className:`space-y-2`,children:[(0,h.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,h.jsx)(`input`,{type:`radio`,name:`copy-option`,value:`structure_data`,checked:x===`structure_data`,onChange:()=>S(`structure_data`)}),e(`database.copy.structureAndData`)]}),(0,h.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,h.jsx)(`input`,{type:`radio`,name:`copy-option`,value:`structure_only`,checked:x===`structure_only`,onChange:()=>S(`structure_only`)}),e(`database.copy.structureOnly`)]})]})]})]}),(0,h.jsxs)(u,{children:[(0,h.jsx)(c,{variant:`outline`,onClick:()=>C(!1),children:e(`database.copy.cancel`)}),(0,h.jsx)(c,{onClick:w,disabled:!y.trim(),children:e(`database.copy.copy`)})]})]})})}export{g as CopyDatabaseDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{P as i,l as a,u as o}from"./main-
|
|
1
|
+
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{P as i,l as a,u as o}from"./main-B9Gu9otb.js";import{l as s,m as ee,t as c}from"./button-BGQhw-yz.js";import{a as l,i as u,n as d,r as f,t as p}from"./select-UCsaLUTL.js";import{t as te}from"./connection-store-B9-4NAfR.js";import{r as m}from"./database-7RkacLLF.js";import{t as ne}from"./query-execution-DSSJw-rD.js";import{n as h}from"./engine-DRzYxvTs.js";import{n as re,t as ie}from"./table-copy-DEPZiyTM.js";import{a as ae,i as oe,n as g,o as se,t as ce}from"./dialog-z_ZHxAMN.js";var _=e(t(),1),v=s(),y=e=>e instanceof Error?e.message:String(e),b=e=>e.hostName||e.host||e.file||e.id,le=`w-full rounded border bg-background px-2 py-1 text-xs font-mono outline-none focus:ring-1 focus:ring-primary disabled:opacity-50 min-h-[160px] resize-y`;function x(){let{t:e}=ee(),t=n(e=>e.activeDialog),s=n(e=>e.closeDialog),x=n(e=>e.showMessage),S=r(`copy-table`),C=te(e=>e.activeConnections),w=t===`copy-table`,T=S?.connectionId??``,E=String(S?.metadata?.database??``),D=S?.nodeText??``,O=C.find(e=>e.id===T),ue=C.filter(e=>e.serverConnectionId),[k,de]=(0,_.useState)(T),[A,j]=(0,_.useState)([]),[M,N]=(0,_.useState)(``),[P,F]=(0,_.useState)(D),[I,L]=(0,_.useState)(`structure_data`),[R,z]=(0,_.useState)(`abort`),[B,V]=(0,_.useState)(``),[H,U]=(0,_.useState)(null),[W,G]=(0,_.useState)(null),[K,q]=(0,_.useState)(null),[J,Y]=(0,_.useState)(!1),X=(0,_.useRef)(null),Z=C.find(e=>e.id===k),Q=Z?h(k):null,fe=!!O&&!!Z&&h(T).id===Q?.id;(0,_.useEffect)(()=>{if(!w||!Z?.serverConnectionId)return;let e=!1,t=h(k),n=m(Z.serverConnectionId);return(async()=>{j([]);try{let r=await t.introspect.listDatabases(n);if(e)return;j(r);let i=k===T,a=i||r.includes(E)?E:r[0]??``;N(a),F(e=>i&&a===E&&e===D?`${D}_copy`:e)}catch(t){e||q(y(t))}})(),()=>{e=!0}},[w,k]),(0,_.useEffect)(()=>{if(!w||!Z||!M||!P.trim()||!O)return;let e=!1;return(async()=>{U(null);try{let t=await ie({connectionId:T,database:E,table:D},{connectionId:k,database:M,table:P.trim()});e||V(h(k).ddl.createTable(t))}catch(t){e||U(y(t))}})(),()=>{e=!0}},[w,k,M,P]);function $(e){if(!e){if(J){X.current?.abort();return}s()}}async function pe(){if(!M||!P.trim()||!B.trim())return;Y(!0),q(null),G({phase:`create`,copied:0,total:null});let t=new AbortController;X.current=t;try{let n=await re({source:{connectionId:T,database:E,table:D},target:{connectionId:k,database:M,table:P.trim()},mode:I,onConflict:R,createSql:B},G,t.signal);s(),await x({title:e(`table.copy.doneTitle`),description:I===`structure_data`?e(`table.copy.doneRows`,{count:n.rows,table:P.trim()}):e(`table.copy.doneStructure`,{table:P.trim()}),tone:`success`})}catch(e){e instanceof ne||q(y(e)),G(null)}finally{Y(!1),X.current=null}}let me=W?.phase===`copy`&&W.total?Math.min(100,Math.round(W.copied/W.total*100)):null,he=W?W.phase===`create`?e(`table.copy.progressCreate`):W.phase===`count`?e(`table.copy.progressCount`):W.phase===`copy`?e(`table.copy.progressRows`,{copied:W.copied,total:W.total??`?`}):e(`table.copy.progressDone`):``;return(0,v.jsx)(ce,{open:w,onOpenChange:$,children:(0,v.jsxs)(g,{className:`sm:max-w-[640px]`,children:[(0,v.jsx)(ae,{children:(0,v.jsx)(se,{children:e(`table.copy.title`)})}),(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{children:e(`table.copy.source`)}),(0,v.jsx)(o,{value:O?`${b(O)} / ${E} / ${D}`:``,disabled:!0})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{htmlFor:`copy-target-conn`,children:e(`table.copy.targetConnection`)}),(0,v.jsxs)(p,{value:k,onValueChange:de,disabled:J,children:[(0,v.jsx)(u,{id:`copy-target-conn`,className:`w-full`,children:(0,v.jsx)(l,{})}),(0,v.jsx)(d,{children:ue.map(t=>(0,v.jsxs)(f,{value:t.id,children:[b(t),t.readOnly?` (${e(`table.copy.readOnly`)})`:``]},t.id))})]})]}),(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{htmlFor:`copy-target-db`,children:e(`table.copy.targetDatabase`)}),(0,v.jsxs)(p,{value:M,onValueChange:N,disabled:J||A.length===0,children:[(0,v.jsx)(u,{id:`copy-target-db`,className:`w-full`,children:(0,v.jsx)(l,{placeholder:e(`table.copy.loading`)})}),(0,v.jsx)(d,{children:A.map(e=>(0,v.jsx)(f,{value:e,children:e},e))})]})]})]}),(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{htmlFor:`copy-target-table`,children:e(`table.copy.targetTable`)}),(0,v.jsx)(o,{id:`copy-target-table`,value:P,onChange:e=>F(e.target.value),disabled:J,spellCheck:!1})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{children:e(`table.copy.what`)}),(0,v.jsxs)(`div`,{className:`space-y-1`,children:[(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,v.jsx)(`input`,{type:`radio`,name:`copy-mode`,checked:I===`structure_data`,onChange:()=>L(`structure_data`),disabled:J}),e(`table.copy.structureAndData`)]}),(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,v.jsx)(`input`,{type:`radio`,name:`copy-mode`,checked:I===`structure_only`,onChange:()=>L(`structure_only`),disabled:J}),e(`table.copy.structureOnly`)]})]})]}),(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{children:e(`table.copy.ifExists`)}),(0,v.jsxs)(`div`,{className:`space-y-1`,children:[(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,v.jsx)(`input`,{type:`radio`,name:`copy-conflict`,checked:R===`abort`,onChange:()=>z(`abort`),disabled:J}),e(`table.copy.abort`)]}),(0,v.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer text-destructive`,children:[(0,v.jsx)(`input`,{type:`radio`,name:`copy-conflict`,checked:R===`drop`,onChange:()=>z(`drop`),disabled:J}),e(`table.copy.dropAndRecreate`)]})]})]})]}),(0,v.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,v.jsx)(a,{htmlFor:`copy-ddl`,children:e(`table.copy.preview`)}),!fe&&Q&&(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`table.copy.crossEngineHint`,{engine:Q.label})}),(0,v.jsx)(`textarea`,{id:`copy-ddl`,className:le,value:B,onChange:e=>V(e.target.value),disabled:J,spellCheck:!1}),H&&(0,v.jsx)(`p`,{className:`text-xs text-destructive`,children:H})]}),W&&(0,v.jsxs)(`div`,{className:`space-y-1`,children:[(0,v.jsx)(i,{value:me??(W.phase===`done`?100:0)}),(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:he})]}),K&&(0,v.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:K})]}),(0,v.jsxs)(oe,{children:[(0,v.jsx)(c,{variant:`outline`,onClick:()=>$(!1),children:e(J?`table.copy.stop`:`table.copy.cancel`)}),(0,v.jsx)(c,{onClick:()=>{pe()},disabled:J||!M||!P.trim()||!B.trim()||!!H,children:e(`table.copy.copy`)})]})]})})}export{x as CopyTableDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{l as r,u as i}from"./main-
|
|
1
|
+
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{l as r,u as i}from"./main-B9Gu9otb.js";import{l as a,m as o,t as s}from"./button-BGQhw-yz.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-UCsaLUTL.js";import{a as p,i as m,n as h,o as g,t as _}from"./dialog-z_ZHxAMN.js";var v=e(t(),1),y=a(),b=[`utf8mb4`,`utf8`,`latin1`,`ascii`,`binary`,`cp1251`,`euckr`,`gb2312`,`gbk`,`sjis`,`ucs2`,`utf16`,`utf32`],x={utf8mb4:[`utf8mb4_general_ci`,`utf8mb4_unicode_ci`,`utf8mb4_bin`,`utf8mb4_0900_ai_ci`],utf8:[`utf8_general_ci`,`utf8_unicode_ci`,`utf8_bin`],latin1:[`latin1_swedish_ci`,`latin1_general_ci`,`latin1_bin`],ascii:[`ascii_general_ci`,`ascii_bin`],binary:[`binary`],cp1251:[`cp1251_general_ci`,`cp1251_bin`],euckr:[`euckr_korean_ci`,`euckr_bin`],gb2312:[`gb2312_chinese_ci`,`gb2312_bin`],gbk:[`gbk_chinese_ci`,`gbk_bin`],sjis:[`sjis_japanese_ci`,`sjis_bin`],ucs2:[`ucs2_general_ci`,`ucs2_unicode_ci`,`ucs2_bin`],utf16:[`utf16_general_ci`,`utf16_unicode_ci`,`utf16_bin`],utf32:[`utf32_general_ci`,`utf32_unicode_ci`,`utf32_bin`]};function S(){let{t:e}=o(),{activeDialog:t,closeDialog:a}=n(),S=t===`create-database`,[C,w]=(0,v.useState)(``),[T,E]=(0,v.useState)(`utf8mb4`),[D,O]=(0,v.useState)(`utf8mb4_general_ci`);function k(e){e||(a(),w(``),E(`utf8mb4`),O(`utf8mb4_general_ci`))}function A(e){E(e);let t=x[e];O(t?.[0]??``)}function j(){a()}let M=x[T]??[];return(0,y.jsx)(_,{open:S,onOpenChange:k,children:(0,y.jsxs)(h,{className:`sm:max-w-[450px]`,children:[(0,y.jsx)(p,{children:(0,y.jsx)(g,{children:e(`database.create.title`)})}),(0,y.jsxs)(`div`,{className:`space-y-4`,children:[(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(r,{htmlFor:`db-name`,children:e(`database.create.name`)}),(0,y.jsx)(i,{id:`db-name`,value:C,onChange:e=>w(e.target.value),placeholder:e(`database.create.namePlaceholder`)})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(r,{htmlFor:`db-charset`,children:e(`database.create.charset`)}),(0,y.jsxs)(f,{value:T,onValueChange:A,children:[(0,y.jsx)(l,{id:`db-charset`,className:`w-full`,children:(0,y.jsx)(c,{})}),(0,y.jsx)(u,{children:b.map(e=>(0,y.jsx)(d,{value:e,children:e},e))})]})]}),(0,y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,y.jsx)(r,{htmlFor:`db-collation`,children:e(`database.create.collation`)}),(0,y.jsxs)(f,{value:D,onValueChange:O,children:[(0,y.jsx)(l,{id:`db-collation`,className:`w-full`,children:(0,y.jsx)(c,{})}),(0,y.jsx)(u,{children:M.map(e=>(0,y.jsx)(d,{value:e,children:e},e))})]})]})]}),(0,y.jsxs)(m,{children:[(0,y.jsx)(s,{variant:`outline`,onClick:()=>k(!1),children:e(`database.create.cancel`)}),(0,y.jsx)(s,{onClick:j,disabled:!C.trim(),children:e(`database.create.create`)})]})]})})}export{S as CreateDatabaseDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,m as n,n as r,t as i}from"./ui-store-DWSBgCoR.js";import{A as a,I as o,_ as s,g as c,l,v as u}from"./main-
|
|
1
|
+
import{_ as e,c as t,m as n,n as r,t as i}from"./ui-store-DWSBgCoR.js";import{A as a,I as o,_ as s,g as c,l,v as u}from"./main-B9Gu9otb.js";import{l as d,m as f,t as p}from"./button-BGQhw-yz.js";import{a as m,i as h,n as g,r as _,t as v}from"./select-UCsaLUTL.js";import{t as y}from"./connection-store-B9-4NAfR.js";import{r as b}from"./database-7RkacLLF.js";import{n as x}from"./engine-DRzYxvTs.js";import{a as ee,i as S,n as C,o as te,t as ne}from"./dialog-z_ZHxAMN.js";var w=e(n(),1),T=d(),E=e=>e instanceof Error?e.message:String(e),D=e=>e.hostName||e.host||e.file||e.id,O=5e4;function k({id:e,label:t,side:n,onChange:r,connections:i,disabled:a}){let{t:o}=f(),[s,c]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),p=i.find(e=>e.id===n.connectionId);return(0,w.useEffect)(()=>{if(!p?.serverConnectionId)return;let e=!1;return(async()=>{try{let t=await x(p.id).introspect.listDatabases(b(p.serverConnectionId));if(e)return;c(t),t.includes(n.database)||r({connectionId:p.id,database:t[0]??``,table:``})}catch{e||c([])}})(),()=>{e=!0}},[p?.id,p?.serverConnectionId]),(0,w.useEffect)(()=>{if(!p?.serverConnectionId||!n.database)return;let e=!1;return(async()=>{try{let t=await x(p.id).introspect.listTables(b(p.serverConnectionId),n.database);if(e)return;let i=t.map(e=>e.name);d(i),n.table&&!i.includes(n.table)&&r({...n,table:``})}catch{e||d([])}})(),()=>{e=!0}},[p?.id,p?.serverConnectionId,n.database]),(0,T.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3`,children:[(0,T.jsx)(l,{className:`font-medium`,children:t}),(0,T.jsxs)(v,{value:n.connectionId,onValueChange:e=>r({connectionId:e,database:``,table:``}),disabled:a,children:[(0,T.jsx)(h,{id:`${e}-conn`,className:`w-full`,children:(0,T.jsx)(m,{placeholder:o(`database.diff.pickConnection`)})}),(0,T.jsx)(g,{children:i.map(e=>(0,T.jsx)(_,{value:e.id,children:D(e)},e.id))})]}),(0,T.jsxs)(v,{value:n.database,onValueChange:e=>r({...n,database:e,table:``}),disabled:a||s.length===0,children:[(0,T.jsx)(h,{id:`${e}-db`,className:`w-full`,children:(0,T.jsx)(m,{placeholder:o(`database.diff.pickDatabase`)})}),(0,T.jsx)(g,{children:s.map(e=>(0,T.jsx)(_,{value:e,children:e},e))})]}),(0,T.jsxs)(v,{value:n.table,onValueChange:e=>r({...n,table:e}),disabled:a||u.length===0,children:[(0,T.jsx)(h,{id:`${e}-table`,className:`w-full`,children:(0,T.jsx)(m,{placeholder:o(`database.dataDiff.pickTable`)})}),(0,T.jsx)(g,{children:u.map(e=>(0,T.jsx)(_,{value:e,children:e},e))})]})]})}async function A(e,t){let n=await o({connectionId:e.connectionId,database:e.database,table:e.table,limit:O,onProgress:t}),r=[];for await(let e of n.pages)r.push(...e);return{rows:r,columns:n.fields.map(e=>e.name),capped:r.length>=O}}function j({diff:e,row:t,other:n,changed:r}){let{t:i}=f(),a=[...e.keyColumns,...e.compareColumns];return(0,T.jsxs)(`table`,{className:`w-full text-xs font-mono`,children:[(0,T.jsx)(`thead`,{className:`text-muted-foreground`,children:(0,T.jsxs)(`tr`,{children:[(0,T.jsx)(`th`,{className:`text-left font-normal pr-2`,children:i(`database.diff.column`)}),(0,T.jsx)(`th`,{className:`text-left font-normal pr-2`,children:i(`database.diff.source`)}),(0,T.jsx)(`th`,{className:`text-left font-normal`,children:i(`database.diff.target`)})]})}),(0,T.jsx)(`tbody`,{children:a.map(e=>(0,T.jsxs)(`tr`,{className:r?.includes(e)?`text-amber-600 dark:text-amber-400`:``,children:[(0,T.jsx)(`td`,{className:`pr-2 align-top whitespace-nowrap`,children:e}),(0,T.jsx)(`td`,{className:`pr-2 align-top break-all`,children:s(t[e])}),(0,T.jsx)(`td`,{className:`align-top break-all`,children:n?s(n[e]):`—`})]},e))})]})}function M(){let{t:e}=f(),n=r(e=>e.activeDialog),o=r(e=>e.closeDialog),l=i(`data-diff`),d=y(e=>e.activeConnections),m=(0,w.useMemo)(()=>d.filter(e=>e.serverConnectionId),[d]),h=y(e=>e.activeConnectionId),g=n===`data-diff`,[_,v]=(0,w.useState)(()=>l&&m.some(e=>e.id===l.connectionId)?{connectionId:l.connectionId,database:l.database,table:l.table}:{connectionId:h&&m.some(e=>e.id===h)?h:m[0]?.id??``,database:``,table:``}),[D,M]=(0,w.useState)(()=>({connectionId:m.find(e=>e.id!==_.connectionId)?.id??_.connectionId,database:``,table:``})),[N,re]=(0,w.useState)([]),[P,F]=(0,w.useState)(null),[I,L]=(0,w.useState)(!1),[R,z]=(0,w.useState)(`changed`),[B,V]=(0,w.useState)(0),[H,ie]=(0,w.useState)(!1),[U,W]=(0,w.useState)(!1),[G,K]=(0,w.useState)({source:null,target:null}),[q,J]=(0,w.useState)(null),ae=e=>M(e.database&&!e.table&&_.table?{...e,table:_.table}:e),Y=_.connectionId===D.connectionId&&_.database===D.database&&_.table===D.table,oe=!!_.table&&!!D.table&&!Y,X=D.connectionId?x(D.connectionId):null;async function se(){W(!0),J(null),F(null);try{let n=y.getState().activeConnections.find(e=>e.id===_.connectionId);if(!n?.serverConnectionId)throw Error(e(`services.query.notConnected`));let r=await x(_.connectionId).introspect.getPrimaryKeys(b(n.serverConnectionId),_.database,_.table);if(r.length===0)throw Error(e(`database.dataDiff.noPrimaryKey`,{table:_.table}));K({source:{loaded:0,total:null},target:{loaded:0,total:null}});let[i,a]=await Promise.all([A(_,e=>K(t=>({...t,source:e}))),A(D,e=>K(t=>({...t,target:e})))]);if(r.some(e=>!a.columns.includes(e)))throw Error(e(`database.dataDiff.keyMissingInTarget`,{columns:r.join(`, `)}));let o=u(i.rows,a.rows,r,i.columns,a.columns);re(r),L(i.capped||a.capped),F(o),z(o.changed.length>0?`changed`:o.added.length>0?`added`:`removed`),V(0),t(`data_diff`,{source_dbms:x(_.connectionId).id,target_dbms:X?.id??`unknown`,added:o.added.length,changed:o.changed.length,removed:o.removed.length})}catch(e){J(E(e))}finally{W(!1),K({source:null,target:null})}}let Z=e=>e?e.total===null?e.loaded.toLocaleString():`${e.loaded.toLocaleString()} / ${e.total.toLocaleString()}`:``,Q=(0,w.useMemo)(()=>P&&X?c(P,X,{database:D.database,table:D.table},{includeDeletes:H}):``,[P,X,D.database,D.table,H]);function ce(){Q&&(a(D.connectionId,Q,D.database,e(`database.dataDiff.tabTitle`,{table:D.table})),o())}let $=P?R===`added`?P.added:R===`removed`?P.removed:P.changed.map(e=>e.source):[],le=!!P&&P.added.length+P.changed.length+P.removed.length>0,ue=e=>N.map(t=>s(e[t])).join(`, `);return(0,T.jsx)(ne,{open:g,onOpenChange:e=>{e||o()},children:(0,T.jsxs)(C,{className:`sm:max-w-[900px]`,children:[(0,T.jsx)(ee,{children:(0,T.jsx)(te,{children:e(`database.dataDiff.title`)})}),(0,T.jsxs)(`div`,{className:`space-y-3`,children:[(0,T.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,T.jsx)(k,{id:`ddiff-source`,label:e(`database.diff.source`),side:_,onChange:v,connections:m,disabled:U}),(0,T.jsx)(k,{id:`ddiff-target`,label:e(`database.diff.target`),side:D,onChange:ae,connections:m,disabled:U})]}),(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.dataDiff.hint`,{cap:O.toLocaleString()})}),Y&&_.table&&(0,T.jsx)(`p`,{className:`text-xs text-destructive`,children:e(`database.dataDiff.sameSide`)}),q&&(0,T.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:q}),U&&(G.source||G.target)&&(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.dataDiff.loading`,{source:Z(G.source),target:Z(G.target)})}),P&&(0,T.jsxs)(`div`,{className:`space-y-2`,children:[(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 text-xs`,children:[(0,T.jsx)(`span`,{className:`text-muted-foreground`,children:e(`database.dataDiff.summary`,{key:N.join(`, `),added:P.added.length,changed:P.changed.length,removed:P.removed.length,identical:P.identical})}),I&&(0,T.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:e(`database.dataDiff.capped`,{cap:O.toLocaleString()})}),(P.sourceOnlyColumns.length>0||P.targetOnlyColumns.length>0)&&(0,T.jsx)(`span`,{className:`text-muted-foreground`,children:e(`database.dataDiff.ignoredColumns`,{columns:[...P.sourceOnlyColumns,...P.targetOnlyColumns].join(`, `)})})]}),(0,T.jsx)(`div`,{className:`flex gap-1 text-xs`,children:[`added`,`changed`,`removed`].map(t=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>{z(t),V(0)},className:`rounded border px-2 py-0.5 ${R===t?`bg-accent`:``}`,children:e(`database.dataDiff.${t}`,{count:t===`added`?P.added.length:t===`removed`?P.removed.length:P.changed.length})},t))}),(0,T.jsxs)(`div`,{className:`grid grid-cols-[240px_1fr] gap-3 h-[280px]`,children:[(0,T.jsxs)(`ul`,{className:`overflow-auto rounded-md border text-sm font-mono`,children:[$.slice(0,2e3).map((e,t)=>(0,T.jsx)(`li`,{className:`px-2 py-1 cursor-pointer ${B===t?`bg-accent`:``}`,onClick:()=>V(t),children:ue(e)},t)),$.length===0&&(0,T.jsx)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:e(`database.dataDiff.none`)}),$.length>2e3&&(0,T.jsx)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:e(`database.dataDiff.more`,{count:$.length-2e3})})]}),(0,T.jsx)(`div`,{className:`overflow-auto rounded-md border p-2`,children:$[B]?R===`changed`?(0,T.jsx)(j,{diff:P,row:P.changed[B].source,other:P.changed[B].target,changed:P.changed[B].columns}):R===`removed`?(0,T.jsx)(j,{diff:P,row:{},other:$[B]}):(0,T.jsx)(j,{diff:P,row:$[B]}):(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.selectTable`)})})]}),(0,T.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,T.jsx)(`input`,{type:`checkbox`,checked:H,onChange:e=>ie(e.target.checked)}),(0,T.jsx)(`span`,{className:H?`text-destructive`:``,children:e(`database.dataDiff.includeDeletes`)})]})]})]}),(0,T.jsxs)(S,{children:[(0,T.jsx)(p,{variant:`outline`,onClick:o,children:e(`database.diff.close`)}),(0,T.jsx)(p,{variant:`secondary`,onClick:()=>{se()},disabled:!oe||U,children:e(U?`database.diff.comparing`:`database.diff.compare`)}),(0,T.jsx)(p,{onClick:ce,disabled:!le,children:e(`database.diff.openScript`)})]})]})})}export{M as DataDiffDialog};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as e,c as t,m as n,n as r}from"./ui-store-DWSBgCoR.js";import{I as i,P as a,l as o,u as s}from"./main-
|
|
1
|
+
import{_ as e,c as t,m as n,n as r}from"./ui-store-DWSBgCoR.js";import{I as i,P as a,l as o,u as s}from"./main-B9Gu9otb.js";import{l as c,m as l,t as u}from"./button-BGQhw-yz.js";import{a as d,i as f,n as p,r as m,t as h}from"./select-UCsaLUTL.js";import{t as g}from"./connection-store-B9-4NAfR.js";import{n as _}from"./query-store-fCiE0iiG.js";import{r as v}from"./database-7RkacLLF.js";import{n as y}from"./query-execution-DSSJw-rD.js";import{n as b}from"./engine-DRzYxvTs.js";import{a as x,i as S,n as C,o as w,t as T}from"./dialog-z_ZHxAMN.js";import{t as E}from"./file-name-CnYBZPf9.js";var D=e(n(),1);function O(e,t){let n=e==null?``:typeof e==`object`?JSON.stringify(e):String(e);return!(typeof e==`number`||typeof e==`bigint`||/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?$/.test(n))&&/^[=+\-@\t\r]/.test(n)&&(n=`'${n}`),n.includes(t)||n.includes(`"`)||n.includes(`
|
|
2
2
|
`)||n.includes(`\r`)?`"${n.replace(/"/g,`""`)}"`:n}var k=(e,t)=>e.map(e=>O(e,t)).join(t)+`
|
|
3
3
|
`;async function A(e){let t=E(e);if(typeof window.showSaveFilePicker==`function`)try{let e=await(await window.showSaveFilePicker({suggestedName:t,types:[{description:`CSV`,accept:{"text/csv":[`.csv`]}}]})).createWritable();return await e.write(``),{write:t=>e.write(t),finish:()=>e.close(),abort:()=>e.abort()}}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)throw new j}let n=[``];return{write:async e=>{n.push(e)},finish:async()=>{let e=new Blob(n,{type:`text/csv;charset=utf-8;`}),r=URL.createObjectURL(e),i=document.createElement(`a`);i.href=r,i.download=t,i.click(),URL.revokeObjectURL(r)},abort:async()=>{n.length=0}}}var j=class extends Error{constructor(){super(`CSV export cancelled`)}};async function M(e){let n=await A(`${e.table}.csv`),r=0;try{let a=await i({connectionId:e.connectionId,database:e.database,table:e.table,signal:e.signal,onProgress:e.onProgress}),o=a.fields.map(e=>e.name);e.includeHeaders&&await n.write(k(o,e.delimiter));for await(let t of a.pages)await n.write(t.map(t=>k(o.map(e=>t[e]),e.delimiter)).join(``)),r+=t.length;return await n.finish(),t(`export_csv`,{source:`table`,rows:r}),r}catch(e){throw await n.abort().catch(()=>void 0),e}}function N(e,n,r,i,a=`query_result.csv`){let o=e.map(e=>e.name),s=[``];i&&s.push(k(o,r));for(let e of n)s.push(k(o.map(t=>e[t]),r));let c=new Blob(s,{type:`text/csv;charset=utf-8;`}),l=URL.createObjectURL(c),u=document.createElement(`a`);u.href=l,u.download=E(a),u.click(),URL.revokeObjectURL(l),t(`export_csv`,{source:`result`,rows:n.length})}var P=c(),F=[{value:`,`,label:`database.csv.delimiterComma`},{value:` `,label:`database.csv.delimiterTab`},{value:`;`,label:`database.csv.delimiterSemicolon`},{value:`|`,label:`database.csv.delimiterPipe`}];function I(){let{t:e}=l(),{activeDialog:t,closeDialog:n}=r(),i=g(e=>e.activeConnectionId),c=_(),E=t===`export-csv`,[O,k]=(0,D.useState)(`query_result`),[A,I]=(0,D.useState)(``),[L,R]=(0,D.useState)([]),[z,B]=(0,D.useState)(``),[V,H]=(0,D.useState)(`,`),[U,W]=(0,D.useState)(!0),[G,K]=(0,D.useState)(!1),[q,J]=(0,D.useState)(null),[Y,X]=(0,D.useState)(null),Z=(0,D.useRef)(null);(0,D.useEffect)(()=>{if(!E||!i)return;let e=g.getState().activeConnections.find(e=>e.id===i);if(!e?.serverConnectionId)return;let t=!1;return(async()=>{try{let n=await b(i).introspect.listDatabases(v(e.serverConnectionId));if(t)return;R(n);let r=c.tabs[i]?.find(e=>e.id===c.activeTabId[i])?.database||``;B(e=>n.includes(e)?e:n.includes(r)?r:n.length===1?n[0]:``)}catch{t||R([])}})(),()=>{t=!0}},[E,i]);function Q(e){if(!e){if(G){Z.current?.abort();return}n(),k(`query_result`),I(``),H(`,`),W(!0)}}async function $(){if(!i)return;if(X(null),O===`query_result`){let e=c.activeTabId[i],t=(c.tabs[i]??[]).find(t=>t.id===e)?.results?.[0];if(!t||t.rows.length===0)return;N(t.fields,t.rows,V,U),n();return}if(!A.trim()||!z)return;let t=new AbortController;Z.current=t,K(!0),J({loaded:0,total:null});try{let a=await M({connectionId:i,database:z,table:A.trim(),delimiter:V,includeHeaders:U,onProgress:J,signal:t.signal});r.getState().setFooterMessage(e(`database.csv.done`,{count:a,table:A.trim()})),n()}catch(e){!(e instanceof j)&&!(e instanceof y&&t.signal.aborted)&&X(e instanceof Error?e.message:String(e))}finally{K(!1),J(null),Z.current=null}}let ee=q?.total?Math.min(100,Math.round(q.loaded/q.total*100)):null;return(0,P.jsx)(T,{open:E,onOpenChange:Q,children:(0,P.jsxs)(C,{className:`sm:max-w-[450px]`,children:[(0,P.jsx)(x,{children:(0,P.jsx)(w,{children:e(`database.csv.title`)})}),(0,P.jsxs)(`div`,{className:`space-y-4`,children:[(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsx)(o,{children:e(`database.csv.target`)}),(0,P.jsxs)(`div`,{className:`space-y-2`,children:[(0,P.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,P.jsx)(`input`,{type:`radio`,name:`csv-target`,value:`query_result`,checked:O===`query_result`,onChange:()=>k(`query_result`)}),e(`database.csv.targetQueryResult`)]}),(0,P.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,P.jsx)(`input`,{type:`radio`,name:`csv-target`,value:`table_data`,checked:O===`table_data`,onChange:()=>k(`table_data`)}),e(`database.csv.targetTableData`)]})]})]}),O===`table_data`&&(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsx)(o,{htmlFor:`csv-database`,children:e(`database.csv.database`)}),(0,P.jsxs)(h,{value:z,onValueChange:B,disabled:L.length===0,children:[(0,P.jsx)(f,{id:`csv-database`,className:`w-full`,children:(0,P.jsx)(d,{placeholder:e(`database.csv.databasePlaceholder`)})}),(0,P.jsx)(p,{children:L.map(e=>(0,P.jsx)(m,{value:e,children:e},e))})]})]}),(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsx)(o,{htmlFor:`csv-table-name`,children:e(`database.csv.tableName`)}),(0,P.jsx)(s,{id:`csv-table-name`,value:A,onChange:e=>I(e.target.value),placeholder:e(`database.csv.tableNamePlaceholder`)})]})]}),(0,P.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,P.jsx)(o,{htmlFor:`csv-delimiter`,children:e(`database.csv.delimiter`)}),(0,P.jsxs)(h,{value:V,onValueChange:H,children:[(0,P.jsx)(f,{id:`csv-delimiter`,className:`w-full`,children:(0,P.jsx)(d,{})}),(0,P.jsx)(p,{children:F.map(t=>(0,P.jsx)(m,{value:t.value,children:e(t.label)},t.value))})]})]}),(0,P.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer`,children:[(0,P.jsx)(`input`,{type:`checkbox`,checked:U,onChange:e=>W(e.target.checked)}),e(`database.csv.includeHeaders`)]})]}),q&&(0,P.jsxs)(`div`,{className:`space-y-1`,children:[(0,P.jsx)(a,{value:ee??0}),(0,P.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:q.total===null?e(`database.csv.progressUnknown`,{loaded:q.loaded}):e(`database.csv.progress`,{loaded:q.loaded,total:q.total})})]}),Y&&(0,P.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:Y}),(0,P.jsxs)(S,{children:[(0,P.jsx)(u,{variant:`outline`,onClick:()=>Q(!1),children:e(G?`database.csv.stop`:`database.csv.cancel`)}),(0,P.jsx)(u,{onClick:$,disabled:G||O===`table_data`&&!A.trim(),children:e(G?`database.csv.downloading`:`database.csv.download`)})]})]})})}export{I as DownloadToCSVDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{C as i,D as a,E as o,O as s,S as c,T as l,b as u,ft as d,j as f,l as p,u as m,w as h,x as g,y as _,z as v}from"./main-CCLlOK4N.js";import{l as y,m as b,t as x}from"./button-BGQhw-yz.js";import{a as S,i as C,n as w,r as T,t as E}from"./select-XqkC478q.js";import{t as D}from"./connection-store-B9-4NAfR.js";import{r as O}from"./database-D3ZazTXj.js";import{n as k}from"./engine-BmvPzjsq.js";import{n as A,t as j}from"./use-engine-z0WEd5U4.js";import{a as M,i as N,n as P,o as F,t as I}from"./dialog-z_ZHxAMN.js";var L=e(t(),1);function R(){return{id:crypto.randomUUID(),field:``,type:`varchar`,length:``,defaultValue:``,pk:!1,notNull:!1,unsigned:!1,autoIncrement:!1,zerofill:!1,comment:``}}function z(){return{id:crypto.randomUUID(),name:``,type:`INDEX`,columns:[]}}function B(){return{engine:`InnoDB`,charset:`utf8mb4`,collation:`utf8mb4_general_ci`,autoIncrement:``,comment:``}}function V(e,t,n,r,i){return{database:e,name:t,columns:n.map(e=>({name:e.field,type:e.type,length:e.length,defaultValue:e.defaultValue,primaryKey:e.pk,notNull:e.notNull,unsigned:e.unsigned,autoIncrement:e.autoIncrement,zerofill:e.zerofill,comment:e.comment})),indexes:r.map(e=>({name:e.name,type:e.type,columns:[...e.columns]})),options:{...i}}}var H=y(),U=`w-auto min-w-full [&_td]:bg-muted [&_td]:border-r [&_td]:border-border/60 [&_td:last-child]:border-r-0 [&_td]:p-0 [&_td]:h-8 [&_tr:nth-child(even)_td]:bg-muted/60 [&_tr:focus-within_td]:bg-primary/5`,W=`sticky top-0 z-10 bg-catppuccin-crust shadow-[inset_0_-1px_0_var(--border)] [&_th]:h-8 [&_th]:bg-catppuccin-crust [&_th]:font-semibold [&_th]:text-foreground [&_th]:uppercase [&_th]:tracking-wide [&_th]:text-[11px]`,G=`h-8 w-full min-w-0 rounded-none border-0 bg-transparent px-2 text-xs shadow-none ring-0 focus-visible:bg-primary/10 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary dark:bg-transparent`,K=`h-8 w-full min-w-0 rounded-none border-0 bg-transparent px-2 text-xs shadow-none focus-visible:bg-primary/10 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary data-[state=open]:bg-primary/10 dark:bg-transparent dark:hover:bg-transparent`;function q({columns:e,onChange:t}){let{t:n}=b(),r=j().getDataTypes(),a=(0,L.useCallback)((n,r,i)=>{t(e.map(e=>e.id===n?{...e,[r]:i}:e))},[e,t]);function o(){t([...e,R()])}function s(){e.length>0&&t(e.slice(0,-1))}return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(f,{className:`flex-1`,children:(0,H.jsxs)(_,{className:U,children:[(0,H.jsx)(i,{className:W,children:(0,H.jsxs)(h,{children:[(0,H.jsx)(c,{className:`w-[120px]`,children:n(`table.schema.colField`)}),(0,H.jsx)(c,{className:`w-[120px]`,children:n(`table.schema.colType`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colLength`)}),(0,H.jsx)(c,{className:`w-[100px]`,children:n(`table.schema.colDefault`)}),(0,H.jsx)(c,{className:`w-[40px]`,children:n(`table.schema.colPk`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colNotNull`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colUnsigned`)}),(0,H.jsx)(c,{className:`w-[70px]`,children:n(`table.schema.colAutoIncrement`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colZerofill`)}),(0,H.jsx)(c,{children:n(`table.schema.colComment`)})]})}),(0,H.jsx)(u,{children:e.length===0?(0,H.jsx)(h,{children:(0,H.jsx)(g,{colSpan:10,className:`text-center text-muted-foreground`,children:n(`table.schema.empty`)})}):e.map(e=>(0,H.jsxs)(h,{children:[(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.field,onChange:t=>a(e.id,`field`,t.target.value),placeholder:`column_name`})}),(0,H.jsx)(g,{children:(0,H.jsxs)(E,{value:e.type,onValueChange:t=>a(e.id,`type`,t),children:[(0,H.jsx)(C,{className:K,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:r.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})}),(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.length,onChange:t=>a(e.id,`length`,t.target.value)})}),(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.defaultValue,onChange:t=>a(e.id,`defaultValue`,t.target.value),placeholder:`NULL`})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.pk,onChange:t=>a(e.id,`pk`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.notNull,onChange:t=>a(e.id,`notNull`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.unsigned,onChange:t=>a(e.id,`unsigned`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.autoIncrement,onChange:t=>a(e.id,`autoIncrement`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.zerofill,onChange:t=>a(e.id,`zerofill`,t.target.checked)})}),(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.comment,onChange:t=>a(e.id,`comment`,t.target.value)})})]},e.id))})]})}),(0,H.jsxs)(`div`,{className:`flex gap-2 p-2 border-t`,children:[(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:o,children:n(`table.schema.add`)}),(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:s,disabled:e.length===0,children:n(`table.schema.remove`)})]})]})}var J=[`PRIMARY`,`UNIQUE`,`INDEX`,`FULLTEXT`];function Y({open:e,index:t,availableColumns:n,onSave:r,onClose:i}){let{t:a}=b(),[o,s]=(0,L.useState)(t.name),[c,l]=(0,L.useState)(t.type),[u,d]=(0,L.useState)(t.columns);function f(e){d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function h(){r({id:t.id,name:c===`PRIMARY`?`PRIMARY`:o,type:c,columns:u})}return(0,H.jsx)(I,{open:e,onOpenChange:e=>{e||i()},children:(0,H.jsxs)(P,{className:`sm:max-w-[500px]`,children:[(0,H.jsx)(M,{children:(0,H.jsx)(F,{children:t.name?a(`table.index.editTitle`):a(`table.index.addTitle`)})}),(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`idx-name`,children:a(`table.index.name`)}),(0,H.jsx)(m,{id:`idx-name`,value:c===`PRIMARY`?`PRIMARY`:o,onChange:e=>s(e.target.value),disabled:c===`PRIMARY`,placeholder:a(`table.index.namePlaceholder`)})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`idx-type`,children:a(`table.index.type`)}),(0,H.jsxs)(E,{value:c,onValueChange:e=>l(e),children:[(0,H.jsx)(C,{id:`idx-type`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:J.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{children:a(`table.index.columns`)}),(0,H.jsx)(`div`,{className:`border rounded-md p-2 max-h-[200px] overflow-y-auto space-y-1`,children:n.length===0?(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(`table.index.noColumns`)}):n.map(e=>(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:u.includes(e.field),onChange:()=>f(e.field)}),(0,H.jsx)(`span`,{children:e.field||a(`table.index.unnamed`)}),(0,H.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,e.type,`)`]})]},e.id))})]})]}),(0,H.jsxs)(N,{children:[(0,H.jsx)(x,{variant:`outline`,onClick:i,children:a(`table.index.cancel`)}),(0,H.jsx)(x,{onClick:h,disabled:u.length===0,children:a(`table.index.ok`)})]})]})})}function X({indexes:e,availableColumns:t,onChange:n}){let{t:r}=b(),[a,o]=(0,L.useState)(null),[s,l]=(0,L.useState)(!1);function d(){let e=z();o(e),l(!0)}function p(e){o({...e}),l(!0)}function m(){e.length>0&&n(e.slice(0,-1))}function v(t){e.find(e=>e.id===t.id)?n(e.map(e=>e.id===t.id?t:e)):n([...e,t]),l(!1),o(null)}function y(){l(!1),o(null)}return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(f,{className:`flex-1`,children:(0,H.jsxs)(_,{className:U+` [&_td]:px-2`,children:[(0,H.jsx)(i,{className:W,children:(0,H.jsxs)(h,{children:[(0,H.jsx)(c,{className:`w-[150px]`,children:r(`table.indexes.colName`)}),(0,H.jsx)(c,{className:`w-[120px]`,children:r(`table.indexes.colType`)}),(0,H.jsx)(c,{children:r(`table.indexes.colColumns`)})]})}),(0,H.jsx)(u,{children:e.length===0?(0,H.jsx)(h,{children:(0,H.jsx)(g,{colSpan:3,className:`text-center text-muted-foreground`,children:r(`table.indexes.empty`)})}):e.map(e=>(0,H.jsxs)(h,{className:`cursor-pointer`,onDoubleClick:()=>p(e),children:[(0,H.jsx)(g,{children:e.name}),(0,H.jsx)(g,{children:e.type}),(0,H.jsx)(g,{children:e.columns.join(`, `)})]},e.id))})]})}),(0,H.jsxs)(`div`,{className:`flex gap-2 p-2 border-t`,children:[(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:d,children:r(`table.indexes.add`)}),(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:m,disabled:e.length===0,children:r(`table.indexes.remove`)})]}),a&&(0,H.jsx)(Y,{open:s,index:a,availableColumns:t,onSave:v,onClose:y})]})}var Z=[`InnoDB`,`MyISAM`,`MEMORY`,`CSV`,`ARCHIVE`,`BLACKHOLE`,`MRG_MYISAM`,`FEDERATED`,`PERFORMANCE_SCHEMA`],Q=[`utf8mb4`,`utf8`,`latin1`,`ascii`,`binary`,`cp1251`,`euckr`,`gb2312`,`gbk`,`sjis`,`ucs2`,`utf16`,`utf32`],$={utf8mb4:[`utf8mb4_general_ci`,`utf8mb4_unicode_ci`,`utf8mb4_bin`,`utf8mb4_0900_ai_ci`],utf8:[`utf8_general_ci`,`utf8_unicode_ci`,`utf8_bin`],latin1:[`latin1_swedish_ci`,`latin1_general_ci`,`latin1_bin`],ascii:[`ascii_general_ci`,`ascii_bin`],binary:[`binary`],cp1251:[`cp1251_general_ci`,`cp1251_bin`],euckr:[`euckr_korean_ci`,`euckr_bin`],gb2312:[`gb2312_chinese_ci`,`gb2312_bin`],gbk:[`gbk_chinese_ci`,`gbk_bin`],sjis:[`sjis_japanese_ci`,`sjis_bin`],ucs2:[`ucs2_general_ci`,`ucs2_unicode_ci`,`ucs2_bin`],utf16:[`utf16_general_ci`,`utf16_unicode_ci`,`utf16_bin`],utf32:[`utf32_general_ci`,`utf32_unicode_ci`,`utf32_bin`]};function ee({properties:e,onChange:t}){let{t:n}=b();function r(n,r){let i={...e,[n]:r};n===`charset`&&(i.collation=$[r]?.[0]??``),t(i)}let i=$[e.charset]??[];return(0,H.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-engine`,children:n(`table.properties.engine`)}),(0,H.jsxs)(E,{value:e.engine,onValueChange:e=>r(`engine`,e),children:[(0,H.jsx)(C,{id:`prop-engine`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:Z.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-charset`,children:n(`table.properties.charset`)}),(0,H.jsxs)(E,{value:e.charset,onValueChange:e=>r(`charset`,e),children:[(0,H.jsx)(C,{id:`prop-charset`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:Q.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-collation`,children:n(`table.properties.collation`)}),(0,H.jsxs)(E,{value:e.collation,onValueChange:e=>r(`collation`,e),children:[(0,H.jsx)(C,{id:`prop-collation`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:i.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-auto-incr`,children:n(`table.properties.autoIncrement`)}),(0,H.jsx)(m,{id:`prop-auto-incr`,type:`number`,value:e.autoIncrement,onChange:e=>r(`autoIncrement`,e.target.value),placeholder:n(`table.properties.autoIncrementPlaceholder`)})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-comment`,children:n(`table.properties.comment`)}),(0,H.jsx)(m,{id:`prop-comment`,value:e.comment,onChange:e=>r(`comment`,e.target.value)})]})]})}function te({connectionId:e,database:t,tableName:n,columns:r,indexes:i,properties:a}){let o=v(e=>e.themeId),s=A(e),c=o===`light`||o===`light-blue`||o===`solarized-light`?`vs`:`vs-dark`,l=(0,L.useMemo)(()=>s.ddl.createTable(V(t,n,r,i,a)),[s,t,n,r,i,a]);return(0,H.jsx)(`div`,{className:`h-[320px]`,children:(0,H.jsx)(d,{height:`100%`,language:`sql`,theme:c,value:l,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:13,lineNumbers:`on`,wordWrap:`on`}})})}function ne(){let{t:e}=b(),{activeDialog:t,closeDialog:i}=n(),c=r(`create-table`,`alter-table`,`duplicate-table-structure`),u=t===`create-table`||t===`alter-table`||t===`duplicate-table-structure`,d=t===`alter-table`,f=t===`duplicate-table-structure`,h=c?.nodeText??``,g=c?.metadata?.database??``,[_,v]=(0,L.useState)(``),[y,S]=(0,L.useState)([R()]),[C,w]=(0,L.useState)([]),[T,E]=(0,L.useState)(B()),[j,z]=(0,L.useState)(!1),V=c?.connectionId??D.getState().activeConnectionId,U=A(V);(0,L.useEffect)(()=>{u&&(d||f?(v(f?`${h}_copy`:h),W()):(v(``),S([R()]),w([]),E(B())))},[u,t]);async function W(){let e=D.getState(),t=c?.connectionId??e.activeConnectionId,n=e.activeConnections.find(e=>e.id===t)?.serverConnectionId;if(!n||!g||!h)return;z(!0);let{introspect:r,capabilities:i}=k(t),a=O(n);try{let e=await r.listColumns(a,g,h);if(e.length>0){let t=e.map(e=>{let t=e.type,n=t.match(/^(\w+)(?:\(([^)]+)\))?/);return{id:crypto.randomUUID(),field:e.name,type:n?.[1]?.toLowerCase()??t.toLowerCase(),length:n?.[2]??``,defaultValue:e.defaultValue??``,pk:e.key===`PRI`,notNull:!e.nullable,unsigned:t.includes(`unsigned`),autoIncrement:e.extra.includes(`auto_increment`),zerofill:t.includes(`zerofill`),comment:e.comment}});S(t)}let t=await r.listIndexes(a,g,h);if(t.length>0&&w(t.map(e=>({id:crypto.randomUUID(),name:e.name,type:e.type===`SPATIAL`?`INDEX`:e.type,columns:[...e.columns]}))),i.tableProperties){let e=await r.getTableInfo(a,g,h);e&&E({engine:e.engine??`InnoDB`,charset:(e.collation??`utf8mb4`).replace(/_.*/,``),collation:e.collation??`utf8mb4_unicode_ci`,autoIncrement:e.autoIncrement??``,comment:e.comment})}}catch(e){console.error(`Failed to load table schema:`,e)}finally{z(!1)}}function G(e){e||i()}function K(){i()}let J=e(d?`table.dialog.alterTitle`:f?`table.dialog.duplicateTitle`:`table.dialog.createTitle`),Y=e(d?`table.dialog.alter`:`table.dialog.create`);return(0,H.jsx)(I,{open:u,onOpenChange:G,children:(0,H.jsxs)(P,{className:`sm:max-w-[1000px] max-h-[80vh] flex flex-col`,children:[(0,H.jsx)(M,{children:(0,H.jsx)(F,{children:J})}),(0,H.jsxs)(`div`,{className:`space-y-3 flex-1 overflow-hidden flex flex-col min-h-0`,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5 px-1`,children:[(0,H.jsx)(p,{htmlFor:`table-name`,children:e(`table.dialog.tableName`)}),(0,H.jsx)(m,{id:`table-name`,value:_,onChange:e=>v(e.target.value),placeholder:e(`table.dialog.tableNamePlaceholder`),disabled:d})]}),j?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-sm`,children:e(`table.dialog.loading`)}):(0,H.jsxs)(l,{defaultValue:`schema`,className:`flex-1 min-h-0 flex flex-col`,children:[(0,H.jsxs)(a,{children:[(0,H.jsx)(s,{value:`schema`,children:e(`table.dialog.tabSchema`)}),(0,H.jsx)(s,{value:`indexes`,children:e(`table.dialog.tabIndexes`)}),U.capabilities.tableProperties&&(0,H.jsx)(s,{value:`properties`,children:e(`table.dialog.tabProperties`)}),(0,H.jsx)(s,{value:`sql`,children:`SQL`})]}),(0,H.jsx)(o,{value:`schema`,className:`flex-1 min-h-0 overflow-auto border rounded-md`,children:(0,H.jsx)(q,{columns:y,onChange:S})}),(0,H.jsx)(o,{value:`indexes`,className:`flex-1 min-h-0 overflow-auto border rounded-md`,children:(0,H.jsx)(X,{indexes:C,availableColumns:y,onChange:w})}),(0,H.jsx)(o,{value:`properties`,className:`flex-1 min-h-0 overflow-auto border rounded-md`,children:(0,H.jsx)(ee,{properties:T,onChange:E})}),(0,H.jsx)(o,{value:`sql`,className:`flex-1 min-h-0 border rounded-md`,children:(0,H.jsx)(te,{connectionId:V,database:g,tableName:_,columns:y,indexes:C,properties:T})})]})]}),(0,H.jsxs)(N,{children:[(0,H.jsx)(x,{variant:`outline`,onClick:()=>G(!1),children:e(`table.dialog.cancel`)}),(0,H.jsx)(x,{onClick:K,disabled:j,children:Y})]})]})})}export{ne as EditSchemaDialog};
|
|
1
|
+
import{_ as e,m as t,n,t as r}from"./ui-store-DWSBgCoR.js";import{C as i,D as a,E as o,O as s,S as c,T as l,b as u,ft as d,j as f,l as p,u as m,w as h,x as g,y as _,z as v}from"./main-B9Gu9otb.js";import{l as y,m as b,t as x}from"./button-BGQhw-yz.js";import{a as S,i as C,n as w,r as T,t as E}from"./select-UCsaLUTL.js";import{t as D}from"./connection-store-B9-4NAfR.js";import{r as O}from"./database-7RkacLLF.js";import{n as k}from"./engine-DRzYxvTs.js";import{n as A,t as j}from"./use-engine-5vf18JRu.js";import{a as M,i as N,n as P,o as F,t as I}from"./dialog-z_ZHxAMN.js";var L=e(t(),1);function R(){return{id:crypto.randomUUID(),field:``,type:`varchar`,length:``,defaultValue:``,pk:!1,notNull:!1,unsigned:!1,autoIncrement:!1,zerofill:!1,comment:``}}function z(){return{id:crypto.randomUUID(),name:``,type:`INDEX`,columns:[]}}function B(){return{engine:`InnoDB`,charset:`utf8mb4`,collation:`utf8mb4_general_ci`,autoIncrement:``,comment:``}}function V(e,t,n,r,i){return{database:e,name:t,columns:n.map(e=>({name:e.field,type:e.type,length:e.length,defaultValue:e.defaultValue,primaryKey:e.pk,notNull:e.notNull,unsigned:e.unsigned,autoIncrement:e.autoIncrement,zerofill:e.zerofill,comment:e.comment})),indexes:r.map(e=>({name:e.name,type:e.type,columns:[...e.columns]})),options:{...i}}}var H=y(),U=`w-auto min-w-full [&_td]:bg-muted [&_td]:border-r [&_td]:border-border/60 [&_td:last-child]:border-r-0 [&_td]:p-0 [&_td]:h-8 [&_tr:nth-child(even)_td]:bg-muted/60 [&_tr:focus-within_td]:bg-primary/5`,W=`sticky top-0 z-10 bg-catppuccin-crust shadow-[inset_0_-1px_0_var(--border)] [&_th]:h-8 [&_th]:bg-catppuccin-crust [&_th]:font-semibold [&_th]:text-foreground [&_th]:uppercase [&_th]:tracking-wide [&_th]:text-[11px]`,G=`h-8 w-full min-w-0 rounded-none border-0 bg-transparent px-2 text-xs shadow-none ring-0 focus-visible:bg-primary/10 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary dark:bg-transparent`,K=`h-8 w-full min-w-0 rounded-none border-0 bg-transparent px-2 text-xs shadow-none focus-visible:bg-primary/10 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary data-[state=open]:bg-primary/10 dark:bg-transparent dark:hover:bg-transparent`;function q({columns:e,onChange:t}){let{t:n}=b(),r=j().getDataTypes(),a=(0,L.useCallback)((n,r,i)=>{t(e.map(e=>e.id===n?{...e,[r]:i}:e))},[e,t]);function o(){t([...e,R()])}function s(){e.length>0&&t(e.slice(0,-1))}return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(f,{className:`flex-1`,children:(0,H.jsxs)(_,{className:U,children:[(0,H.jsx)(i,{className:W,children:(0,H.jsxs)(h,{children:[(0,H.jsx)(c,{className:`w-[120px]`,children:n(`table.schema.colField`)}),(0,H.jsx)(c,{className:`w-[120px]`,children:n(`table.schema.colType`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colLength`)}),(0,H.jsx)(c,{className:`w-[100px]`,children:n(`table.schema.colDefault`)}),(0,H.jsx)(c,{className:`w-[40px]`,children:n(`table.schema.colPk`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colNotNull`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colUnsigned`)}),(0,H.jsx)(c,{className:`w-[70px]`,children:n(`table.schema.colAutoIncrement`)}),(0,H.jsx)(c,{className:`w-[60px]`,children:n(`table.schema.colZerofill`)}),(0,H.jsx)(c,{children:n(`table.schema.colComment`)})]})}),(0,H.jsx)(u,{children:e.length===0?(0,H.jsx)(h,{children:(0,H.jsx)(g,{colSpan:10,className:`text-center text-muted-foreground`,children:n(`table.schema.empty`)})}):e.map(e=>(0,H.jsxs)(h,{children:[(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.field,onChange:t=>a(e.id,`field`,t.target.value),placeholder:`column_name`})}),(0,H.jsx)(g,{children:(0,H.jsxs)(E,{value:e.type,onValueChange:t=>a(e.id,`type`,t),children:[(0,H.jsx)(C,{className:K,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:r.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})}),(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.length,onChange:t=>a(e.id,`length`,t.target.value)})}),(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.defaultValue,onChange:t=>a(e.id,`defaultValue`,t.target.value),placeholder:`NULL`})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.pk,onChange:t=>a(e.id,`pk`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.notNull,onChange:t=>a(e.id,`notNull`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.unsigned,onChange:t=>a(e.id,`unsigned`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.autoIncrement,onChange:t=>a(e.id,`autoIncrement`,t.target.checked)})}),(0,H.jsx)(g,{className:`text-center`,children:(0,H.jsx)(`input`,{type:`checkbox`,checked:e.zerofill,onChange:t=>a(e.id,`zerofill`,t.target.checked)})}),(0,H.jsx)(g,{children:(0,H.jsx)(m,{className:G,value:e.comment,onChange:t=>a(e.id,`comment`,t.target.value)})})]},e.id))})]})}),(0,H.jsxs)(`div`,{className:`flex gap-2 p-2 border-t`,children:[(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:o,children:n(`table.schema.add`)}),(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:s,disabled:e.length===0,children:n(`table.schema.remove`)})]})]})}var J=[`PRIMARY`,`UNIQUE`,`INDEX`,`FULLTEXT`];function Y({open:e,index:t,availableColumns:n,onSave:r,onClose:i}){let{t:a}=b(),[o,s]=(0,L.useState)(t.name),[c,l]=(0,L.useState)(t.type),[u,d]=(0,L.useState)(t.columns);function f(e){d(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function h(){r({id:t.id,name:c===`PRIMARY`?`PRIMARY`:o,type:c,columns:u})}return(0,H.jsx)(I,{open:e,onOpenChange:e=>{e||i()},children:(0,H.jsxs)(P,{className:`sm:max-w-[500px]`,children:[(0,H.jsx)(M,{children:(0,H.jsx)(F,{children:t.name?a(`table.index.editTitle`):a(`table.index.addTitle`)})}),(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`idx-name`,children:a(`table.index.name`)}),(0,H.jsx)(m,{id:`idx-name`,value:c===`PRIMARY`?`PRIMARY`:o,onChange:e=>s(e.target.value),disabled:c===`PRIMARY`,placeholder:a(`table.index.namePlaceholder`)})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`idx-type`,children:a(`table.index.type`)}),(0,H.jsxs)(E,{value:c,onValueChange:e=>l(e),children:[(0,H.jsx)(C,{id:`idx-type`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:J.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{children:a(`table.index.columns`)}),(0,H.jsx)(`div`,{className:`border rounded-md p-2 max-h-[200px] overflow-y-auto space-y-1`,children:n.length===0?(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(`table.index.noColumns`)}):n.map(e=>(0,H.jsxs)(`label`,{className:`flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5`,children:[(0,H.jsx)(`input`,{type:`checkbox`,checked:u.includes(e.field),onChange:()=>f(e.field)}),(0,H.jsx)(`span`,{children:e.field||a(`table.index.unnamed`)}),(0,H.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,e.type,`)`]})]},e.id))})]})]}),(0,H.jsxs)(N,{children:[(0,H.jsx)(x,{variant:`outline`,onClick:i,children:a(`table.index.cancel`)}),(0,H.jsx)(x,{onClick:h,disabled:u.length===0,children:a(`table.index.ok`)})]})]})})}function X({indexes:e,availableColumns:t,onChange:n}){let{t:r}=b(),[a,o]=(0,L.useState)(null),[s,l]=(0,L.useState)(!1);function d(){let e=z();o(e),l(!0)}function p(e){o({...e}),l(!0)}function m(){e.length>0&&n(e.slice(0,-1))}function v(t){e.find(e=>e.id===t.id)?n(e.map(e=>e.id===t.id?t:e)):n([...e,t]),l(!1),o(null)}function y(){l(!1),o(null)}return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(f,{className:`flex-1`,children:(0,H.jsxs)(_,{className:U+` [&_td]:px-2`,children:[(0,H.jsx)(i,{className:W,children:(0,H.jsxs)(h,{children:[(0,H.jsx)(c,{className:`w-[150px]`,children:r(`table.indexes.colName`)}),(0,H.jsx)(c,{className:`w-[120px]`,children:r(`table.indexes.colType`)}),(0,H.jsx)(c,{children:r(`table.indexes.colColumns`)})]})}),(0,H.jsx)(u,{children:e.length===0?(0,H.jsx)(h,{children:(0,H.jsx)(g,{colSpan:3,className:`text-center text-muted-foreground`,children:r(`table.indexes.empty`)})}):e.map(e=>(0,H.jsxs)(h,{className:`cursor-pointer`,onDoubleClick:()=>p(e),children:[(0,H.jsx)(g,{children:e.name}),(0,H.jsx)(g,{children:e.type}),(0,H.jsx)(g,{children:e.columns.join(`, `)})]},e.id))})]})}),(0,H.jsxs)(`div`,{className:`flex gap-2 p-2 border-t`,children:[(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:d,children:r(`table.indexes.add`)}),(0,H.jsx)(x,{size:`sm`,variant:`outline`,onClick:m,disabled:e.length===0,children:r(`table.indexes.remove`)})]}),a&&(0,H.jsx)(Y,{open:s,index:a,availableColumns:t,onSave:v,onClose:y})]})}var Z=[`InnoDB`,`MyISAM`,`MEMORY`,`CSV`,`ARCHIVE`,`BLACKHOLE`,`MRG_MYISAM`,`FEDERATED`,`PERFORMANCE_SCHEMA`],Q=[`utf8mb4`,`utf8`,`latin1`,`ascii`,`binary`,`cp1251`,`euckr`,`gb2312`,`gbk`,`sjis`,`ucs2`,`utf16`,`utf32`],$={utf8mb4:[`utf8mb4_general_ci`,`utf8mb4_unicode_ci`,`utf8mb4_bin`,`utf8mb4_0900_ai_ci`],utf8:[`utf8_general_ci`,`utf8_unicode_ci`,`utf8_bin`],latin1:[`latin1_swedish_ci`,`latin1_general_ci`,`latin1_bin`],ascii:[`ascii_general_ci`,`ascii_bin`],binary:[`binary`],cp1251:[`cp1251_general_ci`,`cp1251_bin`],euckr:[`euckr_korean_ci`,`euckr_bin`],gb2312:[`gb2312_chinese_ci`,`gb2312_bin`],gbk:[`gbk_chinese_ci`,`gbk_bin`],sjis:[`sjis_japanese_ci`,`sjis_bin`],ucs2:[`ucs2_general_ci`,`ucs2_unicode_ci`,`ucs2_bin`],utf16:[`utf16_general_ci`,`utf16_unicode_ci`,`utf16_bin`],utf32:[`utf32_general_ci`,`utf32_unicode_ci`,`utf32_bin`]};function ee({properties:e,onChange:t}){let{t:n}=b();function r(n,r){let i={...e,[n]:r};n===`charset`&&(i.collation=$[r]?.[0]??``),t(i)}let i=$[e.charset]??[];return(0,H.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-engine`,children:n(`table.properties.engine`)}),(0,H.jsxs)(E,{value:e.engine,onValueChange:e=>r(`engine`,e),children:[(0,H.jsx)(C,{id:`prop-engine`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:Z.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-charset`,children:n(`table.properties.charset`)}),(0,H.jsxs)(E,{value:e.charset,onValueChange:e=>r(`charset`,e),children:[(0,H.jsx)(C,{id:`prop-charset`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:Q.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-collation`,children:n(`table.properties.collation`)}),(0,H.jsxs)(E,{value:e.collation,onValueChange:e=>r(`collation`,e),children:[(0,H.jsx)(C,{id:`prop-collation`,className:`w-full`,children:(0,H.jsx)(S,{})}),(0,H.jsx)(w,{children:i.map(e=>(0,H.jsx)(T,{value:e,children:e},e))})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-auto-incr`,children:n(`table.properties.autoIncrement`)}),(0,H.jsx)(m,{id:`prop-auto-incr`,type:`number`,value:e.autoIncrement,onChange:e=>r(`autoIncrement`,e.target.value),placeholder:n(`table.properties.autoIncrementPlaceholder`)})]})]}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(p,{htmlFor:`prop-comment`,children:n(`table.properties.comment`)}),(0,H.jsx)(m,{id:`prop-comment`,value:e.comment,onChange:e=>r(`comment`,e.target.value)})]})]})}function te({connectionId:e,database:t,tableName:n,columns:r,indexes:i,properties:a}){let o=v(e=>e.themeId),s=A(e),c=o===`light`||o===`light-blue`||o===`solarized-light`?`vs`:`vs-dark`,l=(0,L.useMemo)(()=>s.ddl.createTable(V(t,n,r,i,a)),[s,t,n,r,i,a]);return(0,H.jsx)(`div`,{className:`h-[320px]`,children:(0,H.jsx)(d,{height:`100%`,language:`sql`,theme:c,value:l,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:13,lineNumbers:`on`,wordWrap:`on`}})})}function ne(){let{t:e}=b(),{activeDialog:t,closeDialog:i}=n(),c=r(`create-table`,`alter-table`,`duplicate-table-structure`),u=t===`create-table`||t===`alter-table`||t===`duplicate-table-structure`,d=t===`alter-table`,f=t===`duplicate-table-structure`,h=c?.nodeText??``,g=c?.metadata?.database??``,[_,v]=(0,L.useState)(``),[y,S]=(0,L.useState)([R()]),[C,w]=(0,L.useState)([]),[T,E]=(0,L.useState)(B()),[j,z]=(0,L.useState)(!1),V=c?.connectionId??D.getState().activeConnectionId,U=A(V);(0,L.useEffect)(()=>{u&&(d||f?(v(f?`${h}_copy`:h),W()):(v(``),S([R()]),w([]),E(B())))},[u,t]);async function W(){let e=D.getState(),t=c?.connectionId??e.activeConnectionId,n=e.activeConnections.find(e=>e.id===t)?.serverConnectionId;if(!n||!g||!h)return;z(!0);let{introspect:r,capabilities:i}=k(t),a=O(n);try{let e=await r.listColumns(a,g,h);if(e.length>0){let t=e.map(e=>{let t=e.type,n=t.match(/^(\w+)(?:\(([^)]+)\))?/);return{id:crypto.randomUUID(),field:e.name,type:n?.[1]?.toLowerCase()??t.toLowerCase(),length:n?.[2]??``,defaultValue:e.defaultValue??``,pk:e.key===`PRI`,notNull:!e.nullable,unsigned:t.includes(`unsigned`),autoIncrement:e.extra.includes(`auto_increment`),zerofill:t.includes(`zerofill`),comment:e.comment}});S(t)}let t=await r.listIndexes(a,g,h);if(t.length>0&&w(t.map(e=>({id:crypto.randomUUID(),name:e.name,type:e.type===`SPATIAL`?`INDEX`:e.type,columns:[...e.columns]}))),i.tableProperties){let e=await r.getTableInfo(a,g,h);e&&E({engine:e.engine??`InnoDB`,charset:(e.collation??`utf8mb4`).replace(/_.*/,``),collation:e.collation??`utf8mb4_unicode_ci`,autoIncrement:e.autoIncrement??``,comment:e.comment})}}catch(e){console.error(`Failed to load table schema:`,e)}finally{z(!1)}}function G(e){e||i()}function K(){i()}let J=e(d?`table.dialog.alterTitle`:f?`table.dialog.duplicateTitle`:`table.dialog.createTitle`),Y=e(d?`table.dialog.alter`:`table.dialog.create`);return(0,H.jsx)(I,{open:u,onOpenChange:G,children:(0,H.jsxs)(P,{className:`sm:max-w-[1000px] max-h-[80vh] flex flex-col`,children:[(0,H.jsx)(M,{children:(0,H.jsx)(F,{children:J})}),(0,H.jsxs)(`div`,{className:`space-y-3 flex-1 overflow-hidden flex flex-col min-h-0`,children:[(0,H.jsxs)(`div`,{className:`space-y-1.5 px-1`,children:[(0,H.jsx)(p,{htmlFor:`table-name`,children:e(`table.dialog.tableName`)}),(0,H.jsx)(m,{id:`table-name`,value:_,onChange:e=>v(e.target.value),placeholder:e(`table.dialog.tableNamePlaceholder`),disabled:d})]}),j?(0,H.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground text-sm`,children:e(`table.dialog.loading`)}):(0,H.jsxs)(l,{defaultValue:`schema`,className:`flex-1 min-h-0 flex flex-col`,children:[(0,H.jsxs)(a,{children:[(0,H.jsx)(s,{value:`schema`,children:e(`table.dialog.tabSchema`)}),(0,H.jsx)(s,{value:`indexes`,children:e(`table.dialog.tabIndexes`)}),U.capabilities.tableProperties&&(0,H.jsx)(s,{value:`properties`,children:e(`table.dialog.tabProperties`)}),(0,H.jsx)(s,{value:`sql`,children:`SQL`})]}),(0,H.jsx)(o,{value:`schema`,className:`flex-1 min-h-0 overflow-auto border rounded-md`,children:(0,H.jsx)(q,{columns:y,onChange:S})}),(0,H.jsx)(o,{value:`indexes`,className:`flex-1 min-h-0 overflow-auto border rounded-md`,children:(0,H.jsx)(X,{indexes:C,availableColumns:y,onChange:w})}),(0,H.jsx)(o,{value:`properties`,className:`flex-1 min-h-0 overflow-auto border rounded-md`,children:(0,H.jsx)(ee,{properties:T,onChange:E})}),(0,H.jsx)(o,{value:`sql`,className:`flex-1 min-h-0 border rounded-md`,children:(0,H.jsx)(te,{connectionId:V,database:g,tableName:_,columns:y,indexes:C,properties:T})})]})]}),(0,H.jsxs)(N,{children:[(0,H.jsx)(x,{variant:`outline`,onClick:()=>G(!1),children:e(`table.dialog.cancel`)}),(0,H.jsx)(x,{onClick:K,disabled:j,children:Y})]})]})})}export{ne as EditSchemaDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{it as r,l as i,u as a}from"./main-
|
|
1
|
+
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{it as r,l as i,u as a}from"./main-B9Gu9otb.js";import{i as o,l as s,m as c,t as l}from"./button-BGQhw-yz.js";import{t as u}from"./chevron-up-C8Exvnh_.js";var d=e(t(),1),f=s();function p(){let{t:e}=c(),{activeDialog:t,closeDialog:s}=n(),[p,m]=(0,d.useState)(``),[h,g]=(0,d.useState)(``),[_,v]=(0,d.useState)(!1),[y,b]=(0,d.useState)(!1),[x,S]=(0,d.useState)(!1),[C,w]=(0,d.useState)(0);if(t!==`find-replace`)return null;function T(){s()}function E(){w(0)}function D(){}function O(){}function k(){}return(0,f.jsxs)(`div`,{className:`fixed top-12 right-4 z-50 bg-background border rounded-md shadow-lg p-3 w-[400px] space-y-2`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,f.jsx)(a,{placeholder:e(`command.findReplace.findPlaceholder`),value:p,onChange:e=>m(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.shiftKey||E()),e.key===`Escape`&&T()},className:`flex-1 h-7 text-sm`,autoFocus:!0}),(0,f.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap min-w-[60px] text-center`,children:C>0?e(`command.findReplace.found`,{count:C}):e(`command.findReplace.noResults`)}),(0,f.jsx)(l,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0`,onClick:D,title:e(`command.findReplace.previous`),children:(0,f.jsx)(u,{className:`h-4 w-4`})}),(0,f.jsx)(l,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0`,onClick:E,title:e(`command.findReplace.next`),children:(0,f.jsx)(r,{className:`h-4 w-4`})}),(0,f.jsx)(l,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0`,onClick:T,title:e(`command.findReplace.close`),children:(0,f.jsx)(o,{className:`h-4 w-4`})})]}),(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,f.jsx)(a,{placeholder:e(`command.findReplace.replacePlaceholder`),value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Escape`&&T()},className:`flex-1 h-7 text-sm`}),(0,f.jsx)(l,{variant:`outline`,size:`sm`,className:`h-7 text-xs`,onClick:O,children:e(`command.findReplace.replace`)}),(0,f.jsx)(l,{variant:`outline`,size:`sm`,className:`h-7 text-xs`,onClick:k,children:e(`command.findReplace.all`)})]}),(0,f.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,f.jsxs)(i,{className:`flex items-center gap-1.5 text-xs font-normal cursor-pointer`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:_,onChange:e=>v(e.target.checked),className:`rounded border-input`}),e(`command.findReplace.caseSensitive`)]}),(0,f.jsxs)(i,{className:`flex items-center gap-1.5 text-xs font-normal cursor-pointer`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:y,onChange:e=>b(e.target.checked),className:`rounded border-input`}),e(`command.findReplace.regex`)]}),(0,f.jsxs)(i,{className:`flex items-center gap-1.5 text-xs font-normal cursor-pointer`,children:[(0,f.jsx)(`input`,{type:`checkbox`,checked:x,onChange:e=>S(e.target.checked),className:`rounded border-input`}),e(`command.findReplace.wholeWord`)]})]})]})}export{p as FindReplaceDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./ui-store-DWSBgCoR.js";import{l as t,m as n,t as r}from"./button-BGQhw-yz.js";import{t as i}from"./connection-store-B9-4NAfR.js";import{o as a}from"./database-
|
|
1
|
+
import{n as e}from"./ui-store-DWSBgCoR.js";import{l as t,m as n,t as r}from"./button-BGQhw-yz.js";import{t as i}from"./connection-store-B9-4NAfR.js";import{o as a}from"./database-7RkacLLF.js";import{a as o,i as s,n as c,o as l,t as u}from"./dialog-z_ZHxAMN.js";var d=t(),f=[`FLUSH HOSTS`,`FLUSH LOGS`,`FLUSH PRIVILEGES`,`FLUSH STATUS`,`FLUSH TABLES`,`FLUSH THREADS`,`FLUSH QUERY CACHE`,`FLUSH DES_KEY_FILE`,`FLUSH RELAY LOGS`,`FLUSH SLOW LOGS`,`FLUSH BINARY LOGS`,`FLUSH ENGINE LOGS`,`FLUSH ERROR LOGS`,`FLUSH GENERAL LOGS`,`FLUSH USER_RESOURCES`,`FLUSH OPTIMIZER_COSTS`];function p(){let e=i.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}function m(){let{t}=n(),{activeDialog:i,closeDialog:m,setFooterMessage:h}=e(),g=i===`flush`;function _(e){e||m()}async function v(e){let n=p();if(!n){h(t(`command.noActiveConnection`));return}try{await a(n,e),h(t(`command.flush.executed`,{command:e}))}catch(n){h(t(`command.flush.executeError`,{command:e,message:n instanceof Error?n.message:String(n)}))}}return(0,d.jsx)(u,{open:g,onOpenChange:_,children:(0,d.jsxs)(c,{className:`sm:max-w-[500px]`,children:[(0,d.jsx)(o,{children:(0,d.jsx)(l,{children:t(`command.flush.title`)})}),(0,d.jsx)(`div`,{className:`grid grid-cols-2 gap-2 py-2`,children:f.map(e=>(0,d.jsx)(r,{variant:`outline`,size:`sm`,className:`justify-start text-xs h-8`,onClick:()=>{v(e)},children:e},e))}),(0,d.jsx)(s,{children:(0,d.jsx)(r,{variant:`outline`,onClick:()=>_(!1),children:t(`command.close`)})})]})})}export{m as FlushDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,m as n,n as r,t as i}from"./ui-store-DWSBgCoR.js";import{L as a,R as o,l as s,u as c}from"./main-
|
|
1
|
+
import{_ as e,c as t,m as n,n as r,t as i}from"./ui-store-DWSBgCoR.js";import{L as a,R as o,l as s,u as c}from"./main-B9Gu9otb.js";import{l,m as u,t as d}from"./button-BGQhw-yz.js";import{a as f,i as p,n as m,r as h,t as g}from"./select-UCsaLUTL.js";import{t as _}from"./connection-store-B9-4NAfR.js";import{r as v}from"./database-7RkacLLF.js";import{n as y}from"./engine-DRzYxvTs.js";import{a as b,i as x,n as S,o as C,t as w}from"./dialog-z_ZHxAMN.js";var T=e(n(),1),E=l(),D=e=>e instanceof Error?e.message:String(e);function O(){let{t:e}=u(),n=r(e=>e.activeDialog),l=r(e=>e.closeDialog),O=i(`link-column`),k=n===`link-column`&&!!O,A=O?.connectionId??``,j=_(e=>e.activeConnections),M=j.filter(e=>e.serverConnectionId),N=o(e=>e.links),P=o(e=>e.setLink),F=o(e=>e.removeLink),I=O?a(N,A,O.database,O.table).find(e=>e.column===O.column)??null:null,[L,R]=(0,T.useState)(I?.targetConnectionId??A),z=j.find(e=>e.id===L)?.serverConnectionId,[B,V]=(0,T.useState)([]),[H,U]=(0,T.useState)([]),[W,G]=(0,T.useState)([]),[K,q]=(0,T.useState)(I?.targetDatabase??O?.database??``),[J,Y]=(0,T.useState)(I?.targetTable??``),[X,Z]=(0,T.useState)(I?.targetColumn??``),[Q,$]=(0,T.useState)(null);if((0,T.useEffect)(()=>{if(!k||!z)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listDatabases(v(z));if(e)return;V(t),q(e=>t.includes(e)?e:t[0]??``)}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L]),(0,T.useEffect)(()=>{if(!k||!z||!K)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listTables(v(z),K);if(e)return;U(t.map(e=>e.name))}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L,K]),(0,T.useEffect)(()=>{if(!k||!z||!K||!J)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listColumns(v(z),K,J);if(e)return;G(t.map(e=>e.name)),Z(e=>t.some(t=>t.name===e)?e:t.find(e=>e.key===`PRI`)?.name??t[0]?.name??``)}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L,K,J]),!O)return null;function ee(){if(!O||!K||!J||!X)return;let e=L!==A;P(A,{database:O.database,table:O.table,column:O.column,...e?{targetConnectionId:L}:{},targetDatabase:K,targetTable:J,targetColumn:X}),t(`column_link_set`,{dbms:y(A).id,target_dbms:y(L).id,cross_database:K!==O.database,cross_connection:e}),l()}function te(){O&&(F(A,O),l())}return(0,E.jsx)(w,{open:k,onOpenChange:e=>{e||l()},children:(0,E.jsxs)(S,{className:`sm:max-w-[460px]`,children:[(0,E.jsx)(b,{children:(0,E.jsx)(C,{children:e(`result.link.title`)})}),(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(s,{children:e(`result.link.source`)}),(0,E.jsx)(c,{value:`${O.database}.${O.table}.${O.column}`,disabled:!0})]}),(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`result.link.hint`)}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(s,{htmlFor:`link-conn`,children:e(`result.link.targetConnection`)}),(0,E.jsxs)(g,{value:L,onValueChange:e=>{R(e),Y(``),U([]),G([])},children:[(0,E.jsx)(p,{id:`link-conn`,className:`w-full`,children:(0,E.jsx)(f,{})}),(0,E.jsx)(m,{children:M.map(e=>(0,E.jsx)(h,{value:e.id,children:e.hostName||e.host||e.file||e.id},e.id))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(s,{htmlFor:`link-db`,children:e(`result.link.targetDatabase`)}),(0,E.jsxs)(g,{value:K,onValueChange:e=>{q(e),Y(``),G([])},children:[(0,E.jsx)(p,{id:`link-db`,className:`w-full`,children:(0,E.jsx)(f,{})}),(0,E.jsx)(m,{children:B.map(e=>(0,E.jsx)(h,{value:e,children:e},e))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(s,{htmlFor:`link-table`,children:e(`result.link.targetTable`)}),(0,E.jsxs)(g,{value:J,onValueChange:Y,disabled:H.length===0,children:[(0,E.jsx)(p,{id:`link-table`,className:`w-full`,children:(0,E.jsx)(f,{placeholder:e(`result.link.pickTable`)})}),(0,E.jsx)(m,{children:H.map(e=>(0,E.jsx)(h,{value:e,children:e},e))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(s,{htmlFor:`link-column`,children:e(`result.link.targetColumn`)}),(0,E.jsxs)(g,{value:X,onValueChange:Z,disabled:W.length===0,children:[(0,E.jsx)(p,{id:`link-column`,className:`w-full`,children:(0,E.jsx)(f,{placeholder:e(`result.link.pickColumn`)})}),(0,E.jsx)(m,{children:W.map(e=>(0,E.jsx)(h,{value:e,children:e},e))})]})]}),Q&&(0,E.jsx)(`p`,{className:`text-xs text-destructive`,children:Q})]}),(0,E.jsxs)(x,{children:[I&&(0,E.jsx)(d,{variant:`destructive`,onClick:te,className:`mr-auto`,children:e(`result.link.remove`)}),(0,E.jsx)(d,{variant:`outline`,onClick:l,children:e(`result.link.cancel`)}),(0,E.jsx)(d,{onClick:ee,disabled:!K||!J||!X,children:e(`result.link.save`)})]})]})})}export{O as LinkColumnDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{j as r}from"./main-
|
|
1
|
+
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{j as r}from"./main-B9Gu9otb.js";import{l as i,m as a,t as o}from"./button-BGQhw-yz.js";import{t as s}from"./connection-store-B9-4NAfR.js";import{n as c}from"./query-store-fCiE0iiG.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./dialog-z_ZHxAMN.js";var h=e(t(),1),g=i(),_={execute:`command.localHistory.reason.execute`,replaced:`command.localHistory.reason.replaced`,restore:`command.localHistory.reason.restore`};function v(){let{t:e}=a(),t=n(e=>e.activeDialog),i=n(e=>e.closeDialog),v=n(e=>e.setFooterMessage),y=s(e=>e.activeConnectionId),b=c(e=>y?e.activeTabId[y]:null),x=c(e=>y&&b?e.snapshots[y]?.[b]:void 0)??[],[S,C]=(0,h.useState)(0),w=x[S];function T(){if(!y||!b||!w)return;let t=c.getState();t.captureSnapshot(y,b,`restore`),t.setEditorContent(y,b,w.text),v(e(`command.localHistory.restored`)),i()}return(0,g.jsx)(m,{open:t===`local-history`,onOpenChange:e=>{e||i()},children:(0,g.jsxs)(d,{className:`flex max-h-[80vh] flex-col sm:max-w-[860px]`,children:[(0,g.jsxs)(l,{children:[(0,g.jsx)(f,{children:e(`command.localHistory.title`)}),(0,g.jsx)(p,{children:e(`command.localHistory.description`)})]}),x.length===0?(0,g.jsx)(`div`,{className:`py-8 text-center text-sm text-muted-foreground`,children:e(`command.localHistory.empty`)}):(0,g.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-[240px_1fr] gap-3`,children:[(0,g.jsx)(r,{className:`h-[420px] rounded-md border`,children:(0,g.jsx)(`ul`,{className:`divide-y`,children:x.map((t,n)=>(0,g.jsx)(`li`,{children:(0,g.jsxs)(`button`,{type:`button`,onClick:()=>C(n),className:`flex w-full flex-col items-start gap-0.5 px-3 py-2 text-left text-xs hover:bg-accent ${n===S?`bg-accent`:``}`,children:[(0,g.jsx)(`span`,{className:`font-medium`,children:new Date(t.timestamp).toLocaleString()}),(0,g.jsxs)(`span`,{className:`text-muted-foreground`,children:[e(_[t.reason]),` · `,e(`command.localHistory.chars`,{count:t.text.length})]})]})},t.timestamp+`:`+n))})}),(0,g.jsx)(`pre`,{className:`h-[420px] overflow-auto rounded-md border bg-muted p-3 font-mono text-xs whitespace-pre-wrap`,children:w?.text})]}),(0,g.jsxs)(u,{children:[(0,g.jsx)(o,{variant:`outline`,onClick:i,children:e(`command.close`)}),(0,g.jsx)(o,{onClick:T,disabled:!w,children:e(`command.localHistory.restore`)})]})]})})}export{v as LocalHistoryDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{C as r,J as i,S as a,at as o,b as ee,ct as te,et as ne,lt as s,q as re,st as ie,w as c,x as l,y as ae}from"./main-CCLlOK4N.js";import{a as u,i as oe,l as d,m as se,t as f}from"./button-BGQhw-yz.js";import{a as p}from"./i18n-9War-oHy.js";import{t as m}from"./connection-store-B9-4NAfR.js";import{o as h}from"./database-D3ZazTXj.js";import{t as g}from"./engine-BmvPzjsq.js";import{a as ce,i as _,n as v,o as y,t as le}from"./dialog-z_ZHxAMN.js";var ue=u(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),de=u(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),b=u(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),fe=u(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]),x=e(t(),1),S=d(),C=10,pe=[2,5,10,30];function w(){let e=m.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function T(){let e=w();if(!e)throw Error(p.t(`command.noActiveConnection`));let t=await h(e,g().getQuery(`SHOW_PROCESS_LIST`));return t.records.map(e=>{let n={};return t.fields.forEach((t,r)=>{n[t.name]=e[r]}),{...n,Id:String(n.Id)}})}function E(e){return/^(sleep|idle)/i.test(e.Command??``)}function me(e){return/lock/i.test(e.State??``)}function he(e){return/PROCESSLIST|pg_stat_activity/i.test(e.Info??``)}function D(e){let t=Number(e.Time);return Number.isFinite(t)?t:0}function O(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m ${e%60}s`:`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`}function k({icon:e,label:t,value:n,tone:r}){return(0,S.jsxs)(`div`,{className:`flex min-w-[120px] flex-1 items-center gap-2.5 rounded-md border bg-muted/30 px-3 py-1.5`,children:[(0,S.jsx)(`div`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md [&_svg]:size-3.5 ${r===`warn`?`bg-catppuccin-yellow/15 text-catppuccin-yellow`:`bg-primary/10 text-primary`}`,children:e}),(0,S.jsxs)(`div`,{className:`min-w-0`,children:[(0,S.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:t}),(0,S.jsx)(`div`,{className:`truncate text-sm font-semibold tabular-nums`,children:n})]})]})}function A(){let{t:e}=se(),{activeDialog:t,closeDialog:u,setFooterMessage:d,requestDestructiveConfirm:p}=n(),[m,A]=(0,x.useState)([]),[j,M]=(0,x.useState)(!1),[N,P]=(0,x.useState)(5),[F,I]=(0,x.useState)(null),[L,R]=(0,x.useState)(``),[z,ge]=(0,x.useState)(!1),[B,_e]=(0,x.useState)(!0),[V,H]=(0,x.useState)(!1),[U,ve]=(0,x.useState)(null),[W,G]=(0,x.useState)(!1),K=(0,x.useRef)(null),q=t===`process-list`,J=(0,x.useCallback)(()=>Promise.resolve().then(()=>(H(!0),T())).then(e=>{A(e),ve(new Date)}).catch(t=>d(e(`command.processList.loadError`,{message:t instanceof Error?t.message:String(t)}))).finally(()=>H(!1)),[d,e]);(0,x.useEffect)(()=>{q&&J()},[q,J]),(0,x.useEffect)(()=>(K.current&&=(clearInterval(K.current),null),j&&q&&(K.current=setInterval(()=>{J()},N*1e3)),()=>{K.current&&=(clearInterval(K.current),null)}),[j,N,q,J]);function Y(e){e||(M(!1),I(null),R(``),u())}let X=(0,x.useMemo)(()=>{let e=m.filter(E).length,t=m.filter(e=>!E(e)).reduce((e,t)=>Math.max(e,D(t)),0);return{total:m.length,active:m.length-e,idle:e,longest:t}},[m]),Z=(0,x.useMemo)(()=>{let e=L.trim().toLowerCase();return m.filter(t=>z&&E(t)?!1:!e||[t.Id,t.User,t.Host,t.db,t.Command,t.State,t.Info].some(t=>(t??``).toString().toLowerCase().includes(e))).sort((e,t)=>B?D(t)-D(e):D(e)-D(t))},[m,L,z,B]),Q=m.find(e=>e.Id===F)??null,ye=(0,x.useCallback)(()=>{Q?.Info&&navigator.clipboard.writeText(Q.Info).then(()=>{G(!0),setTimeout(()=>G(!1),1500)})},[Q]);async function $(t){let n=t??F;if(!n){d(e(`command.processList.selectToKill`));return}let r=w();if(!r)return;let i=m.find(e=>e.Id===n),a=g().getQuery(`KILL_QUERY`,String(n));if(await p({title:e(`command.processList.killConfirmTitle`,{id:n}),description:e(`command.processList.killConfirmDescription`,{user:i?.User??`?`,host:i?.Host??`?`}),confirmLabel:e(`command.processList.killProcess`),statements:[a]}))try{await h(r,a),d(e(`command.processList.killed`,{id:n})),F===n&&I(null),J()}catch(t){d(e(`command.processList.killError`,{message:t instanceof Error?t.message:String(t)}))}}return(0,S.jsx)(le,{open:q,onOpenChange:Y,children:(0,S.jsxs)(v,{className:`flex max-h-[85vh] flex-col sm:max-w-[1000px]`,children:[(0,S.jsx)(ce,{children:(0,S.jsxs)(y,{className:`flex items-center gap-2`,children:[e(`command.processList.title`),U&&(0,S.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:e(`command.processList.updatedAt`,{time:U.toLocaleTimeString(void 0,{hour12:!1})})})]})}),(0,S.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,S.jsx)(k,{icon:(0,S.jsx)(ue,{}),label:e(`command.processList.stats.total`),value:X.total}),(0,S.jsx)(k,{icon:(0,S.jsx)(s,{}),label:e(`command.processList.stats.active`),value:X.active}),(0,S.jsx)(k,{icon:(0,S.jsx)(de,{}),label:e(`command.processList.stats.idle`),value:X.idle}),(0,S.jsx)(k,{icon:(0,S.jsx)(fe,{}),label:e(`command.processList.stats.longest`),value:O(X.longest),tone:X.longest>=C?`warn`:void 0})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(re,{className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,S.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background pl-7 pr-6 text-xs placeholder:text-muted-foreground`,placeholder:e(`command.processList.filterPlaceholder`),value:L,onChange:e=>R(e.target.value)}),L&&(0,S.jsx)(`button`,{type:`button`,className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>R(``),children:(0,S.jsx)(oe,{className:`size-3`})})]}),(0,S.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-xs`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:z,onChange:e=>ge(e.target.checked)}),e(`command.processList.hideIdle`)]}),(0,S.jsx)(`div`,{className:`flex-1`}),(0,S.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-xs`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:j,onChange:e=>M(e.target.checked)}),e(`command.processList.autoRefresh`)]}),(0,S.jsx)(`select`,{className:`h-7 rounded border bg-background px-1.5 text-xs disabled:opacity-50`,value:N,onChange:e=>P(Number(e.target.value)),disabled:!j,children:pe.map(e=>(0,S.jsxs)(`option`,{value:e,children:[e,`s`]},e))}),(0,S.jsxs)(f,{variant:`outline`,size:`sm`,className:`h-7`,onClick:()=>{J()},disabled:V,children:[(0,S.jsx)(i,{className:`mr-1 size-3.5 ${V?`animate-spin`:``}`}),e(`command.processList.refresh`)]})]}),(0,S.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border`,children:(0,S.jsxs)(ae,{className:`text-xs`,children:[(0,S.jsx)(r,{className:`sticky top-0 z-10 bg-background`,children:(0,S.jsxs)(c,{children:[(0,S.jsx)(a,{className:`w-[70px]`,children:e(`command.processList.columns.id`)}),(0,S.jsx)(a,{className:`w-[100px]`,children:e(`command.processList.columns.user`)}),(0,S.jsx)(a,{className:`w-[130px]`,children:e(`command.processList.columns.host`)}),(0,S.jsx)(a,{className:`w-[100px]`,children:e(`command.processList.columns.db`)}),(0,S.jsx)(a,{className:`w-[90px]`,children:e(`command.processList.columns.command`)}),(0,S.jsx)(a,{className:`w-[80px] cursor-pointer select-none`,onClick:()=>_e(e=>!e),children:(0,S.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e(`command.processList.columns.time`),B?(0,S.jsx)(te,{className:`size-3 text-primary`}):(0,S.jsx)(ie,{className:`size-3 text-primary`})]})}),(0,S.jsx)(a,{className:`w-[130px]`,children:e(`command.processList.columns.state`)}),(0,S.jsx)(a,{children:e(`command.processList.columns.info`)}),(0,S.jsx)(a,{className:`w-[50px]`})]})}),(0,S.jsx)(ee,{children:Z.length===0?(0,S.jsx)(c,{children:(0,S.jsx)(l,{colSpan:9,className:`py-8 text-center text-muted-foreground`,children:m.length===0?e(`command.processList.empty`):e(`command.processList.noMatch`)})}):Z.map(t=>{let n=E(t),r=D(t),i=!n&&r>=C,a=me(t),o=he(t);return(0,S.jsxs)(c,{"data-state":F===t.Id?`selected`:void 0,className:`cursor-pointer ${n?`text-muted-foreground`:``} ${a?`bg-destructive/5`:i?`bg-catppuccin-yellow/5`:``}`,onClick:()=>I(t.Id),children:[(0,S.jsx)(l,{className:`font-mono tabular-nums`,children:(0,S.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t.Id,o&&(0,S.jsx)(`span`,{className:`rounded bg-primary/10 px-1 text-[9px] font-semibold text-primary`,title:e(`command.processList.selfHint`),children:e(`command.processList.self`)})]})}),(0,S.jsx)(l,{children:t.User}),(0,S.jsx)(l,{className:`font-mono`,children:t.Host}),(0,S.jsx)(l,{className:`font-mono`,children:t.db??``}),(0,S.jsx)(l,{children:(0,S.jsx)(`span`,{className:`rounded px-1.5 py-px text-[10px] font-medium ${n?`bg-muted`:`bg-green-500/10 text-green-600 dark:text-green-400`}`,children:t.Command})}),(0,S.jsx)(l,{className:`tabular-nums ${i?`font-semibold text-catppuccin-yellow`:``}`,children:O(r)}),(0,S.jsx)(l,{className:a?`font-medium text-destructive`:``,children:t.State}),(0,S.jsx)(l,{className:`max-w-[260px] truncate font-mono`,title:t.Info??``,children:t.Info??``}),(0,S.jsx)(l,{className:`text-right`,children:(0,S.jsx)(`button`,{type:`button`,className:`rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,title:e(`command.processList.kill`),onClick:e=>{e.stopPropagation(),$(t.Id)},children:(0,S.jsx)(b,{className:`size-3.5`})})})]},t.Id)})})]})}),Q&&(0,S.jsxs)(`div`,{className:`shrink-0 rounded-md border`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 border-b bg-muted/30 px-3 py-1`,children:[(0,S.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e(`command.processList.statementOf`,{id:Q.Id})}),(0,S.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[Q.User,`@`,Q.Host,Q.db?` · ${Q.db}`:``]}),(0,S.jsx)(`div`,{className:`flex-1`}),(0,S.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40`,onClick:ye,disabled:!Q.Info,children:[W?(0,S.jsx)(o,{className:`size-3`}):(0,S.jsx)(ne,{className:`size-3`}),e(W?`command.processList.copied`:`command.processList.copy`)]})]}),(0,S.jsx)(`pre`,{className:`max-h-32 overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs`,children:Q.Info||(0,S.jsx)(`span`,{className:`italic text-muted-foreground`,children:e(`command.processList.noStatement`)})})]}),(0,S.jsxs)(_,{children:[(0,S.jsx)(f,{variant:`destructive`,onClick:()=>{$()},disabled:!F,children:e(`command.processList.killProcess`)}),(0,S.jsx)(f,{variant:`outline`,onClick:()=>Y(!1),children:e(`command.close`)})]})]})})}export{A as ProcessListDialog};
|
|
1
|
+
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{C as r,J as i,S as a,at as o,b as ee,ct as te,et as ne,lt as s,q as re,st as ie,w as c,x as l,y as ae}from"./main-B9Gu9otb.js";import{a as u,i as oe,l as d,m as se,t as f}from"./button-BGQhw-yz.js";import{a as p}from"./i18n-DFnLZX4V.js";import{t as m}from"./connection-store-B9-4NAfR.js";import{o as h}from"./database-7RkacLLF.js";import{t as g}from"./engine-DRzYxvTs.js";import{a as ce,i as _,n as v,o as y,t as le}from"./dialog-z_ZHxAMN.js";var ue=u(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),de=u(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),b=u(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),fe=u(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]),x=e(t(),1),S=d(),C=10,pe=[2,5,10,30];function w(){let e=m.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function T(){let e=w();if(!e)throw Error(p.t(`command.noActiveConnection`));let t=await h(e,g().getQuery(`SHOW_PROCESS_LIST`));return t.records.map(e=>{let n={};return t.fields.forEach((t,r)=>{n[t.name]=e[r]}),{...n,Id:String(n.Id)}})}function E(e){return/^(sleep|idle)/i.test(e.Command??``)}function me(e){return/lock/i.test(e.State??``)}function he(e){return/PROCESSLIST|pg_stat_activity/i.test(e.Info??``)}function D(e){let t=Number(e.Time);return Number.isFinite(t)?t:0}function O(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m ${e%60}s`:`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`}function k({icon:e,label:t,value:n,tone:r}){return(0,S.jsxs)(`div`,{className:`flex min-w-[120px] flex-1 items-center gap-2.5 rounded-md border bg-muted/30 px-3 py-1.5`,children:[(0,S.jsx)(`div`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md [&_svg]:size-3.5 ${r===`warn`?`bg-catppuccin-yellow/15 text-catppuccin-yellow`:`bg-primary/10 text-primary`}`,children:e}),(0,S.jsxs)(`div`,{className:`min-w-0`,children:[(0,S.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:t}),(0,S.jsx)(`div`,{className:`truncate text-sm font-semibold tabular-nums`,children:n})]})]})}function A(){let{t:e}=se(),{activeDialog:t,closeDialog:u,setFooterMessage:d,requestDestructiveConfirm:p}=n(),[m,A]=(0,x.useState)([]),[j,M]=(0,x.useState)(!1),[N,P]=(0,x.useState)(5),[F,I]=(0,x.useState)(null),[L,R]=(0,x.useState)(``),[z,ge]=(0,x.useState)(!1),[B,_e]=(0,x.useState)(!0),[V,H]=(0,x.useState)(!1),[U,ve]=(0,x.useState)(null),[W,G]=(0,x.useState)(!1),K=(0,x.useRef)(null),q=t===`process-list`,J=(0,x.useCallback)(()=>Promise.resolve().then(()=>(H(!0),T())).then(e=>{A(e),ve(new Date)}).catch(t=>d(e(`command.processList.loadError`,{message:t instanceof Error?t.message:String(t)}))).finally(()=>H(!1)),[d,e]);(0,x.useEffect)(()=>{q&&J()},[q,J]),(0,x.useEffect)(()=>(K.current&&=(clearInterval(K.current),null),j&&q&&(K.current=setInterval(()=>{J()},N*1e3)),()=>{K.current&&=(clearInterval(K.current),null)}),[j,N,q,J]);function Y(e){e||(M(!1),I(null),R(``),u())}let X=(0,x.useMemo)(()=>{let e=m.filter(E).length,t=m.filter(e=>!E(e)).reduce((e,t)=>Math.max(e,D(t)),0);return{total:m.length,active:m.length-e,idle:e,longest:t}},[m]),Z=(0,x.useMemo)(()=>{let e=L.trim().toLowerCase();return m.filter(t=>z&&E(t)?!1:!e||[t.Id,t.User,t.Host,t.db,t.Command,t.State,t.Info].some(t=>(t??``).toString().toLowerCase().includes(e))).sort((e,t)=>B?D(t)-D(e):D(e)-D(t))},[m,L,z,B]),Q=m.find(e=>e.Id===F)??null,ye=(0,x.useCallback)(()=>{Q?.Info&&navigator.clipboard.writeText(Q.Info).then(()=>{G(!0),setTimeout(()=>G(!1),1500)})},[Q]);async function $(t){let n=t??F;if(!n){d(e(`command.processList.selectToKill`));return}let r=w();if(!r)return;let i=m.find(e=>e.Id===n),a=g().getQuery(`KILL_QUERY`,String(n));if(await p({title:e(`command.processList.killConfirmTitle`,{id:n}),description:e(`command.processList.killConfirmDescription`,{user:i?.User??`?`,host:i?.Host??`?`}),confirmLabel:e(`command.processList.killProcess`),statements:[a]}))try{await h(r,a),d(e(`command.processList.killed`,{id:n})),F===n&&I(null),J()}catch(t){d(e(`command.processList.killError`,{message:t instanceof Error?t.message:String(t)}))}}return(0,S.jsx)(le,{open:q,onOpenChange:Y,children:(0,S.jsxs)(v,{className:`flex max-h-[85vh] flex-col sm:max-w-[1000px]`,children:[(0,S.jsx)(ce,{children:(0,S.jsxs)(y,{className:`flex items-center gap-2`,children:[e(`command.processList.title`),U&&(0,S.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:e(`command.processList.updatedAt`,{time:U.toLocaleTimeString(void 0,{hour12:!1})})})]})}),(0,S.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,S.jsx)(k,{icon:(0,S.jsx)(ue,{}),label:e(`command.processList.stats.total`),value:X.total}),(0,S.jsx)(k,{icon:(0,S.jsx)(s,{}),label:e(`command.processList.stats.active`),value:X.active}),(0,S.jsx)(k,{icon:(0,S.jsx)(de,{}),label:e(`command.processList.stats.idle`),value:X.idle}),(0,S.jsx)(k,{icon:(0,S.jsx)(fe,{}),label:e(`command.processList.stats.longest`),value:O(X.longest),tone:X.longest>=C?`warn`:void 0})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(re,{className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,S.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background pl-7 pr-6 text-xs placeholder:text-muted-foreground`,placeholder:e(`command.processList.filterPlaceholder`),value:L,onChange:e=>R(e.target.value)}),L&&(0,S.jsx)(`button`,{type:`button`,className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>R(``),children:(0,S.jsx)(oe,{className:`size-3`})})]}),(0,S.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-xs`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:z,onChange:e=>ge(e.target.checked)}),e(`command.processList.hideIdle`)]}),(0,S.jsx)(`div`,{className:`flex-1`}),(0,S.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-xs`,children:[(0,S.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:j,onChange:e=>M(e.target.checked)}),e(`command.processList.autoRefresh`)]}),(0,S.jsx)(`select`,{className:`h-7 rounded border bg-background px-1.5 text-xs disabled:opacity-50`,value:N,onChange:e=>P(Number(e.target.value)),disabled:!j,children:pe.map(e=>(0,S.jsxs)(`option`,{value:e,children:[e,`s`]},e))}),(0,S.jsxs)(f,{variant:`outline`,size:`sm`,className:`h-7`,onClick:()=>{J()},disabled:V,children:[(0,S.jsx)(i,{className:`mr-1 size-3.5 ${V?`animate-spin`:``}`}),e(`command.processList.refresh`)]})]}),(0,S.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border`,children:(0,S.jsxs)(ae,{className:`text-xs`,children:[(0,S.jsx)(r,{className:`sticky top-0 z-10 bg-background`,children:(0,S.jsxs)(c,{children:[(0,S.jsx)(a,{className:`w-[70px]`,children:e(`command.processList.columns.id`)}),(0,S.jsx)(a,{className:`w-[100px]`,children:e(`command.processList.columns.user`)}),(0,S.jsx)(a,{className:`w-[130px]`,children:e(`command.processList.columns.host`)}),(0,S.jsx)(a,{className:`w-[100px]`,children:e(`command.processList.columns.db`)}),(0,S.jsx)(a,{className:`w-[90px]`,children:e(`command.processList.columns.command`)}),(0,S.jsx)(a,{className:`w-[80px] cursor-pointer select-none`,onClick:()=>_e(e=>!e),children:(0,S.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e(`command.processList.columns.time`),B?(0,S.jsx)(te,{className:`size-3 text-primary`}):(0,S.jsx)(ie,{className:`size-3 text-primary`})]})}),(0,S.jsx)(a,{className:`w-[130px]`,children:e(`command.processList.columns.state`)}),(0,S.jsx)(a,{children:e(`command.processList.columns.info`)}),(0,S.jsx)(a,{className:`w-[50px]`})]})}),(0,S.jsx)(ee,{children:Z.length===0?(0,S.jsx)(c,{children:(0,S.jsx)(l,{colSpan:9,className:`py-8 text-center text-muted-foreground`,children:m.length===0?e(`command.processList.empty`):e(`command.processList.noMatch`)})}):Z.map(t=>{let n=E(t),r=D(t),i=!n&&r>=C,a=me(t),o=he(t);return(0,S.jsxs)(c,{"data-state":F===t.Id?`selected`:void 0,className:`cursor-pointer ${n?`text-muted-foreground`:``} ${a?`bg-destructive/5`:i?`bg-catppuccin-yellow/5`:``}`,onClick:()=>I(t.Id),children:[(0,S.jsx)(l,{className:`font-mono tabular-nums`,children:(0,S.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t.Id,o&&(0,S.jsx)(`span`,{className:`rounded bg-primary/10 px-1 text-[9px] font-semibold text-primary`,title:e(`command.processList.selfHint`),children:e(`command.processList.self`)})]})}),(0,S.jsx)(l,{children:t.User}),(0,S.jsx)(l,{className:`font-mono`,children:t.Host}),(0,S.jsx)(l,{className:`font-mono`,children:t.db??``}),(0,S.jsx)(l,{children:(0,S.jsx)(`span`,{className:`rounded px-1.5 py-px text-[10px] font-medium ${n?`bg-muted`:`bg-green-500/10 text-green-600 dark:text-green-400`}`,children:t.Command})}),(0,S.jsx)(l,{className:`tabular-nums ${i?`font-semibold text-catppuccin-yellow`:``}`,children:O(r)}),(0,S.jsx)(l,{className:a?`font-medium text-destructive`:``,children:t.State}),(0,S.jsx)(l,{className:`max-w-[260px] truncate font-mono`,title:t.Info??``,children:t.Info??``}),(0,S.jsx)(l,{className:`text-right`,children:(0,S.jsx)(`button`,{type:`button`,className:`rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,title:e(`command.processList.kill`),onClick:e=>{e.stopPropagation(),$(t.Id)},children:(0,S.jsx)(b,{className:`size-3.5`})})})]},t.Id)})})]})}),Q&&(0,S.jsxs)(`div`,{className:`shrink-0 rounded-md border`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-2 border-b bg-muted/30 px-3 py-1`,children:[(0,S.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e(`command.processList.statementOf`,{id:Q.Id})}),(0,S.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[Q.User,`@`,Q.Host,Q.db?` · ${Q.db}`:``]}),(0,S.jsx)(`div`,{className:`flex-1`}),(0,S.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40`,onClick:ye,disabled:!Q.Info,children:[W?(0,S.jsx)(o,{className:`size-3`}):(0,S.jsx)(ne,{className:`size-3`}),e(W?`command.processList.copied`:`command.processList.copy`)]})]}),(0,S.jsx)(`pre`,{className:`max-h-32 overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs`,children:Q.Info||(0,S.jsx)(`span`,{className:`italic text-muted-foreground`,children:e(`command.processList.noStatement`)})})]}),(0,S.jsxs)(_,{children:[(0,S.jsx)(f,{variant:`destructive`,onClick:()=>{$()},disabled:!F,children:e(`command.processList.killProcess`)}),(0,S.jsx)(f,{variant:`outline`,onClick:()=>Y(!1),children:e(`command.close`)})]})]})})}export{A as ProcessListDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{$ as r,B as i,G as a,H as o,J as s,V as c,W as l,X as u,Y as d,lt as f,q as p}from"./main-CCLlOK4N.js";import{a as m,f as h,l as g,m as _,o as v,s as y}from"./button-BGQhw-yz.js";import{_ as b,a as x,o as S,r as C,t as w}from"./dist-R-HWeP5h.js";import{r as T}from"./settings-store-MJead_iM.js";import{t as E}from"./use-engine-z0WEd5U4.js";import{a as D,n as O,o as k,r as A,t as j}from"./dialog-z_ZHxAMN.js";var M=m(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),N=m(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),P=m(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),F=e(t(),1),I=1,L=.9,R=.8,z=.17,B=.1,ee=.999,te=.9999,ne=.99,re=/[\\\/_+.#"@\[\(\{&]/,ie=/[\\\/_+.#"@\[\(\{&]/g,ae=/[\s-]/,oe=/[\s-]/g;function V(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?I:ne;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=V(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=I:re.test(e.charAt(l-1))?(d*=R,p=e.slice(i,l-1).match(ie),p&&i>0&&(d*=ee**+p.length)):ae.test(e.charAt(l-1))?(d*=L,m=e.slice(i,l-1).match(oe),m&&i>0&&(d*=ee**+m.length)):(d*=z,i>0&&(d*=ee**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=te)),(d<B&&n.charAt(l-1)===r.charAt(a+1)||r.charAt(a+1)===r.charAt(a)&&n.charAt(l-1)!==r.charAt(a))&&(f=V(e,t,n,r,l+1,a+2,o),f*B>d&&(d=f*B)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function se(e){return e.toLowerCase().replace(oe,` `)}function ce(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,V(e,t,se(e),se(t),0,0,{})}var H=`[cmdk-group=""]`,U=`[cmdk-group-items=""]`,le=`[cmdk-group-heading=""]`,ue=`[cmdk-item=""]`,de=`${ue}:not([aria-disabled="true"])`,W=`cmdk-item-select`,G=`data-value`,fe=(e,t,n)=>ce(e,t,n),pe=F.createContext(void 0),K=()=>F.useContext(pe),me=F.createContext(void 0),q=()=>F.useContext(me),he=F.createContext(void 0),ge=F.forwardRef((e,t)=>{let n=X(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=X(()=>new Set),i=X(()=>new Map),a=X(()=>new Map),o=X(()=>new Set),s=De(e),{label:c,children:l,value:u,onValueChange:d,filter:f,shouldFilter:p,loop:m,disablePointerSelection:h=!1,vimBindings:g=!0,..._}=e,v=b(),x=b(),S=b(),C=F.useRef(null),w=ke();Y(()=>{if(u!==void 0){let e=u.trim();n.current.value=e,T.emit()}},[u]),Y(()=>{w(6,j)},[]);let T=F.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)A(),O(),w(1,k);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(S);e?e.focus():(i=document.getElementById(v))==null||i.focus()}if(w(7,()=>{n.current.selectedItemId=M()?.id,T.emit()}),r||w(5,j),s.current?.value!==void 0){let e=t??``;(o=(a=s.current).onValueChange)==null||o.call(a,e);return}}T.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),E=F.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,D(t,r)),w(2,()=>{O(),T.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),w(3,()=>{A(),O(),n.current.value||k(),T.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=M();w(4,()=>{A(),t?.getAttribute(`id`)===e&&k(),T.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>s.current.shouldFilter,label:c||e[`aria-label`],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:v,inputId:S,labelId:x,listInnerRef:C}),[]);function D(e,t){let r=s.current?.filter??fe;return e?r(e,n.current.search,t):0}function O(){if(!n.current.search||s.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=C.current;N().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(U);t?t.appendChild(e.parentElement===t?e:e.closest(`${U} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${U} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=C.current?.querySelector(`${H}[${G}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function k(){let e=N().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(G);T.setState(`value`,e||void 0)}function A(){if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=D(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function j(){var e;let t=M();t&&(t.parentElement?.firstChild===t&&((e=t.closest(H)?.querySelector(le))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function M(){return C.current?.querySelector(`${ue}[aria-selected="true"]`)}function N(){return Array.from(C.current?.querySelectorAll(de)||[])}function P(e){let t=N()[e];t&&T.setState(`value`,t.getAttribute(G))}function I(e){var t;let n=M(),r=N(),i=r.findIndex(e=>e===n),a=r[i+e];(t=s.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&T.setState(`value`,a.getAttribute(G))}function L(e){let t=M()?.closest(H),n;for(;t&&!n;)t=e>0?Te(t,H):Ee(t,H),n=t?.querySelector(de);n?T.setState(`value`,n.getAttribute(G)):I(e)}let R=()=>P(N().length-1),z=e=>{e.preventDefault(),e.metaKey?R():e.altKey?L(1):I(1)},B=e=>{e.preventDefault(),e.metaKey?P(0):e.altKey?L(-1):I(-1)};return F.createElement(y.div,{ref:t,tabIndex:-1,..._,"cmdk-root":``,onKeyDown:e=>{var t;(t=_.onKeyDown)==null||t.call(_,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:g&&e.ctrlKey&&z(e);break;case`ArrowDown`:z(e);break;case`p`:case`k`:g&&e.ctrlKey&&B(e);break;case`ArrowUp`:B(e);break;case`Home`:e.preventDefault(),P(0);break;case`End`:e.preventDefault(),R();break;case`Enter`:{e.preventDefault();let t=M();if(t){let e=new Event(W);t.dispatchEvent(e)}}}}},F.createElement(`label`,{"cmdk-label":``,htmlFor:E.inputId,id:E.labelId,style:je},c),Q(e,e=>F.createElement(me.Provider,{value:T},F.createElement(pe.Provider,{value:E},e))))}),_e=F.forwardRef((e,t)=>{let n=b(),r=F.useRef(null),i=F.useContext(he),a=K(),o=De(e),s=o.current?.forceMount??i?.forceMount;Y(()=>{if(!s)return a.item(n,i?.id)},[s]);let c=Oe(n,r,[e.value,e.children,r],e.keywords),l=q(),u=Z(e=>e.value&&e.value===c.current),d=Z(e=>s||a.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);F.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(W,f),()=>t.removeEventListener(W,f)},[d,e.onSelect,e.disabled]);function f(){var e,t;p(),(t=(e=o.current).onSelect)==null||t.call(e,c.current)}function p(){l.setState(`value`,c.current,!0)}if(!d)return null;let{disabled:m,value:g,onSelect:_,forceMount:v,keywords:x,...S}=e;return F.createElement(y.div,{ref:h(r,t),...S,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!m,"aria-selected":!!u,"data-disabled":!!m,"data-selected":!!u,onPointerMove:m||a.getDisablePointerSelection()?void 0:p,onClick:m?void 0:f},e.children)}),ve=F.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=b(),s=F.useRef(null),c=F.useRef(null),l=b(),u=K(),d=Z(e=>i||u.filter()===!1?!0:!e.search||e.filtered.groups.has(o));Y(()=>u.group(o),[]),Oe(o,s,[e.value,e.heading,c]);let f=F.useMemo(()=>({id:o,forceMount:i}),[i]);return F.createElement(y.div,{ref:h(s,t),...a,"cmdk-group":``,role:`presentation`,hidden:!d||void 0},n&&F.createElement(`div`,{ref:c,"cmdk-group-heading":``,"aria-hidden":!0,id:l},n),Q(e,e=>F.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?l:void 0},F.createElement(he.Provider,{value:f},e))))}),ye=F.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=F.useRef(null),a=Z(e=>!e.search);return!n&&!a?null:F.createElement(y.div,{ref:h(i,t),...r,"cmdk-separator":``,role:`separator`})}),be=F.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=q(),o=Z(e=>e.search),s=Z(e=>e.selectedItemId),c=K();return F.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),F.createElement(y.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":s,id:c.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),xe=F.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=F.useRef(null),o=F.useRef(null),s=Z(e=>e.selectedItemId),c=K();return F.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),F.createElement(y.div,{ref:h(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:c.listId},Q(e,e=>F.createElement(`div`,{ref:h(o,c.listInnerRef),"cmdk-list-sizer":``},e)))}),Se=F.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return F.createElement(w,{open:n,onOpenChange:r},F.createElement(S,{container:o},F.createElement(x,{"cmdk-overlay":``,className:i}),F.createElement(C,{"aria-label":e.label,"cmdk-dialog":``,className:a},F.createElement(ge,{ref:t,...s}))))}),Ce=F.forwardRef((e,t)=>Z(e=>e.filtered.count===0)?F.createElement(y.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),we=F.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return F.createElement(y.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Q(e,e=>F.createElement(`div`,{"aria-hidden":!0},e)))}),J=Object.assign(ge,{List:xe,Item:_e,Input:be,Group:ve,Separator:ye,Dialog:Se,Empty:Ce,Loading:we});function Te(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function Ee(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function De(e){let t=F.useRef(e);return Y(()=>{t.current=e}),t}var Y=typeof window>`u`?F.useEffect:F.useLayoutEffect;function X(e){let t=F.useRef();return t.current===void 0&&(t.current=e()),t}function Z(e){let t=q(),n=()=>e(t.snapshot());return F.useSyncExternalStore(t.subscribe,n,n)}function Oe(e,t,n,r=[]){let i=F.useRef(),a=K();return Y(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(G,s),i.current=s}),i}var ke=()=>{let[e,t]=F.useState(),n=X(()=>new Map);return Y(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function Ae(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Q({asChild:e,children:t},n){return e&&F.isValidElement(t)?F.cloneElement(Ae(t),{ref:t.ref},n(t.props.children)):n(t)}var je={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},$=g();function Me({className:e,...t}){return(0,$.jsx)(J,{"data-slot":`command`,className:v(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),...t})}function Ne({title:e=`Command Palette`,description:t=`Search for a command to run...`,children:n,className:r,showCloseButton:i=!0,...a}){return(0,$.jsxs)(j,{...a,children:[(0,$.jsxs)(D,{className:`sr-only`,children:[(0,$.jsx)(k,{children:e}),(0,$.jsx)(A,{children:t})]}),(0,$.jsx)(O,{className:v(`overflow-hidden p-0`,r),showCloseButton:i,children:(0,$.jsx)(Me,{className:`**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5`,children:n})})]})}function Pe({className:e,...t}){return(0,$.jsxs)(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-b px-3`,children:[(0,$.jsx)(p,{className:`size-4 shrink-0 opacity-50`}),(0,$.jsx)(J.Input,{"data-slot":`command-input`,className:v(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,e),...t})]})}function Fe({className:e,...t}){return(0,$.jsx)(J.List,{"data-slot":`command-list`,className:v(`max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto`,e),...t})}function Ie({...e}){return(0,$.jsx)(J.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function Le({className:e,...t}){return(0,$.jsx)(J.Group,{"data-slot":`command-group`,className:v(`overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground`,e),...t})}function Re({className:e,...t}){return(0,$.jsx)(J.Item,{"data-slot":`command-item`,className:v(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...t})}function ze({className:e,...t}){return(0,$.jsx)(`span`,{"data-slot":`command-shortcut`,className:v(`ml-auto text-xs tracking-widest text-muted-foreground`,e),...t})}function Be(){let{t:e}=_(),{activeDialog:t,closeDialog:p,openDialog:m}=n(),{executeCurrentQuery:h,addNewQueryTab:g,disconnectActive:v}=i(),{capabilities:y}=E(),b=T(),x=t===`quick-command`,S=(0,F.useCallback)(e=>{p(),e()},[p]),C=[{heading:e(`palette.groups.connection`),commands:[...b?[{id:`connect`,label:e(`palette.commands.connect`),icon:M,action:()=>S(()=>m(`connect`))}]:[],{id:`disconnect`,label:e(`palette.commands.disconnect`),icon:o,action:()=>S(()=>{v()})}]},{heading:e(`palette.groups.query`),commands:[{id:`execute`,label:e(`palette.commands.executeQuery`),icon:u,shortcut:`F9`,action:()=>S(()=>{h()})},{id:`new-tab`,label:e(`palette.commands.newQueryTab`),icon:d,action:()=>S(()=>g())}]},{heading:e(`palette.groups.database`),commands:[{id:`create-db`,capability:`multipleDatabases`,label:e(`palette.commands.createDatabase`),icon:r,action:()=>S(()=>m(`create-database`))}]},{heading:e(`palette.groups.table`),commands:[{id:`create-table`,label:e(`palette.commands.createTable`),icon:a,action:()=>S(()=>m(`create-table`))},{id:`alter-table`,label:e(`palette.commands.alterTable`),icon:P,action:()=>S(()=>m(`alter-table`))}]},{heading:e(`palette.groups.tools`),commands:[{id:`process-list`,capability:`processList`,label:e(`palette.commands.processList`),icon:f,action:()=>S(()=>m(`process-list`))},{id:`variables`,capability:`variables`,label:e(`palette.commands.serverVariables`),icon:N,action:()=>S(()=>m(`variables`))},{id:`status`,capability:`status`,label:e(`palette.commands.serverStatus`),icon:l,action:()=>S(()=>m(`status`))},{id:`flush`,capability:`flush`,label:e(`palette.commands.flush`),icon:s,action:()=>S(()=>m(`flush`))},{id:`user-manager`,capability:`users`,label:e(`palette.commands.userManager`),icon:c,action:()=>S(()=>m(`user-manager`))}]}];(0,F.useEffect)(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.key===`k`&&(e.preventDefault(),x?p():m(`quick-command`))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[x,m,p]);function w(e){e||p()}return(0,$.jsxs)(Ne,{open:x,onOpenChange:w,title:e(`palette.title`),description:e(`palette.description`),children:[(0,$.jsx)(Pe,{placeholder:e(`palette.inputPlaceholder`)}),(0,$.jsxs)(Fe,{children:[(0,$.jsx)(Ie,{children:e(`palette.empty`)}),C.map(e=>({...e,commands:e.commands.filter(e=>!e.capability||y[e.capability])})).filter(e=>e.commands.length>0).map(e=>(0,$.jsx)(Le,{heading:e.heading,children:e.commands.map(e=>(0,$.jsxs)(Re,{onSelect:e.action,children:[(0,$.jsx)(e.icon,{className:`h-4 w-4`}),(0,$.jsx)(`span`,{children:e.label}),e.shortcut&&(0,$.jsx)(ze,{children:e.shortcut})]},e.id))},e.heading))]})]})}export{Be as QuickCommandPalette};
|
|
1
|
+
import{_ as e,m as t,n}from"./ui-store-DWSBgCoR.js";import{$ as r,B as i,G as a,H as o,J as s,V as c,W as l,X as u,Y as d,lt as f,q as p}from"./main-B9Gu9otb.js";import{a as m,f as h,l as g,m as _,o as v,s as y}from"./button-BGQhw-yz.js";import{_ as b,a as x,o as S,r as C,t as w}from"./dist-R-HWeP5h.js";import{r as T}from"./settings-store-MJead_iM.js";import{t as E}from"./use-engine-5vf18JRu.js";import{a as D,n as O,o as k,r as A,t as j}from"./dialog-z_ZHxAMN.js";var M=m(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),N=m(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),P=m(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),F=e(t(),1),I=1,L=.9,R=.8,z=.17,B=.1,ee=.999,te=.9999,ne=.99,re=/[\\\/_+.#"@\[\(\{&]/,ie=/[\\\/_+.#"@\[\(\{&]/g,ae=/[\s-]/,oe=/[\s-]/g;function V(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?I:ne;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=V(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=I:re.test(e.charAt(l-1))?(d*=R,p=e.slice(i,l-1).match(ie),p&&i>0&&(d*=ee**+p.length)):ae.test(e.charAt(l-1))?(d*=L,m=e.slice(i,l-1).match(oe),m&&i>0&&(d*=ee**+m.length)):(d*=z,i>0&&(d*=ee**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=te)),(d<B&&n.charAt(l-1)===r.charAt(a+1)||r.charAt(a+1)===r.charAt(a)&&n.charAt(l-1)!==r.charAt(a))&&(f=V(e,t,n,r,l+1,a+2,o),f*B>d&&(d=f*B)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function se(e){return e.toLowerCase().replace(oe,` `)}function ce(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,V(e,t,se(e),se(t),0,0,{})}var H=`[cmdk-group=""]`,U=`[cmdk-group-items=""]`,le=`[cmdk-group-heading=""]`,ue=`[cmdk-item=""]`,de=`${ue}:not([aria-disabled="true"])`,W=`cmdk-item-select`,G=`data-value`,fe=(e,t,n)=>ce(e,t,n),pe=F.createContext(void 0),K=()=>F.useContext(pe),me=F.createContext(void 0),q=()=>F.useContext(me),he=F.createContext(void 0),ge=F.forwardRef((e,t)=>{let n=X(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=X(()=>new Set),i=X(()=>new Map),a=X(()=>new Map),o=X(()=>new Set),s=De(e),{label:c,children:l,value:u,onValueChange:d,filter:f,shouldFilter:p,loop:m,disablePointerSelection:h=!1,vimBindings:g=!0,..._}=e,v=b(),x=b(),S=b(),C=F.useRef(null),w=ke();Y(()=>{if(u!==void 0){let e=u.trim();n.current.value=e,T.emit()}},[u]),Y(()=>{w(6,j)},[]);let T=F.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)A(),O(),w(1,k);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(S);e?e.focus():(i=document.getElementById(v))==null||i.focus()}if(w(7,()=>{n.current.selectedItemId=M()?.id,T.emit()}),r||w(5,j),s.current?.value!==void 0){let e=t??``;(o=(a=s.current).onValueChange)==null||o.call(a,e);return}}T.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),E=F.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,D(t,r)),w(2,()=>{O(),T.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),w(3,()=>{A(),O(),n.current.value||k(),T.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=M();w(4,()=>{A(),t?.getAttribute(`id`)===e&&k(),T.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>s.current.shouldFilter,label:c||e[`aria-label`],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:v,inputId:S,labelId:x,listInnerRef:C}),[]);function D(e,t){let r=s.current?.filter??fe;return e?r(e,n.current.search,t):0}function O(){if(!n.current.search||s.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=C.current;N().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(U);t?t.appendChild(e.parentElement===t?e:e.closest(`${U} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${U} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=C.current?.querySelector(`${H}[${G}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function k(){let e=N().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(G);T.setState(`value`,e||void 0)}function A(){if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=D(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function j(){var e;let t=M();t&&(t.parentElement?.firstChild===t&&((e=t.closest(H)?.querySelector(le))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function M(){return C.current?.querySelector(`${ue}[aria-selected="true"]`)}function N(){return Array.from(C.current?.querySelectorAll(de)||[])}function P(e){let t=N()[e];t&&T.setState(`value`,t.getAttribute(G))}function I(e){var t;let n=M(),r=N(),i=r.findIndex(e=>e===n),a=r[i+e];(t=s.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&T.setState(`value`,a.getAttribute(G))}function L(e){let t=M()?.closest(H),n;for(;t&&!n;)t=e>0?Te(t,H):Ee(t,H),n=t?.querySelector(de);n?T.setState(`value`,n.getAttribute(G)):I(e)}let R=()=>P(N().length-1),z=e=>{e.preventDefault(),e.metaKey?R():e.altKey?L(1):I(1)},B=e=>{e.preventDefault(),e.metaKey?P(0):e.altKey?L(-1):I(-1)};return F.createElement(y.div,{ref:t,tabIndex:-1,..._,"cmdk-root":``,onKeyDown:e=>{var t;(t=_.onKeyDown)==null||t.call(_,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:g&&e.ctrlKey&&z(e);break;case`ArrowDown`:z(e);break;case`p`:case`k`:g&&e.ctrlKey&&B(e);break;case`ArrowUp`:B(e);break;case`Home`:e.preventDefault(),P(0);break;case`End`:e.preventDefault(),R();break;case`Enter`:{e.preventDefault();let t=M();if(t){let e=new Event(W);t.dispatchEvent(e)}}}}},F.createElement(`label`,{"cmdk-label":``,htmlFor:E.inputId,id:E.labelId,style:je},c),Q(e,e=>F.createElement(me.Provider,{value:T},F.createElement(pe.Provider,{value:E},e))))}),_e=F.forwardRef((e,t)=>{let n=b(),r=F.useRef(null),i=F.useContext(he),a=K(),o=De(e),s=o.current?.forceMount??i?.forceMount;Y(()=>{if(!s)return a.item(n,i?.id)},[s]);let c=Oe(n,r,[e.value,e.children,r],e.keywords),l=q(),u=Z(e=>e.value&&e.value===c.current),d=Z(e=>s||a.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);F.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(W,f),()=>t.removeEventListener(W,f)},[d,e.onSelect,e.disabled]);function f(){var e,t;p(),(t=(e=o.current).onSelect)==null||t.call(e,c.current)}function p(){l.setState(`value`,c.current,!0)}if(!d)return null;let{disabled:m,value:g,onSelect:_,forceMount:v,keywords:x,...S}=e;return F.createElement(y.div,{ref:h(r,t),...S,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!m,"aria-selected":!!u,"data-disabled":!!m,"data-selected":!!u,onPointerMove:m||a.getDisablePointerSelection()?void 0:p,onClick:m?void 0:f},e.children)}),ve=F.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=b(),s=F.useRef(null),c=F.useRef(null),l=b(),u=K(),d=Z(e=>i||u.filter()===!1?!0:!e.search||e.filtered.groups.has(o));Y(()=>u.group(o),[]),Oe(o,s,[e.value,e.heading,c]);let f=F.useMemo(()=>({id:o,forceMount:i}),[i]);return F.createElement(y.div,{ref:h(s,t),...a,"cmdk-group":``,role:`presentation`,hidden:!d||void 0},n&&F.createElement(`div`,{ref:c,"cmdk-group-heading":``,"aria-hidden":!0,id:l},n),Q(e,e=>F.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?l:void 0},F.createElement(he.Provider,{value:f},e))))}),ye=F.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=F.useRef(null),a=Z(e=>!e.search);return!n&&!a?null:F.createElement(y.div,{ref:h(i,t),...r,"cmdk-separator":``,role:`separator`})}),be=F.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=q(),o=Z(e=>e.search),s=Z(e=>e.selectedItemId),c=K();return F.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),F.createElement(y.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":s,id:c.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),xe=F.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=F.useRef(null),o=F.useRef(null),s=Z(e=>e.selectedItemId),c=K();return F.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),F.createElement(y.div,{ref:h(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:c.listId},Q(e,e=>F.createElement(`div`,{ref:h(o,c.listInnerRef),"cmdk-list-sizer":``},e)))}),Se=F.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return F.createElement(w,{open:n,onOpenChange:r},F.createElement(S,{container:o},F.createElement(x,{"cmdk-overlay":``,className:i}),F.createElement(C,{"aria-label":e.label,"cmdk-dialog":``,className:a},F.createElement(ge,{ref:t,...s}))))}),Ce=F.forwardRef((e,t)=>Z(e=>e.filtered.count===0)?F.createElement(y.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),we=F.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return F.createElement(y.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Q(e,e=>F.createElement(`div`,{"aria-hidden":!0},e)))}),J=Object.assign(ge,{List:xe,Item:_e,Input:be,Group:ve,Separator:ye,Dialog:Se,Empty:Ce,Loading:we});function Te(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function Ee(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function De(e){let t=F.useRef(e);return Y(()=>{t.current=e}),t}var Y=typeof window>`u`?F.useEffect:F.useLayoutEffect;function X(e){let t=F.useRef();return t.current===void 0&&(t.current=e()),t}function Z(e){let t=q(),n=()=>e(t.snapshot());return F.useSyncExternalStore(t.subscribe,n,n)}function Oe(e,t,n,r=[]){let i=F.useRef(),a=K();return Y(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(G,s),i.current=s}),i}var ke=()=>{let[e,t]=F.useState(),n=X(()=>new Map);return Y(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function Ae(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Q({asChild:e,children:t},n){return e&&F.isValidElement(t)?F.cloneElement(Ae(t),{ref:t.ref},n(t.props.children)):n(t)}var je={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},$=g();function Me({className:e,...t}){return(0,$.jsx)(J,{"data-slot":`command`,className:v(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),...t})}function Ne({title:e=`Command Palette`,description:t=`Search for a command to run...`,children:n,className:r,showCloseButton:i=!0,...a}){return(0,$.jsxs)(j,{...a,children:[(0,$.jsxs)(D,{className:`sr-only`,children:[(0,$.jsx)(k,{children:e}),(0,$.jsx)(A,{children:t})]}),(0,$.jsx)(O,{className:v(`overflow-hidden p-0`,r),showCloseButton:i,children:(0,$.jsx)(Me,{className:`**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5`,children:n})})]})}function Pe({className:e,...t}){return(0,$.jsxs)(`div`,{"data-slot":`command-input-wrapper`,className:`flex h-9 items-center gap-2 border-b px-3`,children:[(0,$.jsx)(p,{className:`size-4 shrink-0 opacity-50`}),(0,$.jsx)(J.Input,{"data-slot":`command-input`,className:v(`flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`,e),...t})]})}function Fe({className:e,...t}){return(0,$.jsx)(J.List,{"data-slot":`command-list`,className:v(`max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto`,e),...t})}function Ie({...e}){return(0,$.jsx)(J.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function Le({className:e,...t}){return(0,$.jsx)(J.Group,{"data-slot":`command-group`,className:v(`overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground`,e),...t})}function Re({className:e,...t}){return(0,$.jsx)(J.Item,{"data-slot":`command-item`,className:v(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...t})}function ze({className:e,...t}){return(0,$.jsx)(`span`,{"data-slot":`command-shortcut`,className:v(`ml-auto text-xs tracking-widest text-muted-foreground`,e),...t})}function Be(){let{t:e}=_(),{activeDialog:t,closeDialog:p,openDialog:m}=n(),{executeCurrentQuery:h,addNewQueryTab:g,disconnectActive:v}=i(),{capabilities:y}=E(),b=T(),x=t===`quick-command`,S=(0,F.useCallback)(e=>{p(),e()},[p]),C=[{heading:e(`palette.groups.connection`),commands:[...b?[{id:`connect`,label:e(`palette.commands.connect`),icon:M,action:()=>S(()=>m(`connect`))}]:[],{id:`disconnect`,label:e(`palette.commands.disconnect`),icon:o,action:()=>S(()=>{v()})}]},{heading:e(`palette.groups.query`),commands:[{id:`execute`,label:e(`palette.commands.executeQuery`),icon:u,shortcut:`F9`,action:()=>S(()=>{h()})},{id:`new-tab`,label:e(`palette.commands.newQueryTab`),icon:d,action:()=>S(()=>g())}]},{heading:e(`palette.groups.database`),commands:[{id:`create-db`,capability:`multipleDatabases`,label:e(`palette.commands.createDatabase`),icon:r,action:()=>S(()=>m(`create-database`))}]},{heading:e(`palette.groups.table`),commands:[{id:`create-table`,label:e(`palette.commands.createTable`),icon:a,action:()=>S(()=>m(`create-table`))},{id:`alter-table`,label:e(`palette.commands.alterTable`),icon:P,action:()=>S(()=>m(`alter-table`))}]},{heading:e(`palette.groups.tools`),commands:[{id:`process-list`,capability:`processList`,label:e(`palette.commands.processList`),icon:f,action:()=>S(()=>m(`process-list`))},{id:`variables`,capability:`variables`,label:e(`palette.commands.serverVariables`),icon:N,action:()=>S(()=>m(`variables`))},{id:`status`,capability:`status`,label:e(`palette.commands.serverStatus`),icon:l,action:()=>S(()=>m(`status`))},{id:`flush`,capability:`flush`,label:e(`palette.commands.flush`),icon:s,action:()=>S(()=>m(`flush`))},{id:`user-manager`,capability:`users`,label:e(`palette.commands.userManager`),icon:c,action:()=>S(()=>m(`user-manager`))}]}];(0,F.useEffect)(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.key===`k`&&(e.preventDefault(),x?p():m(`quick-command`))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[x,m,p]);function w(e){e||p()}return(0,$.jsxs)(Ne,{open:x,onOpenChange:w,title:e(`palette.title`),description:e(`palette.description`),children:[(0,$.jsx)(Pe,{placeholder:e(`palette.inputPlaceholder`)}),(0,$.jsxs)(Fe,{children:[(0,$.jsx)(Ie,{children:e(`palette.empty`)}),C.map(e=>({...e,commands:e.commands.filter(e=>!e.capability||y[e.capability])})).filter(e=>e.commands.length>0).map(e=>(0,$.jsx)(Le,{heading:e.heading,children:e.commands.map(e=>(0,$.jsxs)(Re,{onSelect:e.action,children:[(0,$.jsx)(e.icon,{className:`h-4 w-4`}),(0,$.jsx)(`span`,{children:e.label}),e.shortcut&&(0,$.jsx)(ze,{children:e.shortcut})]},e.id))},e.heading))]})]})}export{Be as QuickCommandPalette};
|