planche 0.8.14 → 0.9.1

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 (141) hide show
  1. package/app/assets/7jD5h8Yx.js +4 -0
  2. package/app/assets/7jG9Xw-H.js +1 -0
  3. package/app/assets/84VwJAQi.js +1 -0
  4. package/app/assets/9gOj-Ty3.js +1 -0
  5. package/app/assets/B4S-lOKS.js +2 -0
  6. package/app/assets/B7zF7RU4.js +2 -0
  7. package/app/assets/{CjoKIEBz.js → B9dhM8vw.js} +1 -1
  8. package/app/assets/BDtsGuIR.js +4 -0
  9. package/app/assets/BEH9Jqkv.js +1 -0
  10. package/app/assets/BFw3KCAr.js +1 -0
  11. package/app/assets/BGuDcBB_.js +1 -0
  12. package/app/assets/BGvsBpIS.js +1 -0
  13. package/app/assets/BMBWoD5w.js +1 -0
  14. package/app/assets/BMFLhX-x.js +1 -0
  15. package/app/assets/BNB62Dfu.js +1 -0
  16. package/app/assets/BPPUDpI0.js +1 -0
  17. package/app/assets/BPmMKRmE.js +3 -0
  18. package/app/assets/BQ1Rcyw6.js +1 -0
  19. package/app/assets/BRZhVXRC.js +1 -0
  20. package/app/assets/BSziALTN.js +1 -0
  21. package/app/assets/BTaXXwBP.js +27 -0
  22. package/app/assets/BYvM8E39.js +1 -0
  23. package/app/assets/BbOETtQZ.js +7 -0
  24. package/app/assets/Bbx7_Uyd.js +1 -0
  25. package/app/assets/BhX9zWzC.js +1 -0
  26. package/app/assets/BixvbqFe.js +1 -0
  27. package/app/assets/BjwrN_ch.js +11 -0
  28. package/app/assets/BkXrfAoR.js +1 -0
  29. package/app/assets/BnJGrP6V.js +4 -0
  30. package/app/assets/BrVnzO7b.js +1 -0
  31. package/app/assets/ByKF67UY.js +1 -0
  32. package/app/assets/C1gqjEN3.js +1 -0
  33. package/app/assets/C1kpKIsO.js +1 -0
  34. package/app/assets/C6712dxU.js +1 -0
  35. package/app/assets/C77ZEZfM.js +1 -0
  36. package/app/assets/CExE8dKz.js +959 -0
  37. package/app/assets/CFUkTo-F.js +1 -0
  38. package/app/assets/CFu5QMhX.js +4 -0
  39. package/app/assets/CHx7zgT8.js +1 -0
  40. package/app/assets/CRnmOOqq.js +1 -0
  41. package/app/assets/{CoSpkBZh.js → CTnwm-29.js} +1 -1
  42. package/app/assets/{B1pia_Rg.js → CYz610vE.js} +1 -1
  43. package/app/assets/CaU3pCK6.js +1 -0
  44. package/app/assets/CgQ0qqq4.js +1 -0
  45. package/app/assets/CiL8zoYm.js +1 -0
  46. package/app/assets/CoZCOAph.js +3 -0
  47. package/app/assets/{ClQzFEcL.js → CrhJJH3f.js} +1 -1
  48. package/app/assets/CrlnxAGW.js +1 -0
  49. package/app/assets/Cu_sGzNJ.js +1 -0
  50. package/app/assets/D0Ya12SQ.js +1 -0
  51. package/app/assets/D1kyupCL.js +1 -0
  52. package/app/assets/D3lUezEb.js +1 -0
  53. package/app/assets/D8_hwGjG.js +1 -0
  54. package/app/assets/{CEtGUZGE.js → D8dVzi6I.js} +1 -1
  55. package/app/assets/D9QeXBOk.js +1 -0
  56. package/app/assets/DCHRj2vY.js +1 -0
  57. package/app/assets/DF7EZh_S.js +2 -0
  58. package/app/assets/DHZOxCSJ.js +1 -0
  59. package/app/assets/DNHPk-9r.js +4 -0
  60. package/app/assets/DPyLA6Dl.js +8 -0
  61. package/app/assets/DTkqO0Em.js +1 -0
  62. package/app/assets/DU-Eln5x.js +1 -0
  63. package/app/assets/DaBfnZOJ.js +1 -0
  64. package/app/assets/Djxg54qH.js +1 -0
  65. package/app/assets/Do7KpDxk.js +1 -0
  66. package/app/assets/DpEN2jyA.js +1 -0
  67. package/app/assets/DzRyVlxz.js +41 -0
  68. package/app/assets/DzdX4vRD.js +1 -0
  69. package/app/assets/G06qjCej.js +1 -0
  70. package/app/assets/Nro86Y63.js +1 -0
  71. package/app/assets/S7HbowYz.js +373 -0
  72. package/app/assets/Udlj1Cgf.js +1 -0
  73. package/app/assets/W7D4Svcn.js +1 -0
  74. package/app/assets/{C0bzfYFC.js → XCH_yrJ8.js} +1 -1
  75. package/app/assets/_zaonxnw.js +1 -0
  76. package/app/assets/aIFwnVFr.js +4 -0
  77. package/app/assets/kXDKfUfE.js +4 -0
  78. package/app/assets/qRIRkBN0.js +1 -0
  79. package/app/assets/tJkeLYCp.js +1 -0
  80. package/app/assets/w46wk7KI.css +2 -0
  81. package/app/index.html +35 -27
  82. package/app/landing.css +17 -0
  83. package/dist/{chunk-XAI7WLQN.js → chunk-SDRLD5PK.js} +995 -121
  84. package/dist/embed.js +1 -1
  85. package/dist/index.js +1 -1
  86. package/package.json +6 -2
  87. package/app/assets/8RmjiG1u.js +0 -1
  88. package/app/assets/B6E7IbMa.js +0 -1
  89. package/app/assets/BBLekwhn.js +0 -1
  90. package/app/assets/BCmzDvBt.js +0 -1
  91. package/app/assets/BHsXOlR9.js +0 -2
  92. package/app/assets/BLPGwQub.js +0 -1
  93. package/app/assets/BO_H_8D-.js +0 -1
  94. package/app/assets/BUcTqhSL.js +0 -1
  95. package/app/assets/BX4n4TJQ.js +0 -1
  96. package/app/assets/BZ6aghND.js +0 -959
  97. package/app/assets/BbFio3pA.js +0 -1
  98. package/app/assets/BbdU8Zop.js +0 -2
  99. package/app/assets/Bdp1DKAx.js +0 -1
  100. package/app/assets/BgkATqP8.js +0 -1
  101. package/app/assets/Bpq2Whsw.js +0 -3
  102. package/app/assets/BuhEpB12.js +0 -1
  103. package/app/assets/BxW20weH.js +0 -1
  104. package/app/assets/C-8gMuEc.js +0 -1
  105. package/app/assets/C29gYFqD.js +0 -2
  106. package/app/assets/C3PpGnxB.js +0 -1
  107. package/app/assets/CF6jyexg.js +0 -41
  108. package/app/assets/CNC8pjhK.js +0 -1
  109. package/app/assets/CS2mpWDL.js +0 -1
  110. package/app/assets/CSYxJn5_.js +0 -1
  111. package/app/assets/CVpzA8TC.js +0 -8
  112. package/app/assets/CZoj-eMm.js +0 -1
  113. package/app/assets/Cf8o-5U6.js +0 -2
  114. package/app/assets/CkPnfgzt.js +0 -2
  115. package/app/assets/ClIJYMXh.js +0 -1
  116. package/app/assets/CxGlndnu.js +0 -1
  117. package/app/assets/D0jMUNSI.js +0 -2
  118. package/app/assets/D3ZaTPbf.js +0 -1
  119. package/app/assets/D6kbK-ng.js +0 -1
  120. package/app/assets/DEEGN6UG.js +0 -6
  121. package/app/assets/DF5d9evm.js +0 -1
  122. package/app/assets/DGpfJHer.js +0 -1
  123. package/app/assets/DOU2MWdA.js +0 -1
  124. package/app/assets/DPdwSUSw.js +0 -1
  125. package/app/assets/DXtaGfxh.js +0 -1
  126. package/app/assets/DbqogdCK.js +0 -356
  127. package/app/assets/DdHg_zlz.js +0 -1
  128. package/app/assets/DiIO0MJM.js +0 -1
  129. package/app/assets/DnZlL3PP.js +0 -1
  130. package/app/assets/H8HkC925.js +0 -1
  131. package/app/assets/KuSp3gJs.css +0 -2
  132. package/app/assets/VZqLr_d1.js +0 -7
  133. package/app/assets/_OOlglTI.js +0 -1
  134. package/app/assets/bgQ-QVd7.js +0 -1
  135. package/app/assets/mA5FXiEh.js +0 -2
  136. package/app/assets/mZyfO6B4.js +0 -1
  137. package/app/assets/p4yYbMPY.js +0 -2
  138. package/app/assets/pjlgs2cl.js +0 -1
  139. package/app/assets/pneb1la9.js +0 -1
  140. package/app/assets/uVZVQeN3.js +0 -27
  141. package/app/assets/zspOy9D_.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,n as i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,r as ee,t as u}from"./DzRyVlxz.js";import{t as d}from"./S7HbowYz.js";import{n as f}from"./DU-Eln5x.js";import{n as p,t as m}from"./D8_hwGjG.js";import{a as h}from"./BkXrfAoR.js";import{a as g,f as _}from"./BnJGrP6V.js";import{Bt as v,Gt as y,Kt as b,Rt as x,Xt as S,_t as C,f as w,h as T,m as E,p as D}from"./CExE8dKz.js";var O=i(`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(t(),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=a(),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:i}){let{t:a}=r(),o=`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:o,value:t.text===`true`||t.text===`1`?`true`:`false`,onChange:e=>i(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:o,value:t.text,onChange:e=>i(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 r=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:r.has(t),disabled:n,onChange:n=>{let a=new Set(r);n.target.checked?a.add(t):a.delete(t),i(e.options.filter(e=>a.has(e)).join(`,`))}}),t]},t))})}case`integer`:case`decimal`:return(0,L.jsx)(`input`,{className:`${o} tabular-nums`,inputMode:`decimal`,value:t.text,onChange:e=>i(e.target.value),disabled:n,placeholder:e.kind===`integer`?`0`:`0.00`});case`date`:case`datetime`:{let[r,s]=t.text.trim().split(/[ T]/);return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${o} flex-1`,value:t.text,onChange:e=>i(e.target.value),disabled:n,placeholder:e.kind===`date`?`YYYY-MM-DD`:`YYYY-MM-DD HH:MM:SS`}),(0,L.jsxs)(D,{children:[(0,L.jsx)(T,{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:a(`result.rowForm.pickDate`),children:(0,L.jsx)(S,{className:`size-3.5`})})}),(0,L.jsx)(E,{className:`w-auto p-0`,align:`end`,children:(0,L.jsx)(w,{mode:`single`,selected:V(r??``),defaultMonth:V(r??``),onSelect:t=>{if(!t)return;let n=`${t.getFullYear()}-${z(t.getMonth()+1)}-${z(t.getDate())}`;i(e.kind===`date`?n:`${n} ${s||`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:()=>i(B(e.kind)),title:a(`result.rowForm.now`),children:(0,L.jsx)(y,{className:`size-3.5`})})]})}case`time`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${o} flex-1`,value:t.text,onChange:e=>i(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:()=>i(B(`time`)),title:a(`result.rowForm.now`),children:(0,L.jsx)(y,{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:`${o} min-h-[96px] resize-y text-xs ${e?``:`border-destructive`}`,value:t.text,onChange:e=>i(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{i(JSON.stringify(JSON.parse(t.text),null,2))}catch{}},children:[(0,L.jsx)(O,{className:`size-3`}),a(`result.rowForm.formatJson`)]}),!e&&(0,L.jsx)(`span`,{className:`text-[10px] text-destructive`,children:a(`result.rowForm.invalid.json`)})]})]})}case`text`:return(0,L.jsx)(`textarea`,{className:`${o} min-h-[72px] resize-y`,value:t.text,onChange:e=>i(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:a(`result.rowForm.binaryUnsupported`)});case`uuid`:return(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(`input`,{className:`${o} flex-1`,value:t.text,onChange:e=>i(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:()=>i(crypto.randomUUID()),title:a(`result.rowForm.generateUuid`),children:(0,L.jsx)(O,{className:`size-3.5`})})]});default:{let r=t.text.length>80||t.text.includes(`
2
+ `);return(0,L.jsxs)(`div`,{className:`space-y-0.5`,children:[r?(0,L.jsx)(`textarea`,{className:`${o} min-h-[56px] resize-y`,value:t.text,onChange:e=>i(e.target.value),disabled:n,spellCheck:!1}):(0,L.jsx)(`input`,{className:o,value:t.text,onChange:e=>i(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}=r(),t=m(`row-form`),i=p(e=>e.closeDialog),a=p(e=>e.setFooterMessage),y=C(t?.connectionId??``),S=d(e=>t?e.transactionOpen[t.connectionId]:!1),[w,T]=(0,k.useState)(null),[E,D]=(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=t?.mode===`edit`;(0,k.useEffect)(()=>{if(!t)return;let e=!1,n=h(t.serverConnectionId);return y.introspect.listColumns(n,t.database,t.table).then(n=>{if(e)return;T(n);let r={};for(let e of n)if(t.mode===`edit`){let n=t.fields.find(t=>t.orgName===e.name);r[e.name]=P(n?t.row?.[n.name]:void 0)}else r[e.name]=N(e);A(r)}).catch(t=>{e||D(t instanceof Error?t.message:String(t))}),()=>{e=!0}},[t?.serverConnectionId,t?.database,t?.table,t?.mode]);let G=(0,k.useMemo)(()=>new Map((w??[]).map(e=>[e.name,j(e,{oracleDate:y.id===`oracle`})])),[w,y.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(!w)return null;let t=new Map,n={};for(let r of w){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}},[w,O,G,e,J]),X=(0,k.useCallback)(e=>{if(!t)return null;let n=e=>e===J?`DEFAULT`:y.quoteLiteral(e);if(t.mode===`insert`){let r=[...e];return r.length===0?y.getQuery(`INSERT_DEFAULT_VALUES`,t.database,t.table):y.getQuery(`INSERT_TABLE`,t.database,t.table,r.map(([e])=>y.quoteIdentifier(e)).join(`, `),r.map(([,e])=>n(e)).join(`, `))}return!t.where||e.size===0?null:y.getQuery(`UPDATE_TABLE`,t.database,t.table,[...e].map(([e,t])=>`${y.quoteIdentifier(e)} = ${n(t)}`).join(`, `),t.where)},[t,y,J]),Z=(0,k.useMemo)(()=>{if(!w)return``;let e=new Map;for(let t of w){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)??``},[w,O,G,X,J]),Q=e=>{let n={};for(let[r,i]of e){if(i===J)continue;let e=t?.fields.find(e=>e.orgName===r);n[e?.name??r]=typeof i==`bigint`?i.toString():i}return n},te=()=>{let e=Y();!e||!t||(t.onStage?.(t.mode,Q(e.values)),i())},ne=async()=>{let n=Y();if(!n||!t)return;let r=X(n.values);if(!r){B(e(`result.rowForm.nothingToWrite`));return}U(!0),B(null);try{if(f.getState().previewGridCommit&&!await p.getState().requestDestructiveConfirm({title:e(W?`result.rowForm.confirmUpdateTitle`:`result.rowForm.confirmInsertTitle`,{table:`${t.database}.${t.table}`}),statements:[r],confirmLabel:e(W?`result.rowForm.update`:`result.rowForm.insert`)}))return;await g(t.connectionId,r,{database:t.database,skipDestructiveConfirm:!0}),a(e(W?`result.rowForm.updated`:`result.rowForm.inserted`,{table:`${t.database}.${t.table}`})),t.onCommitted?.(t.mode,Q(n.values)),i()}catch(e){if(e instanceof _)return;B(e instanceof Error?e.message:String(e))}finally{U(!1)}};if(!t)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)(u,{open:!0,onOpenChange:e=>{e||i()},children:(0,L.jsxs)(c,{className:`flex max-h-[90vh] flex-col sm:max-w-[860px]`,children:[(0,L.jsxs)(o,{children:[(0,L.jsx)(l,{children:e(W?`result.rowForm.editTitle`:`result.rowForm.insertTitle`)}),(0,L.jsxs)(ee,{className:`font-mono text-xs`,children:[t.database,`.`,t.table]})]}),(0,L.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto rounded-md border`,children:[E&&(0,L.jsx)(`div`,{className:`rounded border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:E}),!w&&!E&&(0,L.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground`,children:[(0,L.jsx)(x,{className:`size-4 animate-spin`}),e(`result.rowForm.loading`)]}),w&&(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:w.map(n=>{let r=O[n.name]??{mode:`value`,text:``},i=G.get(n.name),a=r.mode===`auto`,o=M[n.name],s=n.key===`PRI`,c=t.fields.find(e=>e.orgName===n.name),l=!!c&&!!t.row&&t.row[c.name]===null;return(0,L.jsxs)(`tr`,{className:`align-top ${o?`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:n.name,children:n.name}),s&&(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)(v,{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:n.type}),!n.nullable&&(0,L.jsx)(`span`,{children:`NOT NULL`}),n.defaultValue!==null&&(0,L.jsxs)(`span`,{className:`font-mono`,title:e(`result.rowForm.defaultValue`),children:[`= `,n.defaultValue]}),n.extra&&(0,L.jsx)(`span`,{children:n.extra})]}),n.comment&&(0,L.jsx)(`div`,{className:`mt-0.5 text-[10px] text-muted-foreground/80`,children:n.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(n.name,`value`),title:e(`result.rowForm.clickToChange`),children:l?(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:i,state:r,disabled:!1,onText:e=>q(n.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 (${n.defaultValue??``})`:e(`result.rowForm.autoHint`)}),o&&(0,L.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 text-[11px] text-destructive`,children:[(0,L.jsx)(b,{className:`size-3`}),o]})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 rounded border bg-background p-0.5`,children:[W&&$(n.name,`keep`,e(`result.rowForm.mode.keep`),r.mode),(a||!W&&/auto_increment|identity/i.test(n.extra))&&$(n.name,`auto`,e(`result.rowForm.mode.auto`),r.mode),$(n.name,`value`,e(`result.rowForm.mode.value`),r.mode),n.nullable&&$(n.name,`null`,`NULL`,r.mode),n.defaultValue!==null&&$(n.name,`default`,`DEFAULT`,r.mode)]})]})})]},n.name)})})]})]}),w&&(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)(s,{className:`items-center`,children:[S&&(0,L.jsx)(`span`,{className:`mr-auto text-[11px] text-catppuccin-yellow`,children:e(`result.rowForm.inTransaction`)}),(0,L.jsx)(n,{variant:`outline`,onClick:()=>i(),disabled:V,children:e(`command.close`)}),t.onStage&&(0,L.jsx)(n,{variant:`outline`,onClick:te,disabled:V||!w,title:e(`result.rowForm.stageHint`),children:e(W?`result.rowForm.stageEdit`:`result.rowForm.stageInsert`)}),(0,L.jsxs)(n,{onClick:()=>void ne(),disabled:V||!w,children:[V&&(0,L.jsx)(x,{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{t as e}from"./CiL8zoYm.js";import{i as t,r as n}from"./Cu_sGzNJ.js";import{a as r,i,n as a,o,r as s,t as c}from"./DzRyVlxz.js";import{n as l}from"./D8_hwGjG.js";import{Y as u,t as d}from"./CExE8dKz.js";var f=n(),p=`https://planche.dev`,m=`/third-party-notices.txt`;function h(){let n=l(e=>e.activeDialog),h=l(e=>e.closeDialog),{t:g}=t();return(0,f.jsx)(c,{open:n===`about`,onOpenChange:e=>{e||h()},children:(0,f.jsxs)(a,{className:`sm:max-w-[440px]`,children:[(0,f.jsx)(r,{children:(0,f.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,f.jsx)(d,{size:44,className:`shrink-0`}),(0,f.jsxs)(`div`,{className:`grid gap-1`,children:[(0,f.jsx)(o,{children:g(`about.title`)}),(0,f.jsx)(s,{children:g(`about.tagline`)})]})]})}),(0,f.jsxs)(`div`,{className:`grid gap-3 text-sm`,children:[(0,f.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-4 gap-y-1`,children:[(0,f.jsx)(`dt`,{className:`text-muted-foreground`,children:g(`about.version`)}),(0,f.jsx)(`dd`,{children:`0.1.1`}),(0,f.jsx)(`dt`,{className:`text-muted-foreground`,children:g(`about.website`)}),(0,f.jsx)(`dd`,{children:(0,f.jsx)(`a`,{href:p,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:p})}),(0,f.jsx)(`dt`,{className:`text-muted-foreground`,children:g(`about.licenses`)}),(0,f.jsx)(`dd`,{children:(0,f.jsx)(`a`,{href:m,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:g(`about.licensesLink`)})}),(0,f.jsx)(`dt`,{className:`text-muted-foreground`,children:g(`about.legal`)}),(0,f.jsxs)(`dd`,{className:`flex gap-3`,children:[(0,f.jsx)(`a`,{href:u.terms,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:g(`about.terms`)}),(0,f.jsx)(`a`,{href:u.privacy,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:g(`about.privacy`)}),(0,f.jsx)(`a`,{href:u.refund,target:`_blank`,rel:`noreferrer`,className:`underline underline-offset-2`,children:g(`about.refund`)})]})]}),(0,f.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`© 2026 Juwon Jeong. `,g(`about.rights`)]}),(0,f.jsx)(`p`,{className:`rounded-md border bg-muted/40 p-3 text-xs text-muted-foreground`,children:g(`about.disclaimer`)}),(0,f.jsxs)(`div`,{className:`rounded-md border border-amber-500/40 bg-amber-500/5 p-3 text-xs text-muted-foreground`,children:[(0,f.jsx)(`p`,{className:`mb-1 font-medium text-amber-600 dark:text-amber-400`,children:g(`pro.noticeTitle`)}),(0,f.jsx)(`p`,{children:g(`pro.notice`)})]})]}),(0,f.jsx)(i,{children:(0,f.jsx)(e,{onClick:h,children:g(`settings.done`)})})]})})}export{h as AboutDialog};
@@ -0,0 +1,4 @@
1
+ var e={reconnecting:`再接続中…`,dropSqlite:`ドロップして SQLite ファイルを開く`,dropSqliteHint:`WebAssembly でブラウザ内に開かれ、ファイルはお使いのコンピューターから出ません。-wal ファイルがあれば一緒にドロップしてください。`,dropFailedTitle:`ドロップしたファイルを開けませんでした`,dropNotSqlite:`{{name}} は SQLite データベースファイルではありません。`,crashTitle:`問題が発生しました`,crashBody:`予期しないエラーが発生しました。再読み込みすると接続とタブは復元されますが、保存していないグリッドの編集は失われます。`,crashReload:`再読み込み`,dialogFailed:`ダイアログを開けませんでした: {{message}}`},t={auto:`システムの言語({{name}})`,en:`English`,ko:`한국어`,zh:`中文(简体)`,ja:`日本語`,de:`Deutsch`,fr:`Français`},n={title:`安全設定`,description:`意図しないデータ損失を防ぐためのガードレールです。読み取り専用、環境カラー、トランザクションモードは接続ごとに設定します。`,language:`言語`,languageHint:`すぐに反映されます。「システム言語」はブラウザの設定に従います。`,resetDefaults:`デフォルトに戻す`,done:`完了`,analytics:`匿名の使用統計を送信する`,analyticsHint:`匿名の使用イベント(エンジン、機能、文の種類)を Google Analytics に送信します。SQL 本文、ホスト名、テーブル名やユーザー名は送信しません。`,analyticsUnavailableHint:`このビルドでは無効です(測定 ID 未設定)。`,persistHistory:`再読み込み後もクエリ履歴を保持`,persistHistoryHint:`文のテキストがこのブラウザに保存されます (パスワードのリテラルはマスク、開いているエディタタブ自体は常に保持)。オフにすると履歴とスナップショットはタブを閉じるまでのみ保持されます。`,ai:{intro:`失敗した文や遅いプランの理由をモデルに尋ねられます。質問はこのアプリで組み立てられ、ローカルエージェントが下記のプロバイダへ送ります — SQL やスキーマが planche.dev に届くことはありません。`,provider:`プロバイダ`,openaiCompatible:`OpenAI 互換`,model:`モデル`,baseUrl:`ベース URL`,baseUrlHint:`空欄ならプロバイダ既定のエンドポイントを使います。OpenAI 互換サーバーなら何でも動きます — Azure、OpenRouter、ローカルの Ollama。`,key:`API キー`,keyHint:`ローカルエージェントに渡され、そこで使われます。このブラウザには保存されず、planche.dev にも送られません。`,remember:`このマシンにキーを記憶する`,rememberHint:`{{path}} に本人だけが読める形で書き込みます。チェックしない場合、キーは実行中のエージェント内にのみ存在し、停止すると消えます。`,save:`保存`,forget:`キーを削除`,saved:`保存しました。`,none:`キーは未設定です。`,configuredSession:`今回のエージェントセッションのみ有効なキーが設定されています。`,configuredFile:`{{path}} にキーが保存されています。`,configuredEnv:`このエージェントの AI 設定は環境変数由来のため、ここでは変更できません。`,unreachable:`エージェントに接続できないため、AI 設定を変更できません。`,title:`AI による説明`,description:`失敗やプランをどのモデルが説明し、誰のキーで支払うか。`,cli:`ローカル CLI(キー不要)`,cliCommand:`コマンド`,cliHint:`このマシンに導入済みでサインイン済みのエージェント CLI を実行するため、入力するキーはありません。失敗やプランの説明に使えます。AI パネルにはツールを呼べる provider が必要です。`,cliNone:`このマシンにエージェント CLI が見つかりません。Claude Code か Codex を入れるか、別の provider を選んでください。`,profile:`Anthropic(このマシンのログイン)`,profileHint:"このマシンが既にサインイン済みの資格情報を使います。`ant auth login` の後は SDK が自動で見つけます。貼り付けるものはなく、ローカル CLI と違い本物の API なので AI パネルも動きます。",profileNone:"このマシンに Anthropic の資格情報が見つかりません。`ant auth login` を実行するか、キーを設定してください。",configuredChoice:`{{provider}} を使用中 — キーは保持せず、選択は {{path}} に保存されます。`},query:{title:`クエリ`,description:`文をどう実行するか: F9 が何を走らせ、何行返し、何を先に確認するか。`},general:{title:`一般`,description:`言語、再読み込みを越えて残るもの、そしてこのマシンを離れるもの。`}},r={settings:{safety:`安全設定…`,language:`言語`,title:`設定`,theme:`テーマ`,query:`クエリ…`,general:`一般…`,ai:`AI…`},help:{gettingStarted:`はじめに`,about:`Planche について`,title:`ヘルプ`,documentation:`ドキュメント`,learn:`SQL を学ぶ`,terms:`利用規約`,license:`ライセンス`,support:`お問い合わせ`,mcp:`AI エージェントを接続 (MCP)…`,privacy:`プライバシーポリシー`,whatsNew:`新機能`},connection:{title:`接続`,connect:`接続`,disconnect:`切断`,readOnly:`読み取り専用`,manualTransactions:`手動トランザクション`,saveDatabaseFile:`データベースファイルを保存`,saveDatabaseFileBlocked:`データベースファイルを保存(先に -wal を読み込んでください)`,exit:`終了`,sync:`接続の同期`},query:{title:`クエリ`,execute:`実行`,executeStatementAtCursor:`カーソル位置のステートメントを実行`,executeWholeScript:`スクリプト全体を実行`,newQueryTab:`新しいクエリタブ`,findReplace:`検索と置換`,localHistory:`ローカル履歴…`,explainPlan:`実行計画を表示`,explainAnalyze:`実行計画を実測 (文を実際に実行)`,structure:`クエリ構造`},edit:{title:`編集`,undo:`元に戻す`,redo:`やり直す`,cut:`切り取り`,copy:`コピー`,paste:`貼り付け`,selectAll:`すべて選択`},database:{title:`データベース`,create:`データベースを作成`,alter:`データベースを変更`,drop:`データベースを削除`,copy:`データベースをコピー`,compare:`スキーマを比較…`,truncate:`データベースを空にする`,compareData:`データを比較…`,groupBy:`グループ集計…`},table:{title:`テーブル`,create:`テーブルを作成`,alter:`テーブルを変更`,drop:`テーブルを削除`,rename:`テーブル名を変更`,truncate:`テーブルを空にする`,duplicateStructure:`テーブル構造を複製`},export:{title:`エクスポート`,csv:`CSV としてダウンロード`,tsv:`TSV でダウンロード`,schemaHtml:`スキーマを HTML に出力`,links:`列リンクをエクスポート…`,importLinks:`列リンクをインポート…`},tools:{title:`ツール`,userManager:`ユーザー管理`,processList:`プロセス一覧`,variables:`変数`,status:`ステータス`,flush:`フラッシュ`,quickCommand:`クイックコマンド`,viewErd:`ERD を表示`,scratchpad:`スクラッチパッド(ブラウザ内 SQLite)`,federated:`統合クエリ(接続をまたぐ結合)…`,federatedTab:`統合クエリ {{n}}`,ai:`AI アシスタント`},messages:{databaseFileSaved:`データベースファイルを保存しました`,databaseExported:`データベースをダウンロードとしてエクスポートしました`,databaseExportedWithReason:`データベースをダウンロードとしてエクスポートしました — {{reason}}`,errorSavingDatabase:`データベースの保存中にエラーが発生しました: {{message}}`,noDatabaseSelected:`データベースが選択されていません`,noTableSelected:`テーブルが選択されていません`,noActiveConnection:`アクティブな接続がありません`,databaseDropped:`データベース "{{database}}" を削除しました`,errorDroppingDatabase:`データベースの削除中にエラーが発生しました: {{message}}`,noTablesInDatabase:`データベース "{{database}}" にテーブルが見つかりません`,databaseTruncated_other:`"{{database}}" の {{count}} 個のテーブルをすべて空にしました`,errorTruncatingDatabase:`データベースを空にする際にエラーが発生しました: {{message}}`,tableDropped:`テーブル "{{table}}" を削除しました`,errorDroppingTable:`テーブルの削除中にエラーが発生しました: {{message}}`,tableTruncated:`テーブル "{{table}}" を空にしました`,errorTruncatingTable:`テーブルを空にする際にエラーが発生しました: {{message}}`,renameTablePrompt:`テーブル "{{table}}" の新しい名前:`,tableRenamed:`テーブル "{{table}}" の名前を "{{newName}}" に変更しました`,errorRenamingTable:`テーブル名の変更中にエラーが発生しました: {{message}}`,truncateDatabaseTitle:`"{{name}}" のすべてのテーブルを空にしますか?`,truncateDatabaseDescription:`"{{name}}" の {{count}} 個のテーブルのすべての行が削除されます。テーブル構造は保持されます。この操作は元に戻せません。`,truncateDatabaseConfirm:`すべてのテーブルを空にする`,renameTableTitle:`テーブル名の変更`,renameTableConfirm:`名前を変更`,noLinksToExport:`エクスポートする列リンクがありません。`,linksExported:`列リンク {{count}} 件をエクスポートしました。`,linksImported:`列リンク {{count}} 件をインポートしました。`,linksImportedPartial:`列リンク {{count}} 件をインポートしました。一致するプロファイルなし: {{profiles}}`,linksImportFailed:`列リンクをインポートできませんでした: {{reason}}`}},i={title:`Planche について`,tagline:`MySQL、MariaDB、PostgreSQL、SQLite 向けのデータベースクライアントです。`,version:`バージョン`,website:`ウェブサイト`,licenses:`ライセンス`,licensesLink:`サードパーティ通知`,disclaimer:`Planche は「現状のまま」提供され、いかなる保証もありません。作者は本ソフトウェアの使用によって生じた損害やデータ損失について一切の責任を負いません。破壊的なステートメントを実行する前にデータをバックアップしてください。`,rights:`All rights reserved.`,legal:`規約`,terms:`利用規約`,privacy:`プライバシー`,refund:`返金`},a=JSON.parse('{"dialog":{"title":"データベースに接続","firstQueryTab":"クエリ 1","colHostName":"接続名","colTarget":"接続先","colDbms":"DBMS","noSaved":"保存された接続はありません","unnamed":"(名前なし)","pickOnConnect":"(接続時に選択)","noFile":"(ファイルなし)","selectPrompt":"接続を選択するか、新しく追加してください","addNew":"新規追加","delete":"削除","testConnection":"接続テスト","connect":"接続","close":"閉じる","unknownError":"不明なエラー","browserTestHint":"ブラウザ内 SQLite 接続は、「接続」をクリックするとローカルファイルを開きます。","testSuccess":"接続に成功しました","restoredUnsaved":"{{file}}: キャッシュされたコピーから未保存の変更を復元しました","restoredUnsavedDiskChanged":"{{file}}: キャッシュされたコピーから未保存の変更を復元しました — ディスク上のファイルはその後変更されています","walPending":"{{file}} は WAL モードです: 最近の変更が -wal ファイルに残っている可能性があります。上の「-wal ファイルを読み込む」で取り込んでください。","walApplied":"{{file}} を -wal の変更を適用して開きました","connectFailedTitle":"接続に失敗しました","testSuccessDescription":"サーバーが認証情報を受け付けました。","testFailedTitle":"接続テストに失敗しました","privacy":"ここに入力した情報が planche.dev のサーバーに送信・保存されることはありません。接続プロファイルはこのブラウザのローカルストレージにのみ保存され、クエリはローカルエージェントからデータベースへ直接送られます。","hostKeyTitle":"不明な SSH ホスト鍵","hostKeyDescription":"{{host}}:{{port}} がフィンガープリント {{fingerprint}} の {{type}} 鍵を提示しました。サーバー管理者から受け取ったフィンガープリントと照合してください。誤った鍵を受け入れると攻撃者に通信を読まれます。","hostKeyAccept":"このホストを信頼する","gatewayTitle":"ゲートウェイのプロファイル","gatewayAdd":"追加","gatewayAdded":"ゲートウェイのプロファイル {{name}} を追加しました。","gatewayReadOnly":"読み取り専用","gatewayWritable":"書き込み可","gatewayProfileHint":"この接続はゲートウェイが保持するプロファイル「{{name}}」を使います。ここで設定するものはありません。","gatewayLoadFailed":"ゲートウェイのプロファイルを読み込めませんでした: {{error}}","export":"エクスポート…","exportWithoutSecrets":"パスワードを含めない","exportWithSecrets":"パスワードと鍵を含める","import":"インポート…","exported":"接続「{{name}}」をエクスポートしました。","imported":"接続「{{name}}」をインポートしました。","importFailedTitle":"接続をインポートできませんでした"},"form":{"hostName":"接続名","hostNamePlaceholder":"My Connection","dataSource":"データソース","openVia":"開く方法","viaBrowser":"ブラウザ(ローカルファイル)","viaAgent":"ローカルエージェント","viaBrowserHint":"インストール不要です。他のプログラムが使用していないファイルに最適です: ブラウザはメモリ上のコピーで作業し、ファイルをロックできないため、開いている間に他で行われた編集は反映されず、保存時に上書きされます。","viaAgentHint":"npx planche 経由で SQLite 自体がファイルを開きます — 適切なロックと WAL に対応し、同じデータベースを使う他のプログラムと安全に共存できます。","databaseFile":"データベースファイル","changeFile":"ファイルを変更","filePickerHint":"「接続」をクリックするとファイル選択ダイアログが開きます(ヒント: ⌘⇧. で隠しファイルを表示、⌘⇧G でパスを入力できます)。","fileRememberedHint":"選択したファイルは記憶される(Chromium)ため、再接続時は権限の確認のみ行われます。変更を書き戻すには「接続 > データベースファイルを保存」を使用してください。","authToken":"認証トークン","authTokenPlaceholder":"空欄でペアリング済みのエージェントトークンを使用","filePathPlaceholder":"/path/to/database.sqlite または :memory:","createIfMissing":"存在しない場合は作成","createIfMissingHint":"パスはトンネリングサーバーのホスト上で解決されます","host":"ホスト","port":"ポート","database":"データベース","serviceName":"サービス名","user":"ユーザー","password":"パスワード","savePassword":"パスワードを保存","savePasswordHint":"オフ: パスワードはこのブラウザセッションの間だけ保持され、ディスクには書き込まれません。","charset":"文字セット","autoConnection":"自動接続","safety":"安全設定","environment":"環境","environmentHint":"タブとワークスペースに色を付けます","readOnly":"読み取り専用","readOnlyHint":"データやスキーマを変更するステートメントを拒否します","transactions":"トランザクション","txAuto":"自動コミット","txManual":"手動 — ツールバーからコミット / ロールバック","ssh":"SSH","sshTunnel":"SSHトンネル","sshTunnelHint":"SSH踏み台ホスト経由でデータベースに接続します(ローカルエージェントがトンネルを開きます)","sshHost":"SSHホスト","sshPort":"SSHポート","sshUser":"SSHユーザー","sshAuth":"SSH認証","sshAuthKey":"秘密鍵","sshAuthPassword":"パスワード","sshAuthAgent":"ssh-agent","sshAuthAgentHint":"npx planche を実行しているマシンの ssh-agent に読み込まれた鍵を使用します(SSH_AUTH_SOCK)。","sshPassword":"SSHパスワード","sshKey":"秘密鍵","sshKeyPick":"鍵ファイルを選択…","sshKeyLoaded":"鍵を読み込み済み","sshKeyHint":"空ならエージェントのマシンの ~/.ssh/config の IdentityFile(または ~/.ssh/id_*)を使用します。選択した鍵はこのプロファイルと共に保存されます","sshPassphrase":"パスフレーズ","sshPassphrasePlaceholder":"鍵にパスフレーズがなければ空のまま","sshSecretsHint":"SSH のパスワード・秘密鍵・パスフレーズは上の「パスワードを保存」設定に従います。不明なホスト鍵は初回接続前に確認用に表示され、エージェントのマシンの ~/.planche/known_hosts に保存されます。","sshHostPlaceholder":"bastion.example.com または ~/.ssh/config の Host エイリアス","sshUserPlaceholder":"空なら ~/.ssh/config の User を使用","sshTargetHint":"DB のホスト/ポートは踏み台ホスト側で解決されます — localhost やローカルポートフォワードではなく、DB の実際のアドレス(例: RDS エンドポイント)を入力してください。","connectionString":"接続文字列","connectionStringApplied":"下のフィールドに反映しました。文字列自体は保存されず、フィールドのみ保存されます。","connectionStringInvalid":"PostgreSQL URI ではありません (postgresql://user:password@host/database の形式)。","neonHint":"Neon コンソール (Connect > Connection string) の URI を貼り付けると、下のフィールドが埋まります。","supabaseHint":"Supabase (Connect > Session pooler または Direct connection) の URI を貼り付けると、下のフィールドが埋まります。","supabasePoolerWarning":"ポート 6543 はトランザクションモードのプーラーです。文ごとに別のバックエンドで実行される可能性があるため、スキーマの切り替え、一時テーブル、プリペアドステートメント、手動トランザクションは動作しません。セッションプーラー (ポート 5432) か直接接続を使ってください。","managedTlsHint":"このサービスへは常に TLS で接続し、ローカルエージェントからサービスへ直接接続します (SSH トンネルなし)。","d1AccountId":"Account ID","d1DatabaseId":"Database ID","d1ApiToken":"API トークン","d1Hint":"Account ID: Cloudflare ダッシュボードのアカウントホーム右側。Database ID: Storage & Databases > D1 > データベース。トークン: My Profile > API Tokens > Create Token で \\"D1 Edit\\" 権限 (読み取り専用は \\"D1 Read\\")。ローカルエージェントがこのトークンで Cloudflare API を呼び出します。","d1LimitsHint":"D1 はリクエストごとに独立して実行され自動コミットされるため、手動トランザクションは使えません。データベースは \\"main\\" スキーマ 1 つとして表示されます。","doDevUrl":"wrangler dev URL","doHint":"Worker プロジェクトで `wrangler dev` を実行し、表示された URL を入力してください (既定のポートは 8787)。ローカルエージェントがそのセッションの Durable Object を読み取ります。同時に動作している他の `wrangler dev` セッションも表示されます。","doLimitsHint":"ローカル開発専用です。デプロイ済みの Durable Object は Worker からしかアクセスできず、Cloudflare は照会 API を提供していません。各オブジェクトは \\"<名前空間>/<オブジェクト>\\" というデータベースとして表示され、リクエストごとに自動コミットされるため手動トランザクションは使えません。","tls":"TLS","tlsEnable":"接続を暗号化","tlsVerify":"サーバー証明書を検証","tlsVerifyHint":"オフ: 自己署名証明書も受け入れます (暗号化はされますがサーバーは認証されません)。SSH トンネル経由では使えません。","d1DevUrl":"ローカル開発 URL","d1DevUrlHint":"空にすると Cloudflare アカウント経由で接続します。入力すると、このマシンで `wrangler dev` が動かしているデータベースを直接読みます — アカウントも API トークンも不要で、下のアカウント欄は無視されます。開発サーバーの D1 が 1 つだけなら Database ID は空のままで構いません。","d1PickDatabase":"データベースを選択","searchAuthHint":"ユーザーとパスワードで Basic 認証します。ユーザーを空にするとパスワードを API キー(エンコード済み id:key)として送信します。"},"agent":{"copy":"コピー","looking":"Planche エージェントを探しています…","online":"エージェント <b>v{{version}}</b> が <mono>{{url}}</mono> で実行中です","outdated":"エージェント v{{version}} はプロトコル {{protocol}} を使用していますが、このアプリにはより新しいものが必要です。<cmd/> で再起動してください","unauthorized":"エージェント <b>v{{version}}</b> が <mono>{{url}}</mono> で実行中ですが、このアプリとペアリングされていません(トークンは起動のたびに変わります)。エージェントのターミナルに表示されたリンクを開くか、「設定」でトークンを貼り付けてください。","offline":"<mono>{{url}}</mono> にエージェントがありません。ターミナルで起動してください — ペアリング済みの状態でこのアプリが開きます。","close":"閉じる","configure":"設定","checkAgain":"再確認","urlLabel":"エージェント URL","urlPlaceholder":"http://127.0.0.1:8888(デフォルト)","tokenLabel":"トークン","tokenPlaceholder":"エージェントが表示したもの","reset":"リセット","save":"保存","remoteWarning":"このエージェントはお使いのコンピューター上にありません ({{host}}): すべての接続のパスワードと SSH 鍵がそこへ送られます。","remoteRefusedTitle":"リモートエージェントは使用できません","remoteRefused":"エージェントはこのコンピューター (127.0.0.1 または localhost) 上で実行する必要があります。別のマシンのエージェントを使うには `ssh -L 8888:127.0.0.1:8888 user@host` でポートを転送し、URL は http://127.0.0.1:8888 のままにしてください。","gateway":"ゲートウェイ「{{name}}」: サーバー側プロファイル {{count}} 件。認証情報はゲートウェイにのみあります。下からプロファイルを選んでください。"},"tab":{"noConnections":"開いている接続はありません。「接続」を押して始めてください。","theSqliteFile":"SQLite ファイル","reopened":"{{file}} を再度開きました","reopenFailed":"ファイルを再度開けませんでした: {{message}}","reopenPrompt":"<b>{{file}}</b> を読み取るには、ブラウザの許可が再度必要です。","reopenFile":"ファイルを再度開く","closeConnection":"接続を閉じる","reconnected":"{{file}} に再接続しました","accessNotGranted":"ファイルへのアクセスが許可されませんでした。保存時はダウンロードとしてエクスポートします。","detachedPrompt":"<b>{{file}}</b> のキャッシュされたコピーで作業しています。変更をその場で保存するにはファイルを再接続してください。","reconnectFile":"ファイルを再接続","detachedHide":"非表示(保存時に必要に応じてファイルを求めます)","walFramesApplied_other":"{{file}}-wal から {{count}} 個の WAL フレームを適用しました","walNoChanges":"-wal ファイルにコミット済みの変更はありませんでした","walLoadFailed":"-wal ファイルを読み込めませんでした: {{message}}","walPrompt":"<b>{{file}}</b> は WAL モードです: <mono>{{file}}-wal</mono> ファイルを読み込むまで最新のデータが表示されない場合があり、それまで保存は無効です。隣にそのようなファイルがない場合(データベースが正常に閉じられた場合)は、代わりにその旨を確認してください。他のプログラムがまだこのデータベースを使用している場合は、代わりにローカルエージェント(<mono>npx planche</mono>)経由で開いてください: ブラウザはファイルを安全に共有できません。","loadWal":"-wal ファイルを読み込む","noWalHint":"確認済み: データベースの隣に -wal ファイルはありません","noWal":"-wal ファイルなし","dismiss":"閉じる","walHide":"非表示(保存は無効のまま)","readOnlyBadge":"読み取り専用"}}'),o={connect:`接続 (Alt+N)`,disconnect:`切断`,newQueryTab:`新しいクエリタブ (Alt+T)`,execute:`実行 (F9)`,executeStatement:`カーソル位置 / 選択範囲のステートメントを実行 (Ctrl+Enter)`,commit:`コミット`,commitHint:`開いているトランザクションをコミットします`,noOpenTransaction:`開いているトランザクションはありません`,rollback:`ロールバック`,rollbackHint:`開いているトランザクションを破棄します`,readOnlyBadge:`読み取り専用`,readOnlyHint:`この接続はデータやスキーマを変更するステートメントを拒否します`,userManager:`ユーザー管理 (Alt+U)`,quickCommand:`クイックコマンド`,processList:`プロセス一覧`,variables:`変数`,status:`ステータス`,flush:`フラッシュ`,fullscreen:`全画面表示`},s={readOnly:`読み取り専用`,txOpen:`トランザクション中`,manualTx:`手動トランザクション`},c={title:`クイックコマンド`,description:`実行するコマンドを検索...`,inputPlaceholder:`コマンドを入力または検索...`,empty:`コマンドが見つかりません。`,groups:{connection:`接続`,query:`クエリ`,database:`データベース`,table:`テーブル`,tools:`ツール`},commands:{connect:`接続`,disconnect:`切断`,executeQuery:`クエリを実行`,newQueryTab:`新しいクエリタブ`,createDatabase:`データベースを作成`,dropDatabase:`データベースを削除`,createTable:`テーブルを作成`,alterTable:`テーブルを変更`,dropTable:`テーブルを削除`,processList:`プロセス一覧`,serverVariables:`サーバー変数`,serverStatus:`サーバーステータス`,flush:`フラッシュ`,userManager:`ユーザー管理`}},l={title:`Planche へようこそ`,intro:`ブラウザで動作する SQL クライアントです。データベースにはお使いのマシン上の小さなエージェントを通じてアクセスするため、認証情報やデータがコンピューターの外に出ることはありません。`,skip:`スキップ`,skipTitle:`この画面を非表示にします(「ヘルプ > はじめに」で再表示できます)`,copy:`コピー`,copied:`コピーしました`,sampleOpenFailed:`サンプルデータベースを開けませんでした: {{message}}`,steps:{agent:{title:`ローカルエージェントを実行する`,body:`ターミナルで次のいずれかを実行します。エージェントが起動し、このページとペアリングされます。`},connection:{title:`接続を追加する`,body:`データベースを選ぶと、適切なデフォルト値で接続フォームが開きます。`},sample:{title:`手元にデータベースがない場合はサンプルをお試しください`,body:`サンプルのウェブショップデータベース(24 テーブル、約 5 万行、ビューとトリガー)をブラウザに読み込み、エディター、グリッド、スキーマツリーを試せます。`,loading:`サンプルを読み込み中…`,button:`サンプルデータベースを試す`}},terms:{title:`はじめる前に`,local:`すべてローカルで動作します。認証情報、クエリ、結果はお使いのコンピュータにのみ保存され、当方へ送信されることはありません。`,asIs:`Planche は現状有姿で提供され、いかなる保証もありません。安全機能(破壊的操作の確認、読み取り専用モード)は補助的なものであり、保証ではありません。`,dataLoss:`Planche を通じて実行されるすべての文の責任はユーザーにあります。破壊的な操作を行う前に必ずデータをバックアップしてください。`,agree:`利用規約を読み、同意します。`,accepted:`利用規約に同意済みです。`,readFull:`規約の全文を読む`}},u={treeLabel:`スキーマ`,unreachableHint:`この接続に紐付いたデータベースではありません。閲覧するにはそのデータベース用のプロファイルを作成してください`,objectType:{table:`テーブル`,view:`ビュー`,procedure:`プロシージャ`,function:`関数`,trigger:`トリガー`,event:`イベント`},menu:{showCreate:`{{type}}の CREATE 文を表示`,alter:`{{type}}を変更`,drop:`{{type}}を削除`,create:`{{type}}を作成`,refresh:`更新`,unreachable:`このデータベースを閲覧するには、これに紐付いたプロファイルで接続してください`,openDatabase:`データベースを開く`,createSchema:`スキーマを作成…`,createTable:`テーブルを作成`,dropDatabase:`データベースを削除`,openSchema:`スキーマを開く`,dropSchema:`スキーマを削除`,newQueryTab:`新しいクエリタブ`,generateSql:`SQL を生成`,openTable:`テーブルを開く`,alterTable:`テーブルを変更`,showCreateTable:`CREATE TABLE 文を表示`,duplicateStructure:`構造を複製`,copyTable:`別の場所へテーブルをコピー…`,compare:`{{type}}を比較…`,truncateTable:`テーブルを空にする`,dropTable:`テーブルを削除`,exportCsv:`CSV にエクスポート`,exportTsv:`TSV でエクスポート…`,openView:`ビューを開く`,alterView:`ビューを変更`,showCreateView:`CREATE VIEW 文を表示`,dropView:`ビューを削除`,compareData:`データを比較…`,groupBy:`グループ集計…`,copyKey:`キー名をコピー`,openKey:`開く`,copyName:`名前をコピー`},actions:{createStatementUnavailable:`-- {{type}} {{name}} の CREATE 文を取得できませんでした`,getCreateFailed:`CREATE {{type}} の取得に失敗しました: {{message}}`,createTabTitle:`{{type}}を作成`,createSchemaTabTitle:`スキーマを作成`,generateSqlFailed:`SQL を生成できませんでした: {{message}}`,dropTableTitle:`テーブル "{{name}}" を削除しますか?`,dropTableDescription:`{{from}}テーブルとそのすべての行が完全に削除されます。この操作は元に戻せません。`,dropTableConfirm:`テーブルを削除`,dropObjectTitle:`{{type}} "{{name}}" を削除しますか?`,dropObjectDescription:`{{from}}{{type}}の定義が削除されます。この操作は元に戻せません。`,dropObjectConfirm:`{{type}}を削除`,fromDatabase:`データベース "{{database}}" から`,dropped:`{{type}} {{name}} を削除しました`,dropFailed:`{{type}}の削除に失敗しました`,dropDatabaseTitle:`データベース "{{name}}" を削除しますか?`,dropDatabaseDescription:`データベースとそのすべてのテーブルおよびデータが完全に削除されます。この操作は元に戻せません。`,dropDatabaseConfirm:`データベースを削除`,droppedDatabase:`データベース {{name}} を削除しました`,dropDatabaseFailed:`データベースの削除に失敗しました`,dropSchemaTitle:`スキーマ "{{name}}" を削除しますか?`,dropSchemaDescription:`スキーマとそのすべてのテーブルおよびデータが完全に削除されます。この操作は元に戻せません。`,dropSchemaConfirm:`スキーマを削除`,droppedSchema:`スキーマ {{name}} を削除しました`,dropSchemaFailed:`スキーマの削除に失敗しました`,truncateTitle:`テーブル "{{name}}" を空にしますか?`,truncateDescription:`"{{name}}" のすべての行が削除されます。テーブル構造は保持されます。この操作は元に戻せません。`,truncateConfirm:`テーブルを空にする`,truncated:`{{name}} を空にしました`,truncateFailed:`テーブルを空にできませんでした`},tree:{loadDatabasesFailed:`データベースの読み込みに失敗しました: {{message}}`},root:{newQuery:`新しいクエリタブ`,newConsole:`新しいコンソールタブ`,createIndex:`インデックスを作成…`,clusterHealth:`クラスターの状態`,nodes:`ノード一覧`,shards:`シャード一覧`,templates:`インデックステンプレート`},topology:{cluster:`この Redis はクラスターのノードです。Planche はこのノードのキーのみ表示し、クラスターのリダイレクトにはまだ対応していません。`}},d={editor:{destructiveMarker:`破壊的操作: {{what}}`,readOnlyMarker:`接続は読み取り専用です。このステートメントはデータまたはスキーマを変更します`,actionExecute:`実行(設定に従う)`,actionExecuteStatement:`カーソル位置 / 選択範囲のステートメントを実行`,actionExecuteScript:`スクリプト全体を実行`,actionExplainPlan:`実行計画を表示`,actionQueryStructure:`クエリ構造`},tabs:{newQuery:`新しいクエリ`,queryTitle:`クエリ {{n}}`,erdViewer:`ERD ビューアー`,close:`閉じる`,closeOthers:`他のタブを閉じる`,closeLeft:`左側のタブを閉じる`,closeRight:`右側のタブを閉じる`,closeAll:`すべて閉じる`},executor:{noActiveConnection:`アクティブな接続がありません`,uncommittedTitle:`未コミットのトランザクション`,uncommittedDescription:`この接続には開いているトランザクションがあります。切断するとその変更はロールバックされます。`,uncommittedConfirm:`ロールバックして切断`,unsavedTitle:`未保存の変更`,unsavedDescription:`{{file}} にはファイルに保存されていない変更があります。切断するとそれらは破棄されます(保持するには先に「接続 > データベースファイルを保存」を使用してください)。`,theSqliteDatabase:`SQLite データベース`,unsavedConfirm:`破棄して切断`}},f=JSON.parse('{"tabs":{"message":"メッセージ","info":"情報","history":"履歴","result":"結果","resultN":"結果 {{n}}","plan":"実行計画","structure":"構造","structureN":"構造 {{n}}"},"message":{"executing":"クエリを実行中...","error":"エラー: {{message}}","total":"(合計: {{ms}}ms)","ready":"準備完了。","log":"実行ログ","statementN":"文 {{n}}","limitedBadge":"上限到達","insertId":"insert id {{id}}","failed":"失敗","failedStatement":"失敗した文","summary":"成功 {{ok}} · 失敗 {{failed}} · 合計 {{ms}}","copy":"コピー","copied":"コピー済み","showSql":"SQL を表示","hideSql":"SQL を隠す"},"hints":{"title":"ヒント","unknownColumn":"{{name}} という列はありません。{{suggestions}} ではありませんか?","unknownTable":"{{name}} というテーブルはありません。{{suggestions}} ではありませんか?","syntaxSwap":"{{engine}} では {{found}} ではなく {{expected}} を使います。","doubleQuotedLiteral":"{{engine}} は \\"{{value}}\\" を文字列ではなく列名として読みます。文字列は \'{{value}}\' と書きます。"},"ai":{"title":"AI による説明","explain":"AI に説明してもらう","thinking":"失敗を読んでいます…","by":"{{model}}","applyFix":"修正文を新しいタブで開く","failed":"説明できませんでした: {{message}}","noFailure":"説明する失敗した文がありません。","noPack":"planche.dev からプロンプトを取得できませんでした。","badShape":"モデルが想定した形式で応答しませんでした。","noPlan":"説明するプランがまだありません。","explainPlan":"このプランを説明してもらう"},"info":{"empty":"クエリ情報はありません。","resultN":"結果 {{n}}","metadata":"クエリのメタデータ","executionTime":"実行時間","notAvailable":"N/A","affectedRows":"影響を受けた行数","fields":"フィールド","fieldDetails":"フィールドの詳細","colName":"名前","colType":"型","colTable":"テーブル","resultSets":"結果セット","rowsReturned":"返された行","insertId":"最後の Insert ID","lastQuery":"最後に実行した文","copy":"コピー","copied":"コピー済み","colOrigin":"元の名前","primaryKey":"主キー","rowsAndFields":"{{rows}}行 × {{fields}}列","noFields":"この文は列を返しませんでした。"},"rowForm":{"colColumn":"列","colValue":"値","insertTitle":"行を追加","editTitle":"行を編集","loading":"列情報を読み込み中...","preview":"実行される文","nothingToWrite":"書き込む内容がありません","insert":"挿入","update":"更新","stageInsert":"保留行として追加","stageEdit":"グリッドに反映","stageHint":"実行せずにグリッドへ値を置き、後で他の編集と一緒にコミットします。","inserted":"{{table}} に行を挿入しました","updated":"{{table}} の行を更新しました","confirmInsertTitle":"{{table}} に行を挿入しますか?","confirmUpdateTitle":"{{table}} の行を更新しますか?","inTransaction":"開いているトランザクション内で実行されます","pickDate":"日付を選択","now":"現在時刻","formatJson":"整形","binaryUnsupported":"バイナリ列はここでは編集できません。NULL/DEFAULT のままにするか SQL で設定してください。","generateUuid":"UUID を生成","defaultValue":"デフォルト値","clickToChange":"クリックして変更","empty":"(空)","autoHint":"サーバーが自動生成","mode":{"keep":"維持","auto":"自動","value":"値"},"invalid":{"integer":"整数を入力してください","unsigned":"この列は負の数を受け付けません","number":"数値を入力してください","json":"不正な JSON","date":"YYYY-MM-DD 形式で入力してください","datetime":"YYYY-MM-DD HH:MM:SS 形式で入力してください","time":"HH:MM:SS 形式で入力してください","length":"最大 {{max}} 文字"}},"history":{"copied":"クリップボードにコピーしました","searchPlaceholder":"履歴を検索...","all":"すべて","success":"成功","failed":"失敗","thisTab":"このタブのみ","noMatch":"一致する項目がありません。","count":"{{count}}件","clear":"消去","clearTitle":"クエリ履歴を消去しますか?","clearDescription":"この接続の {{count}} 件がすべて削除されます。元に戻せません。","clearConfirm":"履歴を消去","insert":"エディターに挿入","inserted":"エディターに挿入しました","copy":"コピー","rows":"{{count}}行","affected":"{{count}}行変更","today":"今日","yesterday":"昨日","empty":"クエリ履歴はありません。"},"json":{"arrayLength":"Array[{{count}}]","keys_other":"{{count}} 個のキー","invalid":"無効な JSON","clickToView":"クリックして JSON を表示","expandAll":"すべて展開","collapseAll":"すべて折りたたむ","edit":"編集","view":"表示","copied":"コピーしました","copy":"コピー","shortcutHint":"{{mod}}+Enter で保存 · Esc でキャンセル","cancel":"キャンセル","save":"保存"},"text":{"clickToView":"クリックしてテキストを表示","size":"{{chars}}文字 · {{lines}}行","wrap":"折り返し","preview":"プレビュー","source":"ソース"},"grid":{"readOnlyConnection":"読み取り専用の接続","readOnlyWal":"読み取り専用: -wal ファイルが読み込まれていません","readOnlyNoPk":"読み取り専用: テーブルに主キーがありません","commitTitle":"{{count}} 件の変更を {{table}} にコミットしますか?","commitDescription":"次のステートメントが実行されます。","commitConfirm":"コミット","rowPrefix":"行 {{row}}:","cancelled":"キャンセルされました","commitFailed":"コミットに失敗しました: {{message}}","executedInTransaction":"開いているトランザクション内で {{count}} 件の変更を実行しました — 確定するにはツールバーの「コミット」を押してください(再読み込みするとロールバックされます)","committed":"{{count}} 件の変更を {{table}} にコミットしました","noData":"表示するデータがありません。","commit":"コミット","discard":"破棄","addRow":"行を追加","removeNewRow":"この新しい行を取り消す","addRowForm":"フォームで追加","addRowFormHint":"列ごとの入力欄を持つフォームを開きます (INSERT としてコミット)","editRowForm":"この行をフォームで編集","addRowHint":"新しい行を追加します(INSERT としてコミット)","delete":"削除","deleteCount":"削除 ({{count}})","deleteHint":"選択した行を削除します(DELETE としてコミット)。行番号の列で行を選択してください。","field":"フィールド","searchPlaceholder":"検索...","orderBy":"並び順","none":"なし","refresh":"更新","dismiss":"閉じる","clearSelection":"選択を解除","columns":"列","showAllColumns":"すべて表示","hideAllColumns":"すべて非表示","resetWidths":"幅をリセット","selectAll":"すべての行を選択","emptyTable":"このテーブルには行がありません。","noRows":"行は返されませんでした。","addARow":"行を追加","markedForDeletion":"削除予定 — クリックで元に戻す","newRow":"新しい行","clickToSelect":"クリックで選択、Shift/Ctrl で複数選択","rows":"行数: {{count}}","rowsWithNew":"行数: {{count}} (+{{added}})","sortedBy":"並び順: {{column}} {{direction}}","pageRange":"{{from}}–{{to}} 行","firstPage":"最初のページ","prevPage":"前のページ","nextPage":"次のページ","lastPage":"最後のページ","pagingBlocked":"ページを移動する前に変更をコミットまたは破棄してください","selected":"{{count}} 件選択中","cellsModified":"{{count}} 個のセルを変更","newCount":"{{count}} 件追加","toDelete":"{{count}} 件削除予定","searchMode":"一致方法","contains":"含む","equals":"一致","followLink":"{{table}} を {{column}} = 値 で開く","linkColumn":"「{{column}}」を別のテーブルにリンク…","editLink":"「{{column}}」のリンクを編集…","removeLink":"リンクを削除","copyValue":"値をコピー","filterByValue":"フィルタ: {{column}} = この値","clearFilter":"フィルタを解除","copyColumnName":"列名をコピー","editCell":"セルを編集","setNull":"NULL に設定","setEmpty":"空文字列に設定","restoreRow":"行を復元","hideColumn":"列「{{column}}」を隠す","copyRowsTsv_other":"{{count}} 行を TSV としてコピー(ヘッダー付き)","copyRowsCsv_other":"{{count}} 行を CSV としてコピー","copyRowsJson_other":"{{count}} 行を JSON としてコピー","copyRowsInsert_other":"{{count}} 行を INSERT 文としてコピー","deleteRowsPending_other":"{{count}} 行を削除(コミットまで保留)","sendRowsToScratchpad_other":"{{count}} 行をスクラッチパッドへ送る","sendAllToScratchpad":"読み込み済みの {{count}} 行すべてをスクラッチパッドへ送る","sentToScratchpad":"{{count}} 行をスクラッチパッドのテーブル {{table}} にコピーしました。","changesSince":"前回の読み込み以降: 変更 {{changed}} · 新規 {{added}} · 消失 {{gone}}","changesToggle":"前回の読み込みからの変更のハイライトを切り替え","changesDismiss":"変更表示を消す","previousValue":"以前の値: {{value}}","groupByValue":"{{column}} でグループ集計","openItem":"{{name}} を開く"},"link":{"title":"列を別のテーブルにリンク","source":"列","hint":"この列の値がリンクになります。クリックすると対象テーブルが一致する行で絞り込まれて開きます。実際の外部キーは自動でリンクされます。","targetDatabase":"対象データベース","targetTable":"対象テーブル","targetColumn":"対象列","pickTable":"テーブルを選択","pickColumn":"列を選択","remove":"リンクを削除","cancel":"キャンセル","save":"リンクを保存","targetConnection":"対象の接続","targetNotConnected":"リンク先の接続が開いていません。先に接続してください。"},"running":{"label":"クエリ実行中…","elapsed":"{{seconds}}秒","stop":"中断","stopping":"中断中…","cannotCancel":"このエンジンは実行中の文を中断できません。","agentOutdated":"ローカルエージェントが古いためクエリを中断できません。`npx planche@latest`(または `planche upgrade`)で更新して再接続してください。","cancelFailed":"エージェントに接続できず、クエリを中断できませんでした。","abandoned":"リクエストの待機を中止しました。このエンジンには取り消し機能がないため、クエリはサーバー側で最後まで実行される場合があります。"},"plan":{"empty":"実行計画を表示 (Ctrl+Shift+E) を実行すると、カーソル位置の文をエンジンがどう処理するかを確認できます。","unreadable":"計画をツリーとして読み取れなかったため、エンジンの出力をそのまま表示します。","estimated":"推定値","analyzed":"実測値","estimatedHint":"オプティマイザの推定値です。文は実行されていません。","analyzedHint":"文を実際に実行しました。行数と時間は実測値です。","totalCost":"最大ノードコスト","totalTime":"最も遅いノード","rows":"推定行数","actualRows":"実際の行数","cost":"コスト","time":"時間","showRaw":"生の出力","showTree":"計画ツリー","selectNode":"ノードを選択すると、エンジンが報告した内容を確認できます。","noDetails":"このノードについて、エンジンからの追加情報はありません。","warnings":{"fullScan":"フルスキャン","noIndex":"インデックスなし","estimateOff":"推定のずれ","temporary":"一時テーブル","filesort":"ソート"},"hints":{"fullScan":"テーブルの全行を読みます。絞り込み列にインデックスがあれば回避できます。","noIndex":"このアクセスに使えるインデックスが見つかりませんでした。","estimateOff":"推定行数が大きく外れています。テーブル統計を更新すると改善することが多いです。","temporary":"次の処理に進む前に、行を一時テーブルに書き出します。","filesort":"インデックスを使わずに並べ替えています。ORDER BY に合うインデックスがあれば不要になります。"}},"structure":{"empty":"クエリ構造を表示 (Ctrl+Shift+G) すると、カーソル位置の文の行がどこから来るか分かります。","notQuery":"SELECT 文のみ構造グラフを描画できます。","unsupported":"{{engine}} の文は構造グラフとして読み取れません。","parseError":"文を解析できませんでした: {{message}}","columns_other":"{{count}} 列","columnsUnknown":"列数不明","fit":"全体に合わせる","reveal":"エディタでこの部分を選択","notDrawn":"未描画: {{what}}","kindTable":"テーブル","kindCte":"CTE","kindCteRef":"参照","kindDerived":"サブクエリ","kindScalar":"スカラー","kindSetop":"集合","kindResult":"結果","fullscreen":"全画面","exitFullscreen":"全画面を終了"},"viewer":{"fullscreen":"全画面","exitFullscreen":"全画面を終了","textTitle":"テキスト値"},"reply":{"table":"表"}}'),p={defaultDescription:`この操作は元に戻せません。`,typeToConfirm:`確認のため <name/> を入力してください`,cancel:`キャンセル`,confirm:`確認`,ok:`OK`},m={dialog:{createTitle:`テーブルを作成`,alterTitle:`テーブルを変更`,duplicateTitle:`テーブル構造を複製`,create:`作成`,alter:`変更`,cancel:`キャンセル`,tableName:`テーブル名`,tableNamePlaceholder:`テーブル名を入力...`,loading:`テーブルスキーマを読み込み中...`,tabSchema:`スキーマ`,tabIndexes:`インデックス`,tabProperties:`プロパティ`,applying:`適用中…`,cannotAlterColumns:`{{engine}} は既存の列の定義を変更できません({{columns}})。列の追加・削除・名前変更とインデックスの変更は可能です。列の定義を変えるにはテーブルを作り直してください。`},schema:{colField:`フィールド名`,colType:`データ型`,colLength:`長さ`,colDefault:`デフォルト`,colPk:`PK`,colNotNull:`Not Null`,colUnsigned:`Unsigned`,colAutoIncrement:`Auto Incr`,colZerofill:`Zerofill`,colComment:`コメント`,empty:`カラムが定義されていません。「カラムを追加」をクリックして追加してください。`,add:`カラムを追加`,remove:`カラムを削除`},indexes:{colName:`インデックス名`,colType:`インデックスの種類`,colColumns:`カラム`,empty:`インデックスが定義されていません。「インデックスを追加」をクリックして追加してください。`,add:`インデックスを追加`,remove:`インデックスを削除`},index:{addTitle:`インデックスを追加`,editTitle:`インデックスを編集`,name:`インデックス名`,namePlaceholder:`インデックス名を入力`,type:`インデックスの種類`,columns:`カラム`,noColumns:`使用できるカラムがありません。先に「スキーマ」タブでカラムを定義してください。`,unnamed:`(名前なし)`,cancel:`キャンセル`,ok:`OK`},properties:{engine:`エンジン`,charset:`文字セット`,collation:`照合順序`,autoIncrement:`Auto Increment`,autoIncrementPlaceholder:`デフォルト`,comment:`コメント`},info:{engine:`エンジン`,version:`バージョン`,rowFormat:`行フォーマット`,rows:`行数`,avgRowLength:`平均行長`,dataLength:`データサイズ`,createTime:`作成日時`,updateTime:`更新日時`,collation:`照合順序`,comment:`コメント`},copy:{title:`テーブルをコピー`,source:`コピー元`,targetConnection:`コピー先の接続`,targetDatabase:`コピー先データベース`,targetTable:`コピー先テーブル名`,what:`コピー内容`,structureAndData:`構造とデータ`,structureOnly:`構造のみ`,ifExists:`コピー先にテーブルがある場合`,abort:`中止(既定)`,dropAndRecreate:`削除して再作成(名前の再入力で確認)`,preview:`コピー先で実行する CREATE TABLE(編集可)`,crossEngineHint:`コピー先は {{engine}} です。下の型を確認してください。MySQL 固有の属性は除外されました。`,readOnly:`読み取り専用`,loading:`読み込み中…`,progressCreate:`テーブルを作成中…`,progressCount:`行数を確認中…`,progressRows:`{{total}} 行中 {{copied}} 行をコピー済み`,progressDone:`完了`,doneTitle:`テーブルをコピーしました`,doneRows:`{{table}} に {{count}} 行をコピーしました。`,doneStructure:`{{table}} の構造を作成しました。`,noColumns:`コピー元テーブルに列がありません。`,exists:`コピー先に {{table}} が既に存在します。別の名前にするか「削除して再作成」を選んでください。`,dropTitle:`既存のテーブル {{table}} を削除しますか?`,dropDescription:`コピーの前にコピー先テーブルとすべての行が削除されます。元に戻せません。`,dropConfirm:`削除してコピー`,cancelled:`コピーを中止しました。`,stop:`停止`,cancel:`キャンセル`,copy:`コピー`}},h={copy:{title:`データベースをコピー`,source:`コピー元データベース`,target:`コピー先データベース名`,targetPlaceholder:`コピー先のデータベース名を入力`,options:`オプション`,structureAndData:`構造とデータ`,structureOnly:`構造のみ`,cancel:`キャンセル`,copy:`コピー`,creating:`{{database}} を作成中…`,copying:`{{table}} をコピー中 ({{index}}/{{total}})…`},diff:{title:`スキーマを比較`,source:`比較元`,target:`比較先`,pickConnection:`接続`,pickDatabase:`データベース`,crossEngineHint:`エンジンが異なります。型名は方言ごとに違うため、多くの列が型の変更として表示されます。`,sameSide:`比較元と比較先が同じデータベースです。`,summary:`変更 {{changed}}、比較先にない {{missingTarget}}、比較先のみ {{missingSource}}、同一 {{identical}}`,showIdentical:`同一のテーブルを表示`,identicalAll:`テーブルは同一です。`,column:`列`,index:`インデックス`,object:`オブジェクト`,selectTable:`差分を見るテーブルを選択してください。`,missingInTarget:`{{table}} は比較先にありません。スクリプトが作成します。`,missingInSource:`{{table}} は比較先にのみあります。スクリプトが削除します(DROP を含めない限りコメントアウト)。`,includeDrops:`DROP 文を実行可能な SQL として含める(既定: コメントアウト)`,tabTitle:`同期 {{database}}`,close:`閉じる`,compare:`比較`,comparing:`比較中…`,openScript:`スクリプトをエディタで開く`,noDefinition:`CREATE 文を取得できません`},create:{title:`データベースを作成`,name:`データベース名`,namePlaceholder:`データベース名を入力`,charset:`文字セット`,collation:`照合順序`,cancel:`キャンセル`,create:`作成`},csv:{title:`{{format}} でダウンロード`,target:`対象`,targetQueryResult:`現在のクエリ結果`,targetTableData:`テーブルデータ`,tableName:`テーブル名`,tableNamePlaceholder:`テーブル名を入力`,delimiter:`区切り文字`,delimiterComma:`カンマ (,)`,delimiterTab:`タブ (\\t)`,delimiterSemicolon:`セミコロン (;)`,delimiterPipe:`パイプ (|)`,includeHeaders:`ヘッダーを含める`,cancel:`キャンセル`,download:`ダウンロード`,downloading:`ダウンロード中...`,progress:`{{total}} 行中 {{loaded}} 行を書き込み`,progressUnknown:`{{loaded}} 行を書き込み`,stop:`停止`,done:`{{table}} の {{count}} 行を {{format}} にエクスポートしました。`,database:`データベース`,databasePlaceholder:`データベースを選択`},html:{title:`スキーマを HTML に出力`,database:`データベース`,selectDatabase:`データベースを選択`,tables:`含めるテーブル`,selectAll:`すべて選択`,deselectAll:`すべて解除`,noTables:`使用できるテーブルがありません。`,include:`含める項目`,includeColumns:`カラム`,includeIndexes:`インデックス`,includeProperties:`プロパティ`,cancel:`キャンセル`,generate:`生成`,generating:`生成中...`,sectionColumns:`カラム`,sectionIndexes:`インデックス`,sectionProperties:`プロパティ`,docTitle:`スキーマ: {{database}}`,heading:`データベース: {{database}}`,summary:`テーブル数: {{count}} | 生成日時: {{date}}`,footer:`Planche 2026 により生成`},dataDiff:{title:`データを比較`,pickTable:`テーブル`,hint:`比較元テーブルの主キーで行を対応付け、値をテキストとして比較します。片側あたり最大 {{cap}} 行を読み込むので、大きなテーブルは先にフィルタで絞ってください。`,sameSide:`比較元と比較先が同じテーブルです。`,noPrimaryKey:`{{table}} に主キーがないため、行を対応付けできません。`,keyMissingInTarget:`比較先テーブルにキー列がありません: {{columns}}`,summary:`キー: {{key}} — 比較先にない {{added}}、相違 {{changed}}、比較先のみ {{removed}}、同一 {{identical}}`,capped:`両側とも先頭 {{cap}} 行のみ比較しました。`,ignoredColumns:`比較から除外した列(片側のみ): {{columns}}`,added_other:`比較先にない {{count}}`,changed_other:`相違 {{count}}`,removed_other:`比較先のみ {{count}}`,none:`このグループには何もありません。`,more:`… 他 {{count}} 件`,includeDeletes:`DELETE 文を実行可能な SQL として含める(既定: コメントアウト)`,tabTitle:`データ同期 {{table}}`,loading:`行を読み込み中 — 比較元: {{source}}、比較先: {{target}}`},schema:{createTitle:`スキーマを作成`,name:`スキーマ名`,namePlaceholder:`スキーマ名を入力`,create:`作成`,cancel:`キャンセル`},groupBy:{title:`グループ集計`,description:`{{table}} の行を選択した列でまとめて数えます。`,columns:`グループ化する列`,aggregate:`追加の集計`,countOnly:`件数のみ`,column:`列`,minCount:`グループごとの最小行数`,useFilter:`グリッドの現在のフィルタを適用`,noIndexWarning:`選択した列にインデックスの先頭列がないため、テーブル全体を読み込んで並べ替えます。大きなテーブルでは時間がかかることがあります。`,preview:`クエリ`,pickColumn:`グループ化する列を 1 つ以上選択してください。`,openInTab:`新しいタブで開く`,run:`実行`,tabTitle:`{{table}} のグループ集計`,indexed:`インデックスの先頭列`,connection:`接続`,database:`データベース`,table:`テーブル`}},g={manager:{title:`ユーザー管理`,addUser:`ユーザーを追加`,removeUser:`ユーザーを削除`,noUsers:`ユーザーが読み込まれていません`,grantScope:`権限の範囲`,apply:`適用`,close:`閉じる`,removed:`ユーザー '{{user}}'@'{{host}}' を削除しました`,selectUserFirst:`先にユーザーを選択してください`,applied:`変更を適用しました`,noChanges:`適用する権限の変更はありません。`},add:{title:`ユーザーを追加`,username:`ユーザー名`,usernamePlaceholder:`ユーザー名を入力`,host:`ホスト`,password:`パスワード`,passwordPlaceholder:`パスワードを入力`,confirmPassword:`パスワードの確認`,confirmPasswordPlaceholder:`パスワードを再入力`,plugin:`プラグイン`,cancel:`キャンセル`,add:`追加`,usernameRequired:`ユーザー名は必須です`,passwordMismatch:`パスワードが一致しません`,added:`ユーザー '{{user}}'@'{{host}}' を追加しました`},privileges:{globalTitle:`グローバル権限`,databaseTitle:`データベース権限`,tableTitle:`テーブル権限`,checkAll:`すべてチェック`,uncheckAll:`すべて解除`,categoryData:`データ`,categoryStructure:`構造`,categoryAdministration:`管理`},grantTree:{globalPrivileges:`グローバル権限`}},_={close:`閉じる`,noActiveConnection:`アクティブな接続がありません`,variableName:`変数名`,value:`値`,scope:{session:`セッション`,global:`グローバル`},findReplace:{findPlaceholder:`検索`,replacePlaceholder:`置換`,found:`{{count}} 件見つかりました`,noResults:`結果なし`,previous:`前へ`,next:`次へ`,close:`閉じる`,replace:`置換`,all:`すべて`,caseSensitive:`大文字と小文字を区別`,regex:`正規表現`,wholeWord:`単語単位`},flush:{title:`フラッシュ`,executed:`実行しました: {{command}}`,executeError:`{{command}} の実行中にエラーが発生しました: {{message}}`},localHistory:{title:`ローカル履歴`,description:`この接続のエディタ内容のバージョンです。実行時、入力が止まったとき、タブを閉じたときに保存されます。`,empty:`保存されたバージョンはまだありません。`,noMatch:`検索に一致するバージョンがありません。`,notPersisted:`設定 > 安全 の「再読み込み後もクエリ履歴を保持」がオフのため、バージョンはこのセッション中のみ保持されます。`,searchPlaceholder:`バージョンを検索`,scopeTab:`このタブ`,scopeAll:`すべてのタブ`,compareCurrent:`現在と比較`,comparePrevious:`直前と比較`,diffAgainstCurrent:`現在のエディタ内容と比較`,diffAgainstPrevious:`{{time}} のバージョンと比較`,noPrevious:`比較できる以前のバージョンがありません`,restored:`ローカル履歴からエディタの内容を復元しました`,restore:`このバージョンを復元`,openInNewTab:`新しいタブで開く`,openedInTab:`新しいタブでバージョンを開きました`,delete:`このバージョンを削除`,clearAll:`履歴を消去`,chars:`{{count}}文字`,reason:{execute:`実行前`,edit:`編集中`,replaced:`上書き前`,restore:`復元前`,close:`閉じる前`}},processList:{title:`プロセス一覧`,refresh:`更新`,autoRefresh:`自動更新`,empty:`表示するプロセスがありません`,kill:`強制終了`,killProcess:`プロセスを強制終了`,selectToKill:`強制終了するプロセスを選択してください`,killed:`プロセス {{id}} を強制終了しました`,killError:`プロセスの強制終了中にエラーが発生しました: {{message}}`,loadError:`プロセス一覧の読み込み中にエラーが発生しました: {{message}}`,updatedAt:`{{time}} 更新`,filterPlaceholder:`ユーザー、ホスト、DB、SQL で絞り込み...`,hideIdle:`アイドルを隠す`,noMatch:`条件に一致するプロセスがありません`,self:`自分`,selfHint:`Planche 自身のセッションです`,statementOf:`#{{id}} の実行文`,noStatement:`実行中の文なし`,copy:`コピー`,copied:`コピー済み`,killConfirmTitle:`プロセス {{id}} を終了しますか?`,killConfirmDescription:`{{user}}@{{host}} のセッションが切断され、実行中の文は中断されます。開いているトランザクションはロールバックされます。`,stats:{total:`合計`,active:`アクティブ`,idle:`アイドル`,longest:`最長実行`},columns:{id:`Id`,user:`ユーザー`,host:`ホスト`,db:`db`,command:`コマンド`,time:`時間`,state:`状態`,info:`情報`,action:`操作`}},status:{title:`サーバーステータス`,filterPlaceholder:`ステータス変数を絞り込み...`,empty:`表示するステータス変数がありません`,loadError:`ステータスの読み込み中にエラーが発生しました: {{message}}`},variables:{title:`サーバー変数`,filterPlaceholder:`変数を絞り込み...`,empty:`表示する変数がありません`,loadError:`変数の読み込み中にエラーが発生しました: {{message}}`}},v={empty:{title:`Prisma スキーマファイル (.prisma) を開いて ERD を表示`,description:`モデル、enum、リレーションが自動的に解析されます`,openFile:`.prisma ファイルを開く`,dropHint:`またはこの領域にファイルをドラッグ&ドロップ`},entity:{enumBadge:`ENUM`,modelBadge:`MODEL`,columns:{value:`値`,comment:`コメント`,type:`型`,column:`カラム`},linkBadge:`リンク`,externalTitle:`{{location}} 上のリンク先テーブル(実際の外部キーではなく列リンク)`,nullable:`NULL を許可する列`},toolbar:{refresh:`更新`,zoomIn:`拡大`,zoomOut:`縮小`,resetView:`表示をリセット`,center:`中央に配置`,fitAll:`全体を表示`,spreadAll:`重なりを解消`,resetLayout:`レイアウトをリセット`,legendOneToMany:`1:N (FK)`,tables:`テーブル:`,relations:`リレーション:`,columns:`カラム:`,fullscreen:`全画面`,exitFullscreen:`全画面を終了`},viewer:{noServerConnection:`アクティブなサーバー接続がありません`,loading:`{{database}} からスキーマを読み込み中...`,loadFailed:`ERD の読み込みに失敗しました`,noDatabase:`データベースが選択されていません。`,selectDatabaseHint:`スキーマツリーでデータベースを選択してから、「ERD を表示」を開いてください。`}},y={runAnyway:`それでも実行`,query:{rowsReturned:`{{count}} 行を返しました`,rowsAffected:`{{count}} 行が影響を受けました`,rowsReturnedLimited:`{{count}} 行を返しました({{limit}} 行に制限。さらに取得するには LIMIT を追加してください)`,notConnected:`接続されていません`,fileNotOpen:`SQLite ファイルがまだ開かれていません — 上の「ファイルを再度開く」をクリックしてアクセスを再度許可してください。`,failed:`クエリが失敗しました`,nothingToExecute:`実行するものがありません`,dryRunMismatch:`ドライランは {{predicted}} 行を見込みましたが、実際に変更されたのは {{actual}} 行です。プレビュー後にデータが変わった可能性があり、そうでなければプレビューがこの文と一致していません。`},destructive:{title_other:`{{count}} 件の破壊的なステートメントを実行しますか?`,description:`次の操作はデータを完全に変更または削除します。この操作は元に戻せません。`,unknownTarget:`(不明)`,deleteAll:`{{target}} のすべての行を DELETE`,updateAll:`{{target}} のすべての行を UPDATE`,alterDrop:`{{target}} に対する DROP COLUMN/PARTITION`},readOnly:{refused:`接続 "{{label}}" は読み取り専用です。{{count}} 件のステートメントがデータまたはスキーマを変更しようとしました。`,title:`"{{label}}" は読み取り専用です`,description:`これらのステートメントはデータまたはスキーマを変更します。それでもこの接続で実行しますか?`},transaction:{startFailed:`トランザクションを開始できませんでした`,started:`トランザクションを開始しました — 終了時にコミットまたはロールバックしてください`,implicitCommit:`{{kind}} により、開いていたトランザクションが暗黙的に COMMIT されました`,committed:`トランザクションをコミットしました`,rolledBack:`トランザクションをロールバックしました`,commandFailed:`{{name}} に失敗しました`,commandFailedWith:`{{name}} に失敗しました: {{message}}`},save:{notBrowserSqlite:`ブラウザ SQLite 接続ではありません。`,inMemory:`インメモリデータベース: ダウンロードとしてのみエクスポートできます。`,noFileSystemAccess:`このブラウザには File System Access API がありません(Chrome/Edge のみ対応): データベースはその場に書き込む代わりにダウンロードとしてエクスポートされます。`,noWritableHandle:`ファイルは書き込み可能なハンドルなしで開かれました: ダウンロードとしてエクスポートされます。`},agent:{devProxyUrl:`{{url}}(開発用プロキシ経由)`,notPlanche:`応答はありましたが、Planche エージェントではありません`,unreachable:"{{url}} の Planche エージェントに到達できません — `npx planche` を実行してください({{message}})",httpError:`HTTP エラー: {{status}} {{statusText}}`,emptyResponse:`トンネリングサーバーが空の応答を返しました`,reconnected:`{{name}} に再接続しました — エージェントが接続を破棄していました (再起動またはアイドルタイムアウト)。`,driverUnsupported:`このエージェントはまだ {{driver}} 接続を開けません。npx planche@latest を実行するか、スタンドアロン版なら planche upgrade で更新してください。`},sample:{profileName:`サンプルショップ(ブラウザ内)`,downloadFailed:`サンプルデータベースをダウンロードできませんでした({{status}})`,tabTitle:`クエリ 1`},sqliteFile:{tooSmall:`ファイルが小さすぎるため SQLite データベースではありません。`,notSqlite:`SQLite データベースではありません(または SQLCipher などで暗号化されています)。16 バイトのヘッダーが "SQLite format 3" ではありません。`,badPageSize:`SQLite ヘッダーが破損しています: 無効なページサイズ {{size}}。`,unreadable:`SQLite がファイルを読み取れませんでした: {{message}}`,pickerDescription:`SQLite データベース`,walNotLoaded:`このデータベースは WAL モードですが、-wal ファイルが読み込まれていません。保存する前に読み込むか、バナーで -wal ファイルが存在しないことを確認してください。`,changedOnDisk:`{{name}} は読み込み後にディスク上で変更されました(他のプログラムが書き込みました)。保存するとその変更が上書きされます — ファイルを再度開いて編集をやり直すか、トンネリングサーバーを使用してください。`,walHasChanges:`{{name}}-wal に新しい変更があります。保存する前に読み込んでください。`,walChangedOnDisk:`{{name}}-wal は読み込み後に他のプログラムによって書き込まれました。保存する前にファイルを再度開いてください。`,writeDenied:`{{name}} への書き込みアクセスが許可されませんでした。ブラウザのプロンプトで許可するか、代わりにダウンロードとしてエクスポートしてください。`},environment:{none:`なし`,green:`緑(開発)`,blue:`青`,yellow:`黄(ステージング)`,orange:`オレンジ`,red:`赤(本番)`,purple:`紫`},scratchpad:{profileName:`スクラッチパッド`,namePromptTitle:`スクラッチパッドのテーブル名`,namePromptDescription:`スクラッチパッドに {{table}} という名前のテーブルが既にあります。別の名前を入力してください。`,nameTaken:`テーブル {{table}} は既に存在します。`},federated:{pulling:`{{connection}} から {{table}} を取得中…`,capped:`{{table}}: 先頭 {{limit}} 行のみ取得しました。`,templateLine1:`開いている接続のテーブルを "接続名".database.table として参照します。文の実行前にこのスクラッチパッドへコピーされます。`,templateLine2:`テーブルごとに最大 {{limit}} 行。クエリ自体はブラウザ内の SQLite で実行されます。`,templateConnections:`開いている接続: {{names}}`,templateNone:`まだ他の接続が開いていません。接続してからここで参照してください。`,done:`リモートテーブル {{tables}} 個から {{rows}} 行をスクラッチパッドへ取得しました。`,pullingProgress:`{{connection}} から {{table}} を取得中: {{loaded}} / {{total}} 行…`},paged:{noColumns:`{{table}} に列がありません。`,cancelled:`キャンセルしました。`},console:{unreadable:`{{line}}行目: {{message}}`}},b={title:`利用規約`,version:`バージョン {{version}}`,englishOnly:`規約の全文は英語で提供されます。ようこそ画面の要約はお使いの言語で表示されます。`,privacyLink:`プライバシーポリシー`,refundLink:`返金ポリシー`,online:`planche.dev で読む`,updated:`最終更新 {{date}}`},x={title:`{{kind}} は {{count}} 行に影響します`,titleUnknown:`{{kind}} — 影響行数は不明`,description:`この文が今触れる行を SELECT で先に読んだものです。まだ何も書き込んでいません。`,previewFailed:`プレビュークエリが失敗しました: {{error}}
2
+ それでも文を実行できます。`,noRows:`一致する行がありません — この文は何も変更しません。`,truncated:`{{count}} 行のうち先頭 {{shown}} 行を表示しています。`,previewQuery:`プレビュークエリ`,run:`{{kind}} を実行({{count}} 行)`,runAnyway:`それでも実行`},S={badge:`PRO`,tooltip:`Pro ライセンスが必要です。`,noticeTitle:`Pro 機能`,notice:`PRO と表示された機能には Pro ライセンスが必要です。`,licenseTitle:`Planche Pro`,licenseDescription:`購入メールに記載されたライセンスキーを貼り付けてください。このコンピュータ上で確認し、どこにも送信しません。`,blocked:`{{feature}}には Pro ライセンスが必要です。`,keyLabel:`ライセンスキー`,activate:`有効化`,remove:`ライセンスを削除`,active:`Pro が有効です。`,licensedTo:`{{email}} 様のライセンス`,validUntil:`{{date}} まで有効`,expiredOn:`{{date}} に期限が切れました。Pro 機能を使い続けるには更新してください。`,invalidKey:`Planche のライセンスキーではありません。`,notConfigured:`このビルドはライセンスキーを確認できません。ご連絡ください。`,noWebcrypto:`このブラウザではライセンスキーを確認できません。`,pricing:`料金を見る`,features:{ssh_tunnel:`SSH トンネル`,compare_schemas:`スキーマ比較`,compare_data:`データ比較`,copy_table:`テーブルコピー`,dry_run:`ドライラン`,federated:`フェデレーテッドクエリ`,scratchpad:`スクラッチパッド`,column_link:`カラムリンク`,sync:`接続の同期`,ai_explain:`AI による説明`},included:`Pro に含まれる機能`,haveKey:`すでにライセンスキーをお持ちですか?`,perMonth:`/ 月`,priceNote:`年に 1 回 {{annual}} を請求。月払いは {{monthly}} です。`,featureDetails:{sync:`ブラウザで暗号化したプロファイルを、どのコンピュータでも`,ssh_tunnel:`踏み台の先のデータベースにパスワード・鍵・ssh-agent で接続`,compare_schemas:`開いている 2 つの接続を比較して ALTER スクリプトを取得`,compare_data:`2 つのテーブルの行を比較して INSERT・UPDATE スクリプトを取得`,copy_table:`別の接続へ、別のエンジンへテーブルを作り直す`,dry_run:`UPDATE・DELETE が何行をどう変えるのか実行前に確認`,federated:`異なる接続にあるテーブルを結合`,scratchpad:`作業データ用のローカル SQLite データベース`,column_link:`グリッドでたどれる仮想外部キー`,ai_explain:`失敗した文や遅いプランの理由をモデルに尋ねる — スキーマを添えて`}},C={npxNote:`Node.js 22 以上が必要です。恒久的にインストールされるものはなく、npx が npm レジストリから直接実行します。`,installNote:`Node.js は不要です。管理者権限なしでホームディレクトリの中だけにインストールされ、以後は planche コマンドでいつでも起動できます。`},w={unsupported:`{{engine}} は実行計画を提供しません。`,oneStatement:`実行計画は一度に 1 文だけ解析します。対象の文にカーソルを置くか選択してください。`},T={title:`AI アシスタント`,intro:`クエリを頼んだり、やることを指示してください — スキーマを読み、タブに SQL を書いて実行します。動くのは開いている接続だけで、会話は接続ごとに分かれています。`,privacy:`ツールが読んだ内容は、サンプル行を含めて利用中の provider に送信されます。planche.dev には何も送られません。`,placeholder:`例: デモ DB で月次売上のクエリを作って`,send:`送信`,stop:`停止`,clear:`新しい会話`,working:`実行中…`,tabTitle:`AI クエリ`,approvalTitle:`書き込みを伴います。実行しますか?`,approve:`実行`,reject:`スキップ`,rejected:`ユーザーが実行を拒否しました。`,notConfigured:`エージェントに AI キーがありません。設定 ▸ AI で追加してください。`,needsAgent:`このローカルエージェントはまだツールを実行できません。更新して再度ペアリングしてください。`,failed:`失敗`,empty:`まだ何も尋ねていません。`,steps:`{{count}} ステップ`,tooManySteps:`{{count}} ステップ進みましたが答えに至りませんでした。`,collapse:`折りたたむ`,planWarningTitle:`このクエリはフルスキャンです。実行しますか?`,interrupted:`リロードで中断されました。`,external:`Planche の外から要求された操作です`},E={title:`AI エージェントを接続 (MCP)`,description:`MCP に対応した AI エージェントから Planche のツールを使えるようにします。`,readsLabel:`読み取り`,reads:`開いているデータベースを読み、その結果は相手のプログラムに渡ります。`,writesLabel:`書き込み`,writes:`データを変更する文には承認が要ります。DROP と TRUNCATE は実行できません。`,needsLabel:`条件`,needs:`AI パネルが開いている必要があります。`,tokenLabel:`トークン`,token:`一つを複数のプログラムで共有します。失効させると全部切れます。`,command:`Claude Code に追加`,json:`手動で設定`,stored:`{{path}} に保存されます。`,revoke:`トークンを失効`,revoked:`失効しました。新しく発行するにはこの画面を開き直してください。`},D={title:`接続の同期`,description:`接続プロファイルをこのブラウザで暗号化し、planche.dev に保管します。ほかのコンピュータからもそのまま使えます。`,stored:`サーバーに置かれるのは暗号化された塊ひとつだけです。ホスト・ユーザー・パスワード・SSH 鍵を読むことはできません。`,unavailable:`同期は planche.dev でのみ動きます。この Planche はローカルエージェントが配信しており、エージェントは外部へ接続できないようにしてあります。`,signIn:`GitHub でログイン`,signedInAs:`{{email}} でログイン中`,signOut:`ログアウト`,createTitle:`パスフレーズを決める`,createHint:`このパスフレーズがプロファイルを暗号化します。サーバーには送られないため、失うと保管された控えは復元できません — プロファイルが残っているコンピュータから作り直すしかありません。`,passphrase:`パスフレーズ`,confirm:`パスフレーズの確認`,mismatch:`2 つのパスフレーズが一致しません。`,tooShort:`{{count}} 文字以上で入力してください。`,enable:`同期を有効にする`,unlockTitle:`プロファイルのロック解除`,unlockHint:`同期を有効にしたときに決めたパスフレーズを入力してください。`,unlock:`ロック解除`,wrongPassphrase:`パスフレーズが違うか、保管された控えが壊れています。`,syncNow:`今すぐ同期`,lastSynced:`最終同期 {{when}}`,neverSynced:`まだ同期していません`,profiles_one:`プロファイル {{count}} 件`,profiles_other:`プロファイル {{count}} 件`,changePassphrase:`パスフレーズを変更`,deleteVault:`サーバーから削除`,deleteVaultConfirm:`planche.dev にある暗号化された控えを削除しますか?このコンピュータのプロファイルはそのまま残ります。`,offline:`planche.dev に接続できません。`,working:`処理中…`,serverError:`planche.dev が処理を完了できませんでした。しばらくしてからお試しください。`,signInShort:`ログイン`,needsPro:`ログインしました。プロファイルの同期には Pro ライセンスが必要で、取得すればすぐに動きます。`,deleteAccount:`アカウントを削除`,deleteAccountConfirm:`アカウントを削除しますか?保管された控えとログイン情報も一緒に消えます。このコンピュータのプロファイルはそのまま残ります。`,notDeployed:`このサイトではまだ接続の同期が有効になっていません。`},O={closeTitle:`Planche を閉じますか?`,closeDescription:`未保存の作業があります: 開いているトランザクション、コミットしていない編集、または実行中のクエリ。閉じると破棄され、ロールバックされます。`,closeAnyway:`閉じる`},k={add:`追加`,addRow:`追加`,cancel:`キャンセル`,save:`保存`,edit:`編集`,revert:`元に戻す`,deleteRow:`削除`,empty:`項目がありません。`,filterPlaceholder:`フィルター(テキストまたは glob)、Enter`,loadMore:`さらに読み込む`,loading:`読み込み中…`,formatJson:`JSON を整形`,prettyReadOnly:`編集するには JSON 整形をオフにしてください`,truncated:`先頭 {{size}} のみ表示`,loadFull:`すべて読み込む`,field:`フィールド`,value:`値`,member:`メンバー`,score:`スコア`,index:`インデックス`,pushTail:`末尾に追加`,pushHead:`先頭に追加`,entryId:`ID`,fields:`フィールド`,entryFieldsPlaceholder:`フィールド 値; フィールド 値`,entryFieldsRequired:`エントリには少なくとも 1 つのフィールドが必要です。`,rename:`名前を変更`,renameTaken:`{{name}} というキーは既に存在します。`,ttlEdit:`有効期限を設定`,ttlPlaceholder:`秒(空欄で無期限)`,ttlInvalid:`有効期限は正の秒数か、無期限なら空欄にしてください。`,noExpiry:`有効期限なし`,memory:`メモリ {{size}}`,encoding:`エンコーディング: {{encoding}}`,refresh:`更新`,openInConsole:`コンソールで開く`,delete:`キーを削除`,deleteTitle:`{{name}} を削除しますか?`,deleteDescription:`キーと値が削除され、元に戻せません。`,notConnected:`接続されていません。再接続するとキーを表示できます。`,gone:`このキーはもう存在しません(削除または期限切れ)。`,unsupported:`{{type}} 型のキーにはまだビューアがありません。コンソールで開いてください。`,noViewer:`この接続にはこの項目のビューアがありません。`,shown_other:`{{count}} 件表示`,shownOf_other:`{{total}} 件中 {{count}} 件表示`,bytes_other:`{{count}} バイト`,length_other:`{{count}} 件`,viewTree:`ツリー`,viewText:`テキスト`,viewHtml:`HTML`,htmlPreviewTitle:`HTML プレビュー(スクリプト無効)`},A={meta:`version {{version}} · seq_no {{seqNo}} · primary_term {{primaryTerm}}`,delete:`ドキュメントを削除`,deleteTitle:`ドキュメント {{id}} を削除しますか?`,deleteDescription:`{{index}} からドキュメントが削除され、元に戻せません。`,gone:`このドキュメントはもう存在しません。`,invalidJson:`有効な JSON ではありません: {{message}}`,conflict:`読み込み後にドキュメントが変更されたため、保存しませんでした。更新して最新版を確認してから再度編集してください。`},j={unavailable:`この接続ではこのツールを使えません。`,autoRefresh:`{{seconds}}秒ごとに更新`,filter:`フィルター`,redis:{server:`サーバー情報`,slowlog:`スローログ`,clients:`クライアント`,cardServer:`サーバー`,cardMemory:`メモリ`,cardActivity:`アクティビティ`,cardPersistence:`永続化とレプリケーション`,unlimited:`無制限`,keyspace:`キースペース`,allFields:`INFO の全項目`,slowlogThreshold:`{{ms}} ms より遅いと記録`,slowlogReset:`スローログを消去`,slowlogResetTitle:`スローログを消去しますか?`,slowlogResetDescription:`このサーバーの全エントリが、閲覧している全員から消えます。`,slowlogEmpty:`スローログは空です。`,time:`時刻`,duration:`所要時間`,command:`コマンド`,client:`クライアント`,thisApp:`このアプリ`,kill:`切断`,killTitle:`{{addr}} を切断しますか?`,killDescription:`クライアントの接続と実行中の処理が切れます。自動で再接続する場合があります。`,memory:`メモリ分析`,delete:`パターンでキーを削除`,deleteUnder:`このプレフィックスのキーを削除…`,analyze:`分析`,upTo:`最大 {{count}} キー`,memoryNote:`SCAN と MEMORY USAGE で各キーのサイズ・型・有効期限をバッチで読みます。負荷の高い本番サーバーでは負荷が増えます。大きなコレクションの MEMORY USAGE は一部の要素から推定した値です。`,scanned:`{{total}} 件中 {{scanned}} 件のキーを確認`,partial:`部分的な結果`,keysAnalyzed:`分析したキー`,totalMemory:`メモリ`,average:`キーあたり平均`,missingSizes_other:`{{count}} 件のキーはサイズを取得できず 0 バイトとして数えました(MEMORY USAGE の拒否、またはスキャン中に期限切れ)。`,byType:`型別`,byTtl:`有効期限別`,byPrefix:`プレフィックス別`,largest:`最大のキー`,ttlNone:`有効期限なし`,prefixHint:`プレフィックスをクリックするとそのキーの削除画面、キーをクリックするとキービューアが開きます。`,deleteIntro:`パターンに一致するキーを探して確認し、削除します。パターンは Redis の glob 構文です: * 任意の文字列、? 1 文字、[abc] 文字集合。`,preview:`一致するキーを検索`,deleteAllWarning:`* はこのデータベースのすべてのキーに一致します。`,matchCount:`{{database}} で {{count}} 件のキーが一致`,matchCapped:`({{cap}} 件で停止。削除後に再実行すると残りを検索します)`,deleteConfirm:`確認のため {{pattern}} と入力してください。`,deleteKeys:`{{count}} 件のキーを削除`,deleteNote:`UNLINK で 500 件ずつ削除します。検索後に作成されたキーは含まれません。`,deletedCount:`{{count}} 件のキーを削除しました。`,deleteReadOnly:`読み取り専用の接続です。`,noKeys:`{{database}} にキーはありません。`,pubsub:`Pub/Sub`,monitor:`モニター`,subscribePlaceholder:`チャンネルまたはパターン(例: news orders.*)`,subscribe:`購読`,unsubscribe:`購読解除`,listening:`{{targets}} を受信中`,publish:`発行`,channel:`チャンネル`,message:`メッセージ`,send:`送信`,receivers_other:`{{count}} 件の購読者が受信`,waitingMessages:`メッセージを待っています…`,pubsubIntro:`チャンネル(news)やパターン(orders.*)を購読すると、発行されたメッセージがリアルタイムで表示されます。購読は専用の接続を使い、解除するかタブを閉じると終了します。`,feedLimit:`最新 {{count}} 件のみ表示しています。古いものは破棄しました。`,startMonitor:`モニター開始`,monitoring:`すべてのコマンドを監視中`,dropped_other:`追いつくため {{count}} 件のコマンドを省略`,monitorWarning:`MONITOR はすべてのクライアントのすべてのコマンドを表示し、Redis はコマンドごとにこの画面へ複製を送ります。負荷の高い本番サーバーではスループットが実際に下がるので、短時間だけ使って停止してください。`,monitorReadOnly:`読み取り専用の接続では MONITOR を使えません。すべてのクライアントのコマンドを表示するためです。`},stop:`停止`,clear:`クリア`},M={title:`Planche の新機能`,description:`前回開いたときから変わったところです。`,agentOutdated:`これらを使うにはエージェントを {{required}} 以降に更新してください(現在は {{current}})。ターミナルで次を実行してください:`,allChanges:`すべての変更履歴を見る`,close:`OK`},N={pairFailedTitle:`エージェントとペアリングできませんでした`,agentOffline:`このコンピューターで応答するエージェントがありません。ターミナルで下のコマンドを実行してエージェントを起動し、表示されたリンクを開いてください。
3
+ すでに起動している場合は、Chrome がこのページからのローカル接続を止めている可能性があります。アドレスバー左のアイコンをクリックし、ローカルネットワークへのアクセスを許可してください。`,agentOutdated:`このコンピューターのエージェントが古いため、この機能は使えません。エージェントを止め、下のコマンドで更新してから起動し直してください。`,agentToken:`エージェントが再起動したため、このページに保存されたトークンは使えなくなりました。エージェントのターミナルに表示された新しいリンクを開いてください。`,codeRejected:`ペアリングリンクは 1 回だけ、10 分以内しか使えません。エージェントのターミナルに表示された最新のリンクを開いてください。`,agentLocked:`間違った試行が続いたため、エージェントは 30 秒間リクエストを受け付けません。少し待ってから、ターミナルの最新のリンクを開いてください。`,originBlocked:`エージェントが受け付けるのは planche.dev とローカルの開発サーバーで開いたアプリだけです。planche.dev で Planche を開くか、--origin にこのページのアドレスを付けてエージェントを起動してください。`,sshAuth:`SSH サーバーがログインを拒否しました。SSH の項目にあるユーザーと、パスワードまたは秘密鍵を確認してください。`,dbAuth:`データベースがログインを拒否しました。ユーザー名とパスワードを確認してください。`,network:`エージェントが DB サーバーに接続できませんでした。ホストとポート、サーバーが起動しているかを確認してください。エージェントは手元のコンピューターで動くので、localhost は手元のコンピューターを指します。別のネットワークにあるサーバーには SSH トンネルが必要な場合があります。`,tls:`サーバーの TLS 証明書を検証できませんでした。自己署名証明書の場合は、TLS の項目で「{{verify}}」をオフにしてください。`,agentOfflineUnknown:`このコンピューターで応答するエージェントがありません。ターミナルで下のコマンド(install.sh でインストールした場合は planche)を実行してエージェントを起動し、表示されたリンクを開いてください。
4
+ すでに起動している場合は、Chrome がこのページからのローカル接続を止めている可能性があります。アドレスバー左のアイコンをクリックし、ローカルネットワークへのアクセスを許可してください。`,agentOutdatedUnknown:`このコンピューターのエージェントが古いため、この機能は使えません。エージェントを止めて、下のコマンドで最新版を起動してください(install.sh でインストールした場合は planche upgrade を実行します)。`},P={app:e,language:t,settings:n,menu:r,about:i,connection:a,toolbar:o,footer:s,palette:c,welcome:l,schema:u,query:d,result:f,confirm:p,table:m,database:h,user:g,command:_,erd:v,services:y,terms:b,dryRun:x,pro:S,install:C,explain:w,ai:T,mcp:E,sync:D,desktop:O,keyViewer:k,docViewer:A,tools:j,whatsNew:M,failureHint:N};export{i as about,T as ai,e as app,_ as command,p as confirm,a as connection,h as database,P as default,O as desktop,A as docViewer,x as dryRun,v as erd,w as explain,N as failureHint,s as footer,C as install,k as keyViewer,t as language,E as mcp,r as menu,c as palette,S as pro,d as query,f as result,u as schema,y as services,n as settings,D as sync,m as table,b as terms,o as toolbar,j as tools,g as user,l as welcome,M as whatsNew};
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/R93pYE1w.js","assets/hePW80VL.js","assets/DeB5sJfy.js","assets/DOeLCbYG.js","assets/5E2RYjEs.js","assets/eRZ39OKr.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./hePW80VL.js";import{i as t}from"./BDtsGuIR.js";import{r as n}from"./Nro86Y63.js";import{t as r}from"./S7HbowYz.js";import{n as i}from"./C1gqjEN3.js";import{C as a,a as o}from"./BkXrfAoR.js";import{n as s}from"./BRZhVXRC.js";import{i as c,r as l}from"./B9dhM8vw.js";var u=[`<=>`,`->>`,`->`,`<>`,`!=`,`<=`,`>=`,`<<`,`>>`,`:=`,`||`,`&&`];function d(e){return/[A-Za-z_$\u0080-\uFFFF]/.test(e)}function f(e){return/[A-Za-z0-9_$\u0080-\uFFFF]/.test(e)}function p(e){return e>=`0`&&e<=`9`}function m(e){return e===` `||e===` `||e===`
3
+ `||e===`\r`||e===`\f`||e===`\v`}var h=class{input;syntax;pos=0;delimiter;significantInStatement=0;constructor(e,t,n=`;`){this.input=e,this.syntax=t,this.delimiter=n}tokenize(){let e=[];for(;this.pos<this.input.length;){let t=this.next();t.kind===`terminator`||t.kind===`delimiter_command`?this.significantInStatement=0:t.kind!==`space`&&t.kind!==`comment`&&this.significantInStatement++,e.push(t)}return e}atLineStart(e){let t=e-1;for(;t>=0&&(this.input[t]===` `||this.input[t]===` `);)t--;return t<0||this.input[t]===`
4
+ `}make(e,t,n){let r=this.input.slice(t,n),i={kind:e,value:r,start:t,end:n};return e===`identifier`&&(i.upper=r.toUpperCase()),i}next(){let e=this.input,t=this.pos,n=e[t];if(m(n)){let n=t+1;for(;n<e.length&&m(e[n]);)n++;return this.pos=n,this.make(`space`,t,n)}if(e.startsWith(this.delimiter,t))return this.pos=t+this.delimiter.length,this.make(`terminator`,t,this.pos);if(n===`#`&&this.syntax.hashComments)return this.lineComment(t);if(n===`-`&&e[t+1]===`-`){let n=e[t+2];if(!this.syntax.dashCommentNeedsSpace||n===void 0||m(n))return this.lineComment(t)}if(n===`/`&&e[t+1]===`*`){let n=e.indexOf(`*/`,t+2);return this.pos=n===-1?e.length:n+2,this.make(`comment`,t,this.pos)}if(n===`$`&&this.syntax.dollarQuotes){let n=/^\$([A-Za-z_\u0080-\uFFFF][A-Za-z0-9_\u0080-\uFFFF]*)?\$/.exec(e.slice(t,t+64));if(n){let r=e.indexOf(n[0],t+n[0].length);return this.pos=r===-1?e.length:r+n[0].length,this.make(`string`,t,this.pos)}}if((n===`e`||n===`E`)&&e[t+1]===`'`&&this.syntax.dollarQuotes){this.pos=t+1;let e=this.quoted(t+1,`'`,`string`,!0);return this.make(`string`,t,e.end)}if(n===`'`)return this.quoted(t,`'`,`string`,this.syntax.backslashEscapes);if(n===`"`)return this.syntax.doubleQuoteIsIdentifier?this.quoted(t,`"`,`quoted_identifier`,!1):this.quoted(t,`"`,`string`,this.syntax.backslashEscapes);if((n===`x`||n===`X`||n===`b`||n===`B`||n===`n`||n===`N`)&&e[t+1]===`'`){this.pos=t+1;let e=this.quoted(t+1,`'`,`string`,this.syntax.backslashEscapes);return this.make(`string`,t,e.end)}if(n==="`")return this.quoted(t,"`",`quoted_identifier`,!1);if(n===`[`&&this.syntax.bracketIdentifiers){let n=e.indexOf(`]`,t+1);return this.pos=n===-1?e.length:n+1,this.make(`quoted_identifier`,t,this.pos)}if(p(n)||n===`.`&&p(e[t+1]??``))return this.number(t);if(n===`@`){let n=t+1;if(e[n]===`@`&&n++,e[n]===`'`||e[n]===`"`||e[n]==="`"){let r=e[n];this.pos=n;let i=this.quoted(n,r,`string`,this.syntax.backslashEscapes);return this.make(`variable`,t,i.end)}for(;n<e.length&&(f(e[n])||e[n]===`.`);)n++;return this.pos=n,this.make(`variable`,t,n)}if((n===`:`||n===`$`)&&d(e[t+1]??``)&&e[t+1]!==`$`){let n=t+1;for(;n<e.length&&f(e[n]);)n++;return this.pos=n,this.make(`variable`,t,n)}if(n===`?`){let n=t+1;for(;n<e.length&&p(e[n]);)n++;return this.pos=n,this.make(`placeholder`,t,n)}if(d(n)){let n=t+1;for(;n<e.length&&f(e[n])&&!e.startsWith(this.delimiter,n);)n++;let r=e.slice(t,n).toUpperCase();if(r===`DELIMITER`&&this.syntax.delimiterCommand&&this.significantInStatement===0){let r=n;for(;r<e.length&&(e[r]===` `||e[r]===` `);)r++;let i=r;for(;i<e.length&&!m(e[i]);)i++;if(i>r)return this.delimiter=e.slice(r,i),this.pos=i,this.make(`delimiter_command`,t,i)}if(r===`GO`&&this.syntax.goBatchSeparator&&this.atLineStart(t)){let r=n;for(;r<e.length&&(e[r]===` `||e[r]===` `);)r++;for(;r<e.length&&p(e[r]);)r++;for(;r<e.length&&(e[r]===` `||e[r]===` `||e[r]===`\r`);)r++;if(r>=e.length||e[r]===`
5
+ `)return this.pos=r,this.make(`delimiter_command`,t,r)}return this.pos=n,this.make(`identifier`,t,n)}if(n===`/`&&this.syntax.plsqlBlocks&&this.atLineStart(t)){let n=t+1;for(;n<e.length&&(e[n]===` `||e[n]===` `||e[n]===`\r`);)n++;if(n>=e.length||e[n]===`
6
+ `)return this.pos=n,this.make(`delimiter_command`,t,n)}if(n===`(`)return this.pos=t+1,this.make(`lparen`,t,this.pos);if(n===`)`)return this.pos=t+1,this.make(`rparen`,t,this.pos);for(let n of u)if(e.startsWith(n,t))return this.pos=t+n.length,this.make(`operator`,t,this.pos);return`=<>!+-*/%^~&|`.includes(n)?(this.pos=t+1,this.make(`operator`,t,this.pos)):`,.;:[]{}`.includes(n)?(this.pos=t+1,this.make(`punct`,t,this.pos)):(this.pos=t+1,this.make(`unknown`,t,this.pos))}lineComment(e){let t=this.input,n=e;for(;n<t.length&&t[n]!==`
7
+ `;)n++;return this.pos=n,this.make(`comment`,e,n)}quoted(e,t,n,r){let i=this.input,a=e+1;for(;a<i.length;){let e=i[a];if(r&&e===`\\`){a+=2;continue}if(e===t){if(i[a+1]===t){a+=2;continue}a++;break}a++}return this.pos=Math.min(a,i.length),this.make(n,e,this.pos)}number(e){let t=this.input,n=e;if(t[n]===`0`&&(t[n+1]===`x`||t[n+1]===`X`))for(n+=2;n<t.length&&/[0-9A-Fa-f]/.test(t[n]);)n++;else if(t[n]===`0`&&(t[n+1]===`b`||t[n+1]===`B`)&&(t[n+2]===`0`||t[n+2]===`1`))for(n+=2;n<t.length&&(t[n]===`0`||t[n]===`1`);)n++;else{for(;n<t.length&&p(t[n]);)n++;if(t[n]===`.`)for(n++;n<t.length&&p(t[n]);)n++;if((t[n]===`e`||t[n]===`E`)&&(p(t[n+1]??``)||(t[n+1]===`+`||t[n+1]===`-`)&&p(t[n+2]??``)))for(n+=2;n<t.length&&p(t[n]);)n++}return this.pos=n,this.make(`number`,e,n)}},ee=new Set([`BEGIN`,`CASE`,`IF`,`LOOP`,`WHILE`,`REPEAT`]);function g(e){return e.kind!==`space`&&e.kind!==`comment`}function te(e,t){let n=[],r=[],i=[],a=0,o=!1,s=t=>{for(let n=t+1;n<e.length;n++)if(g(e[n]))return e[n]},c=e=>{r.length!==0&&(n.push({tokens:r,start:r[0].start,end:r[r.length-1].end,terminated:e}),r=[],i=[],a=0,o=!1)};for(let n=0;n<e.length;n++){let l=e[n];if(l.kind===`delimiter_command`){i.length>0?c(!1):r=[];continue}if(l.kind===`terminator`){if(a>0&&l.value===`;`){r.push({...l,kind:`punct`}),i.push(l);continue}r.push(l),c(!0);continue}if(r.push(l),g(l)){if(l.kind===`identifier`){let e=l.upper,r=i.length===0;if(o&&(o=!1,ee.has(e))){i.push(l);continue}if(e===`END`)a>0&&a--,o=!0;else if(e===`BEGIN`){let e=s(n),o=i[i.length-1];r?(t.plsqlBlocks||e?.kind===`identifier`&&e.upper===`NOT`)&&a++:!(e=>e!==void 0&&(e.kind===`operator`||e.kind===`rparen`||e.kind===`punct`&&(e.value===`,`||e.value===`.`)||e.kind===`identifier`&&e.upper===`FROM`))(e)&&!(o&&(o.kind===`operator`||o.kind===`punct`&&(o.value===`,`||o.value===`.`)))&&a++}else if(e===`CASE`)a++;else if(a>0&&(e===`IF`||e===`LOOP`||e===`WHILE`||e===`REPEAT`)){let e=s(n);e?.kind!==`lparen`&&(e?.kind!==`identifier`||e.upper!==`EXISTS`&&e.upper!==`NOT`)&&a++}}i.push(l)}}return c(!1),n}var ne=new Set([`SELECT`,`VALUES`,`TABLE`,`WITH`,`SHOW`,`EXPLAIN`,`DESCRIBE`,`DESC`,`HELP`,`CHECK`,`CHECKSUM`,`ANALYZE`,`OPTIMIZE`,`REPAIR`,`PRAGMA`]),re=new Set([`SELECT`,`INSERT`,`UPDATE`,`DELETE`,`REPLACE`,`VALUES`,`TABLE`,`MERGE`]),ie=new Set([`TABLE`,`DATABASE`,`SCHEMA`,`TABLESPACE`]),ae=new Set([`WHERE`,`SET`,`USING`,`ORDER`,`LIMIT`,`JOIN`,`INNER`,`LEFT`,`RIGHT`,`CROSS`,`NATURAL`,`STRAIGHT_JOIN`,`ON`,`PARTITION`,`AS`,`RETURNING`,`INDEXED`,`NOT`]);function _(e){if(e.kind!==`quoted_identifier`)return e.value;let t=e.value[0],n=t===`[`?`]`:t,r=e.value.slice(1,e.value.endsWith(n)?-1:void 0);return t!==`[`&&(r=r.replaceAll(n+n,n)),r}function v(e){return e.kind===`identifier`||e.kind===`quoted_identifier`}function y(e,t,n=ae){let r=[];for(;t<e.length;){let i=e[t];if(!v(i)||i.kind===`identifier`&&n.has(i.upper))break;let a=[_(i)];for(t++;t+1<e.length&&e[t].kind===`punct`&&e[t].value===`.`&&v(e[t+1]);)a.push(_(e[t+1])),t+=2;if(r.push(a.join(`.`)),e[t]?.kind===`punct`&&e[t].value===`,`){t++;continue}break}return{names:r,next:t}}function b(e,t,n=0){let r=0;for(let i=n;i<e.length;i++){let n=e[i];if(n.kind===`lparen`)r++;else if(n.kind===`rparen`)r=Math.max(0,r-1);else if(r===0&&n.kind===`identifier`&&n.upper===t)return i}return-1}function oe(e){let t=0;for(;t<e.length&&e[t].kind===`lparen`;)t++;if(t>=e.length||e[t].kind!==`identifier`)return{kind:``,index:t};if(e[t].upper!==`WITH`)return{kind:e[t].upper,index:t};let n=0,r=!1;for(let i=t+1;i<e.length;i++){let t=e[i];if(t.kind===`lparen`){n++,r=!1;continue}if(t.kind===`rparen`){n--,r=n===0;continue}if(n===0&&r&&t.kind===`identifier`&&re.has(t.upper))return{kind:t.upper,index:i};r=!1}return{kind:`WITH`,index:t}}function se(e,t){let n=b(e,`LIMIT`,t);if(n===-1)return null;let r=e[n+1];if(!r||r.kind!==`number`)return null;let i=e[n+2],a=e[n+3];return i?.kind===`punct`&&i.value===`,`&&a?.kind===`number`?{offset:Number(r.value),count:Number(a.value)}:i?.kind===`identifier`&&i.upper===`OFFSET`&&a?.kind===`number`?{offset:Number(a.value),count:Number(r.value)}:{offset:0,count:Number(r.value)}}function ce(e,t,n){let r=t=>e[t]?.kind===`identifier`?e[t].upper:void 0;switch(t){case`DROP`:{let t=n+1;r(t)===`TEMPORARY`&&t++;let i=r(t);if(!i)return null;t++,r(t)===`IF`&&(t+=2);let{names:a}=y(e,t,new Set([`ON`,`RESTRICT`,`CASCADE`]));return{action:`DROP`,objectType:i,names:a,dataLoss:ie.has(i)}}case`TRUNCATE`:{let t=n+1;r(t)===`TABLE`&&t++;let{names:i}=y(e,t);return{action:`TRUNCATE`,objectType:`TABLE`,names:i,dataLoss:!0}}case`DELETE`:{if(b(e,`WHERE`,n)!==-1)return null;let t=n+1;for(;r(t)===`LOW_PRIORITY`||r(t)===`QUICK`||r(t)===`IGNORE`;)t++;return{action:`DELETE_ALL`,names:r(t)===`FROM`?y(e,t+1).names:y(e,t,new Set([`FROM`])).names,dataLoss:!0}}case`UPDATE`:{if(b(e,`WHERE`,n)!==-1)return null;let t=n+1;for(;r(t)===`LOW_PRIORITY`||r(t)===`IGNORE`||r(t)===`OR`;)t+=r(t)===`OR`?2:1;let{names:i}=y(e,t);return{action:`UPDATE_ALL`,names:i,dataLoss:!0}}case`ALTER`:{if(r(n+1)!==`TABLE`)return null;let{names:t}=y(e,n+2,new Set([`ADD`,`DROP`,`MODIFY`,`CHANGE`,`RENAME`,`ALTER`])),i=[],a=0;for(let t=n+2;t<e.length;t++){let n=e[t];if(n.kind===`lparen`){a++;continue}if(n.kind===`rparen`){a--;continue}if(a!==0||n.kind!==`identifier`||n.upper!==`DROP`)continue;let r=e[t+1],o=r?.kind===`identifier`?r.upper:``;if(o===`COLUMN`){let n=e[t+2];n&&v(n)&&i.push(_(n))}else o===`PARTITION`?i.push(`PARTITION ${y(e,t+2).names.join(`, `)}`):r&&v(r)&&![`PRIMARY`,`FOREIGN`,`INDEX`,`KEY`,`CONSTRAINT`,`CHECK`,`DEFAULT`,`TABLESPACE`].includes(o)&&i.push(_(r))}return i.length===0?null:{action:`ALTER_DROP`,objectType:`TABLE`,names:t.map(e=>`${e} (${i.join(`, `)})`),dataLoss:!0}}default:return null}}function le(e,t){let n=e.tokens.filter(e=>g(e)&&e.kind!==`terminator`),r=e.terminated?e.tokens.slice(0,-1):e.tokens,i=r.length?r[r.length-1].end:e.start,a=t.slice(e.start,i).trim(),{kind:o,index:s}=oe(n),c=ne.has(o)||b(n,`RETURNING`,s)!==-1,l=c?se(n,s):null,u=ce(n,o,s);return{sql:a,raw:t.slice(e.start,e.end),start:e.start,end:e.end,tokens:e.tokens,kind:o,isEmpty:n.length===0,returnsRows:c,limit:l,destructive:u}}function ue(e,t){let n=e.tokens.filter(e=>g(e)&&e.kind!==`terminator`),r=n.findIndex(e=>e.kind!==`lparen`);return b(n,t.toUpperCase(),Math.max(0,r))!==-1}function x(e){return e.start+e.raw.indexOf(e.sql)}function de(e){let t=e.tokens.filter(e=>g(e)&&e.kind!==`terminator`),n=0;for(;n<t.length&&t[n].kind===`lparen`;)n++;let r=t[n];if(!r||r.kind!==`identifier`||r.upper!==`SELECT`)return-1;let i=r,a=t[n+1];return a?.kind===`identifier`&&(a.upper===`DISTINCT`||a.upper===`ALL`)&&(i=a),i.end-x(e)}var S=class{syntax;constructor(e){this.syntax=`syntax`in e?e.syntax:e}tokenize(e,t=`;`){return new h(e,this.syntax,t).tokenize()}parse(e,t=`;`){return te(this.tokenize(e,t),this.syntax).map(t=>le(t,e))}statements(e,t=`;`){return this.parse(e,t).filter(e=>!e.isEmpty)}},fe=new Set([`ORDER`,`LIMIT`,`RETURNING`,`OUTPUT`,`OPTION`]);function C(e,t,n,r){return n?e.slice(n.start-t,(r?r.start:2**53-1)-t).trim():``}function w(e,t,n){let r=t;for(;r<n&&e[r].kind===`identifier`&&(e[r].upper===`ONLY`||e[r].upper===`LOW_PRIORITY`||e[r].upper===`IGNORE`||e[r].upper===`QUICK`);)r++;if(r>=n||!v(e[r]))return null;let i=_(e[r]),a=e[r].kind===`quoted_identifier`;for(r++;r+1<n&&e[r].kind===`punct`&&e[r].value===`.`&&v(e[r+1]);)i=_(e[r+1]),a=e[r+1].kind===`quoted_identifier`,r+=2;return r<n&&e[r].kind===`identifier`&&e[r].upper===`AS`&&r++,r<n&&v(e[r])&&!(e[r].kind===`identifier`&&[`SET`,`WHERE`,`JOIN`,`INNER`,`LEFT`,`RIGHT`,`CROSS`,`USING`,`FROM`,`ON`,`NATURAL`,`STRAIGHT_JOIN`,`WITH`,`OUTPUT`].includes(e[r].upper))?(e[r].kind,e[r].value):a?`"${i.replaceAll(`"`,`""`)}"`:i}function pe(e,t=`"`){let n=e.tokens.filter(e=>g(e)&&e.kind!==`terminator`),r=x(e),i=e.sql,a=e=>(e.startsWith(t)||e.startsWith(`"`)||e.startsWith("`")||e.startsWith(`[`),e),o=n[0];if(!o||o.kind!==`identifier`||o.upper!==`UPDATE`&&o.upper!==`DELETE`)return null;let s=b(n,`WHERE`),c=-1;for(let e of fe){let t=b(n,e,s===-1?1:s);t!==-1&&(c===-1||t<c)&&(c=t)}let l=e=>e===-1?n.length:e,u=s===-1?``:` `+C(i,r,n[s],n[l(c)]),d=``;if(c!==-1&&(n[c].upper===`ORDER`||n[c].upper===`LIMIT`)){let e=[`RETURNING`,`OUTPUT`,`OPTION`].map(e=>b(n,e,c)).filter(e=>e!==-1);d=` `+C(i,r,n[c],e.length?n[Math.min(...e)]:void 0)}let f,p,m;if(o.upper===`UPDATE`){let e=b(n,`SET`);if(e===-1)return null;let t=b(n,`FROM`,e),a=e,o=C(i,r,n[1],n[a]);if(!o||n[1].kind===`lparen`)return null;if(p=w(n,1,a),m=o,t!==-1&&(s===-1||t<s)){let e=C(i,r,n[t+1],n[l(s===-1?c:s)]);f=p!==null&&RegExp(`(^|[\\s,])${p.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}(\\s|$|,)`,`i`).test(e)?e:`${o}, ${e}`}else f=o}else{let e=b(n,`FROM`);if(e===-1)return null;let t=b(n,`USING`,e),a=l(t===-1?s===-1?c:s:t),o=C(i,r,n[e+1],n[a]);if(!o||n[e+1]?.kind===`lparen`)return null;let u=C(i,r,n[1],n[e]),d=u?u.split(`,`)[0].trim().replace(/^(LOW_PRIORITY|QUICK|IGNORE)\s+/i,``):``;p=d||w(n,e+1,a),m=d||o;let h=t===-1?``:C(i,r,n[t+1],n[l(s===-1?c:s)]);f=h?`${o}, ${h}`:o}return p?{select:`SELECT ${a(p)}.* FROM ${f}${u}${d}`,count:d?`SELECT COUNT(*) AS affected FROM (SELECT 1 AS one FROM ${f}${u}${d}) planche_preview`:`SELECT COUNT(*) AS affected FROM ${f}${u}`,table:m,limited:/\bLIMIT\b/i.test(d)}:null}var me={mysql:`mysql`,maria:`mariadb`,postgres:`postgresql`,neon:`postgresql`,supabase:`postgresql`,mssql:`transactsql`,sqlite:`transactsql`,d1:`transactsql`,do:`transactsql`,oracle:null,redis:null,elasticsearch:null,opensearch:null},he={mysql:()=>t(()=>import(`./R93pYE1w.js`).then(t=>e(t.default,1)),__vite__mapDeps([0,1,2])),mariadb:()=>t(()=>import(`./DOeLCbYG.js`).then(t=>e(t.default,1)),__vite__mapDeps([3,1,2])),postgresql:()=>t(()=>import(`./5E2RYjEs.js`).then(t=>e(t.default,1)),__vite__mapDeps([4,1,2])),transactsql:()=>t(()=>import(`./eRZ39OKr.js`).then(t=>e(t.default,1)),__vite__mapDeps([5,1,2]))},T=new Map,ge={mysql:"`",mariadb:"`",postgresql:`"`,transactsql:`"`};function _e(e,t,n){if(!E.test(e))return e;let r=ge[t],i=``,a=0;for(let t of new S(n).tokenize(e))t.kind!==`identifier`||!E.test(t.value)||(i+=e.slice(a,t.start)+r+t.value+r,a=t.end);return i+e.slice(a)}var E=/[\u0080-\uffff]/;function ve(e){return me[e]??null}async function ye(e){let t=T.get(e);if(t)return t;let n=new(await(he[e]())).Parser;return T.set(e,n),n}function D(e){return typeof e==`object`&&!!e}function O(e){return D(e)&&e.type===`select`}function be(e){return D(e)&&O(e.ast)?e.ast:null}function xe(e){let t=e.name;return typeof t==`string`?t:t?.value??`cte`}function Se(e){let t=e.stmt;return D(t)?O(t.ast)?t.ast:O(t)?t:null:null}function Ce(e){if(!e)return null;let t=e.toUpperCase();return t===`JOIN`?`INNER JOIN`:t}function we(e){let t=e.db??e.schema??null;return t?`${t}.${e.table}`:String(e.table)}function k(e){if(!D(e))return!1;if(e.type===`star`)return!0;let t=e.column;return!!(t===`*`||D(t)&&D(t.expr)&&t.expr.value===`*`)}function A(e){return k(e)?!D(e)||e.table===null||e.table===void 0:!1}function Te(e){let t=e.columns;return t===`*`?{count:null,expandsSources:!0}:Array.isArray(t)?t.filter(e=>k(e)||k(e.expr)).length===0?{count:t.length,expandsSources:!1}:{count:null,expandsSources:t.length===1&&(A(t[0])||A(t[0].expr))}:{count:null,expandsSources:!1}}function j(e,t){if(Array.isArray(e)){for(let n of e)j(n,t);return}if(!D(e))return;let n=be(e);if(n){t.push(n);return}for(let[n,r]of Object.entries(e))n!==`loc`&&j(r,t)}var Ee=class{nodes=[];edges=[];groups=[];warnings=[];seq=0;nextId(e){return this.seq+=1,`${e}${this.seq}`}addGroup(e,t,n){let r={id:this.nextId(`g`),kind:e,label:t,parentId:n};return this.groups.push(r),r.id}addNode(e){let t={id:this.nextId(`n`),...e};return this.nodes.push(t),t}addEdge(e,t,n,r){this.edges.push({id:this.nextId(`e`),from:e,to:t,kind:n,label:r})}visitQuery(e,t,n,r,i,a){let o=[];for(let t=e;t;t=t._next)o.push(t);if(o.length===1)return this.visitSelect(e,t,n,r,i,a);let s=this.addGroup(`query`,r,t),c=(e.set_op??`union`).toUpperCase(),l=new Map(n);this.declareCtes(e,s,l);let u=o.map((e,t)=>this.visitSelect(e,s,new Map(l),`${c} (${t+1})`,`result`,`result`,t===0)),d=this.addNode({kind:i===`result`?`setop`:i,label:i===`result`?c:a,alias:null,qualifier:null,columnCount:u[0]?.columnCount??null,expandsSources:!1,groupId:s,range:null});for(let e of u)this.addEdge(e.id,d.id,`setop`,c);return d}declareCtes(e,t,n){if(Array.isArray(e.with))for(let r of e.with){let e=xe(r),i=Se(r);if(!i){this.warnings.push(`CTE ${e}: body not understood`);continue}let a=this.visitQuery(i,t,new Map(n),`WITH ${e}`,`cte`,e);n.set(e.toLowerCase(),a)}}visitSelect(e,t,n,r,i,a,o=!1){let s=this.addGroup(`query`,r,t),c=new Map(n);o||this.declareCtes(e,s,c);let l=[];if(Array.isArray(e.from)&&e.from.length>0){let t=this.addGroup(`from`,`FROM`,s);e.from.forEach((e,n)=>{let r=Ce(e.join),i=n===0&&!r?`from`:`join`,a=e.expr?.ast;if(a){let n=e.as??`subquery`,o=this.visitQuery(a,t,new Map(c),`FROM ${n}`,`derived`,n);l.push({node:o,kind:i,label:r});return}if(!e.table){this.warnings.push(`FROM entry not understood (function call or table expression)`);return}let o=c.get(e.table.toLowerCase()),s=this.addNode({kind:o?`cte-ref`:`table`,label:we(e),alias:e.as??null,qualifier:e.db??e.schema??null,columnCount:o?o.columnCount:null,expandsSources:!1,groupId:t,range:null});o&&this.addEdge(o.id,s.id,`cte`,null),l.push({node:s,kind:i,label:r})})}let u=[];for(let[t,n]of[[`SELECT`,e.columns],[`WHERE`,e.where],[`GROUP BY`,e.groupby],[`HAVING`,e.having],[`ORDER BY`,e.orderby]]){let e=[];j(n,e),e.forEach((n,r)=>{let i=e.length>1?`${t} (${r+1})`:t;u.push(this.visitQuery(n,s,new Map(c),i,`scalar`,`subquery`))})}let{count:d,expandsSources:f}=Te(e),p=this.addNode({kind:i,label:a,alias:null,qualifier:null,columnCount:d,expandsSources:f,groupId:s,range:null});for(let e of l)this.addEdge(e.node.id,p.id,e.kind,e.label);for(let e of u)this.addEdge(e.id,p.id,`scalar`,null);return p}};function De(e){let t=Array.isArray(e)?e[0]:e;if(!O(t))return null;let n=new Ee;return n.visitQuery(t,null,new Map,`query`,`result`,`result`),Array.isArray(e)&&e.length>1&&n.warnings.push(`only the first of ${e.length} statements is drawn`),{nodes:n.nodes,edges:n.edges,groups:n.groups,warnings:n.warnings}}var M=new Set([`WHERE`,`GROUP`,`HAVING`,`ORDER`,`CONNECT`,`START`,`MODEL`,`FETCH`,`OFFSET`,`FOR`,`UNION`,`INTERSECT`,`MINUS`,`EXCEPT`,`WITH`]),Oe=new Set([`UNION`,`INTERSECT`,`MINUS`,`EXCEPT`]),N=new Set([...M,`ON`,`USING`,`JOIN`,`INNER`,`LEFT`,`RIGHT`,`FULL`,`CROSS`,`NATURAL`,`OUTER`,`AND`,`OR`,`NOT`,`AS`,`PARTITION`,`PIVOT`,`UNPIVOT`,`SAMPLE`]),P=new Set([`INNER`,`LEFT`,`RIGHT`,`FULL`,`CROSS`,`NATURAL`,`OUTER`]);function F(e){return e?.kind===`identifier`?e.upper??e.value.toUpperCase():``}function I(e){return e!==void 0&&(e.kind===`identifier`||e.kind===`quoted_identifier`)}function L(e,t){let n=0;for(let r=t;r<e.length;r++)if(e[r].kind===`lparen`)n++;else if(e[r].kind===`rparen`&&--n===0)return r+1;return e.length}function R(e,t,n){let r=[];for(let i=t;i<n;i++){if(e[i].kind!==`lparen`)continue;let t=F(e[i+1]),a=Math.min(L(e,i),n);(t===`SELECT`||t===`WITH`)&&(r.push(B(e,i+1,a-1)),i=a-1)}return r}function ke(e,t,n,r){let i=[],a=0;for(let o=t;o<n;o++)e[o].kind===`lparen`?a++:e[o].kind===`rparen`?a--:a===0&&r(e[o])&&i.push(o);return i}function z(e,t,n,r){let i=0;for(let a=t;a<n;a++)if(e[a].kind===`lparen`)i++;else if(e[a].kind===`rparen`)i--;else if(i===0&&r(e[a]))return a;return n}function Ae(e,t){let n=[_(e[t])],r=t+1;for(;e[r]?.kind===`punct`&&e[r].value===`.`&&I(e[r+1]);)n.push(_(e[r+1])),r+=2;return{parts:n,next:r}}function je(e,t,n,r){let i=t;if(e[i]?.kind===`lparen`&&(F(e[i+1])===`SELECT`||F(e[i+1])===`WITH`)){let t=L(e,i),n=B(e,i+1,t-1),a=null,o=t;return F(e[o])===`AS`&&o++,I(e[o])&&!N.has(F(e[o]))&&(a=_(e[o])),{db:null,table:null,as:a,expr:{ast:n},...r?{join:r}:{}}}if(!I(e[i]))return null;let{parts:a,next:o}=Ae(e,i);if(i=o,e[i]?.kind===`lparen`)return null;let s=null;F(e[i])===`AS`&&i++,i<n&&I(e[i])&&!N.has(F(e[i]))&&(s=_(e[i]));let c=a[a.length-1];return{db:a.length>1?a.slice(0,-1).join(`.`):null,table:c,as:s,...r?{join:r}:{}}}function Me(e,t,n){let r=[],i=e=>e.kind===`punct`&&e.value===`,`,a=e=>F(e)===`JOIN`||P.has(F(e)),o=ke(e,t,n,e=>i(e)||a(e)),s=[{at:t,join:null}];for(let t=0;t<o.length;t++){let r=o[t];if(i(e[r])){s.push({at:r+1,join:null});continue}let a=[],c=r;for(;c<n&&(P.has(F(e[c]))||F(e[c])===`JOIN`);){if(a.push(F(e[c])),F(e[c])===`JOIN`){c++;break}c++}for(;t+1<o.length&&o[t+1]<c;)t++;s.push({at:c,join:a.join(` `)||`JOIN`})}for(let t=0;t<s.length;t++){let i=s[t],a=t+1<s.length?s[t+1].at:n,o=je(e,i.at,a,i.join);o&&r.push(o)}return r}function B(e,t,n){let r={type:`select`,with:null,columns:`*`,from:[],where:[]},i=t;if(F(e[i])===`WITH`)for(i++,F(e[i])===`RECURSIVE`&&i++,r.with=[];i<n&&I(e[i]);){let t=_(e[i]);if(i++,e[i]?.kind===`lparen`&&F(e[i+1])!==`SELECT`&&(i=L(e,i)),F(e[i])!==`AS`||(i++,(F(e[i])===`MATERIALIZED`||F(e[i])===`NOT`&&F(e[i+1])===`MATERIALIZED`)&&(i+=F(e[i])===`NOT`?2:1),e[i]?.kind!==`lparen`))break;let n=L(e,i);if(r.with.push({name:{value:t},stmt:{ast:B(e,i+1,n-1)}}),i=n,e[i]?.kind===`punct`&&e[i].value===`,`){i++;continue}break}if(F(e[i])!==`SELECT`)return r;i++,[`DISTINCT`,`ALL`,`UNIQUE`].includes(F(e[i]))&&i++;let a=z(e,i,n,e=>F(e)===`FROM`),o=ke(e,i,a,e=>e.kind===`punct`&&e.value===`,`),s=[],c=i;for(let e of o)s.push([c,e]),c=e+1;s.push([c,a]);let l=e=>e.kind===`operator`&&e.value===`*`,u=s.filter(([t,n])=>z(e,t,n,l)<n);if(r.columns=s.length===1&&u.length===1&&s[0][1]-s[0][0]===1?`*`:u.length>0?[{expr:{type:`star`}},...s.slice(1).map(()=>({}))]:s.map(([t,n])=>{let r=R(e,t,n);return r.length>0?{expr:{ast:r[0]}}:{}}),a>=n)return r;let d=z(e,a+1,n,e=>M.has(F(e)));r.from=Me(e,a+1,d);let f=z(e,d,n,e=>Oe.has(F(e)));if(r.where=R(e,d,f).map(e=>({ast:e})),f<n){let t=F(e[f]),i=F(e[f+1])===`ALL`;r.set_op=`${t.toLowerCase()}${i?` all`:``}`,r._next=B(e,f+(i?2:1),n)}return r}function Ne(e,t){let n=new S(t).tokenize(e).filter(e=>e.kind!==`space`&&e.kind!==`comment`&&e.kind!==`terminator`);if(n.length===0)return null;let r=F(n[0]);return r!==`SELECT`&&r!==`WITH`?null:B(n,0,n.length)}var Pe=new Set(`ON.USING.WHERE.GROUP.ORDER.HAVING.LIMIT.OFFSET.FETCH.WINDOW.JOIN.INNER.LEFT.RIGHT.FULL.CROSS.NATURAL.OUTER.STRAIGHT_JOIN.APPLY.UNION.INTERSECT.EXCEPT.MINUS.SELECT.FROM.WITH.AND.OR.NOT.SET.VALUES.WHEN.THEN.ELSE.END.FOR.INTO.START.CONNECT.PIVOT.AS.BY.DISTINCT.ALL.ANY.CASE.IS.NULL.IN.EXISTS.BETWEEN.LIKE.ASC.DESC.RECURSIVE.TOP.PERCENT.TIES.ROW.ROWS.ONLY.NEXT.FIRST.PARTITION.OVER.LATERAL.RETURNING.OUTPUT.PRIOR.MATERIALIZED.FILTER.INSERT.UPDATE.DELETE.CREATE.TABLE.VIEW.EXPLAIN.PRAGMA.MERGE`.split(`.`));function V(e){return e?.kind===`identifier`&&Pe.has(e.upper??e.value.toUpperCase())}function H(e){return e!==void 0&&(e.kind===`identifier`||e.kind===`quoted_identifier`)}function Fe(e){let t=e.filter(e=>e.kind!==`space`&&e.kind!==`comment`),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(!H(r)||V(r))continue;let i=[_(r)],a=r;for(;H(t[e+2])&&t[e+1]?.kind===`punct`&&t[e+1].value===`.`;)a=t[e+2],i.push(_(a)),e+=2;let o=null,s=t[e+1];s?.kind===`identifier`&&s.upper===`AS`?(s=t[e+2],H(s)&&!V(s)&&(o=_(s),e+=2)):H(s)&&!V(s)&&(o=_(s),e+=1),n.push({name:i.join(`.`),alias:o,start:r.start,end:a.end,used:!1})}return n}function Ie(e){switch(e.kind){case`table`:case`cte-ref`:case`cte`:case`derived`:return e.label;default:return null}}function Le(e,t,n){let r=Fe(new S(n).tokenize(t)),i=e.nodes.map(e=>{let t=Ie(e);if(!t)return e;let n=t.toLowerCase(),i=e.alias?.toLowerCase()??null,a=r.find(e=>!e.used&&e.name.toLowerCase()===n&&(!i||e.alias?.toLowerCase()===i))??r.find(e=>!e.used&&e.alias?.toLowerCase()===n);return a?(a.used=!0,{...e,range:[a.start,a.end]}):e});return{...e,nodes:i}}function U(e){return e.label.toLowerCase()}function W(e){let t=new Map;for(let n of e.nodes){if(n.kind!==`table`)continue;let e=U(n);if(t.has(e))continue;let r=n.label.split(`.`);t.set(e,{key:e,qualifier:r.length>1?r.slice(0,-1).join(`.`):null,table:r[r.length-1]})}return[...t.values()]}function Re(e,t){let n=new Map,r=e.nodes.map(e=>{let r=e.kind===`table`&&e.columnCount===null&&t.has(U(e))?{...e,columnCount:t.get(U(e))??null}:{...e};return n.set(r.id,r),r}),i=new Set([`from`,`join`,`cte`,`setop`]);for(let t=0;t<r.length;t++){let t=!1;for(let a of r){if(a.columnCount!==null)continue;let r=e.edges.filter(e=>e.to===a.id&&i.has(e.kind)).map(e=>n.get(e.from)).filter(e=>e!==void 0),o=r.filter(e=>e.columnCount!==null);r.length!==0&&o.length===r.length&&(a.expandsSources?(a.columnCount=o.reduce((e,t)=>e+(t.columnCount??0),0),t=!0):r.length===1&&(a.columnCount=o[0].columnCount,t=!0))}if(!t)break}return{...e,nodes:r}}async function G(e,t){let n=ve(t.id),r;if(n)try{r=(await ye(n)).astify(_e(e,n,t.syntax),{database:n})}catch(e){return{ok:!1,reason:`parse-error`,message:e instanceof Error?e.message.split(`
8
+ `)[0]:String(e)}}else if(t.id===`oracle`)r=Ne(e,t.syntax);else return{ok:!1,reason:`unsupported-engine`,message:`No SQL grammar for ${t.label}`};let i=De(r);return i?{ok:!0,graph:Le(i,e,t.syntax)}:{ok:!1,reason:`not-a-query`,message:`Only SELECT statements have a structure graph`}}var ze=8,Be=3,Ve=[{kind:`column`,re:/unknown column '([^']+)'/i},{kind:`table`,re:/(?:unknown table|table) '([^']+)'(?: doesn't exist)?/i},{kind:`column`,re:/column "([^"]+)" does not exist/i},{kind:`table`,re:/relation "([^"]+)" does not exist/i},{kind:`column`,re:/no such column:\s*(\S+)/i},{kind:`table`,re:/no such table:\s*(\S+)/i},{kind:`column`,re:/invalid column name '([^']+)'/i},{kind:`table`,re:/invalid object name '([^']+)'/i},{kind:`column`,re:/ORA-00904:\s*"?([^":]+)"?:\s*invalid identifier/i}];function K(e){for(let{kind:t,re:n}of Ve){let r=n.exec(e);if(!r)continue;let i=r[1].trim().replace(/[`"'[\]]/g,``),a=i.split(`.`).pop()??i;if(a)return{kind:t,name:a}}return null}function q(e){return e.toLowerCase().replace(/[_\s-]/g,``)}function He(e,t,n){if(Math.abs(e.length-t.length)>n)return n+1;let r=Array.from({length:t.length+1},(e,t)=>t);for(let i=1;i<=e.length;i++){let a=[i],o=i;for(let n=1;n<=t.length;n++){let s=e[i-1]===t[n-1]?0:1,c=Math.min(r[n]+1,a[n-1]+1,r[n-1]+s);a.push(c),c<o&&(o=c)}if(o>n)return n+1;r=a}return r[t.length]}function Ue(e){return e.length<=4?1:e.length<=8?2:3}function J(e,t,n=Be){let r=q(e);if(!r)return[];let i=Ue(r),a=[];for(let n of t){let t=q(n);if(!t||t===r){t===r&&n!==e&&a.push({name:n,d:0,prefix:!0});continue}let o=He(r,t,i);o>i||a.push({name:n,d:o,prefix:t.startsWith(r)||r.startsWith(t)})}a.sort((e,t)=>e.d-t.d||Number(t.prefix)-Number(e.prefix)||e.name.localeCompare(t.name));let o=a.filter(e=>e.d===0);return(o.length>0?o:a).slice(0,n).map(e=>e.name)}function We(e){return e.filter(e=>e.kind!==`space`&&e.kind!==`comment`)}function Y(e,t){let n=[],r;try{r=We(new S(t).tokenize(e))}catch{return n}let i=t.quoteIdentifier(`x`).startsWith("`");for(let e=0;e<r.length;e++){let a=r[e];if(a.kind===`quoted_identifier`&&a.value.startsWith("`")&&!i){let e=a.value.slice(1,-1);n.push({code:`syntaxSwap`,params:{engine:t.label,found:a.value,expected:t.quoteIdentifier(e)}});break}}for(let e=1;e<r.length;e++){let i=r[e];if(i.kind===`quoted_identifier`&&i.value.startsWith(`"`)&&t.syntax.doubleQuoteIsIdentifier){let a=r[e-1];if(a.kind===`operator`&&/^(=|<>|!=|<|>|<=|>=)$/.test(a.value)){n.push({code:`doubleQuotedLiteral`,params:{engine:t.label,value:i.value.slice(1,-1)}});break}}}let a=t.syntax.limitStyle;for(let e=0;e<r.length;e++){let i=r[e];if(i.kind!==`identifier`)continue;let o=r[e+1],s=o?.kind===`number`?o.value:`n`;if(i.upper===`LIMIT`&&a!==`limit`&&o?.kind===`number`){n.push({code:`syntaxSwap`,params:{engine:t.label,found:`LIMIT ${s}`,expected:a===`top`?`SELECT TOP ${s}`:`FETCH FIRST ${s} ROWS ONLY`}});break}if(i.upper===`TOP`&&a!==`top`&&o?.kind===`number`&&r[e-1]?.upper===`SELECT`){n.push({code:`syntaxSwap`,params:{engine:t.label,found:`TOP ${s}`,expected:a===`limit`?`LIMIT ${s}`:`FETCH FIRST ${s} ROWS ONLY`}});break}}return n}function Ge(e){let{message:t,sql:n,engine:r,columns:i,tables:a}=e,o=[],s=K(t);if(s?.kind===`column`){let e=i.size>1,t=[],n=new Map;for(let[e,r]of i)for(let i of r)t.push(i),n.has(i)||n.set(i,e);let r=J(s.name,[...new Set(t)]);r.length>0&&o.push({code:`unknownColumn`,params:{name:s.name,suggestions:r.map(t=>e?`${n.get(t)}.${t}`:t).join(`, `)}})}if(s?.kind===`table`){let e=J(s.name,a);e.length>0&&o.push({code:`unknownTable`,params:{name:s.name,suggestions:e.join(`, `)}})}return[...o,...Y(n,r)]}var X=new Map,Z=new Map;function Q(e){let t=a.getState(),n=t.trees[e];return n?c(n,t.selectedNodeId[e])??l(n)[0]??null:null}function Ke(e,t){let n=s(e),i=r.getState().activeConnections.find(t=>t.id===e),a=n.capabilities.schemas?null:i?.database;return t||a||Q(e)}async function $(e,t){let a=i.getState().tabs[e]?.find(e=>e.id===t);if(!a?.error||!a.errorSql)return null;let c=s(e);if(!n(c))return null;let l={engine:c,sql:a.errorSql,message:a.error,tables:new Map},u=r.getState().activeConnections.find(t=>t.id===e),d=c.capabilities.schemas?null:u?.database,f=a.database||d||Q(e);if(!u?.serverConnectionId||!f)return l;let p=o(u.serverConnectionId),m=await G(l.sql,c).catch(()=>null),h=m?.ok?W(m.graph).slice(0,ze):[];return await Promise.all(h.map(async({qualifier:e,table:t})=>{let n=e??f,r=`${u.serverConnectionId}|${n}|${t}`,i=X.get(r);if(i){l.tables.set(t,i);return}try{let e=await c.introspect.listColumns(p,n,t);e.length>0&&(X.set(r,e),l.tables.set(t,e))}catch{}})),l}async function qe(e,t){let a=i.getState().tabs[e]?.find(e=>e.id===t);if(!a?.error)return[];let c=a.errorSql??``,l=s(e);if(!n(l))return[];let u=K(a.error);if(!c)return[];if(!u)return Y(c,l);let d=r.getState().activeConnections.find(t=>t.id===e),f=l.capabilities.schemas?null:d?.database,p=a.database||f||Q(e),m=new Map,h=[];if(d?.serverConnectionId&&p){let n=o(d.serverConnectionId);if(u.kind===`column`){let n=await $(e,t);for(let[e,t]of n?.tables??[])m.set(e,t.map(e=>e.name))}if(u.kind===`table`){let e=`${d.serverConnectionId}|${p}`,t=Z.get(e);if(t)h=t;else try{h=(await l.introspect.listTables(n,p)).map(e=>e.name);let t=await l.introspect.listViews(n,p).catch(()=>[]);h=[...h,...t],Z.set(e,h)}catch{}}}return Ge({message:a.error,sql:c,engine:l,columns:m,tables:h})}function Je(e,t){let n=r.getState().activeConnections.find(t=>t.id===e)?.serverConnectionId;if(!n)return;let i=t?`${n}|${t}|`:`${n}|`;for(let e of[...X.keys()])e.startsWith(i)&&X.delete(e);if(t){Z.delete(`${n}|${t}`);return}for(let e of[...Z.keys()])e.startsWith(`${n}|`)&&Z.delete(e)}export{G as a,S as c,ue as d,x as f,$ as i,pe as l,Ke as n,Re as o,de as p,qe as r,W as s,Je as t,_ as u};
@@ -0,0 +1 @@
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{a as u,i as d,n as f,r as p,t as m}from"./G06qjCej.js";import{t as h}from"./S7HbowYz.js";import{n as g}from"./D8_hwGjG.js";import{c as _,l as v}from"./CExE8dKz.js";import{n as y}from"./XCH_yrJ8.js";var b=e(t(),1),x=i();function S(){let{t:e}=r(),{activeDialog:t,closeDialog:i,setFooterMessage:S}=g(),C=h(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=t===`user-add`;function I(e){e||(L(),i())}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(),i()}return(0,x.jsx)(l,{open:F,onOpenChange:I,children:(0,x.jsxs)(s,{className:`sm:max-w-[450px]`,children:[(0,x.jsx)(a,{children:(0,x.jsx)(c,{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)(_,{htmlFor:`user-add-username`,children:e(`user.add.username`)}),(0,x.jsx)(v,{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)(_,{htmlFor:`user-add-host`,children:e(`user.add.host`)}),(0,x.jsx)(v,{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)(_,{htmlFor:`user-add-password`,children:e(`user.add.password`)}),(0,x.jsx)(v,{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)(_,{htmlFor:`user-add-confirm-password`,children:e(`user.add.confirmPassword`)}),(0,x.jsx)(v,{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)(_,{children:e(`user.add.plugin`)}),(0,x.jsxs)(m,{value:N,onValueChange:P,children:[(0,x.jsx)(d,{className:`w-full`,children:(0,x.jsx)(u,{})}),(0,x.jsxs)(f,{children:[(0,x.jsx)(p,{value:`mysql_native_password`,children:`mysql_native_password`}),(0,x.jsx)(p,{value:`caching_sha2_password`,children:`caching_sha2_password`})]})]})]})]}),(0,x.jsxs)(o,{children:[(0,x.jsx)(n,{variant:`outline`,onClick:()=>I(!1),children:e(`user.add.cancel`)}),(0,x.jsx)(n,{onClick:R,children:e(`user.add.add`)})]})]})})}export{S as UserAddDialog};
@@ -0,0 +1 @@
1
+ import{o as e,t}from"./CYz610vE.js";import{i as n,t as r}from"./eFSiW0Lh.js";var i={anthropic:`claude-opus-5`,"anthropic-profile":`claude-opus-5`,openai:`gpt-4o`,gemini:`gemini-2.5-flash`,cli:`claude`};function a(e,t){let n=e.trim();return n===``||Object.values(i).includes(n)?i[t]:e}var o=[{id:`2026-10-03`,agent:`0.9.0`,title:{en:`Redis, Elasticsearch and OpenSearch connections`,ko:`Redis, Elasticsearch, OpenSearch 연결 추가`,ja:`Redis・Elasticsearch・OpenSearch に接続できるようになりました`,zh:`现在可以连接 Redis、Elasticsearch 和 OpenSearch`,de:`Verbindungen zu Redis, Elasticsearch und OpenSearch`,fr:`Connexions Redis, Elasticsearch et OpenSearch`},items:{en:[`In “Connect to Database”, pick Redis and the tree on the left lists <code>db0</code>, <code>db1</code> and so on. Keys like <code>user:1</code> and <code>user:2</code> are grouped under a <code>user</code> folder. Double-click a key to edit it in a view that fits its type.`,`Type redis-cli commands in a console tab. Commands and the key names already loaded in the tree autocomplete.`,`Redis tools are in the Tools menu, or right-click an empty spot in the tree. Memory analysis shows how much memory each prefix and type takes and lists the 50 biggest keys; it analyses 20,000 keys in about a second. Delete by pattern shows the matching keys first and only deletes after you type the pattern again. Server info, slow log, client list, Pub/Sub and MONITOR are there too.`,`You can also pick Elasticsearch 8 or OpenSearch 2 in “Connect to Database”. Write requests the way you would in Kibana Dev Tools, e.g. <code>GET /orders/_search</code>, and press Ctrl+Enter (Cmd+Enter on a Mac); hits come back as a table. Right-click a row to open the document, edit its JSON and save. If someone changed it since you opened it, Planche reports a conflict instead of overwriting.`,`Click a grid cell that holds HTML and you see the rendered page; scripts in it do not run. The text, JSON and HTML viewers are bigger and have a full-screen button.`],ko:[`‘데이터베이스에 연결’ 창에서 Redis를 고르면 왼쪽 트리에 <code>db0</code>, <code>db1</code>…이 나옵니다. <code>user:1</code>, <code>user:2</code> 같은 키는 <code>user</code> 폴더 아래에 모입니다. 키를 더블클릭하면 타입에 맞는 편집 화면이 열립니다.`,`콘솔 탭에서는 redis-cli 명령을 그대로 입력하면 됩니다. 명령어와 트리에 불러온 키 이름이 자동완성됩니다.`,`Redis 도구는 도구 메뉴에서 열 수 있고, 트리 빈 곳을 우클릭해도 됩니다. 메모리 분석은 접두사와 타입별로 메모리를 얼마나 쓰는지, 가장 큰 키 50개가 무엇인지 보여 줍니다. 키 2만 개를 1초 정도면 훑습니다. 패턴으로 키 지우기는 지워질 키를 먼저 보여 주고, 패턴을 한 번 더 입력해야 지웁니다. 서버 정보, 슬로 로그, 클라이언트 목록, Pub/Sub, MONITOR도 여기서 엽니다.`,`Elasticsearch 8과 OpenSearch 2도 ‘데이터베이스에 연결’ 창에서 고를 수 있습니다. 콘솔에 Kibana Dev Tools처럼 <code>GET /orders/_search</code>를 쓰고 Ctrl+Enter(맥은 Cmd+Enter)를 누르면 검색 결과가 표로 나옵니다. 행을 우클릭해 문서를 열면 JSON을 고쳐서 저장할 수 있습니다. 문서를 연 뒤 다른 곳에서 내용이 바뀌었다면 덮어쓰지 않고 충돌이라고 알려 줍니다.`,`HTML이 든 그리드 셀을 클릭하면 렌더링된 페이지가 보입니다. 그 안의 스크립트는 실행되지 않습니다. 텍스트·JSON·HTML 뷰어 창도 커졌고 전체 화면 버튼이 생겼습니다.`],ja:[`「データベースに接続」で Redis を選ぶと、左のツリーに <code>db0</code>、<code>db1</code>… が並びます。<code>user:1</code> や <code>user:2</code> のようなキーは <code>user</code> フォルダにまとまります。キーをダブルクリックすると、型に合った編集画面が開きます。`,`コンソールタブには redis-cli のコマンドをそのまま入力できます。コマンド名と、ツリーに読み込んだキー名が補完されます。`,`Redis のツールは「ツール」メニューにあり、ツリーの空いているところを右クリックしても開けます。メモリ分析では、プレフィックスごと・型ごとのメモリ使用量と、大きいキーの上位 50 件が分かります。2 万キーなら 1 秒ほどで終わります。パターンによるキー削除は、削除対象のキーを先に一覧表示し、パターンをもう一度入力したときだけ削除します。サーバー情報、スローログ、クライアント一覧、Pub/Sub、MONITOR もここから開きます。`,`Elasticsearch 8 と OpenSearch 2 も「データベースに接続」から選べます。コンソールに Kibana Dev Tools と同じ書き方で <code>GET /orders/_search</code> と書き、Ctrl+Enter(Mac は Cmd+Enter)を押すと検索結果が表で返ってきます。行を右クリックしてドキュメントを開けば、JSON を直して保存できます。開いた後にほかで書き換えられていた場合は、上書きせず、競合が起きたことを知らせます。`,`HTML が入ったセルをクリックすると、描画されたページとして表示されます。中のスクリプトは実行されません。テキスト・JSON・HTML のビューアは大きくなり、全画面ボタンも付きました。`],zh:[`在“连接到数据库”中选择 Redis,左侧树中会列出 <code>db0</code>、<code>db1</code> 等数据库。像 <code>user:1</code>、<code>user:2</code> 这样的键会归到 <code>user</code> 文件夹下。双击一个键,会按它的类型打开对应的编辑界面。`,`在控制台标签页里可以直接输入 redis-cli 命令,命令名和树里已加载的键名都会自动补全。`,`Redis 工具在“工具”菜单里,在树的空白处右键也能找到。内存分析会告诉你每个前缀、每种类型各占多少内存,并列出最大的 50 个键;2 万个键大约 1 秒就能分析完。按模式删除键会先列出将被删除的键,要再输入一次模式才会真正删除。服务器信息、慢日志、客户端列表、Pub/Sub 和 MONITOR 也都从这里打开。`,`也可以在“连接到数据库”中选择 Elasticsearch 8 或 OpenSearch 2。在控制台里像在 Kibana Dev Tools 中那样写 <code>GET /orders/_search</code>,按 Ctrl+Enter(Mac 上是 Cmd+Enter),搜索结果会以表格返回。右键某一行可以打开该文档,修改 JSON 后保存;如果在你打开之后文档已被别人改过,Planche 会提示冲突,而不会直接覆盖。`,`单元格里存的是 HTML 时,点击即可看到渲染后的页面,其中的脚本不会执行。文本、JSON 和 HTML 查看器也变大了,并加了全屏按钮。`],de:[`Wählen Sie unter „Mit Datenbank verbinden“ Redis aus, dann zeigt der Baum links <code>db0</code>, <code>db1</code> usw. Schlüssel wie <code>user:1</code> und <code>user:2</code> landen in einem Ordner <code>user</code>. Ein Doppelklick auf einen Schlüssel öffnet ihn in einer Ansicht, die zu seinem Typ passt.`,`In einem Konsolen-Tab tippen Sie redis-cli-Befehle so, wie Sie es gewohnt sind. Befehle und die bereits im Baum geladenen Schlüsselnamen werden vervollständigt.`,`Die Redis-Werkzeuge finden Sie im Menü „Werkzeuge“ oder per Rechtsklick auf eine freie Stelle im Baum. Die Speicheranalyse zeigt, wie viel Speicher jedes Präfix und jeder Typ belegt, und listet die 50 größten Schlüssel; die Analyse von 20.000 Schlüsseln dauert etwa eine Sekunde. „Nach Muster löschen“ zeigt zuerst, welche Schlüssel betroffen sind, und löscht erst, wenn Sie das Muster noch einmal eingeben. Serverinfo, Slow Log, Client-Liste, Pub/Sub und MONITOR öffnen Sie dort ebenfalls.`,`Unter „Mit Datenbank verbinden“ können Sie auch Elasticsearch 8 oder OpenSearch 2 auswählen. Schreiben Sie Anfragen wie in den Kibana Dev Tools, etwa <code>GET /orders/_search</code>, und drücken Sie Strg+Enter (auf dem Mac Cmd+Enter); die Treffer kommen als Tabelle zurück. Per Rechtsklick auf eine Zeile öffnen Sie das Dokument, ändern das JSON und speichern. Hat jemand anderes es inzwischen geändert, meldet Planche einen Konflikt, statt es zu überschreiben.`,`Steht in einer Zelle HTML, sehen Sie nach einem Klick die gerenderte Seite; Skripte darin laufen nicht. Die Text-, JSON- und HTML-Viewer sind größer und haben jetzt eine Vollbild-Schaltfläche.`],fr:[`Choisissez Redis dans « Se connecter à une base de données » : l’arborescence à gauche affiche <code>db0</code>, <code>db1</code>, etc. Les clés comme <code>user:1</code> et <code>user:2</code> sont rangées dans un dossier <code>user</code>. Un double-clic sur une clé l’ouvre dans une vue adaptée à son type.`,`Dans un onglet console, tapez vos commandes redis-cli telles quelles. Les commandes et les noms de clés déjà chargés dans l’arborescence se complètent automatiquement.`,`Les outils Redis s’ouvrent depuis le menu Outils ou d’un clic droit sur une zone vide de l’arborescence. L’analyse mémoire montre combien de mémoire occupe chaque préfixe et chaque type, et liste les 50 plus grosses clés ; l’analyse de 20 000 clés prend environ une seconde. La suppression par motif affiche d’abord les clés concernées et ne supprime qu’une fois le motif retapé. Les infos serveur, le slow log, la liste des clients, Pub/Sub et MONITOR s’ouvrent au même endroit.`,`Vous pouvez aussi choisir Elasticsearch 8 ou OpenSearch 2 dans « Se connecter à une base de données ». Écrivez vos requêtes comme dans Kibana Dev Tools, par exemple <code>GET /orders/_search</code>, puis Ctrl+Entrée (Cmd+Entrée sur Mac) : les résultats arrivent sous forme de tableau. Faites un clic droit sur une ligne pour ouvrir le document, modifier son JSON et l’enregistrer. Si quelqu’un l’a modifié entre-temps, Planche signale un conflit au lieu de l’écraser.`,`Quand une cellule contient du HTML, un clic affiche la page rendue ; les scripts qu’elle contient ne s’exécutent pas. Les visionneuses texte, JSON et HTML sont plus grandes et ont un bouton plein écran.`]}}],s=[`en`,`ko`,`ja`,`zh`,`de`,`fr`];function c(){return o[0]?.id??``}function l(e,t=3){return o.filter(t=>!e||t.id>e).slice(0,t)}var u={confirmDestructive:!0,warnInEditor:!0,previewAffectedRows:!0,allowReadOnlyOverride:!0,previewGridCommit:!0,resultRowLimit:500,executeScope:`script`},d=t()(n(t=>({...u,locale:`auto`,onboardingDismissed:!1,termsAcceptedVersion:0,changelogSeen:``,analyticsEnabled:!0,persistQueryHistory:!0,aiPreferences:{provider:`anthropic`,model:i.anthropic,baseUrl:``,remember:!1},update:e=>t(e),setOnboardingDismissed:e=>t({onboardingDismissed:e}),acceptTerms:()=>{e(`terms_accept`,{version:1}),t(e=>({termsAcceptedVersion:1,changelogSeen:e.termsAcceptedVersion===0&&!e.changelogSeen?c():e.changelogSeen}))},markChangelogSeen:()=>t({changelogSeen:c()}),setLocale:n=>{e(`locale_change`,{locale:n}),t({locale:n})},setAnalyticsEnabled:e=>t({analyticsEnabled:e}),setPersistQueryHistory:e=>t({persistQueryHistory:e}),setAiPreferences:e=>t(t=>({aiPreferences:{...t.aiPreferences,...e}}))}),{name:`planche-settings`,storage:r()})),f=()=>d(e=>e.termsAcceptedVersion>=1);export{s as a,o as i,d as n,l as o,f as r,a as s,u as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{i as r,r as i}from"./Cu_sGzNJ.js";import{a,i as o,n as s,o as c,t as l}from"./DzRyVlxz.js";import{t as u}from"./S7HbowYz.js";import{n as d,t as f}from"./D8_hwGjG.js";import{r as p}from"./BRZhVXRC.js";import{a as m,h}from"./BnJGrP6V.js";import{c as g,l as _,ut as v}from"./CExE8dKz.js";var y=e(t(),1),b=i();function x(){let{t:e}=r(),{activeDialog:t,closeDialog:i}=d(),x=f(`create-schema`),S=t===`create-schema`,[C,w]=(0,y.useState)(``),[T,E]=(0,y.useState)(!1),[D,O]=(0,y.useState)(null);function k(e){e||(i(),w(``),O(null))}async function A(){let e=x?.connectionId??u.getState().activeConnectionId,t=C.trim();if(!(!e||!t)){O(null),E(!0);try{await m(e,p(e).getQuery(`CREATE_SCHEMA`,t)),await h(e),k(!1)}catch(e){O(e instanceof Error?e.message:String(e))}finally{E(!1)}}}return(0,b.jsx)(l,{open:S,onOpenChange:k,children:(0,b.jsxs)(s,{className:`sm:max-w-[420px]`,children:[(0,b.jsx)(a,{children:(0,b.jsx)(c,{children:e(`database.schema.createTitle`)})}),(0,b.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,b.jsx)(g,{htmlFor:`schema-name`,children:e(`database.schema.name`)}),(0,b.jsx)(_,{id:`schema-name`,value:C,autoFocus:!0,placeholder:e(`database.schema.namePlaceholder`),onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!v(e)&&A()}})]}),D&&(0,b.jsx)(`p`,{className:`text-xs text-destructive leading-relaxed`,children:D}),(0,b.jsxs)(o,{children:[(0,b.jsx)(n,{variant:`outline`,onClick:()=>k(!1),children:e(`database.schema.cancel`)}),(0,b.jsx)(n,{onClick:()=>void A(),disabled:!C.trim()||T,children:e(`database.schema.create`)})]})]})})}export{x as CreateSchemaDialog};
@@ -0,0 +1 @@
1
+ import{r as e}from"./CYz610vE.js";import{t}from"./CiL8zoYm.js";import{r as n,t as r}from"./BDtsGuIR.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./DzRyVlxz.js";import{a as f,i as p,n as m,r as h,t as g}from"./G06qjCej.js";import{n as _}from"./DU-Eln5x.js";import{n as v}from"./D8_hwGjG.js";import{t as y}from"./CrhJJH3f.js";var b=a();function x(){let a=v(e=>e.activeDialog),x=v(e=>e.closeDialog),S=_(),{t:C}=i();return(0,b.jsx)(d,{open:a===`general-settings`,onOpenChange:e=>{e||x()},children:(0,b.jsxs)(c,{className:`sm:max-w-[560px]`,children:[(0,b.jsxs)(o,{children:[(0,b.jsx)(l,{children:C(`settings.general.title`)}),(0,b.jsx)(u,{children:C(`settings.general.description`)})]}),(0,b.jsxs)(`div`,{className:`grid gap-2`,children:[(0,b.jsx)(y,{id:`s-history`,checked:S.persistQueryHistory,onChange:e=>S.setPersistQueryHistory(e),label:C(`settings.persistHistory`),hint:C(`settings.persistHistoryHint`)}),(0,b.jsxs)(`div`,{className:`grid grid-cols-[1fr_200px] items-center gap-3 rounded-md border p-3`,children:[(0,b.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,b.jsx)(`span`,{className:`text-sm font-medium`,children:C(`settings.language`)}),(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:C(`settings.languageHint`)})]}),(0,b.jsxs)(g,{value:S.locale,onValueChange:e=>S.setLocale(e),children:[(0,b.jsx)(p,{children:(0,b.jsx)(f,{})}),(0,b.jsxs)(m,{children:[(0,b.jsx)(h,{value:`auto`,children:C(`language.auto`,{name:C(`language.${n()}`)})}),r.map(e=>(0,b.jsx)(h,{value:e,children:C(`language.${e}`)},e))]})]})]}),(0,b.jsx)(y,{id:`s-analytics`,checked:S.analyticsEnabled,onChange:S.setAnalyticsEnabled,label:C(`settings.analytics`),hint:e()?C(`settings.analyticsHint`):C(`settings.analyticsUnavailableHint`)})]}),(0,b.jsx)(s,{children:(0,b.jsx)(t,{onClick:x,children:C(`settings.done`)})})]})})}export{x as GeneralSettingsDialog};
@@ -0,0 +1 @@
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{t as n}from"./CiL8zoYm.js";import{a as r}from"./BDtsGuIR.js";import{i,n as a,r as o,t as s}from"./Cu_sGzNJ.js";import{a as ee,i as te,n as ne,o as re,t as c}from"./DzRyVlxz.js";import{t as l}from"./S7HbowYz.js";import{n as ie}from"./D8_hwGjG.js";import{l as u}from"./BkXrfAoR.js";import{t as d}from"./BRZhVXRC.js";import{$t as ae,C as f,Mt as oe,Qt as p,S as m,T as h,Wt as se,Yt as ce,Zt as le,b as ue,jt as g,w as _,x as v}from"./CExE8dKz.js";var y=a(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),b=a(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),x=a(`skull`,[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]),de=a(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]),S=e(t(),1),C=o(),w=10,fe=[2,5,10,30];function T(){let e=l.getState();return e.activeConnections.find(t=>t.id===e.activeConnectionId)?.serverConnectionId??null}async function pe(){let e=T();if(!e)throw Error(r.t(`command.noActiveConnection`));let t=await u(e,d().getQuery(`SHOW_PROCESS_LIST`));return t.records.map(e=>{let n={};return t.fields.forEach((t,r)=>{n[t.name]=e[r]}),{...n,Id:String(n.Id)}})}function E(e){return/^(sleep|idle)/i.test(e.Command??``)}function me(e){return/lock/i.test(e.State??``)}function he(e){return/PROCESSLIST|pg_stat_activity/i.test(e.Info??``)}function D(e){let t=Number(e.Time);return Number.isFinite(t)?t:0}function O(e){return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m ${e%60}s`:`${Math.floor(e/3600)}h ${Math.floor(e%3600/60)}m`}function k({icon:e,label:t,value:n,tone:r}){return(0,C.jsxs)(`div`,{className:`flex min-w-[120px] flex-1 items-center gap-2.5 rounded-md border bg-muted/30 px-3 py-1.5`,children:[(0,C.jsx)(`div`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md [&_svg]:size-3.5 ${r===`warn`?`bg-catppuccin-yellow/15 text-catppuccin-yellow`:`bg-primary/10 text-primary`}`,children:e}),(0,C.jsxs)(`div`,{className:`min-w-0`,children:[(0,C.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:t}),(0,C.jsx)(`div`,{className:`truncate text-sm font-semibold tabular-nums`,children:n})]})]})}function A(){let{t:e}=i(),{activeDialog:t,closeDialog:r,setFooterMessage:a,requestDestructiveConfirm:o}=ie(),[l,A]=(0,S.useState)([]),[j,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(5),[F,I]=(0,S.useState)(null),[L,R]=(0,S.useState)(``),[z,ge]=(0,S.useState)(!1),[B,_e]=(0,S.useState)(!0),[V,H]=(0,S.useState)(!1),[U,ve]=(0,S.useState)(null),[W,G]=(0,S.useState)(!1),K=(0,S.useRef)(null),q=t===`process-list`,J=(0,S.useCallback)(()=>Promise.resolve().then(()=>(H(!0),pe())).then(e=>{A(e),ve(new Date)}).catch(t=>a(e(`command.processList.loadError`,{message:t instanceof Error?t.message:String(t)}))).finally(()=>H(!1)),[a,e]);(0,S.useEffect)(()=>{q&&J()},[q,J]),(0,S.useEffect)(()=>(K.current&&=(clearInterval(K.current),null),j&&q&&(K.current=setInterval(()=>{J()},N*1e3)),()=>{K.current&&=(clearInterval(K.current),null)}),[j,N,q,J]);function Y(e){e||(M(!1),I(null),R(``),r())}let X=(0,S.useMemo)(()=>{let e=l.filter(E).length,t=l.filter(e=>!E(e)).reduce((e,t)=>Math.max(e,D(t)),0);return{total:l.length,active:l.length-e,idle:e,longest:t}},[l]),Z=(0,S.useMemo)(()=>{let e=L.trim().toLowerCase();return l.filter(t=>z&&E(t)?!1:!e||[t.Id,t.User,t.Host,t.db,t.Command,t.State,t.Info].some(t=>(t??``).toString().toLowerCase().includes(e))).sort((e,t)=>B?D(t)-D(e):D(e)-D(t))},[l,L,z,B]),Q=l.find(e=>e.Id===F)??null,ye=(0,S.useCallback)(()=>{Q?.Info&&navigator.clipboard.writeText(Q.Info).then(()=>{G(!0),setTimeout(()=>G(!1),1500)})},[Q]);async function $(t){let n=t??F;if(!n){a(e(`command.processList.selectToKill`));return}let r=T();if(!r)return;let i=l.find(e=>e.Id===n),s=d().getQuery(`KILL_QUERY`,String(n));if(await o({title:e(`command.processList.killConfirmTitle`,{id:n}),description:e(`command.processList.killConfirmDescription`,{user:i?.User??`?`,host:i?.Host??`?`}),confirmLabel:e(`command.processList.killProcess`),statements:[s]}))try{await u(r,s),a(e(`command.processList.killed`,{id:n})),F===n&&I(null),J()}catch(t){a(e(`command.processList.killError`,{message:t instanceof Error?t.message:String(t)}))}}return(0,C.jsx)(c,{open:q,onOpenChange:Y,children:(0,C.jsxs)(ne,{className:`flex max-h-[85vh] flex-col sm:max-w-[1000px]`,children:[(0,C.jsx)(ee,{children:(0,C.jsxs)(re,{className:`flex items-center gap-2`,children:[e(`command.processList.title`),U&&(0,C.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:e(`command.processList.updatedAt`,{time:U.toLocaleTimeString(void 0,{hour12:!1})})})]})}),(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,C.jsx)(k,{icon:(0,C.jsx)(y,{}),label:e(`command.processList.stats.total`),value:X.total}),(0,C.jsx)(k,{icon:(0,C.jsx)(ae,{}),label:e(`command.processList.stats.active`),value:X.active}),(0,C.jsx)(k,{icon:(0,C.jsx)(b,{}),label:e(`command.processList.stats.idle`),value:X.idle}),(0,C.jsx)(k,{icon:(0,C.jsx)(de,{}),label:e(`command.processList.stats.longest`),value:O(X.longest),tone:X.longest>=w?`warn`:void 0})]}),(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,C.jsxs)(`div`,{className:`relative`,children:[(0,C.jsx)(g,{className:`pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground`}),(0,C.jsx)(`input`,{className:`h-7 w-56 rounded border bg-background pl-7 pr-6 text-xs placeholder:text-muted-foreground`,placeholder:e(`command.processList.filterPlaceholder`),value:L,onChange:e=>R(e.target.value)}),L&&(0,C.jsx)(`button`,{type:`button`,className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>R(``),children:(0,C.jsx)(s,{className:`size-3`})})]}),(0,C.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-xs`,children:[(0,C.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:z,onChange:e=>ge(e.target.checked)}),e(`command.processList.hideIdle`)]}),(0,C.jsx)(`div`,{className:`flex-1`}),(0,C.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-1.5 text-xs`,children:[(0,C.jsx)(`input`,{type:`checkbox`,className:`accent-primary`,checked:j,onChange:e=>M(e.target.checked)}),e(`command.processList.autoRefresh`)]}),(0,C.jsx)(`select`,{className:`h-7 rounded border bg-background px-1.5 text-xs disabled:opacity-50`,value:N,onChange:e=>P(Number(e.target.value)),disabled:!j,children:fe.map(e=>(0,C.jsxs)(`option`,{value:e,children:[e,`s`]},e))}),(0,C.jsxs)(n,{variant:`outline`,size:`sm`,className:`h-7`,onClick:()=>{J()},disabled:V,children:[(0,C.jsx)(oe,{className:`mr-1 size-3.5 ${V?`animate-spin`:``}`}),e(`command.processList.refresh`)]})]}),(0,C.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-md border`,children:(0,C.jsxs)(ue,{className:`text-xs`,children:[(0,C.jsx)(_,{className:`sticky top-0 z-10 bg-background`,children:(0,C.jsxs)(h,{children:[(0,C.jsx)(f,{className:`w-[70px]`,children:e(`command.processList.columns.id`)}),(0,C.jsx)(f,{className:`w-[100px]`,children:e(`command.processList.columns.user`)}),(0,C.jsx)(f,{className:`w-[130px]`,children:e(`command.processList.columns.host`)}),(0,C.jsx)(f,{className:`w-[100px]`,children:e(`command.processList.columns.db`)}),(0,C.jsx)(f,{className:`w-[90px]`,children:e(`command.processList.columns.command`)}),(0,C.jsx)(f,{className:`w-[80px] cursor-pointer select-none`,onClick:()=>_e(e=>!e),children:(0,C.jsxs)(`span`,{className:`flex items-center gap-1`,children:[e(`command.processList.columns.time`),B?(0,C.jsx)(p,{className:`size-3 text-primary`}):(0,C.jsx)(le,{className:`size-3 text-primary`})]})}),(0,C.jsx)(f,{className:`w-[130px]`,children:e(`command.processList.columns.state`)}),(0,C.jsx)(f,{children:e(`command.processList.columns.info`)}),(0,C.jsx)(f,{className:`w-[50px]`})]})}),(0,C.jsx)(v,{children:Z.length===0?(0,C.jsx)(h,{children:(0,C.jsx)(m,{colSpan:9,className:`py-8 text-center text-muted-foreground`,children:l.length===0?e(`command.processList.empty`):e(`command.processList.noMatch`)})}):Z.map(t=>{let n=E(t),r=D(t),i=!n&&r>=w,a=me(t),o=he(t);return(0,C.jsxs)(h,{"data-state":F===t.Id?`selected`:void 0,className:`cursor-pointer ${n?`text-muted-foreground`:``} ${a?`bg-destructive/5`:i?`bg-catppuccin-yellow/5`:``}`,onClick:()=>I(t.Id),children:[(0,C.jsx)(m,{className:`font-mono tabular-nums`,children:(0,C.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t.Id,o&&(0,C.jsx)(`span`,{className:`rounded bg-primary/10 px-1 text-[9px] font-semibold text-primary`,title:e(`command.processList.selfHint`),children:e(`command.processList.self`)})]})}),(0,C.jsx)(m,{children:t.User}),(0,C.jsx)(m,{className:`font-mono`,children:t.Host}),(0,C.jsx)(m,{className:`font-mono`,children:t.db??``}),(0,C.jsx)(m,{children:(0,C.jsx)(`span`,{className:`rounded px-1.5 py-px text-[10px] font-medium ${n?`bg-muted`:`bg-green-500/10 text-green-600 dark:text-green-400`}`,children:t.Command})}),(0,C.jsx)(m,{className:`tabular-nums ${i?`font-semibold text-catppuccin-yellow`:``}`,children:O(r)}),(0,C.jsx)(m,{className:a?`font-medium text-destructive`:``,children:t.State}),(0,C.jsx)(m,{className:`max-w-[260px] truncate font-mono`,title:t.Info??``,children:t.Info??``}),(0,C.jsx)(m,{className:`text-right`,children:(0,C.jsx)(`button`,{type:`button`,className:`rounded p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive`,title:e(`command.processList.kill`),onClick:e=>{e.stopPropagation(),$(t.Id)},children:(0,C.jsx)(x,{className:`size-3.5`})})})]},t.Id)})})]})}),Q&&(0,C.jsxs)(`div`,{className:`shrink-0 rounded-md border`,children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 border-b bg-muted/30 px-3 py-1`,children:[(0,C.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e(`command.processList.statementOf`,{id:Q.Id})}),(0,C.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[Q.User,`@`,Q.Host,Q.db?` · ${Q.db}`:``]}),(0,C.jsx)(`div`,{className:`flex-1`}),(0,C.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-40`,onClick:ye,disabled:!Q.Info,children:[W?(0,C.jsx)(ce,{className:`size-3`}):(0,C.jsx)(se,{className:`size-3`}),e(W?`command.processList.copied`:`command.processList.copy`)]})]}),(0,C.jsx)(`pre`,{className:`max-h-32 overflow-auto whitespace-pre-wrap break-words px-3 py-2 font-mono text-xs`,children:Q.Info||(0,C.jsx)(`span`,{className:`italic text-muted-foreground`,children:e(`command.processList.noStatement`)})})]}),(0,C.jsxs)(te,{children:[(0,C.jsx)(n,{variant:`destructive`,onClick:()=>{$()},disabled:!F,children:e(`command.processList.killProcess`)}),(0,C.jsx)(n,{variant:`outline`,onClick:()=>Y(!1),children:e(`command.close`)})]})]})})}export{A as ProcessListDialog};
@@ -0,0 +1 @@
1
+ import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{a as r,i,l as a}from"./CiL8zoYm.js";import{r as o,t as s}from"./BDtsGuIR.js";import{i as c,n as l,r as u}from"./Cu_sGzNJ.js";import{C as d,a as f,d as p,f as m,l as h,n as g,o as _,r as v,s as y,t as b}from"./DzRyVlxz.js";import{t as x}from"./S7HbowYz.js";import{n as S,r as C}from"./DU-Eln5x.js";import{n as w}from"./D8_hwGjG.js";import{n as T,t as E}from"./C1gqjEN3.js";import{n as ee,t as D}from"./BkXrfAoR.js";import{i as O,t as k}from"./BnJGrP6V.js";import{$t as te,Dt as A,Et as j,H as M,It as N,Lt as ne,Mt as P,Nt as F,Ot as I,Pt as re,Q as ie,St as ae,Tt as oe,Ut as se,Vt as ce,W as le,Wt as ue,Yt as de,Z as fe,bt as pe,ht as me,it as he,jt as ge,kt as _e,nt as ve,rt as ye,tt as be,xt as xe,yt as Se,z as Ce,zt as we}from"./CExE8dKz.js";var Te=l(`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`}]]),Ee=l(`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`}]]),De=l(`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`}]]),Oe=l(`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`}]]),ke=l(`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`}]]),Ae=l(`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`}]]),je=l(`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`}]]),Me=l(`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`}]]),Ne=l(`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`}]]),Pe=l(`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`}]]),Fe=l(`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`}]]),Ie=l(`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`}]]),Le=l(`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`}]]),Re=l(`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`}]]),ze=l(`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`}]]),Be=l(`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`}]]),Ve=l(`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`}]]),He=l(`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`}]]),Ue=l(`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`}]]),L=e(n(),1),We=1,Ge=.9,Ke=.8,qe=.17,R=.1,z=.999,Je=.9999,B=.99,V=/[\\\/_+.#"@\[\(\{&]/,Ye=/[\\\/_+.#"@\[\(\{&]/g,Xe=/[\s-]/,H=/[\s-]/g;function U(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?We:B;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=U(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=We:V.test(e.charAt(l-1))?(d*=Ke,p=e.slice(i,l-1).match(Ye),p&&i>0&&(d*=z**+p.length)):Xe.test(e.charAt(l-1))?(d*=Ge,m=e.slice(i,l-1).match(H),m&&i>0&&(d*=z**+m.length)):(d*=qe,i>0&&(d*=z**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Je)),(d<R&&n.charAt(l-1)===r.charAt(a+1)||r.charAt(a+1)===r.charAt(a)&&n.charAt(l-1)!==r.charAt(a))&&(f=U(e,t,n,r,l+1,a+2,o),f*R>d&&(d=f*R)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Ze(e){return e.toLowerCase().replace(H,` `)}function Qe(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,U(e,t,Ze(e),Ze(t),0,0,{})}var W=`[cmdk-group=""]`,G=`[cmdk-group-items=""]`,$e=`[cmdk-group-heading=""]`,et=`[cmdk-item=""]`,tt=`${et}:not([aria-disabled="true"])`,nt=`cmdk-item-select`,K=`data-value`,rt=(e,t,n)=>Qe(e,t,n),it=L.createContext(void 0),q=()=>L.useContext(it),at=L.createContext(void 0),ot=()=>L.useContext(at),st=L.createContext(void 0),ct=L.forwardRef((e,t)=>{let n=X(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),i=X(()=>new Set),a=X(()=>new Map),o=X(()=>new Map),s=X(()=>new Set),c=yt(e),{label:l,children:u,value:f,onValueChange:p,filter:m,shouldFilter:h,loop:g,disablePointerSelection:_=!1,vimBindings:v=!0,...y}=e,b=d(),x=d(),S=d(),C=L.useRef(null),w=xt();Y(()=>{if(f!==void 0){let e=f.trim();n.current.value=e,T.emit()}},[f]),Y(()=>{w(6,te)},[]);let T=L.useMemo(()=>({subscribe:e=>(s.current.add(e),()=>s.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`)k(),D(),w(1,O);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(S);e?e.focus():(i=document.getElementById(b))==null||i.focus()}if(w(7,()=>{n.current.selectedItemId=A()?.id,T.emit()}),r||w(5,te),c.current?.value!==void 0){let e=t??``;(o=(a=c.current).onValueChange)==null||o.call(a,e);return}}T.emit()}},emit:()=>{s.current.forEach(e=>e())}}),[]),E=L.useMemo(()=>({value:(e,t,r)=>{t!==o.current.get(e)?.value&&(o.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,ee(t,r)),w(2,()=>{D(),T.emit()}))},item:(e,t)=>(i.current.add(e),t&&(a.current.has(t)?a.current.get(t).add(e):a.current.set(t,new Set([e]))),w(3,()=>{k(),D(),n.current.value||O(),T.emit()}),()=>{o.current.delete(e),i.current.delete(e),n.current.filtered.items.delete(e);let t=A();w(4,()=>{k(),t?.getAttribute(`id`)===e&&O(),T.emit()})}),group:e=>(a.current.has(e)||a.current.set(e,new Set),()=>{o.current.delete(e),a.current.delete(e)}),filter:()=>c.current.shouldFilter,label:l||e[`aria-label`],getDisablePointerSelection:()=>c.current.disablePointerSelection,listId:b,inputId:S,labelId:x,listInnerRef:C}),[]);function ee(e,t){let r=c.current?.filter??rt;return e?r(e,n.current.search,t):0}function D(){if(!n.current.search||c.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=a.current.get(n),i=0;r.forEach(t=>{let n=e.get(t);i=Math.max(n,i)}),t.push([n,i])});let r=C.current;j().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(G);t?t.appendChild(e.parentElement===t?e:e.closest(`${G} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${G} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=C.current?.querySelector(`${W}[${K}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=j().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(K);T.setState(`value`,e||void 0)}function k(){if(!n.current.search||c.current.shouldFilter===!1){n.current.filtered.count=i.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of i.current){let r=ee(o.current.get(t)?.value??``,o.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of a.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 te(){var e;let t=A();t&&(t.parentElement?.firstChild===t&&((e=t.closest(W)?.querySelector($e))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function A(){return C.current?.querySelector(`${et}[aria-selected="true"]`)}function j(){return Array.from(C.current?.querySelectorAll(tt)||[])}function M(e){let t=j()[e];t&&T.setState(`value`,t.getAttribute(K))}function N(e){var t;let n=A(),r=j(),i=r.findIndex(e=>e===n),a=r[i+e];(t=c.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&T.setState(`value`,a.getAttribute(K))}function ne(e){let t=A()?.closest(W),n;for(;t&&!n;)t=e>0?_t(t,W):vt(t,W),n=t?.querySelector(tt);n?T.setState(`value`,n.getAttribute(K)):N(e)}let P=()=>M(j().length-1),F=e=>{e.preventDefault(),e.metaKey?P():e.altKey?ne(1):N(1)},I=e=>{e.preventDefault(),e.metaKey?M(0):e.altKey?ne(-1):N(-1)};return L.createElement(r.div,{ref:t,tabIndex:-1,...y,"cmdk-root":``,onKeyDown:e=>{var t;(t=y.onKeyDown)==null||t.call(y,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:v&&e.ctrlKey&&F(e);break;case`ArrowDown`:F(e);break;case`p`:case`k`:v&&e.ctrlKey&&I(e);break;case`ArrowUp`:I(e);break;case`Home`:e.preventDefault(),M(0);break;case`End`:e.preventDefault(),P();break;case`Enter`:{e.preventDefault();let t=A();if(t){let e=new Event(nt);t.dispatchEvent(e)}}}}},L.createElement(`label`,{"cmdk-label":``,htmlFor:E.inputId,id:E.labelId,style:Ct},l),Q(e,e=>L.createElement(at.Provider,{value:T},L.createElement(it.Provider,{value:E},e))))}),lt=L.forwardRef((e,t)=>{let n=d(),i=L.useRef(null),o=L.useContext(st),s=q(),c=yt(e),l=c.current?.forceMount??o?.forceMount;Y(()=>{if(!l)return s.item(n,o?.id)},[l]);let u=bt(n,i,[e.value,e.children,i],e.keywords),f=ot(),p=Z(e=>e.value&&e.value===u.current),m=Z(e=>l||s.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);L.useEffect(()=>{let t=i.current;if(!(!t||e.disabled))return t.addEventListener(nt,h),()=>t.removeEventListener(nt,h)},[m,e.onSelect,e.disabled]);function h(){var e,t;g(),(t=(e=c.current).onSelect)==null||t.call(e,u.current)}function g(){f.setState(`value`,u.current,!0)}if(!m)return null;let{disabled:_,value:v,onSelect:y,forceMount:b,keywords:x,...S}=e;return L.createElement(r.div,{ref:a(i,t),...S,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!_,"aria-selected":!!p,"data-disabled":!!_,"data-selected":!!p,onPointerMove:_||s.getDisablePointerSelection()?void 0:g,onClick:_?void 0:h},e.children)}),ut=L.forwardRef((e,t)=>{let{heading:n,children:i,forceMount:o,...s}=e,c=d(),l=L.useRef(null),u=L.useRef(null),f=d(),p=q(),m=Z(e=>o||p.filter()===!1?!0:!e.search||e.filtered.groups.has(c));Y(()=>p.group(c),[]),bt(c,l,[e.value,e.heading,u]);let h=L.useMemo(()=>({id:c,forceMount:o}),[o]);return L.createElement(r.div,{ref:a(l,t),...s,"cmdk-group":``,role:`presentation`,hidden:!m||void 0},n&&L.createElement(`div`,{ref:u,"cmdk-group-heading":``,"aria-hidden":!0,id:f},n),Q(e,e=>L.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?f:void 0},L.createElement(st.Provider,{value:h},e))))}),dt=L.forwardRef((e,t)=>{let{alwaysRender:n,...i}=e,o=L.useRef(null),s=Z(e=>!e.search);return!n&&!s?null:L.createElement(r.div,{ref:a(o,t),...i,"cmdk-separator":``,role:`separator`})}),ft=L.forwardRef((e,t)=>{let{onValueChange:n,...i}=e,a=e.value!=null,o=ot(),s=Z(e=>e.search),c=Z(e=>e.selectedItemId),l=q();return L.useEffect(()=>{e.value!=null&&o.setState(`search`,e.value)},[e.value]),L.createElement(r.input,{ref:t,...i,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":c,id:l.inputId,type:`text`,value:a?e.value:s,onChange:e=>{a||o.setState(`search`,e.target.value),n?.(e.target.value)}})}),pt=L.forwardRef((e,t)=>{let{children:n,label:i=`Suggestions`,...o}=e,s=L.useRef(null),c=L.useRef(null),l=Z(e=>e.selectedItemId),u=q();return L.useEffect(()=>{if(c.current&&s.current){let e=c.current,t=s.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)}}},[]),L.createElement(r.div,{ref:a(s,t),...o,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":l,"aria-label":i,id:u.listId},Q(e,e=>L.createElement(`div`,{ref:a(c,u.listInnerRef),"cmdk-list-sizer":``},e)))}),mt=L.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return L.createElement(y,{open:n,onOpenChange:r},L.createElement(m,{container:o},L.createElement(p,{"cmdk-overlay":``,className:i}),L.createElement(h,{"aria-label":e.label,"cmdk-dialog":``,className:a},L.createElement(ct,{ref:t,...s}))))}),ht=L.forwardRef((e,t)=>Z(e=>e.filtered.count===0)?L.createElement(r.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),gt=L.forwardRef((e,t)=>{let{progress:n,children:i,label:a=`Loading...`,...o}=e;return L.createElement(r.div,{ref:t,...o,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a},Q(e,e=>L.createElement(`div`,{"aria-hidden":!0},e)))}),J=Object.assign(ct,{List:pt,Item:lt,Input:ft,Group:ut,Separator:dt,Dialog:mt,Empty:ht,Loading:gt});function _t(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function vt(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function yt(e){let t=L.useRef(e);return Y(()=>{t.current=e}),t}var Y=typeof window>`u`?L.useEffect:L.useLayoutEffect;function X(e){let t=L.useRef();return t.current===void 0&&(t.current=e()),t}function Z(e){let t=ot(),n=()=>e(t.snapshot());return L.useSyncExternalStore(t.subscribe,n,n)}function bt(e,t,n,r=[]){let i=L.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 xt=()=>{let[e,t]=L.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 St(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&&L.isValidElement(t)?L.cloneElement(St(t),{ref:t.ref},n(t.props.children)):n(t)}var Ct={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},$=u();function wt({className:e,...t}){return(0,$.jsx)(J,{"data-slot":`command`,className:i(`flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground`,e),...t})}function Tt({title:e=`Command Palette`,description:t=`Search for a command to run...`,children:n,className:r,showCloseButton:a=!0,...o}){return(0,$.jsxs)(b,{...o,children:[(0,$.jsxs)(f,{className:`sr-only`,children:[(0,$.jsx)(_,{children:e}),(0,$.jsx)(v,{children:t})]}),(0,$.jsx)(g,{className:i(`overflow-hidden p-0`,r),showCloseButton:a,children:(0,$.jsx)(wt,{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 Et({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)(ge,{className:`size-4 shrink-0 opacity-50`}),(0,$.jsx)(J.Input,{"data-slot":`command-input`,className:i(`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 Dt({className:e,...t}){return(0,$.jsx)(J.List,{"data-slot":`command-list`,className:i(`max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto`,e),...t})}function Ot({...e}){return(0,$.jsx)(J.Empty,{"data-slot":`command-empty`,className:`py-6 text-center text-sm`,...e})}function kt({className:e,...t}){return(0,$.jsx)(J.Group,{"data-slot":`command-group`,className:i(`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 At({className:e,...t}){return(0,$.jsx)(J.Item,{"data-slot":`command-item`,className:i(`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 jt({className:e,...t}){return(0,$.jsx)(`span`,{"data-slot":`command-shortcut`,className:i(`ml-auto text-xs tracking-widest text-muted-foreground`,e),...t})}var Mt={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 Nt({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 Pt(){let{t:e}=c(),{activeDialog:n,closeDialog:r,openDialog:a}=w(),l=w(e=>e.setWelcomeVisible),u=w(e=>e.setFooterMessage),{executeCurrentQuery:d,executeCurrentStatement:f,executeWholeScript:p,addNewQueryTab:m,disconnectActive:h}=he(),{capabilities:g}=me(),_=C(),v=x(e=>e.activeConnections.find(t=>t.id===e.activeConnectionId)),y=x(e=>e.activeConnectionId?e.transactionOpen[e.activeConnectionId]??!1:!1),b=x(e=>e.updateProfile),ge=be(e=>e.themeId),We=be(e=>e.setTheme),Ge=S(e=>e.locale),Ke=S(e=>e.setLocale),qe=n===`quick-command`,R=v!==void 0,z=T(e=>{let t=x.getState().activeConnectionId;if(!t)return!1;let n=e.activeTabId[t];return(e.tabs[t]??E).find(e=>e.id===n)?.isExecuting??!1});async function Je(){let e=x.getState().activeConnectionId;if(!e)return;let t=ee(await D(e));t&&w.getState().setFooterMessage(t)}let B=(0,L.useCallback)(e=>{r(),e()},[r]),V=(0,L.useCallback)(e=>u(e instanceof Error?e.message:String(e)),[u]),Ye=()=>{let e=x.getState().activeConnectionId;e&&(ye.getState().openERD(e),t(`erd_open`),T.getState().setActiveQueryTab(e,`erd`))},Xe=[{heading:e(`palette.groups.connection`),commands:[{id:`connect`,label:e(`palette.commands.connect`),icon:Ie,tone:`sky`,shortcut:`Alt+N`,keywords:[`connect`,`server`,`profile`,`login`],disabled:!_,action:()=>B(()=>a(`connect`))},{id:`disconnect`,label:e(`palette.commands.disconnect`),icon:xe,tone:`red`,keywords:[`disconnect`,`close`],disabled:!R,action:()=>B(()=>{h()})},{id:`read-only`,label:e(`menu.connection.readOnly`),icon:ne,tone:`yellow`,keywords:[`read only`,`safety`,`guard`],disabled:!R,checked:v?.readOnly===!0,action:()=>B(()=>{v&&b(v.id,{readOnly:!v.readOnly})})},{id:`manual-transactions`,capability:`transactions`,label:e(`menu.connection.manualTransactions`),icon:we,tone:`lavender`,keywords:[`transaction`,`manual`,`autocommit`],disabled:!R,checked:v?.transactionMode===`manual`,action:()=>B(()=>{v&&b(v.id,{transactionMode:v.transactionMode===`manual`?`auto`:`manual`})})},{id:`commit`,capability:`transactions`,label:e(`toolbar.commit`),icon:de,tone:`green`,keywords:[`commit`,`transaction`],disabled:!y||!v,action:()=>B(()=>{v&&k(v.id).catch(V)})},{id:`rollback`,capability:`transactions`,label:e(`toolbar.rollback`),icon:ae,tone:`peach`,keywords:[`rollback`,`transaction`,`undo`],disabled:!y||!v,action:()=>B(()=>{v&&O(v.id).catch(V)})}]},{heading:e(`palette.groups.query`),commands:[{id:`execute`,label:e(`palette.commands.executeQuery`),icon:re,tone:`green`,shortcut:`F9`,keywords:[`run`,`execute`,`sql`],disabled:!R,action:()=>B(()=>{d()})},{id:`stop-query`,label:e(`result.running.stop`),icon:A,tone:`red`,keywords:[`stop`,`cancel`,`abort`,`kill`],disabled:!z,action:()=>B(()=>{Je()})},{id:`execute-statement`,label:e(`menu.query.executeStatementAtCursor`),icon:De,tone:`green`,shortcut:`Ctrl+Enter`,keywords:[`run`,`statement`,`cursor`],disabled:!R,action:()=>B(()=>{f()})},{id:`execute-script`,label:e(`menu.query.executeWholeScript`),icon:Be,tone:`teal`,shortcut:`Ctrl+Shift+Enter`,keywords:[`run`,`script`,`batch`],disabled:!R,action:()=>B(()=>{p()})},{id:`new-tab`,label:e(`palette.commands.newQueryTab`),icon:F,tone:`blue`,shortcut:`Alt+T`,keywords:[`new`,`tab`,`editor`],disabled:!R,action:()=>B(()=>m())},{id:`find-replace`,label:e(`menu.query.findReplace`),icon:Le,tone:`lavender`,keywords:[`find`,`replace`,`search`],disabled:!R,action:()=>B(()=>a(`find-replace`))},{id:`local-history`,label:e(`menu.query.localHistory`),icon:Ne,tone:`mauve`,keywords:[`history`,`snapshot`,`undo`],disabled:!R,action:()=>B(()=>a(`local-history`))}]},{heading:e(`palette.groups.database`),commands:[{id:`create-db`,capability:`multipleDatabases`,label:e(`palette.commands.createDatabase`),icon:se,tone:`blue`,keywords:[`create`,`database`,`schema`],disabled:!R,action:()=>B(()=>a(`create-database`))},{id:`alter-db`,capability:`multipleDatabases`,label:e(`menu.database.alter`),icon:Oe,tone:`blue`,keywords:[`alter`,`database`,`charset`],disabled:!R,action:()=>B(()=>a(`alter-database`))},{id:`copy-db`,capability:`multipleDatabases`,label:e(`menu.database.copy`),icon:ue,tone:`sky`,keywords:[`copy`,`clone`,`database`],disabled:!R,action:()=>B(()=>a(`copy-database`))},{id:`schema-diff`,label:e(`menu.database.compare`),icon:je,tone:`mauve`,keywords:[`compare`,`diff`,`schema`,`sync`],pro:`compare_schemas`,disabled:!R,action:()=>B(()=>a(`schema-diff`))},{id:`data-diff`,label:e(`menu.database.compareData`),icon:Me,tone:`mauve`,keywords:[`compare`,`diff`,`data`,`rows`],pro:`compare_data`,disabled:!R,action:()=>B(()=>a(`data-diff`))},{id:`group-by`,label:e(`menu.database.groupBy`),icon:_e,tone:`mauve`,keywords:[`group`,`count`,`aggregate`,`distinct`,`summary`],disabled:!R,action:()=>B(()=>a(`group-by`))}]},{heading:e(`palette.groups.table`),commands:[{id:`create-table`,label:e(`palette.commands.createTable`),icon:j,tone:`green`,keywords:[`create`,`table`],disabled:!R,action:()=>B(()=>a(`create-table`))},{id:`alter-table`,label:e(`palette.commands.alterTable`),icon:Se,tone:`yellow`,keywords:[`alter`,`table`,`column`],disabled:!R,action:()=>B(()=>a(`alter-table`))},{id:`duplicate-table`,label:e(`menu.table.duplicateStructure`),icon:Ee,tone:`teal`,keywords:[`duplicate`,`structure`,`table`],disabled:!R,action:()=>B(()=>a(`duplicate-table-structure`))}]},{heading:e(`menu.export.title`),commands:[{id:`export-csv`,label:e(`menu.export.csv`),icon:Ae,tone:`green`,keywords:[`export`,`csv`,`excel`],disabled:!R,action:()=>B(()=>a(`export-csv`))},{id:`export-html`,label:e(`menu.export.schemaHtml`),icon:ke,tone:`peach`,keywords:[`export`,`html`,`schema`,`documentation`],disabled:!R,action:()=>B(()=>a(`export-html`))}]},{heading:e(`palette.groups.tools`),commands:[{id:`process-list`,capability:`processList`,label:e(`palette.commands.processList`),icon:te,tone:`red`,keywords:[`process`,`kill`,`connections`],disabled:!R,action:()=>B(()=>a(`process-list`))},{id:`variables`,capability:`variables`,label:e(`palette.commands.serverVariables`),icon:Ve,tone:`lavender`,keywords:[`variables`,`server`,`settings`],disabled:!R,action:()=>B(()=>a(`variables`))},{id:`status`,capability:`status`,label:e(`palette.commands.serverStatus`),icon:oe,tone:`teal`,keywords:[`status`,`server`,`metrics`],disabled:!R,action:()=>B(()=>a(`status`))},{id:`flush`,capability:`flush`,label:e(`palette.commands.flush`),icon:P,tone:`peach`,keywords:[`flush`,`cache`,`reload`],disabled:!R,action:()=>B(()=>a(`flush`))},{id:`user-manager`,capability:`users`,label:e(`palette.commands.userManager`),icon:pe,tone:`blue`,keywords:[`users`,`grants`,`privileges`],disabled:!R,action:()=>B(()=>a(`user-manager`))},{id:`scratchpad`,label:e(`menu.tools.scratchpad`),icon:N,tone:`yellow`,keywords:[`scratchpad`,`sqlite`,`local`],pro:`scratchpad`,action:()=>B(()=>{ie().catch(V)})},{id:`federated`,label:e(`menu.tools.federated`),icon:Ue,tone:`mauve`,keywords:[`federated`,`cross`,`join`,`connections`],pro:`federated`,action:()=>B(()=>{le().catch(V)})},{id:`erd`,label:e(`menu.tools.viewErd`),icon:Fe,tone:`sky`,keywords:[`erd`,`diagram`,`relations`],disabled:!R,action:()=>B(Ye)}]},{heading:e(`menu.settings.theme`),commands:ve().map(e=>({id:`theme-${e.id}`,label:e.name,tone:`lavender`,keywords:[`theme`,`color`,`appearance`,`dark`,`light`,e.id],checked:ge===e.id,swatch:e,action:()=>B(()=>We(e.id))}))},{heading:e(`menu.settings.language`),commands:[`auto`,...s].map(t=>({id:`locale-${t}`,label:t===`auto`?e(`language.auto`,{name:e(`language.${o()}`)}):e(`language.${t}`),icon:Pe,tone:`teal`,keywords:[`language`,`locale`,`i18n`,t],checked:Ge===t,action:()=>B(()=>Ke(t))}))},{heading:e(`menu.settings.title`),commands:[{id:`safety-settings`,label:e(`menu.settings.safety`),icon:He,tone:`yellow`,keywords:[`safety`,`settings`,`row limit`,`preferences`],action:()=>B(()=>a(`safety-settings`))}]},{heading:e(`menu.help.title`),commands:[{id:`documentation`,label:e(`menu.help.documentation`),icon:Te,tone:`blue`,keywords:[`docs`,`documentation`,`manual`,`help`],action:()=>B(()=>{window.open(fe(),`_blank`,`noopener,noreferrer`)})},{id:`getting-started`,label:e(`menu.help.gettingStarted`),icon:Re,tone:`green`,keywords:[`welcome`,`onboarding`,`sample`,`getting started`],action:()=>B(()=>l(!0))},{id:`whats-new`,label:e(`menu.help.whatsNew`),icon:I,tone:`sky`,keywords:[`whats new`,`changelog`,`release`,`update`],action:()=>B(()=>a(`whats-new`,{all:!0}))},{id:`terms`,label:e(`menu.help.terms`),icon:ze,tone:`peach`,keywords:[`terms`,`privacy`,`legal`],action:()=>B(()=>a(`terms`))},{id:`about`,label:e(`menu.help.about`),icon:ce,tone:`sky`,keywords:[`about`,`version`,`agent`],action:()=>B(()=>a(`about`))}]}];function H(e){e||r()}let U=Xe.map(e=>({...e,commands:e.commands.filter(e=>!e.capability||g[e.capability])})).filter(e=>e.commands.length>0);return(0,$.jsxs)(Tt,{open:qe,onOpenChange:H,title:e(`palette.title`),description:e(`palette.description`),children:[(0,$.jsx)(Et,{placeholder:e(`palette.inputPlaceholder`)}),(0,$.jsxs)(Dt,{className:`max-h-[60vh]`,children:[(0,$.jsx)(Ot,{children:e(`palette.empty`)}),U.map(e=>(0,$.jsx)(kt,{heading:e.heading,children:e.commands.map(t=>(0,$.jsxs)(At,{value:`${e.heading} ${t.label}`,keywords:t.keywords,disabled:t.disabled,onSelect:()=>{(!t.pro||Ce(t.pro))&&t.action()},children:[t.swatch?(0,$.jsx)(Nt,{theme:t.swatch}):t.icon?(0,$.jsx)(t.icon,{className:i(`size-4`,Mt[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)(M,{className:`ml-0`}),t.checked&&(0,$.jsx)(de,{className:`size-3.5 text-catppuccin-green`}),t.shortcut&&(0,$.jsx)(jt,{className:`ml-0`,children:t.shortcut})]})]},t.id))},e.heading))]})]})}export{Pt as QuickCommandPalette};