planche 0.7.20 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/app/assets/{AboutDialog-dKk703-Z.js → AboutDialog-CC7jb8_P.js} +1 -1
  2. package/app/assets/AiSettingsDialog-1t0_9610.js +1 -0
  3. package/app/assets/ConnectDialog-C8novVo3.js +1 -0
  4. package/app/assets/{CopyDatabaseDialog-B7w3Ek74.js → CopyDatabaseDialog-BZaC4BRf.js} +1 -1
  5. package/app/assets/CopyTableDialog-mjYPJxx8.js +1 -0
  6. package/app/assets/{CreateDatabaseDialog-Dnulabm5.js → CreateDatabaseDialog-K9LU6SFa.js} +1 -1
  7. package/app/assets/{CreateSchemaDialog-Lvff6Tdj.js → CreateSchemaDialog-IMU6kUwh.js} +1 -1
  8. package/app/assets/{DataDiffDialog-DNTu-7-T.js → DataDiffDialog-DcPx4VLE.js} +1 -1
  9. package/app/assets/{DownloadToCSVDialog-jxCkzB3J.js → DownloadToCSVDialog-cWxA73M8.js} +2 -2
  10. package/app/assets/EditSchemaDialog-UuUlGY4B.js +2 -0
  11. package/app/assets/{FindReplaceDialog-CyNlKq00.js → FindReplaceDialog-BphY4fYD.js} +1 -1
  12. package/app/assets/{FlushDialog-Cp7W6Ck1.js → FlushDialog-C1ahiGEa.js} +1 -1
  13. package/app/assets/GeneralSettingsDialog-CSoV6bfv.js +1 -0
  14. package/app/assets/{GroupByDialog-CHwsURs9.js → GroupByDialog-CO8in38J.js} +1 -1
  15. package/app/assets/{LicenseDialog-RY0SOUb1.js → LicenseDialog-d17TldUe.js} +1 -1
  16. package/app/assets/LinkColumnDialog-Dtz38QJy.js +1 -0
  17. package/app/assets/{LocalHistoryDialog-LnF86KJl.js → LocalHistoryDialog-B8WdxxF7.js} +1 -1
  18. package/app/assets/{ProcessListDialog-Jt-1b88E.js → ProcessListDialog-D0hVqOEu.js} +1 -1
  19. package/app/assets/QuerySettingsDialog-C-chLD8U.js +1 -0
  20. package/app/assets/QuickCommandPalette-BhTxG9s-.js +1 -0
  21. package/app/assets/RowFormDialog-MZivb9nJ.js +2 -0
  22. package/app/assets/SafetySettingsDialog-D4p0vAK7.js +1 -0
  23. package/app/assets/SchemaDiffDialog-BIxIvBGm.js +7 -0
  24. package/app/assets/{SchemaToHTMLDialog-Da8c-rAe.js → SchemaToHTMLDialog-CalQNcBO.js} +1 -1
  25. package/app/assets/{StatusDialog-mibIDpmA.js → StatusDialog-C49Nlkmj.js} +1 -1
  26. package/app/assets/{SyncDialog-BIDs_FZr.js → SyncDialog-DgjppEJu.js} +1 -1
  27. package/app/assets/{TermsDialog-CWw3XSw0.js → TermsDialog-CMGa972R.js} +1 -1
  28. package/app/assets/{UserAddDialog-D-TQNCsa.js → UserAddDialog-D_Ntb9Oc.js} +1 -1
  29. package/app/assets/{UserManagerDialog-DTxhu0T8.js → UserManagerDialog-BTOhBvd9.js} +1 -1
  30. package/app/assets/{VariablesDialog-CCzXtQQV.js → VariablesDialog-BTVi_JEh.js} +1 -1
  31. package/app/assets/connection-store-BnO3WqEO.js +1 -0
  32. package/app/assets/contract-W8-jEnEI.js +1 -0
  33. package/app/assets/database-BvWJHB7q.js +1 -0
  34. package/app/assets/de-DPmJYeTi.js +2 -0
  35. package/app/assets/{engine-DtZy_Zk0.js → engine-s5WfEr4n.js} +1 -1
  36. package/app/assets/error-hints-AQZemZKj.js +8 -0
  37. package/app/assets/fr-BLVbrMir.js +2 -0
  38. package/app/assets/i18n-D0mAAGED.js +2 -0
  39. package/app/assets/ja-BKUEaPbL.js +2 -0
  40. package/app/assets/ko-XOd5LtL3.js +2 -0
  41. package/app/assets/license-store-D_XwbbCs.js +1 -0
  42. package/app/assets/{main-BPskUSLM.js → main-C-Gt0g0g.js} +206 -189
  43. package/app/assets/main-C3ej0FPT.css +2 -0
  44. package/app/assets/{pro-gate-IRkx6bbE.js → pro-gate-DZATEYdR.js} +1 -1
  45. package/app/assets/{pro-upsell-lFmxmise.js → pro-upsell-akqEMS8_.js} +1 -1
  46. package/app/assets/pro-usage-C661VD02.js +1 -0
  47. package/app/assets/query-execution-CZvQYEUq.js +2 -0
  48. package/app/assets/{query-store-BR6Saeed.js → query-store-dYiA8oM5.js} +1 -1
  49. package/app/assets/{select-C3A-RS4G.js → select-DwgCtoqv.js} +1 -1
  50. package/app/assets/settings-controls-DrW8_eiX.js +1 -0
  51. package/app/assets/settings-store-BBVuUVjA.js +1 -0
  52. package/app/assets/table-copy-LtbDgIEc.js +1 -0
  53. package/app/assets/tunneling-BPoIRxJA.js +1 -0
  54. package/app/assets/zh-DNy8t_lA.js +2 -0
  55. package/app/index.html +17 -17
  56. package/dist/index.js +799 -45
  57. package/package.json +3 -1
  58. package/app/assets/ConnectDialog-DdXULzdj.js +0 -1
  59. package/app/assets/CopyTableDialog-B0kK-0Bl.js +0 -1
  60. package/app/assets/EditSchemaDialog-CFrD-8z9.js +0 -2
  61. package/app/assets/LinkColumnDialog-BD9rpsyg.js +0 -1
  62. package/app/assets/QuickCommandPalette-DEFuPaG7.js +0 -1
  63. package/app/assets/RowFormDialog-mM6FFZQr.js +0 -2
  64. package/app/assets/SafetySettingsDialog-B3MafT1S.js +0 -1
  65. package/app/assets/SchemaDiffDialog-BvNzQo5m.js +0 -7
  66. package/app/assets/connection-store-Ds9Gjt3K.js +0 -1
  67. package/app/assets/contract-D2InX341.js +0 -1
  68. package/app/assets/database-eJWHFM-2.js +0 -1
  69. package/app/assets/de-D9wNOTjH.js +0 -2
  70. package/app/assets/fr-CMT9T7_Z.js +0 -2
  71. package/app/assets/i18n-BAv7QdV3.js +0 -2
  72. package/app/assets/ja-C5Z0_8jZ.js +0 -2
  73. package/app/assets/ko-BF4ZzLce.js +0 -2
  74. package/app/assets/license-store-BfuSb6KZ.js +0 -1
  75. package/app/assets/main-DmICiyzI.css +0 -2
  76. package/app/assets/pro-usage-WSD_KOk4.js +0 -1
  77. package/app/assets/query-execution-C5QxvBZj.js +0 -7
  78. package/app/assets/settings-store-CSMhaLcw.js +0 -1
  79. package/app/assets/table-copy-BJBmJ9OO.js +0 -1
  80. package/app/assets/tunneling-rujGqkfQ.js +0 -1
  81. package/app/assets/use-engine-CxcEyIko.js +0 -1
  82. package/app/assets/zh-BpFgSEeR.js +0 -2
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{B as t,Ct as n,G as r,I as i,K as a,Mt as o,Ot as s,R as c,St as l,V as u,W as d,Z as f,bt as p,ct as m,dt as ee,et as te,ft as h,gt as ne,ht as g,lt as _,mt as v,nt as y,ot as b,pt as x,q as S,rt as C,st as w,tt as T,vt as re}from"./main-C-Gt0g0g.js";import{c as E,h as D,n as O}from"./ui-store-5IssrgmG.js";import{a as k,f as A,l as j,m as M,o as N,s as P}from"./button-B2EsmMJs.js";import{r as ie,t as ae}from"./i18n-D0mAAGED.js";import{_ as F,a as oe,o as se,r as ce,t as le}from"./dist-BYhFWvmC.js";import{t as I}from"./connection-store-BnO3WqEO.js";import{n as ue,r as de}from"./settings-store-BBVuUVjA.js";import{n as fe,t as pe}from"./query-store-dYiA8oM5.js";import{n as me,t as he}from"./database-BvWJHB7q.js";import{n as ge}from"./pro-gate-DZATEYdR.js";import{r as _e,s as ve}from"./query-execution-CZvQYEUq.js";import{a as ye,n as L,o as be,r as xe,t as Se}from"./dialog-FBpgH0QJ.js";var Ce=k(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),we=k(`copy-plus`,[[`line`,{x1:`15`,x2:`15`,y1:`12`,y2:`18`,key:`1p7wdc`}],[`line`,{x1:`12`,x2:`18`,y1:`15`,y2:`15`,key:`1nscbv`}],[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Te=k(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),Ee=k(`database-zap`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`,key:`14ibmq`}],[`path`,{d:`M21 5V8`,key:`1marbg`}],[`path`,{d:`M21 12L18 17H22L19 22`,key:`zafso`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`,key:`1y4wr8`}]]),De=k(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),Oe=k(`file-spreadsheet`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 13h2`,key:`yr2amv`}],[`path`,{d:`M14 13h2`,key:`un5t4a`}],[`path`,{d:`M8 17h2`,key:`2yhykz`}],[`path`,{d:`M14 17h2`,key:`10kma7`}]]),ke=k(`git-compare`,[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`path`,{d:`M11 18H8a2 2 0 0 1-2-2V9`,key:`19pyzm`}]]),Ae=k(`git-compare-arrows`,[[`circle`,{cx:`5`,cy:`6`,r:`3`,key:`1qnov2`}],[`path`,{d:`M12 6h5a2 2 0 0 1 2 2v7`,key:`1yj91y`}],[`path`,{d:`m15 9-3-3 3-3`,key:`1lwv8l`}],[`circle`,{cx:`19`,cy:`18`,r:`3`,key:`1qljk2`}],[`path`,{d:`M12 18H7a2 2 0 0 1-2-2V9`,key:`16sdep`}],[`path`,{d:`m9 15 3 3-3 3`,key:`1m3kbl`}]]),je=k(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),Me=k(`languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),Ne=k(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),Pe=k(`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`}]]),Fe=k(`replace`,[[`path`,{d:`M14 4a1 1 0 0 1 1-1`,key:`dhj8ez`}],[`path`,{d:`M15 10a1 1 0 0 1-1-1`,key:`1mnyi5`}],[`path`,{d:`M21 4a1 1 0 0 0-1-1`,key:`sfs9ap`}],[`path`,{d:`M21 9a1 1 0 0 1-1 1`,key:`mp6qeo`}],[`path`,{d:`m3 7 3 3 3-3`,key:`x25e72`}],[`path`,{d:`M6 10V5a2 2 0 0 1 2-2h2`,key:`15xut4`}],[`rect`,{x:`3`,y:`14`,width:`7`,height:`7`,rx:`1`,key:`1bkyp8`}]]),Ie=k(`rocket`,[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]),Le=k(`scale`,[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`,key:`zcdpyk`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`,key:`1yorad`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`,key:`eua70x`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}]]),Re=k(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),ze=k(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),Be=k(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),Ve=k(`waypoints`,[[`path`,{d:`m10.586 5.414-5.172 5.172`,key:`4mc350`}],[`path`,{d:`m18.586 13.414-5.172 5.172`,key:`8c96vv`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`circle`,{cx:`12`,cy:`20`,r:`2`,key:`144qzu`}],[`circle`,{cx:`12`,cy:`4`,r:`2`,key:`muu5ef`}],[`circle`,{cx:`20`,cy:`12`,r:`2`,key:`1xzzfp`}],[`circle`,{cx:`4`,cy:`12`,r:`2`,key:`1hvhnz`}]]),R=e(D(),1),He=1,Ue=.9,We=.8,Ge=.17,z=.1,B=.999,Ke=.9999,V=.99,H=/[\\\/_+.#"@\[\(\{&]/,qe=/[\\\/_+.#"@\[\(\{&]/g,Je=/[\s-]/,U=/[\s-]/g;function W(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?He:V;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=W(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=He:H.test(e.charAt(l-1))?(d*=We,p=e.slice(i,l-1).match(qe),p&&i>0&&(d*=B**+p.length)):Je.test(e.charAt(l-1))?(d*=Ue,m=e.slice(i,l-1).match(U),m&&i>0&&(d*=B**+m.length)):(d*=Ge,i>0&&(d*=B**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Ke)),(d<z&&n.charAt(l-1)===r.charAt(a+1)||r.charAt(a+1)===r.charAt(a)&&n.charAt(l-1)!==r.charAt(a))&&(f=W(e,t,n,r,l+1,a+2,o),f*z>d&&(d=f*z)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Ye(e){return e.toLowerCase().replace(U,` `)}function Xe(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,W(e,t,Ye(e),Ye(t),0,0,{})}var G=`[cmdk-group=""]`,Ze=`[cmdk-group-items=""]`,Qe=`[cmdk-group-heading=""]`,$e=`[cmdk-item=""]`,et=`${$e}:not([aria-disabled="true"])`,tt=`cmdk-item-select`,K=`data-value`,nt=(e,t,n)=>Xe(e,t,n),rt=R.createContext(void 0),q=()=>R.useContext(rt),it=R.createContext(void 0),at=()=>R.useContext(it),ot=R.createContext(void 0),st=R.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=vt(e),{label:c,children:l,value:u,onValueChange:d,filter:f,shouldFilter:p,loop:m,disablePointerSelection:ee=!1,vimBindings:te=!0,...h}=e,ne=F(),g=F(),_=F(),v=R.useRef(null),y=bt();Y(()=>{if(u!==void 0){let e=u.trim();n.current.value=e,b.emit()}},[u]),Y(()=>{y(6,re)},[]);let b=R.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`)T(),C(),y(1,w);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(_);e?e.focus():(i=document.getElementById(ne))==null||i.focus()}if(y(7,()=>{n.current.selectedItemId=E()?.id,b.emit()}),r||y(5,re),s.current?.value!==void 0){let e=t??``;(o=(a=s.current).onValueChange)==null||o.call(a,e);return}}b.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),x=R.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,S(t,r)),y(2,()=>{C(),b.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]))),y(3,()=>{T(),C(),n.current.value||w(),b.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=E();y(4,()=>{T(),t?.getAttribute(`id`)===e&&w(),b.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:ne,inputId:_,labelId:g,listInnerRef:v}),[]);function S(e,t){let r=s.current?.filter??nt;return e?r(e,n.current.search,t):0}function C(){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=v.current;D().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(Ze);t?t.appendChild(e.parentElement===t?e:e.closest(`${Ze} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${Ze} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=v.current?.querySelector(`${G}[${K}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function w(){let e=D().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(K);b.setState(`value`,e||void 0)}function T(){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=S(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 re(){var e;let t=E();t&&(t.parentElement?.firstChild===t&&((e=t.closest(G)?.querySelector(Qe))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function E(){return v.current?.querySelector(`${$e}[aria-selected="true"]`)}function D(){return Array.from(v.current?.querySelectorAll(et)||[])}function O(e){let t=D()[e];t&&b.setState(`value`,t.getAttribute(K))}function k(e){var t;let n=E(),r=D(),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&&b.setState(`value`,a.getAttribute(K))}function A(e){let t=E()?.closest(G),n;for(;t&&!n;)t=e>0?gt(t,G):_t(t,G),n=t?.querySelector(et);n?b.setState(`value`,n.getAttribute(K)):k(e)}let j=()=>O(D().length-1),M=e=>{e.preventDefault(),e.metaKey?j():e.altKey?A(1):k(1)},N=e=>{e.preventDefault(),e.metaKey?O(0):e.altKey?A(-1):k(-1)};return R.createElement(P.div,{ref:t,tabIndex:-1,...h,"cmdk-root":``,onKeyDown:e=>{var t;(t=h.onKeyDown)==null||t.call(h,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:te&&e.ctrlKey&&M(e);break;case`ArrowDown`:M(e);break;case`p`:case`k`:te&&e.ctrlKey&&N(e);break;case`ArrowUp`:N(e);break;case`Home`:e.preventDefault(),O(0);break;case`End`:e.preventDefault(),j();break;case`Enter`:{e.preventDefault();let t=E();if(t){let e=new Event(tt);t.dispatchEvent(e)}}}}},R.createElement(`label`,{"cmdk-label":``,htmlFor:x.inputId,id:x.labelId,style:St},c),Q(e,e=>R.createElement(it.Provider,{value:b},R.createElement(rt.Provider,{value:x},e))))}),ct=R.forwardRef((e,t)=>{let n=F(),r=R.useRef(null),i=R.useContext(ot),a=q(),o=vt(e),s=o.current?.forceMount??i?.forceMount;Y(()=>{if(!s)return a.item(n,i?.id)},[s]);let c=yt(n,r,[e.value,e.children,r],e.keywords),l=at(),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);R.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(tt,f),()=>t.removeEventListener(tt,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:ee,onSelect:te,forceMount:h,keywords:ne,...g}=e;return R.createElement(P.div,{ref:A(r,t),...g,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)}),lt=R.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=F(),s=R.useRef(null),c=R.useRef(null),l=F(),u=q(),d=Z(e=>i||u.filter()===!1?!0:!e.search||e.filtered.groups.has(o));Y(()=>u.group(o),[]),yt(o,s,[e.value,e.heading,c]);let f=R.useMemo(()=>({id:o,forceMount:i}),[i]);return R.createElement(P.div,{ref:A(s,t),...a,"cmdk-group":``,role:`presentation`,hidden:!d||void 0},n&&R.createElement(`div`,{ref:c,"cmdk-group-heading":``,"aria-hidden":!0,id:l},n),Q(e,e=>R.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?l:void 0},R.createElement(ot.Provider,{value:f},e))))}),ut=R.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=R.useRef(null),a=Z(e=>!e.search);return!n&&!a?null:R.createElement(P.div,{ref:A(i,t),...r,"cmdk-separator":``,role:`separator`})}),dt=R.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=at(),o=Z(e=>e.search),s=Z(e=>e.selectedItemId),c=q();return R.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),R.createElement(P.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)}})}),ft=R.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=R.useRef(null),o=R.useRef(null),s=Z(e=>e.selectedItemId),c=q();return R.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)}}},[]),R.createElement(P.div,{ref:A(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:c.listId},Q(e,e=>R.createElement(`div`,{ref:A(o,c.listInnerRef),"cmdk-list-sizer":``},e)))}),pt=R.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return R.createElement(le,{open:n,onOpenChange:r},R.createElement(se,{container:o},R.createElement(oe,{"cmdk-overlay":``,className:i}),R.createElement(ce,{"aria-label":e.label,"cmdk-dialog":``,className:a},R.createElement(st,{ref:t,...s}))))}),mt=R.forwardRef((e,t)=>Z(e=>e.filtered.count===0)?R.createElement(P.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),ht=R.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return R.createElement(P.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Q(e,e=>R.createElement(`div`,{"aria-hidden":!0},e)))}),J=Object.assign(st,{List:ft,Item:ct,Input:dt,Group:lt,Separator:ut,Dialog:pt,Empty:mt,Loading:ht});function gt(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function _t(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function vt(e){let t=R.useRef(e);return Y(()=>{t.current=e}),t}var Y=typeof window>`u`?R.useEffect:R.useLayoutEffect;function X(e){let t=R.useRef();return t.current===void 0&&(t.current=e()),t}function Z(e){let t=at(),n=()=>e(t.snapshot());return R.useSyncExternalStore(t.subscribe,n,n)}function yt(e,t,n,r=[]){let i=R.useRef(),a=q();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(K,s),i.current=s}),i}var bt=()=>{let[e,t]=R.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 xt(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&&R.isValidElement(t)?R.cloneElement(xt(t),{ref:t.ref},n(t.props.children)):n(t)}var St={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},$=j();function Ct({className:e,...t}){return(0,$.jsx)(J,{"data-slot":`command`,className:N(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),...t})}function wt({title:e=`Command Palette`,description:t=`Search for a command to run...`,children:n,className:r,showCloseButton:i=!0,...a}){return(0,$.jsxs)(Se,{...a,children:[(0,$.jsxs)(ye,{className:`sr-only`,children:[(0,$.jsx)(be,{children:e}),(0,$.jsx)(xe,{children:t})]}),(0,$.jsx)(L,{className:N(`overflow-hidden p-0`,r),showCloseButton:i,children:(0,$.jsx)(Ct,{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 Tt({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)(ee,{className:`size-4 shrink-0 opacity-50`}),(0,$.jsx)(J.Input,{"data-slot":`command-input`,className:N(`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 Et({className:e,...t}){return(0,$.jsx)(J.List,{"data-slot":`command-list`,className:N(`max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto`,e),...t})}function Dt({...e}){return(0,$.jsx)(J.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function Ot({className:e,...t}){return(0,$.jsx)(J.Group,{"data-slot":`command-group`,className:N(`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 kt({className:e,...t}){return(0,$.jsx)(J.Item,{"data-slot":`command-item`,className:N(`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 At({className:e,...t}){return(0,$.jsx)(`span`,{"data-slot":`command-shortcut`,className:N(`ml-auto text-xs tracking-widest text-muted-foreground`,e),...t})}var jt={sky:`text-catppuccin-sky`,blue:`text-catppuccin-blue`,green:`text-catppuccin-green`,teal:`text-catppuccin-teal`,mauve:`text-catppuccin-mauve`,lavender:`text-catppuccin-lavender`,peach:`text-catppuccin-peach`,yellow:`text-catppuccin-yellow`,red:`text-catppuccin-red`};function Mt({theme:e}){let{background:t,blue:n,mauve:r,green:i}=e.colors;return(0,$.jsx)(`span`,{className:`flex size-5 shrink-0 overflow-hidden rounded-sm border border-catppuccin-surface2`,children:[t,n,r,i].map((e,t)=>(0,$.jsx)(`span`,{className:`flex-1`,style:{backgroundColor:e}},t))})}function Nt(){let{t:e}=M(),{activeDialog:ee,closeDialog:D,openDialog:k}=O(),A=O(e=>e.setWelcomeVisible),j=O(e=>e.setFooterMessage),{executeCurrentQuery:P,executeCurrentStatement:F,executeWholeScript:oe,addNewQueryTab:se,disconnectActive:ce}=S(),{capabilities:le}=f(),ye=de(),L=I(e=>e.activeConnections.find(t=>t.id===e.activeConnectionId)),be=I(e=>e.activeConnectionId?e.transactionOpen[e.activeConnectionId]??!1:!1),xe=I(e=>e.updateProfile),Se=d(e=>e.themeId),He=d(e=>e.setTheme),Ue=ue(e=>e.locale),We=ue(e=>e.setLocale),Ge=ee===`quick-command`,z=L!==void 0,B=fe(e=>{let t=I.getState().activeConnectionId;if(!t)return!1;let n=e.activeTabId[t];return(e.tabs[t]??pe).find(e=>e.id===n)?.isExecuting??!1});async function Ke(){let e=I.getState().activeConnectionId;if(!e)return;let t=me(await he(e));t&&O.getState().setFooterMessage(t)}let V=(0,R.useCallback)(e=>{D(),e()},[D]),H=(0,R.useCallback)(e=>j(e instanceof Error?e.message:String(e)),[j]),qe=()=>{let e=I.getState().activeConnectionId;e&&(a.getState().openERD(e),E(`erd_open`),fe.getState().setActiveQueryTab(e,`erd`))},Je=[{heading:e(`palette.groups.connection`),commands:[{id:`connect`,label:e(`palette.commands.connect`),icon:Pe,tone:`sky`,shortcut:`Alt+N`,keywords:[`connect`,`server`,`profile`,`login`],disabled:!ye,action:()=>V(()=>k(`connect`))},{id:`disconnect`,label:e(`palette.commands.disconnect`),icon:y,tone:`red`,keywords:[`disconnect`,`close`],disabled:!z,action:()=>V(()=>{ce()})},{id:`read-only`,label:e(`menu.connection.readOnly`),icon:ne,tone:`yellow`,keywords:[`read only`,`safety`,`guard`],disabled:!z,checked:L?.readOnly===!0,action:()=>V(()=>{L&&xe(L.id,{readOnly:!L.readOnly})})},{id:`manual-transactions`,capability:`transactions`,label:e(`menu.connection.manualTransactions`),icon:re,tone:`lavender`,keywords:[`transaction`,`manual`,`autocommit`],disabled:!z,checked:L?.transactionMode===`manual`,action:()=>V(()=>{L&&xe(L.id,{transactionMode:L.transactionMode===`manual`?`auto`:`manual`})})},{id:`commit`,capability:`transactions`,label:e(`toolbar.commit`),icon:s,tone:`green`,keywords:[`commit`,`transaction`],disabled:!be||!L,action:()=>V(()=>{L&&_e(L.id).catch(H)})},{id:`rollback`,capability:`transactions`,label:e(`toolbar.rollback`),icon:C,tone:`peach`,keywords:[`rollback`,`transaction`,`undo`],disabled:!be||!L,action:()=>V(()=>{L&&ve(L.id).catch(H)})}]},{heading:e(`palette.groups.query`),commands:[{id:`execute`,label:e(`palette.commands.executeQuery`),icon:v,tone:`green`,shortcut:`F9`,keywords:[`run`,`execute`,`sql`],disabled:!z,action:()=>V(()=>{P()})},{id:`stop-query`,label:e(`result.running.stop`),icon:m,tone:`red`,keywords:[`stop`,`cancel`,`abort`,`kill`],disabled:!B,action:()=>V(()=>{Ke()})},{id:`execute-statement`,label:e(`menu.query.executeStatementAtCursor`),icon:Te,tone:`green`,shortcut:`Ctrl+Enter`,keywords:[`run`,`statement`,`cursor`],disabled:!z,action:()=>V(()=>{F()})},{id:`execute-script`,label:e(`menu.query.executeWholeScript`),icon:Re,tone:`teal`,shortcut:`Ctrl+Shift+Enter`,keywords:[`run`,`script`,`batch`],disabled:!z,action:()=>V(()=>{oe()})},{id:`new-tab`,label:e(`palette.commands.newQueryTab`),icon:x,tone:`blue`,shortcut:`Alt+T`,keywords:[`new`,`tab`,`editor`],disabled:!z,action:()=>V(()=>se())},{id:`find-replace`,label:e(`menu.query.findReplace`),icon:Fe,tone:`lavender`,keywords:[`find`,`replace`,`search`],disabled:!z,action:()=>V(()=>k(`find-replace`))},{id:`local-history`,label:e(`menu.query.localHistory`),icon:je,tone:`mauve`,keywords:[`history`,`snapshot`,`undo`],disabled:!z,action:()=>V(()=>k(`local-history`))}]},{heading:e(`palette.groups.database`),commands:[{id:`create-db`,capability:`multipleDatabases`,label:e(`palette.commands.createDatabase`),icon:l,tone:`blue`,keywords:[`create`,`database`,`schema`],disabled:!z,action:()=>V(()=>k(`create-database`))},{id:`alter-db`,capability:`multipleDatabases`,label:e(`menu.database.alter`),icon:Ee,tone:`blue`,keywords:[`alter`,`database`,`charset`],disabled:!z,action:()=>V(()=>k(`alter-database`))},{id:`copy-db`,capability:`multipleDatabases`,label:e(`menu.database.copy`),icon:n,tone:`sky`,keywords:[`copy`,`clone`,`database`],disabled:!z,action:()=>V(()=>k(`copy-database`))},{id:`schema-diff`,label:e(`menu.database.compare`),icon:ke,tone:`mauve`,keywords:[`compare`,`diff`,`schema`,`sync`],pro:`compare_schemas`,disabled:!z,action:()=>V(()=>k(`schema-diff`))},{id:`data-diff`,label:e(`menu.database.compareData`),icon:Ae,tone:`mauve`,keywords:[`compare`,`diff`,`data`,`rows`],pro:`compare_data`,disabled:!z,action:()=>V(()=>k(`data-diff`))},{id:`group-by`,label:e(`menu.database.groupBy`),icon:_,tone:`mauve`,keywords:[`group`,`count`,`aggregate`,`distinct`,`summary`],disabled:!z,action:()=>V(()=>k(`group-by`))}]},{heading:e(`palette.groups.table`),commands:[{id:`create-table`,label:e(`palette.commands.createTable`),icon:w,tone:`green`,keywords:[`create`,`table`],disabled:!z,action:()=>V(()=>k(`create-table`))},{id:`alter-table`,label:e(`palette.commands.alterTable`),icon:te,tone:`yellow`,keywords:[`alter`,`table`,`column`],disabled:!z,action:()=>V(()=>k(`alter-table`))},{id:`duplicate-table`,label:e(`menu.table.duplicateStructure`),icon:we,tone:`teal`,keywords:[`duplicate`,`structure`,`table`],disabled:!z,action:()=>V(()=>k(`duplicate-table-structure`))}]},{heading:e(`menu.export.title`),commands:[{id:`export-csv`,label:e(`menu.export.csv`),icon:Oe,tone:`green`,keywords:[`export`,`csv`,`excel`],disabled:!z,action:()=>V(()=>k(`export-csv`))},{id:`export-html`,label:e(`menu.export.schemaHtml`),icon:De,tone:`peach`,keywords:[`export`,`html`,`schema`,`documentation`],disabled:!z,action:()=>V(()=>k(`export-html`))}]},{heading:e(`palette.groups.tools`),commands:[{id:`process-list`,capability:`processList`,label:e(`palette.commands.processList`),icon:o,tone:`red`,keywords:[`process`,`kill`,`connections`],disabled:!z,action:()=>V(()=>k(`process-list`))},{id:`variables`,capability:`variables`,label:e(`palette.commands.serverVariables`),icon:ze,tone:`lavender`,keywords:[`variables`,`server`,`settings`],disabled:!z,action:()=>V(()=>k(`variables`))},{id:`status`,capability:`status`,label:e(`palette.commands.serverStatus`),icon:b,tone:`teal`,keywords:[`status`,`server`,`metrics`],disabled:!z,action:()=>V(()=>k(`status`))},{id:`flush`,capability:`flush`,label:e(`palette.commands.flush`),icon:h,tone:`peach`,keywords:[`flush`,`cache`,`reload`],disabled:!z,action:()=>V(()=>k(`flush`))},{id:`user-manager`,capability:`users`,label:e(`palette.commands.userManager`),icon:T,tone:`blue`,keywords:[`users`,`grants`,`privileges`],disabled:!z,action:()=>V(()=>k(`user-manager`))},{id:`scratchpad`,label:e(`menu.tools.scratchpad`),icon:g,tone:`yellow`,keywords:[`scratchpad`,`sqlite`,`local`],pro:`scratchpad`,action:()=>V(()=>{u().catch(H)})},{id:`federated`,label:e(`menu.tools.federated`),icon:Ve,tone:`mauve`,keywords:[`federated`,`cross`,`join`,`connections`],pro:`federated`,action:()=>V(()=>{c().catch(H)})},{id:`erd`,label:e(`menu.tools.viewErd`),icon:Ne,tone:`sky`,keywords:[`erd`,`diagram`,`relations`],disabled:!z,action:()=>V(qe)}]},{heading:e(`menu.settings.theme`),commands:r().map(e=>({id:`theme-${e.id}`,label:e.name,tone:`lavender`,keywords:[`theme`,`color`,`appearance`,`dark`,`light`,e.id],checked:Se===e.id,swatch:e,action:()=>V(()=>He(e.id))}))},{heading:e(`menu.settings.language`),commands:[`auto`,...ae].map(t=>({id:`locale-${t}`,label:t===`auto`?e(`language.auto`,{name:e(`language.${ie()}`)}):e(`language.${t}`),icon:Me,tone:`teal`,keywords:[`language`,`locale`,`i18n`,t],checked:Ue===t,action:()=>V(()=>We(t))}))},{heading:e(`menu.settings.title`),commands:[{id:`safety-settings`,label:e(`menu.settings.safety`),icon:Be,tone:`yellow`,keywords:[`safety`,`settings`,`row limit`,`preferences`],action:()=>V(()=>k(`safety-settings`))}]},{heading:e(`menu.help.title`),commands:[{id:`documentation`,label:e(`menu.help.documentation`),icon:Ce,tone:`blue`,keywords:[`docs`,`documentation`,`manual`,`help`],action:()=>V(()=>{window.open(t(),`_blank`,`noopener,noreferrer`)})},{id:`getting-started`,label:e(`menu.help.gettingStarted`),icon:Ie,tone:`green`,keywords:[`welcome`,`onboarding`,`sample`,`getting started`],action:()=>V(()=>A(!0))},{id:`terms`,label:e(`menu.help.terms`),icon:Le,tone:`peach`,keywords:[`terms`,`privacy`,`legal`],action:()=>V(()=>k(`terms`))},{id:`about`,label:e(`menu.help.about`),icon:p,tone:`sky`,keywords:[`about`,`version`,`agent`],action:()=>V(()=>k(`about`))}]}];function U(e){e||D()}let W=Je.map(e=>({...e,commands:e.commands.filter(e=>!e.capability||le[e.capability])})).filter(e=>e.commands.length>0);return(0,$.jsxs)(wt,{open:Ge,onOpenChange:U,title:e(`palette.title`),description:e(`palette.description`),children:[(0,$.jsx)(Tt,{placeholder:e(`palette.inputPlaceholder`)}),(0,$.jsxs)(Et,{className:`max-h-[60vh]`,children:[(0,$.jsx)(Dt,{children:e(`palette.empty`)}),W.map(e=>(0,$.jsx)(Ot,{heading:e.heading,children:e.commands.map(t=>(0,$.jsxs)(kt,{value:`${e.heading} ${t.label}`,keywords:t.keywords,disabled:t.disabled,onSelect:()=>{(!t.pro||ge(t.pro))&&t.action()},children:[t.swatch?(0,$.jsx)(Mt,{theme:t.swatch}):t.icon?(0,$.jsx)(t.icon,{className:N(`size-4`,jt[t.tone])}):null,(0,$.jsx)(`span`,{className:`truncate`,children:t.label}),(0,$.jsxs)(`span`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:[t.pro&&(0,$.jsx)(i,{className:`ml-0`}),t.checked&&(0,$.jsx)(s,{className:`size-3.5 text-catppuccin-green`}),t.shortcut&&(0,$.jsx)(At,{className:`ml-0`,children:t.shortcut})]})]},t.id))},e.heading))]})]})}export{Nt as QuickCommandPalette};
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Q as t,Tt as n,_t as r,d as i,f as a,kt as o,m as s,p as c,wt as l,yt as u}from"./main-C-Gt0g0g.js";import{h as d,n as f,t as p}from"./ui-store-5IssrgmG.js";import{a as m,l as h,m as g,t as _}from"./button-B2EsmMJs.js";import{t as v}from"./connection-store-BnO3WqEO.js";import{n as y}from"./settings-store-BBVuUVjA.js";import{a as b}from"./database-BvWJHB7q.js";import{c as x,t as S}from"./query-execution-CZvQYEUq.js";import{a as C,i as w,n as T,o as ee,r as E,t as D}from"./dialog-FBpgH0QJ.js";var O=m(`wand-sparkles`,[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]]),k=e(d(),1);function A(e){let t=e.slice(e.indexOf(`(`)+1,e.lastIndexOf(`)`)),n=[],r=/'((?:[^']|'')*)'/g,i;for(;i=r.exec(t);)n.push(i[1].replaceAll(`''`,`'`));return n}function j(e,t={}){let{oracleDate:n=!1}=t,r=e.type.trim(),i=r.toLowerCase(),a=/\bunsigned\b/.test(i);if(/^enum\(/.test(i))return{kind:`enum`,options:A(r)};if(/^set\(/.test(i))return{kind:`set`,options:A(r)};if(/^(tinyint\(1\)|bool|boolean|bit\(1\)|bit)(?![\w(])/.test(i))return{kind:`boolean`};let o=/^number(?:\((\d+|\*)(?:,\s*(-?\d+))?\))?$/.exec(i);if(o)return o[2]&&Number(o[2])>0?{kind:`decimal`}:o[1]?{kind:`integer`}:{kind:`decimal`};if(/^(tinyint|smallint|mediumint|int|integer|bigint|int2|int4|int8|serial|bigserial|smallserial)\b/.test(i))return{kind:`integer`,unsigned:a};if(/^(decimal|numeric|float|double|real|money|float4|float8|double precision)\b/.test(i))return{kind:`decimal`,unsigned:a};if(/^(datetime2|datetime|timestamp|smalldatetime|datetimeoffset)\b/.test(i))return{kind:`datetime`};if(/^date\b/.test(i))return{kind:n?`datetime`:`date`};if(/^(time|timetz)\b/.test(i))return{kind:`time`};if(/^(json|jsonb)\b/.test(i))return{kind:`json`};if(/^(uuid|uniqueidentifier)\b/.test(i))return{kind:`uuid`};if(/^(blob|tinyblob|mediumblob|longblob|binary|varbinary|bytea|raw|image|bfile)\b/.test(i))return{kind:`binary`};if(/^(text|ntext|tinytext|mediumtext|longtext|clob|nclob|long)\b/.test(i)||/^n?(?:var)?char2?\(max\)/.test(i))return{kind:`text`};let s=/^n?(?:var)?char2?(?:acter)?(?:\s+varying)?\((\d+)(?:\s+(?:char|byte))?\)/.exec(i);return s?{kind:`string`,maxLength:Number(s[1])}:{kind:`string`}}var M=/auto_increment|identity|generated/i;function N(e){return M.test(e.extra)||/^(serial|bigserial|smallserial)\b/i.test(e.type)?{mode:`auto`,text:``}:e.defaultValue===null?e.nullable?{mode:`null`,text:``}:{mode:`value`,text:``}:{mode:`default`,text:``}}function P(e){return e==null?{mode:`keep`,text:``}:{mode:`keep`,text:F(e)}}function F(e){if(e==null)return``;if(typeof e==`object`){if(ArrayBuffer.isView(e))return``;if(e instanceof Date)return e.toISOString();try{return JSON.stringify(e,null,2)}catch{return String(e)}}return String(e)}function I(e,t){let n=t.trim();switch(e.kind){case`integer`:{if(!/^[+-]?\d+$/.test(n))return{error:`integer`};if(e.unsigned&&n.startsWith(`-`))return{error:`unsigned`};let t=Number(n);return{value:Number.isSafeInteger(t)?t:BigInt(n)}}case`decimal`:return n===``||Number.isNaN(Number(n))?{error:`number`}:{value:Number(n)};case`boolean`:return{value:n===`true`||n===`1`};case`json`:try{return{value:JSON.parse(n===``?`null`:n)}}catch{return{error:`json`}}case`set`:return{value:n};case`date`:return n&&!/^\d{4}-\d{2}-\d{2}$/.test(n)?{error:`date`}:{value:n};case`datetime`:return n&&!/^\d{4}-\d{2}-\d{2}([ T]\d{2}:\d{2}(:\d{2}(\.\d+)?)?)?([+-]\d{2}:?\d{2}|Z)?$/.test(n)?{error:`datetime`}:{value:n};case`time`:return n&&!/^-?\d{1,3}:\d{2}(:\d{2}(\.\d+)?)?$/.test(n)?{error:`time`}:{value:n};default:return{value:t}}}var L=h(),R={integer:`result.rowForm.invalid.integer`,unsigned:`result.rowForm.invalid.unsigned`,number:`result.rowForm.invalid.number`,json:`result.rowForm.invalid.json`,date:`result.rowForm.invalid.date`,datetime:`result.rowForm.invalid.datetime`,time:`result.rowForm.invalid.time`};function z(e){return String(e).padStart(2,`0`)}function B(e){let t=new Date,n=`${t.getFullYear()}-${z(t.getMonth()+1)}-${z(t.getDate())}`,r=`${z(t.getHours())}:${z(t.getMinutes())}:${z(t.getSeconds())}`;return e===`date`?n:e===`time`?r:`${n} ${r}`}function V(e){let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e.trim());if(!t)return;let n=new Date(Number(t[1]),Number(t[2])-1,Number(t[3]));return Number.isNaN(n.getTime())?void 0:n}function H({spec:e,state:t,disabled:n,onText:r}){let{t:u}=g(),d=`w-full rounded border bg-background px-2 py-1 text-sm font-mono outline-none focus:ring-1 focus:ring-primary disabled:opacity-50`;switch(e.kind){case`boolean`:return(0,L.jsxs)(`select`,{className:d,value:t.text===`true`||t.text===`1`?`true`:`false`,onChange:e=>r(e.target.value),disabled:n,children:[(0,L.jsx)(`option`,{value:`true`,children:`TRUE`}),(0,L.jsx)(`option`,{value:`false`,children:`FALSE`})]});case`enum`:return(0,L.jsxs)(`select`,{className:d,value:t.text,onChange:e=>r(e.target.value),disabled:n,children:[!e.options?.includes(t.text)&&(0,L.jsx)(`option`,{value:t.text,children:t.text||`—`}),e.options?.map(e=>(0,L.jsx)(`option`,{value:e,children:e},e))]});case`set`:{let i=new Set(t.text.split(`,`).map(e=>e.trim()).filter(Boolean));return(0,L.jsx)(`div`,{className:`flex flex-wrap gap-x-3 gap-y-1 rounded border bg-background px-2 py-1.5`,children:e.options?.map(t=>(0,L.jsxs)(`label`,{className:`flex items-center gap-1 text-xs font-mono`,children:[(0,L.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:i.has(t),disabled:n,onChange:n=>{let a=new Set(i);n.target.checked?a.add(t):a.delete(t),r(e.options.filter(e=>a.has(e)).join(`,`))}}),t]},t))})}case`integer`:case`decimal`:return(0,L.jsx)(`input`,{className:`${d} tabular-nums`,inputMode:`decimal`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:e.kind===`integer`?`0`:`0.00`});case`date`:case`datetime`:{let[f,p]=t.text.trim().split(/[ T]/);return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${d} flex-1`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:e.kind===`date`?`YYYY-MM-DD`:`YYYY-MM-DD HH:MM:SS`}),(0,L.jsxs)(a,{children:[(0,L.jsx)(s,{asChild:!0,children:(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background p-1.5 text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,title:u(`result.rowForm.pickDate`),children:(0,L.jsx)(o,{className:`size-3.5`})})}),(0,L.jsx)(c,{className:`w-auto p-0`,align:`end`,children:(0,L.jsx)(i,{mode:`single`,selected:V(f??``),defaultMonth:V(f??``),onSelect:t=>{if(!t)return;let n=`${t.getFullYear()}-${z(t.getMonth()+1)}-${z(t.getDate())}`;r(e.kind===`date`?n:`${n} ${p||`00:00:00`}`)}})})]}),(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background px-1.5 py-1 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,onClick:()=>r(B(e.kind)),title:u(`result.rowForm.now`),children:(0,L.jsx)(l,{className:`size-3.5`})})]})}case`time`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${d} flex-1`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:`HH:MM:SS`}),(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background px-1.5 py-1 text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,onClick:()=>r(B(`time`)),title:u(`result.rowForm.now`),children:(0,L.jsx)(l,{className:`size-3.5`})})]});case`json`:{let e=!0;try{t.text.trim()&&JSON.parse(t.text)}catch{e=!1}return(0,L.jsxs)(`div`,{className:`space-y-1`,children:[(0,L.jsx)(`textarea`,{className:`${d} min-h-[96px] resize-y text-xs ${e?``:`border-destructive`}`,value:t.text,onChange:e=>r(e.target.value),disabled:n,spellCheck:!1,placeholder:`{}`}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 rounded border bg-background px-1.5 py-0.5 text-[10px] text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n||!e||!t.text.trim(),onClick:()=>{try{r(JSON.stringify(JSON.parse(t.text),null,2))}catch{}},children:[(0,L.jsx)(O,{className:`size-3`}),u(`result.rowForm.formatJson`)]}),!e&&(0,L.jsx)(`span`,{className:`text-[10px] text-destructive`,children:u(`result.rowForm.invalid.json`)})]})]})}case`text`:return(0,L.jsx)(`textarea`,{className:`${d} min-h-[72px] resize-y`,value:t.text,onChange:e=>r(e.target.value),disabled:n,spellCheck:!1});case`binary`:return(0,L.jsx)(`div`,{className:`rounded border bg-muted/40 px-2 py-1 text-xs italic text-muted-foreground`,children:u(`result.rowForm.binaryUnsupported`)});case`uuid`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${d} flex-1`,value:t.text,onChange:e=>r(e.target.value),disabled:n,placeholder:`00000000-0000-0000-0000-000000000000`}),(0,L.jsx)(`button`,{type:`button`,className:`rounded border bg-background px-1.5 py-1 text-muted-foreground hover:text-foreground disabled:opacity-50`,disabled:n,onClick:()=>r(crypto.randomUUID()),title:u(`result.rowForm.generateUuid`),children:(0,L.jsx)(O,{className:`size-3.5`})})]});default:{let i=t.text.length>80||t.text.includes(`
2
+ `);return(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[i?(0,L.jsx)(`textarea`,{className:`${d} min-h-[56px] resize-y`,value:t.text,onChange:e=>r(e.target.value),disabled:n,spellCheck:!1}):(0,L.jsx)(`input`,{className:d,value:t.text,onChange:e=>r(e.target.value),disabled:n,maxLength:e.maxLength}),e.maxLength&&(0,L.jsxs)(`div`,{className:`text-right text-[10px] tabular-nums ${t.text.length>e.maxLength?`text-destructive`:`text-muted-foreground`}`,children:[t.text.length,`/`,e.maxLength]})]})}}}function U(){let{t:e}=g(),i=p(`row-form`),a=f(e=>e.closeDialog),o=f(e=>e.setFooterMessage),s=t(i?.connectionId??``),c=v(e=>i?e.transactionOpen[i.connectionId]:!1),[l,d]=(0,k.useState)(null),[m,h]=(0,k.useState)(null),[O,A]=(0,k.useState)({}),[M,F]=(0,k.useState)({}),[z,B]=(0,k.useState)(null),[V,U]=(0,k.useState)(!1),W=i?.mode===`edit`;(0,k.useEffect)(()=>{if(!i)return;let e=!1,t=b(i.serverConnectionId);return s.introspect.listColumns(t,i.database,i.table).then(t=>{if(e)return;d(t);let n={};for(let e of t)if(i.mode===`edit`){let t=i.fields.find(t=>t.orgName===e.name);n[e.name]=P(t?i.row?.[t.name]:void 0)}else n[e.name]=N(e);A(n)}).catch(t=>{e||h(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[i?.serverConnectionId,i?.database,i?.table,i?.mode]);let G=(0,k.useMemo)(()=>new Map((l??[]).map(e=>[e.name,j(e,{oracleDate:s.id===`oracle`})])),[l,s.id]),K=(0,k.useCallback)((e,t)=>{A(n=>({...n,[e]:{...n[e],mode:t}})),F(t=>{let n={...t};return delete n[e],n})},[]),q=(0,k.useCallback)((e,t)=>{A(n=>({...n,[e]:{mode:`value`,text:t}})),F(t=>{let n={...t};return delete n[e],n})},[]),J=(0,k.useMemo)(()=>({__default:!0}),[]),Y=(0,k.useCallback)(()=>{if(!l)return null;let t=new Map,n={};for(let r of l){let i=O[r.name],a=G.get(r.name);if(!i||i.mode===`auto`||i.mode===`keep`)continue;if(i.mode===`null`){t.set(r.name,null);continue}if(i.mode==="default"){t.set(r.name,J);continue}let o=I(a,i.text);if(`error`in o){n[r.name]=e(R[o.error]??`result.rowForm.invalid.number`);continue}if(a.maxLength&&typeof o.value==`string`&&o.value.length>a.maxLength){n[r.name]=e(`result.rowForm.invalid.length`,{max:a.maxLength});continue}t.set(r.name,o.value)}return F(n),Object.keys(n).length>0?null:{values:t}},[l,O,G,e,J]),X=(0,k.useCallback)(e=>{if(!i)return null;let t=e=>e===J?`DEFAULT`:s.quoteLiteral(e);if(i.mode===`insert`){let n=[...e];return n.length===0?s.getQuery(`INSERT_DEFAULT_VALUES`,i.database,i.table):s.getQuery(`INSERT_TABLE`,i.database,i.table,n.map(([e])=>s.quoteIdentifier(e)).join(`, `),n.map(([,e])=>t(e)).join(`, `))}return!i.where||e.size===0?null:s.getQuery(`UPDATE_TABLE`,i.database,i.table,[...e].map(([e,n])=>`${s.quoteIdentifier(e)} = ${t(n)}`).join(`, `),i.where)},[i,s,J]),Z=(0,k.useMemo)(()=>{if(!l)return``;let e=new Map;for(let t of l){let n=O[t.name];if(!(!n||n.mode===`auto`||n.mode===`keep`)){if(n.mode===`null`)e.set(t.name,null);else if(n.mode==="default")e.set(t.name,J);else{let r=I(G.get(t.name),n.text);e.set(t.name,`error`in r?n.text:r.value)}}}return X(e)??``},[l,O,G,X,J]),Q=e=>{let t={};for(let[n,r]of e){if(r===J)continue;let e=i?.fields.find(e=>e.orgName===n);t[e?.name??n]=typeof r==`bigint`?r.toString():r}return t},te=()=>{let e=Y();!e||!i||(i.onStage?.(i.mode,Q(e.values)),a())},ne=async()=>{let t=Y();if(!t||!i)return;let n=X(t.values);if(!n){B(e(`result.rowForm.nothingToWrite`));return}U(!0),B(null);try{if(y.getState().previewGridCommit&&!await f.getState().requestDestructiveConfirm({title:e(W?`result.rowForm.confirmUpdateTitle`:`result.rowForm.confirmInsertTitle`,{table:`${i.database}.${i.table}`}),statements:[n],confirmLabel:e(W?`result.rowForm.update`:`result.rowForm.insert`)}))return;await x(i.connectionId,n,{database:i.database,skipDestructiveConfirm:!0}),o(e(W?`result.rowForm.updated`:`result.rowForm.inserted`,{table:`${i.database}.${i.table}`})),i.onCommitted?.(i.mode,Q(t.values)),a()}catch(e){if(e instanceof S)return;B(e instanceof Error?e.message:String(e))}finally{U(!1)}};if(!i)return null;let $=(e,t,n,r)=>(0,L.jsx)(`button`,{type:`button`,className:`rounded px-1.5 py-0.5 text-[10px] font-medium ${r===t?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted hover:text-foreground`}`,onClick:()=>K(e,t),children:n});return(0,L.jsx)(D,{open:!0,onOpenChange:e=>{e||a()},children:(0,L.jsxs)(T,{className:`flex max-h-[90vh] flex-col sm:max-w-[860px]`,children:[(0,L.jsxs)(C,{children:[(0,L.jsx)(ee,{children:e(W?`result.rowForm.editTitle`:`result.rowForm.insertTitle`)}),(0,L.jsxs)(E,{className:`font-mono text-xs`,children:[i.database,`.`,i.table]})]}),(0,L.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto rounded-md border`,children:[m&&(0,L.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:m}),!l&&!m&&(0,L.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground`,children:[(0,L.jsx)(r,{className:`size-4 animate-spin`}),e(`result.rowForm.loading`)]}),l&&(0,L.jsxs)(`table`,{className:`w-full border-separate border-spacing-0 text-sm`,children:[(0,L.jsx)(`thead`,{className:`sticky top-0 z-10 bg-background`,children:(0,L.jsxs)(`tr`,{className:`text-left text-[10px] uppercase tracking-wide text-muted-foreground`,children:[(0,L.jsx)(`th`,{className:`w-[38%] border-b px-2 py-1.5 font-medium`,children:e(`result.rowForm.colColumn`)}),(0,L.jsx)(`th`,{className:`border-b px-2 py-1.5 font-medium`,children:e(`result.rowForm.colValue`)})]})}),(0,L.jsx)(`tbody`,{children:l.map(t=>{let r=O[t.name]??{mode:`value`,text:``},a=G.get(t.name),o=r.mode===`auto`,s=M[t.name],c=t.key===`PRI`,l=i.fields.find(e=>e.orgName===t.name),d=!!l&&!!i.row&&i.row[l.name]===null;return(0,L.jsxs)(`tr`,{className:`align-top ${s?`bg-destructive/5`:`hover:bg-muted/30`}`,children:[(0,L.jsxs)(`td`,{className:`border-b border-border/60 px-2 py-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,L.jsx)(`span`,{className:`truncate font-mono text-sm font-medium`,title:t.name,children:t.name}),c&&(0,L.jsxs)(`span`,{className:`flex shrink-0 items-center gap-0.5 rounded border border-catppuccin-yellow/50 px-1 text-[9px] font-semibold text-catppuccin-yellow`,children:[(0,L.jsx)(u,{className:`size-2.5`}),`PK`]})]}),(0,L.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-1.5 gap-y-0.5 text-[10px] text-muted-foreground`,children:[(0,L.jsx)(`span`,{className:`rounded bg-muted px-1 py-px font-mono`,children:t.type}),!t.nullable&&(0,L.jsx)(`span`,{children:`NOT NULL`}),t.defaultValue!==null&&(0,L.jsxs)(`span`,{className:`font-mono`,title:e(`result.rowForm.defaultValue`),children:[`= `,t.defaultValue]}),t.extra&&(0,L.jsx)(`span`,{children:t.extra})]}),t.comment&&(0,L.jsx)(`div`,{className:`mt-0.5 text-[10px] text-muted-foreground/80`,children:t.comment})]}),(0,L.jsx)(`td`,{className:`border-b border-border/60 px-2 py-2`,children:(0,L.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,L.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[r.mode===`keep`?(0,L.jsx)(`div`,{className:`cursor-text truncate rounded border border-dashed bg-muted/30 px-2 py-1 font-mono text-xs text-muted-foreground`,onClick:()=>K(t.name,`value`),title:e(`result.rowForm.clickToChange`),children:d?(0,L.jsx)(`span`,{className:`italic`,children:`NULL`}):r.text||(0,L.jsx)(`span`,{className:`italic`,children:e(`result.rowForm.empty`)})}):r.mode===`value`?(0,L.jsx)(H,{spec:a,state:r,disabled:!1,onText:e=>q(t.name,e)}):(0,L.jsx)(`div`,{className:`rounded border border-dashed bg-muted/30 px-2 py-1 font-mono text-xs italic text-muted-foreground`,children:r.mode===`null`?`NULL`:r.mode==="default"?`DEFAULT (${t.defaultValue??``})`:e(`result.rowForm.autoHint`)}),s&&(0,L.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 text-[11px] text-destructive`,children:[(0,L.jsx)(n,{className:`size-3`}),s]})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 rounded border bg-background p-0.5`,children:[W&&$(t.name,`keep`,e(`result.rowForm.mode.keep`),r.mode),(o||!W&&/auto_increment|identity/i.test(t.extra))&&$(t.name,`auto`,e(`result.rowForm.mode.auto`),r.mode),$(t.name,`value`,e(`result.rowForm.mode.value`),r.mode),t.nullable&&$(t.name,`null`,`NULL`,r.mode),t.defaultValue!==null&&$(t.name,`default`,`DEFAULT`,r.mode)]})]})})]},t.name)})})]})]}),l&&(0,L.jsxs)(`div`,{className:`shrink-0 rounded-md border bg-muted/30`,children:[(0,L.jsx)(`div`,{className:`border-b px-3 py-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e(`result.rowForm.preview`)}),(0,L.jsx)(`pre`,{className:`max-h-24 overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs`,children:Z||(0,L.jsx)(`span`,{className:`italic text-muted-foreground`,children:e(`result.rowForm.nothingToWrite`)})})]}),z&&(0,L.jsx)(`div`,{className:`shrink-0 rounded border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:z}),(0,L.jsxs)(w,{className:`items-center`,children:[c&&(0,L.jsx)(`span`,{className:`mr-auto text-[11px] text-catppuccin-yellow`,children:e(`result.rowForm.inTransaction`)}),(0,L.jsx)(_,{variant:`outline`,onClick:()=>a(),disabled:V,children:e(`command.close`)}),i.onStage&&(0,L.jsx)(_,{variant:`outline`,onClick:te,disabled:V||!l,title:e(`result.rowForm.stageHint`),children:e(W?`result.rowForm.stageEdit`:`result.rowForm.stageInsert`)}),(0,L.jsxs)(_,{onClick:()=>void ne(),disabled:V||!l,children:[V&&(0,L.jsx)(r,{className:`mr-1 size-3.5 animate-spin`}),e(W?`result.rowForm.update`:`result.rowForm.insert`)]})]})]})})}export{U as RowFormDialog};
@@ -0,0 +1 @@
1
+ import{n as e}from"./ui-store-5IssrgmG.js";import{l as t,m as n,t as r}from"./button-B2EsmMJs.js";import{n as i,t as a}from"./settings-store-BBVuUVjA.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./dialog-FBpgH0QJ.js";import{t as f}from"./settings-controls-DrW8_eiX.js";var p=t();function m(){let t=e(e=>e.activeDialog),m=e(e=>e.closeDialog),h=i(),g=h.update,{t:_}=n();return(0,p.jsx)(d,{open:t===`safety-settings`,onOpenChange:e=>{e||m()},children:(0,p.jsxs)(c,{className:`sm:max-w-[560px]`,children:[(0,p.jsxs)(o,{children:[(0,p.jsx)(l,{children:_(`settings.title`)}),(0,p.jsx)(u,{children:_(`settings.description`)})]}),(0,p.jsxs)(`div`,{className:`grid gap-2`,children:[(0,p.jsx)(f,{id:`s-confirm`,checked:h.confirmDestructive,onChange:e=>g({confirmDestructive:e}),label:`Confirm destructive statements`,hint:`Ask before DROP TABLE/DATABASE, TRUNCATE, DELETE or UPDATE without WHERE, and ALTER … DROP COLUMN.`}),(0,p.jsx)(f,{id:`s-warn`,checked:h.warnInEditor,onChange:e=>g({warnInEditor:e}),label:`Warn in the editor`,hint:`Underline destructive statements and statements a read-only connection would refuse.`}),(0,p.jsx)(f,{id:`s-override`,checked:h.allowReadOnlyOverride,onChange:e=>g({allowReadOnlyOverride:e}),label:`Allow "Run anyway" on read-only connections`,hint:`When off, writes on a read-only connection are refused with no override.`}),(0,p.jsx)(f,{id:`s-preview`,checked:h.previewGridCommit,onChange:e=>g({previewGridCommit:e}),label:`Preview SQL before committing grid edits`,hint:`Show the generated UPDATE statements and ask for confirmation.`})]}),(0,p.jsxs)(s,{children:[(0,p.jsx)(r,{variant:`ghost`,onClick:()=>g(a),children:_(`settings.resetDefaults`)}),(0,p.jsx)(r,{onClick:m,children:_(`settings.done`)})]})]})})}export{m as SafetySettingsDialog};
@@ -0,0 +1,7 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{X as t,Y as n,c as r}from"./main-C-Gt0g0g.js";import{c as i,h as a,n as o,t as s}from"./ui-store-5IssrgmG.js";import{l as c,m as l,t as u}from"./button-B2EsmMJs.js";import{a as d,i as f,n as p,r as m,t as h}from"./select-DwgCtoqv.js";import{t as g}from"./connection-store-BnO3WqEO.js";import{a as _}from"./database-BvWJHB7q.js";import{n as v}from"./engine-s5WfEr4n.js";import{t as ee}from"./pro-usage-C661VD02.js";import{t as y}from"./table-definition-Bs5VSn0X.js";import{a as b,i as te,n as ne,o as re,t as ie}from"./dialog-FBpgH0QJ.js";var x=e(a(),1),S=[`VIEW`,`PROCEDURE`,`FUNCTION`,`TRIGGER`,`EVENT`];function C(e,t){return e.replace(/\bDEFINER\s*=\s*(?:`[^`]*`|'[^']*'|"[^"]*"|\w+)@(?:`[^`]*`|'[^']*'|"[^"]*"|[\w.%-]+)/gi,``).replace(/\bSQL SECURITY (?:DEFINER|INVOKER)\b/gi,``).replace(/\bALGORITHM\s*=\s*\w+/gi,``).replace(RegExp(`[\`"\\[]?${t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}[\`"\\]]?\\.`,`gi`),``).replace(/\s+/g,` `).replace(/;\s*$/,``).trim()}function w(e,t){let n=[];for(let r of S){let i=e.objects?.get(r),a=t.objects?.get(r);if(!i&&!a)continue;let o=[...new Set([...i?.keys()??[],...a?.keys()??[]])].sort();for(let s of o){let o=i?.get(s)??null,c=a?.get(s)??null,l;l=o?c?o.sql!==null&&c.sql!==null&&C(o.sql,e.database)===C(c.sql,t.database)?`identical`:`changed`:`missingInTarget`:`missingInSource`,n.push({type:r,name:s,status:l,source:o,target:c})}}return n}var T=e=>e.toLowerCase().replace(/\s+/g,` `).trim(),E=e=>e===null?null:e.trim().replace(/^'(.*)'(?:::\w+)?$/s,`$1`),D=e=>e.addedColumns.length+e.removedColumns.length+e.changedColumns.length+e.addedIndexes.length+e.removedIndexes.length+e.changedIndexes.length>0;function O(e,t){let n=[];return T(e.type)!==T(t.type)&&n.push(`type`),e.nullable!==t.nullable&&n.push(`nullable`),E(e.defaultValue)!==E(t.defaultValue)&&n.push(`default`),e.extra.toLowerCase()!==t.extra.toLowerCase()&&n.push(`extra`),n}var k=(e,t)=>e.type===t.type&&e.columns.length===t.columns.length&&e.columns.every((e,n)=>e===t.columns[n]);function A(e,t,n){let r=t.columns.get(e)??[],i=n.columns.get(e)??[],a=new Map(i.map(e=>[e.name,e])),o=new Map(r.map(e=>[e.name,e])),s={table:e,addedColumns:r.filter(e=>!a.has(e.name)),removedColumns:i.filter(e=>!o.has(e.name)),changedColumns:[],addedIndexes:[],removedIndexes:[],changedIndexes:[]};for(let e of r){let t=a.get(e.name);if(!t)continue;let n=O(e,t);n.length>0&&s.changedColumns.push({name:e.name,source:e,target:t,attributes:n})}let c=t.indexes.get(e)??[],l=n.indexes.get(e)??[],u=new Map(l.map(e=>[e.name,e])),d=new Map(c.map(e=>[e.name,e]));s.addedIndexes=c.filter(e=>!u.has(e.name)),s.removedIndexes=l.filter(e=>!d.has(e.name));for(let e of c){let t=u.get(e.name);t&&!k(e,t)&&s.changedIndexes.push({name:e.name,source:e,target:t})}return s}function j(e,t){let n=new Set(t.tables),r=new Set(e.tables),i={missingInTarget:[],missingInSource:[],changed:[],identical:[],objects:w(e,t)};for(let r of e.tables){if(!n.has(r)){i.missingInTarget.push(r);continue}let a=A(r,e,t);D(a)?i.changed.push(a):i.identical.push(r)}return i.missingInSource=t.tables.filter(e=>!r.has(e)),i}var M=e=>e.split(`
2
+ `).map(e=>`-- ${e}`).join(`
3
+ `);function ae(e,t,n,r,i={}){let a=n.ddl,o=r.database,s=e=>i.includeDrops?e:M(e),c=[`-- Schema sync: ${t.database} -> ${o} (${n.label})`,`-- Review before running. Statements that drop data are commented out unless "Include DROP statements" was checked.`,``];for(let r of e.missingInTarget)c.push(`-- Table ${r} is missing in the target`),c.push(N(r,t,n,o)),c.push(``);for(let t of e.changed){c.push(`-- Table ${t.table}`);for(let e of t.removedIndexes)c.push(s(a.dropIndex(o,t.table,e.name)));for(let e of t.changedIndexes)c.push(s(a.dropIndex(o,t.table,e.name)));for(let e of t.addedColumns)c.push(a.addColumn(o,t.table,e));for(let e of t.changedColumns){let r=a.alterColumn(o,t.table,e.source);c.push(r??M(`${n.label} cannot alter column ${e.name} in place (${e.attributes.join(`, `)}): recreate the table`))}for(let e of t.removedColumns)c.push(s(a.dropColumn(o,t.table,e.name)));for(let e of t.addedIndexes)c.push(a.createIndex(o,t.table,e));for(let e of t.changedIndexes)c.push(a.createIndex(o,t.table,e.source));c.push(``)}for(let t of e.missingInSource)c.push(`-- Table ${t} exists only in the target`),c.push(s(`DROP TABLE ${n.qualify(o,t)};`)),c.push(``);for(let t of e.objects){if(t.status===`identical`)continue;let e=`${t.type.charAt(0)}${t.type.slice(1).toLowerCase()} ${t.name}`,r=F(n,o,t);t.status===`missingInSource`?(c.push(`-- ${e} exists only in the target`),c.push(s(r))):(c.push(t.status===`changed`?`-- ${e} differs; recreated from the source`:`-- ${e} is missing in the target`),t.status===`changed`&&c.push(s(r)),c.push(t.source?.sql?I(t.source.sql):M(`the source engine did not return a CREATE statement for ${e}`))),c.push(``)}return c.join(`
4
+ `).replace(/\n{3,}/g,`
5
+
6
+ `).trim()+`
7
+ `}function N(e,t,n,r){let i=y(r,e,t.columns.get(e)??[],t.indexes.get(e)??[],null);return n.ddl.createTable(i)}var P={VIEW:`DROP_VIEW`,PROCEDURE:`DROP_PROCEDURE`,FUNCTION:`DROP_FUNCTION`,TRIGGER:`DROP_TRIGGER`,EVENT:`DROP_EVENT`};function F(e,t,n){let r=P[n.type];if(!e.hasQuery(r))return`-- ${e.label} has no ${n.type} objects`;let i=n.target?.table??n.source?.table??``;return`${e.getQuery(r,t,n.name,``,i).replace(/\s{2,}/g,` `).trim()};`}function I(e){let t=e.trim();return/;\s*$/.test(t)?t:`${t};`}var L=c(),oe=e=>e instanceof Error?e.message:String(e),R=e=>`${e.type}:${e.name}`,z=e=>e.hostName||e.host||e.file||e.id;function B({id:e,label:t,side:n,onChange:i,connections:a,disabled:o}){let{t:s}=l(),[c,u]=(0,x.useState)([]),g=a.find(e=>e.id===n.connectionId);return(0,x.useEffect)(()=>{if(!g?.serverConnectionId)return;let e=!1,t=v(g.id),r=_(g.serverConnectionId);return(async()=>{try{let a=await t.introspect.listDatabases(r);if(e)return;u(a),a.includes(n.database)||i({connectionId:g.id,database:a[0]??``})}catch{e||u([])}})(),()=>{e=!0}},[g?.id,g?.serverConnectionId]),(0,L.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3`,children:[(0,L.jsx)(r,{className:`font-medium`,children:t}),(0,L.jsxs)(h,{value:n.connectionId,onValueChange:e=>i({connectionId:e,database:``}),disabled:o,children:[(0,L.jsx)(f,{id:`${e}-conn`,className:`w-full`,children:(0,L.jsx)(d,{placeholder:s(`database.diff.pickConnection`)})}),(0,L.jsx)(p,{children:a.map(e=>(0,L.jsx)(m,{value:e.id,children:z(e)},e.id))})]}),(0,L.jsxs)(h,{value:n.database,onValueChange:e=>i({...n,database:e}),disabled:o||c.length===0,children:[(0,L.jsx)(f,{id:`${e}-db`,className:`w-full`,children:(0,L.jsx)(d,{placeholder:s(`database.diff.pickDatabase`)})}),(0,L.jsx)(p,{children:c.map(e=>(0,L.jsx)(m,{value:e,children:e},e))})]})]})}async function V(e){let t=g.getState().activeConnections.find(t=>t.id===e.connectionId);if(!t?.serverConnectionId)throw Error(`Not connected`);let n=v(t.id),r=_(t.serverConnectionId),[i,a,o,s]=await Promise.all([n.introspect.listTables(r,e.database),n.introspect.listAllColumns(r,e.database),n.introspect.listAllIndexes(r,e.database),H(n,r,e.database)]);return{database:e.database,tables:i.map(e=>e.name).sort(),columns:a,indexes:o,objects:s}}async function H(e,t,n){let{introspect:r,capabilities:i}=e,a={VIEW:async()=>(await r.listViews(t,n)).map(e=>({name:e}))};i.procedures&&(a.PROCEDURE=async()=>(await r.listProcedures(t,n)).map(e=>({name:e}))),i.functions&&(a.FUNCTION=async()=>(await r.listFunctions(t,n)).map(e=>({name:e}))),i.triggers&&(a.TRIGGER=async()=>r.listTriggerDetails?r.listTriggerDetails(t,n):(await r.listTriggers(t,n)).map(e=>({name:e}))),i.events&&(a.EVENT=async()=>(await r.listEvents(t,n)).map(e=>({name:e})));let o=new Map;for(let e of S){let i=a[e];if(!i)continue;let s=await i(),c=new Map;for(let i of s){let a=null;try{a=await r.getCreateStatement(t,n,e,i.name)}catch{}c.set(i.name,i.table?{sql:a,table:i.table}:{sql:a})}o.set(e,c)}return o}function U({diff:e}){let{t}=l(),n=e=>(0,L.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs font-mono`,children:e?e.sql??t(`database.diff.noDefinition`):`—`});return(0,L.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.source`)}),n(e.source)]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`div`,{className:`text-xs text-muted-foreground mb-1`,children:t(`database.diff.target`)}),n(e.target)]})]})}var W=e=>`${e.type}${e.nullable?``:` NOT NULL`}${e.defaultValue===null?``:` DEFAULT ${e.defaultValue}`}${e.extra?` ${e.extra}`:``}`;function G({diff:e}){let{t}=l(),n=[];for(let r of e.addedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:W(r),target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedColumns)n.push({kind:t(`database.diff.column`),name:r.name,source:`—`,target:W(r),tone:`text-destructive`});for(let r of e.changedColumns)n.push({kind:t(`database.diff.column`),name:`${r.name} (${r.attributes.join(`, `)})`,source:W(r.source),target:W(r.target),tone:`text-amber-600 dark:text-amber-400`});for(let r of e.addedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.type} (${r.columns.join(`, `)})`,target:`—`,tone:`text-green-600 dark:text-green-400`});for(let r of e.removedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`—`,target:`${r.type} (${r.columns.join(`, `)})`,tone:`text-destructive`});for(let r of e.changedIndexes)n.push({kind:t(`database.diff.index`),name:r.name,source:`${r.source.type} (${r.source.columns.join(`, `)})`,target:`${r.target.type} (${r.target.columns.join(`, `)})`,tone:`text-amber-600 dark:text-amber-400`});return(0,L.jsxs)(`table`,{className:`w-full text-xs font-mono`,children:[(0,L.jsx)(`thead`,{className:`text-muted-foreground`,children:(0,L.jsxs)(`tr`,{children:[(0,L.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.object`)}),(0,L.jsx)(`th`,{className:`text-left font-normal pr-2`,children:t(`database.diff.source`)}),(0,L.jsx)(`th`,{className:`text-left font-normal`,children:t(`database.diff.target`)})]})}),(0,L.jsx)(`tbody`,{children:n.map((e,t)=>(0,L.jsxs)(`tr`,{className:e.tone,children:[(0,L.jsxs)(`td`,{className:`pr-2 align-top whitespace-nowrap`,children:[e.kind,` `,e.name]}),(0,L.jsx)(`td`,{className:`pr-2 align-top break-all`,children:e.source}),(0,L.jsx)(`td`,{className:`align-top break-all`,children:e.target})]},t))})]})}function K(){let{t:e}=l(),r=o(e=>e.activeDialog),a=o(e=>e.closeDialog),c=g(e=>e.activeConnections),d=(0,x.useMemo)(()=>c.filter(e=>e.serverConnectionId),[c]),f=g(e=>e.activeConnectionId),p=r===`schema-diff`,m=s(`schema-diff`),[h,_]=(0,x.useState)(()=>m&&d.some(e=>e.id===m.connectionId)?{connectionId:m.connectionId,database:m.database}:{connectionId:f&&d.some(e=>e.id===f)?f:d[0]?.id??``,database:``}),[y,S]=(0,x.useState)(()=>({connectionId:d.find(e=>e.id!==h.connectionId)?.id??h.connectionId,database:``})),[C,w]=(0,x.useState)(null),[T,E]=(0,x.useState)(null),[D,O]=(0,x.useState)(null),[k,A]=(0,x.useState)(!1),[M,N]=(0,x.useState)(!1),[P,F]=(0,x.useState)(!1),[I,z]=(0,x.useState)(null),H=h.connectionId===y.connectionId&&h.database===y.database,W=!!h.connectionId&&!!h.database&&!!y.connectionId&&!!y.database&&!H,K=y.connectionId?v(y.connectionId):null,q=h.connectionId?v(h.connectionId):null,se=!!q&&!!K&&q.id!==K.id;async function ce(){F(!0),z(null),E(null),O(null);try{let[e,t]=await Promise.all([V(h),V(y)]),n=j(e,t);w({source:e,target:t}),E(n);let r=m?.focus,a=null;if(r?.type===`TABLE`)a=n.changed.some(e=>e.table===r.name)?r.name:n.missingInTarget.includes(r.name)?`+${r.name}`:n.missingInSource.includes(r.name)?`-${r.name}`:null,n.identical.includes(r.name)&&N(!0);else if(r){let e=n.objects.find(e=>e.type===r.type&&e.name===r.name);e&&(a=R(e),e.status===`identical`&&N(!0))}O(a??n.changed[0]?.table??null),ee(`compare_schemas`),i(`schema_diff`,{source_dbms:q?.id??`unknown`,target_dbms:K?.id??`unknown`,changed:n.changed.length,missing:n.missingInTarget.length+n.missingInSource.length})}catch(e){z(oe(e))}finally{F(!1)}}let J=(0,x.useMemo)(()=>!T||!C||!K?``:ae(T,C.source,K,{database:y.database},{includeDrops:k}),[T,C,K,y.database,k]);function Y(){J&&(t(y.connectionId,J,y.database,e(`database.diff.tabTitle`,{database:y.database})),a())}let X=T?.changed.find(e=>e.table===D)??null,Z=T?.objects.find(e=>R(e)===D)??null,Q=T?.objects.filter(e=>e.status!==`identical`)??[],le=T?e(`database.diff.summary`,{changed:T.changed.length+Q.filter(e=>e.status===`changed`).length,missingTarget:T.missingInTarget.length+Q.filter(e=>e.status===`missingInTarget`).length,missingSource:T.missingInSource.length+Q.filter(e=>e.status===`missingInSource`).length,identical:T.identical.length+T.objects.filter(e=>e.status===`identical`).length}):``,$=!!T&&T.changed.length+T.missingInTarget.length+T.missingInSource.length+Q.length>0,ue=e=>e===`missingInTarget`?`text-green-600 dark:text-green-400`:e===`missingInSource`?`text-destructive`:e===`changed`?`text-amber-600 dark:text-amber-400`:`text-muted-foreground`,de=e=>e===`missingInTarget`?`+`:e===`missingInSource`?`-`:e===`changed`?`~`:`=`;return(0,L.jsx)(ie,{open:p,onOpenChange:e=>{e||a()},children:(0,L.jsxs)(ne,{className:`sm:max-w-[860px]`,children:[(0,L.jsx)(b,{children:(0,L.jsx)(re,{children:e(`database.diff.title`)})}),(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,L.jsx)(B,{id:`diff-source`,label:e(`database.diff.source`),side:h,onChange:_,connections:d,disabled:P}),(0,L.jsx)(B,{id:`diff-target`,label:e(`database.diff.target`),side:y,onChange:S,connections:d,disabled:P})]}),se&&(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.crossEngineHint`)}),H&&h.database&&(0,L.jsx)(`p`,{className:`text-xs text-destructive`,children:e(`database.diff.sameSide`)}),I&&(0,L.jsx)(`p`,{className:`text-sm text-destructive whitespace-pre-wrap`,children:I}),T&&(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,L.jsx)(`span`,{children:le}),(0,L.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:M,onChange:e=>N(e.target.checked)}),e(`database.diff.showIdentical`)]})]}),(0,L.jsxs)(`div`,{className:`grid grid-cols-[220px_1fr] gap-3 h-[300px]`,children:[(0,L.jsxs)(`ul`,{className:`overflow-auto rounded-md border text-sm`,children:[T.missingInTarget.map(e=>(0,L.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-green-600 dark:text-green-400 ${D===`+${e}`?`bg-accent`:``}`,onClick:()=>O(`+${e}`),children:[`+ `,e]},`mt-${e}`)),T.changed.map(e=>(0,L.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-amber-600 dark:text-amber-400 ${D===e.table?`bg-accent`:``}`,onClick:()=>O(e.table),children:[`~ `,e.table]},e.table)),T.missingInSource.map(e=>(0,L.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer text-destructive ${D===`-${e}`?`bg-accent`:``}`,onClick:()=>O(`-${e}`),children:[`- `,e]},`ms-${e}`)),M&&T.identical.map(e=>(0,L.jsxs)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:[`= `,e]},`id-${e}`)),T.objects.filter(e=>M||e.status!==`identical`).map(e=>(0,L.jsxs)(`li`,{className:`px-2 py-1 cursor-pointer ${ue(e.status)} ${D===R(e)?`bg-accent`:``}`,onClick:()=>O(R(e)),children:[de(e.status),` `,(0,L.jsxs)(`span`,{className:`text-muted-foreground`,children:[`[`,n(e.type),`]`]}),` `,e.name]},R(e))),!$&&(0,L.jsx)(`li`,{className:`px-2 py-1 text-muted-foreground`,children:e(`database.diff.identicalAll`)})]}),(0,L.jsx)(`div`,{className:`overflow-auto rounded-md border p-2`,children:X?(0,L.jsx)(G,{diff:X}):Z?(0,L.jsx)(U,{diff:Z}):D?.startsWith(`+`)?(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInTarget`,{table:D.slice(1)})}):D?.startsWith(`-`)?(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.missingInSource`,{table:D.slice(1)})}):(0,L.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`database.diff.selectTable`)})})]}),(0,L.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs cursor-pointer`,children:[(0,L.jsx)(`input`,{type:`checkbox`,checked:k,onChange:e=>A(e.target.checked)}),(0,L.jsx)(`span`,{className:k?`text-destructive`:``,children:e(`database.diff.includeDrops`)})]})]})]}),(0,L.jsxs)(te,{children:[(0,L.jsx)(u,{variant:`outline`,onClick:a,children:e(`database.diff.close`)}),(0,L.jsx)(u,{variant:`secondary`,onClick:()=>{ce()},disabled:!W||P,children:e(P?`database.diff.comparing`:`database.diff.compare`)}),(0,L.jsx)(u,{onClick:Y,disabled:!$,children:e(`database.diff.openScript`)})]})]})})}export{K as SchemaDiffDialog};
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,c as n}from"./main-BPskUSLM.js";import{h as r,n as i}from"./ui-store-5IssrgmG.js";import{l as a,m as o,t as s}from"./button-B2EsmMJs.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-C3A-RS4G.js";import{t as p}from"./connection-store-Ds9Gjt3K.js";import{n as m}from"./query-store-BR6Saeed.js";import{S as h,a as g}from"./database-eJWHFM-2.js";import{n as _}from"./engine-DtZy_Zk0.js";import{o as v,r as y}from"./schema-nodes-MgIiKfpG.js";import{a as b,i as x,n as S,o as C,t as w}from"./dialog-FBpgH0QJ.js";import{t as T}from"./file-name-CnYBZPf9.js";var E=e(r(),1),D=a();function O(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function k(){let{t:e}=o(),{activeDialog:r,closeDialog:a}=i(),{activeConnectionId:k,activeConnections:A}=p(),{trees:j}=h(),M=m(),N=r===`export-html`,P=(0,E.useMemo)(()=>k?y(j[k]??[]):[],[k,j]),F=(0,E.useMemo)(()=>{if(!k)return``;let e=M.activeTabId[k];return(M.tabs[k]??[]).find(t=>t.id===e)?.database||``},[k,M.activeTabId,M.tabs]),[I,L]=(0,E.useState)(``),R=(0,E.useMemo)(()=>!k||!I?[]:v(j[k]??[],I),[k,I,j]),[z,B]=(0,E.useState)([]),[V,H]=(0,E.useState)(!0),[U,W]=(0,E.useState)(!0),[G,K]=(0,E.useState)(!0),[q,J]=(0,E.useState)(!1);(0,E.useEffect)(()=>{N&&F&&L(F)},[N,F]);function Y(e){e||(a(),L(``),B([]),H(!0),W(!0),K(!0))}function X(e){B(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function Z(){B(R.length===z.length?[]:[...R])}async function Q(){if(z.length===0||!k)return;let t=A.find(e=>e.id===k);if(!t?.serverConnectionId)return;J(!0);let{introspect:n}=_(k),r=g(t.serverConnectionId),i=(e,t,n)=>{let r=`<h3>${O(e)}</h3>\n<table border="1" cellpadding="4" cellspacing="0">\n`;r+=`<tr>${t.map(e=>`<th>${O(e)}</th>`).join(``)}</tr>\n`;for(let e of n)r+=`<tr>${e.map(e=>`<td>${O(e==null?`NULL`:String(e))}</td>`).join(``)}</tr>\n`;return r+`</table>
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,c as n}from"./main-C-Gt0g0g.js";import{h as r,n as i}from"./ui-store-5IssrgmG.js";import{l as a,m as o,t as s}from"./button-B2EsmMJs.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-DwgCtoqv.js";import{t as p}from"./connection-store-BnO3WqEO.js";import{n as m}from"./query-store-dYiA8oM5.js";import{S as h,a as g}from"./database-BvWJHB7q.js";import{n as _}from"./engine-s5WfEr4n.js";import{o as v,r as y}from"./schema-nodes-MgIiKfpG.js";import{a as b,i as x,n as S,o as C,t as w}from"./dialog-FBpgH0QJ.js";import{t as T}from"./file-name-CnYBZPf9.js";var E=e(r(),1),D=a();function O(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function k(){let{t:e}=o(),{activeDialog:r,closeDialog:a}=i(),{activeConnectionId:k,activeConnections:A}=p(),{trees:j}=h(),M=m(),N=r===`export-html`,P=(0,E.useMemo)(()=>k?y(j[k]??[]):[],[k,j]),F=(0,E.useMemo)(()=>{if(!k)return``;let e=M.activeTabId[k];return(M.tabs[k]??[]).find(t=>t.id===e)?.database||``},[k,M.activeTabId,M.tabs]),[I,L]=(0,E.useState)(``),R=(0,E.useMemo)(()=>!k||!I?[]:v(j[k]??[],I),[k,I,j]),[z,B]=(0,E.useState)([]),[V,H]=(0,E.useState)(!0),[U,W]=(0,E.useState)(!0),[G,K]=(0,E.useState)(!0),[q,J]=(0,E.useState)(!1);(0,E.useEffect)(()=>{N&&F&&L(F)},[N,F]);function Y(e){e||(a(),L(``),B([]),H(!0),W(!0),K(!0))}function X(e){B(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])}function Z(){B(R.length===z.length?[]:[...R])}async function Q(){if(z.length===0||!k)return;let t=A.find(e=>e.id===k);if(!t?.serverConnectionId)return;J(!0);let{introspect:n}=_(k),r=g(t.serverConnectionId),i=(e,t,n)=>{let r=`<h3>${O(e)}</h3>\n<table border="1" cellpadding="4" cellspacing="0">\n`;r+=`<tr>${t.map(e=>`<th>${O(e)}</th>`).join(``)}</tr>\n`;for(let e of n)r+=`<tr>${e.map(e=>`<td>${O(e==null?`NULL`:String(e))}</td>`).join(``)}</tr>\n`;return r+`</table>
2
2
  `};try{let t=[];for(let a of z){let o=`<h2>${O(a)}</h2>\n`;if(V){let t=await n.listColumns(r,I,a);t.length>0&&(o+=i(e(`database.html.sectionColumns`),[`Field`,`Type`,`Null`,`Key`,`Default`,`Extra`,`Comment`],t.map(e=>[e.name,e.type,e.nullable?`YES`:`NO`,e.key,e.defaultValue,e.extra,e.comment])))}if(U){let t=await n.listIndexes(r,I,a);t.length>0&&(o+=i(e(`database.html.sectionIndexes`),[`Key_name`,`Type`,`Columns`],t.map(e=>[e.name,e.type,e.columns.join(`, `)])))}if(G){let t=await n.getTableInfo(r,I,a);t&&(o+=i(e(`database.html.sectionProperties`),[`Name`,`Engine`,`Collation`,`Rows`,`Data_length`,`Create_time`,`Update_time`,`Comment`],[[t.name,t.engine,t.collation,t.rows,t.dataLength,t.createTime,t.updateTime,t.comment]]))}t.push(o)}let a=`<!DOCTYPE html>
3
3
  <html lang="en">
4
4
  <head>
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,C as n,S as r,b as i,l as a,v as o,x as s,y as c}from"./main-BPskUSLM.js";import{h as l,n as u}from"./ui-store-5IssrgmG.js";import{l as d,m as f,t as p}from"./button-B2EsmMJs.js";import{a as m}from"./i18n-BAv7QdV3.js";import{t as h}from"./connection-store-Ds9Gjt3K.js";import{c as g}from"./database-eJWHFM-2.js";import{t as _}from"./engine-DtZy_Zk0.js";import{a as v,i as y,n as b,o as x,t as S}from"./dialog-FBpgH0QJ.js";var C=e(l(),1),w=d();function T(){let e=h.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(m.t(`command.noActiveConnection`));let n=_().getQuery(e===`global`?`SHOW_GLOBAL_STATUS`:`SHOW_SESSION_STATUS`);return(await g(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=f(),{activeDialog:l,closeDialog:d,setFooterMessage:m}=u(),[h,g]=(0,C.useState)([]),[_,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=l===`status`,A=(0,C.useCallback)(t=>E(t).then(g).catch(t=>m(e(`command.status.loadError`,{message:t instanceof Error?t.message:String(t)}))),[m,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!_.trim())return h;let e=_.toLowerCase();return h.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[h,_]);function M(e){e||(T(``),d())}function N(e){O(e)}return(0,w.jsx)(S,{open:k,onOpenChange:M,children:(0,w.jsxs)(b,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(v,{children:(0,w.jsx)(x,{children:e(`command.status.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(p,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(p,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(a,{placeholder:e(`command.status.filterPlaceholder`),value:_,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(t,{className:`h-[400px]`,children:(0,w.jsxs)(o,{children:[(0,w.jsx)(r,{children:(0,w.jsxs)(n,{children:[(0,w.jsx)(s,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(s,{children:e(`command.value`)})]})}),(0,w.jsx)(c,{children:j.length===0?(0,w.jsx)(n,{children:(0,w.jsx)(i,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.status.empty`)})}):j.map(e=>(0,w.jsxs)(n,{children:[(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(y,{children:(0,w.jsx)(p,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as StatusDialog};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,C as n,S as r,b as i,l as a,v as o,x as s,y as c}from"./main-C-Gt0g0g.js";import{h as l,n as u}from"./ui-store-5IssrgmG.js";import{l as d,m as f,t as p}from"./button-B2EsmMJs.js";import{a as m}from"./i18n-D0mAAGED.js";import{t as h}from"./connection-store-BnO3WqEO.js";import{c as g}from"./database-BvWJHB7q.js";import{t as _}from"./engine-s5WfEr4n.js";import{a as v,i as y,n as b,o as x,t as S}from"./dialog-FBpgH0QJ.js";var C=e(l(),1),w=d();function T(){let e=h.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(m.t(`command.noActiveConnection`));let n=_().getQuery(e===`global`?`SHOW_GLOBAL_STATUS`:`SHOW_SESSION_STATUS`);return(await g(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=f(),{activeDialog:l,closeDialog:d,setFooterMessage:m}=u(),[h,g]=(0,C.useState)([]),[_,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=l===`status`,A=(0,C.useCallback)(t=>E(t).then(g).catch(t=>m(e(`command.status.loadError`,{message:t instanceof Error?t.message:String(t)}))),[m,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!_.trim())return h;let e=_.toLowerCase();return h.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[h,_]);function M(e){e||(T(``),d())}function N(e){O(e)}return(0,w.jsx)(S,{open:k,onOpenChange:M,children:(0,w.jsxs)(b,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(v,{children:(0,w.jsx)(x,{children:e(`command.status.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(p,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(p,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(a,{placeholder:e(`command.status.filterPlaceholder`),value:_,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(t,{className:`h-[400px]`,children:(0,w.jsxs)(o,{children:[(0,w.jsx)(r,{children:(0,w.jsxs)(n,{children:[(0,w.jsx)(s,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(s,{children:e(`command.value`)})]})}),(0,w.jsx)(c,{children:j.length===0?(0,w.jsx)(n,{children:(0,w.jsx)(i,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.status.empty`)})}):j.map(e=>(0,w.jsxs)(n,{children:[(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(y,{children:(0,w.jsx)(p,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as StatusDialog};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{F as t,I as n,P as r,_t as i,c as a,l as o}from"./main-BPskUSLM.js";import{h as s,n as c}from"./ui-store-5IssrgmG.js";import{l,m as u,t as d}from"./button-B2EsmMJs.js";import{t as f}from"./pro-gate-IRkx6bbE.js";import{n as p}from"./license-store-BfuSb6KZ.js";import{a as m,i as h,n as g,o as _,r as v,t as y}from"./dialog-FBpgH0QJ.js";import{t as b}from"./pro-upsell-lFmxmise.js";var x=e(s(),1);function S(){let e=p(e=>e.status.state===`valid`);return!f()||e}var C=l(),w={offline:`sync.offline`,server:`sync.serverError`,unauthorized:`sync.serverError`,conflict:`sync.serverError`,"bad-passphrase":`sync.wrongPassphrase`,malformed:`sync.wrongPassphrase`,unsupported:`sync.serverError`};function T(){let e=c(e=>e.activeDialog),s=c(e=>e.closeDialog),{phase:l,user:f,busy:p,error:T,lastSyncedAt:E,vault:D,refresh:O,createVault:k,unlock:A,push:j,signOut:M,forgetVault:N,closeAccount:P,setError:F}=r(),{t:I}=u(),L=S(),[R,z]=(0,x.useState)(``),[B,V]=(0,x.useState)(``),[H,U]=(0,x.useState)(!1),[W,G]=(0,x.useState)(!1);(0,x.useEffect)(()=>{O()},[O]);let K=R.length>0&&R.length<10,q=B.length>0&&R!==B,J=R.length>=10&&R===B,Y=T?I(w[T]??`sync.serverError`):null,X=D?Object.keys(D.profiles).length:0,Z=()=>{z(``),V(``),F(null)};return(0,C.jsx)(y,{open:e===`sync`,onOpenChange:e=>{e||s()},children:(0,C.jsxs)(g,{className:`max-h-[85vh] overflow-y-auto sm:max-w-[560px]`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,C.jsxs)(m,{children:[(0,C.jsx)(_,{children:I(`sync.title`)}),(0,C.jsxs)(v,{children:[I(`sync.description`),f&&(0,C.jsx)(`span`,{className:`mt-1 block text-xs`,children:I(`sync.signedInAs`,{email:f.email??f.id})})]})]}),(0,C.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[(0,C.jsx)(`p`,{className:`rounded-md border bg-muted/40 p-3 text-xs text-muted-foreground`,children:I(`sync.stored`)}),l===`unavailable`&&(0,C.jsx)(`p`,{className:`rounded-md border border-amber-500/40 bg-amber-500/5 p-3 text-xs text-amber-600 dark:text-amber-400`,children:n()?I(`sync.unavailable`):I(`sync.notDeployed`)}),l===`signed-out`&&(0,C.jsxs)(d,{onClick:()=>{window.location.href=t(`github`,window.location.href)},children:[(0,C.jsx)(i,{className:`size-4`}),I(`sync.signIn`)]}),f&&!L&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.needsPro`)}),(0,C.jsx)(b,{highlight:`sync`})]}),L&&l===`no-vault`&&(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium`,children:I(`sync.createTitle`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.createHint`)}),(0,C.jsx)(a,{htmlFor:`sync-pass`,children:I(`sync.passphrase`)}),(0,C.jsx)(o,{id:`sync-pass`,type:`password`,autoComplete:`new-password`,value:R,onChange:e=>{z(e.target.value),F(null)}}),(0,C.jsx)(a,{htmlFor:`sync-confirm`,children:I(`sync.confirm`)}),(0,C.jsx)(o,{id:`sync-confirm`,type:`password`,autoComplete:`new-password`,value:B,onChange:e=>{V(e.target.value),F(null)}}),K&&(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:I(`sync.tooShort`,{count:10})}),q&&(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:I(`sync.mismatch`)}),(0,C.jsx)(d,{disabled:!J||p,onClick:()=>{k(R).then(Z)},children:I(`sync.enable`)})]}),L&&l===`locked`&&(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium`,children:I(`sync.unlockTitle`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.unlockHint`)}),(0,C.jsx)(a,{htmlFor:`sync-unlock`,children:I(`sync.passphrase`)}),(0,C.jsx)(o,{id:`sync-unlock`,type:`password`,autoComplete:`current-password`,value:R,onChange:e=>{z(e.target.value),F(null)}}),(0,C.jsx)(d,{disabled:!R||p,onClick:()=>{A(R).then(Z)},children:I(`sync.unlock`)})]}),L&&l===`ready`&&(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[E?I(`sync.lastSynced`,{when:new Date(E).toLocaleString()}):I(`sync.neverSynced`),` · `,I(`sync.profiles`,{count:X})]}),(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,C.jsx)(d,{variant:`secondary`,disabled:p,onClick:()=>{U(!1),j()},children:I(`sync.syncNow`)}),(0,C.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>{r.getState().lock(),Z()},children:I(`sync.changePassphrase`)})]}),H?(0,C.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/5 p-3`,children:[(0,C.jsx)(`p`,{className:`mb-2 text-xs`,children:I(`sync.deleteVaultConfirm`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(d,{variant:`destructive`,disabled:p,onClick:()=>{N().then(()=>U(!1))},children:I(`sync.deleteVault`)}),(0,C.jsx)(d,{variant:`ghost`,onClick:()=>U(!1),children:I(`settings.done`)})]})]}):(0,C.jsx)(d,{variant:`ghost`,className:`justify-start px-0 text-destructive`,onClick:()=>U(!0),children:I(`sync.deleteVault`)})]}),f&&(W?(0,C.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/5 p-3`,children:[(0,C.jsx)(`p`,{className:`mb-2 text-xs`,children:I(`sync.deleteAccountConfirm`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(d,{variant:`destructive`,disabled:p,onClick:()=>{P().then(()=>G(!1))},children:I(`sync.deleteAccount`)}),(0,C.jsx)(d,{variant:`ghost`,onClick:()=>G(!1),children:I(`settings.done`)})]})]}):(0,C.jsx)(`button`,{type:`button`,onClick:()=>G(!0),className:`w-fit rounded-sm text-xs text-muted-foreground underline underline-offset-2 hover:text-destructive focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:I(`sync.deleteAccount`)})),p&&(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.working`)}),Y&&(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:Y})]}),(0,C.jsxs)(h,{children:[f&&(0,C.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>{M().then(Z)},children:I(`sync.signOut`)}),(0,C.jsx)(d,{onClick:s,children:I(`settings.done`)})]})]})})}export{T as SyncDialog};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{M as t,N as n,P as r,c as i,l as a,xt as o}from"./main-C-Gt0g0g.js";import{h as s,n as c}from"./ui-store-5IssrgmG.js";import{l,m as u,t as d}from"./button-B2EsmMJs.js";import{t as f}from"./pro-gate-DZATEYdR.js";import{n as p}from"./license-store-D_XwbbCs.js";import{a as m,i as h,n as g,o as _,r as v,t as y}from"./dialog-FBpgH0QJ.js";import{t as b}from"./pro-upsell-akqEMS8_.js";var x=e(s(),1);function S(){let e=p(e=>e.status.state===`valid`);return!f()||e}var C=l(),w={offline:`sync.offline`,server:`sync.serverError`,unauthorized:`sync.serverError`,conflict:`sync.serverError`,"bad-passphrase":`sync.wrongPassphrase`,malformed:`sync.wrongPassphrase`,unsupported:`sync.serverError`};function T(){let e=c(e=>e.activeDialog),s=c(e=>e.closeDialog),{phase:l,user:f,busy:p,error:T,lastSyncedAt:E,vault:D,refresh:O,createVault:k,unlock:A,push:j,signOut:M,forgetVault:N,closeAccount:P,setError:F}=t(),{t:I}=u(),L=S(),[R,z]=(0,x.useState)(``),[B,V]=(0,x.useState)(``),[H,U]=(0,x.useState)(!1),[W,G]=(0,x.useState)(!1);(0,x.useEffect)(()=>{O()},[O]);let K=R.length>0&&R.length<10,q=B.length>0&&R!==B,J=R.length>=10&&R===B,Y=T?I(w[T]??`sync.serverError`):null,X=D?Object.keys(D.profiles).length:0,Z=()=>{z(``),V(``),F(null)};return(0,C.jsx)(y,{open:e===`sync`,onOpenChange:e=>{e||s()},children:(0,C.jsxs)(g,{className:`max-h-[85vh] overflow-y-auto sm:max-w-[560px]`,onOpenAutoFocus:e=>e.preventDefault(),children:[(0,C.jsxs)(m,{children:[(0,C.jsx)(_,{children:I(`sync.title`)}),(0,C.jsxs)(v,{children:[I(`sync.description`),f&&(0,C.jsx)(`span`,{className:`mt-1 block text-xs`,children:I(`sync.signedInAs`,{email:f.email??f.id})})]})]}),(0,C.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[(0,C.jsx)(`p`,{className:`rounded-md border bg-muted/40 p-3 text-xs text-muted-foreground`,children:I(`sync.stored`)}),l===`unavailable`&&(0,C.jsx)(`p`,{className:`rounded-md border border-amber-500/40 bg-amber-500/5 p-3 text-xs text-amber-600 dark:text-amber-400`,children:r()?I(`sync.unavailable`):I(`sync.notDeployed`)}),l===`signed-out`&&(0,C.jsxs)(d,{onClick:()=>{window.location.href=n(`github`,window.location.href)},children:[(0,C.jsx)(o,{className:`size-4`}),I(`sync.signIn`)]}),f&&!L&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.needsPro`)}),(0,C.jsx)(b,{highlight:`sync`})]}),L&&l===`no-vault`&&(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium`,children:I(`sync.createTitle`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.createHint`)}),(0,C.jsx)(i,{htmlFor:`sync-pass`,children:I(`sync.passphrase`)}),(0,C.jsx)(a,{id:`sync-pass`,type:`password`,autoComplete:`new-password`,value:R,onChange:e=>{z(e.target.value),F(null)}}),(0,C.jsx)(i,{htmlFor:`sync-confirm`,children:I(`sync.confirm`)}),(0,C.jsx)(a,{id:`sync-confirm`,type:`password`,autoComplete:`new-password`,value:B,onChange:e=>{V(e.target.value),F(null)}}),K&&(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:I(`sync.tooShort`,{count:10})}),q&&(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:I(`sync.mismatch`)}),(0,C.jsx)(d,{disabled:!J||p,onClick:()=>{k(R).then(Z)},children:I(`sync.enable`)})]}),L&&l===`locked`&&(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsx)(`p`,{className:`text-sm font-medium`,children:I(`sync.unlockTitle`)}),(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.unlockHint`)}),(0,C.jsx)(i,{htmlFor:`sync-unlock`,children:I(`sync.passphrase`)}),(0,C.jsx)(a,{id:`sync-unlock`,type:`password`,autoComplete:`current-password`,value:R,onChange:e=>{z(e.target.value),F(null)}}),(0,C.jsx)(d,{disabled:!R||p,onClick:()=>{A(R).then(Z)},children:I(`sync.unlock`)})]}),L&&l===`ready`&&(0,C.jsxs)(`div`,{className:`grid gap-2`,children:[(0,C.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[E?I(`sync.lastSynced`,{when:new Date(E).toLocaleString()}):I(`sync.neverSynced`),` · `,I(`sync.profiles`,{count:X})]}),(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,C.jsx)(d,{variant:`secondary`,disabled:p,onClick:()=>{U(!1),j()},children:I(`sync.syncNow`)}),(0,C.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>{t.getState().lock(),Z()},children:I(`sync.changePassphrase`)})]}),H?(0,C.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/5 p-3`,children:[(0,C.jsx)(`p`,{className:`mb-2 text-xs`,children:I(`sync.deleteVaultConfirm`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(d,{variant:`destructive`,disabled:p,onClick:()=>{N().then(()=>U(!1))},children:I(`sync.deleteVault`)}),(0,C.jsx)(d,{variant:`ghost`,onClick:()=>U(!1),children:I(`settings.done`)})]})]}):(0,C.jsx)(d,{variant:`ghost`,className:`justify-start px-0 text-destructive`,onClick:()=>U(!0),children:I(`sync.deleteVault`)})]}),f&&(W?(0,C.jsxs)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/5 p-3`,children:[(0,C.jsx)(`p`,{className:`mb-2 text-xs`,children:I(`sync.deleteAccountConfirm`)}),(0,C.jsxs)(`div`,{className:`flex gap-2`,children:[(0,C.jsx)(d,{variant:`destructive`,disabled:p,onClick:()=>{P().then(()=>G(!1))},children:I(`sync.deleteAccount`)}),(0,C.jsx)(d,{variant:`ghost`,onClick:()=>G(!1),children:I(`settings.done`)})]})]}):(0,C.jsx)(`button`,{type:`button`,onClick:()=>G(!0),className:`w-fit rounded-sm text-xs text-muted-foreground underline underline-offset-2 hover:text-destructive focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:I(`sync.deleteAccount`)})),p&&(0,C.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:I(`sync.working`)}),Y&&(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:Y})]}),(0,C.jsxs)(h,{children:[f&&(0,C.jsx)(d,{variant:`ghost`,disabled:p,onClick:()=>{M().then(Z)},children:I(`sync.signOut`)}),(0,C.jsx)(d,{onClick:s,children:I(`settings.done`)})]})]})})}export{T as SyncDialog};
@@ -1 +1 @@
1
- import{n as e}from"./ui-store-5IssrgmG.js";import{l as t,m as n,t as r}from"./button-B2EsmMJs.js";import"./settings-store-CSMhaLcw.js";import{a as i,i as a,n as o,o as s,r as c,t as l}from"./dialog-FBpgH0QJ.js";var u=t(),d=[{title:`1. Acceptance`,body:`By using Planche (the "Software"), whether at planche.dev or through the local agent published as the "planche" npm package, you agree to these Terms of Use. If you do not agree, do not use the Software.`},{title:`2. What the Software does`,body:`Planche is a database client. It sends the SQL statements you write, and the statements generated from your actions (editing rows in the grid, dropping or truncating objects from the schema tree, and similar), to the databases you connect to. Statements are executed as-is with the privileges of the credentials you provide. You are solely responsible for every statement executed through the Software and for its effects on your data.`},{title:`3. Safeguards`,body:`The Software includes safeguards such as confirmation prompts for destructive statements, read-only connections, environment colors, manual transaction mode, and previews of generated UPDATE statements. These are conveniences, not guarantees. They can be disabled, bypassed, or fail to recognize a statement as destructive. Keep independent backups of any data you care about before running statements against it.`},{title:`4. Local processing and privacy`,body:`Database credentials, queries, and results are handled by the local agent on your machine and by your browser. They are not transmitted to the authors of the Software. Profiles, history, and settings are stored in your browser's local storage; you may remove them at any time by clearing site data. The hosted app at planche.dev sends anonymous usage statistics (which database engine and features are used, what kind of statement was run — never SQL text, host names, or database, table, user or file names) to Google Analytics; you can turn this off under Settings > Safety.`},{title:`5. No warranty`,body:`THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, AND NON-INFRINGEMENT. The authors do not warrant that the Software will be error-free, that it will correctly parse or classify every statement, or that it will be available without interruption.`},{title:`6. Limitation of liability`,body:`TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE AUTHORS SHALL NOT BE LIABLE FOR ANY LOSS OF DATA, LOSS OF PROFITS, BUSINESS INTERRUPTION, OR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING OUT OF OR RELATED TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Where liability cannot be excluded, it is limited to the amount you paid for the Software in the twelve months preceding the claim. Nothing in these terms limits liability that cannot be limited under applicable law, including for wilful misconduct or gross negligence.`},{title:`7. Your responsibilities`,body:`You are responsible for having the right to access each database you connect to, for the safekeeping of your credentials, and for complying with the laws and policies that apply to the data you work with.`},{title:`8. Changes`,body:`These terms may be updated. When they change materially, you will be asked to accept the new version before continuing to use the Software. Continued use after acceptance constitutes agreement to the updated terms.`}];function f(){let t=e(e=>e.activeDialog),f=e(e=>e.closeDialog),{t:p}=n();return(0,u.jsx)(l,{open:t===`terms`,onOpenChange:e=>{e||f()},children:(0,u.jsxs)(o,{className:`flex max-h-[85vh] flex-col sm:max-w-[640px]`,children:[(0,u.jsxs)(i,{children:[(0,u.jsx)(s,{children:p(`terms.title`)}),(0,u.jsx)(c,{children:p(`terms.version`,{version:1})})]}),(0,u.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border bg-muted/40 p-4 text-sm`,children:[(0,u.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:p(`terms.englishOnly`)}),d.map(e=>(0,u.jsxs)(`section`,{className:`mb-4 last:mb-0`,children:[(0,u.jsx)(`h3`,{className:`mb-1 font-semibold`,children:e.title}),(0,u.jsx)(`p`,{className:`leading-relaxed text-muted-foreground`,children:e.body})]},e.title))]}),(0,u.jsx)(a,{children:(0,u.jsx)(r,{onClick:f,children:p(`settings.done`)})})]})})}export{f as TermsDialog};
1
+ import{n as e}from"./ui-store-5IssrgmG.js";import{l as t,m as n,t as r}from"./button-B2EsmMJs.js";import"./settings-store-BBVuUVjA.js";import{a as i,i as a,n as o,o as s,r as c,t as l}from"./dialog-FBpgH0QJ.js";var u=t(),d=[{title:`1. Acceptance`,body:`By using Planche (the "Software"), whether at planche.dev or through the local agent published as the "planche" npm package, you agree to these Terms of Use. If you do not agree, do not use the Software.`},{title:`2. What the Software does`,body:`Planche is a database client. It sends the SQL statements you write, and the statements generated from your actions (editing rows in the grid, dropping or truncating objects from the schema tree, and similar), to the databases you connect to. Statements are executed as-is with the privileges of the credentials you provide. You are solely responsible for every statement executed through the Software and for its effects on your data.`},{title:`3. Safeguards`,body:`The Software includes safeguards such as confirmation prompts for destructive statements, read-only connections, environment colors, manual transaction mode, and previews of generated UPDATE statements. These are conveniences, not guarantees. They can be disabled, bypassed, or fail to recognize a statement as destructive. Keep independent backups of any data you care about before running statements against it.`},{title:`4. Local processing and privacy`,body:`Database credentials, queries, and results are handled by the local agent on your machine and by your browser. They are not transmitted to the authors of the Software. Profiles, history, and settings are stored in your browser's local storage; you may remove them at any time by clearing site data. The hosted app at planche.dev sends anonymous usage statistics (which database engine and features are used, what kind of statement was run — never SQL text, host names, or database, table, user or file names) to Google Analytics; you can turn this off under Settings > Safety.`},{title:`5. No warranty`,body:`THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, AND NON-INFRINGEMENT. The authors do not warrant that the Software will be error-free, that it will correctly parse or classify every statement, or that it will be available without interruption.`},{title:`6. Limitation of liability`,body:`TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE AUTHORS SHALL NOT BE LIABLE FOR ANY LOSS OF DATA, LOSS OF PROFITS, BUSINESS INTERRUPTION, OR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING OUT OF OR RELATED TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Where liability cannot be excluded, it is limited to the amount you paid for the Software in the twelve months preceding the claim. Nothing in these terms limits liability that cannot be limited under applicable law, including for wilful misconduct or gross negligence.`},{title:`7. Your responsibilities`,body:`You are responsible for having the right to access each database you connect to, for the safekeeping of your credentials, and for complying with the laws and policies that apply to the data you work with.`},{title:`8. Changes`,body:`These terms may be updated. When they change materially, you will be asked to accept the new version before continuing to use the Software. Continued use after acceptance constitutes agreement to the updated terms.`}];function f(){let t=e(e=>e.activeDialog),f=e(e=>e.closeDialog),{t:p}=n();return(0,u.jsx)(l,{open:t===`terms`,onOpenChange:e=>{e||f()},children:(0,u.jsxs)(o,{className:`flex max-h-[85vh] flex-col sm:max-w-[640px]`,children:[(0,u.jsxs)(i,{children:[(0,u.jsx)(s,{children:p(`terms.title`)}),(0,u.jsx)(c,{children:p(`terms.version`,{version:1})})]}),(0,u.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border bg-muted/40 p-4 text-sm`,children:[(0,u.jsx)(`p`,{className:`mb-3 text-xs text-muted-foreground`,children:p(`terms.englishOnly`)}),d.map(e=>(0,u.jsxs)(`section`,{className:`mb-4 last:mb-0`,children:[(0,u.jsx)(`h3`,{className:`mb-1 font-semibold`,children:e.title}),(0,u.jsx)(`p`,{className:`leading-relaxed text-muted-foreground`,children:e.body})]},e.title))]}),(0,u.jsx)(a,{children:(0,u.jsx)(r,{onClick:f,children:p(`settings.done`)})})]})})}export{f as TermsDialog};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,l as n}from"./main-BPskUSLM.js";import{h as r,n as i}from"./ui-store-5IssrgmG.js";import{l as a,m as o,t as s}from"./button-B2EsmMJs.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-C3A-RS4G.js";import{t as p}from"./connection-store-Ds9Gjt3K.js";import{a as m,i as h,n as g,o as _,t as v}from"./dialog-FBpgH0QJ.js";import{n as y}from"./user-store-DOy2VMsT.js";var b=e(r(),1),x=a();function S(){let{t:e}=o(),{activeDialog:r,closeDialog:a,setFooterMessage:S}=i(),C=p(e=>e.activeConnectionId)??``,w=y(e=>e.addUser),[T,E]=(0,b.useState)(``),[D,O]=(0,b.useState)(`%`),[k,A]=(0,b.useState)(``),[j,M]=(0,b.useState)(``),[N,P]=(0,b.useState)(`caching_sha2_password`),F=r===`user-add`;function I(e){e||(L(),a())}function L(){E(``),O(`%`),A(``),M(``),P(`caching_sha2_password`)}function R(){if(!T.trim()){S(e(`user.add.usernameRequired`));return}if(k!==j){S(e(`user.add.passwordMismatch`));return}w(C,{user:T.trim(),host:D.trim()||`%`,privileges:[],maxQuestions:0,maxUpdates:0,maxConnections:0,maxUserConnections:0,plugin:N,authenticationString:``,passwordExpired:!1,accountLocked:!1}),S(e(`user.add.added`,{user:T,host:D})),L(),a()}return(0,x.jsx)(v,{open:F,onOpenChange:I,children:(0,x.jsxs)(g,{className:`sm:max-w-[450px]`,children:[(0,x.jsx)(m,{children:(0,x.jsx)(_,{children:e(`user.add.title`)})}),(0,x.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-username`,children:e(`user.add.username`)}),(0,x.jsx)(n,{id:`user-add-username`,value:T,onChange:e=>E(e.target.value),placeholder:e(`user.add.usernamePlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-host`,children:e(`user.add.host`)}),(0,x.jsx)(n,{id:`user-add-host`,value:D,onChange:e=>O(e.target.value),placeholder:`%`})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-password`,children:e(`user.add.password`)}),(0,x.jsx)(n,{id:`user-add-password`,type:`password`,value:k,onChange:e=>A(e.target.value),placeholder:e(`user.add.passwordPlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-confirm-password`,children:e(`user.add.confirmPassword`)}),(0,x.jsx)(n,{id:`user-add-confirm-password`,type:`password`,value:j,onChange:e=>M(e.target.value),placeholder:e(`user.add.confirmPasswordPlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{children:e(`user.add.plugin`)}),(0,x.jsxs)(f,{value:N,onValueChange:P,children:[(0,x.jsx)(l,{className:`w-full`,children:(0,x.jsx)(c,{})}),(0,x.jsxs)(u,{children:[(0,x.jsx)(d,{value:`mysql_native_password`,children:`mysql_native_password`}),(0,x.jsx)(d,{value:`caching_sha2_password`,children:`caching_sha2_password`})]})]})]})]}),(0,x.jsxs)(h,{children:[(0,x.jsx)(s,{variant:`outline`,onClick:()=>I(!1),children:e(`user.add.cancel`)}),(0,x.jsx)(s,{onClick:R,children:e(`user.add.add`)})]})]})})}export{S as UserAddDialog};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,l as n}from"./main-C-Gt0g0g.js";import{h as r,n as i}from"./ui-store-5IssrgmG.js";import{l as a,m as o,t as s}from"./button-B2EsmMJs.js";import{a as c,i as l,n as u,r as d,t as f}from"./select-DwgCtoqv.js";import{t as p}from"./connection-store-BnO3WqEO.js";import{a as m,i as h,n as g,o as _,t as v}from"./dialog-FBpgH0QJ.js";import{n as y}from"./user-store-DOy2VMsT.js";var b=e(r(),1),x=a();function S(){let{t:e}=o(),{activeDialog:r,closeDialog:a,setFooterMessage:S}=i(),C=p(e=>e.activeConnectionId)??``,w=y(e=>e.addUser),[T,E]=(0,b.useState)(``),[D,O]=(0,b.useState)(`%`),[k,A]=(0,b.useState)(``),[j,M]=(0,b.useState)(``),[N,P]=(0,b.useState)(`caching_sha2_password`),F=r===`user-add`;function I(e){e||(L(),a())}function L(){E(``),O(`%`),A(``),M(``),P(`caching_sha2_password`)}function R(){if(!T.trim()){S(e(`user.add.usernameRequired`));return}if(k!==j){S(e(`user.add.passwordMismatch`));return}w(C,{user:T.trim(),host:D.trim()||`%`,privileges:[],maxQuestions:0,maxUpdates:0,maxConnections:0,maxUserConnections:0,plugin:N,authenticationString:``,passwordExpired:!1,accountLocked:!1}),S(e(`user.add.added`,{user:T,host:D})),L(),a()}return(0,x.jsx)(v,{open:F,onOpenChange:I,children:(0,x.jsxs)(g,{className:`sm:max-w-[450px]`,children:[(0,x.jsx)(m,{children:(0,x.jsx)(_,{children:e(`user.add.title`)})}),(0,x.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-username`,children:e(`user.add.username`)}),(0,x.jsx)(n,{id:`user-add-username`,value:T,onChange:e=>E(e.target.value),placeholder:e(`user.add.usernamePlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-host`,children:e(`user.add.host`)}),(0,x.jsx)(n,{id:`user-add-host`,value:D,onChange:e=>O(e.target.value),placeholder:`%`})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-password`,children:e(`user.add.password`)}),(0,x.jsx)(n,{id:`user-add-password`,type:`password`,value:k,onChange:e=>A(e.target.value),placeholder:e(`user.add.passwordPlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{htmlFor:`user-add-confirm-password`,children:e(`user.add.confirmPassword`)}),(0,x.jsx)(n,{id:`user-add-confirm-password`,type:`password`,value:j,onChange:e=>M(e.target.value),placeholder:e(`user.add.confirmPasswordPlaceholder`)})]}),(0,x.jsxs)(`div`,{className:`space-y-2`,children:[(0,x.jsx)(t,{children:e(`user.add.plugin`)}),(0,x.jsxs)(f,{value:N,onValueChange:P,children:[(0,x.jsx)(l,{className:`w-full`,children:(0,x.jsx)(c,{})}),(0,x.jsxs)(u,{children:[(0,x.jsx)(d,{value:`mysql_native_password`,children:`mysql_native_password`}),(0,x.jsx)(d,{value:`caching_sha2_password`,children:`caching_sha2_password`})]})]})]})]}),(0,x.jsxs)(h,{children:[(0,x.jsx)(s,{variant:`outline`,onClick:()=>I(!1),children:e(`user.add.cancel`)}),(0,x.jsx)(s,{onClick:R,children:e(`user.add.add`)})]})]})})}export{S as UserAddDialog};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,St as n,c as r,rt as i,tt as a,vt as o}from"./main-BPskUSLM.js";import{h as s,n as c}from"./ui-store-5IssrgmG.js";import{a as l,l as u,m as d,o as f,t as p}from"./button-B2EsmMJs.js";import{t as m}from"./connection-store-Ds9Gjt3K.js";import{a as h}from"./database-eJWHFM-2.js";import{i as g}from"./dbms-BwnatOMe.js";import{n as _}from"./engine-DtZy_Zk0.js";import{c as v}from"./query-execution-C5QxvBZj.js";import{a as y,i as b,n as x,o as S,t as C}from"./dialog-FBpgH0QJ.js";import{n as w,t as T}from"./user-store-DOy2VMsT.js";var E=l(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),D=l(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),O=e(s(),1),k=u();function A({databases:e,tables:r,onSelectScope:a}){let{t:s}=d(),[c,l]=(0,O.useState)(new Set),[u,p]=(0,O.useState)(`global`),m=(0,O.useCallback)(e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=[{id:`global`,text:s(`user.grantTree.globalPrivileges`),type:`global`,children:e.map(e=>({id:`db:${e}`,text:e,type:`database`,database:e,children:(r[e]??[]).map(t=>({id:`tbl:${e}.${t}`,text:t,type:`table`,database:e,table:t}))}))}];function g(e){p(e.id),a({level:e.type,database:e.database,table:e.table})}function _(e,t){let r=e.children&&e.children.length>0,a=c.has(e.id),s=u===e.id,l=E;return e.type===`database`&&(l=o),e.type===`table`&&(l=i),(0,k.jsxs)(`div`,{children:[(0,k.jsxs)(`div`,{className:f(`flex items-center gap-1 px-2 py-0.5 cursor-pointer text-sm hover:bg-accent rounded-sm`,s&&`bg-accent text-accent-foreground`),style:{paddingLeft:`${t*16+4}px`},onClick:()=>{g(e),r&&m(e.id)},children:[r?(0,k.jsx)(n,{className:f(`h-3 w-3 transition-transform shrink-0`,a&&`rotate-90`)}):(0,k.jsx)(`span`,{className:`w-3 shrink-0`}),(0,k.jsx)(l,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,k.jsx)(`span`,{className:`truncate`,children:e.text})]}),a&&e.children?.map(e=>_(e,t+1))]},e.id)}return(0,k.jsx)(t,{className:`h-full`,children:(0,k.jsx)(`div`,{className:`py-1`,children:h.map(e=>_(e,0))})})}var j={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`SUPER`,`PROCESS`,`RELOAD`,`SHUTDOWN`,`SHOW DATABASES`,`LOCK TABLES`,`EXECUTE`,`REPLICATION SLAVE`,`REPLICATION CLIENT`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`CREATE USER`,`EVENT`,`TRIGGER`,`CREATE TABLESPACE`]},M={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`LOCK TABLES`,`EXECUTE`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`EVENT`,`TRIGGER`]},N={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`TRIGGER`]},P={global:`user.privileges.globalTitle`,database:`user.privileges.databaseTitle`,table:`user.privileges.tableTitle`},F={Data:`user.privileges.categoryData`,Structure:`user.privileges.categoryStructure`,Administration:`user.privileges.categoryAdministration`};function I({scope:e,privileges:n,onChange:i}){let{t:a}=d(),o=(0,O.useMemo)(()=>e===`global`?j:e===`database`?M:N,[e]),s=(0,O.useMemo)(()=>Object.values(o).flat(),[o]);function c(e){i({...n,[e]:!n[e]})}function l(){let e={...n};for(let t of s)e[t]=!0;i(e)}function u(){let e={...n};for(let t of s)e[t]=!1;i(e)}return(0,k.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b`,children:[(0,k.jsx)(`span`,{className:`text-sm font-medium`,children:a(P[e])}),(0,k.jsxs)(`div`,{className:`ml-auto flex gap-1`,children:[(0,k.jsx)(p,{variant:`outline`,size:`sm`,onClick:l,children:a(`user.privileges.checkAll`)}),(0,k.jsx)(p,{variant:`outline`,size:`sm`,onClick:u,children:a(`user.privileges.uncheckAll`)})]})]}),(0,k.jsx)(t,{className:`flex-1`,children:(0,k.jsx)(`div`,{className:`p-3 space-y-4`,children:Object.entries(o).map(([e,t])=>(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2`,children:F[e]?a(F[e]):e}),(0,k.jsx)(`div`,{className:`grid grid-cols-2 gap-1`,children:t.map(e=>(0,k.jsxs)(r,{className:`flex items-center gap-2 text-sm font-normal cursor-pointer py-1`,children:[(0,k.jsx)(`input`,{type:`checkbox`,checked:n[e]??!1,onChange:()=>c(e),className:`rounded border-input`}),e]},e))})]},e))})})]})}var L={SELECT:`Select_priv`,INSERT:`Insert_priv`,UPDATE:`Update_priv`,DELETE:`Delete_priv`,CREATE:`Create_priv`,ALTER:`Alter_priv`,DROP:`Drop_priv`,INDEX:`Index_priv`,REFERENCES:`References_priv`,"GRANT OPTION":`Grant_priv`,SUPER:`Super_priv`,PROCESS:`Process_priv`,RELOAD:`Reload_priv`,SHUTDOWN:`Shutdown_priv`,"SHOW DATABASES":`Show_db_priv`,"LOCK TABLES":`Lock_tables_priv`,EXECUTE:`Execute_priv`,"REPLICATION SLAVE":`Repl_slave_priv`,"REPLICATION CLIENT":`Repl_client_priv`,"CREATE VIEW":`Create_view_priv`,"SHOW VIEW":`Show_view_priv`,"CREATE ROUTINE":`Create_routine_priv`,"ALTER ROUTINE":`Alter_routine_priv`,"CREATE USER":`Create_user_priv`,EVENT:`Event_priv`,TRIGGER:`Trigger_priv`,"CREATE TABLESPACE":`Create_tablespace_priv`,"CREATE TEMPORARY TABLES":`Create_tmp_table_priv`,FILE:`File_priv`};function R(e){let t={};for(let n of e.split(`,`)){let e=n.trim().toUpperCase();e&&(t[e]=!0)}return t}function z(e){let t={};for(let[n,r]of Object.entries(L)){let i=e[r];i!==void 0&&(t[n]=String(i).toUpperCase()===`Y`)}return t}function B(e,t){let n=t=>e.quoteIdentifier(t);return t.level===`global`?`*.*`:t.level===`database`?`${n(t.database??``)}.*`:`${n(t.database??``)}.${n(t.table??``)}`}async function V(e,t,n,r,i){if(i.level===`global`){let i=await e(t.getQuery(`USER_PRIV`,n,r)),a=g(i)[0];return a?z(a):{}}if(i.level===`database`){let a=await e(t.getQuery(`USER_DATABASE_PRIV`,n,r)),o=g(a).find(e=>String(e.Db)===i.database);return o?z(o):{}}let a=await e(t.getQuery(`USER_TABLE_PRIV`,n,r)),o=g(a).find(e=>String(e.Db)===i.database&&String(e.Table_name)===i.table);return o?R(String(o.Table_priv??``)):{}}function H(e,t,n,r,i,a){let o=B(e,r),s=[],c=[],l=null;for(let e of new Set([...Object.keys(i),...Object.keys(a)])){let t=i[e]===!0,n=a[e]===!0;if(t!==n){if(e===`GRANT OPTION`){l=n;continue}(n?s:c).push(e)}}let u=[];if(s.length>0||l===!0){let r=s.length>0?s.join(`, `):`USAGE`;u.push(e.getQuery(`GRANT`,r,t,n,o,l===!0?`WITH GRANT OPTION`:``))}return c.length>0&&u.push(e.getQuery(`REVOKE`,c.join(`, `),t,n,o)),l===!1&&u.push(e.getQuery(`REVOKE`,`GRANT OPTION`,t,n,o)),u}function U(e){return m.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId??null}function W(){let{t:e}=d(),{activeDialog:n,closeDialog:r,openDialog:i,setFooterMessage:o}=c(),s=m(e=>e.activeConnectionId)??``,l=w(e=>e.users[s]??T),u=w(e=>e.selectedUser[s]??null),g=w(e=>e.setSelectedUser),E=w(e=>e.removeUser),j=e=>g(s,e),M=(e,t)=>E(s,e,t),[N,P]=(0,O.useState)({level:`global`}),[F,L]=(0,O.useState)({}),[R,z]=(0,O.useState)([]),[B,W]=(0,O.useState)({}),[G,K]=(0,O.useState)({}),[q,J]=(0,O.useState)(!1),Y=n===`user-manager`;(0,O.useEffect)(()=>{if(!Y||!s)return;let e=U(s);if(!e)return;let t=!1;return _(s).introspect.listDatabases(h(e)).then(e=>{t||z(e)}).catch(()=>{t||z([])}),()=>{t=!0}},[Y,s]),(0,O.useEffect)(()=>{let e=N.database;if(!Y||!s||!e||B[e])return;let t=U(s);if(!t)return;let n=!1;return _(s).introspect.listTables(h(t),e).then(t=>{n||W(n=>({...n,[e]:t.map(e=>e.name)}))}).catch(()=>void 0),()=>{n=!0}},[Y,s,N.database,B]),(0,O.useEffect)(()=>{if(!Y||!s||!u){K({}),L({});return}let e=U(s);if(!e)return;let t=!1;return V(h(e),_(s),u.user,u.host,N).then(e=>{t||(K(e),L(e))}).catch(()=>{t||(K({}),L({}))}),()=>{t=!0}},[Y,s,u,N]);function X(e){e||(r(),j(null),P({level:`global`}),L({}))}let Z=(0,O.useCallback)(e=>{P(e),L({})},[]);function Q(){i(`user-add`)}async function $(){if(!u||!s)return;let{user:t,host:n}=u;J(!0);try{await v(s,_(s).getQuery(`DELETE_USER`,t,n)),M(n,t),j(null),o(e(`user.manager.removed`,{user:t,host:n}))}catch(e){o(e instanceof Error?e.message:String(e))}finally{J(!1)}}async function ee(){if(!u||!s){o(e(`user.manager.selectUserFirst`));return}let t=H(_(s),u.user,u.host,N,G,F);if(t.length===0){o(e(`user.manager.noChanges`));return}J(!0);try{for(let e of t)await v(s,e);K(F),o(e(`user.manager.applied`))}catch(e){o(e instanceof Error?e.message:String(e))}finally{J(!1)}}return(0,k.jsx)(C,{open:Y,onOpenChange:X,children:(0,k.jsxs)(x,{className:`sm:max-w-[80vw] max-h-[70vh] flex flex-col`,children:[(0,k.jsx)(y,{children:(0,k.jsx)(S,{children:e(`user.manager.title`)})}),(0,k.jsxs)(`div`,{className:`flex flex-1 gap-0 overflow-hidden min-h-0 border rounded-md`,children:[(0,k.jsxs)(`div`,{className:`w-[200px] shrink-0 border-r flex flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-1 p-2 border-b`,children:[(0,k.jsx)(p,{variant:`ghost`,size:`sm`,onClick:Q,title:e(`user.manager.addUser`),children:(0,k.jsx)(D,{className:`h-4 w-4`})}),(0,k.jsx)(p,{variant:`ghost`,size:`sm`,onClick:()=>void $(),disabled:!u||q,title:e(`user.manager.removeUser`),children:(0,k.jsx)(a,{className:`h-4 w-4`})})]}),(0,k.jsx)(t,{className:`flex-1`,children:(0,k.jsx)(`div`,{className:`py-1`,children:l.length===0?(0,k.jsx)(`div`,{className:`px-3 py-4 text-sm text-muted-foreground text-center`,children:e(`user.manager.noUsers`)}):l.map(e=>{let t=u?.user===e.user&&u?.host===e.host;return(0,k.jsx)(`div`,{className:f(`flex items-center gap-2 px-3 py-1.5 cursor-pointer text-sm hover:bg-accent`,t&&`bg-accent text-accent-foreground`),onClick:()=>j(e),children:(0,k.jsxs)(`span`,{className:`truncate`,children:[e.user,`@`,e.host]})},`${e.user}@${e.host}`)})})})]}),(0,k.jsxs)(`div`,{className:`w-[250px] shrink-0 border-r`,children:[(0,k.jsx)(`div`,{className:`p-2 border-b text-sm font-medium`,children:e(`user.manager.grantScope`)}),(0,k.jsx)(A,{connectionId:``,databases:R,tables:B,onSelectScope:Z})]}),(0,k.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,k.jsx)(I,{scope:N.level,privileges:F,onChange:L})})]}),(0,k.jsxs)(b,{children:[(0,k.jsx)(p,{onClick:()=>void ee(),disabled:q,children:e(`user.manager.apply`)}),(0,k.jsx)(p,{variant:`outline`,onClick:()=>X(!1),children:e(`user.manager.close`)})]})]})})}export{W as UserManagerDialog};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,Et as n,St as r,at as i,c as a,st as o}from"./main-C-Gt0g0g.js";import{h as s,n as c}from"./ui-store-5IssrgmG.js";import{a as l,l as u,m as d,o as f,t as p}from"./button-B2EsmMJs.js";import{t as m}from"./connection-store-BnO3WqEO.js";import{a as h}from"./database-BvWJHB7q.js";import{i as g}from"./dbms-BwnatOMe.js";import{n as _}from"./engine-s5WfEr4n.js";import{c as v}from"./query-execution-CZvQYEUq.js";import{a as y,i as b,n as x,o as S,t as C}from"./dialog-FBpgH0QJ.js";import{n as w,t as T}from"./user-store-DOy2VMsT.js";var E=l(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),D=l(`user-plus`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`19`,x2:`19`,y1:`8`,y2:`14`,key:`1bvyxn`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]),O=e(s(),1),k=u();function A({databases:e,tables:i,onSelectScope:a}){let{t:s}=d(),[c,l]=(0,O.useState)(new Set),[u,p]=(0,O.useState)(`global`),m=(0,O.useCallback)(e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),h=[{id:`global`,text:s(`user.grantTree.globalPrivileges`),type:`global`,children:e.map(e=>({id:`db:${e}`,text:e,type:`database`,database:e,children:(i[e]??[]).map(t=>({id:`tbl:${e}.${t}`,text:t,type:`table`,database:e,table:t}))}))}];function g(e){p(e.id),a({level:e.type,database:e.database,table:e.table})}function _(e,t){let i=e.children&&e.children.length>0,a=c.has(e.id),s=u===e.id,l=E;return e.type===`database`&&(l=r),e.type===`table`&&(l=o),(0,k.jsxs)(`div`,{children:[(0,k.jsxs)(`div`,{className:f(`flex items-center gap-1 px-2 py-0.5 cursor-pointer text-sm hover:bg-accent rounded-sm`,s&&`bg-accent text-accent-foreground`),style:{paddingLeft:`${t*16+4}px`},onClick:()=>{g(e),i&&m(e.id)},children:[i?(0,k.jsx)(n,{className:f(`h-3 w-3 transition-transform shrink-0`,a&&`rotate-90`)}):(0,k.jsx)(`span`,{className:`w-3 shrink-0`}),(0,k.jsx)(l,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,k.jsx)(`span`,{className:`truncate`,children:e.text})]}),a&&e.children?.map(e=>_(e,t+1))]},e.id)}return(0,k.jsx)(t,{className:`h-full`,children:(0,k.jsx)(`div`,{className:`py-1`,children:h.map(e=>_(e,0))})})}var j={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`SUPER`,`PROCESS`,`RELOAD`,`SHUTDOWN`,`SHOW DATABASES`,`LOCK TABLES`,`EXECUTE`,`REPLICATION SLAVE`,`REPLICATION CLIENT`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`CREATE USER`,`EVENT`,`TRIGGER`,`CREATE TABLESPACE`]},M={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`LOCK TABLES`,`EXECUTE`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`EVENT`,`TRIGGER`]},N={Data:[`SELECT`,`INSERT`,`UPDATE`,`DELETE`],Structure:[`CREATE`,`ALTER`,`DROP`,`INDEX`,`REFERENCES`],Administration:[`GRANT OPTION`,`TRIGGER`]},P={global:`user.privileges.globalTitle`,database:`user.privileges.databaseTitle`,table:`user.privileges.tableTitle`},F={Data:`user.privileges.categoryData`,Structure:`user.privileges.categoryStructure`,Administration:`user.privileges.categoryAdministration`};function I({scope:e,privileges:n,onChange:r}){let{t:i}=d(),o=(0,O.useMemo)(()=>e===`global`?j:e===`database`?M:N,[e]),s=(0,O.useMemo)(()=>Object.values(o).flat(),[o]);function c(e){r({...n,[e]:!n[e]})}function l(){let e={...n};for(let t of s)e[t]=!0;r(e)}function u(){let e={...n};for(let t of s)e[t]=!1;r(e)}return(0,k.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b`,children:[(0,k.jsx)(`span`,{className:`text-sm font-medium`,children:i(P[e])}),(0,k.jsxs)(`div`,{className:`ml-auto flex gap-1`,children:[(0,k.jsx)(p,{variant:`outline`,size:`sm`,onClick:l,children:i(`user.privileges.checkAll`)}),(0,k.jsx)(p,{variant:`outline`,size:`sm`,onClick:u,children:i(`user.privileges.uncheckAll`)})]})]}),(0,k.jsx)(t,{className:`flex-1`,children:(0,k.jsx)(`div`,{className:`p-3 space-y-4`,children:Object.entries(o).map(([e,t])=>(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider mb-2`,children:F[e]?i(F[e]):e}),(0,k.jsx)(`div`,{className:`grid grid-cols-2 gap-1`,children:t.map(e=>(0,k.jsxs)(a,{className:`flex items-center gap-2 text-sm font-normal cursor-pointer py-1`,children:[(0,k.jsx)(`input`,{type:`checkbox`,checked:n[e]??!1,onChange:()=>c(e),className:`rounded border-input`}),e]},e))})]},e))})})]})}var L={SELECT:`Select_priv`,INSERT:`Insert_priv`,UPDATE:`Update_priv`,DELETE:`Delete_priv`,CREATE:`Create_priv`,ALTER:`Alter_priv`,DROP:`Drop_priv`,INDEX:`Index_priv`,REFERENCES:`References_priv`,"GRANT OPTION":`Grant_priv`,SUPER:`Super_priv`,PROCESS:`Process_priv`,RELOAD:`Reload_priv`,SHUTDOWN:`Shutdown_priv`,"SHOW DATABASES":`Show_db_priv`,"LOCK TABLES":`Lock_tables_priv`,EXECUTE:`Execute_priv`,"REPLICATION SLAVE":`Repl_slave_priv`,"REPLICATION CLIENT":`Repl_client_priv`,"CREATE VIEW":`Create_view_priv`,"SHOW VIEW":`Show_view_priv`,"CREATE ROUTINE":`Create_routine_priv`,"ALTER ROUTINE":`Alter_routine_priv`,"CREATE USER":`Create_user_priv`,EVENT:`Event_priv`,TRIGGER:`Trigger_priv`,"CREATE TABLESPACE":`Create_tablespace_priv`,"CREATE TEMPORARY TABLES":`Create_tmp_table_priv`,FILE:`File_priv`};function R(e){let t={};for(let n of e.split(`,`)){let e=n.trim().toUpperCase();e&&(t[e]=!0)}return t}function z(e){let t={};for(let[n,r]of Object.entries(L)){let i=e[r];i!==void 0&&(t[n]=String(i).toUpperCase()===`Y`)}return t}function B(e,t){let n=t=>e.quoteIdentifier(t);return t.level===`global`?`*.*`:t.level===`database`?`${n(t.database??``)}.*`:`${n(t.database??``)}.${n(t.table??``)}`}async function V(e,t,n,r,i){if(i.level===`global`){let i=await e(t.getQuery(`USER_PRIV`,n,r)),a=g(i)[0];return a?z(a):{}}if(i.level===`database`){let a=await e(t.getQuery(`USER_DATABASE_PRIV`,n,r)),o=g(a).find(e=>String(e.Db)===i.database);return o?z(o):{}}let a=await e(t.getQuery(`USER_TABLE_PRIV`,n,r)),o=g(a).find(e=>String(e.Db)===i.database&&String(e.Table_name)===i.table);return o?R(String(o.Table_priv??``)):{}}function H(e,t,n,r,i,a){let o=B(e,r),s=[],c=[],l=null;for(let e of new Set([...Object.keys(i),...Object.keys(a)])){let t=i[e]===!0,n=a[e]===!0;if(t!==n){if(e===`GRANT OPTION`){l=n;continue}(n?s:c).push(e)}}let u=[];if(s.length>0||l===!0){let r=s.length>0?s.join(`, `):`USAGE`;u.push(e.getQuery(`GRANT`,r,t,n,o,l===!0?`WITH GRANT OPTION`:``))}return c.length>0&&u.push(e.getQuery(`REVOKE`,c.join(`, `),t,n,o)),l===!1&&u.push(e.getQuery(`REVOKE`,`GRANT OPTION`,t,n,o)),u}function U(e){return m.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId??null}function W(){let{t:e}=d(),{activeDialog:n,closeDialog:r,openDialog:a,setFooterMessage:o}=c(),s=m(e=>e.activeConnectionId)??``,l=w(e=>e.users[s]??T),u=w(e=>e.selectedUser[s]??null),g=w(e=>e.setSelectedUser),E=w(e=>e.removeUser),j=e=>g(s,e),M=(e,t)=>E(s,e,t),[N,P]=(0,O.useState)({level:`global`}),[F,L]=(0,O.useState)({}),[R,z]=(0,O.useState)([]),[B,W]=(0,O.useState)({}),[G,K]=(0,O.useState)({}),[q,J]=(0,O.useState)(!1),Y=n===`user-manager`;(0,O.useEffect)(()=>{if(!Y||!s)return;let e=U(s);if(!e)return;let t=!1;return _(s).introspect.listDatabases(h(e)).then(e=>{t||z(e)}).catch(()=>{t||z([])}),()=>{t=!0}},[Y,s]),(0,O.useEffect)(()=>{let e=N.database;if(!Y||!s||!e||B[e])return;let t=U(s);if(!t)return;let n=!1;return _(s).introspect.listTables(h(t),e).then(t=>{n||W(n=>({...n,[e]:t.map(e=>e.name)}))}).catch(()=>void 0),()=>{n=!0}},[Y,s,N.database,B]),(0,O.useEffect)(()=>{if(!Y||!s||!u){K({}),L({});return}let e=U(s);if(!e)return;let t=!1;return V(h(e),_(s),u.user,u.host,N).then(e=>{t||(K(e),L(e))}).catch(()=>{t||(K({}),L({}))}),()=>{t=!0}},[Y,s,u,N]);function X(e){e||(r(),j(null),P({level:`global`}),L({}))}let Z=(0,O.useCallback)(e=>{P(e),L({})},[]);function Q(){a(`user-add`)}async function $(){if(!u||!s)return;let{user:t,host:n}=u;J(!0);try{await v(s,_(s).getQuery(`DELETE_USER`,t,n)),M(n,t),j(null),o(e(`user.manager.removed`,{user:t,host:n}))}catch(e){o(e instanceof Error?e.message:String(e))}finally{J(!1)}}async function ee(){if(!u||!s){o(e(`user.manager.selectUserFirst`));return}let t=H(_(s),u.user,u.host,N,G,F);if(t.length===0){o(e(`user.manager.noChanges`));return}J(!0);try{for(let e of t)await v(s,e);K(F),o(e(`user.manager.applied`))}catch(e){o(e instanceof Error?e.message:String(e))}finally{J(!1)}}return(0,k.jsx)(C,{open:Y,onOpenChange:X,children:(0,k.jsxs)(x,{className:`sm:max-w-[80vw] max-h-[70vh] flex flex-col`,children:[(0,k.jsx)(y,{children:(0,k.jsx)(S,{children:e(`user.manager.title`)})}),(0,k.jsxs)(`div`,{className:`flex flex-1 gap-0 overflow-hidden min-h-0 border rounded-md`,children:[(0,k.jsxs)(`div`,{className:`w-[200px] shrink-0 border-r flex flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-1 p-2 border-b`,children:[(0,k.jsx)(p,{variant:`ghost`,size:`sm`,onClick:Q,title:e(`user.manager.addUser`),children:(0,k.jsx)(D,{className:`h-4 w-4`})}),(0,k.jsx)(p,{variant:`ghost`,size:`sm`,onClick:()=>void $(),disabled:!u||q,title:e(`user.manager.removeUser`),children:(0,k.jsx)(i,{className:`h-4 w-4`})})]}),(0,k.jsx)(t,{className:`flex-1`,children:(0,k.jsx)(`div`,{className:`py-1`,children:l.length===0?(0,k.jsx)(`div`,{className:`px-3 py-4 text-sm text-muted-foreground text-center`,children:e(`user.manager.noUsers`)}):l.map(e=>{let t=u?.user===e.user&&u?.host===e.host;return(0,k.jsx)(`div`,{className:f(`flex items-center gap-2 px-3 py-1.5 cursor-pointer text-sm hover:bg-accent`,t&&`bg-accent text-accent-foreground`),onClick:()=>j(e),children:(0,k.jsxs)(`span`,{className:`truncate`,children:[e.user,`@`,e.host]})},`${e.user}@${e.host}`)})})})]}),(0,k.jsxs)(`div`,{className:`w-[250px] shrink-0 border-r`,children:[(0,k.jsx)(`div`,{className:`p-2 border-b text-sm font-medium`,children:e(`user.manager.grantScope`)}),(0,k.jsx)(A,{connectionId:``,databases:R,tables:B,onSelectScope:Z})]}),(0,k.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,k.jsx)(I,{scope:N.level,privileges:F,onChange:L})})]}),(0,k.jsxs)(b,{children:[(0,k.jsx)(p,{onClick:()=>void ee(),disabled:q,children:e(`user.manager.apply`)}),(0,k.jsx)(p,{variant:`outline`,onClick:()=>X(!1),children:e(`user.manager.close`)})]})]})})}export{W as UserManagerDialog};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,C as n,S as r,b as i,l as a,v as o,x as s,y as c}from"./main-BPskUSLM.js";import{h as l,n as u}from"./ui-store-5IssrgmG.js";import{l as d,m as f,t as p}from"./button-B2EsmMJs.js";import{a as m}from"./i18n-BAv7QdV3.js";import{t as h}from"./connection-store-Ds9Gjt3K.js";import{c as g}from"./database-eJWHFM-2.js";import{t as _}from"./engine-DtZy_Zk0.js";import{a as v,i as y,n as b,o as x,t as S}from"./dialog-FBpgH0QJ.js";var C=e(l(),1),w=d();function T(){let e=h.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(m.t(`command.noActiveConnection`));let n=_().getQuery(e===`global`?`SHOW_GLOBAL_VARIABLES`:`SHOW_SESSION_VARIABLES`);return(await g(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=f(),{activeDialog:l,closeDialog:d,setFooterMessage:m}=u(),[h,g]=(0,C.useState)([]),[_,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=l===`variables`,A=(0,C.useCallback)(t=>E(t).then(g).catch(t=>m(e(`command.variables.loadError`,{message:t instanceof Error?t.message:String(t)}))),[m,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!_.trim())return h;let e=_.toLowerCase();return h.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[h,_]);function M(e){e||(T(``),d())}function N(e){O(e)}return(0,w.jsx)(S,{open:k,onOpenChange:M,children:(0,w.jsxs)(b,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(v,{children:(0,w.jsx)(x,{children:e(`command.variables.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(p,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(p,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(a,{placeholder:e(`command.variables.filterPlaceholder`),value:_,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(t,{className:`h-[400px]`,children:(0,w.jsxs)(o,{children:[(0,w.jsx)(r,{children:(0,w.jsxs)(n,{children:[(0,w.jsx)(s,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(s,{children:e(`command.value`)})]})}),(0,w.jsx)(c,{children:j.length===0?(0,w.jsx)(n,{children:(0,w.jsx)(i,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.variables.empty`)})}):j.map(e=>(0,w.jsxs)(n,{children:[(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(y,{children:(0,w.jsx)(p,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as VariablesDialog};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,C as n,S as r,b as i,l as a,v as o,x as s,y as c}from"./main-C-Gt0g0g.js";import{h as l,n as u}from"./ui-store-5IssrgmG.js";import{l as d,m as f,t as p}from"./button-B2EsmMJs.js";import{a as m}from"./i18n-D0mAAGED.js";import{t as h}from"./connection-store-BnO3WqEO.js";import{c as g}from"./database-BvWJHB7q.js";import{t as _}from"./engine-s5WfEr4n.js";import{a as v,i as y,n as b,o as x,t as S}from"./dialog-FBpgH0QJ.js";var C=e(l(),1),w=d();function T(){let e=h.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function E(e){let t=T();if(!t)throw Error(m.t(`command.noActiveConnection`));let n=_().getQuery(e===`global`?`SHOW_GLOBAL_VARIABLES`:`SHOW_SESSION_VARIABLES`);return(await g(t,n)).records.map(e=>({Variable_name:e[0],Value:e[1]}))}function D(){let{t:e}=f(),{activeDialog:l,closeDialog:d,setFooterMessage:m}=u(),[h,g]=(0,C.useState)([]),[_,T]=(0,C.useState)(``),[D,O]=(0,C.useState)(`session`),k=l===`variables`,A=(0,C.useCallback)(t=>E(t).then(g).catch(t=>m(e(`command.variables.loadError`,{message:t instanceof Error?t.message:String(t)}))),[m,e]);(0,C.useEffect)(()=>{k&&A(D)},[k,D,A]);let j=(0,C.useMemo)(()=>{if(!_.trim())return h;let e=_.toLowerCase();return h.filter(t=>t.Variable_name.toLowerCase().includes(e)||t.Value.toLowerCase().includes(e))},[h,_]);function M(e){e||(T(``),d())}function N(e){O(e)}return(0,w.jsx)(S,{open:k,onOpenChange:M,children:(0,w.jsxs)(b,{className:`sm:max-w-[900px] max-h-[80vh] flex flex-col`,children:[(0,w.jsx)(v,{children:(0,w.jsx)(x,{children:e(`command.variables.title`)})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-3 pb-2`,children:[(0,w.jsxs)(`div`,{className:`flex gap-1`,children:[(0,w.jsx)(p,{variant:D===`session`?`default`:`outline`,size:`sm`,onClick:()=>N(`session`),children:e(`command.scope.session`)}),(0,w.jsx)(p,{variant:D===`global`?`default`:`outline`,size:`sm`,onClick:()=>N(`global`),children:e(`command.scope.global`)})]}),(0,w.jsx)(a,{placeholder:e(`command.variables.filterPlaceholder`),value:_,onChange:e=>T(e.target.value),className:`max-w-xs`})]}),(0,w.jsx)(`div`,{className:`flex-1 border rounded-md overflow-hidden min-h-0`,children:(0,w.jsx)(t,{className:`h-[400px]`,children:(0,w.jsxs)(o,{children:[(0,w.jsx)(r,{children:(0,w.jsxs)(n,{children:[(0,w.jsx)(s,{className:`w-[300px]`,children:e(`command.variableName`)}),(0,w.jsx)(s,{children:e(`command.value`)})]})}),(0,w.jsx)(c,{children:j.length===0?(0,w.jsx)(n,{children:(0,w.jsx)(i,{colSpan:2,className:`text-center text-muted-foreground`,children:e(`command.variables.empty`)})}):j.map(e=>(0,w.jsxs)(n,{children:[(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Variable_name}),(0,w.jsx)(i,{className:`font-mono text-xs`,children:e.Value})]},e.Variable_name))})]})})}),(0,w.jsx)(y,{children:(0,w.jsx)(p,{variant:`outline`,onClick:()=>M(!1),children:e(`command.close`)})})]})})}export{D as VariablesDialog};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{c as t,h as n,i as r,l as i,r as a,s as o}from"./ui-store-5IssrgmG.js";import{i as s,r as c,t as l}from"./app-storage-C_1RLCyI.js";import{n as u}from"./settings-store-BBVuUVjA.js";var d=`planche-session-credentials`;function f(){try{let e=sessionStorage.getItem(d);return e?JSON.parse(e):{}}catch{return{}}}function p(e){try{sessionStorage.setItem(d,JSON.stringify(e))}catch{}}function m(e){return{pass:e.pass||void 0,sshPassword:e.ssh?.password||void 0,sshPassphrase:e.ssh?.passphrase||void 0,sshPrivateKey:e.ssh?.privateKey||void 0,authToken:e.authToken||void 0}}function h(e){return!(e.dbms===`sqlite`||e.dbms===`do`||e.gatewayProfile||e.dbms===`d1`&&e.devUrl)}function g(e){let t={...e,pass:``,authToken:``};return e.ssh&&(t.ssh={...e.ssh,password:void 0,passphrase:void 0,privateKey:void 0}),t}function _(e,t){let n={...e,pass:e.pass||t.pass||``,authToken:e.authToken||t.authToken||``};return e.ssh&&(n.ssh={...e.ssh,password:e.ssh.password||t.sshPassword,passphrase:e.ssh.passphrase||t.sshPassphrase,privateKey:e.ssh.privateKey||t.sshPrivateKey}),n}function v(e,t){let n=f(),r=Object.fromEntries(Object.entries(t).filter(([,e])=>e));Object.keys(r).length?n[e]=r:delete n[e],p(n)}function y(e){let t=f()[e];if(t!==void 0)return typeof t==`string`?{pass:t}:t}function b(e){let t=f();delete t[e],p(t)}function x(e){return!e.sample&&!e.scratchpad}function ee(e){return e.filter(x).map(e=>e.savePassword===!1?g(e):e)}function S(){return{v:1,profiles:{},tombstones:{},links:{}}}function C(){return{profiles:{},tombstones:{},links:{}}}function w(e){let t=C();for(let[n,r]of Object.entries(e.profiles))t.profiles[n]=r.updatedAt;for(let[n,r]of Object.entries(e.links))t.links[n]=r.updatedAt;return t.tombstones={...e.tombstones},t}function T(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.v===1&&!!t.profiles&&!!t.tombstones&&!!t.links}function E(e,t,n,r){let i=S(),a=new Set;for(let t of e.filter(x))a.add(t.id),i.profiles[t.id]={updatedAt:n.profiles[t.id]??r,profile:t};for(let[e,t]of Object.entries(n.tombstones))a.has(e)||(i.tombstones[e]=t);for(let[e,o]of Object.entries(t))!a.has(e)||o.length===0||(i.links[e]={updatedAt:n.links[e]??r,links:o});return i}function D(e,t){let n=S();n.tombstones={...e.tombstones};for(let[e,r]of Object.entries(t.tombstones))n.tombstones[e]=Math.max(r,n.tombstones[e]??0);for(let r of k(e.profiles,t.profiles)){let i=A(e.profiles[r],t.profiles[r]),a=n.tombstones[r];a!==void 0&&a>=i.updatedAt||(delete n.tombstones[r],n.profiles[r]=i)}for(let r of k(e.links,t.links))n.profiles[r]&&(n.links[r]=A(e.links[r],t.links[r]));return n}function O(e){let t={};for(let[n,r]of Object.entries(e.links))t[n]=r.links;return{profiles:Object.values(e.profiles).map(e=>e.profile),links:t}}function k(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])]}function A(e,t){return e?t&&t.updatedAt>=e.updatedAt?t:e:t}var j=a()(s((e,t)=>({profiles:{},tombstones:{},links:{},touchProfile:(t,n=Date.now())=>e(e=>{let r={...e.tombstones};return delete r[t],{profiles:{...e.profiles,[t]:n},tombstones:r}}),dropProfile:(t,n=Date.now())=>e(e=>{let r={...e.profiles};delete r[t];let i={...e.links};return delete i[t],{profiles:r,links:i,tombstones:{...e.tombstones,[t]:n}}}),touchLinks:(t,n=Date.now())=>e(e=>({links:{...e.links,[t]:n}})),adopt:t=>e({profiles:{...t.profiles},tombstones:{...t.tombstones},links:{...t.links}}),read:(e=Date.now())=>{let{profiles:n,tombstones:r,links:i}=t(),a={};for(let[t,n]of Object.entries(r))e-n<7776e6&&(a[t]=n);return{profiles:n,tombstones:a,links:i}}}),{name:`planche-sync-meta`,storage:l()})),M=e=>j.getState().touchProfile(e),N=e=>j.getState().dropProfile(e),P=e=>j.getState().touchLinks(e),F=()=>new Date().toISOString().slice(0,7);function I(e,t){let n=e?.month===t;return{total:(e?.total??0)+1,month:t,monthTotal:n?e.monthTotal+1:1}}var L=a()(s((e,t)=>({features:{},countFeatureUse:n=>{let r=I(t().features[n],F());return e(e=>({features:{...e.features,[n]:r}})),r},opportunities:{},countOpportunity:n=>{let r=I(t().opportunities[n],F());return e(e=>({opportunities:{...e.opportunities,[n]:r}})),r}}),{name:`planche-usage`,storage:l()}));function R(e){let n=L.getState().countFeatureUse(e);t(`pro_feature_use`,{feature:e,uses:i(n.total),uses_this_month:i(n.monthTotal),first_use:n.total===1}),n.total===1&&o({pro_features:r(Object.keys(L.getState().features).length)})}function z(e){let n=L.getState().countOpportunity(e);t(`explain_opportunity`,{kind:e,seen:i(n.total),seen_this_month:i(n.monthTotal)})}var B=e(n(),1);function V(e,t){let n=(0,B.useRef)(null),[r,i]=(0,B.useState)(null),a=(0,B.useCallback)(()=>{n.current=null,i(null)},[]),o=e=>{let t=e.currentTarget.getBoundingClientRect();return{before:e.clientX<t.left+t.width/2}};return{dragProps:(0,B.useCallback)(r=>({draggable:!0,onDragStart:e=>{n.current=r,e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,r)},onDragOver:t=>{if(!n.current||n.current===r)return;t.preventDefault(),t.dataTransfer.dropEffect=`move`;let{before:a}=o(t),s=e.indexOf(r),c=a?r:e[s+1]??`end`;i(e=>e===c?e:c)},onDrop:i=>{let s=n.current;if(!s||s===r)return a();i.preventDefault();let{before:c}=o(i),l=e.filter(e=>e!==s).indexOf(r);c||(l+=1),t(s,l),a()},onDragEnd:a}),[e,t,a]),dropIndicator:r,isDragging:()=>n.current!==null}}function H(e,t,n){let r=e.find(e=>e.id===t);if(!r)return e;let i=e.filter(e=>e.id!==t),a=Math.max(0,Math.min(n,i.length));return[...i.slice(0,a),r,...i.slice(a)]}var U=/--[^\n]*|\/\*[\s\S]*?\*\/|\$([A-Za-z_]\w*)?\$[\s\S]*?\$\1\$|'(?:[^']|'')*'|"(?:[^"]|"")*"|\[[^\]]*\]|[A-Za-z_][\w$#]*|\S/g,W=`'***'`,G=/((?:password|pwd)\s*=\s*)[^;'"]+/gi;function K(e){let t=[];for(let n of e.matchAll(U)){let e=n[0];if(e.startsWith(`--`)||e.startsWith(`/*`))continue;let r=e[0],i=r===`'`||r===`"`||r===`$`?`literal`:/[A-Za-z_]/.test(r)?`word`:`other`;t.push({text:e,start:n.index,end:n.index+e.length,kind:i})}return t}var q=e=>e?.kind===`word`?e.text.toUpperCase():``;function J(e){let t=K(e),n=[],r=e=>{!e||e.kind===`other`||n.push({start:e.start,end:e.end,text:e.kind===`literal`?W:`***`})},i=e=>{let n=t[e];return n?n.kind===`literal`?{token:n,span:1}:n.kind===`word`&&/^[NE]$/i.test(n.text)&&t[e+1]?.kind===`literal`?{token:t[e+1],span:2}:null:null};for(let e=0;e<t.length;e++){let a=t[e];if(a.kind===`literal`){G.test(a.text)&&(G.lastIndex=0,n.push({start:a.start,end:a.end,text:a.text.replace(G,`$1***`)})),G.lastIndex=0;continue}if(a.kind!==`word`)continue;let o=a.text.toUpperCase();if(o===`IDENTIFIED`){let n=e+1;if(q(t[n])===`WITH`&&(n+=2),q(t[n])!==`BY`&&q(t[n])!==`AS`||(n+=1,(q(t[n])===`PASSWORD`||q(t[n])===`VALUES`)&&(n+=1),q(t[n])===`RANDOM`))continue;let a=i(n);a?(r(a.token),n+=a.span):t[n]?.kind===`word`&&(r(t[n]),n+=1),q(t[n])===`REPLACE`&&r(i(n+1)?.token??t[n+1]);continue}if(o===`PASSWORD`){let n=e+1;if(t[n]?.text===`(`){r(i(n+1)?.token);continue}if(q(t[n])===`FOR`)for(;n<t.length&&t[n].text!==`=`;)n++;t[n]?.text===`=`&&(n+=1),r(i(n)?.token)}}if(n.length===0)return e;n.sort((e,t)=>e.start-t.start);let a=``,o=0;for(let t of n)t.start<o||(a+=e.slice(o,t.start)+t.text,o=t.end);return a+e.slice(o)}var Y=2e4;function X(e){let t=e.slice(0,400),n=0;for(let e=0;e<t.length;e++)if(n+=t[e].text.length,n>15e5)return t.slice(0,Math.max(1,e));return t}function Z(e,t){return e.find(e=>e.docId===t)}var Q=a()(s(e=>({revisions:{},importedLegacy:!1,capture:(t,{docId:n,title:r,text:i,database:a,reason:o})=>e(e=>{let s=J(i);if(!s.trim())return{};let c=e.revisions[t]??[];if(Z(c,n)?.text===s)return{};let l={id:crypto.randomUUID(),docId:n,title:r,text:s,database:a,timestamp:Date.now(),reason:o};return{revisions:{...e.revisions,[t]:X([l,...c])}}}),removeRevision:(t,n)=>e(e=>({revisions:{...e.revisions,[t]:(e.revisions[t]??[]).filter(e=>e.id!==n)}})),clearRevisions:t=>e(e=>{let n={...e.revisions};return delete n[t],{revisions:n}}),mergeRevisions:t=>e(e=>{let n={...e.revisions};for(let[e,r]of Object.entries(t))n[e]=X([...n[e]??[],...r].sort((e,t)=>t.timestamp-e.timestamp));return{revisions:n,importedLegacy:!0}})}),{name:`planche-revisions`,storage:l(),version:1,partialize:e=>({revisions:u.getState().persistQueryHistory?e.revisions:{},importedLegacy:e.importedLegacy}),onRehydrateStorage:()=>e=>{!e||e.importedLegacy||ne()}}));function te(e,t){let n={};for(let[r,i]of Object.entries(e.snapshots??{})){let a=new Map((e.tabs?.[r]??[]).map(e=>[e.id,e.title])),o=[];for(let[e,n]of Object.entries(i??{}))for(let r of n??[])r?.text?.trim()&&o.push({id:crypto.randomUUID(),docId:e,title:a.get(e)??t,text:r.text,database:``,timestamp:r.timestamp,reason:r.reason});o.length>0&&(n[r]=o.sort((e,t)=>t.timestamp-e.timestamp))}return n}async function ne(){try{let e=await c.getItem(`planche-query`);if(!e){Q.setState({importedLegacy:!0});return}let t=te(JSON.parse(e).state??{},`Query`);Q.getState().mergeRevisions(t)}catch{Q.setState({importedLegacy:!0})}}var $=new Map;function re(e,t){let n=`${e}:${t.docId}`,r=$.get(n);r&&clearTimeout(r),$.set(n,setTimeout(()=>{$.delete(n),Q.getState().capture(e,t)},Y))}function ie(e,t){let n=`${e}:${t}`,r=$.get(n);r&&(clearTimeout(r),$.delete(n))}function ae(e){return e.savePassword===!1?g(e):e}function oe(e){return g(e)}var se=a()(s((e,n)=>({savedConnections:[],activeConnections:[],activeConnectionId:null,transactionOpen:{},pendingReopen:{},fileDetached:{},addSavedConnection:t=>{M(t.id),t.savePassword===!1&&v(t.id,m(t)),e(e=>({savedConnections:[...e.savedConnections,t]}))},updateSavedConnection:(t,r)=>{let i={...n().savedConnections.find(e=>e.id===t),...r};i.savePassword===!1&&v(t,m(i)),e(e=>({savedConnections:e.savedConnections.map(e=>e.id===t?{...e,...r}:e)}))},deleteSavedConnection:t=>{N(t),b(t),Q.getState().clearRevisions(t),e(e=>({savedConnections:e.savedConnections.filter(e=>e.id!==t)}))},openConnection:n=>e(e=>{let r=e.activeConnections.some(e=>e.id===n.id),i={...e.pendingReopen};return delete i[n.id],r?{activeConnections:e.activeConnections.map(e=>e.id===n.id?{...e,...n}:e),activeConnectionId:n.id,pendingReopen:i}:(t(`connection_open`,{dbms:n.dbms,transport:n.transport??`tunnel`,sample:!!n.sample,ssh:!!n.ssh?.enabled}),n.ssh?.enabled&&R(`ssh_tunnel`),{activeConnections:[...e.activeConnections,n],activeConnectionId:n.id,pendingReopen:i})}),closeConnection:t=>e(e=>{let n=e.activeConnections.filter(e=>e.id!==t),r=e.activeConnectionId===t?n.length>0?n[n.length-1].id:null:e.activeConnectionId,i={...e.transactionOpen},a={...e.pendingReopen},o={...e.fileDetached};return delete i[t],delete a[t],delete o[t],{activeConnections:n,activeConnectionId:r,transactionOpen:i,pendingReopen:a,fileDetached:o}}),reorderActiveConnection:(t,n)=>e(e=>({activeConnections:H(e.activeConnections,t,n)})),setActiveConnection:t=>e({activeConnectionId:t}),updateServerConnectionId:(t,n)=>e(e=>({activeConnections:e.activeConnections.map(e=>e.id===t?{...e,serverConnectionId:n}:e)})),updateProfile:(t,n)=>(M(t),e(e=>({savedConnections:e.savedConnections.map(e=>e.id===t?{...e,...n}:e),activeConnections:e.activeConnections.map(e=>e.id===t?{...e,...n}:e)}))),setTransactionOpen:(t,n)=>e(e=>({transactionOpen:{...e.transactionOpen,[t]:n}})),setPendingReopen:(t,n)=>e(e=>({pendingReopen:{...e.pendingReopen,[t]:n}})),setFileDetached:(t,n)=>e(e=>({fileDetached:{...e.fileDetached,[t]:n}})),applySyncedProfiles:t=>{let r=new Map(t.map(e=>[e.id,e])),i=n().savedConnections,a=i.filter(e=>!x(e)&&!r.has(e.id));for(let e of t)e.savePassword===!1&&v(e.id,m(e));for(let e of i)x(e)&&!r.has(e.id)&&b(e.id);e({savedConnections:[...a,...t]})},resolveCredentials:e=>{let t=n().savedConnections.find(t=>t.id===e.id);return _(t?_(e,m(t)):e,y(e.id)??{})}}),{name:`planche-connections`,storage:l(),version:1,migrate:e=>{let t=e;return Array.isArray(t.savedConnections)&&(t.savedConnections=t.savedConnections.map(e=>({...e,savePassword:e.savePassword??!0}))),t},partialize:e=>({savedConnections:e.savedConnections.map(ae),activeConnections:e.activeConnections.map(oe),activeConnectionId:e.activeConnectionId})}));export{O as _,J as a,z as c,P as d,j as f,w as g,D as h,Q as i,R as l,T as m,ie as n,H as o,E as p,re as r,V as s,se as t,L as u,ee as v,h as y};
@@ -0,0 +1 @@
1
+ var e=[`ssh_tunnel`,`compare_schemas`,`compare_data`,`copy_table`,`dry_run`,`federated`,`scratchpad`,`column_link`,`sync`,`ai_explain`];export{e as t};
@@ -0,0 +1 @@
1
+ import{c as e,n as t,r as n}from"./ui-store-5IssrgmG.js";import{a as r,i}from"./i18n-D0mAAGED.js";import{b as a,i as o,l as s,n as c,s as l,t as u,u as d,y as f}from"./tunneling-BPoIRxJA.js";import{t as p}from"./hmr-singleton-Bit0Kfog.js";import{t as m}from"./connection-store-BnO3WqEO.js";import{i as ee,n as h,r as g,t as te}from"./app-storage-C_1RLCyI.js";import{n as ne}from"./query-store-dYiA8oM5.js";function _(e,t,n){return e.map(e=>e.id===t?n(e):e.children.length>0?{...e,children:_(e.children,t,n)}:e)}function v(e,t){for(let n of e){if(n.id===t)return n;let e=v(n.children,t);if(e)return e}return null}function y(e,t,n){let r=new Set(e??[]);if(n)r.add(t);else for(let e of r)(e===t||e.startsWith(`${t}/`))&&r.delete(e);return[...r]}var b=n()(ee(e=>({trees:{},selectedNodeId:{},expandedIds:{},setTree:(t,n)=>e(e=>({trees:{...e.trees,[t]:n}})),setChildren:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:y(e.expandedIds[t],n,!0)},trees:{...e.trees,[t]:_(i,n,e=>({...e,children:r,isLoading:!1,isExpanded:!0,metadata:{...e.metadata,count:r.length}}))}}:e}),setNodeMetadata:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:_(i,n,e=>({...e,metadata:{...e.metadata,...r}}))}}:e}),toggleExpanded:(t,n)=>e(e=>{let r=e.trees[t];if(!r)return e;let i=!v(r,n)?.isExpanded;return{expandedIds:{...e.expandedIds,[t]:y(e.expandedIds[t],n,i)},trees:{...e.trees,[t]:_(r,n,e=>({...e,isExpanded:i}))}}}),setExpanded:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:y(e.expandedIds[t],n,r)},trees:{...e.trees,[t]:_(i,n,e=>({...e,isExpanded:r}))}}:e}),setSelected:(t,n)=>e(e=>({selectedNodeId:{...e.selectedNodeId,[t]:n}})),setLoading:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:_(i,n,e=>({...e,isLoading:r}))}}:e}),removeTree:t=>e(e=>{let n={...e.trees},r={...e.selectedNodeId};return delete n[t],delete r[t],{trees:n,selectedNodeId:r}})}),{name:`planche-schema`,storage:te(),partialize:e=>({selectedNodeId:e.selectedNodeId,expandedIds:e.expandedIds})})),x=32,S=24,re=931071618,C=931071619,w=(e,t)=>(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0,ie=(e,t)=>(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0;function T(e,t,n,r,i=0,a=0){let o=r?w:ie;for(let r=t;r<t+n;r+=8)i=i+o(e,r)+a>>>0,a=a+o(e,r+4)+i>>>0;return[i,a]}function ae(e){if(e.byteLength<x)return null;let t=w(e,0);if(t!==re&&t!==C)return null;let n=t===C,r=w(e,8);if(r<512||r>65536||r&r-1)return null;let i=w(e,16),a=w(e,20),[o,s]=T(e,0,24,n);if(o!==w(e,24)||s!==w(e,28))return null;let c=S+r,l=new Map,u=new Map,d=0,f=0,p=0;for(let t=x;t+c<=e.byteLength&&!(w(e,t+8)!==i||w(e,t+12)!==a||([o,s]=T(e,t,8,n,o,s),[o,s]=T(e,t+S,r,n,o,s),o!==w(e,t+16)||s!==w(e,t+20)));t+=c){let n=w(e,t),r=w(e,t+4);if(n===0)break;if(u.set(n,e.subarray(t+S,t+c)),p++,r>0){for(let[e,t]of u)l.set(e,t);u.clear(),d=r,f+=p,p=0}}return{pageSize:r,dbSizePages:d,pages:l,committedFrames:f}}function E(e,t){let n=ae(t);if(!n||n.committedFrames===0)return{bytes:e,appliedFrames:0};let{pageSize:r,dbSizePages:i,pages:a}=n,o=Math.max(i*r,e.byteLength-e.byteLength%r),s=new Uint8Array(o);s.set(e.subarray(0,Math.min(e.byteLength,o)));for(let[e,t]of a){let n=(e-1)*r;n+r<=o&&s.set(t,n)}return{bytes:i>0?s.subarray(0,i*r):s,appliedFrames:n.committedFrames}}var oe=`planche-file-handles`,D=`handles`;function se(){return new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB unavailable`));return}let n=indexedDB.open(oe,1);n.onupgradeneeded=()=>n.result.createObjectStore(D),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function O(e,t){return se().then(n=>new Promise((r,i)=>{let a=t(n.transaction(D,e).objectStore(D));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)}))}var k=e=>`${e}:wal`;async function A(e,t){try{await O(`readwrite`,n=>n.put(t,e))}catch{}}async function j(e){try{return await O(`readonly`,t=>t.get(e))??null}catch{return null}}async function M(e){try{await O(`readwrite`,t=>t.delete(e))}catch{}}async function N(e,t){let n=e,r={mode:`readwrite`};try{if(n.queryPermission&&await n.queryPermission(r)===`granted`)return!0;if(t&&n.requestPermission)return await n.requestPermission(r)===`granted`}catch{}return!1}var P=e=>`dbcache-meta:${e}`,F=e=>`${e}.sqlite3`;async function ce(e){try{let t=await g.getItem(P(e));if(!t)return null;let n=JSON.parse(t),r=await h.get(F(e));return r?{bytes:new Uint8Array(r),meta:n}:null}catch{return null}}async function le(e,t,n){try{let r=t.slice().buffer;return await h.set(F(e),r)?(await g.setItem(P(e),JSON.stringify(n)),!0):!1}catch(e){return console.warn(`[db-cache] write failed:`,e),!1}}async function ue(e,t){try{let n=await g.getItem(P(e));if(!n)return;await g.setItem(P(e),JSON.stringify({...JSON.parse(n),...t}))}catch{}}async function I(e){try{await h.remove(F(e)),await g.removeItem(P(e))}catch{}}var de=`browser:`;function L(e){return typeof e==`string`&&e.startsWith(`browser:`)}var fe=750;function pe(e){let t=H.get(e);t?.profileId&&(t.flushTimer&&clearTimeout(t.flushTimer),t.flushTimer=setTimeout(()=>{t.flushTimer=null,R(e)},fe))}async function R(e){let t=H.get(e);if(t?.profileId)try{let n=await ke(e);await le(t.profileId,n,z(t))}catch(e){console.warn(`[browser-sqlite] cache flush failed:`,e)}}function z(e){return{name:e.source.name,lastModified:e.fileMeta.lastModified,size:e.fileMeta.size,dirty:e.dirty,cachedAt:Date.now()}}var B=p(`browserSqliteVisibilityListener`,()=>({installed:!1}));typeof document<`u`&&!B.installed&&(B.installed=!0,document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState===`hidden`)for(let[e,t]of H)t.flushTimer&&(clearTimeout(t.flushTimer),t.flushTimer=null,R(e))}));function V(e){return e.toLowerCase().endsWith(`-wal`)}var H=p(`browserSqliteDatabases`,()=>new Map),U=p(`browserSqliteModule`,()=>({promise:null}));async function W(){return U.promise||=i(()=>import(`./dist-Roudme38.js`).then(e=>e.default()),[]),U.promise}function G(e){let t=H.get(e);if(!t)throw Error(`Browser connection not found: ${e}`);return t}function me(e){if(!(e.byteLength>=100&&e[0]===83&&e[15]===0)||e[18]!==2&&e[19]!==2)return{bytes:e,wal:!1};let t=new Uint8Array(e);return t[18]=1,t[19]=1,{bytes:t,wal:!0}}var he=`SQLite format 3\0`;function ge(e){if(e.byteLength===0)return null;if(e.byteLength<100)return r.t(`services.sqliteFile.tooSmall`);if(String.fromCharCode(...e.subarray(0,16))!==he)return r.t(`services.sqliteFile.notSqlite`);let t=e[16]<<8|e[17],n=t===1?65536:t;return n<512||n&n-1?r.t(`services.sqliteFile.badPageSize`,{size:n}):null}async function _e(e){let t=ge(e);if(t)throw Error(t);let n=await W(),i=new n.oo1.DB;if(e.byteLength===0)return i;let a=n.wasm.allocFromTypedArray(e),o=n.capi,s=o.SQLITE_DESERIALIZE_FREEONCLOSE??1,c=o.SQLITE_DESERIALIZE_RESIZEABLE??2,l=n.capi.sqlite3_deserialize(i.pointer,`main`,a,e.byteLength,e.byteLength,s|c);i.checkRc(l);try{i.exec(`SELECT count(*) FROM sqlite_master`)}catch(e){throw i.close(),Error(r.t(`services.sqliteFile.unreadable`,{message:e instanceof Error?e.message:String(e)}))}return i}async function K(e){let t=window.showOpenFilePicker;if(t)try{let n=await t({multiple:e.multiple,types:e.sqliteOnly?[{description:r.t(`services.sqliteFile.pickerDescription`),accept:{"application/vnd.sqlite3":[`.sqlite`,`.sqlite3`,`.db`,`.db3`]}}]:void 0,excludeAcceptAllOption:!1});return Promise.all(n.map(async e=>({file:await e.getFile(),handle:e})))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return[];throw e}return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.multiple=e.multiple,e.sqliteOnly&&(n.accept=`.sqlite,.sqlite3,.db,.db3,application/vnd.sqlite3`),n.onchange=()=>t(Array.from(n.files??[]).map(e=>({file:e}))),n.oncancel=()=>t([]),n.click()})}async function ve(){let e=await K({multiple:!0,sqliteOnly:!1}),t=e.find(e=>!V(e.file.name));return t?{main:t,wal:e.find(e=>V(e.file.name)&&e.file.name.toLowerCase()===`${t.file.name.toLowerCase()}-wal`)??e.find(e=>V(e.file.name))}:null}async function ye(){let[e]=await K({multiple:!1,sqliteOnly:!1});return e??null}async function q(e,t,n={}){let{bytes:r,wal:i}=me(e),a=await _e(r),o=`${de}${crypto.randomUUID()}`,s={...t,wal:i};return H.set(o,{db:a,source:s,rawBytes:e,profileId:n.profileId,fileMeta:n.fileMeta??{lastModified:0,size:e.byteLength},dirty:n.dirty??!1,flushTimer:null}),{connectionId:o,source:s}}async function J(e,t,n,r={}){let i=e?new Uint8Array(await e.arrayBuffer()):new Uint8Array,a=i,o=!1;n&&(a=E(i,new Uint8Array(await n.file.arrayBuffer())).bytes,o=!0);let s=await q(a,{name:e?.name??`:memory:`,handle:t,walApplied:o,walHandle:n?.handle},{profileId:r.profileId,fileMeta:{lastModified:Math.max(e?.lastModified??0,n?.file.lastModified??0),size:i.byteLength}});return H.get(s.connectionId).rawBytes=i,r.profileId&&R(s.connectionId),s}async function be(e,t,n,r){return await q(t,{name:n.name,handle:r,walApplied:!0},{profileId:e,fileMeta:{lastModified:n.lastModified,size:n.size},dirty:n.dirty})}function xe(e,t){let n=G(e);n.source={...n.source,handle:t}}function Se(e){return H.get(e)?.dirty??!1}async function Ce(e,t){let n=G(e),r=E(n.rawBytes,new Uint8Array(await t.file.arrayBuffer())),i=await q(r.bytes,{...n.source,walApplied:!0,walHandle:t.handle},{profileId:n.profileId,fileMeta:n.fileMeta});return H.get(i.connectionId).rawBytes=n.rawBytes,X(e),n.profileId&&R(i.connectionId),{...i,appliedFrames:r.appliedFrames}}function Y(e){return H.get(e)?.source??null}function we(e){return e&&e.trim().toLowerCase().replace(/\(.*$/,``).trim()||null}function Te(e){return e==null?`null`:typeof e==`number`?Number.isInteger(e)?`integer`:`real`:typeof e==`bigint`?`bigint`:e instanceof Uint8Array?`blob`:`text`}function Ee(e){return typeof e==`bigint`?Number(e):e instanceof Uint8Array?{type:`Buffer`,data:Array.from(e)}:e}async function De(e,t){let{db:n}=G(e),r=await W(),i=performance.now(),a=G(e),o=Number(r.capi.sqlite3_total_changes(n.pointer)),s=n.prepare(t);try{if(s.columnCount===0){s.step();let c=Number(n.changes()),l=Number(r.capi.sqlite3_last_insert_rowid(n.pointer)),u=/^\s*(BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(t);return(c>0||Number(r.capi.sqlite3_total_changes(n.pointer))!==o||!u)&&(a.dirty=!0,pe(e)),{success:!0,fields:[],records:[],affectedRows:c,insertId:l,isResultQuery:!1,execTime:Math.round(performance.now()-i)}}let c=[];for(;s.step();)c.push(s.get([]).map(Ee));let l=s.getColumnNames(),u=r.capi,d=s.pointer;return{success:!0,fields:l.map((e,t)=>{let n=we(u.sqlite3_column_decltype(d,t)),r=u.sqlite3_column_table_name(d,t)??``;return{name:e,orgName:u.sqlite3_column_origin_name(d,t)??e,type:n??Te(Oe(c,t)),table:r,orgTable:r,db:u.sqlite3_column_database_name(d,t)??``,maxLength:0}}),records:c,affectedRows:0,insertId:0,isResultQuery:!0,execTime:Math.round(performance.now()-i)}}finally{s.finalize()}}function Oe(e,t){for(let n of e){let e=n[t];if(e!=null)return e}return null}async function ke(e){let{db:t}=G(e);return(await W()).capi.sqlite3_js_db_export(t.pointer)}function Ae(e){let t=H.get(e);if(!t?.source.handle)return null;let{source:n}=t;return n.wal&&!n.walApplied&&!n.walAcknowledged?r.t(`services.sqliteFile.walNotLoaded`):null}function je(e){let t=G(e);t.source={...t.source,walAcknowledged:!0}}async function Me(e){let{source:t,fileMeta:n}=e;if(!t.handle)return;let i=await t.handle.getFile();if(n.lastModified&&(i.lastModified!==n.lastModified||i.size!==n.size))throw Error(r.t(`services.sqliteFile.changedOnDisk`,{name:t.name}));if(t.walHandle)try{let e=await t.walHandle.getFile();if(e.size>0&&!t.walApplied)throw Error(r.t(`services.sqliteFile.walHasChanges`,{name:t.name}));if(e.size>0&&t.walApplied&&e.lastModified>n.lastModified)throw Error(r.t(`services.sqliteFile.walChangedOnDisk`,{name:t.name}))}catch(e){if(e instanceof Error&&!(e instanceof DOMException))throw e}}async function Ne(e){let t=G(e),{source:n}=t,i=Ae(e);if(i)throw Error(i);n.handle&&await Me(t);let a=await ke(e);if(n.handle){if(!await N(n.handle,!0))throw Error(r.t(`services.sqliteFile.writeDenied`,{name:n.name}));let t=await n.handle.createWritable();await t.write(a),await t.close(),n.walHandle&&await(await n.walHandle.createWritable()).close();let i=G(e);i.dirty=!1;try{let e=await n.handle.getFile();i.fileMeta={lastModified:e.lastModified,size:e.size}}catch{i.fileMeta={lastModified:Date.now(),size:a.byteLength}}return i.profileId&&ue(i.profileId,{...z(i)}),`in-place`}let o=new Blob([a],{type:`application/vnd.sqlite3`}),s=URL.createObjectURL(o),c=document.createElement(`a`);return c.href=s,c.download=n.name===`:memory:`?`database.sqlite`:n.name,c.click(),URL.revokeObjectURL(s),`download`}function X(e){let t=H.get(e);t&&(t.flushTimer&&clearTimeout(t.flushTimer),t.db.close(),H.delete(e))}function Z(e){return H.get(e)?.profileId}async function Pe(e){await M(e),await M(k(e)),await I(e)}async function Fe(e,t){let n=await j(e);if(!n)return null;if(!await N(n,t))return`denied`;try{return{handle:n,file:await n.getFile()}}catch(t){if(t instanceof DOMException&&(t.name===`NotFoundError`||t.name===`NotAllowedError`))return await M(e),null;throw t}}async function Ie(e,t){let n=await j(k(e));if(!(!n||!await N(n,t)))try{return{file:await n.getFile(),handle:n}}catch{await M(k(e));return}}async function Le(e,t){let n={remembered:!0,fromCache:!1,restoredUnsaved:!1,fileDetached:!1,diskChanged:!1},r=await ce(e),i=await Fe(e,t.interactive),a=i&&i!==`denied`?i.handle:void 0,o=i&&i!==`denied`?i.file:null;if(r?.meta.dirty){let{connectionId:t,source:i}=await be(e,r.bytes,r.meta,a),s=o?o.lastModified!==r.meta.lastModified||o.size!==r.meta.size:!1;return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,restoredUnsaved:!0,fileDetached:!a,diskChanged:s}}if(o&&a){let{connectionId:r,source:i}=await J(o,a,await Ie(e,t.interactive),{profileId:e});return{...n,connectionId:r,fileName:i.name,wal:i.wal,walApplied:i.walApplied}}if(r){let{connectionId:t,source:i}=await be(e,r.bytes,r.meta);return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,fileDetached:!0}}if(!t.interactive)return null;let s=await ve();if(!s)return null;let{connectionId:c,source:l}=await J(s.main.file,s.main.handle,s.wal,{profileId:e});return s.main.handle?await A(e,s.main.handle):await M(e),s.wal?.handle?await A(k(e),s.wal.handle):await M(k(e)),{...n,connectionId:c,fileName:l.name,wal:l.wal,walApplied:l.walApplied,remembered:!1}}var Re=`SQLite format 3\0`;async function ze(e){if(e.size===0)return!0;if(e.size<100)return!1;let t=new Uint8Array(await e.slice(0,16).arrayBuffer());return String.fromCharCode(...t)===Re}async function Be(e,t){try{let n=await j(e);return n?await n.isSameEntry(t):!1}catch{return!1}}async function Ve(n){let i=n.find(e=>!V(e.file.name));if(!i)return;if(!await ze(i.file))throw Error(r.t(`app.dropNotSqlite`,{name:i.file.name}));let a=n.find(e=>V(e.file.name)&&e.file.name.toLowerCase()===`${i.file.name.toLowerCase()}-wal`),o=m.getState(),s;for(let e of o.savedConnections)if(!(e.dbms!==`sqlite`||(e.transport??`browser`)!==`browser`||e.sample||e.file!==i.file.name)&&i.handle&&await Be(e.id,i.handle)){s=e;break}let c=s??{id:crypto.randomUUID(),hostName:i.file.name.replace(/\.(db|sqlite|sqlite3|db3)$/i,``),host:``,user:``,pass:``,charset:`utf8`,port:0,dbms:`sqlite`,transport:`browser`,file:i.file.name,autoConnection:!1,savePassword:!0,authToken:``};e(`sqlite_file_drop`,{reused:!!s,wal:!!a,handle:!!i.handle});let l=o.activeConnections.some(e=>e.id===c.id),u=o.activeConnections.find(e=>e.id===c.id)?.serverConnectionId,{connectionId:d}=await J(i.file,i.handle,a,{profileId:c.id});u&&u!==d&&L(u)&&X(u),i.handle?await A(c.id,i.handle):await M(c.id),a?.handle?await A(k(c.id),a.handle):await M(k(c.id)),s||o.addSavedConnection(c),o.openConnection({...c,serverConnectionId:d}),o.setPendingReopen(c.id,!1),o.setFileDetached(c.id,!1),b.getState().removeTree(c.id),l||ne.getState().addQueryTab(c.id,{id:`tab-${Date.now()}`,title:r.t(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),t.getState().setWelcomeVisible(!1)}async function He(e,t){let n=await Fe(e,!0);return!n||n===`denied`?!1:(xe(t,n.handle),!0)}async function Ue(e){let t=Z(e),n=Y(e);return n&&!n.handle&&t&&await He(t,e),Ne(e)}function We(e){let t=Y(e);return t?t.name===`:memory:`?r.t(`services.save.inMemory`):typeof window<`u`&&!(`showOpenFilePicker`in window)?r.t(`services.save.noFileSystemAccess`):!t.handle&&!Z(e)?r.t(`services.save.noWritableHandle`):null:r.t(`services.save.notBrowserSqlite`)}async function Ge(e,t){let n=await ye();if(!n)return null;let r=await Ce(t,n);return n.handle&&await A(k(e),n.handle),{connectionId:r.connectionId,appliedFrames:r.appliedFrames}}function Ke(e){if(!L(e))return null;let t=Y(e);return t?{wal:t.wal,walApplied:t.walApplied,walAcknowledged:t.walAcknowledged??!1}:null}function qe(e){return e.dbms===`sqlite`&&e.transport===`browser`?`browser`:`tunnel`}async function Je(e,t){return l(e,t)}async function Ye(e,t){return f(e,t)}async function Xe(e,t,n){let r=e=>({success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:0,message:e instanceof Error?e.message:String(e)});if(L(e))try{return await De(e,t)}catch(e){return r(e)}let i=Q.get(e)??e;try{return await d(i,t,n)}catch(e){if(!(e instanceof u)||e.status!==404)return r(e);let a=await Ze(i);if(!a)return r(e);try{return await d(a,t,n)}catch(e){return r(e)}}}var Q=new Map,$=new Map;function Ze(e){let n=$.get(e);if(n)return n;let i=(async()=>{let n=m.getState(),i=n.activeConnections.find(t=>t.serverConnectionId===e||Q.get(t.serverConnectionId??``)===e);if(!i||qe(i)===`browser`||c())return null;if(i.serverConnectionId&&i.serverConnectionId!==e&&!Q.has(i.serverConnectionId))return Q.set(e,i.serverConnectionId),i.serverConnectionId;let o=n.resolveCredentials(i),s=o.ssh?.enabled&&o.ssh.auth===`password`&&!o.ssh.password;if(!o.pass&&i.pass===``&&i.dbms!==`sqlite`||s)return null;try{let n=await l(a(o),o.authToken||void 0);if(!n.success||!n.connectionId)return null;for(let[t,r]of Q)r===e&&Q.set(t,n.connectionId);return Q.set(e,n.connectionId),m.getState().updateServerConnectionId(i.id,n.connectionId),m.getState().setTransactionOpen(i.id,!1),t.getState().setFooterMessage(r.t(`services.agent.reconnected`,{name:i.hostName||i.host||i.databaseId||i.file||i.id})),n.connectionId}catch{return null}})();return $.set(e,i),i.finally(()=>$.delete(e)),i}async function Qe(e){if(L(e)){let t=Z(e);X(e),t&&await I(t);return}return s(e)}function $e(e){return e===`cancelled`?null:e===`abandoned`?r.t(`result.running.abandoned`):e===`agent-outdated`?r.t(`result.running.agentOutdated`):e===`unsupported`?r.t(`result.running.cannotCancel`):r.t(`result.running.cancelFailed`)}async function et(e){if(L(e))return`unsupported`;let t=m.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId;return t?o(t):`failed`}function tt(e){return async(t,n)=>{let i=await Xe(e,t,n);if(!i.success)throw Error(i.message??r.t(`services.query.failed`));return i}}export{b as S,je as _,tt as a,Se as b,Xe as c,qe as d,Ge as f,Ye as g,Ue as h,Je as i,Pe as l,He as m,$e as n,We as o,Ve as p,Le as r,Qe as s,et as t,Ke as u,Ae as v,J as x,L as y};