planche 0.9.0 → 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 (66) hide show
  1. package/app/assets/{tQiLT0zv.js → 7jD5h8Yx.js} +3 -1
  2. package/app/assets/{C4QyqQoa.js → 7jG9Xw-H.js} +1 -1
  3. package/app/assets/{Br4335vw.js → 84VwJAQi.js} +1 -1
  4. package/app/assets/9gOj-Ty3.js +1 -0
  5. package/app/assets/{1p4z4GHT.js → B4S-lOKS.js} +2 -2
  6. package/app/assets/{BniymiMs.js → BDtsGuIR.js} +3 -1
  7. package/app/assets/{DFeHpd8Y.js → BEH9Jqkv.js} +1 -1
  8. package/app/assets/{CCQ6oQgi.js → BGvsBpIS.js} +1 -1
  9. package/app/assets/BMBWoD5w.js +1 -0
  10. package/app/assets/{BgvMpmFj.js → BMFLhX-x.js} +1 -1
  11. package/app/assets/{DDeeBXtX.js → BNB62Dfu.js} +1 -1
  12. package/app/assets/{D3_CBO8-.js → BPPUDpI0.js} +1 -1
  13. package/app/assets/{Bvu_eiyU.js → BPmMKRmE.js} +3 -3
  14. package/app/assets/{CP2U-viH.js → BQ1Rcyw6.js} +1 -1
  15. package/app/assets/{CWota0kb.js → BSziALTN.js} +1 -1
  16. package/app/assets/{f6MhVR01.js → BTaXXwBP.js} +1 -1
  17. package/app/assets/{BhPOHTk7.js → BbOETtQZ.js} +2 -2
  18. package/app/assets/{CIIDOG9Y.js → Bbx7_Uyd.js} +1 -1
  19. package/app/assets/{CkIm3SJy.js → BhX9zWzC.js} +1 -1
  20. package/app/assets/{C5Yv1gpQ.js → BixvbqFe.js} +1 -1
  21. package/app/assets/BjwrN_ch.js +11 -0
  22. package/app/assets/{BHe42P9W.js → BkXrfAoR.js} +1 -1
  23. package/app/assets/{BvEGx3Si.js → BnJGrP6V.js} +2 -2
  24. package/app/assets/{BnI4D_rY.js → BrVnzO7b.js} +1 -1
  25. package/app/assets/{BVwlLPu6.js → ByKF67UY.js} +1 -1
  26. package/app/assets/{DKf3DkR6.js → C1kpKIsO.js} +1 -1
  27. package/app/assets/{DkqeIq13.js → C6712dxU.js} +1 -1
  28. package/app/assets/{B_1rFijd.js → C77ZEZfM.js} +1 -1
  29. package/app/assets/{B8zpsP_u.js → CExE8dKz.js} +209 -209
  30. package/app/assets/{CVZ3Bw6o.js → CFUkTo-F.js} +1 -1
  31. package/app/assets/{BMGo7X_N.js → CFu5QMhX.js} +3 -1
  32. package/app/assets/{DnRoHgQS.js → CHx7zgT8.js} +1 -1
  33. package/app/assets/{BsYZ-U7K.js → CRnmOOqq.js} +1 -1
  34. package/app/assets/{CDfSdkjY.js → CTnwm-29.js} +1 -1
  35. package/app/assets/{DO0W14Ho.js → CaU3pCK6.js} +1 -1
  36. package/app/assets/{BYWnKgIY.js → CoZCOAph.js} +1 -1
  37. package/app/assets/{6NUleTnS.js → CrhJJH3f.js} +1 -1
  38. package/app/assets/{DDjCZLb0.js → CrlnxAGW.js} +1 -1
  39. package/app/assets/{Dy6-E_uL.js → D0Ya12SQ.js} +1 -1
  40. package/app/assets/{BiyRPyXV.js → D1kyupCL.js} +1 -1
  41. package/app/assets/{C3w9xAkk.js → D3lUezEb.js} +1 -1
  42. package/app/assets/{DeNEO8HN.js → D9QeXBOk.js} +1 -1
  43. package/app/assets/{DPnYgSl3.js → DCHRj2vY.js} +1 -1
  44. package/app/assets/{CwsH45Wr.js → DF7EZh_S.js} +2 -2
  45. package/app/assets/{DyQ8cEic.js → DHZOxCSJ.js} +1 -1
  46. package/app/assets/{Cdop6jK1.js → DNHPk-9r.js} +3 -1
  47. package/app/assets/{Q6DQerac.js → DPyLA6Dl.js} +1 -1
  48. package/app/assets/{Bkq2aetC.js → DTkqO0Em.js} +1 -1
  49. package/app/assets/{FAouNaq9.js → DaBfnZOJ.js} +1 -1
  50. package/app/assets/{D6oRJsd8.js → Djxg54qH.js} +1 -1
  51. package/app/assets/{ClytWHSf.js → Do7KpDxk.js} +1 -1
  52. package/app/assets/{CnoXRrek.js → DpEN2jyA.js} +1 -1
  53. package/app/assets/{C2S2GXdP.js → DzdX4vRD.js} +1 -1
  54. package/app/assets/{D4l4mWtD.js → G06qjCej.js} +1 -1
  55. package/app/assets/{ANL7Od0T.js → W7D4Svcn.js} +1 -1
  56. package/app/assets/{BJFk0Zzq.js → aIFwnVFr.js} +3 -1
  57. package/app/assets/{UX-csQNt.js → kXDKfUfE.js} +3 -1
  58. package/app/assets/{B9NCreMu.js → qRIRkBN0.js} +1 -1
  59. package/app/assets/{DY1k-USH.js → tJkeLYCp.js} +1 -1
  60. package/app/assets/w46wk7KI.css +2 -0
  61. package/app/index.html +8 -8
  62. package/package.json +1 -1
  63. package/app/assets/B9DHeSQH.js +0 -1
  64. package/app/assets/Bgu3teFB.js +0 -11
  65. package/app/assets/CWb3a6Xp.js +0 -1
  66. package/app/assets/CqTgU2vp.css +0 -2
@@ -1 +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"./BniymiMs.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"./BHe42P9W.js";import{i as O,t as k}from"./BvEGx3Si.js";import{At as te,Ct as A,Dt as j,Et as M,Ft as N,H as ne,Ht as P,Lt as F,Mt as I,Pt as re,Q as ie,Tt as ae,Vt as oe,W as se,Z as ce,Zt as le,_t as ue,bt as de,it as fe,jt as pe,kt as me,nt as he,pt as ge,qt as _e,rt as ve,tt as ye,vt as be,wt as xe,yt as Se,z as Ce,zt as we}from"./B8zpsP_u.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)(me,{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}=fe(),{capabilities:g}=ge(),_=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),me=ye(e=>e.themeId),We=ye(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&&(ve.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:Se,tone:`red`,keywords:[`disconnect`,`close`],disabled:!R,action:()=>B(()=>{h()})},{id:`read-only`,label:e(`menu.connection.readOnly`),icon:N,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:F,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:_e,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:de,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:I,tone:`green`,shortcut:`F9`,keywords:[`run`,`execute`,`sql`],disabled:!R,action:()=>B(()=>{d()})},{id:`stop-query`,label:e(`result.running.stop`),icon:ae,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:pe,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:oe,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:P,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:j,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:xe,tone:`green`,keywords:[`create`,`table`],disabled:!R,action:()=>B(()=>a(`create-table`))},{id:`alter-table`,label:e(`palette.commands.alterTable`),icon:ue,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:le,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:A,tone:`teal`,keywords:[`status`,`server`,`metrics`],disabled:!R,action:()=>B(()=>a(`status`))},{id:`flush`,capability:`flush`,label:e(`palette.commands.flush`),icon:te,tone:`peach`,keywords:[`flush`,`cache`,`reload`],disabled:!R,action:()=>B(()=>a(`flush`))},{id:`user-manager`,capability:`users`,label:e(`palette.commands.userManager`),icon:be,tone:`blue`,keywords:[`users`,`grants`,`privileges`],disabled:!R,action:()=>B(()=>a(`user-manager`))},{id:`scratchpad`,label:e(`menu.tools.scratchpad`),icon:re,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(()=>{se().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:he().map(e=>({id:`theme-${e.id}`,label:e.name,tone:`lavender`,keywords:[`theme`,`color`,`appearance`,`dark`,`light`,e.id],checked:me===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(ce(),`_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:M,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:we,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)(ne,{className:`ml-0`}),t.checked&&(0,$.jsx)(_e,{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};
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};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{t as r}from"./CiL8zoYm.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,r as m,t as h}from"./D4l4mWtD.js";import{t as ee}from"./S7HbowYz.js";import{n as g,t as _}from"./D8_hwGjG.js";import{a as v}from"./BHe42P9W.js";import{r as y}from"./BRZhVXRC.js";import{t as b}from"./B9DHeSQH.js";import{$ as x,c as S,et as C,l as w}from"./B8zpsP_u.js";var T=e(n(),1),E=a(),D=e=>e instanceof Error?e.message:String(e);function O(){let{t:e}=i(),n=g(e=>e.activeDialog),a=g(e=>e.closeDialog),O=_(`link-column`),k=n===`link-column`&&!!O,A=O?.connectionId??``,j=ee(e=>e.activeConnections),M=j.filter(e=>e.serverConnectionId),N=C(e=>e.links),P=C(e=>e.setLink),F=C(e=>e.removeLink),I=O?x(N,A,O.database,O.table).find(e=>e.column===O.column)??null:null,[L,R]=(0,T.useState)(I?.targetConnectionId??A),z=j.find(e=>e.id===L)?.serverConnectionId,[B,V]=(0,T.useState)([]),[H,U]=(0,T.useState)([]),[W,G]=(0,T.useState)([]),[K,q]=(0,T.useState)(I?.targetDatabase??O?.database??``),[J,Y]=(0,T.useState)(I?.targetTable??``),[X,Z]=(0,T.useState)(I?.targetColumn??``),[Q,$]=(0,T.useState)(null);if((0,T.useEffect)(()=>{if(!k||!z)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listDatabases(v(z));if(e)return;V(t),q(e=>t.includes(e)?e:t[0]??``)}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L]),(0,T.useEffect)(()=>{if(!k||!z||!K)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listTables(v(z),K);if(e)return;U(t.map(e=>e.name))}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L,K]),(0,T.useEffect)(()=>{if(!k||!z||!K||!J)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listColumns(v(z),K,J);if(e)return;G(t.map(e=>e.name)),Z(e=>t.some(t=>t.name===e)?e:t.find(e=>e.key===`PRI`)?.name??t[0]?.name??``)}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L,K,J]),!O)return null;function te(){if(!O||!K||!J||!X)return;let e=L!==A;P(A,{database:O.database,table:O.table,column:O.column,...e?{targetConnectionId:L}:{},targetDatabase:K,targetTable:J,targetColumn:X}),b(`column_link`),t(`column_link_set`,{dbms:y(A).id,target_dbms:y(L).id,cross_database:K!==O.database,cross_connection:e}),a()}function ne(){O&&(F(A,O),a())}return(0,E.jsx)(u,{open:k,onOpenChange:e=>{e||a()},children:(0,E.jsxs)(c,{className:`sm:max-w-[460px]`,children:[(0,E.jsx)(o,{children:(0,E.jsx)(l,{children:e(`result.link.title`)})}),(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{children:e(`result.link.source`)}),(0,E.jsx)(w,{value:`${O.database}.${O.table}.${O.column}`,disabled:!0})]}),(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`result.link.hint`)}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-conn`,children:e(`result.link.targetConnection`)}),(0,E.jsxs)(h,{value:L,onValueChange:e=>{R(e),Y(``),U([]),G([])},children:[(0,E.jsx)(f,{id:`link-conn`,className:`w-full`,children:(0,E.jsx)(d,{})}),(0,E.jsx)(p,{children:M.map(e=>(0,E.jsx)(m,{value:e.id,children:e.hostName||e.host||e.file||e.id},e.id))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-db`,children:e(`result.link.targetDatabase`)}),(0,E.jsxs)(h,{value:K,onValueChange:e=>{q(e),Y(``),G([])},children:[(0,E.jsx)(f,{id:`link-db`,className:`w-full`,children:(0,E.jsx)(d,{})}),(0,E.jsx)(p,{children:B.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-table`,children:e(`result.link.targetTable`)}),(0,E.jsxs)(h,{value:J,onValueChange:Y,disabled:H.length===0,children:[(0,E.jsx)(f,{id:`link-table`,className:`w-full`,children:(0,E.jsx)(d,{placeholder:e(`result.link.pickTable`)})}),(0,E.jsx)(p,{children:H.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-column`,children:e(`result.link.targetColumn`)}),(0,E.jsxs)(h,{value:X,onValueChange:Z,disabled:W.length===0,children:[(0,E.jsx)(f,{id:`link-column`,className:`w-full`,children:(0,E.jsx)(d,{placeholder:e(`result.link.pickColumn`)})}),(0,E.jsx)(p,{children:W.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]}),Q&&(0,E.jsx)(`p`,{className:`text-xs text-destructive`,children:Q})]}),(0,E.jsxs)(s,{children:[I&&(0,E.jsx)(r,{variant:`destructive`,onClick:ne,className:`mr-auto`,children:e(`result.link.remove`)}),(0,E.jsx)(r,{variant:`outline`,onClick:a,children:e(`result.link.cancel`)}),(0,E.jsx)(r,{onClick:te,disabled:!K||!J||!X,children:e(`result.link.save`)})]})]})})}export{O as LinkColumnDialog};
1
+ import{r as e}from"./hePW80VL.js";import{o as t,p as n}from"./CYz610vE.js";import{t as r}from"./CiL8zoYm.js";import{i,r as a}from"./Cu_sGzNJ.js";import{a as o,i as s,n as c,o as l,t as u}from"./DzRyVlxz.js";import{a as d,i as f,n as p,r as m,t as h}from"./G06qjCej.js";import{t as ee}from"./S7HbowYz.js";import{n as g,t as _}from"./D8_hwGjG.js";import{a as v}from"./BkXrfAoR.js";import{r as y}from"./BRZhVXRC.js";import{t as b}from"./9gOj-Ty3.js";import{$ as x,c as S,et as C,l as w}from"./CExE8dKz.js";var T=e(n(),1),E=a(),D=e=>e instanceof Error?e.message:String(e);function O(){let{t:e}=i(),n=g(e=>e.activeDialog),a=g(e=>e.closeDialog),O=_(`link-column`),k=n===`link-column`&&!!O,A=O?.connectionId??``,j=ee(e=>e.activeConnections),M=j.filter(e=>e.serverConnectionId),N=C(e=>e.links),P=C(e=>e.setLink),F=C(e=>e.removeLink),I=O?x(N,A,O.database,O.table).find(e=>e.column===O.column)??null:null,[L,R]=(0,T.useState)(I?.targetConnectionId??A),z=j.find(e=>e.id===L)?.serverConnectionId,[B,V]=(0,T.useState)([]),[H,U]=(0,T.useState)([]),[W,G]=(0,T.useState)([]),[K,q]=(0,T.useState)(I?.targetDatabase??O?.database??``),[J,Y]=(0,T.useState)(I?.targetTable??``),[X,Z]=(0,T.useState)(I?.targetColumn??``),[Q,$]=(0,T.useState)(null);if((0,T.useEffect)(()=>{if(!k||!z)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listDatabases(v(z));if(e)return;V(t),q(e=>t.includes(e)?e:t[0]??``)}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L]),(0,T.useEffect)(()=>{if(!k||!z||!K)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listTables(v(z),K);if(e)return;U(t.map(e=>e.name))}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L,K]),(0,T.useEffect)(()=>{if(!k||!z||!K||!J)return;let e=!1;return(async()=>{try{let t=await y(L).introspect.listColumns(v(z),K,J);if(e)return;G(t.map(e=>e.name)),Z(e=>t.some(t=>t.name===e)?e:t.find(e=>e.key===`PRI`)?.name??t[0]?.name??``)}catch(t){e||$(D(t))}})(),()=>{e=!0}},[k,z,L,K,J]),!O)return null;function te(){if(!O||!K||!J||!X)return;let e=L!==A;P(A,{database:O.database,table:O.table,column:O.column,...e?{targetConnectionId:L}:{},targetDatabase:K,targetTable:J,targetColumn:X}),b(`column_link`),t(`column_link_set`,{dbms:y(A).id,target_dbms:y(L).id,cross_database:K!==O.database,cross_connection:e}),a()}function ne(){O&&(F(A,O),a())}return(0,E.jsx)(u,{open:k,onOpenChange:e=>{e||a()},children:(0,E.jsxs)(c,{className:`sm:max-w-[460px]`,children:[(0,E.jsx)(o,{children:(0,E.jsx)(l,{children:e(`result.link.title`)})}),(0,E.jsxs)(`div`,{className:`space-y-4`,children:[(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{children:e(`result.link.source`)}),(0,E.jsx)(w,{value:`${O.database}.${O.table}.${O.column}`,disabled:!0})]}),(0,E.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`result.link.hint`)}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-conn`,children:e(`result.link.targetConnection`)}),(0,E.jsxs)(h,{value:L,onValueChange:e=>{R(e),Y(``),U([]),G([])},children:[(0,E.jsx)(f,{id:`link-conn`,className:`w-full`,children:(0,E.jsx)(d,{})}),(0,E.jsx)(p,{children:M.map(e=>(0,E.jsx)(m,{value:e.id,children:e.hostName||e.host||e.file||e.id},e.id))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-db`,children:e(`result.link.targetDatabase`)}),(0,E.jsxs)(h,{value:K,onValueChange:e=>{q(e),Y(``),G([])},children:[(0,E.jsx)(f,{id:`link-db`,className:`w-full`,children:(0,E.jsx)(d,{})}),(0,E.jsx)(p,{children:B.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-table`,children:e(`result.link.targetTable`)}),(0,E.jsxs)(h,{value:J,onValueChange:Y,disabled:H.length===0,children:[(0,E.jsx)(f,{id:`link-table`,className:`w-full`,children:(0,E.jsx)(d,{placeholder:e(`result.link.pickTable`)})}),(0,E.jsx)(p,{children:H.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]}),(0,E.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,E.jsx)(S,{htmlFor:`link-column`,children:e(`result.link.targetColumn`)}),(0,E.jsxs)(h,{value:X,onValueChange:Z,disabled:W.length===0,children:[(0,E.jsx)(f,{id:`link-column`,className:`w-full`,children:(0,E.jsx)(d,{placeholder:e(`result.link.pickColumn`)})}),(0,E.jsx)(p,{children:W.map(e=>(0,E.jsx)(m,{value:e,children:e},e))})]})]}),Q&&(0,E.jsx)(`p`,{className:`text-xs text-destructive`,children:Q})]}),(0,E.jsxs)(s,{children:[I&&(0,E.jsx)(r,{variant:`destructive`,onClick:ne,className:`mr-auto`,children:e(`result.link.remove`)}),(0,E.jsx)(r,{variant:`outline`,onClick:a,children:e(`result.link.cancel`)}),(0,E.jsx)(r,{onClick:te,disabled:!K||!J||!X,children:e(`result.link.save`)})]})]})})}export{O as LinkColumnDialog};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{a as n,d as r,i,s as a,u as o}from"./CiL8zoYm.js";import{r as s}from"./Cu_sGzNJ.js";import{r as c,t as l}from"./BGuDcBB_.js";import{C as u,D as d,E as f,O as p,S as m,T as h,_ as g,b as _,g as v,v as y,w as b,x,y as S}from"./DzRyVlxz.js";import{n as C,t as w}from"./D8dVzi6I.js";import{t as T}from"./BFw3KCAr.js";import{Kt as E,an as D,in as O,on as k,qt as A,sn as j}from"./B8zpsP_u.js";var M=e(r(),1),N=e(t(),1),P=Object.defineProperty,ee=(e,t)=>P(e,`name`,{value:t,configurable:!0});function F(e){let t=N.useRef({value:e,previous:e});return N.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}ee(F,`usePrevious`);var I=s(),L=Object.defineProperty,R=(e,t)=>L(e,`name`,{value:t,configurable:!0}),z=[` `,`Enter`,`ArrowUp`,`ArrowDown`],B=[` `,`Enter`],V=`Select`,[H,U,W]=l(V),[G,te]=p(V,[W,j]),K=j(),[ne,q]=G(V),[re,ie]=G(V);function J(e){let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:d,autoComplete:f,disabled:p,required:m,form:g,internal_do_not_use_render:_}=e,v=K(t),[y,b]=N.useState(null),[x,S]=N.useState(null),[w,T]=N.useState(!1),E=C(l),[D,O]=h({prop:r,defaultProp:i??!1,onChange:a,caller:V}),[A,j]=h({prop:o,defaultProp:s,onChange:c,caller:V}),M=N.useRef(null),P=N.useRef(A);N.useEffect(()=>{let e=g?y?.ownerDocument.getElementById(g):y?.form;if(e instanceof HTMLFormElement){let t=R(()=>j(P.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[g,y,j]);let ee=!y||!!g||!!y.closest(`form`),[F,L]=N.useState(new Set),z=u(),B=Array.from(F).map(e=>e.props.value).join(`;`),U=N.useCallback(e=>{L(t=>new Set(t).add(e))},[]),W=N.useCallback(e=>{L(t=>{let n=new Set(t);return n.delete(e),n})},[]),G={required:m,trigger:y,onTriggerChange:b,valueNode:x,onValueNodeChange:S,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:z,value:A,onValueChange:j,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:M,disabled:p,name:d,autoComplete:f,form:g,nativeOptions:F,nativeSelectKey:B,isFormControl:ee};return(0,I.jsx)(k,{...v,children:(0,I.jsx)(ne,{scope:t,...G,children:(0,I.jsx)(H.Provider,{scope:t,children:(0,I.jsx)(re,{scope:t,onNativeOptionAdd:U,onNativeOptionRemove:W,children:Ve(_)?_(G):n})})})})}R(J,`SelectProvider`);var ae=R(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,I.jsx)(J,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,I.jsxs)(I.Fragment,{children:[n,e?(0,I.jsx)(Be,{__scopeSelect:t}):null]})})},`Select`),oe=`SelectTrigger`,se=N.forwardRef(R(function(e,t){let{__scopeSelect:r,disabled:i=!1,...a}=e,s=K(r),c=q(oe,r),l=c.disabled||i,u=o(t,c.onTriggerChange),f=U(r),p=N.useRef(`touch`),[m,h,g]=He(e=>{let t=f().filter(e=>!e.disabled),n=Ue(t,e,t.find(e=>e.value===c.value));n!==void 0&&c.onValueChange(n.value)}),_=R(e=>{l||(c.onOpenChange(!0),g()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})},`handleOpen`);return(0,I.jsx)(O,{asChild:!0,...s,children:(0,I.jsx)(n.button,{type:`button`,role:`combobox`,"aria-controls":c.open?c.contentId:void 0,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":`none`,dir:c.dir,"data-state":c.open?`open`:`closed`,disabled:l,"data-disabled":l?``:void 0,"data-placeholder":$(c.value)?``:void 0,...a,ref:u,onClick:d(a.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&_(e)}),onPointerDown:d(a.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(_(e),e.preventDefault())}),onKeyDown:d(a.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&z.includes(e.key)&&(_(),e.preventDefault())})})})},`SelectTrigger`)),ce=`SelectValue`,le=N.forwardRef(R(function(e,t){let{__scopeSelect:r,className:i,style:a,children:s,placeholder:c=``,...l}=e,u=q(ce,r),{onValueNodeHasChildrenChange:d}=u,p=s!==void 0,m=o(t,u.onValueNodeChange);f(()=>{d(p)},[d,p]);let h=$(u.value);return(0,I.jsx)(n.span,{...l,asChild:!h&&l.asChild,ref:m,style:{pointerEvents:`none`},children:(0,I.jsx)(N.Fragment,{children:h?c:s},h?`placeholder`:`value`)})},`SelectValue`)),ue=N.forwardRef(R(function(e,t){let{__scopeSelect:r,children:i,...a}=e;return(0,I.jsx)(n.span,{"aria-hidden":!0,...a,ref:t,children:i||`▼`})},`SelectIcon`)),[de,fe]=G(`SelectPortal`,{forceMount:void 0}),pe=R(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,I.jsx)(de,{scope:e.__scopeSelect,forceMount:n,children:(0,I.jsx)(S,{asChild:!0,...r})})},`SelectPortal`),Y=`SelectContent`,me=N.forwardRef(R(function(e,t){let n=fe(Y,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=q(Y,e.__scopeSelect),[o,s]=N.useState();return f(()=>{s(new DocumentFragment)},[]),(0,I.jsx)(b,{present:r||a.open,children:({present:e})=>e?(0,I.jsx)(ve,{...i,ref:t}):(0,I.jsx)(he,{...i,fragment:o})})},`SelectContent`)),he=N.forwardRef(R(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?M.createPortal((0,I.jsx)(ge,{scope:n,children:(0,I.jsx)(H.Slot,{scope:n,children:(0,I.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),X=10,[ge,Z]=G(Y),_e=a(`SelectContent.RemoveScroll`),ve=N.forwardRef(R(function(e,t){let{__scopeSelect:n}=e,{position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:s,side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:m,collisionPadding:h,sticky:b,hideWhenDetached:S,avoidCollisions:C,...w}=e,T=q(Y,n),[E,D]=N.useState(null),[O,k]=N.useState(null),A=o(t,D),[j,M]=N.useState(null),[P,ee]=N.useState(null),F=U(n),[L,z]=N.useState(!1),B=N.useRef(!1);N.useEffect(()=>{if(E)return v(E)},[E]),y();let V=N.useCallback(e=>{let[t,...n]=F().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&O&&(O.scrollTop=0),n===r&&O&&(O.scrollTop=O.scrollHeight),n?.focus(),document.activeElement!==i))return},[F,O]),H=N.useCallback(()=>V([j,E]),[V,j,E]);N.useEffect(()=>{L&&H()},[L,H]);let{onOpenChange:W,triggerPointerDownPosRef:G}=T;N.useEffect(()=>{if(E){let e={x:0,y:0},t=R(t=>{e={x:Math.abs(Math.round(t.pageX)-(G.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(G.current?.y??0))}},`handlePointerMove`),n=R(n=>{e.x<=10&&e.y<=10?n.preventDefault():n.composedPath().includes(E)||W(!1),document.removeEventListener(`pointermove`,t),G.current=null},`handlePointerUp`);return G.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[E,W,G]),N.useEffect(()=>{let e=R(()=>W(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[W]);let[te,K]=He(e=>{let t=F().filter(e=>!e.disabled),n=Ue(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current?.focus())}),ne=N.useCallback((e,t,n)=>{let r=!B.current&&!n;(T.value!==void 0&&T.value===t||r)&&(M(e),r&&(B.current=!0))},[T.value]),re=N.useCallback(()=>E?.focus(),[E]),ie=N.useCallback((e,t,n)=>{let r=!B.current&&!n;(T.value!==void 0&&T.value===t||r)&&ee(e)},[T.value]),J=r===`popper`?be:ye,ae=J===be?{side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:m,collisionPadding:h,sticky:b,hideWhenDetached:S,avoidCollisions:C}:{};return(0,I.jsx)(ge,{scope:n,content:E,viewport:O,onViewportChange:k,itemRefCallback:ne,selectedItem:j,onItemLeave:re,itemTextRefCallback:ie,focusSelectedItem:H,selectedItemText:P,position:r,isPositioned:L,searchRef:te,children:(0,I.jsx)(g,{as:_e,allowPinchZoom:!0,children:(0,I.jsx)(_,{asChild:!0,trapped:T.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:d(i,e=>{T.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,I.jsx)(x,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>T.onOpenChange(!1),children:(0,I.jsx)(J,{role:`listbox`,id:T.contentId,"data-state":T.open?`open`:`closed`,dir:T.dir,onContextMenu:e=>e.preventDefault(),...w,...ae,onPlaced:()=>z(!0),ref:A,style:{display:`flex`,flexDirection:`column`,outline:`none`,...w.style},onKeyDown:d(w.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&K(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=F().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>V(t)),e.preventDefault()}})})})})})})},`SelectContentImpl`)),ye=N.forwardRef(R(function(e,t){let{__scopeSelect:r,onPlaced:i,...a}=e,s=q(Y,r),c=Z(Y,r),[l,u]=N.useState(null),[d,p]=N.useState(null),m=o(t,p),h=U(r),g=N.useRef(!1),_=N.useRef(!0),{viewport:v,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=c,S=N.useCallback(()=>{if(s.trigger&&s.valueNode&&l&&d&&v&&y&&b){let e=s.trigger.getBoundingClientRect(),t=d.getBoundingClientRect(),n=s.valueNode.getBoundingClientRect(),r=b.getBoundingClientRect();if(s.dir!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),u=window.innerWidth-X,d=w(a,[X,Math.max(X,u-c)]);l.style.minWidth=s+`px`,l.style.left=d+`px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),u=window.innerWidth-X,d=w(a,[X,Math.max(X,u-c)]);l.style.minWidth=s+`px`,l.style.right=d+`px`}let a=h(),o=window.innerHeight-X*2,c=v.scrollHeight,u=window.getComputedStyle(d),f=parseInt(u.borderTopWidth,10),p=parseInt(u.paddingTop,10),m=parseInt(u.borderBottomWidth,10),_=parseInt(u.paddingBottom,10),x=f+p+c+_+m,S=Math.min(y.offsetHeight*5,x),C=window.getComputedStyle(v),T=parseInt(C.paddingTop,10),E=parseInt(C.paddingBottom,10),D=e.top+e.height/2-X,O=o-D,k=y.offsetHeight/2,A=y.offsetTop+k,j=f+p+A,M=x-j;if(j<=D){let e=a.length>0&&y===a[a.length-1].ref.current;l.style.bottom=`0px`;let t=d.clientHeight-v.offsetTop-v.offsetHeight,n=j+Math.max(O,k+(e?E:0)+t+m);l.style.height=n+`px`}else{let e=a.length>0&&y===a[0].ref.current;l.style.top=`0px`;let t=Math.max(D,f+v.offsetTop+(e?T:0)+k)+M;l.style.height=t+`px`,v.scrollTop=j-D+v.offsetTop}l.style.margin=`${X}px 0`,l.style.minHeight=S+`px`,l.style.maxHeight=o+`px`,i?.(),requestAnimationFrame(()=>g.current=!0)}},[h,s.trigger,s.valueNode,l,d,v,y,b,s.dir,i]);f(()=>S(),[S]);let[C,T]=N.useState();f(()=>{d&&T(window.getComputedStyle(d).zIndex)},[d]);let E=N.useCallback(e=>{e&&_.current===!0&&(S(),x?.(),_.current=!1)},[S,x]);return(0,I.jsx)(xe,{scope:r,contentWrapper:l,shouldExpandOnScrollRef:g,onScrollButtonChange:E,children:(0,I.jsx)(`div`,{ref:u,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C},children:(0,I.jsx)(n.div,{...a,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...a.style}})})})},`SelectItemAlignedPosition`)),be=N.forwardRef(R(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=X,...a}=e,o=K(n);return(0,I.jsx)(D,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})},`SelectPopperPosition`)),[xe,Se]=G(Y,{}),Ce=`SelectViewport`,we=N.forwardRef(R(function(e,t){let{__scopeSelect:r,nonce:i,...a}=e,s=Z(Ce,r),c=Se(Ce,r),l=o(t,s.onViewportChange),u=N.useRef(0);return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,I.jsx)(H.Slot,{scope:r,children:(0,I.jsx)(n.div,{"data-radix-select-viewport":``,role:`presentation`,...a,ref:l,style:{position:`relative`,flex:1,overflow:`hidden auto`,...a.style},onScroll:d(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=c;if(r?.current&&n){let e=Math.abs(u.current-t.scrollTop);if(e>0){let r=window.innerHeight-X*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}u.current=t.scrollTop})})})]})},`SelectViewport`)),[Te,Ee]=G(`SelectGroup`),De=`SelectItem`,[Oe,ke]=G(De),Ae=N.forwardRef(R(function(e,t){let{__scopeSelect:r,value:i,disabled:a=!1,textValue:s,...c}=e,l=q(De,r),f=Z(De,r),p=l.value===i,[h,g]=N.useState(s??``),[_,v]=N.useState(!1),y=m(e=>f.itemRefCallback?.(e,i,a)),b=o(t,y),x=u(),S=N.useRef(`touch`),C=R(()=>{a||(l.onValueChange(i),l.onOpenChange(!1))},`handleSelect`);return(0,I.jsx)(Oe,{scope:r,value:i,disabled:a,textId:x,isSelected:p,onItemTextChange:N.useCallback(e=>{g(t=>t||(e?.textContent??``).trim())},[]),children:(0,I.jsx)(H.ItemSlot,{scope:r,value:i,disabled:a,textValue:h,children:(0,I.jsx)(n.div,{role:`option`,"aria-labelledby":x,"data-highlighted":_?``:void 0,"aria-selected":p&&_,"data-state":p?`checked`:`unchecked`,"aria-disabled":a||void 0,"data-disabled":a?``:void 0,tabIndex:a?void 0:-1,...c,ref:b,onFocus:d(c.onFocus,()=>v(!0)),onBlur:d(c.onBlur,()=>v(!1)),onClick:d(c.onClick,()=>{S.current!==`mouse`&&C()}),onPointerUp:d(c.onPointerUp,()=>{S.current===`mouse`&&C()}),onPointerDown:d(c.onPointerDown,e=>{S.current=e.pointerType}),onPointerMove:d(c.onPointerMove,e=>{S.current=e.pointerType,a?f.onItemLeave?.():S.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:d(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&f.onItemLeave?.()}),onKeyDown:d(c.onKeyDown,e=>{a||e.target!==e.currentTarget||(f.searchRef?.current===``||e.key!==` `)&&(B.includes(e.key)&&C(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),Q=`SelectItemText`,je=N.forwardRef(R(function(e,t){let{__scopeSelect:r,className:i,style:a,...s}=e,c=q(Q,r),l=Z(Q,r),u=ke(Q,r),d=ie(Q,r),[p,h]=N.useState(null),g=m(e=>l.itemTextRefCallback?.(e,u.value,u.disabled)),_=o(t,h,u.onItemTextChange,g),v=p?.textContent,y=N.useMemo(()=>(0,I.jsx)(`option`,{value:u.value,disabled:u.disabled,children:v},u.value),[u.disabled,u.value,v]),{onNativeOptionAdd:b,onNativeOptionRemove:x}=d;return f(()=>(b(y),()=>x(y)),[b,x,y]),(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(n.span,{id:u.textId,...s,ref:_}),u.isSelected&&c.valueNode&&!c.valueNodeHasChildren&&!$(c.value)?M.createPortal(s.children,c.valueNode):null]})},`SelectItemText`)),Me=`SelectItemIndicator`,Ne=N.forwardRef(R(function(e,t){let{__scopeSelect:r,...i}=e;return ke(Me,r).isSelected?(0,I.jsx)(n.span,{"aria-hidden":!0,...i,ref:t}):null},`SelectItemIndicator`)),Pe=`SelectScrollUpButton`,Fe=N.forwardRef(R(function(e,t){let n=Z(Pe,e.__scopeSelect),r=Se(Pe,e.__scopeSelect),[i,a]=N.useState(!1),s=o(t,r.onScrollButtonChange);return f(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)};R(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(Re,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),Ie=`SelectScrollDownButton`,Le=N.forwardRef(R(function(e,t){let n=Z(Ie,e.__scopeSelect),r=Se(Ie,e.__scopeSelect),[i,a]=N.useState(!1),s=o(t,r.onScrollButtonChange);return f(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;a(n)};R(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(Re,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),Re=N.forwardRef(R(function(e,t){let{__scopeSelect:r,onAutoScroll:i,...a}=e,o=Z(`SelectScrollButton`,r),s=N.useRef(null),c=U(r),l=N.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return N.useEffect(()=>()=>l(),[l]),f(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,I.jsx)(n.div,{"aria-hidden":!0,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:d(a.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(i,50))}),onPointerMove:d(a.onPointerMove,()=>{o.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(i,50))}),onPointerLeave:d(a.onPointerLeave,()=>{l()})})},`SelectScrollButtonImpl`)),ze=`SelectBubbleInput`,Be=N.forwardRef(R(function({__scopeSelect:e,...t},r){let i=q(ze,e),{value:a,onValueChange:s,required:l,disabled:u,name:d,autoComplete:f,form:p}=i,{nativeOptions:m,nativeSelectKey:h}=i,g=N.useRef(null),_=o(r,g),v=a??``,y=F(v),b=Array.from(m).some(e=>(e.props.value??``)===``);return N.useEffect(()=>{let e=g.current;if(!e)return;let t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(y!==v&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,v),e.dispatchEvent(t)}},[y,v]),(0,I.jsxs)(n.select,{"aria-hidden":!0,required:l,tabIndex:-1,name:d,autoComplete:f,disabled:u,form:p,onChange:e=>s(e.target.value),...t,style:{...c,...t.style},ref:_,defaultValue:v,children:[$(a)&&!b?(0,I.jsx)(`option`,{value:``}):null,Array.from(m)]},h)},`SelectBubbleInput`));function Ve(e){return typeof e==`function`}R(Ve,`isFunction`);function $(e){return e===``||e===void 0}R($,`shouldShowPlaceholder`);function He(e){let t=m(e),n=N.useRef(``),r=N.useRef(0),i=N.useCallback(e=>{let i=n.current+e;t(i),R((function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(i)},[t]),a=N.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return N.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}R(He,`useTypeaheadSearch`);function Ue(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=We(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}R(Ue,`findNextItem`);function We(e,t){return e.map((n,r)=>e[(t+r)%e.length])}R(We,`wrapArray`);function Ge({...e}){return(0,I.jsx)(ae,{"data-slot":`select`,...e})}function Ke({...e}){return(0,I.jsx)(le,{"data-slot":`select-value`,...e})}function qe({className:e,size:t=`default`,children:n,...r}){return(0,I.jsxs)(se,{"data-slot":`select-trigger`,"data-size":t,className:i(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,I.jsx)(ue,{asChild:!0,children:(0,I.jsx)(E,{className:`size-4 opacity-50`})})]})}function Je({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...a}){return(0,I.jsx)(pe,{children:(0,I.jsxs)(me,{"data-slot":`select-content`,className:i(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...a,children:[(0,I.jsx)(Xe,{}),(0,I.jsx)(we,{className:i(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,I.jsx)(Ze,{})]})})}function Ye({className:e,children:t,...n}){return(0,I.jsxs)(Ae,{"data-slot":`select-item`,className:i(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,I.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,I.jsx)(Ne,{children:(0,I.jsx)(A,{className:`size-4`})})}),(0,I.jsx)(je,{children:t})]})}function Xe({className:e,...t}){return(0,I.jsx)(Fe,{"data-slot":`select-scroll-up-button`,className:i(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(T,{className:`size-4`})})}function Ze({className:e,...t}){return(0,I.jsx)(Le,{"data-slot":`select-scroll-down-button`,className:i(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(E,{className:`size-4`})})}export{Ke as a,qe as i,Je as n,Ye as r,Ge as t};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{a as n,d as r,i,s as a,u as o}from"./CiL8zoYm.js";import{r as s}from"./Cu_sGzNJ.js";import{r as c,t as l}from"./BGuDcBB_.js";import{C as u,D as d,E as f,O as p,S as m,T as h,_ as g,b as _,g as v,v as y,w as b,x,y as S}from"./DzRyVlxz.js";import{n as C,t as w}from"./D8dVzi6I.js";import{t as T}from"./BFw3KCAr.js";import{Jt as E,Yt as D,cn as O,ln as k,on as A,sn as j}from"./CExE8dKz.js";var M=e(r(),1),N=e(t(),1),P=Object.defineProperty,ee=(e,t)=>P(e,`name`,{value:t,configurable:!0});function F(e){let t=N.useRef({value:e,previous:e});return N.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}ee(F,`usePrevious`);var I=s(),L=Object.defineProperty,R=(e,t)=>L(e,`name`,{value:t,configurable:!0}),z=[` `,`Enter`,`ArrowUp`,`ArrowDown`],B=[` `,`Enter`],V=`Select`,[H,U,W]=l(V),[G,te]=p(V,[W,k]),K=k(),[ne,q]=G(V),[re,ie]=G(V);function J(e){let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:d,autoComplete:f,disabled:p,required:m,form:g,internal_do_not_use_render:_}=e,v=K(t),[y,b]=N.useState(null),[x,S]=N.useState(null),[w,T]=N.useState(!1),E=C(l),[D,k]=h({prop:r,defaultProp:i??!1,onChange:a,caller:V}),[A,j]=h({prop:o,defaultProp:s,onChange:c,caller:V}),M=N.useRef(null),P=N.useRef(A);N.useEffect(()=>{let e=g?y?.ownerDocument.getElementById(g):y?.form;if(e instanceof HTMLFormElement){let t=R(()=>j(P.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[g,y,j]);let ee=!y||!!g||!!y.closest(`form`),[F,L]=N.useState(new Set),z=u(),B=Array.from(F).map(e=>e.props.value).join(`;`),U=N.useCallback(e=>{L(t=>new Set(t).add(e))},[]),W=N.useCallback(e=>{L(t=>{let n=new Set(t);return n.delete(e),n})},[]),G={required:m,trigger:y,onTriggerChange:b,valueNode:x,onValueNodeChange:S,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:z,value:A,onValueChange:j,open:D,onOpenChange:k,dir:E,triggerPointerDownPosRef:M,disabled:p,name:d,autoComplete:f,form:g,nativeOptions:F,nativeSelectKey:B,isFormControl:ee};return(0,I.jsx)(O,{...v,children:(0,I.jsx)(ne,{scope:t,...G,children:(0,I.jsx)(H.Provider,{scope:t,children:(0,I.jsx)(re,{scope:t,onNativeOptionAdd:U,onNativeOptionRemove:W,children:Ve(_)?_(G):n})})})})}R(J,`SelectProvider`);var ae=R(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,I.jsx)(J,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,I.jsxs)(I.Fragment,{children:[n,e?(0,I.jsx)(Be,{__scopeSelect:t}):null]})})},`Select`),oe=`SelectTrigger`,se=N.forwardRef(R(function(e,t){let{__scopeSelect:r,disabled:i=!1,...a}=e,s=K(r),c=q(oe,r),l=c.disabled||i,u=o(t,c.onTriggerChange),f=U(r),p=N.useRef(`touch`),[m,h,g]=He(e=>{let t=f().filter(e=>!e.disabled),n=Ue(t,e,t.find(e=>e.value===c.value));n!==void 0&&c.onValueChange(n.value)}),_=R(e=>{l||(c.onOpenChange(!0),g()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})},`handleOpen`);return(0,I.jsx)(A,{asChild:!0,...s,children:(0,I.jsx)(n.button,{type:`button`,role:`combobox`,"aria-controls":c.open?c.contentId:void 0,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":`none`,dir:c.dir,"data-state":c.open?`open`:`closed`,disabled:l,"data-disabled":l?``:void 0,"data-placeholder":$(c.value)?``:void 0,...a,ref:u,onClick:d(a.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&_(e)}),onPointerDown:d(a.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(_(e),e.preventDefault())}),onKeyDown:d(a.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&z.includes(e.key)&&(_(),e.preventDefault())})})})},`SelectTrigger`)),ce=`SelectValue`,le=N.forwardRef(R(function(e,t){let{__scopeSelect:r,className:i,style:a,children:s,placeholder:c=``,...l}=e,u=q(ce,r),{onValueNodeHasChildrenChange:d}=u,p=s!==void 0,m=o(t,u.onValueNodeChange);f(()=>{d(p)},[d,p]);let h=$(u.value);return(0,I.jsx)(n.span,{...l,asChild:!h&&l.asChild,ref:m,style:{pointerEvents:`none`},children:(0,I.jsx)(N.Fragment,{children:h?c:s},h?`placeholder`:`value`)})},`SelectValue`)),ue=N.forwardRef(R(function(e,t){let{__scopeSelect:r,children:i,...a}=e;return(0,I.jsx)(n.span,{"aria-hidden":!0,...a,ref:t,children:i||`▼`})},`SelectIcon`)),[de,fe]=G(`SelectPortal`,{forceMount:void 0}),pe=R(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,I.jsx)(de,{scope:e.__scopeSelect,forceMount:n,children:(0,I.jsx)(S,{asChild:!0,...r})})},`SelectPortal`),Y=`SelectContent`,me=N.forwardRef(R(function(e,t){let n=fe(Y,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=q(Y,e.__scopeSelect),[o,s]=N.useState();return f(()=>{s(new DocumentFragment)},[]),(0,I.jsx)(b,{present:r||a.open,children:({present:e})=>e?(0,I.jsx)(ve,{...i,ref:t}):(0,I.jsx)(he,{...i,fragment:o})})},`SelectContent`)),he=N.forwardRef(R(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?M.createPortal((0,I.jsx)(ge,{scope:n,children:(0,I.jsx)(H.Slot,{scope:n,children:(0,I.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),X=10,[ge,Z]=G(Y),_e=a(`SelectContent.RemoveScroll`),ve=N.forwardRef(R(function(e,t){let{__scopeSelect:n}=e,{position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:s,side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:m,collisionPadding:h,sticky:b,hideWhenDetached:S,avoidCollisions:C,...w}=e,T=q(Y,n),[E,D]=N.useState(null),[O,k]=N.useState(null),A=o(t,D),[j,M]=N.useState(null),[P,ee]=N.useState(null),F=U(n),[L,z]=N.useState(!1),B=N.useRef(!1);N.useEffect(()=>{if(E)return v(E)},[E]),y();let V=N.useCallback(e=>{let[t,...n]=F().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&O&&(O.scrollTop=0),n===r&&O&&(O.scrollTop=O.scrollHeight),n?.focus(),document.activeElement!==i))return},[F,O]),H=N.useCallback(()=>V([j,E]),[V,j,E]);N.useEffect(()=>{L&&H()},[L,H]);let{onOpenChange:W,triggerPointerDownPosRef:G}=T;N.useEffect(()=>{if(E){let e={x:0,y:0},t=R(t=>{e={x:Math.abs(Math.round(t.pageX)-(G.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(G.current?.y??0))}},`handlePointerMove`),n=R(n=>{e.x<=10&&e.y<=10?n.preventDefault():n.composedPath().includes(E)||W(!1),document.removeEventListener(`pointermove`,t),G.current=null},`handlePointerUp`);return G.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[E,W,G]),N.useEffect(()=>{let e=R(()=>W(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[W]);let[te,K]=He(e=>{let t=F().filter(e=>!e.disabled),n=Ue(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current?.focus())}),ne=N.useCallback((e,t,n)=>{let r=!B.current&&!n;(T.value!==void 0&&T.value===t||r)&&(M(e),r&&(B.current=!0))},[T.value]),re=N.useCallback(()=>E?.focus(),[E]),ie=N.useCallback((e,t,n)=>{let r=!B.current&&!n;(T.value!==void 0&&T.value===t||r)&&ee(e)},[T.value]),J=r===`popper`?be:ye,ae=J===be?{side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:m,collisionPadding:h,sticky:b,hideWhenDetached:S,avoidCollisions:C}:{};return(0,I.jsx)(ge,{scope:n,content:E,viewport:O,onViewportChange:k,itemRefCallback:ne,selectedItem:j,onItemLeave:re,itemTextRefCallback:ie,focusSelectedItem:H,selectedItemText:P,position:r,isPositioned:L,searchRef:te,children:(0,I.jsx)(g,{as:_e,allowPinchZoom:!0,children:(0,I.jsx)(_,{asChild:!0,trapped:T.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:d(i,e=>{T.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,I.jsx)(x,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>T.onOpenChange(!1),children:(0,I.jsx)(J,{role:`listbox`,id:T.contentId,"data-state":T.open?`open`:`closed`,dir:T.dir,onContextMenu:e=>e.preventDefault(),...w,...ae,onPlaced:()=>z(!0),ref:A,style:{display:`flex`,flexDirection:`column`,outline:`none`,...w.style},onKeyDown:d(w.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&K(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=F().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>V(t)),e.preventDefault()}})})})})})})},`SelectContentImpl`)),ye=N.forwardRef(R(function(e,t){let{__scopeSelect:r,onPlaced:i,...a}=e,s=q(Y,r),c=Z(Y,r),[l,u]=N.useState(null),[d,p]=N.useState(null),m=o(t,p),h=U(r),g=N.useRef(!1),_=N.useRef(!0),{viewport:v,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=c,S=N.useCallback(()=>{if(s.trigger&&s.valueNode&&l&&d&&v&&y&&b){let e=s.trigger.getBoundingClientRect(),t=d.getBoundingClientRect(),n=s.valueNode.getBoundingClientRect(),r=b.getBoundingClientRect();if(s.dir!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),u=window.innerWidth-X,d=w(a,[X,Math.max(X,u-c)]);l.style.minWidth=s+`px`,l.style.left=d+`px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),u=window.innerWidth-X,d=w(a,[X,Math.max(X,u-c)]);l.style.minWidth=s+`px`,l.style.right=d+`px`}let a=h(),o=window.innerHeight-X*2,c=v.scrollHeight,u=window.getComputedStyle(d),f=parseInt(u.borderTopWidth,10),p=parseInt(u.paddingTop,10),m=parseInt(u.borderBottomWidth,10),_=parseInt(u.paddingBottom,10),x=f+p+c+_+m,S=Math.min(y.offsetHeight*5,x),C=window.getComputedStyle(v),T=parseInt(C.paddingTop,10),E=parseInt(C.paddingBottom,10),D=e.top+e.height/2-X,O=o-D,k=y.offsetHeight/2,A=y.offsetTop+k,j=f+p+A,M=x-j;if(j<=D){let e=a.length>0&&y===a[a.length-1].ref.current;l.style.bottom=`0px`;let t=d.clientHeight-v.offsetTop-v.offsetHeight,n=j+Math.max(O,k+(e?E:0)+t+m);l.style.height=n+`px`}else{let e=a.length>0&&y===a[0].ref.current;l.style.top=`0px`;let t=Math.max(D,f+v.offsetTop+(e?T:0)+k)+M;l.style.height=t+`px`,v.scrollTop=j-D+v.offsetTop}l.style.margin=`${X}px 0`,l.style.minHeight=S+`px`,l.style.maxHeight=o+`px`,i?.(),requestAnimationFrame(()=>g.current=!0)}},[h,s.trigger,s.valueNode,l,d,v,y,b,s.dir,i]);f(()=>S(),[S]);let[C,T]=N.useState();f(()=>{d&&T(window.getComputedStyle(d).zIndex)},[d]);let E=N.useCallback(e=>{e&&_.current===!0&&(S(),x?.(),_.current=!1)},[S,x]);return(0,I.jsx)(xe,{scope:r,contentWrapper:l,shouldExpandOnScrollRef:g,onScrollButtonChange:E,children:(0,I.jsx)(`div`,{ref:u,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C},children:(0,I.jsx)(n.div,{...a,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...a.style}})})})},`SelectItemAlignedPosition`)),be=N.forwardRef(R(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=X,...a}=e,o=K(n);return(0,I.jsx)(j,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})},`SelectPopperPosition`)),[xe,Se]=G(Y,{}),Ce=`SelectViewport`,we=N.forwardRef(R(function(e,t){let{__scopeSelect:r,nonce:i,...a}=e,s=Z(Ce,r),c=Se(Ce,r),l=o(t,s.onViewportChange),u=N.useRef(0);return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,I.jsx)(H.Slot,{scope:r,children:(0,I.jsx)(n.div,{"data-radix-select-viewport":``,role:`presentation`,...a,ref:l,style:{position:`relative`,flex:1,overflow:`hidden auto`,...a.style},onScroll:d(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=c;if(r?.current&&n){let e=Math.abs(u.current-t.scrollTop);if(e>0){let r=window.innerHeight-X*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}u.current=t.scrollTop})})})]})},`SelectViewport`)),[Te,Ee]=G(`SelectGroup`),De=`SelectItem`,[Oe,ke]=G(De),Ae=N.forwardRef(R(function(e,t){let{__scopeSelect:r,value:i,disabled:a=!1,textValue:s,...c}=e,l=q(De,r),f=Z(De,r),p=l.value===i,[h,g]=N.useState(s??``),[_,v]=N.useState(!1),y=m(e=>f.itemRefCallback?.(e,i,a)),b=o(t,y),x=u(),S=N.useRef(`touch`),C=R(()=>{a||(l.onValueChange(i),l.onOpenChange(!1))},`handleSelect`);return(0,I.jsx)(Oe,{scope:r,value:i,disabled:a,textId:x,isSelected:p,onItemTextChange:N.useCallback(e=>{g(t=>t||(e?.textContent??``).trim())},[]),children:(0,I.jsx)(H.ItemSlot,{scope:r,value:i,disabled:a,textValue:h,children:(0,I.jsx)(n.div,{role:`option`,"aria-labelledby":x,"data-highlighted":_?``:void 0,"aria-selected":p&&_,"data-state":p?`checked`:`unchecked`,"aria-disabled":a||void 0,"data-disabled":a?``:void 0,tabIndex:a?void 0:-1,...c,ref:b,onFocus:d(c.onFocus,()=>v(!0)),onBlur:d(c.onBlur,()=>v(!1)),onClick:d(c.onClick,()=>{S.current!==`mouse`&&C()}),onPointerUp:d(c.onPointerUp,()=>{S.current===`mouse`&&C()}),onPointerDown:d(c.onPointerDown,e=>{S.current=e.pointerType}),onPointerMove:d(c.onPointerMove,e=>{S.current=e.pointerType,a?f.onItemLeave?.():S.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:d(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&f.onItemLeave?.()}),onKeyDown:d(c.onKeyDown,e=>{a||e.target!==e.currentTarget||(f.searchRef?.current===``||e.key!==` `)&&(B.includes(e.key)&&C(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),Q=`SelectItemText`,je=N.forwardRef(R(function(e,t){let{__scopeSelect:r,className:i,style:a,...s}=e,c=q(Q,r),l=Z(Q,r),u=ke(Q,r),d=ie(Q,r),[p,h]=N.useState(null),g=m(e=>l.itemTextRefCallback?.(e,u.value,u.disabled)),_=o(t,h,u.onItemTextChange,g),v=p?.textContent,y=N.useMemo(()=>(0,I.jsx)(`option`,{value:u.value,disabled:u.disabled,children:v},u.value),[u.disabled,u.value,v]),{onNativeOptionAdd:b,onNativeOptionRemove:x}=d;return f(()=>(b(y),()=>x(y)),[b,x,y]),(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(n.span,{id:u.textId,...s,ref:_}),u.isSelected&&c.valueNode&&!c.valueNodeHasChildren&&!$(c.value)?M.createPortal(s.children,c.valueNode):null]})},`SelectItemText`)),Me=`SelectItemIndicator`,Ne=N.forwardRef(R(function(e,t){let{__scopeSelect:r,...i}=e;return ke(Me,r).isSelected?(0,I.jsx)(n.span,{"aria-hidden":!0,...i,ref:t}):null},`SelectItemIndicator`)),Pe=`SelectScrollUpButton`,Fe=N.forwardRef(R(function(e,t){let n=Z(Pe,e.__scopeSelect),r=Se(Pe,e.__scopeSelect),[i,a]=N.useState(!1),s=o(t,r.onScrollButtonChange);return f(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)};R(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(Re,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),Ie=`SelectScrollDownButton`,Le=N.forwardRef(R(function(e,t){let n=Z(Ie,e.__scopeSelect),r=Se(Ie,e.__scopeSelect),[i,a]=N.useState(!1),s=o(t,r.onScrollButtonChange);return f(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;a(n)};R(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,I.jsx)(Re,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),Re=N.forwardRef(R(function(e,t){let{__scopeSelect:r,onAutoScroll:i,...a}=e,o=Z(`SelectScrollButton`,r),s=N.useRef(null),c=U(r),l=N.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return N.useEffect(()=>()=>l(),[l]),f(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,I.jsx)(n.div,{"aria-hidden":!0,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:d(a.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(i,50))}),onPointerMove:d(a.onPointerMove,()=>{o.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(i,50))}),onPointerLeave:d(a.onPointerLeave,()=>{l()})})},`SelectScrollButtonImpl`)),ze=`SelectBubbleInput`,Be=N.forwardRef(R(function({__scopeSelect:e,...t},r){let i=q(ze,e),{value:a,onValueChange:s,required:l,disabled:u,name:d,autoComplete:f,form:p}=i,{nativeOptions:m,nativeSelectKey:h}=i,g=N.useRef(null),_=o(r,g),v=a??``,y=F(v),b=Array.from(m).some(e=>(e.props.value??``)===``);return N.useEffect(()=>{let e=g.current;if(!e)return;let t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(y!==v&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,v),e.dispatchEvent(t)}},[y,v]),(0,I.jsxs)(n.select,{"aria-hidden":!0,required:l,tabIndex:-1,name:d,autoComplete:f,disabled:u,form:p,onChange:e=>s(e.target.value),...t,style:{...c,...t.style},ref:_,defaultValue:v,children:[$(a)&&!b?(0,I.jsx)(`option`,{value:``}):null,Array.from(m)]},h)},`SelectBubbleInput`));function Ve(e){return typeof e==`function`}R(Ve,`isFunction`);function $(e){return e===``||e===void 0}R($,`shouldShowPlaceholder`);function He(e){let t=m(e),n=N.useRef(``),r=N.useRef(0),i=N.useCallback(e=>{let i=n.current+e;t(i),R((function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(i)},[t]),a=N.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return N.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}R(He,`useTypeaheadSearch`);function Ue(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=We(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}R(Ue,`findNextItem`);function We(e,t){return e.map((n,r)=>e[(t+r)%e.length])}R(We,`wrapArray`);function Ge({...e}){return(0,I.jsx)(ae,{"data-slot":`select`,...e})}function Ke({...e}){return(0,I.jsx)(le,{"data-slot":`select-value`,...e})}function qe({className:e,size:t=`default`,children:n,...r}){return(0,I.jsxs)(se,{"data-slot":`select-trigger`,"data-size":t,className:i(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,I.jsx)(ue,{asChild:!0,children:(0,I.jsx)(E,{className:`size-4 opacity-50`})})]})}function Je({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...a}){return(0,I.jsx)(pe,{children:(0,I.jsxs)(me,{"data-slot":`select-content`,className:i(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...a,children:[(0,I.jsx)(Xe,{}),(0,I.jsx)(we,{className:i(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,I.jsx)(Ze,{})]})})}function Ye({className:e,children:t,...n}){return(0,I.jsxs)(Ae,{"data-slot":`select-item`,className:i(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,I.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,I.jsx)(Ne,{children:(0,I.jsx)(D,{className:`size-4`})})}),(0,I.jsx)(je,{children:t})]})}function Xe({className:e,...t}){return(0,I.jsx)(Fe,{"data-slot":`select-scroll-up-button`,className:i(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(T,{className:`size-4`})})}function Ze({className:e,...t}){return(0,I.jsx)(Le,{"data-slot":`select-scroll-down-button`,className:i(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,I.jsx)(E,{className:`size-4`})})}export{Ke as a,qe as i,Je as n,Ye as r,Ge as t};
@@ -1 +1 @@
1
- import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r}from"./Cu_sGzNJ.js";import{F as i}from"./S7HbowYz.js";import{t as a}from"./Br4335vw.js";import{c as o}from"./Udlj1Cgf.js";import{t as s}from"./CP2U-viH.js";import{t as c}from"./_zaonxnw.js";import{n as l}from"./C5Yv1gpQ.js";var u=e(t(),1),d=r(),f=0;function p({connectionId:e,tabId:t,input:r}){let{t:p}=n(),m=a(e,t,``),[h,g]=(0,u.useState)(r||``),[_,v]=(0,u.useState)(``),[y,b]=(0,u.useState)(``),[x,S]=(0,u.useState)(``),[C,w]=(0,u.useState)(null),[T,E]=(0,u.useState)(null),D=l(e,e=>e.type===`message`?{id:++f,time:e.time,channel:e.channel,pattern:e.pattern,message:e.message}:null),O=async()=>{let{channels:e,patterns:t}=o(h);e.length+t.length!==0&&(await D.start({kind:`subscribe`,channels:e,patterns:t}),v(h))},k=async()=>{if(y.trim())try{w(null);let e=await m.write(`PUBLISH ${i(y.trim())} ${i(x)}`);E(Number(e))}catch(e){e instanceof Error&&e.name===`ExecutionCancelled`||w(c(e))}},A=D.error??C;return(0,d.jsx)(s,{title:p(`tools.redis.pubsub`),onRefresh:async()=>{},error:A,onDismissError:()=>{D.dismissError(),w(null)},children:(0,d.jsxs)(`div`,{className:`flex h-full flex-col text-xs`,children:[(0,d.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-2`,children:[(0,d.jsx)(`input`,{className:`h-7 w-96 rounded border bg-background px-2 font-mono`,placeholder:p(`tools.redis.subscribePlaceholder`),value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&O()}}),D.running?(0,d.jsx)(`button`,{type:`button`,onClick:D.stop,className:`h-7 rounded border bg-background px-2 text-muted-foreground hover:text-foreground`,children:p(`tools.redis.unsubscribe`)}):(0,d.jsx)(`button`,{type:`button`,disabled:!h.trim(),onClick:()=>void O(),className:`h-7 rounded border border-primary/30 bg-primary/10 px-2 text-primary hover:bg-primary/20 disabled:opacity-40`,children:p(`tools.redis.subscribe`)}),D.running&&(0,d.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,d.jsx)(`span`,{className:`size-2 animate-pulse rounded-full bg-green-500`}),p(`tools.redis.listening`,{targets:_})]}),(0,d.jsx)(`div`,{className:`flex-1`}),(0,d.jsx)(`button`,{type:`button`,onClick:D.clear,className:`h-7 rounded border bg-background px-2 text-muted-foreground hover:text-foreground`,children:p(`tools.clear`)})]}),!m.readOnly&&(0,d.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-2`,children:[(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:p(`tools.redis.publish`)}),(0,d.jsx)(`input`,{className:`h-7 w-48 rounded border bg-background px-2 font-mono`,placeholder:p(`tools.redis.channel`),value:y,onChange:e=>b(e.target.value)}),(0,d.jsx)(`input`,{className:`h-7 min-w-64 flex-1 rounded border bg-background px-2 font-mono`,placeholder:p(`tools.redis.message`),value:x,onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&k()}}),(0,d.jsx)(`button`,{type:`button`,disabled:!y.trim(),onClick:()=>void k(),className:`h-7 rounded border bg-background px-2 text-muted-foreground hover:text-foreground disabled:opacity-40`,children:p(`tools.redis.send`)}),T!==null&&(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:p(`tools.redis.receivers`,{count:T})})]}),(0,d.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:D.rows.length===0?(0,d.jsx)(`p`,{className:`p-6 text-center text-muted-foreground`,children:D.running?p(`tools.redis.waitingMessages`):p(`tools.redis.pubsubIntro`)}):(0,d.jsxs)(`table`,{className:`w-full border-collapse`,children:[(0,d.jsx)(`thead`,{className:`sticky top-0 bg-muted text-left text-muted-foreground`,children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{className:`w-28 px-3 py-1.5`,children:p(`tools.redis.time`)}),(0,d.jsx)(`th`,{className:`w-48 px-3 py-1.5`,children:p(`tools.redis.channel`)}),(0,d.jsx)(`th`,{className:`px-3 py-1.5`,children:p(`tools.redis.message`)})]})}),(0,d.jsx)(`tbody`,{children:D.rows.map(e=>(0,d.jsxs)(`tr`,{className:`border-b border-border/50 align-top hover:bg-muted/40`,children:[(0,d.jsx)(`td`,{className:`whitespace-nowrap px-3 py-1 tabular-nums text-muted-foreground`,children:new Date(e.time).toLocaleTimeString()}),(0,d.jsxs)(`td`,{className:`px-3 py-1 font-mono`,children:[e.channel,e.pattern&&(0,d.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.pattern,`)`]})]}),(0,d.jsx)(`td`,{className:`whitespace-pre-wrap break-all px-3 py-1 font-mono`,children:e.message})]},e.id))})]})}),D.rows.length>=2e3&&(0,d.jsx)(`p`,{className:`flex-shrink-0 border-t px-3 py-1 text-muted-foreground`,children:p(`tools.redis.feedLimit`,{count:2e3})})]})})}export{p as PubSub};
1
+ import{r as e}from"./hePW80VL.js";import{p as t}from"./CYz610vE.js";import{i as n,r}from"./Cu_sGzNJ.js";import{F as i}from"./S7HbowYz.js";import{t as a}from"./84VwJAQi.js";import{c as o}from"./Udlj1Cgf.js";import{t as s}from"./BQ1Rcyw6.js";import{t as c}from"./_zaonxnw.js";import{n as l}from"./BixvbqFe.js";var u=e(t(),1),d=r(),f=0;function p({connectionId:e,tabId:t,input:r}){let{t:p}=n(),m=a(e,t,``),[h,g]=(0,u.useState)(r||``),[_,v]=(0,u.useState)(``),[y,b]=(0,u.useState)(``),[x,S]=(0,u.useState)(``),[C,w]=(0,u.useState)(null),[T,E]=(0,u.useState)(null),D=l(e,e=>e.type===`message`?{id:++f,time:e.time,channel:e.channel,pattern:e.pattern,message:e.message}:null),O=async()=>{let{channels:e,patterns:t}=o(h);e.length+t.length!==0&&(await D.start({kind:`subscribe`,channels:e,patterns:t}),v(h))},k=async()=>{if(y.trim())try{w(null);let e=await m.write(`PUBLISH ${i(y.trim())} ${i(x)}`);E(Number(e))}catch(e){e instanceof Error&&e.name===`ExecutionCancelled`||w(c(e))}},A=D.error??C;return(0,d.jsx)(s,{title:p(`tools.redis.pubsub`),onRefresh:async()=>{},error:A,onDismissError:()=>{D.dismissError(),w(null)},children:(0,d.jsxs)(`div`,{className:`flex h-full flex-col text-xs`,children:[(0,d.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-2`,children:[(0,d.jsx)(`input`,{className:`h-7 w-96 rounded border bg-background px-2 font-mono`,placeholder:p(`tools.redis.subscribePlaceholder`),value:h,onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&O()}}),D.running?(0,d.jsx)(`button`,{type:`button`,onClick:D.stop,className:`h-7 rounded border bg-background px-2 text-muted-foreground hover:text-foreground`,children:p(`tools.redis.unsubscribe`)}):(0,d.jsx)(`button`,{type:`button`,disabled:!h.trim(),onClick:()=>void O(),className:`h-7 rounded border border-primary/30 bg-primary/10 px-2 text-primary hover:bg-primary/20 disabled:opacity-40`,children:p(`tools.redis.subscribe`)}),D.running&&(0,d.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,d.jsx)(`span`,{className:`size-2 animate-pulse rounded-full bg-green-500`}),p(`tools.redis.listening`,{targets:_})]}),(0,d.jsx)(`div`,{className:`flex-1`}),(0,d.jsx)(`button`,{type:`button`,onClick:D.clear,className:`h-7 rounded border bg-background px-2 text-muted-foreground hover:text-foreground`,children:p(`tools.clear`)})]}),!m.readOnly&&(0,d.jsxs)(`div`,{className:`flex flex-shrink-0 flex-wrap items-center gap-2 border-b px-3 py-2`,children:[(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:p(`tools.redis.publish`)}),(0,d.jsx)(`input`,{className:`h-7 w-48 rounded border bg-background px-2 font-mono`,placeholder:p(`tools.redis.channel`),value:y,onChange:e=>b(e.target.value)}),(0,d.jsx)(`input`,{className:`h-7 min-w-64 flex-1 rounded border bg-background px-2 font-mono`,placeholder:p(`tools.redis.message`),value:x,onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&k()}}),(0,d.jsx)(`button`,{type:`button`,disabled:!y.trim(),onClick:()=>void k(),className:`h-7 rounded border bg-background px-2 text-muted-foreground hover:text-foreground disabled:opacity-40`,children:p(`tools.redis.send`)}),T!==null&&(0,d.jsx)(`span`,{className:`text-muted-foreground`,children:p(`tools.redis.receivers`,{count:T})})]}),(0,d.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:D.rows.length===0?(0,d.jsx)(`p`,{className:`p-6 text-center text-muted-foreground`,children:D.running?p(`tools.redis.waitingMessages`):p(`tools.redis.pubsubIntro`)}):(0,d.jsxs)(`table`,{className:`w-full border-collapse`,children:[(0,d.jsx)(`thead`,{className:`sticky top-0 bg-muted text-left text-muted-foreground`,children:(0,d.jsxs)(`tr`,{children:[(0,d.jsx)(`th`,{className:`w-28 px-3 py-1.5`,children:p(`tools.redis.time`)}),(0,d.jsx)(`th`,{className:`w-48 px-3 py-1.5`,children:p(`tools.redis.channel`)}),(0,d.jsx)(`th`,{className:`px-3 py-1.5`,children:p(`tools.redis.message`)})]})}),(0,d.jsx)(`tbody`,{children:D.rows.map(e=>(0,d.jsxs)(`tr`,{className:`border-b border-border/50 align-top hover:bg-muted/40`,children:[(0,d.jsx)(`td`,{className:`whitespace-nowrap px-3 py-1 tabular-nums text-muted-foreground`,children:new Date(e.time).toLocaleTimeString()}),(0,d.jsxs)(`td`,{className:`px-3 py-1 font-mono`,children:[e.channel,e.pattern&&(0,d.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[`(`,e.pattern,`)`]})]}),(0,d.jsx)(`td`,{className:`whitespace-pre-wrap break-all px-3 py-1 font-mono`,children:e.message})]},e.id))})]})}),D.rows.length>=2e3&&(0,d.jsx)(`p`,{className:`flex-shrink-0 border-t px-3 py-1 text-muted-foreground`,children:p(`tools.redis.feedLimit`,{count:2e3})})]})})}export{p as PubSub};
@@ -1,2 +1,4 @@
1
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:`Base 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:`运行本机上已安装并已登录的 agent CLI,因此不需要填写密钥。可用于解释失败和执行计划;AI 面板需要能调用工具的 provider。`,cliNone:`本机未找到 agent 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:`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:`保留所有权利。`,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":"我的连接","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":"数据库主机/端口在跳板机上解析——请填写数据库的真实地址(如 RDS 端点),而不是 localhost 或本地端口转发。","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\\"。","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 账号连接。填写后,Planche 直接读取本机 `wrangler dev` 正在运行的数据库——不需要账号和 API 令牌,下面的账号字段会被忽略。开发服务器只绑定一个 D1 时,Database ID 可以留空。","d1PickDatabase":"选择数据库","searchAuthHint":"填写用户和密码时使用基本认证。用户留空时,密码将作为 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:`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:`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 语句`,duplicateStructure:`复制结构`,copyTable:`复制表到其他位置…`,compare:`比较{{type}}…`,truncateTable:`清空表`,dropTable:`删除表`,exportCsv:`导出为 CSV`,exportTsv:`导出为 TSV…`,openView:`打开视图`,alterView:`修改视图`,showCreateView:`显示视图的 CREATE 语句`,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:`该{{type}}的定义将被{{from}}移除。此操作无法撤销。`,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}} 使用 {{expected}},而不是 {{found}}。","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":"不适用","affectedRows":"受影响的行数","fields":"字段","fieldDetails":"字段详情","colName":"名称","colType":"类型","colTable":"表","resultSets":"结果集","rowsReturned":"返回行数","insertId":"最后插入 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:`确定`},m={dialog:{createTitle:`创建表`,alterTitle:`修改表`,duplicateTitle:`复制表结构`,create:`创建`,alter:`修改`,cancel:`取消`,tableName:`表名`,tableNamePlaceholder:`输入表名...`,loading:`正在加载表架构...`,tabSchema:`架构`,tabIndexes:`索引`,tabProperties:`属性`,applying:`正在应用…`,cannotAlterColumns:`{{engine}} 无法修改已存在的列的定义({{columns}})。添加、删除、重命名列以及修改索引均可用;如需更改列定义,请重建表。`},schema:{colField:`字段名`,colType:`数据类型`,colLength:`长度`,colDefault:`默认值`,colPk:`主键`,colNotNull:`非空`,colUnsigned:`无符号`,colAutoIncrement:`自增`,colZerofill:`零填充`,colComment:`注释`,empty:`未定义任何列。点击“添加列”添加一列。`,add:`添加列`,remove:`移除列`},indexes:{colName:`索引名`,colType:`索引类型`,colColumns:`列`,empty:`未定义任何索引。点击“添加索引”添加一个。`,add:`添加索引`,remove:`移除索引`},index:{addTitle:`添加索引`,editTitle:`编辑索引`,name:`索引名`,namePlaceholder:`输入索引名`,type:`索引类型`,columns:`列`,noColumns:`没有可用的列。请先在“架构”标签页中定义列。`,unnamed:`(未命名)`,cancel:`取消`,ok:`确定`},properties:{engine:`引擎`,charset:`字符集`,collation:`排序规则`,autoIncrement:`自增值`,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:`已复制 {{copied}} / {{total}} 行`,progressDone:`完成`,doneTitle:`表已复制`,doneRows:`已将 {{count}} 行复制到 {{table}}。`,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:`已写入 {{loaded}} / {{total}} 行`,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:`请至少选择一个分组列。`,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:`Flush`,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:`按用户、主机、数据库、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:`将自动分析模型、枚举和关系`,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:`DELETE {{target}} 中的所有行`,updateAll:`UPDATE {{target}} 中的所有行`,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:`每年一次性收取 {{annual}}。按月付费为 {{monthly}}。`,featureDetails:{sync:`在浏览器中加密后,在你的所有电脑上使用同一套配置`,ssh_tunnel:`通过密码、密钥或 ssh-agent 连接跳板机后的数据库`,compare_schemas:`比较两个已打开的连接并生成 ALTER 脚本`,compare_data:`比较两张表的行并生成 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:`执行计划一次只分析一条语句。请把光标放在目标语句上,或选中它。`},T={title:`AI 助手`,intro:`让它写查询,或直接下指令 —— 它会读取结构、在标签页里写 SQL 并执行。它只作用于你当前打开的连接,每个连接各有各的对话。`,privacy:`工具读取到的内容(包括示例行)会发送给你配置的 provider。不会有任何内容发往 planche.dev。`,placeholder:`例如:在演示数据库上做一个按月营收的查询`,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:`两次输入的密码短语不一致。`,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),回车`,loadMore:`加载更多`,loading:`加载中…`,formatJson:`格式化 JSON`,prettyReadOnly:`要编辑请关闭格式化 JSON`,truncated:`仅显示前 {{size}}`,loadFull:`全部加载`,field:`字段`,value:`值`,member:`成员`,score:`分数`,index:`索引`,pushTail:`追加到末尾`,pushHead:`追加到开头`,entryId:`ID`,fields:`字段`,entryFieldsPlaceholder:`字段 值; 字段 值`,entryFieldsRequired:`条目至少需要一个字段。`,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:`显示 {{count}} / {{total}} 项`,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:`已扫描 {{scanned}} / {{total}} 个键`,partial:`部分结果`,keysAnalyzed:`已分析键`,totalMemory:`内存`,average:`每键平均`,missingSizes_other:`{{count}} 个键无法获取大小(MEMORY USAGE 被拒绝或扫描中过期),按 0 字节计。`,byType:`按类型`,byTtl:`按过期时间`,byPrefix:`按前缀`,largest:`最大的键`,ttlNone:`永不过期`,prefixHint:`点击前缀可删除其键,点击键可打开键查看器。`,deleteIntro:`查找匹配模式的键,确认后删除。模式使用 Redis glob 语法:* 任意字符,? 单个字符,[abc] 字符集。`,preview:`查找匹配的键`,deleteAllWarning:`* 会匹配此数据库中的所有键。`,matchCount:`{{database}} 中有 {{count}} 个键匹配`,matchCapped:`(在 {{cap}} 处停止;删除后再次运行以处理其余部分)`,deleteConfirm:`输入 {{pattern}} 以确认。`,deleteKeys:`删除 {{count}} 个键`,deleteNote:`以 UNLINK 每次 500 个删除。搜索后新建的键不包括在内。`,deletedCount:`已删除 {{count}} 个键。`,deleteReadOnly:`此连接为只读。`,noKeys:`{{database}} 中没有键。`,pubsub:`发布/订阅`,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:`以下是你上次打开 Planche 后的更新。`,agentOutdated:`要使用这些功能,请把代理更新到 {{required}} 或更高版本(当前是 {{current}})。在终端中运行:`,allChanges:`查看全部更新记录`,close:`知道了`},N={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};export{i as about,T as ai,e as app,_ as command,p as confirm,a as connection,h as database,N as default,O as desktop,A as docViewer,x as dryRun,v as erd,w as explain,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};
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:`每年一次性收取 {{annual}}。按月付费为 {{monthly}}。`,featureDetails:{sync:`在浏览器中加密后,在你的所有电脑上使用同一套配置`,ssh_tunnel:`通过密码、密钥或 ssh-agent 连接跳板机后的数据库`,compare_schemas:`比较两个已打开的连接并生成 ALTER 脚本`,compare_data:`比较两张表的行并生成 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:`执行计划一次只分析一条语句。请把光标放在目标语句上,或选中它。`},T={title:`AI 助手`,intro:`让它写查询,或直接下指令 —— 它会读取结构、在标签页里写 SQL 并执行。它只作用于你当前打开的连接,每个连接各有各的对话。`,privacy:`工具读取到的内容(包括示例行)会发送给你配置的 provider。不会有任何内容发往 planche.dev。`,placeholder:`例如:在演示数据库上做一个按月营收的查询`,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:`两次输入的密码短语不一致。`,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),回车`,loadMore:`加载更多`,loading:`加载中…`,formatJson:`格式化 JSON`,prettyReadOnly:`要编辑请关闭格式化 JSON`,truncated:`仅显示前 {{size}}`,loadFull:`全部加载`,field:`字段`,value:`值`,member:`成员`,score:`分数`,index:`索引`,pushTail:`追加到末尾`,pushHead:`追加到开头`,entryId:`ID`,fields:`字段`,entryFieldsPlaceholder:`字段 值; 字段 值`,entryFieldsRequired:`条目至少需要一个字段。`,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:`显示 {{count}} / {{total}} 项`,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:`已扫描 {{scanned}} / {{total}} 个键`,partial:`部分结果`,keysAnalyzed:`已分析键`,totalMemory:`内存`,average:`每键平均`,missingSizes_other:`{{count}} 个键无法获取大小(MEMORY USAGE 被拒绝或扫描中过期),按 0 字节计。`,byType:`按类型`,byTtl:`按过期时间`,byPrefix:`按前缀`,largest:`最大的键`,ttlNone:`永不过期`,prefixHint:`点击前缀可删除其键,点击键可打开键查看器。`,deleteIntro:`查找匹配模式的键,确认后删除。模式使用 Redis glob 语法:* 任意字符,? 单个字符,[abc] 字符集。`,preview:`查找匹配的键`,deleteAllWarning:`* 会匹配此数据库中的所有键。`,matchCount:`{{database}} 中有 {{count}} 个键匹配`,matchCapped:`(在 {{cap}} 处停止;删除后再次运行以处理其余部分)`,deleteConfirm:`输入 {{pattern}} 以确认。`,deleteKeys:`删除 {{count}} 个键`,deleteNote:`以 UNLINK 每次 500 个删除。搜索后新建的键不包括在内。`,deletedCount:`已删除 {{count}} 个键。`,deleteReadOnly:`此连接为只读。`,noKeys:`{{database}} 中没有键。`,pubsub:`发布/订阅`,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:`以下是你上次打开 Planche 后的更新。`,agentOutdated:`要使用这些功能,请把代理更新到 {{required}} 或更高版本(当前是 {{current}})。在终端中运行:`,allChanges:`查看全部更新记录`,close:`知道了`},N={pairFailedTitle:`无法与代理配对`,agentOffline:`这台电脑上没有代理在响应。请在终端里用下面的命令启动代理,然后打开它输出的链接。
3
+ 如果代理已经在运行,可能是 Chrome 阻止了本页访问本地网络:点击地址栏左侧的图标,允许本地网络访问。`,agentOutdated:`这台电脑上的代理版本太旧,无法使用此功能。请先停止代理,用下面的命令更新后再启动。`,agentToken:`代理已重新启动,本页保存的令牌已失效。请打开代理终端里新输出的链接。`,codeRejected:`每个配对链接只能用一次,且只在 10 分钟内有效。请打开代理终端里最新输出的链接。`,agentLocked:`错误尝试次数过多,代理会在 30 秒内拒绝请求。请稍等,然后打开终端里最新的链接。`,originBlocked:`代理只接受从 planche.dev 和本地开发服务器打开的应用。请在 planche.dev 打开 Planche,或者启动代理时用 --origin 加上本页的地址。`,sshAuth:`SSH 服务器拒绝了登录。请检查 SSH 部分中的用户,以及密码或私钥。`,dbAuth:`数据库拒绝了登录。请检查用户名和密码。`,network:`代理无法连到数据库服务器。请检查主机和端口是否正确、服务器是否已启动。代理运行在你的电脑上,所以 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};