@hienlh/ppm 0.9.26 → 0.9.27

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 (20) hide show
  1. package/dist/web/assets/{browser-tab-DPvH5VhD.js → browser-tab-1r4MVZg5.js} +1 -1
  2. package/dist/web/assets/{chat-tab-BF8l8a3L.js → chat-tab-Bej84Yuh.js} +1 -1
  3. package/dist/web/assets/{code-editor-C2TuWBbN.js → code-editor-BBdXEMHh.js} +1 -1
  4. package/dist/web/assets/{database-viewer-DmuRsqPC.js → database-viewer-IBzgLkgl.js} +1 -1
  5. package/dist/web/assets/{diff-viewer-sSiXKfTi.js → diff-viewer-O0Cw2ozL.js} +1 -1
  6. package/dist/web/assets/{extension-webview-BTY54kgc.js → extension-webview-BFEbUjma.js} +1 -1
  7. package/dist/web/assets/{git-graph-z16nosLs.js → git-graph-CK3PuYrZ.js} +1 -1
  8. package/dist/web/assets/{index-GUlcYGYH.js → index-Cdytqo8a.js} +4 -4
  9. package/dist/web/assets/keybindings-store-CGJa7o0j.js +1 -0
  10. package/dist/web/assets/{markdown-renderer-3lMjksD-.js → markdown-renderer-RhbK71N8.js} +1 -1
  11. package/dist/web/assets/{postgres-viewer-bN4ltnEE.js → postgres-viewer-icIN9Fd9.js} +1 -1
  12. package/dist/web/assets/{settings-tab-DW3RE6Sm.js → settings-tab-DDEYO_L1.js} +1 -1
  13. package/dist/web/assets/{sqlite-viewer-3ti8mIWl.js → sqlite-viewer-B6ugkvON.js} +1 -1
  14. package/dist/web/assets/{terminal-tab-BcFzPhTl.js → terminal-tab-Bjdfnbmn.js} +1 -1
  15. package/dist/web/assets/{use-monaco-theme-C39wzosv.js → use-monaco-theme-CR1dZtp7.js} +1 -1
  16. package/dist/web/index.html +1 -1
  17. package/dist/web/sw.js +1 -1
  18. package/package.json +1 -1
  19. package/src/web/components/settings/proxy-settings-section.tsx +1 -1
  20. package/dist/web/assets/keybindings-store-Ch4LMTQO.js +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-settings-Bid0NHuI.js","assets/chunk-CFjPhJqf.js","assets/api-client-BKIT_Qeg.js","assets/terminal-tab-BcFzPhTl.js","assets/utils-DMiycH3O.js","assets/jsx-runtime-kMwlnEGE.js","assets/react-nm2Ru1Pt.js","assets/terminal-tab-BrP-ENHg.css","assets/chat-tab-BF8l8a3L.js","assets/preload-helper-Bf_JiD2A.js","assets/dist-Cep75xXf.js","assets/dist-DRTW9IWi.js","assets/createLucideIcon-PuMiQgHl.js","assets/react-dom-Bpkvzu3U.js","assets/chunk-PU5JKC2W-C7Gry6md.js","assets/src-Dw4QhedI.js","assets/chunk-GEFDOKGD-tDjHsAUs.js","assets/math-y9zN1W-N.js","assets/chunk-7R4GIKGN-Dvbyu4Zw.js","assets/isArrayLikeObject-CGBoxvCD.js","assets/arrow-up-BYhx9ckd.js","assets/chevron-right-5HgK6l7K.js","assets/markdown-renderer-3lMjksD-.js","assets/isEmpty-B9L-Ge-H.js","assets/tab-store-BXMIUvsE.js","assets/react-SKk5z-bm.js","assets/chunk-GLR3WWYH-DBdWQ3zy.js","assets/chunk-KYZI473N-Djw13C-3.js","assets/chunk-PQ6SQG4A-DX0xW7kO.js","assets/chunk-YBOYWFTD-av5aeHLq.js","assets/rough.esm-nHaDi0Kw.js","assets/chunk-O4XLMI2P-BsUWb9d0.js","assets/line-B75-Rx70.js","assets/path-DIKpVbHL.js","assets/array-DqLCdDFv.js","assets/chunk-MX3YWQON-C2UEioMs.js","assets/chunk-HHEYEP7N-BBw_z0fW.js","assets/chunk-XPW4576I-BPEX8KhL.js","assets/columns-2-cEVJHYd7.js","assets/tag-CXMT0QB6.js","assets/code-editor-C2TuWBbN.js","assets/use-monaco-theme-C39wzosv.js","assets/table-DFevCOMd.js","assets/database-viewer-DmuRsqPC.js","assets/dist-DKlZwvf8.js","assets/lib-BeaDXEkP.js","assets/sqlite-viewer-3ti8mIWl.js","assets/postgres-viewer-bN4ltnEE.js","assets/git-graph-z16nosLs.js","assets/diff-viewer-sSiXKfTi.js","assets/settings-tab-DW3RE6Sm.js","assets/browser-tab-DPvH5VhD.js","assets/extension-webview-BTY54kgc.js","assets/keybindings-store-Ch4LMTQO.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-settings-Bid0NHuI.js","assets/chunk-CFjPhJqf.js","assets/api-client-BKIT_Qeg.js","assets/terminal-tab-Bjdfnbmn.js","assets/utils-DMiycH3O.js","assets/jsx-runtime-kMwlnEGE.js","assets/react-nm2Ru1Pt.js","assets/terminal-tab-BrP-ENHg.css","assets/chat-tab-Bej84Yuh.js","assets/preload-helper-Bf_JiD2A.js","assets/dist-Cep75xXf.js","assets/dist-DRTW9IWi.js","assets/createLucideIcon-PuMiQgHl.js","assets/react-dom-Bpkvzu3U.js","assets/chunk-PU5JKC2W-C7Gry6md.js","assets/src-Dw4QhedI.js","assets/chunk-GEFDOKGD-tDjHsAUs.js","assets/math-y9zN1W-N.js","assets/chunk-7R4GIKGN-Dvbyu4Zw.js","assets/isArrayLikeObject-CGBoxvCD.js","assets/arrow-up-BYhx9ckd.js","assets/chevron-right-5HgK6l7K.js","assets/markdown-renderer-RhbK71N8.js","assets/isEmpty-B9L-Ge-H.js","assets/tab-store-BXMIUvsE.js","assets/react-SKk5z-bm.js","assets/chunk-GLR3WWYH-DBdWQ3zy.js","assets/chunk-KYZI473N-Djw13C-3.js","assets/chunk-PQ6SQG4A-DX0xW7kO.js","assets/chunk-YBOYWFTD-av5aeHLq.js","assets/rough.esm-nHaDi0Kw.js","assets/chunk-O4XLMI2P-BsUWb9d0.js","assets/line-B75-Rx70.js","assets/path-DIKpVbHL.js","assets/array-DqLCdDFv.js","assets/chunk-MX3YWQON-C2UEioMs.js","assets/chunk-HHEYEP7N-BBw_z0fW.js","assets/chunk-XPW4576I-BPEX8KhL.js","assets/columns-2-cEVJHYd7.js","assets/tag-CXMT0QB6.js","assets/code-editor-BBdXEMHh.js","assets/use-monaco-theme-CR1dZtp7.js","assets/table-DFevCOMd.js","assets/database-viewer-IBzgLkgl.js","assets/dist-DKlZwvf8.js","assets/lib-BeaDXEkP.js","assets/sqlite-viewer-B6ugkvON.js","assets/postgres-viewer-icIN9Fd9.js","assets/git-graph-CK3PuYrZ.js","assets/diff-viewer-O0Cw2ozL.js","assets/settings-tab-DDEYO_L1.js","assets/browser-tab-1r4MVZg5.js","assets/extension-webview-BFEbUjma.js","assets/keybindings-store-CGJa7o0j.js"])))=>i.map(i=>d[i]);
2
2
  import{o as e,t}from"./chunk-CFjPhJqf.js";import{t as n}from"./react-nm2Ru1Pt.js";import{t as r}from"./react-dom-Bpkvzu3U.js";import{t as i}from"./createLucideIcon-PuMiQgHl.js";import{t as a}from"./chevron-right-5HgK6l7K.js";import{A as o,C as s,D as c,E as l,O as u,S as d,T as f,_ as p,a as m,b as h,c as g,d as _,f as v,g as y,h as b,i as x,k as S,l as C,m as w,n as T,o as E,p as D,r as O,s as k,t as A,u as j,v as M,w as ee,x as te,y as N}from"./dist-DRTW9IWi.js";import{a as P,c as ne,i as re,n as F,o as ie,r as I,s as L,t as R}from"./tab-store-BXMIUvsE.js";import{t as ae}from"./react-SKk5z-bm.js";import{t as oe}from"./preload-helper-Bf_JiD2A.js";import{t as se}from"./jsx-runtime-kMwlnEGE.js";import{i as ce,n as z,t as le}from"./utils-DMiycH3O.js";import{a as ue,i as B,r as de,t as V}from"./api-client-BKIT_Qeg.js";import{a as fe,d as pe,g as me,m as he}from"./api-settings-Bid0NHuI.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ge=t((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),_e=t(((e,t)=>{t.exports=ge()})),ve=t((e=>{var t=_e(),i=n(),a=r();function o(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function s(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function c(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function l(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function u(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function d(e){if(c(e)!==e)throw Error(o(188))}function f(e){var t=e.alternate;if(!t){if(t=c(e),t===null)throw Error(o(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var a=i.alternate;if(a===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return d(i),e;if(a===r)return d(i),t;a=a.sibling}throw Error(o(188))}if(n.return!==r.return)n=i,r=a;else{for(var s=!1,l=i.child;l;){if(l===n){s=!0,n=i,r=a;break}if(l===r){s=!0,r=i,n=a;break}l=l.sibling}if(!s){for(l=a.child;l;){if(l===n){s=!0,n=a,r=i;break}if(l===r){s=!0,r=a,n=i;break}l=l.sibling}if(!s)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(n.tag!==3)throw Error(o(188));return n.stateNode.current===n?e:t}function p(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=p(e),t!==null)return t;e=e.sibling}return null}var m=Object.assign,h=Symbol.for(`react.element`),g=Symbol.for(`react.transitional.element`),_=Symbol.for(`react.portal`),v=Symbol.for(`react.fragment`),y=Symbol.for(`react.strict_mode`),b=Symbol.for(`react.profiler`),x=Symbol.for(`react.consumer`),S=Symbol.for(`react.context`),C=Symbol.for(`react.forward_ref`),w=Symbol.for(`react.suspense`),T=Symbol.for(`react.suspense_list`),E=Symbol.for(`react.memo`),D=Symbol.for(`react.lazy`),O=Symbol.for(`react.activity`),k=Symbol.for(`react.memo_cache_sentinel`),A=Symbol.iterator;function j(e){return typeof e!=`object`||!e?null:(e=A&&e[A]||e[`@@iterator`],typeof e==`function`?e:null)}var M=Symbol.for(`react.client.reference`);function ee(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===M?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case v:return`Fragment`;case b:return`Profiler`;case y:return`StrictMode`;case w:return`Suspense`;case T:return`SuspenseList`;case O:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case _:return`Portal`;case S:return e.displayName||`Context`;case x:return(e._context.displayName||`Context`)+`.Consumer`;case C:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case E:return t=e.displayName||null,t===null?ee(e.type)||`Memo`:t;case D:t=e._payload,e=e._init;try{return ee(e(t))}catch{}}return null}var te=Array.isArray,N=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,P=a.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne={pending:!1,data:null,method:null,action:null},re=[],F=-1;function ie(e){return{current:e}}function I(e){0>F||(e.current=re[F],re[F]=null,F--)}function L(e,t){F++,re[F]=e.current,e.current=t}var R=ie(null),ae=ie(null),oe=ie(null),se=ie(null);function ce(e,t){switch(L(oe,t),L(ae,e),L(R,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Hd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Hd(t),e=Ud(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}I(R),L(R,e)}function z(){I(R),I(ae),I(oe)}function le(e){e.memoizedState!==null&&L(se,e);var t=R.current,n=Ud(t,e.type);t!==n&&(L(ae,e),L(R,n))}function ue(e){ae.current===e&&(I(R),I(ae)),se.current===e&&(I(se),$f._currentValue=ne)}var B,de;function V(e){if(B===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);B=t&&t[1]||``,de=-1<e.stack.indexOf(`
3
3
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
4
4
  `+B+e+de}var fe=!1;function pe(e,t){if(!e||fe)return``;fe=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,`props`,{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,`name`,{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
@@ -11,12 +11,12 @@ Error generating stack: `+e.message+`
11
11
 
12
12
  If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
13
13
 
14
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return U.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Ar=`DialogDescriptionWarning`,jr=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Or(Ar).contentName}}.`;return U.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Mr=rr,Nr=ar,Pr=lr,Fr=dr,Ir=hr,Lr=br,Rr=Sr,zr=wr;function Br(e){let t=U.useRef({value:e,previous:e});return U.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Vr=`rovingFocusGroup.onEntryFocus`,Hr={bubbles:!1,cancelable:!0},Ur=`RovingFocusGroup`,[Wr,Gr,Kr]=h(Ur),[qr,Jr]=d(Ur,[Kr]),[Yr,Xr]=qr(Ur),Zr=U.forwardRef((e,t)=>(0,W.jsx)(Wr.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,W.jsx)(Wr.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,W.jsx)(Qr,{...e,ref:t})})}));Zr.displayName=Ur;var Qr=U.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:d=!1,...f}=e,m=U.useRef(null),h=S(t,m),g=w(a),[_,v]=p({prop:o,defaultProp:c??null,onChange:l,caller:Ur}),[y,b]=U.useState(!1),x=D(u),C=Gr(n),T=U.useRef(!1),[E,O]=U.useState(0);return U.useEffect(()=>{let e=m.current;if(e)return e.addEventListener(Vr,x),()=>e.removeEventListener(Vr,x)},[x]),(0,W.jsx)(Yr,{scope:n,orientation:r,dir:g,loop:i,currentTabStopId:_,onItemFocus:U.useCallback(e=>v(e),[v]),onItemShiftTab:U.useCallback(()=>b(!0),[]),onFocusableItemAdd:U.useCallback(()=>O(e=>e+1),[]),onFocusableItemRemove:U.useCallback(()=>O(e=>e-1),[]),children:(0,W.jsx)(s.div,{tabIndex:y||E===0?-1:0,"data-orientation":r,...f,ref:h,style:{outline:`none`,...e.style},onMouseDown:N(e.onMouseDown,()=>{T.current=!0}),onFocus:N(e.onFocus,e=>{let t=!T.current;if(e.target===e.currentTarget&&t&&!y){let t=new CustomEvent(Vr,Hr);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=C().filter(e=>e.focusable);ii([e.find(e=>e.active),e.find(e=>e.id===_),...e].filter(Boolean).map(e=>e.ref.current),d)}}T.current=!1}),onBlur:N(e.onBlur,()=>b(!1))})})}),$r=`RovingFocusGroupItem`,ei=U.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=b(),u=a||l,d=Xr($r,n),f=d.currentTabStopId===u,p=Gr(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d;return U.useEffect(()=>{if(r)return m(),()=>h()},[r,m,h]),(0,W.jsx)(Wr.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,W.jsx)(s.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:N(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:N(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:N(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ri(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?ai(n,r+1):n.slice(r+1)}setTimeout(()=>ii(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})});ei.displayName=$r;var ti={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function ni(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ri(e,t,n){let r=ni(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return ti[r]}function ii(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function ai(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var oi=Zr,si=ei,ci=[`Enter`,` `],li=[`ArrowDown`,`PageUp`,`Home`],ui=[`ArrowUp`,`PageDown`,`End`],di=[...li,...ui],fi={ltr:[...ci,`ArrowRight`],rtl:[...ci,`ArrowLeft`]},pi={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},mi=`Menu`,[hi,gi,_i]=h(mi),[vi,yi]=d(mi,[_i,m,Jr]),bi=m(),xi=Jr(),[Si,Ci]=vi(mi),[wi,Ti]=vi(mi),Ei=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=bi(t),[c,l]=U.useState(null),u=U.useRef(!1),d=D(a),f=w(i);return U.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,W.jsx)(x,{...s,children:(0,W.jsx)(Si,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,W.jsx)(wi,{scope:t,onClose:U.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Ei.displayName=mi;var Di=`MenuAnchor`,Oi=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=bi(n);return(0,W.jsx)(A,{...i,...r,ref:t})});Oi.displayName=Di;var G=`MenuPortal`,[ki,Ai]=vi(G,{forceMount:void 0}),ji=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Ci(G,t);return(0,W.jsx)(ki,{scope:t,forceMount:n,children:(0,W.jsx)(y,{present:n||a.open,children:(0,W.jsx)(j,{asChild:!0,container:i,children:r})})})};ji.displayName=G;var Mi=`MenuContent`,[Ni,Pi]=vi(Mi),Fi=U.forwardRef((e,t)=>{let n=Ai(Mi,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ci(Mi,e.__scopeMenu),o=Ti(Mi,e.__scopeMenu);return(0,W.jsx)(hi.Provider,{scope:e.__scopeMenu,children:(0,W.jsx)(y,{present:r||a.open,children:(0,W.jsx)(hi.Slot,{scope:e.__scopeMenu,children:o.modal?(0,W.jsx)(Ii,{...i,ref:t}):(0,W.jsx)(Li,{...i,ref:t})})})})}),Ii=U.forwardRef((e,t)=>{let n=Ci(Mi,e.__scopeMenu),r=U.useRef(null),i=S(t,r);return U.useEffect(()=>{let e=r.current;if(e)return k(e)},[]),(0,W.jsx)(zi,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:N(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Li=U.forwardRef((e,t)=>{let n=Ci(Mi,e.__scopeMenu);return(0,W.jsx)(zi,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Ri=l(`MenuContent.ScrollLock`),zi=U.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,disableOutsideScroll:m,...h}=e,y=Ci(Mi,n),b=Ti(Mi,n),x=bi(n),w=xi(n),T=gi(n),[E,D]=U.useState(null),k=U.useRef(null),A=S(t,k,y.onContentChange),j=U.useRef(0),M=U.useRef(``),ee=U.useRef(0),te=U.useRef(null),P=U.useRef(`right`),ne=U.useRef(0),re=m?g:U.Fragment,F=m?{as:Ri,allowPinchZoom:!0}:void 0,ie=e=>{let t=M.current+e,n=T().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=Ca(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){M.current=t,window.clearTimeout(j.current),t!==``&&(j.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};U.useEffect(()=>()=>window.clearTimeout(j.current),[]),C();let I=U.useCallback(e=>P.current===te.current?.side&&Ta(e,te.current?.area),[]);return(0,W.jsx)(Ni,{scope:n,searchRef:M,onItemEnter:U.useCallback(e=>{I(e)&&e.preventDefault()},[I]),onItemLeave:U.useCallback(e=>{I(e)||(k.current?.focus(),D(null))},[I]),onTriggerLeave:U.useCallback(e=>{I(e)&&e.preventDefault()},[I]),pointerGraceTimerRef:ee,onPointerGraceIntentChange:U.useCallback(e=>{te.current=e},[]),children:(0,W.jsx)(re,{...F,children:(0,W.jsx)(_,{asChild:!0,trapped:i,onMountAutoFocus:N(a,e=>{e.preventDefault(),k.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,W.jsx)(v,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,W.jsx)(oi,{asChild:!0,...w,dir:b.dir,orientation:`vertical`,loop:r,currentTabStopId:E,onCurrentTabStopIdChange:D,onEntryFocus:N(c,e=>{b.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,W.jsx)(O,{role:`menu`,"aria-orientation":`vertical`,"data-state":va(y.open),"data-radix-menu-content":``,dir:b.dir,...x,...h,ref:A,style:{outline:`none`,...h.style},onKeyDown:N(h.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&ie(e.key));let i=k.current;if(e.target!==i||!di.includes(e.key))return;e.preventDefault();let a=T().filter(e=>!e.disabled).map(e=>e.ref.current);ui.includes(e.key)&&a.reverse(),xa(a)}),onBlur:N(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(j.current),M.current=``)}),onPointerMove:N(e.onPointerMove,Ea(e=>{let t=e.target,n=ne.current!==e.clientX;e.currentTarget.contains(t)&&n&&(P.current=e.clientX>ne.current?`right`:`left`,ne.current=e.clientX)}))})})})})})})});Fi.displayName=Mi;var Bi=`MenuGroup`,Vi=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,W.jsx)(s.div,{role:`group`,...r,ref:t})});Vi.displayName=Bi;var Hi=`MenuLabel`,Ui=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,W.jsx)(s.div,{...r,ref:t})});Ui.displayName=Hi;var Wi=`MenuItem`,Gi=`menu.itemSelect`,Ki=U.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=U.useRef(null),o=Ti(Wi,e.__scopeMenu),s=Pi(Wi,e.__scopeMenu),c=S(t,a),l=U.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Gi,{bubbles:!0,cancelable:!0});e.addEventListener(Gi,e=>r?.(e),{once:!0}),ee(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,W.jsx)(qi,{...i,ref:c,disabled:n,onClick:N(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:N(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:N(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||ci.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});Ki.displayName=Wi;var qi=U.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Pi(Wi,n),c=xi(n),l=U.useRef(null),u=S(t,l),[d,f]=U.useState(!1),[p,m]=U.useState(``);return U.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[a.children]),(0,W.jsx)(hi.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,W.jsx)(si,{asChild:!0,...c,focusable:!r,children:(0,W.jsx)(s.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:N(e.onPointerMove,Ea(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:N(e.onPointerLeave,Ea(e=>o.onItemLeave(e))),onFocus:N(e.onFocus,()=>f(!0)),onBlur:N(e.onBlur,()=>f(!1))})})})}),Ji=`MenuCheckboxItem`,Yi=U.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,W.jsx)(ra,{scope:e.__scopeMenu,checked:n,children:(0,W.jsx)(Ki,{role:`menuitemcheckbox`,"aria-checked":ya(n)?`mixed`:n,...i,ref:t,"data-state":ba(n),onSelect:N(i.onSelect,()=>r?.(ya(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Yi.displayName=Ji;var Xi=`MenuRadioGroup`,[Zi,Qi]=vi(Xi,{value:void 0,onValueChange:()=>{}}),$i=U.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=D(r);return(0,W.jsx)(Zi,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,W.jsx)(Vi,{...i,ref:t})})});$i.displayName=Xi;var ea=`MenuRadioItem`,ta=U.forwardRef((e,t)=>{let{value:n,...r}=e,i=Qi(ea,e.__scopeMenu),a=n===i.value;return(0,W.jsx)(ra,{scope:e.__scopeMenu,checked:a,children:(0,W.jsx)(Ki,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":ba(a),onSelect:N(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});ta.displayName=ea;var na=`MenuItemIndicator`,[ra,ia]=vi(na,{checked:!1}),aa=U.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=ia(na,n);return(0,W.jsx)(y,{present:r||ya(a.checked)||a.checked===!0,children:(0,W.jsx)(s.span,{...i,ref:t,"data-state":ba(a.checked)})})});aa.displayName=na;var oa=`MenuSeparator`,sa=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,W.jsx)(s.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});sa.displayName=oa;var ca=`MenuArrow`,la=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=bi(n);return(0,W.jsx)(T,{...i,...r,ref:t})});la.displayName=ca;var ua=`MenuSub`,[da,fa]=vi(ua),pa=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Ci(ua,t),o=bi(t),[s,c]=U.useState(null),[l,u]=U.useState(null),d=D(i);return U.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,W.jsx)(x,{...o,children:(0,W.jsx)(Si,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,W.jsx)(da,{scope:t,contentId:b(),triggerId:b(),trigger:s,onTriggerChange:c,children:n})})})};pa.displayName=ua;var ma=`MenuSubTrigger`,ha=U.forwardRef((e,t)=>{let n=Ci(ma,e.__scopeMenu),r=Ti(ma,e.__scopeMenu),i=fa(ma,e.__scopeMenu),a=Pi(ma,e.__scopeMenu),o=U.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},d=U.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return U.useEffect(()=>d,[d]),U.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,W.jsx)(Oi,{asChild:!0,...l,children:(0,W.jsx)(qi,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":va(n.open),...e,ref:u(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:N(e.onPointerMove,Ea(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:N(e.onPointerLeave,Ea(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,c=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:c,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:c,y:t.bottom}],side:r}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:N(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||fi[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});ha.displayName=ma;var ga=`MenuSubContent`,_a=U.forwardRef((e,t)=>{let n=Ai(Mi,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ci(Mi,e.__scopeMenu),o=Ti(Mi,e.__scopeMenu),s=fa(ga,e.__scopeMenu),c=U.useRef(null),l=S(t,c);return(0,W.jsx)(hi.Provider,{scope:e.__scopeMenu,children:(0,W.jsx)(y,{present:r||a.open,children:(0,W.jsx)(hi.Slot,{scope:e.__scopeMenu,children:(0,W.jsx)(zi,{id:s.contentId,"aria-labelledby":s.triggerId,...i,ref:l,align:`start`,side:o.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{o.isUsingKeyboardRef.current&&c.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:N(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:N(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:N(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=pi[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});_a.displayName=ga;function va(e){return e?`open`:`closed`}function ya(e){return e===`indeterminate`}function ba(e){return ya(e)?`indeterminate`:e?`checked`:`unchecked`}function xa(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Sa(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Ca(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=Sa(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function wa(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Ta(e,t){return t?wa({x:e.clientX,y:e.clientY},t):!1}function Ea(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Da=Ei,Oa=Oi,ka=ji,Aa=Fi,ja=Vi,Ma=Ui,Na=Ki,Pa=Yi,Fa=$i,Ia=ta,La=aa,Ra=sa,za=la,Ba=pa,Va=ha,Ha=_a,Ua=`ContextMenu`,[Wa,Ga]=d(Ua,[yi]),Ka=yi(),[qa,Ja]=Wa(Ua),Ya=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:a=!0}=e,[o,s]=U.useState(!1),c=Ka(t),l=D(r),u=U.useCallback(e=>{s(e),l(e)},[l]);return(0,W.jsx)(qa,{scope:t,open:o,onOpenChange:u,modal:a,children:(0,W.jsx)(Da,{...c,dir:i,open:o,onOpenChange:u,modal:a,children:n})})};Ya.displayName=Ua;var Xa=`ContextMenuTrigger`,Za=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,disabled:r=!1,...i}=e,a=Ja(Xa,n),o=Ka(n),c=U.useRef({x:0,y:0}),l=U.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...c.current})}),u=U.useRef(0),d=U.useCallback(()=>window.clearTimeout(u.current),[]),f=e=>{c.current={x:e.clientX,y:e.clientY},a.onOpenChange(!0)};return U.useEffect(()=>d,[d]),U.useEffect(()=>void(r&&d()),[r,d]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Oa,{...o,virtualRef:l}),(0,W.jsx)(s.span,{"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,...i,ref:t,style:{WebkitTouchCallout:`none`,...e.style},onContextMenu:r?e.onContextMenu:N(e.onContextMenu,e=>{d(),f(e),e.preventDefault()}),onPointerDown:r?e.onPointerDown:N(e.onPointerDown,Eo(e=>{d(),u.current=window.setTimeout(()=>f(e),700)})),onPointerMove:r?e.onPointerMove:N(e.onPointerMove,Eo(d)),onPointerCancel:r?e.onPointerCancel:N(e.onPointerCancel,Eo(d)),onPointerUp:r?e.onPointerUp:N(e.onPointerUp,Eo(d))})]})});Za.displayName=Xa;var Qa=`ContextMenuPortal`,$a=e=>{let{__scopeContextMenu:t,...n}=e,r=Ka(t);return(0,W.jsx)(ka,{...r,...n})};$a.displayName=Qa;var eo=`ContextMenuContent`,to=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ja(eo,n),a=Ka(n),o=U.useRef(!1);return(0,W.jsx)(Aa,{...a,...r,ref:t,side:`right`,sideOffset:2,align:`start`,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),!t.defaultPrevented&&o.current&&t.preventDefault(),o.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),!t.defaultPrevented&&!i.modal&&(o.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-context-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-context-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-context-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-context-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});to.displayName=eo;var no=`ContextMenuGroup`,ro=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(ja,{...i,...r,ref:t})});ro.displayName=no;var io=`ContextMenuLabel`,ao=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ma,{...i,...r,ref:t})});ao.displayName=io;var oo=`ContextMenuItem`,K=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Na,{...i,...r,ref:t})});K.displayName=oo;var so=`ContextMenuCheckboxItem`,co=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Pa,{...i,...r,ref:t})});co.displayName=so;var lo=`ContextMenuRadioGroup`,uo=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Fa,{...i,...r,ref:t})});uo.displayName=lo;var fo=`ContextMenuRadioItem`,po=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ia,{...i,...r,ref:t})});po.displayName=fo;var mo=`ContextMenuItemIndicator`,ho=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(La,{...i,...r,ref:t})});ho.displayName=mo;var go=`ContextMenuSeparator`,_o=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ra,{...i,...r,ref:t})});_o.displayName=go;var vo=`ContextMenuArrow`,yo=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(za,{...i,...r,ref:t})});yo.displayName=vo;var bo=`ContextMenuSub`,xo=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,open:i,defaultOpen:a}=e,o=Ka(t),[s,c]=p({prop:i,defaultProp:a??!1,onChange:r,caller:bo});return(0,W.jsx)(Ba,{...o,open:s,onOpenChange:c,children:n})};xo.displayName=bo;var So=`ContextMenuSubTrigger`,Co=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Va,{...i,...r,ref:t})});Co.displayName=So;var wo=`ContextMenuSubContent`,To=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ha,{...i,...r,ref:t,style:{...e.style,"--radix-context-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-context-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-context-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-context-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-context-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});To.displayName=wo;function Eo(e){return t=>t.pointerType===`mouse`?void 0:e(t)}var Do=Ya,Oo=Za,ko=$a,Ao=to,jo=K,Mo=_o,No=`DropdownMenu`,[Po,Fo]=d(No,[yi]),Io=yi(),[Lo,Ro]=Po(No),zo=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Io(t),l=U.useRef(null),[u,d]=p({prop:i,defaultProp:a??!1,onChange:o,caller:No});return(0,W.jsx)(Lo,{scope:t,triggerId:b(),triggerRef:l,contentId:b(),open:u,onOpenChange:d,onOpenToggle:U.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,W.jsx)(Da,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};zo.displayName=No;var Bo=`DropdownMenuTrigger`,Vo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Ro(Bo,n),o=Io(n);return(0,W.jsx)(Oa,{asChild:!0,...o,children:(0,W.jsx)(s.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:u(t,a.triggerRef),onPointerDown:N(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:N(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});Vo.displayName=Bo;var Ho=`DropdownMenuPortal`,Uo=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Io(t);return(0,W.jsx)(ka,{...r,...n})};Uo.displayName=Ho;var Wo=`DropdownMenuContent`,Go=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ro(Wo,n),a=Io(n),o=U.useRef(!1);return(0,W.jsx)(Aa,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:N(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:N(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});Go.displayName=Wo;var Ko=`DropdownMenuGroup`,qo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(ja,{...i,...r,ref:t})});qo.displayName=Ko;var Jo=`DropdownMenuLabel`,Yo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ma,{...i,...r,ref:t})});Yo.displayName=Jo;var Xo=`DropdownMenuItem`,Zo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Na,{...i,...r,ref:t})});Zo.displayName=Xo;var Qo=`DropdownMenuCheckboxItem`,$o=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Pa,{...i,...r,ref:t})});$o.displayName=Qo;var es=`DropdownMenuRadioGroup`,ts=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Fa,{...i,...r,ref:t})});ts.displayName=es;var ns=`DropdownMenuRadioItem`,rs=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ia,{...i,...r,ref:t})});rs.displayName=ns;var is=`DropdownMenuItemIndicator`,as=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(La,{...i,...r,ref:t})});as.displayName=is;var os=`DropdownMenuSeparator`,ss=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ra,{...i,...r,ref:t})});ss.displayName=os;var cs=`DropdownMenuArrow`,ls=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(za,{...i,...r,ref:t})});ls.displayName=cs;var us=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Io(t),[s,c]=p({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,W.jsx)(Ba,{...o,open:s,onOpenChange:c,children:n})},ds=`DropdownMenuSubTrigger`,fs=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Va,{...i,...r,ref:t})});fs.displayName=ds;var ps=`DropdownMenuSubContent`,ms=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ha,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});ms.displayName=ps;var hs=zo,gs=Vo,_s=Uo,vs=Go,ys=Zo,bs=us,xs=fs,Ss=ms,Cs=`Label`,ws=U.forwardRef((e,t)=>(0,W.jsx)(s.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));ws.displayName=Cs;var Ts=ws;function Es(e,[t,n]){return Math.min(n,Math.max(t,e))}function Ds(e,t){return U.useReducer((e,n)=>t[e][n]??e,e)}var Os=`ScrollArea`,[ks,As]=d(Os),[js,Ms]=ks(Os),Ns=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[c,l]=U.useState(null),[u,d]=U.useState(null),[f,p]=U.useState(null),[m,h]=U.useState(null),[g,_]=U.useState(null),[v,y]=U.useState(0),[b,x]=U.useState(0),[C,T]=U.useState(!1),[E,D]=U.useState(!1),O=S(t,e=>l(e)),k=w(i);return(0,W.jsx)(js,{scope:n,type:r,dir:k,scrollHideDelay:a,scrollArea:c,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:C,onScrollbarXEnabledChange:T,scrollbarY:g,onScrollbarYChange:_,scrollbarYEnabled:E,onScrollbarYEnabledChange:D,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,W.jsx)(s.div,{dir:k,...o,ref:O,style:{position:`relative`,"--radix-scroll-area-corner-width":v+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});Ns.displayName=Os;var Ps=`ScrollAreaViewport`,Fs=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=Ms(Ps,n),c=S(t,U.useRef(null),o.onViewportChange);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,W.jsx)(s.div,{"data-radix-scroll-area-viewport":``,...a,ref:c,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,W.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Fs.displayName=Ps;var Is=`ScrollAreaScrollbar`,Ls=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return U.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,W.jsx)(Rs,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,W.jsx)(zs,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,W.jsx)(Bs,{...r,ref:t,forceMount:n}):i.type===`always`?(0,W.jsx)(Vs,{...r,ref:t}):null});Ls.displayName=Is;var Rs=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),[a,o]=U.useState(!1);return U.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,W.jsx)(y,{present:n||a,children:(0,W.jsx)(Bs,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),zs=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=sc(()=>c(`SCROLL_END`),100),[s,c]=Ds(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return U.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),U.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,W.jsx)(y,{present:n||s!==`hidden`,children:(0,W.jsx)(Vs,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:N(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:N(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Bs=U.forwardRef((e,t)=>{let n=Ms(Is,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=U.useState(!1),s=e.orientation===`horizontal`,c=sc(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return cc(n.viewport,c),cc(n.content,c),(0,W.jsx)(y,{present:r||a,children:(0,W.jsx)(Vs,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),Vs=U.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=Ms(Is,e.__scopeScrollArea),a=U.useRef(null),o=U.useRef(0),[s,c]=U.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ec(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return nc(e,o.current,s,t)}return n===`horizontal`?(0,W.jsx)(Hs,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=rc(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,W.jsx)(Us,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=rc(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),Hs=U.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=U.useState(),c=U.useRef(null),l=S(t,c,a.onScrollbarXChange);return U.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,W.jsx)(Ks,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":tc(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),ac(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:$s(o.paddingLeft),paddingEnd:$s(o.paddingRight)}})}})}),Us=U.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=U.useState(),c=U.useRef(null),l=S(t,c,a.onScrollbarYChange);return U.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,W.jsx)(Ks,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":tc(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),ac(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:$s(o.paddingTop),paddingEnd:$s(o.paddingBottom)}})}})}),[Ws,Gs]=ks(Is),Ks=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:c,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:d,onResize:f,...p}=e,m=Ms(Is,n),[h,g]=U.useState(null),_=S(t,e=>g(e)),v=U.useRef(null),y=U.useRef(``),b=m.viewport,x=r.content-r.viewport,C=D(d),w=D(l),T=sc(f,10);function E(e){v.current&&u({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return U.useEffect(()=>{let e=e=>{let t=e.target;h?.contains(t)&&C(e,x)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,h,x,C]),U.useEffect(w,[r,w]),cc(h,T),cc(m.content,T),(0,W.jsx)(Ws,{scope:n,scrollbar:h,hasThumb:i,onThumbChange:D(a),onThumbPointerUp:D(o),onThumbPositionChange:w,onThumbPointerDown:D(c),children:(0,W.jsx)(s.div,{...p,ref:_,style:{position:`absolute`,...p.style},onPointerDown:N(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),v.current=h.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),E(e))}),onPointerMove:N(e.onPointerMove,E),onPointerUp:N(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,m.viewport&&(m.viewport.style.scrollBehavior=``),v.current=null})})})}),qs=`ScrollAreaThumb`,Js=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Gs(qs,e.__scopeScrollArea);return(0,W.jsx)(y,{present:n||i.hasThumb,children:(0,W.jsx)(Ys,{ref:t,...r})})}),Ys=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=Ms(qs,n),o=Gs(qs,n),{onThumbPositionChange:c}=o,l=S(t,e=>o.onThumbChange(e)),u=U.useRef(void 0),d=sc(()=>{u.current&&=(u.current(),void 0)},100);return U.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{d(),u.current||(u.current=oc(e,c),c())};return c(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,d,c]),(0,W.jsx)(s.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:l,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:N(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:N(e.onPointerUp,o.onThumbPointerUp)})});Js.displayName=qs;var Xs=`ScrollAreaCorner`,Zs=U.forwardRef((e,t)=>{let n=Ms(Xs,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,W.jsx)(Qs,{...e,ref:t}):null});Zs.displayName=Xs;var Qs=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=Ms(Xs,n),[a,o]=U.useState(0),[c,l]=U.useState(0),u=!!(a&&c);return cc(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),l(e)}),cc(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),u?(0,W.jsx)(s.div,{...r,ref:t,style:{width:a,height:c,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function $s(e){return e?parseInt(e,10):0}function ec(e,t){let n=e/t;return isNaN(n)?0:n}function tc(e){let t=ec(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function nc(e,t,n,r=`ltr`){let i=tc(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return ic([c,l],d)(e)}function rc(e,t,n=`ltr`){let r=tc(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=Es(e,n===`ltr`?[0,o]:[o*-1,0]);return ic([0,o],[0,s])(c)}function ic(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function ac(e,t){return e>0&&e<t}var oc=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function sc(e,t){let n=D(e),r=U.useRef(0);return U.useEffect(()=>()=>window.clearTimeout(r.current),[]),U.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function cc(e,t){let n=D(t);M(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var lc=Ns,uc=Fs,dc=Zs,fc=[` `,`Enter`,`ArrowUp`,`ArrowDown`],pc=[` `,`Enter`],mc=`Select`,[hc,gc,_c]=h(mc),[vc,yc]=d(mc,[_c,m]),bc=m(),[xc,Sc]=vc(mc),[Cc,wc]=vc(mc),Tc=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:m,form:h}=e,g=bc(t),[_,v]=U.useState(null),[y,S]=U.useState(null),[C,T]=U.useState(!1),E=w(l),[D,O]=p({prop:r,defaultProp:i??!1,onChange:a,caller:mc}),[k,A]=p({prop:o,defaultProp:s,onChange:c,caller:mc}),j=U.useRef(null),M=_?h||!!_.closest(`form`):!0,[ee,te]=U.useState(new Set),N=Array.from(ee).map(e=>e.props.value).join(`;`);return(0,W.jsx)(x,{...g,children:(0,W.jsxs)(xc,{required:m,scope:t,trigger:_,onTriggerChange:v,valueNode:y,onValueNodeChange:S,valueNodeHasChildren:C,onValueNodeHasChildrenChange:T,contentId:b(),value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:j,disabled:f,children:[(0,W.jsx)(hc.Provider,{scope:t,children:(0,W.jsx)(Cc,{scope:e.__scopeSelect,onNativeOptionAdd:U.useCallback(e=>{te(t=>new Set(t).add(e))},[]),onNativeOptionRemove:U.useCallback(e=>{te(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),M?(0,W.jsxs)(bl,{"aria-hidden":!0,required:m,tabIndex:-1,name:u,autoComplete:d,value:k,onChange:e=>A(e.target.value),disabled:f,form:h,children:[k===void 0?(0,W.jsx)(`option`,{value:``}):null,Array.from(ee)]},N):null]})})};Tc.displayName=mc;var Ec=`SelectTrigger`,Dc=U.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=bc(n),o=Sc(Ec,n),c=o.disabled||r,l=S(t,o.onTriggerChange),u=gc(n),d=U.useRef(`touch`),[f,p,m]=Sl(e=>{let t=u().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=e=>{c||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,W.jsx)(A,{asChild:!0,...a,children:(0,W.jsx)(s.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":xl(o.value)?``:void 0,...i,ref:l,onClick:N(i.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:N(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:N(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&fc.includes(e.key)&&(h(),e.preventDefault())})})})});Dc.displayName=Ec;var Oc=`SelectValue`,kc=U.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Sc(Oc,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=S(t,l.onValueNodeChange);return M(()=>{u(d)},[u,d]),(0,W.jsx)(s.span,{...c,ref:f,style:{pointerEvents:`none`},children:xl(l.value)?(0,W.jsx)(W.Fragment,{children:o}):a})});kc.displayName=Oc;var Ac=`SelectIcon`,jc=U.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,W.jsx)(s.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});jc.displayName=Ac;var Mc=`SelectPortal`,Nc=e=>(0,W.jsx)(j,{asChild:!0,...e});Nc.displayName=Mc;var Pc=`SelectContent`,Fc=U.forwardRef((e,t)=>{let n=Sc(Pc,e.__scopeSelect),[r,i]=U.useState();if(M(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?cn.createPortal((0,W.jsx)(Lc,{scope:e.__scopeSelect,children:(0,W.jsx)(hc.Slot,{scope:e.__scopeSelect,children:(0,W.jsx)(`div`,{children:e.children})})}),t):null}return(0,W.jsx)(Vc,{...e,ref:t})});Fc.displayName=Pc;var Ic=10,[Lc,Rc]=vc(Pc),zc=`SelectContentImpl`,Bc=l(`SelectContent.RemoveScroll`),Vc=U.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:y,...b}=e,x=Sc(Pc,n),[w,T]=U.useState(null),[E,D]=U.useState(null),O=S(t,e=>T(e)),[A,j]=U.useState(null),[M,ee]=U.useState(null),te=gc(n),[P,ne]=U.useState(!1),re=U.useRef(!1);U.useEffect(()=>{if(w)return k(w)},[w]),C();let F=U.useCallback(e=>{let[t,...n]=te().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&&E&&(E.scrollTop=0),n===r&&E&&(E.scrollTop=E.scrollHeight),n?.focus(),document.activeElement!==i))return},[te,E]),ie=U.useCallback(()=>F([A,w]),[F,A,w]);U.useEffect(()=>{P&&ie()},[P,ie]);let{onOpenChange:I,triggerPointerDownPosRef:L}=x;U.useEffect(()=>{if(w){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(L.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(L.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():w.contains(n.target)||I(!1),document.removeEventListener(`pointermove`,t),L.current=null};return L.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[w,I,L]),U.useEffect(()=>{let e=()=>I(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[I]);let[R,ae]=Sl(e=>{let t=te().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),oe=U.useCallback((e,t,n)=>{let r=!re.current&&!n;(x.value!==void 0&&x.value===t||r)&&(j(e),r&&(re.current=!0))},[x.value]),se=U.useCallback(()=>w?.focus(),[w]),ce=U.useCallback((e,t,n)=>{let r=!re.current&&!n;(x.value!==void 0&&x.value===t||r)&&ee(e)},[x.value]),z=r===`popper`?Gc:Uc,le=z===Gc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:y}:{};return(0,W.jsx)(Lc,{scope:n,content:w,viewport:E,onViewportChange:D,itemRefCallback:oe,selectedItem:A,onItemLeave:se,itemTextRefCallback:ce,focusSelectedItem:ie,selectedItemText:M,position:r,isPositioned:P,searchRef:R,children:(0,W.jsx)(g,{as:Bc,allowPinchZoom:!0,children:(0,W.jsx)(_,{asChild:!0,trapped:x.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:N(i,e=>{x.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,W.jsx)(v,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>x.onOpenChange(!1),children:(0,W.jsx)(z,{role:`listbox`,id:x.contentId,"data-state":x.open?`open`:`closed`,dir:x.dir,onContextMenu:e=>e.preventDefault(),...b,...le,onPlaced:()=>ne(!0),ref:O,style:{display:`flex`,flexDirection:`column`,outline:`none`,...b.style},onKeyDown:N(b.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ae(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=te().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(()=>F(t)),e.preventDefault()}})})})})})})});Vc.displayName=zc;var Hc=`SelectItemAlignedPosition`,Uc=U.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Sc(Pc,n),o=Rc(Pc,n),[c,l]=U.useState(null),[u,d]=U.useState(null),f=S(t,e=>d(e)),p=gc(n),m=U.useRef(!1),h=U.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=o,b=U.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&u&&g&&_&&v){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-Ic*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),C=window.getComputedStyle(g),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ic,D=s-E,O=_.offsetHeight/2,k=_.offsetTop+O,A=f+h+k,j=x-A;if(A<=E){let e=o.length>0&&_===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+y);c.style.height=n+`px`}else{let e=o.length>0&&_===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,f+g.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,g.scrollTop=A-E+g.offsetTop}c.style.margin=`${Ic}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,a.trigger,a.valueNode,c,u,g,_,v,a.dir,r]);M(()=>b(),[b]);let[x,C]=U.useState();return M(()=>{u&&C(window.getComputedStyle(u).zIndex)},[u]),(0,W.jsx)(Kc,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:U.useCallback(e=>{e&&h.current===!0&&(b(),y?.(),h.current=!1)},[b,y]),children:(0,W.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,W.jsx)(s.div,{...i,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Uc.displayName=Hc;var Wc=`SelectPopperPosition`,Gc=U.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ic,...a}=e,o=bc(n);return(0,W.jsx)(O,{...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)`}})});Gc.displayName=Wc;var[Kc,qc]=vc(Pc,{}),Jc=`SelectViewport`,Yc=U.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Rc(Jc,n),o=qc(Jc,n),c=S(t,a.onViewportChange),l=U.useRef(0);return(0,W.jsxs)(W.Fragment,{children:[(0,W.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:r}),(0,W.jsx)(hc.Slot,{scope:n,children:(0,W.jsx)(s.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:N(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ic*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`)}}}l.current=t.scrollTop})})})]})});Yc.displayName=Jc;var Xc=`SelectGroup`,[Zc,Qc]=vc(Xc),$c=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=b();return(0,W.jsx)(Zc,{scope:n,id:i,children:(0,W.jsx)(s.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});$c.displayName=Xc;var el=`SelectLabel`,tl=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Qc(el,n);return(0,W.jsx)(s.div,{id:i.id,...r,ref:t})});tl.displayName=el;var nl=`SelectItem`,[rl,il]=vc(nl),al=U.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Sc(nl,n),l=Rc(nl,n),u=c.value===r,[d,f]=U.useState(a??``),[p,m]=U.useState(!1),h=S(t,e=>l.itemRefCallback?.(e,r,i)),g=b(),_=U.useRef(`touch`),v=()=>{i||(c.onValueChange(r),c.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,W.jsx)(rl,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:U.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,W.jsx)(hc.ItemSlot,{scope:n,value:r,disabled:i,textValue:d,children:(0,W.jsx)(s.div,{role:`option`,"aria-labelledby":g,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:h,onFocus:N(o.onFocus,()=>m(!0)),onBlur:N(o.onBlur,()=>m(!1)),onClick:N(o.onClick,()=>{_.current!==`mouse`&&v()}),onPointerUp:N(o.onPointerUp,()=>{_.current===`mouse`&&v()}),onPointerDown:N(o.onPointerDown,e=>{_.current=e.pointerType}),onPointerMove:N(o.onPointerMove,e=>{_.current=e.pointerType,i?l.onItemLeave?.():_.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:N(o.onKeyDown,e=>{l.searchRef?.current!==``&&e.key===` `||(pc.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})});al.displayName=nl;var ol=`SelectItemText`,sl=U.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Sc(ol,n),c=Rc(ol,n),l=il(ol,n),u=wc(ol,n),[d,f]=U.useState(null),p=S(t,e=>f(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=d?.textContent,h=U.useMemo(()=>(0,W.jsx)(`option`,{value:l.value,disabled:l.disabled,children:m},l.value),[l.disabled,l.value,m]),{onNativeOptionAdd:g,onNativeOptionRemove:_}=u;return M(()=>(g(h),()=>_(h)),[g,_,h]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(s.span,{id:l.textId,...a,ref:p}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?cn.createPortal(a.children,o.valueNode):null]})});sl.displayName=ol;var cl=`SelectItemIndicator`,ll=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return il(cl,n).isSelected?(0,W.jsx)(s.span,{"aria-hidden":!0,...r,ref:t}):null});ll.displayName=cl;var ul=`SelectScrollUpButton`,dl=U.forwardRef((e,t)=>{let n=Rc(ul,e.__scopeSelect),r=qc(ul,e.__scopeSelect),[i,a]=U.useState(!1),o=S(t,r.onScrollButtonChange);return M(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,W.jsx)(ml,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});dl.displayName=ul;var fl=`SelectScrollDownButton`,pl=U.forwardRef((e,t)=>{let n=Rc(fl,e.__scopeSelect),r=qc(fl,e.__scopeSelect),[i,a]=U.useState(!1),o=S(t,r.onScrollButtonChange);return M(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,W.jsx)(ml,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});pl.displayName=fl;var ml=U.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Rc(`SelectScrollButton`,n),o=U.useRef(null),c=gc(n),l=U.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return U.useEffect(()=>()=>l(),[l]),M(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,W.jsx)(s.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:N(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:N(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:N(i.onPointerLeave,()=>{l()})})}),hl=`SelectSeparator`,gl=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,W.jsx)(s.div,{"aria-hidden":!0,...r,ref:t})});gl.displayName=hl;var _l=`SelectArrow`,vl=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=bc(n),a=Sc(_l,n),o=Rc(_l,n);return a.open&&o.position===`popper`?(0,W.jsx)(T,{...i,...r,ref:t}):null});vl.displayName=_l;var yl=`SelectBubbleInput`,bl=U.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=U.useRef(null),a=S(r,i),o=Br(t);return U.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,W.jsx)(s.select,{...n,style:{...Jn,...n.style},ref:a,defaultValue:t})});bl.displayName=yl;function xl(e){return e===``||e===void 0}function Sl(e){let t=D(e),n=U.useRef(``),r=U.useRef(0),i=U.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=U.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return U.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Cl(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=wl(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}function wl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Tl=Tc,El=Dc,Dl=kc,Ol=jc,kl=Nc,Al=Fc,jl=Yc,Ml=al,Nl=sl,Pl=ll,Fl=dl,Il=pl,Ll=`Separator`,q=`horizontal`,Rl=[`horizontal`,`vertical`],J=U.forwardRef((e,t)=>{let{decorative:n,orientation:r=q,...i}=e,a=Y(r)?r:q,o=a===`vertical`?a:void 0,c=n?{role:`none`}:{"aria-orientation":o,role:`separator`};return(0,W.jsx)(s.div,{"data-orientation":a,...c,...i,ref:t})});J.displayName=Ll;function Y(e){return Rl.includes(e)}var X=J,zl=`Switch`,[Bl,Vl]=d(zl),[Hl,Ul]=Bl(zl),Wl=U.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:c,value:l=`on`,onCheckedChange:u,form:d,...f}=e,[m,h]=U.useState(null),g=S(t,e=>h(e)),_=U.useRef(!1),v=m?d||!!m.closest(`form`):!0,[y,b]=p({prop:i,defaultProp:a??!1,onChange:u,caller:zl});return(0,W.jsxs)(Hl,{scope:n,checked:y,disabled:c,children:[(0,W.jsx)(s.button,{type:`button`,role:`switch`,"aria-checked":y,"aria-required":o,"data-state":Yl(y),"data-disabled":c?``:void 0,disabled:c,value:l,...f,ref:g,onClick:N(e.onClick,e=>{b(e=>!e),v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})}),v&&(0,W.jsx)(Jl,{control:m,bubbles:!_.current,name:r,value:l,checked:y,required:o,disabled:c,form:d,style:{transform:`translateX(-100%)`}})]})});Wl.displayName=zl;var Gl=`SwitchThumb`,Kl=U.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ul(Gl,n);return(0,W.jsx)(s.span,{"data-state":Yl(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});Kl.displayName=Gl;var ql=`SwitchBubbleInput`,Jl=U.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let o=U.useRef(null),s=S(o,a),c=Br(n),l=E(t);return U.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(c!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[c,n,r]),(0,W.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:s,style:{...i.style,...l,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});Jl.displayName=ql;function Yl(e){return e?`checked`:`unchecked`}var Xl=Wl,Zl=Kl,[Ql,$l]=d(`Tooltip`,[m]),eu=m(),tu=`TooltipProvider`,nu=700,ru=`tooltip.open`,[iu,au]=Ql(tu),ou=e=>{let{__scopeTooltip:t,delayDuration:n=nu,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=U.useRef(!0),s=U.useRef(!1),c=U.useRef(0);return U.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,W.jsx)(iu,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:U.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:U.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:U.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};ou.displayName=tu;var su=`Tooltip`,[cu,lu]=Ql(su),uu=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=au(su,e.__scopeTooltip),l=eu(t),[u,d]=U.useState(null),f=b(),m=U.useRef(0),h=o??c.disableHoverableContent,g=s??c.delayDuration,_=U.useRef(!1),[v,y]=p({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(ru))):c.onClose(),a?.(e)},caller:su}),S=U.useMemo(()=>v?_.current?`delayed-open`:`instant-open`:`closed`,[v]),C=U.useCallback(()=>{window.clearTimeout(m.current),m.current=0,_.current=!1,y(!0)},[y]),w=U.useCallback(()=>{window.clearTimeout(m.current),m.current=0,y(!1)},[y]),T=U.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{_.current=!0,y(!0),m.current=0},g)},[g,y]);return U.useEffect(()=>()=>{m.current&&=(window.clearTimeout(m.current),0)},[]),(0,W.jsx)(x,{...l,children:(0,W.jsx)(cu,{scope:t,contentId:f,open:v,stateAttribute:S,trigger:u,onTriggerChange:d,onTriggerEnter:U.useCallback(()=>{c.isOpenDelayedRef.current?T():C()},[c.isOpenDelayedRef,T,C]),onTriggerLeave:U.useCallback(()=>{h?w():(window.clearTimeout(m.current),m.current=0)},[w,h]),onOpen:C,onClose:w,disableHoverableContent:h,children:n})})};uu.displayName=su;var du=`TooltipTrigger`,fu=U.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=lu(du,n),a=au(du,n),o=eu(n),c=S(t,U.useRef(null),i.onTriggerChange),l=U.useRef(!1),u=U.useRef(!1),d=U.useCallback(()=>l.current=!1,[]);return U.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,W.jsx)(A,{asChild:!0,...o,children:(0,W.jsx)(s.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:c,onPointerMove:N(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),u.current=!0)}),onPointerLeave:N(e.onPointerLeave,()=>{i.onTriggerLeave(),u.current=!1}),onPointerDown:N(e.onPointerDown,()=>{i.open&&i.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:N(e.onFocus,()=>{l.current||i.onOpen()}),onBlur:N(e.onBlur,i.onClose),onClick:N(e.onClick,i.onClose)})})});fu.displayName=du;var pu=`TooltipPortal`,[mu,hu]=Ql(pu,{forceMount:void 0}),gu=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=lu(pu,t);return(0,W.jsx)(mu,{scope:t,forceMount:n,children:(0,W.jsx)(y,{present:n||a.open,children:(0,W.jsx)(j,{asChild:!0,container:i,children:r})})})};gu.displayName=pu;var _u=`TooltipContent`,vu=U.forwardRef((e,t)=>{let n=hu(_u,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=lu(_u,e.__scopeTooltip);return(0,W.jsx)(y,{present:r||o.open,children:o.disableHoverableContent?(0,W.jsx)(Cu,{side:i,...a,ref:t}):(0,W.jsx)(yu,{side:i,...a,ref:t})})}),yu=U.forwardRef((e,t)=>{let n=lu(_u,e.__scopeTooltip),r=au(_u,e.__scopeTooltip),i=U.useRef(null),a=S(t,i),[o,s]=U.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=U.useCallback(()=>{s(null),d(!1)},[d]),p=U.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Du(r,Eu(r,n.getBoundingClientRect())),a=Ou(t.getBoundingClientRect());s(Au([...i,...a])),d(!0)},[d]);return U.useEffect(()=>()=>f(),[f]),U.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),U.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!ku(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,W.jsx)(Cu,{...e,ref:a})}),[bu,xu]=Ql(su,{isInside:!1}),Su=c(`TooltipContent`),Cu=U.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=lu(_u,n),l=eu(n),{onClose:u}=c;return U.useEffect(()=>(document.addEventListener(ru,u),()=>document.removeEventListener(ru,u)),[u]),U.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,W.jsx)(v,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,W.jsxs)(O,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,W.jsx)(Su,{children:r}),(0,W.jsx)(bu,{scope:n,isInside:!0,children:(0,W.jsx)(Zn,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});vu.displayName=_u;var wu=`TooltipArrow`,Tu=U.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=eu(n);return xu(wu,n).isInside?null:(0,W.jsx)(T,{...i,...r,ref:t})});Tu.displayName=wu;function Eu(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function Du(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function Ou(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function ku(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Au(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0),ju(t)}function ju(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Mu=ou,Nu=uu,Pu=fu,Fu=gu,Iu=vu,Lu=Tu;function Ru({delayDuration:e=0,...t}){return(0,W.jsx)(Mu,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function zu({...e}){return(0,W.jsx)(Nu,{"data-slot":`tooltip`,...e})}function Bu({...e}){return(0,W.jsx)(Pu,{"data-slot":`tooltip-trigger`,...e})}function Vu({className:e,sideOffset:t=0,children:n,...r}){return(0,W.jsx)(Fu,{children:(0,W.jsxs)(Iu,{"data-slot":`tooltip-content`,sideOffset:t,className:z(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 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`,e),...r,children:[n,(0,W.jsx)(Lu,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}function Hu(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function Uu(e,t){let n=getComputedStyle(e.ownerDocument.body);return t*parseFloat(n.fontSize)}function Wu(e){return e/100*window.innerHeight}function Gu(e){return e/100*window.innerWidth}function Ku(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}function qu({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=Ku(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=Uu(t,i);break;case`em`:r=Hu(t,i);break;case`vh`:r=Wu(i);break;case`vw`:r=Gu(i);break}return r}function Ju(e){return parseFloat(e.toFixed(3))}function Yu({group:e}){let{orientation:t,panels:n}=e;return n.reduce((e,n)=>(e+=t===`horizontal`?n.element.offsetWidth:n.element.offsetHeight,e),0)}function Xu(e){let{panels:t}=e,n=Yu({group:e});return n===0?t.map(e=>({groupResizeBehavior:e.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:e.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:e.panelConstraints.disabled,minSize:0,maxSize:100,panelId:e.id})):t.map(e=>{let{element:t,panelConstraints:r}=e,i=0;r.collapsedSize!==void 0&&(i=Ju(qu({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=Ju(qu({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=Ju(qu({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=Ju(qu({groupSize:n,panelElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsible:r.collapsible===!0,defaultSize:a,disabled:r.disabled,minSize:o,maxSize:s,panelId:e.id}})}function Zu(e,t=`Assertion error`){if(!e)throw Error(t)}function Qu(e,t){return Array.from(t).sort(e===`horizontal`?$u:ed)}function $u(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function ed(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function td(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function nd(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function rd({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=nd(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return Zu(i,`No rect found`),i}var id;function ad(){return id===void 0&&(id=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),id}function od(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=Qu(n,Array.from(t.children).filter(td).map(e=>({element:e}))).map(({element:e})=>e),o=[],s=!1,c=!1,l=-1,u=-1,d=0,f,p=[];{let e=-1;for(let t of a)t.hasAttribute(`data-panel`)&&(e++,t.ariaDisabled===null&&(d++,l===-1&&(l=e),u=e))}if(d>1){let t=-1;for(let d of a)if(d.hasAttribute(`data-panel`)){t++;let i=r.find(e=>e.element===d);if(i){if(f){let r=f.element.getBoundingClientRect(),a=d.getBoundingClientRect(),m;if(c){let e=n===`horizontal`?new DOMRect(r.right,r.top,0,r.height):new DOMRect(r.left,r.bottom,r.width,0),t=n===`horizontal`?new DOMRect(a.left,a.top,0,a.height):new DOMRect(a.left,a.top,a.width,0);switch(p.length){case 0:m=[e,t];break;case 1:{let i=p[0];m=[i,rd({orientation:n,rects:[r,a],targetRect:i.element.getBoundingClientRect()})===r?t:e];break}default:m=p;break}}else m=p.length?p:[n===`horizontal`?new DOMRect(r.right,a.top,a.left-r.right,a.height):new DOMRect(a.left,r.bottom,a.width,a.top-r.bottom)];for(let n of m){let r=`width`in n?n:n.element.getBoundingClientRect(),a=ad()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(r.width<a){let e=a-r.width;r=new DOMRect(r.x-e/2,r.y,r.width+e,r.height)}if(r.height<a){let e=a-r.height;r=new DOMRect(r.x,r.y-e/2,r.width,r.height+e)}!s&&!(t<=l||t>u)&&o.push({group:e,groupSize:Yu({group:e}),panels:[f,i],separator:`width`in n?void 0:n,rect:r}),s=!1}}c=!1,f=i,p=[]}}else if(d.hasAttribute(`data-separator`)){d.ariaDisabled!==null&&(s=!0);let e=i.find(e=>e.element===d);e?p.push(e):(f=void 0,p=[])}else c=!0}return o}var sd=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0)if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},cd=new Map,ld=new sd;function ud(e){cd=new Map(cd),cd.delete(e)}function dd(e,t){for(let[t]of cd)if(t.id===e)return t}function fd(e,t){for(let[t,n]of cd)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function pd(){return cd}function md(e,t){return ld.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function hd(e,t){let n=cd.get(e);cd=new Map(cd),cd.set(e,t),ld.emit(`groupChange`,{group:e,prev:n,next:t})}function gd(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=nd(n,a.rect);switch(e){case`horizontal`:t.x<=i.x&&(r=a,i=t);break;case`vertical`:t.y<=i.y&&(r=a,i=t);break}}return r?{distance:i,hitRegion:r}:void 0}function _d(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function vd(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:Cd(e),b:Cd(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();Zu(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Sd(xd(n.a)),b:Sd(xd(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var yd=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function bd(e){let t=getComputedStyle(wd(e)??e).display;return t===`flex`||t===`inline-flex`}function Z(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||bd(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||yd.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function xd(e){let t=e.length;for(;t--;){let n=e[t];if(Zu(n,`Missing node`),Z(n))return n}return null}function Sd(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Cd(e){let t=[];for(;e;)t.push(e),e=wd(e);return t}function wd(e){let{parentNode:t}=e;return _d(t)?t.host:t}function Td(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Ed({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!td(n)||n.contains(e)||e.contains(n))return!0;if(vd(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Td(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Dd(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=od(r),a=gd(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&Ed({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function Od(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function kd(e,t,n=0){return Math.abs(Ju(e)-Ju(t))<=n}function Ad(e,t){return kd(e,t)?0:e>t?1:-1}function jd({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsible:a,disabled:o,maxSize:s=100,minSize:c=0}=t;if(o&&!e)return n;if(Ad(r,c)<0)if(a){let e=(i+c)/2;r=Ad(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=Ju(r),r}function Md({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(kd(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;Zu(u!=null,`Invalid first pivot index`),Zu(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];Zu(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Zu(n!=null,`Previous layout not found for panel index ${t}`),kd(n,i)){let t=o-n;Ad(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];Zu(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Zu(n!=null,`Previous layout not found for panel index ${t}`),kd(n,o)){let t=n-i;Ad(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];Zu(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&Ad(i,c)<0)if(e>0){let t=c-o,n=t/2;Ad(i+e,c)<0&&(e=Ad(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;Ad(i-e,c)<0&&(e=Ad(100+e,n)>0?0:-t)}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];Zu(e!=null,`Previous layout not found for panel index ${r}`);let a=jd({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];Zu(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=jd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!kd(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(Od(c,l))return i;{let t=e<0?d:u,r=s[t];Zu(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=jd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!kd(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];Zu(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=jd({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(kd(i,s)||(t-=s-i,l[r]=s),kd(t,0))break;e>0?r--:r++}}}if(!kd(Object.values(l).reduce((e,t)=>t+e,0),100,.1))return i;let p=Object.keys(i);return l.reduce((e,t,n)=>(e[p[n]]=t,e),{})}function Nd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||Ad(e[n],t[n])!==0)return!1;return!0}function Q({layout:e,panelConstraints:t}){let n=Object.values(e),r=[...n],i=r.reduce((e,t)=>e+t,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(e=>`${e}%`).join(`, `)}`);if(!kd(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];Zu(t!=null,`No layout data found for index ${e}`),r[e]=100/i*t}let a=0;for(let e=0;e<t.length;e++){let i=n[e];Zu(i!=null,`No layout data found for index ${e}`);let o=r[e];Zu(o!=null,`No layout data found for index ${e}`);let s=jd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!kd(a,0))for(let e=0;e<t.length;e++){let n=r[e];Zu(n!=null,`No layout data found for index ${e}`);let i=n+a,o=jd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,kd(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Pd({groupId:e,panelId:t}){let n=()=>{let t=pd();for(let[n,{defaultLayoutDeferred:r,derivedPanelConstraints:i,layout:a,groupSize:o,separatorToPanels:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:n,groupSize:o,layout:a,separatorToPanels:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedPanelConstraints.find(e=>e.panelId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().group.panels.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=e=>{let r=a();if(e===r)return;let{defaultLayoutDeferred:i,derivedPanelConstraints:o,group:s,groupSize:c,layout:l,separatorToPanels:u}=n(),d=s.panels.findIndex(e=>e.id===t),f=d===s.panels.length-1,p=Q({layout:Md({delta:f?r-e:e-r,initialLayout:l,panelConstraints:o,pivotIndices:f?[d-1,d]:[d,d+1],prevLayout:l,trigger:`imperative-api`}),panelConstraints:o});Nd(l,p)||hd(s,{defaultLayoutDeferred:i,derivedPanelConstraints:o,groupSize:c,layout:p,separatorToPanels:u})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),s=a();e&&s!==t&&(n.expandToSize=s,o(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:s}=i(),c=a();if(e&&c===t){let e=s.expandToSize??n;e===0&&(e=1),o(e)}},getSize:()=>{let{group:e}=n(),t=a(),{element:r}=i();return{asPercentage:t,inPixels:e.orientation===`horizontal`?r.offsetWidth:r.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&kd(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=Yu({group:t});o(Ju(qu({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function Fd(e){e.defaultPrevented||Dd(e,pd()).forEach(t=>{if(t.separator){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Pd({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function Id(e){let t=pd();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function Ld({groupId:e}){let t=()=>{let t=pd();for(let[n,r]of t)if(n.id===e)return{group:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedPanelConstraints:r,group:i,groupSize:a,layout:o,separatorToPanels:s}=t(),c=Q({layout:e,panelConstraints:r});return n?o:(Nd(o,c)||hd(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Rd(e,t){let n=Id(e),r=fd(n.id,!0),i=n.separators.find(t=>t.element===e);Zu(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);Zu(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=Ld({groupId:n.id}).getLayout(),c=Q({layout:Md({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});Nd(s,c)||hd(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function zd(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Id(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Rd(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Rd(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Rd(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Rd(t,-5);break;case`End`:e.preventDefault(),Rd(t,100);break;case`Enter`:{e.preventDefault();let n=Id(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=fd(n.id,!0),o=n.separators.find(e=>e.element===t);Zu(o,`Matching separator not found`);let s=a.get(o);Zu(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(Zu(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];Rd(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=Id(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);Zu(r!==null,`Index not found`),n[e.shiftKey?r>0?r-1:n.length-1:r+1<n.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),Rd(t,-100);break}}var Bd={cursorFlags:0,state:`inactive`},Vd=new sd;function Hd(){return Bd}function Ud(e){return Vd.addListener(`change`,e)}function Wd(e){let t=Bd,n={...Bd};n.cursorFlags=e,Bd=n,Vd.emit(`change`,{prev:t,next:n})}function Gd(e){let t=Bd;Bd=e,Vd.emit(`change`,{prev:t,next:e})}function Kd(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=pd(),n=Dd(e,t),r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({preventScroll:!0})));let n=t.get(e.group);n&&r.set(e.group,n.layout)}),Gd({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var qd=e=>e,Jd=()=>{},Yd=1,Xd=2,Zd=4,Qd=8,$d=3,ef=12,tf;function nf(){return tf===void 0&&(tf=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(tf=!0)),tf}function rf({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(!(r===0&&i===0)){switch(n){case`active`:if(e&&nf()){let t=(e&Yd)!==0,n=(e&Xd)!==0,r=(e&Zd)!==0,i=(e&Qd)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}break}return nf()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var af=new WeakMap;function of(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=af.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let r=Hd();switch(r.state){case`active`:case`hover`:{let e=rf({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(e=>e.group),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}af.set(e,{prevStyle:t,styleSheet:n})}function sf({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:a,prevCursorFlags:o}){let s=0;n.forEach(e=>{let{group:n,groupSize:o}=e,{orientation:c,panels:l}=n,{disableCursor:u}=n.mutableState,d=0;d=a?c===`horizontal`?(t.clientX-a.x)/o*100:(t.clientY-a.y)/o*100:c===`horizontal`?t.clientX<0?-100:100:t.clientY<0?-100:100;let f=r.get(n),p=i.get(n);if(!f||!p)return;let{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:_,separatorToPanels:v}=p;if(h&&_&&v){let t=Md({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(Nd(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?Yd:Xd;break;case`vertical`:s|=d<0?Zd:Qd;break}}else hd(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&$d:c|=s&$d,t.movementY===0?c|=o&ef:c|=s&ef,Wd(c),of(e)}function cf(e){let t=pd(),n=Hd();switch(n.state){case`active`:sf({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function lf(e){if(e.defaultPrevented)return;let t=Hd(),n=pd();switch(t.state){case`active`:if(e.buttons===0){Gd({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=fd(e.group.id,!0);hd(e.group,t)});return}sf({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=Dd(e,n);r.length===0?t.state!==`inactive`&&Gd({cursorFlags:0,state:`inactive`}):Gd({cursorFlags:0,hitRegions:r,state:`hover`}),of(e.currentTarget);break}}}function uf(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Hd().state){case`hover`:Gd({cursorFlags:0,state:`inactive`})}}function df(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=Hd();switch(t.state){case`active`:Gd({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(of(e.currentTarget),t.hitRegions.forEach(e=>{let t=fd(e.group.id,!0);hd(e.group,t)}),e.preventDefault())}}function ff(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=Ju(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=Ju((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function pf(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=Yu({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:Ju(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function mf(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function hf({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.panels){let e=r[l.id]??0;switch(l.panelConstraints.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=Ju(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e;break}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=Ju((r[e]??0)/a*l);else{let e=Ju(l/c.length);for(let t of c)u[t]=e}return u}function gf(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}var _f=new Map;function vf(e){let t=!0;Zu(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=Yu({group:e});if(t===0)return;let n=fd(e.id);if(!n)return;let r=Xu(e),i=n.defaultLayoutDeferred?ff(r):n.layout,a=Q({layout:hf({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&Nd(n.layout,a)&&mf(n.derivedPanelConstraints,r)&&n.groupSize===t)return;hd(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else pf(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{Zu(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=Yu({group:e}),s=Xu(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(gf(e.panels,l)||(l=void 0));let u=Q({layout:e.mutableState.layouts[c]??l??ff(s),panelConstraints:s}),d=e.element.ownerDocument;_f.set(d,(_f.get(d)??0)+1);let f=new Map;return od(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),hd(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{Zu(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,zd)}),_f.get(d)===1&&(d.addEventListener(`dblclick`,Fd,!0),d.addEventListener(`pointerdown`,Kd,!0),d.addEventListener(`pointerleave`,cf),d.addEventListener(`pointermove`,lf),d.addEventListener(`pointerout`,uf),d.addEventListener(`pointerup`,df,!0)),function(){t=!1,_f.set(d,Math.max(0,(_f.get(d)??0)-1)),ud(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,zd)}),_f.get(d)||(d.removeEventListener(`dblclick`,Fd,!0),d.removeEventListener(`pointerdown`,Kd,!0),d.removeEventListener(`pointerleave`,cf),d.removeEventListener(`pointermove`,lf),d.removeEventListener(`pointerout`,uf),d.removeEventListener(`pointerup`,df,!0)),a.disconnect()}}function yf(){let[e,t]=(0,U.useState)({});return[e,(0,U.useCallback)(()=>t({}),[])]}function bf(e){let t=(0,U.useId)();return`${e??t}`}var xf=typeof window<`u`?U.useLayoutEffect:U.useEffect;function Sf(e){let t=(0,U.useRef)(e);return xf(()=>{t.current=e},[e]),(0,U.useCallback)((...e)=>t.current?.(...e),[t])}function Cf(...e){return Sf(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function wf(e){let t=(0,U.useRef)({...e});return xf(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var Tf=(0,U.createContext)(null);function Ef(e,t){let n=(0,U.useRef)({getLayout:()=>({}),setLayout:qd});(0,U.useImperativeHandle)(t,()=>n.current,[]),xf(()=>{Object.assign(n.current,Ld({groupId:e}))})}function Df({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizeTargetMinimumSize:d={coarse:20,fine:10},style:f,...p}){let m=(0,U.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=Sf(e=>{Nd(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=Sf(e=>{Nd(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e))}),_=bf(s),v=(0,U.useRef)(null),[y,b]=yf(),x=(0,U.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=Cf(v,a);Ef(_,o);let C=Sf((e,t)=>{let r=Hd(),i=dd(e),a=fd(e);if(a){let e=!1;switch(r.state){case`active`:e=r.hitRegions.some(e=>e.group===i);break}return{flexGrow:a.layout[t]??1,pointerEvents:e?`none`:void 0}}return{flexGrow:n?.[t]??1}}),w=wf({defaultLayout:n,disableCursor:r}),T=(0,U.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=Qu(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=Qu(u,[...t.separators,e]),b(),()=>{t.separators=t.separators.filter(t=>t!==e),b()}},togglePanelDisabled:(e,t)=>{let n=x.current.panels.find(t=>t.id===e);n&&(n.panelConstraints.disabled=t);let r=dd(_),i=fd(_);r&&i&&hd(r,{...i,derivedPanelConstraints:Xu(r)})},toggleSeparatorDisabled:(e,t)=>{let n=x.current.separators.find(t=>t.id===e);n&&(n.disabled=t)}}),[C,_,b,u,w]),E=(0,U.useRef)(null);return xf(()=>{let e=v.current;if(e===null)return;let t=x.current,n;if(w.defaultLayout!==void 0&&Object.keys(w.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=w.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:_,mutableState:{defaultLayout:n,disableCursor:!!w.disableCursor,expandedPanelSizes:x.current.lastExpandedPanelSizes,layouts:x.current.layouts},orientation:u,panels:t.panels,resizeTargetMinimumSize:t.resizeTargetMinimumSize,separators:t.separators};E.current=r;let a=vf(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=fd(r.id,!0);!o&&s.length>0&&(h(c),g(c));let l=md(_,e=>{let{defaultLayoutDeferred:t,derivedPanelConstraints:n,layout:i}=e.next;if(t||n.length===0)return;let a=r.panels.map(({id:e})=>e).join(`,`);r.mutableState.layouts[a]=i,n.forEach(t=>{if(t.collapsible){let{layout:n}=e.prev??{};if(n){let e=kd(t.collapsedSize,i[t.panelId]),a=kd(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=Hd().state!==`active`;h(i),o&&g(i)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,U.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,W.jsx)(Tf.Provider,{value:T,children:(0,W.jsx)(`div`,{...p,className:t,"data-group":!0,"data-testid":_,id:_,ref:S,style:{height:`100%`,width:`100%`,overflow:`hidden`,...f,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:e})})}Df.displayName=`Group`;function Of(){let e=(0,U.useContext)(Tf);return Zu(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function kf(e,t){let{id:n}=Of(),r=(0,U.useRef)({collapse:Jd,expand:Jd,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Jd});(0,U.useImperativeHandle)(t,()=>r.current,[]),xf(()=>{Object.assign(r.current,Pd({groupId:n,panelId:e}))})}function Af({children:e,className:t,collapsedSize:n=`0%`,collapsible:r=!1,defaultSize:i,disabled:a,elementRef:o,groupResizeBehavior:s=`preserve-relative-size`,id:c,maxSize:l=`100%`,minSize:u=`0%`,onResize:d,panelRef:f,style:p,...m}){let h=!!c,g=bf(c),_=wf({disabled:a}),v=(0,U.useRef)(null),y=Cf(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,togglePanelDisabled:w}=Of(),T=d!==null,E=Sf((e,t,n)=>{d?.(e,c,n)});xf(()=>{let e=v.current;if(e!==null)return C({element:e,id:g,idIsStable:h,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:T?E:void 0,panelConstraints:{groupResizeBehavior:s,collapsedSize:n,collapsible:r,defaultSize:i,disabled:_.disabled,maxSize:l,minSize:u}})},[s,n,r,i,T,g,h,l,u,E,C,_]),(0,U.useEffect)(()=>{w(g,!!a)},[a,g,w]),kf(g,f);let D=(0,U.useSyncExternalStore)(e=>md(x,e),()=>JSON.stringify(b(x,g)),()=>JSON.stringify(b(x,g)));return(0,W.jsx)(`div`,{...m,"aria-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...jf,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...JSON.parse(D)},children:(0,W.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}Af.displayName=`Panel`;var jf={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function Mf({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,a,o=e[n],s=t.find(e=>e.panelId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=Q({layout:Md({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Q({layout:Md({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function Nf({children:e,className:t,disabled:n,elementRef:r,id:i,style:a,...o}){let s=bf(i),c=wf({disabled:n}),[l,u]=(0,U.useState)({}),[d,f]=(0,U.useState)(`inactive`),p=(0,U.useRef)(null),m=Cf(p,r),{disableCursor:h,id:g,orientation:_,registerSeparator:v,toggleSeparatorDisabled:y}=Of(),b=_===`horizontal`?`vertical`:`horizontal`;xf(()=>{let e=p.current;if(e!==null){let t={disabled:c.disabled,element:e,id:s},n=v(t),r=Ud(e=>{f(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=md(g,e=>{let{derivedPanelConstraints:n,layout:r,separatorToPanels:i}=e.next,a=i.get(t);if(a){let e=a[0],t=a.indexOf(e);u(Mf({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[g,s,v,c]),(0,U.useEffect)(()=>{y(s,!!n)},[n,s,y]);let x;return n&&!h&&(x=`not-allowed`),(0,W.jsx)(`div`,{...o,"aria-controls":l.valueControls,"aria-disabled":n||void 0,"aria-orientation":b,"aria-valuemax":l.valueMax,"aria-valuemin":l.valueMin,"aria-valuenow":l.valueNow,children:e,className:t,"data-separator":n?`disabled`:d,"data-testid":s,id:s,ref:m,role:`separator`,style:{flexBasis:`auto`,cursor:x,...a,flexGrow:0,flexShrink:0,touchAction:`none`},tabIndex:n?void 0:0})}Nf.displayName=`Separator`;var Pf=`ppm-custom-order`;function Ff(){try{let e=localStorage.getItem(Pf);return e?JSON.parse(e):null}catch{return null}}function If(e){try{localStorage.setItem(Pf,JSON.stringify(e))}catch{}}function Lf(e,t){if(!t)return[...e];let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.name)??1/0)-(n.get(t.name)??1/0))}var Rf=ae((e,t)=>({projects:[],activeProject:null,customOrder:Ff(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{e({projects:await V.get(`/api/projects`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to fetch projects`,loading:!1})}},setActiveProject:t=>{e({activeProject:t})},addProject:async(n,r)=>{let i=await V.post(`/api/projects`,{path:n,name:r});await t().fetchProjects();let a=t().projects.find(e=>e.name===(r??i.name)||e.path===n);return a&&e({activeProject:a}),i},setProjectColor:async(e,n)=>{await V.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:n}),await t().fetchProjects()},moveProject:async(n,r)=>{let{projects:i,customOrder:a}=t(),o=Lf(i,a),s=o.findIndex(e=>e.name===n);if(s===-1)return;let c=r===`up`?s-1:s+1;if(c<0||c>=o.length)return;let l=o.map(e=>e.name);[l[s],l[c]]=[l[c],l[s]],If(l),await V.patch(`/api/projects/reorder`,{order:l}),e({customOrder:l})},reorderProjects:async t=>{If(t),e({customOrder:t}),await V.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,n)=>{await V.patch(`/api/projects/${encodeURIComponent(e)}`,{name:n}),await t().fetchProjects()},deleteProject:async t=>{await V.del(`/api/projects/${encodeURIComponent(t)}`),e(e=>{let n=e.projects.filter(e=>e.name!==t),r=e.customOrder?e.customOrder.filter(e=>e!==t):null;return r&&If(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}})),zf=`application/ppm-tab`,Bf=!1,Vf=new Set;function Hf(e){Bf!==e&&(Bf=e,Vf.forEach(e=>e()))}function Uf(){return(0,U.useSyncExternalStore)(e=>(Vf.add(e),()=>Vf.delete(e)),()=>Bf)}function Wf(){Hf(!1)}function Gf(e){let[t,n]=(0,U.useState)(null),r=(0,U.useRef)(null);return{dropIndex:t,handleDragStart:(0,U.useCallback)((t,n)=>{let r={tabId:n,panelId:e};t.dataTransfer.setData(zf,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`,requestAnimationFrame(()=>Hf(!0))},[e]),handleDragOver:(0,U.useCallback)((e,t,i)=>{if(!e.dataTransfer.types.includes(`application/ppm-tab`)||(e.preventDefault(),e.dataTransfer.dropEffect=`move`,r.current===t))return;r.current=t;let a=e.currentTarget.getBoundingClientRect(),o=a.left+a.width/2;n(e.clientX<o?i:i+1)},[]),handleDragOverBar:(0,U.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},[]),handleDrop:(0,U.useCallback)(i=>{i.preventDefault(),Hf(!1);let a=i.dataTransfer.getData(zf);if(a){try{let n=JSON.parse(a),r=F.getState();n.panelId===e?t!==null&&r.reorderTab(n.tabId,e,t):r.moveTab(n.tabId,n.panelId,e,t??void 0)}catch{}n(null),r.current=null}},[e,t]),handleDragEnd:(0,U.useCallback)(()=>{Hf(!1),n(null),r.current=null},[])}}var Kf=null,qf=null,Jf=0,Yf=new Set;function Xf(){Yf.forEach(e=>e())}function Zf(){return(0,U.useSyncExternalStore)(e=>(Yf.add(e),()=>Yf.delete(e)),()=>qf)}function Qf(){return Date.now()-Jf<300}var $f=null;function ep(e,t,n){let r=document.createElement(`div`);r.id=`touch-drag-ghost`,Object.assign(r.style,{position:`fixed`,zIndex:`9999`,pointerEvents:`none`,padding:`6px 14px`,borderRadius:`8px`,background:`rgba(30,30,30,0.92)`,color:`#fff`,fontSize:`12px`,whiteSpace:`nowrap`,opacity:`0.95`,boxShadow:`0 4px 16px rgba(0,0,0,0.35)`,transform:`translate(-50%, -130%)`,left:`${t}px`,top:`${n}px`}),r.textContent=e,document.body.appendChild(r),$f=r}function tp(e,t){$f&&($f.style.left=`${e}px`,$f.style.top=`${t}px`)}function np(){$f?.remove(),$f=null}function rp(e,t){$f&&($f.style.display=`none`);let n=document.elementFromPoint(e,t);$f&&($f.style.display=``);let r=n?.closest(`[data-panel-drop-zone]`);if(!r)return null;let i=r.dataset.panelDropZone,a=r.getBoundingClientRect(),o=(e-a.left)/a.width,s=(t-a.top)/a.height,c=.25,{grid:l}=F.getState(),u=window.innerWidth<768,d=P(l,i),f=d?!u&&(l[d.row]?.length??0)<ie(!1):!1,p=!u&&l.length<3,m=`center`;return o<c&&f?m=`left`:o>1-c&&f?m=`right`:s<c&&p?m=`top`:s>1-c&&p&&(m=`bottom`),{panelId:i,zone:m}}function ip(e){if(!Kf)return;e.preventDefault();let t=e.touches[0];if(!t)return;tp(t.clientX,t.clientY);let n=rp(t.clientX,t.clientY);(n?.panelId!==qf?.panelId||n?.zone!==qf?.zone)&&(qf=n,Xf())}function ap(){Kf=null,qf=null,Xf(),np(),Wf(),document.removeEventListener(`touchmove`,ip),document.removeEventListener(`touchend`,op),document.removeEventListener(`touchcancel`,sp)}function op(){let e=Kf,t=qf;if(ap(),Jf=Date.now(),!e||!t)return;let n=F.getState();if(t.zone===`center`)e.panelId!==t.panelId&&n.moveTab(e.tabId,e.panelId,t.panelId);else{let r=t.zone===`top`?`up`:t.zone===`bottom`?`down`:t.zone;n.splitPanel(r,e.tabId,e.panelId,t.panelId)}}function sp(){ap(),Jf=Date.now()}function cp(e,t,n,r){Kf=e,Hf(!0),ep(t,n,r),document.addEventListener(`touchmove`,ip,{passive:!1}),document.addEventListener(`touchend`,op),document.addEventListener(`touchcancel`,sp)}var lp=200,up=10;function dp(e){let t=(0,U.useRef)(null),n=(0,U.useRef)(null),r=(0,U.useRef)(!1);return{handleTouchStart:(0,U.useCallback)((i,a,o)=>{let s=i.touches[0];s&&(n.current={x:s.clientX,y:s.clientY},r.current=!1,t.current=setTimeout(()=>{r.current=!0,cp({tabId:a,panelId:e},o,n.current.x,n.current.y)},lp))},[e]),handleTouchMove:(0,U.useCallback)(e=>{if(r.current||!n.current||!t.current)return;let i=e.touches[0];i&&(Math.abs(i.clientX-n.current.x)>up||Math.abs(i.clientY-n.current.y)>up)&&(clearTimeout(t.current),t.current=null)},[]),handleTouchEnd:(0,U.useCallback)(()=>{t.current&&=(clearTimeout(t.current),null)},[])}}var fp=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent),pp=[{id:`command-palette`,label:`Command Palette`,category:`general`,defaultKey:`F1`,note:`Shift+Shift also opens (not customizable)`},{id:`toggle-sidebar`,label:`Toggle Sidebar`,category:`general`,defaultKey:`Mod+B`},{id:`save-prevent`,label:`Prevent Save Dialog`,category:`general`,defaultKey:`Mod+S`,locked:!0,note:`Always active — prevents browser save`},{id:`next-tab`,label:`Next Tab`,category:`tabs`,defaultKey:`Alt+]`},{id:`prev-tab`,label:`Previous Tab`,category:`tabs`,defaultKey:`Alt+[`},{id:`open-chat`,label:`Open Chat`,category:`tabs`,defaultKey:`Mod+L`},{id:`open-terminal`,label:`Open Terminal`,category:`tabs`,defaultKey:`Mod+'`},{id:`open-settings`,label:`Open Settings`,category:`tabs`,defaultKey:`Mod+,`},{id:`open-git-graph`,label:`Git Graph`,category:`tabs`,defaultKey:`Mod+G`},{id:`open-git-status`,label:`Git Status (sidebar)`,category:`tabs`,defaultKey:`Mod+Shift+E`},{id:`open-search`,label:`Search Files (sidebar)`,category:`tabs`,defaultKey:`Mod+Shift+F`},{id:`voice-input`,label:`Voice Input`,category:`general`,defaultKey:`Mod+Shift+V`,note:`Toggle speech-to-text in chat`},...Array.from({length:9},(e,t)=>({id:`switch-project-${t+1}`,label:`Switch to Project ${t+1}`,category:`projects`,defaultKey:`Mod+${t+1}`}))],mp=new Map(pp.map(e=>[e.id,e.defaultKey]));function hp(e){let t=e.split(`+`),n={ctrl:!1,meta:!1,alt:!1,shift:!1,key:``};for(let e of t){let t=e.trim();switch(t){case`Mod`:fp?n.meta=!0:n.ctrl=!0;break;case`Ctrl`:n.ctrl=!0;break;case`Meta`:case`Cmd`:n.meta=!0;break;case`Alt`:n.alt=!0;break;case`Shift`:n.shift=!0;break;default:n.key=t.toLowerCase();break}}return n}function gp(e,t){return e.ctrlKey!==t.ctrl||e.metaKey!==t.meta||e.altKey!==t.alt||e.shiftKey!==t.shift?!1:e.key.toLowerCase()===t.key}function _p(e){return e.replace(/Mod/g,fp?`⌘`:`Ctrl`).replace(/Shift/g,fp?`⇧`:`Shift`).replace(/Alt/g,fp?`⌥`:`Alt`).replace(/Meta|Cmd/g,`⌘`).replace(/Ctrl/g,fp?`⌃`:`Ctrl`)}function vp(e){if([`Control`,`Meta`,`Alt`,`Shift`].includes(e.key))return null;let t=[];e.ctrlKey&&!e.metaKey&&t.push(fp?`Ctrl`:`Mod`),e.metaKey&&t.push(fp?`Mod`:`Meta`),e.altKey&&t.push(`Alt`),e.shiftKey&&t.push(`Shift`);let n=e.key;return n===` `?n=`Space`:n.length===1&&(n=n.toUpperCase()),t.push(n),t.join(`+`)}var yp=ae((e,t)=>({overrides:{},loaded:!1,getBinding:e=>t().overrides[e]??mp.get(e)??``,matchesEvent:(e,n)=>{let r=t().getBinding(n);return r?gp(e,hp(r)):!1},setBinding:(n,r)=>{e({overrides:{...t().overrides,[n]:r}}),V.put(`/api/settings/keybindings`,{[n]:r}).catch(()=>{})},resetBinding:n=>{let r={...t().overrides};delete r[n],e({overrides:r}),V.put(`/api/settings/keybindings`,{[n]:null}).catch(()=>{})},resetAll:()=>{e({overrides:{}});let n={};for(let e of Object.keys(t().overrides))n[e]=null;Object.keys(n).length>0&&V.put(`/api/settings/keybindings`,n).catch(()=>{})},loadFromServer:async()=>{try{e({overrides:await V.get(`/api/settings/keybindings`),loaded:!0})}catch{e({loaded:!0})}}}));function bp(e){window.dispatchEvent(new CustomEvent(`open-command-palette`,{detail:e}))}function xp(){let[e,t]=(0,U.useState)(!1),[n,r]=(0,U.useState)(``);return(0,U.useEffect)(()=>{let e=0,n=!1,{matchesEvent:i}=yp.getState(),a=!1;function o(){a=!0}function s(){a=!1}function c(i){if(i.type===`keydown`&&i.key===`Shift`){n=!0;return}if(i.type===`keydown`&&i.shiftKey&&(n=!1),i.type===`keydown`&&i.key!==`Shift`&&(e=0),i.type===`keyup`&&i.key===`Shift`&&n&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&!a&&!i.isComposing){let n=Date.now();if(n-e<400){e=0,r(``),t(!0);return}e=n;return}if(i.type!==`keydown`||a||i.isComposing)return;let{matchesEvent:o}=yp.getState();if(o(i,`save-prevent`)){i.preventDefault();return}if(o(i,`command-palette`)){i.preventDefault(),r(``),t(!0);return}if(o(i,`toggle-sidebar`)){i.preventDefault(),Kn.getState().toggleSidebar();return}if(o(i,`next-tab`)||o(i,`prev-tab`)){i.preventDefault();let{tabs:e,activeTabId:t,setActiveTab:n}=R.getState();if(e.length<2)return;let r=e.findIndex(e=>e.id===t);n(e[o(i,`next-tab`)?(r+1)%e.length:(r-1+e.length)%e.length].id);return}for(let e of[{action:`open-chat`,type:`chat`,title:`AI Chat`},{action:`open-terminal`,type:`terminal`,title:`Terminal`},{action:`open-git-graph`,type:`git-graph`,title:`Git Graph`}])if(o(i,e.action)){i.preventDefault();let t=Rf.getState().activeProject;R.getState().openTab({type:e.type,title:e.title,projectId:t?.name??null,metadata:t?{projectName:t.name}:void 0,closable:!0});return}if(o(i,`open-settings`)){i.preventDefault();let e=Kn.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`settings`);return}if(o(i,`open-git-status`)){i.preventDefault();let e=Kn.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`git`);return}if(o(i,`voice-input`)){i.preventDefault(),window.dispatchEvent(new CustomEvent(`toggle-voice-input`));return}if(o(i,`open-search`)){i.preventDefault();let e=Kn.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`search`);return}for(let e=1;e<=9;e++)if(o(i,`switch-project-${e}`)){i.preventDefault();let t=Rf.getState().projects[e-1];t&&(Rf.getState().setActiveProject(t),R.getState().switchProject(t.name));return}}function l(e){let n=e.detail;r(typeof n==`string`?n:``),t(!0)}return window.addEventListener(`keydown`,c),window.addEventListener(`keyup`,c),window.addEventListener(`compositionstart`,o),window.addEventListener(`compositionend`,s),window.addEventListener(`open-command-palette`,l),()=>{window.removeEventListener(`keydown`,c),window.removeEventListener(`keyup`,c),window.removeEventListener(`compositionstart`,o),window.removeEventListener(`compositionend`,s),window.removeEventListener(`open-command-palette`,l)}},[]),{paletteOpen:e,paletteInitialQuery:n,closePalette:(0,U.useCallback)(()=>{t(!1),r(``)},[])}}var Sp={approval_request:`bg-red-500`,question:`bg-amber-500`,done:`bg-blue-500`},Cp={done:0,question:1,approval_request:2};function wp(e){return e&&Sp[e]||`bg-red-500`}var Tp=ae()(e=>({notifications:new Map,addNotification:(t,n,r)=>{e(e=>{let i=new Map(e.notifications),a=i.get(t);return i.set(t,{count:(a?.count??0)+1,type:n,projectName:r}),{notifications:i}})},clearForSession:t=>{e(e=>{if(!e.notifications.has(t))return e;let n=new Map(e.notifications);return n.delete(t),{notifications:n}})},clearAll:()=>e({notifications:new Map})}));function Ep(e){let t=0;for(let[,n]of e.notifications)t+=n.count;return t}function Dp(e){return t=>{let n=null,r=-1;for(let[,i]of t.notifications){if(i.projectName!==e)continue;let t=Cp[i.type]??0;t>r&&(r=t,n=i.type)}return n}}function Op(e){let[t,n]=(0,U.useState)(!1),[r,i]=(0,U.useState)(!1),a=(0,U.useCallback)(()=>{let t=e.current;t&&(n(t.scrollLeft>1),i(t.scrollLeft+t.clientWidth<t.scrollWidth-1))},[e]);return(0,U.useEffect)(()=>{let t=e.current;if(!t)return;a(),t.addEventListener(`scroll`,a,{passive:!0});let n=new ResizeObserver(a);n.observe(t);let r=new MutationObserver(a);return r.observe(t,{childList:!0,subtree:!0}),()=>{t.removeEventListener(`scroll`,a),n.disconnect(),r.disconnect()}},[e,a]),{canScrollLeft:t,canScrollRight:r,scrollLeft:(0,U.useCallback)(()=>{e.current?.scrollBy({left:-150,behavior:`smooth`})},[e]),scrollRight:(0,U.useCallback)(()=>{e.current?.scrollBy({left:150,behavior:`smooth`})},[e])}}var kp={done:0,question:1,approval_request:2};function Ap(e,t,n,r){if(!e)return{left:null,right:null};let i=e.scrollLeft,a=i+e.clientWidth,o=null,s=-1,c=null,l=-1,u=e.getBoundingClientRect();for(let d of n){if(d.type!==`chat`)continue;let n=d.metadata?.sessionId,f=n?r.get(n):void 0;if(!f||f.count===0)continue;let p=t.get(d.id);if(!p)continue;let m=p.getBoundingClientRect(),h=m.left-u.left+e.scrollLeft,g=h+m.width,_=kp[f.type]??0;g<=i&&_>s&&(s=_,o=f.type),h>=a&&_>l&&(l=_,c=f.type)}return{left:o,right:c}}function jp(e){let t=/^#([0-9a-fA-F]{6})$/.exec(e.trim());if(!t)return null;let n=parseInt(t[1],16);return{r:n>>16&255,g:n>>8&255,b:n&255}}function Mp(e,t,n){let[r,i,a]=[e,t,n].map(e=>{let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4});return .2126*r+.7152*i+.0722*a}function Np(e){let t=jp(e);return t?Mp(t.r,t.g,t.b)<.4:!1}function Pp({tab:e,isActive:t,icon:n,showDropBefore:r,notificationType:i,onSelect:a,onClose:o,onDragStart:s,onDragOver:c,onDragEnd:l,onTouchStart:u,onTouchMove:d,onTouchEnd:f,tabRef:p,onRename:m}){let[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(e.title),y=(0,U.useRef)(null);(0,U.useEffect)(()=>{h&&(v(e.title),setTimeout(()=>y.current?.select(),0))},[h]);let b=()=>{g(!1);let t=_.trim();t&&t!==e.title&&m&&m(t)},x=e.metadata?.connectionColor,S=x?{backgroundColor:t?x:`${x}33`,color:t&&Np(x)?`#fff`:void 0}:void 0;return(0,W.jsxs)(`div`,{className:`relative flex items-center`,children:[r&&(0,W.jsx)(`div`,{className:`absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-full z-10`}),(0,W.jsxs)(`button`,{ref:p,"data-tab-item":!0,draggable:!h,onClick:a,onAuxClick:t=>{t.button===1&&e.closable&&(t.preventDefault(),o())},onDragStart:s,onDragOver:c,onDragEnd:l,onTouchStart:u,onTouchMove:d,onTouchEnd:f,style:S,className:z(`group flex items-center gap-1 px-3 h-10 whitespace-nowrap text-xs transition-colors`,`border-b-2 -mb-px cursor-grab active:cursor-grabbing`,!S&&(t?`border-primary text-primary`:`border-transparent text-text-secondary hover:text-foreground`),S&&`border-transparent`),children:[(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(n,{className:`size-4`}),i&&!t&&(0,W.jsx)(`span`,{className:z(`absolute -top-1 -right-1 size-2 rounded-full`,wp(i))})]}),h?(0,W.jsx)(`input`,{ref:y,value:_,onChange:e=>v(e.target.value),onBlur:b,onKeyDown:e=>{e.key===`Enter`&&b(),e.key===`Escape`&&g(!1),e.stopPropagation()},onClick:e=>e.stopPropagation(),className:`max-w-[120px] bg-surface-elevated text-xs px-1 py-0.5 rounded border border-border outline-none focus:border-primary`,autoFocus:!0}):(0,W.jsx)(`span`,{className:`max-w-[120px] truncate`,onDoubleClick:e=>{m&&(e.stopPropagation(),g(!0))},children:e.title}),e.closable&&!h&&(0,W.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),o()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),o())},className:`ml-1 can-hover:opacity-0 can-hover:group-hover:opacity-100 rounded-sm hover:bg-surface-elevated p-0.5 transition-opacity`,children:(0,W.jsx)(rn,{className:`size-3`})})]})]})}var Fp={terminal:Yt,chat:vt,editor:qe,database:He,sqlite:He,postgres:He,"git-graph":rt,"git-diff":Je,settings:Gt,browser:at,"extension-webview":It};function Ip({panelId:e}){Rf(e=>e.activeProject);let t=(0,U.useRef)(new Map),n=(0,U.useRef)(null),r=(0,U.useRef)(0),i=F(t=>e?t.panels[e]:t.panels[t.focusedPanelId]),o=i?.tabs??[],s=i?.activeTabId??null,c=i?.id??F.getState().focusedPanelId,{dropIndex:l,handleDragStart:u,handleDragOver:d,handleDragOverBar:f,handleDrop:p,handleDragEnd:m}=Gf(c),{handleTouchStart:h,handleTouchMove:g,handleTouchEnd:_}=dp(c),v=Tp(e=>e.notifications),{canScrollLeft:y,canScrollRight:b,scrollLeft:x,scrollRight:S}=Op(n),C=Ap(n.current,t.current,o,v);(0,U.useEffect)(()=>{if(o.length>r.current&&s){let e=t.current.get(s);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})}r.current=o.length},[o.length,s]);let w=(0,U.useCallback)((e,t)=>{R.getState().updateTab(e.id,{title:t});let n=e.metadata?.projectName,r=e.metadata?.sessionId;n&&r&&V.patch(`${B(n)}/chat/sessions/${r}`,{title:t}).catch(()=>{})},[]);function T(e){e.target.closest(`[data-tab-item]`)||bp()}function E(e){e.target.closest(`[data-tab-item]`)||(e.preventDefault(),bp())}return(0,W.jsxs)(`div`,{className:`hidden md:flex items-center h-10 border-b border-border bg-background relative`,onDragOver:f,onDrop:p,onDoubleClick:T,onContextMenu:E,children:[y&&(0,W.jsx)(`button`,{onClick:x,className:`absolute left-0 z-10 flex items-center justify-center size-8 bg-gradient-to-r from-background via-background to-transparent`,children:(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(Me,{className:`size-4 text-text-secondary`}),C.left&&(0,W.jsx)(`span`,{className:z(`absolute -top-1 -right-0.5 size-2 rounded-full`,wp(C.left))})]})}),(0,W.jsx)(`div`,{ref:n,className:`flex-1 overflow-x-auto overflow-y-hidden min-w-0 scrollbar-none`,children:(0,W.jsxs)(`div`,{className:`flex items-center h-10`,children:[o.map((e,n)=>{let r=e.type===`chat`?e.metadata?.sessionId:void 0,i=r?v.get(r):void 0,a=i&&i.count>0?i.type:null;return(0,W.jsx)(Pp,{tab:e,isActive:e.id===s,icon:Fp[e.type],showDropBefore:l===n,notificationType:a,onSelect:()=>{Qf()||(F.getState().setActiveTab(e.id,c),r&&Tp.getState().clearForSession(r))},onClose:()=>F.getState().closeTab(e.id,c),onDragStart:t=>u(t,e.id),onDragOver:t=>d(t,e.id,n),onDragEnd:m,onTouchStart:t=>h(t,e.id,e.title),onTouchMove:g,onTouchEnd:_,tabRef:n=>{n?t.current.set(e.id,n):t.current.delete(e.id)},onRename:e.type===`chat`?t=>w(e,t):void 0},e.id)}),l!==null&&l>=o.length&&(0,W.jsx)(`div`,{className:`w-0.5 h-6 bg-primary rounded-full`}),(0,W.jsx)(`button`,{onClick:()=>bp(),title:`Open command palette (Shift+Shift)`,className:`flex items-center justify-center size-10 shrink-0 sticky right-0 border-b-2 border-transparent text-text-secondary hover:text-foreground transition-colors bg-background`,children:(0,W.jsx)(Nt,{className:`size-4`})})]})}),b&&(0,W.jsx)(`button`,{onClick:S,className:`absolute right-10 z-10 flex items-center justify-center size-8 bg-gradient-to-l from-background via-background to-transparent`,children:(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(a,{className:`size-4 text-text-secondary`}),C.right&&(0,W.jsx)(`span`,{className:z(`absolute -top-1 -left-0.5 size-2 rounded-full`,wp(C.right))})]})})]})}function Lp({panelId:e}){let[t,n]=(0,U.useState)(null),r=Uf(),i=Zf(),a=(i?.panelId===e?i.zone:null)??t,o=F(e=>e.grid),s=F(e=>e.isMobile()),c=P(o,e),l=!s&&o.length<3,u=c?!s&&(o[c.row]?.length??0)<ie(!1):!1,d=(0,U.useCallback)(e=>{let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width,r=(e.clientY-t.top)/t.height,i=.25;return n<i&&u?`left`:n>1-i&&u?`right`:r<i&&l?`top`:r>1-i&&l?`bottom`:`center`},[u,l]),f=(0,U.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.stopPropagation(),n(d(e)))},[d]),p=(0,U.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||n(null)},[]),m=(0,U.useCallback)(t=>{t.preventDefault(),t.stopPropagation();let r=d(t);if(n(null),Wf(),!r)return;let i=t.dataTransfer.getData(zf);if(i)try{let t=JSON.parse(i),n=F.getState();if(r===`center`)t.panelId!==e&&n.moveTab(t.tabId,t.panelId,e);else{let i=r===`top`?`up`:r===`bottom`?`down`:r;n.splitPanel(i,t.tabId,t.panelId,e)}}catch{}},[d,e]);return r?(0,W.jsxs)(`div`,{className:`absolute inset-0 z-20`,onDragOver:f,onDragLeave:p,onDrop:m,children:[a===`left`&&(0,W.jsx)(`div`,{className:`absolute inset-y-0 left-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-l-md`}),a===`right`&&(0,W.jsx)(`div`,{className:`absolute inset-y-0 right-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-r-md`}),a===`top`&&(0,W.jsx)(`div`,{className:`absolute inset-x-0 top-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-t-md`}),a===`bottom`&&(0,W.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-b-md`}),a===`center`&&(0,W.jsx)(`div`,{className:`absolute inset-0 bg-primary/5 border-2 border-dashed border-primary/30 rounded-md`})]}):null}var Rp=[{type:`terminal`,label:`Terminal`,icon:Yt},{type:`chat`,label:`AI Chat`,icon:vt},{type:`git-graph`,label:`Git Graph`,icon:rt}],zp={terminal:(0,U.lazy)(()=>oe(()=>import(`./terminal-tab-BcFzPhTl.js`).then(e=>({default:e.TerminalTab})),__vite__mapDeps([3,1,4,5,6,7]))),chat:(0,U.lazy)(()=>oe(()=>import(`./chat-tab-BF8l8a3L.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([8,1,9,10,11,12,6,13,5,14,15,16,17,18,19,4,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,38,39,0]))),editor:(0,U.lazy)(()=>oe(()=>import(`./code-editor-C2TuWBbN.js`).then(e=>({default:e.CodeEditor})),__vite__mapDeps([40,1,9,10,11,12,6,13,5,14,15,16,17,18,19,41,4,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,42]))),database:(0,U.lazy)(()=>oe(()=>import(`./database-viewer-DmuRsqPC.js`).then(e=>({default:e.DatabaseViewer})),__vite__mapDeps([43,1,44,5,6,45,21,12,2]))),sqlite:(0,U.lazy)(()=>oe(()=>import(`./sqlite-viewer-3ti8mIWl.js`).then(e=>({default:e.SqliteViewer})),__vite__mapDeps([46,1,44,5,6,45,21,12,42,2]))),postgres:(0,U.lazy)(()=>oe(()=>import(`./postgres-viewer-bN4ltnEE.js`).then(e=>({default:e.PostgresViewer})),__vite__mapDeps([47,1,44,5,6,45,21,12,42,2]))),"git-graph":(0,U.lazy)(()=>oe(()=>import(`./git-graph-z16nosLs.js`).then(e=>({default:e.GitGraph})),__vite__mapDeps([48,1,11,12,6,13,5,4,24,25,39,2]))),"git-diff":(0,U.lazy)(()=>oe(()=>import(`./diff-viewer-sSiXKfTi.js`).then(e=>({default:e.DiffViewer})),__vite__mapDeps([49,1,41,12,6,38,5,2]))),settings:(0,U.lazy)(()=>oe(()=>import(`./settings-tab-DW3RE6Sm.js`).then(e=>({default:e.SettingsTab})),__vite__mapDeps([50,11,1,12,6,13,5,2,0]))),browser:(0,U.lazy)(()=>oe(()=>import(`./browser-tab-DPvH5VhD.js`).then(e=>({default:e.BrowserTab})),__vite__mapDeps([51,1,24,4,12,6,25,5,2]))),"extension-webview":(0,U.lazy)(()=>oe(()=>import(`./extension-webview-BTY54kgc.js`).then(e=>({default:e.ExtensionWebview})),__vite__mapDeps([52,1,5,6])))};function Bp({panelId:e,projectName:t}){let n=F(t=>t.panels[e]),r=F(t=>t.focusedPanelId===e),i=F(e=>(e.currentProject===t?e.grid:e.projectGrids[t]??[[]]).flat().length);return n?(0,W.jsxs)(`div`,{className:z(`flex flex-col h-full overflow-hidden`,i>1&&`border border-transparent`,i>1&&r&&`border-primary/30`),onMouseDown:()=>{F.getState().focusedPanelId!==e&&F.getState().setFocusedPanel(e)},children:[(0,W.jsx)(Ip,{panelId:e}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-hidden relative`,"data-panel-drop-zone":e,children:[n.tabs.length===0?(0,W.jsx)(Wp,{panelId:e}):n.tabs.map(e=>{let t=zp[e.type];return(0,W.jsx)(`div`,{className:e.id===n.activeTabId?`h-full w-full`:`hidden`,children:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,W.jsx)(H,{className:`size-6 animate-spin text-primary`})}),children:(0,W.jsx)(t,{metadata:e.metadata,tabId:e.id})})},e.id)}),(0,W.jsx)(Lp,{panelId:e})]})]}):null}function Vp(e){try{let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`Just now`;if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`})}catch{return``}}var Hp=5,Up=20;function Wp({panelId:e}){let t=Rf(e=>e.activeProject),[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1),c=(0,U.useCallback)(async()=>{if(t?.name){a(!0);try{r((await V.get(`${B(t.name)}/chat/sessions`)).slice(0,Up))}catch{}finally{a(!1)}}},[t?.name]);(0,U.useEffect)(()=>{c()},[c]);let l=(0,U.useCallback)(async(e,n)=>{if(e.stopPropagation(),!t?.name)return;let i=`${B(t.name)}/chat/sessions/${n.id}/pin`;try{n.pinned?await V.del(i):await V.put(i),r(e=>e.map(e=>e.id===n.id?{...e,pinned:!e.pinned}:e).sort((e,t)=>e.pinned&&!t.pinned?-1:!e.pinned&&t.pinned?1:new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()))}catch{}},[t?.name]);function u(n){let r=n!==`settings`&&t?{projectName:t.name}:void 0;F.getState().openTab({type:n,title:Rp.find(e=>e.type===n)?.label??n,metadata:r,projectId:t?.name??null,closable:!0},e)}function d(n){F.getState().openTab({type:`chat`,title:n.title||`Chat`,projectId:t?.name??null,metadata:{projectName:t?.name,sessionId:n.id,providerId:n.providerId},closable:!0},e)}let f=n.filter(e=>e.pinned),p=n.filter(e=>!e.pinned),m=o?p:p.slice(0,Hp),h=p.length>Hp;function g(e){return(0,W.jsxs)(`button`,{onClick:()=>d(e),className:`group flex items-center gap-2.5 w-full px-3 py-2.5 text-left hover:bg-surface-elevated active:bg-surface-elevated transition-colors border-b border-border/50 last:border-0`,children:[(0,W.jsx)(vt,{className:`size-3.5 shrink-0 text-text-subtle`}),(0,W.jsx)(`span`,{className:`flex-1 min-w-0 text-xs font-medium truncate text-text-primary`,children:e.title||`Untitled`}),e.updatedAt&&(0,W.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:Vp(e.updatedAt)}),(0,W.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>l(t,e),className:`p-1 rounded transition-colors shrink-0 ${e.pinned?`text-primary hover:text-primary/70`:`text-text-subtle can-hover:opacity-0 can-hover:group-hover:opacity-100 hover:text-text-primary`}`,"aria-label":e.pinned?`Unpin session`:`Pin session`,children:e.pinned?(0,W.jsx)(kt,{className:`size-3`}):(0,W.jsx)(At,{className:`size-3`})})]},e.id)}return(0,W.jsx)(`div`,{className:`flex flex-col h-full overflow-y-auto text-text-secondary`,children:(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-6 px-4 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm`,children:`Open a tab to get started`}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2 w-full max-w-sm`,children:Rp.map(e=>{let t=e.icon;return(0,W.jsxs)(`button`,{onClick:()=>u(e.type),className:`flex flex-col items-center justify-center gap-1.5 px-2 py-3 rounded-md border border-border bg-surface hover:bg-surface-elevated active:bg-surface-elevated text-xs text-foreground transition-colors`,children:[(0,W.jsx)(t,{className:`size-5`}),e.label]},e.type)})}),t&&!i&&f.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,W.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Pinned`}),(0,W.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:f.map(g)})]}),t&&!i&&m.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,W.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Recent chats`}),(0,W.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:m.map(g)}),h&&(0,W.jsxs)(`button`,{onClick:()=>s(!o),className:`flex items-center justify-center gap-1 text-[11px] text-text-subtle hover:text-text-primary transition-colors py-1`,children:[o?(0,W.jsx)(Ne,{className:`size-3`}):(0,W.jsx)(je,{className:`size-3`}),o?`Show less`:`Show more (${p.length-Hp})`]})]})]})})}function Gp({projectName:e}){let t=F(t=>t.currentProject===e?t.grid:t.projectGrids[e]??[[]]),n=t.flat().length;return(0,U.useEffect)(()=>{if(n===0){let e=I();F.setState(t=>({panels:{...t.panels,[e.id]:e},grid:[[e.id]],focusedPanelId:e.id}))}},[n]),n===0?null:n===1&&t[0]?.[0]?(0,W.jsx)(Bp,{panelId:t[0][0],projectName:e}):(0,W.jsx)(Df,{orientation:`vertical`,style:{height:`100%`},children:t.map((n,r)=>(0,W.jsx)(Kp,{row:n,rowIdx:r,totalRows:t.length,projectName:e},`row-${r}`))})}function Kp({row:e,rowIdx:t,totalRows:n,projectName:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Af,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:e.length===1?(0,W.jsx)(Bp,{panelId:e[0],projectName:r}):(0,W.jsx)(Df,{orientation:`horizontal`,children:e.map((t,n)=>(0,W.jsx)(qp,{panelId:t,colIdx:n,totalCols:e.length,projectName:r},t))})}),t<n-1&&(0,W.jsx)(Jp,{orientation:`horizontal`})]})}function qp({panelId:e,colIdx:t,totalCols:n,projectName:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Af,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:(0,W.jsx)(Bp,{panelId:e,projectName:r})}),t<n-1&&(0,W.jsx)(Jp,{orientation:`vertical`})]})}function Jp({orientation:e}){let t=e===`vertical`;return(0,W.jsx)(Nf,{className:`
14
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return U.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Ar=`DialogDescriptionWarning`,jr=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Or(Ar).contentName}}.`;return U.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Mr=rr,Nr=ar,Pr=lr,Fr=dr,Ir=hr,Lr=br,Rr=Sr,zr=wr;function Br(e){let t=U.useRef({value:e,previous:e});return U.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Vr=`rovingFocusGroup.onEntryFocus`,Hr={bubbles:!1,cancelable:!0},Ur=`RovingFocusGroup`,[Wr,Gr,Kr]=h(Ur),[qr,Jr]=d(Ur,[Kr]),[Yr,Xr]=qr(Ur),Zr=U.forwardRef((e,t)=>(0,W.jsx)(Wr.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,W.jsx)(Wr.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,W.jsx)(Qr,{...e,ref:t})})}));Zr.displayName=Ur;var Qr=U.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:d=!1,...f}=e,m=U.useRef(null),h=S(t,m),g=w(a),[_,v]=p({prop:o,defaultProp:c??null,onChange:l,caller:Ur}),[y,b]=U.useState(!1),x=D(u),C=Gr(n),T=U.useRef(!1),[E,O]=U.useState(0);return U.useEffect(()=>{let e=m.current;if(e)return e.addEventListener(Vr,x),()=>e.removeEventListener(Vr,x)},[x]),(0,W.jsx)(Yr,{scope:n,orientation:r,dir:g,loop:i,currentTabStopId:_,onItemFocus:U.useCallback(e=>v(e),[v]),onItemShiftTab:U.useCallback(()=>b(!0),[]),onFocusableItemAdd:U.useCallback(()=>O(e=>e+1),[]),onFocusableItemRemove:U.useCallback(()=>O(e=>e-1),[]),children:(0,W.jsx)(s.div,{tabIndex:y||E===0?-1:0,"data-orientation":r,...f,ref:h,style:{outline:`none`,...e.style},onMouseDown:N(e.onMouseDown,()=>{T.current=!0}),onFocus:N(e.onFocus,e=>{let t=!T.current;if(e.target===e.currentTarget&&t&&!y){let t=new CustomEvent(Vr,Hr);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=C().filter(e=>e.focusable);ii([e.find(e=>e.active),e.find(e=>e.id===_),...e].filter(Boolean).map(e=>e.ref.current),d)}}T.current=!1}),onBlur:N(e.onBlur,()=>b(!1))})})}),$r=`RovingFocusGroupItem`,ei=U.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=b(),u=a||l,d=Xr($r,n),f=d.currentTabStopId===u,p=Gr(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d;return U.useEffect(()=>{if(r)return m(),()=>h()},[r,m,h]),(0,W.jsx)(Wr.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,W.jsx)(s.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:N(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:N(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:N(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ri(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?ai(n,r+1):n.slice(r+1)}setTimeout(()=>ii(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})});ei.displayName=$r;var ti={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function ni(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ri(e,t,n){let r=ni(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return ti[r]}function ii(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function ai(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var oi=Zr,si=ei,ci=[`Enter`,` `],li=[`ArrowDown`,`PageUp`,`Home`],ui=[`ArrowUp`,`PageDown`,`End`],di=[...li,...ui],fi={ltr:[...ci,`ArrowRight`],rtl:[...ci,`ArrowLeft`]},pi={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},mi=`Menu`,[hi,gi,_i]=h(mi),[vi,yi]=d(mi,[_i,m,Jr]),bi=m(),xi=Jr(),[Si,Ci]=vi(mi),[wi,Ti]=vi(mi),Ei=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=bi(t),[c,l]=U.useState(null),u=U.useRef(!1),d=D(a),f=w(i);return U.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,W.jsx)(x,{...s,children:(0,W.jsx)(Si,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,W.jsx)(wi,{scope:t,onClose:U.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Ei.displayName=mi;var Di=`MenuAnchor`,Oi=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=bi(n);return(0,W.jsx)(A,{...i,...r,ref:t})});Oi.displayName=Di;var G=`MenuPortal`,[ki,Ai]=vi(G,{forceMount:void 0}),ji=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Ci(G,t);return(0,W.jsx)(ki,{scope:t,forceMount:n,children:(0,W.jsx)(y,{present:n||a.open,children:(0,W.jsx)(j,{asChild:!0,container:i,children:r})})})};ji.displayName=G;var Mi=`MenuContent`,[Ni,Pi]=vi(Mi),Fi=U.forwardRef((e,t)=>{let n=Ai(Mi,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ci(Mi,e.__scopeMenu),o=Ti(Mi,e.__scopeMenu);return(0,W.jsx)(hi.Provider,{scope:e.__scopeMenu,children:(0,W.jsx)(y,{present:r||a.open,children:(0,W.jsx)(hi.Slot,{scope:e.__scopeMenu,children:o.modal?(0,W.jsx)(Ii,{...i,ref:t}):(0,W.jsx)(Li,{...i,ref:t})})})})}),Ii=U.forwardRef((e,t)=>{let n=Ci(Mi,e.__scopeMenu),r=U.useRef(null),i=S(t,r);return U.useEffect(()=>{let e=r.current;if(e)return k(e)},[]),(0,W.jsx)(zi,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:N(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Li=U.forwardRef((e,t)=>{let n=Ci(Mi,e.__scopeMenu);return(0,W.jsx)(zi,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Ri=l(`MenuContent.ScrollLock`),zi=U.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,disableOutsideScroll:m,...h}=e,y=Ci(Mi,n),b=Ti(Mi,n),x=bi(n),w=xi(n),T=gi(n),[E,D]=U.useState(null),k=U.useRef(null),A=S(t,k,y.onContentChange),j=U.useRef(0),M=U.useRef(``),ee=U.useRef(0),te=U.useRef(null),P=U.useRef(`right`),ne=U.useRef(0),re=m?g:U.Fragment,F=m?{as:Ri,allowPinchZoom:!0}:void 0,ie=e=>{let t=M.current+e,n=T().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=Ca(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){M.current=t,window.clearTimeout(j.current),t!==``&&(j.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};U.useEffect(()=>()=>window.clearTimeout(j.current),[]),C();let I=U.useCallback(e=>P.current===te.current?.side&&Ta(e,te.current?.area),[]);return(0,W.jsx)(Ni,{scope:n,searchRef:M,onItemEnter:U.useCallback(e=>{I(e)&&e.preventDefault()},[I]),onItemLeave:U.useCallback(e=>{I(e)||(k.current?.focus(),D(null))},[I]),onTriggerLeave:U.useCallback(e=>{I(e)&&e.preventDefault()},[I]),pointerGraceTimerRef:ee,onPointerGraceIntentChange:U.useCallback(e=>{te.current=e},[]),children:(0,W.jsx)(re,{...F,children:(0,W.jsx)(_,{asChild:!0,trapped:i,onMountAutoFocus:N(a,e=>{e.preventDefault(),k.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,W.jsx)(v,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,W.jsx)(oi,{asChild:!0,...w,dir:b.dir,orientation:`vertical`,loop:r,currentTabStopId:E,onCurrentTabStopIdChange:D,onEntryFocus:N(c,e=>{b.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,W.jsx)(O,{role:`menu`,"aria-orientation":`vertical`,"data-state":va(y.open),"data-radix-menu-content":``,dir:b.dir,...x,...h,ref:A,style:{outline:`none`,...h.style},onKeyDown:N(h.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&ie(e.key));let i=k.current;if(e.target!==i||!di.includes(e.key))return;e.preventDefault();let a=T().filter(e=>!e.disabled).map(e=>e.ref.current);ui.includes(e.key)&&a.reverse(),xa(a)}),onBlur:N(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(j.current),M.current=``)}),onPointerMove:N(e.onPointerMove,Ea(e=>{let t=e.target,n=ne.current!==e.clientX;e.currentTarget.contains(t)&&n&&(P.current=e.clientX>ne.current?`right`:`left`,ne.current=e.clientX)}))})})})})})})});Fi.displayName=Mi;var Bi=`MenuGroup`,Vi=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,W.jsx)(s.div,{role:`group`,...r,ref:t})});Vi.displayName=Bi;var Hi=`MenuLabel`,Ui=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,W.jsx)(s.div,{...r,ref:t})});Ui.displayName=Hi;var Wi=`MenuItem`,Gi=`menu.itemSelect`,Ki=U.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=U.useRef(null),o=Ti(Wi,e.__scopeMenu),s=Pi(Wi,e.__scopeMenu),c=S(t,a),l=U.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Gi,{bubbles:!0,cancelable:!0});e.addEventListener(Gi,e=>r?.(e),{once:!0}),ee(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,W.jsx)(qi,{...i,ref:c,disabled:n,onClick:N(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:N(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:N(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||ci.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});Ki.displayName=Wi;var qi=U.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Pi(Wi,n),c=xi(n),l=U.useRef(null),u=S(t,l),[d,f]=U.useState(!1),[p,m]=U.useState(``);return U.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[a.children]),(0,W.jsx)(hi.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,W.jsx)(si,{asChild:!0,...c,focusable:!r,children:(0,W.jsx)(s.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:N(e.onPointerMove,Ea(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:N(e.onPointerLeave,Ea(e=>o.onItemLeave(e))),onFocus:N(e.onFocus,()=>f(!0)),onBlur:N(e.onBlur,()=>f(!1))})})})}),Ji=`MenuCheckboxItem`,Yi=U.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,W.jsx)(ra,{scope:e.__scopeMenu,checked:n,children:(0,W.jsx)(Ki,{role:`menuitemcheckbox`,"aria-checked":ya(n)?`mixed`:n,...i,ref:t,"data-state":ba(n),onSelect:N(i.onSelect,()=>r?.(ya(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Yi.displayName=Ji;var Xi=`MenuRadioGroup`,[Zi,Qi]=vi(Xi,{value:void 0,onValueChange:()=>{}}),$i=U.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=D(r);return(0,W.jsx)(Zi,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,W.jsx)(Vi,{...i,ref:t})})});$i.displayName=Xi;var ea=`MenuRadioItem`,ta=U.forwardRef((e,t)=>{let{value:n,...r}=e,i=Qi(ea,e.__scopeMenu),a=n===i.value;return(0,W.jsx)(ra,{scope:e.__scopeMenu,checked:a,children:(0,W.jsx)(Ki,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":ba(a),onSelect:N(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});ta.displayName=ea;var na=`MenuItemIndicator`,[ra,ia]=vi(na,{checked:!1}),aa=U.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=ia(na,n);return(0,W.jsx)(y,{present:r||ya(a.checked)||a.checked===!0,children:(0,W.jsx)(s.span,{...i,ref:t,"data-state":ba(a.checked)})})});aa.displayName=na;var oa=`MenuSeparator`,sa=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,W.jsx)(s.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});sa.displayName=oa;var ca=`MenuArrow`,la=U.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=bi(n);return(0,W.jsx)(T,{...i,...r,ref:t})});la.displayName=ca;var ua=`MenuSub`,[da,fa]=vi(ua),pa=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Ci(ua,t),o=bi(t),[s,c]=U.useState(null),[l,u]=U.useState(null),d=D(i);return U.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,W.jsx)(x,{...o,children:(0,W.jsx)(Si,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,W.jsx)(da,{scope:t,contentId:b(),triggerId:b(),trigger:s,onTriggerChange:c,children:n})})})};pa.displayName=ua;var ma=`MenuSubTrigger`,ha=U.forwardRef((e,t)=>{let n=Ci(ma,e.__scopeMenu),r=Ti(ma,e.__scopeMenu),i=fa(ma,e.__scopeMenu),a=Pi(ma,e.__scopeMenu),o=U.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},d=U.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return U.useEffect(()=>d,[d]),U.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,W.jsx)(Oi,{asChild:!0,...l,children:(0,W.jsx)(qi,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":va(n.open),...e,ref:u(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:N(e.onPointerMove,Ea(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:N(e.onPointerLeave,Ea(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,c=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:c,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:c,y:t.bottom}],side:r}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:N(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||fi[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});ha.displayName=ma;var ga=`MenuSubContent`,_a=U.forwardRef((e,t)=>{let n=Ai(Mi,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ci(Mi,e.__scopeMenu),o=Ti(Mi,e.__scopeMenu),s=fa(ga,e.__scopeMenu),c=U.useRef(null),l=S(t,c);return(0,W.jsx)(hi.Provider,{scope:e.__scopeMenu,children:(0,W.jsx)(y,{present:r||a.open,children:(0,W.jsx)(hi.Slot,{scope:e.__scopeMenu,children:(0,W.jsx)(zi,{id:s.contentId,"aria-labelledby":s.triggerId,...i,ref:l,align:`start`,side:o.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{o.isUsingKeyboardRef.current&&c.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:N(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:N(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:N(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=pi[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});_a.displayName=ga;function va(e){return e?`open`:`closed`}function ya(e){return e===`indeterminate`}function ba(e){return ya(e)?`indeterminate`:e?`checked`:`unchecked`}function xa(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Sa(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Ca(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=Sa(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function wa(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Ta(e,t){return t?wa({x:e.clientX,y:e.clientY},t):!1}function Ea(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Da=Ei,Oa=Oi,ka=ji,Aa=Fi,ja=Vi,Ma=Ui,Na=Ki,Pa=Yi,Fa=$i,Ia=ta,La=aa,Ra=sa,za=la,Ba=pa,Va=ha,Ha=_a,Ua=`ContextMenu`,[Wa,Ga]=d(Ua,[yi]),Ka=yi(),[qa,Ja]=Wa(Ua),Ya=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:a=!0}=e,[o,s]=U.useState(!1),c=Ka(t),l=D(r),u=U.useCallback(e=>{s(e),l(e)},[l]);return(0,W.jsx)(qa,{scope:t,open:o,onOpenChange:u,modal:a,children:(0,W.jsx)(Da,{...c,dir:i,open:o,onOpenChange:u,modal:a,children:n})})};Ya.displayName=Ua;var Xa=`ContextMenuTrigger`,Za=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,disabled:r=!1,...i}=e,a=Ja(Xa,n),o=Ka(n),c=U.useRef({x:0,y:0}),l=U.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...c.current})}),u=U.useRef(0),d=U.useCallback(()=>window.clearTimeout(u.current),[]),f=e=>{c.current={x:e.clientX,y:e.clientY},a.onOpenChange(!0)};return U.useEffect(()=>d,[d]),U.useEffect(()=>void(r&&d()),[r,d]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Oa,{...o,virtualRef:l}),(0,W.jsx)(s.span,{"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,...i,ref:t,style:{WebkitTouchCallout:`none`,...e.style},onContextMenu:r?e.onContextMenu:N(e.onContextMenu,e=>{d(),f(e),e.preventDefault()}),onPointerDown:r?e.onPointerDown:N(e.onPointerDown,Eo(e=>{d(),u.current=window.setTimeout(()=>f(e),700)})),onPointerMove:r?e.onPointerMove:N(e.onPointerMove,Eo(d)),onPointerCancel:r?e.onPointerCancel:N(e.onPointerCancel,Eo(d)),onPointerUp:r?e.onPointerUp:N(e.onPointerUp,Eo(d))})]})});Za.displayName=Xa;var Qa=`ContextMenuPortal`,$a=e=>{let{__scopeContextMenu:t,...n}=e,r=Ka(t);return(0,W.jsx)(ka,{...r,...n})};$a.displayName=Qa;var eo=`ContextMenuContent`,to=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ja(eo,n),a=Ka(n),o=U.useRef(!1);return(0,W.jsx)(Aa,{...a,...r,ref:t,side:`right`,sideOffset:2,align:`start`,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),!t.defaultPrevented&&o.current&&t.preventDefault(),o.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),!t.defaultPrevented&&!i.modal&&(o.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-context-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-context-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-context-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-context-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});to.displayName=eo;var no=`ContextMenuGroup`,ro=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(ja,{...i,...r,ref:t})});ro.displayName=no;var io=`ContextMenuLabel`,ao=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ma,{...i,...r,ref:t})});ao.displayName=io;var oo=`ContextMenuItem`,K=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Na,{...i,...r,ref:t})});K.displayName=oo;var so=`ContextMenuCheckboxItem`,co=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Pa,{...i,...r,ref:t})});co.displayName=so;var lo=`ContextMenuRadioGroup`,uo=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Fa,{...i,...r,ref:t})});uo.displayName=lo;var fo=`ContextMenuRadioItem`,po=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ia,{...i,...r,ref:t})});po.displayName=fo;var mo=`ContextMenuItemIndicator`,ho=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(La,{...i,...r,ref:t})});ho.displayName=mo;var go=`ContextMenuSeparator`,_o=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ra,{...i,...r,ref:t})});_o.displayName=go;var vo=`ContextMenuArrow`,yo=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(za,{...i,...r,ref:t})});yo.displayName=vo;var bo=`ContextMenuSub`,xo=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,open:i,defaultOpen:a}=e,o=Ka(t),[s,c]=p({prop:i,defaultProp:a??!1,onChange:r,caller:bo});return(0,W.jsx)(Ba,{...o,open:s,onOpenChange:c,children:n})};xo.displayName=bo;var So=`ContextMenuSubTrigger`,Co=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Va,{...i,...r,ref:t})});Co.displayName=So;var wo=`ContextMenuSubContent`,To=U.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ka(n);return(0,W.jsx)(Ha,{...i,...r,ref:t,style:{...e.style,"--radix-context-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-context-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-context-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-context-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-context-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});To.displayName=wo;function Eo(e){return t=>t.pointerType===`mouse`?void 0:e(t)}var Do=Ya,Oo=Za,ko=$a,Ao=to,jo=K,Mo=_o,No=`DropdownMenu`,[Po,Fo]=d(No,[yi]),Io=yi(),[Lo,Ro]=Po(No),zo=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Io(t),l=U.useRef(null),[u,d]=p({prop:i,defaultProp:a??!1,onChange:o,caller:No});return(0,W.jsx)(Lo,{scope:t,triggerId:b(),triggerRef:l,contentId:b(),open:u,onOpenChange:d,onOpenToggle:U.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,W.jsx)(Da,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};zo.displayName=No;var Bo=`DropdownMenuTrigger`,Vo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Ro(Bo,n),o=Io(n);return(0,W.jsx)(Oa,{asChild:!0,...o,children:(0,W.jsx)(s.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:u(t,a.triggerRef),onPointerDown:N(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:N(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});Vo.displayName=Bo;var Ho=`DropdownMenuPortal`,Uo=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Io(t);return(0,W.jsx)(ka,{...r,...n})};Uo.displayName=Ho;var Wo=`DropdownMenuContent`,Go=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ro(Wo,n),a=Io(n),o=U.useRef(!1);return(0,W.jsx)(Aa,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:N(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:N(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});Go.displayName=Wo;var Ko=`DropdownMenuGroup`,qo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(ja,{...i,...r,ref:t})});qo.displayName=Ko;var Jo=`DropdownMenuLabel`,Yo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ma,{...i,...r,ref:t})});Yo.displayName=Jo;var Xo=`DropdownMenuItem`,Zo=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Na,{...i,...r,ref:t})});Zo.displayName=Xo;var Qo=`DropdownMenuCheckboxItem`,$o=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Pa,{...i,...r,ref:t})});$o.displayName=Qo;var es=`DropdownMenuRadioGroup`,ts=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Fa,{...i,...r,ref:t})});ts.displayName=es;var ns=`DropdownMenuRadioItem`,rs=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ia,{...i,...r,ref:t})});rs.displayName=ns;var is=`DropdownMenuItemIndicator`,as=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(La,{...i,...r,ref:t})});as.displayName=is;var os=`DropdownMenuSeparator`,ss=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ra,{...i,...r,ref:t})});ss.displayName=os;var cs=`DropdownMenuArrow`,ls=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(za,{...i,...r,ref:t})});ls.displayName=cs;var us=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Io(t),[s,c]=p({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,W.jsx)(Ba,{...o,open:s,onOpenChange:c,children:n})},ds=`DropdownMenuSubTrigger`,fs=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Va,{...i,...r,ref:t})});fs.displayName=ds;var ps=`DropdownMenuSubContent`,ms=U.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,W.jsx)(Ha,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});ms.displayName=ps;var hs=zo,gs=Vo,_s=Uo,vs=Go,ys=Zo,bs=us,xs=fs,Ss=ms,Cs=`Label`,ws=U.forwardRef((e,t)=>(0,W.jsx)(s.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));ws.displayName=Cs;var Ts=ws;function Es(e,[t,n]){return Math.min(n,Math.max(t,e))}function Ds(e,t){return U.useReducer((e,n)=>t[e][n]??e,e)}var Os=`ScrollArea`,[ks,As]=d(Os),[js,Ms]=ks(Os),Ns=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[c,l]=U.useState(null),[u,d]=U.useState(null),[f,p]=U.useState(null),[m,h]=U.useState(null),[g,_]=U.useState(null),[v,y]=U.useState(0),[b,x]=U.useState(0),[C,T]=U.useState(!1),[E,D]=U.useState(!1),O=S(t,e=>l(e)),k=w(i);return(0,W.jsx)(js,{scope:n,type:r,dir:k,scrollHideDelay:a,scrollArea:c,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:C,onScrollbarXEnabledChange:T,scrollbarY:g,onScrollbarYChange:_,scrollbarYEnabled:E,onScrollbarYEnabledChange:D,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,W.jsx)(s.div,{dir:k,...o,ref:O,style:{position:`relative`,"--radix-scroll-area-corner-width":v+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});Ns.displayName=Os;var Ps=`ScrollAreaViewport`,Fs=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=Ms(Ps,n),c=S(t,U.useRef(null),o.onViewportChange);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,W.jsx)(s.div,{"data-radix-scroll-area-viewport":``,...a,ref:c,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,W.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Fs.displayName=Ps;var Is=`ScrollAreaScrollbar`,Ls=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return U.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,W.jsx)(Rs,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,W.jsx)(zs,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,W.jsx)(Bs,{...r,ref:t,forceMount:n}):i.type===`always`?(0,W.jsx)(Vs,{...r,ref:t}):null});Ls.displayName=Is;var Rs=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),[a,o]=U.useState(!1);return U.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,W.jsx)(y,{present:n||a,children:(0,W.jsx)(Bs,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),zs=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=sc(()=>c(`SCROLL_END`),100),[s,c]=Ds(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return U.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),U.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,W.jsx)(y,{present:n||s!==`hidden`,children:(0,W.jsx)(Vs,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:N(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:N(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Bs=U.forwardRef((e,t)=>{let n=Ms(Is,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=U.useState(!1),s=e.orientation===`horizontal`,c=sc(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return cc(n.viewport,c),cc(n.content,c),(0,W.jsx)(y,{present:r||a,children:(0,W.jsx)(Vs,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),Vs=U.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=Ms(Is,e.__scopeScrollArea),a=U.useRef(null),o=U.useRef(0),[s,c]=U.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ec(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return nc(e,o.current,s,t)}return n===`horizontal`?(0,W.jsx)(Hs,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=rc(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,W.jsx)(Us,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=rc(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),Hs=U.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=U.useState(),c=U.useRef(null),l=S(t,c,a.onScrollbarXChange);return U.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,W.jsx)(Ks,{"data-orientation":`horizontal`,...i,ref:l,sizes:n,style:{bottom:0,left:a.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:a.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":tc(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),ac(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:$s(o.paddingLeft),paddingEnd:$s(o.paddingRight)}})}})}),Us=U.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=U.useState(),c=U.useRef(null),l=S(t,c,a.onScrollbarYChange);return U.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,W.jsx)(Ks,{"data-orientation":`vertical`,...i,ref:l,sizes:n,style:{top:0,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":tc(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(a.viewport){let r=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),ac(r,n)&&t.preventDefault()}},onResize:()=>{c.current&&a.viewport&&o&&r({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:$s(o.paddingTop),paddingEnd:$s(o.paddingBottom)}})}})}),[Ws,Gs]=ks(Is),Ks=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:c,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:d,onResize:f,...p}=e,m=Ms(Is,n),[h,g]=U.useState(null),_=S(t,e=>g(e)),v=U.useRef(null),y=U.useRef(``),b=m.viewport,x=r.content-r.viewport,C=D(d),w=D(l),T=sc(f,10);function E(e){v.current&&u({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return U.useEffect(()=>{let e=e=>{let t=e.target;h?.contains(t)&&C(e,x)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,h,x,C]),U.useEffect(w,[r,w]),cc(h,T),cc(m.content,T),(0,W.jsx)(Ws,{scope:n,scrollbar:h,hasThumb:i,onThumbChange:D(a),onThumbPointerUp:D(o),onThumbPositionChange:w,onThumbPointerDown:D(c),children:(0,W.jsx)(s.div,{...p,ref:_,style:{position:`absolute`,...p.style},onPointerDown:N(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),v.current=h.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),E(e))}),onPointerMove:N(e.onPointerMove,E),onPointerUp:N(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,m.viewport&&(m.viewport.style.scrollBehavior=``),v.current=null})})})}),qs=`ScrollAreaThumb`,Js=U.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Gs(qs,e.__scopeScrollArea);return(0,W.jsx)(y,{present:n||i.hasThumb,children:(0,W.jsx)(Ys,{ref:t,...r})})}),Ys=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=Ms(qs,n),o=Gs(qs,n),{onThumbPositionChange:c}=o,l=S(t,e=>o.onThumbChange(e)),u=U.useRef(void 0),d=sc(()=>{u.current&&=(u.current(),void 0)},100);return U.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{d(),u.current||(u.current=oc(e,c),c())};return c(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,d,c]),(0,W.jsx)(s.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:l,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:N(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:N(e.onPointerUp,o.onThumbPointerUp)})});Js.displayName=qs;var Xs=`ScrollAreaCorner`,Zs=U.forwardRef((e,t)=>{let n=Ms(Xs,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,W.jsx)(Qs,{...e,ref:t}):null});Zs.displayName=Xs;var Qs=U.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=Ms(Xs,n),[a,o]=U.useState(0),[c,l]=U.useState(0),u=!!(a&&c);return cc(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),l(e)}),cc(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),u?(0,W.jsx)(s.div,{...r,ref:t,style:{width:a,height:c,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function $s(e){return e?parseInt(e,10):0}function ec(e,t){let n=e/t;return isNaN(n)?0:n}function tc(e){let t=ec(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function nc(e,t,n,r=`ltr`){let i=tc(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return ic([c,l],d)(e)}function rc(e,t,n=`ltr`){let r=tc(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=Es(e,n===`ltr`?[0,o]:[o*-1,0]);return ic([0,o],[0,s])(c)}function ic(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function ac(e,t){return e>0&&e<t}var oc=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function sc(e,t){let n=D(e),r=U.useRef(0);return U.useEffect(()=>()=>window.clearTimeout(r.current),[]),U.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function cc(e,t){let n=D(t);M(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var lc=Ns,uc=Fs,dc=Zs,fc=[` `,`Enter`,`ArrowUp`,`ArrowDown`],pc=[` `,`Enter`],mc=`Select`,[hc,gc,_c]=h(mc),[vc,yc]=d(mc,[_c,m]),bc=m(),[xc,Sc]=vc(mc),[Cc,wc]=vc(mc),Tc=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:u,autoComplete:d,disabled:f,required:m,form:h}=e,g=bc(t),[_,v]=U.useState(null),[y,S]=U.useState(null),[C,T]=U.useState(!1),E=w(l),[D,O]=p({prop:r,defaultProp:i??!1,onChange:a,caller:mc}),[k,A]=p({prop:o,defaultProp:s,onChange:c,caller:mc}),j=U.useRef(null),M=_?h||!!_.closest(`form`):!0,[ee,te]=U.useState(new Set),N=Array.from(ee).map(e=>e.props.value).join(`;`);return(0,W.jsx)(x,{...g,children:(0,W.jsxs)(xc,{required:m,scope:t,trigger:_,onTriggerChange:v,valueNode:y,onValueNodeChange:S,valueNodeHasChildren:C,onValueNodeHasChildrenChange:T,contentId:b(),value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:j,disabled:f,children:[(0,W.jsx)(hc.Provider,{scope:t,children:(0,W.jsx)(Cc,{scope:e.__scopeSelect,onNativeOptionAdd:U.useCallback(e=>{te(t=>new Set(t).add(e))},[]),onNativeOptionRemove:U.useCallback(e=>{te(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),M?(0,W.jsxs)(bl,{"aria-hidden":!0,required:m,tabIndex:-1,name:u,autoComplete:d,value:k,onChange:e=>A(e.target.value),disabled:f,form:h,children:[k===void 0?(0,W.jsx)(`option`,{value:``}):null,Array.from(ee)]},N):null]})})};Tc.displayName=mc;var Ec=`SelectTrigger`,Dc=U.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=bc(n),o=Sc(Ec,n),c=o.disabled||r,l=S(t,o.onTriggerChange),u=gc(n),d=U.useRef(`touch`),[f,p,m]=Sl(e=>{let t=u().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=e=>{c||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,W.jsx)(A,{asChild:!0,...a,children:(0,W.jsx)(s.button,{type:`button`,role:`combobox`,"aria-controls":o.contentId,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":xl(o.value)?``:void 0,...i,ref:l,onClick:N(i.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:N(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:N(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&fc.includes(e.key)&&(h(),e.preventDefault())})})})});Dc.displayName=Ec;var Oc=`SelectValue`,kc=U.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Sc(Oc,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=S(t,l.onValueNodeChange);return M(()=>{u(d)},[u,d]),(0,W.jsx)(s.span,{...c,ref:f,style:{pointerEvents:`none`},children:xl(l.value)?(0,W.jsx)(W.Fragment,{children:o}):a})});kc.displayName=Oc;var Ac=`SelectIcon`,jc=U.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,W.jsx)(s.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});jc.displayName=Ac;var Mc=`SelectPortal`,Nc=e=>(0,W.jsx)(j,{asChild:!0,...e});Nc.displayName=Mc;var Pc=`SelectContent`,Fc=U.forwardRef((e,t)=>{let n=Sc(Pc,e.__scopeSelect),[r,i]=U.useState();if(M(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?cn.createPortal((0,W.jsx)(Lc,{scope:e.__scopeSelect,children:(0,W.jsx)(hc.Slot,{scope:e.__scopeSelect,children:(0,W.jsx)(`div`,{children:e.children})})}),t):null}return(0,W.jsx)(Vc,{...e,ref:t})});Fc.displayName=Pc;var Ic=10,[Lc,Rc]=vc(Pc),zc=`SelectContentImpl`,Bc=l(`SelectContent.RemoveScroll`),Vc=U.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:y,...b}=e,x=Sc(Pc,n),[w,T]=U.useState(null),[E,D]=U.useState(null),O=S(t,e=>T(e)),[A,j]=U.useState(null),[M,ee]=U.useState(null),te=gc(n),[P,ne]=U.useState(!1),re=U.useRef(!1);U.useEffect(()=>{if(w)return k(w)},[w]),C();let F=U.useCallback(e=>{let[t,...n]=te().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&&E&&(E.scrollTop=0),n===r&&E&&(E.scrollTop=E.scrollHeight),n?.focus(),document.activeElement!==i))return},[te,E]),ie=U.useCallback(()=>F([A,w]),[F,A,w]);U.useEffect(()=>{P&&ie()},[P,ie]);let{onOpenChange:I,triggerPointerDownPosRef:L}=x;U.useEffect(()=>{if(w){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(L.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(L.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():w.contains(n.target)||I(!1),document.removeEventListener(`pointermove`,t),L.current=null};return L.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[w,I,L]),U.useEffect(()=>{let e=()=>I(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[I]);let[R,ae]=Sl(e=>{let t=te().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),oe=U.useCallback((e,t,n)=>{let r=!re.current&&!n;(x.value!==void 0&&x.value===t||r)&&(j(e),r&&(re.current=!0))},[x.value]),se=U.useCallback(()=>w?.focus(),[w]),ce=U.useCallback((e,t,n)=>{let r=!re.current&&!n;(x.value!==void 0&&x.value===t||r)&&ee(e)},[x.value]),z=r===`popper`?Gc:Uc,le=z===Gc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:y}:{};return(0,W.jsx)(Lc,{scope:n,content:w,viewport:E,onViewportChange:D,itemRefCallback:oe,selectedItem:A,onItemLeave:se,itemTextRefCallback:ce,focusSelectedItem:ie,selectedItemText:M,position:r,isPositioned:P,searchRef:R,children:(0,W.jsx)(g,{as:Bc,allowPinchZoom:!0,children:(0,W.jsx)(_,{asChild:!0,trapped:x.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:N(i,e=>{x.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,W.jsx)(v,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>x.onOpenChange(!1),children:(0,W.jsx)(z,{role:`listbox`,id:x.contentId,"data-state":x.open?`open`:`closed`,dir:x.dir,onContextMenu:e=>e.preventDefault(),...b,...le,onPlaced:()=>ne(!0),ref:O,style:{display:`flex`,flexDirection:`column`,outline:`none`,...b.style},onKeyDown:N(b.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ae(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=te().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(()=>F(t)),e.preventDefault()}})})})})})})});Vc.displayName=zc;var Hc=`SelectItemAlignedPosition`,Uc=U.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Sc(Pc,n),o=Rc(Pc,n),[c,l]=U.useState(null),[u,d]=U.useState(null),f=S(t,e=>d(e)),p=gc(n),m=U.useRef(!1),h=U.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=o,b=U.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&u&&g&&_&&v){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-Ic*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),C=window.getComputedStyle(g),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ic,D=s-E,O=_.offsetHeight/2,k=_.offsetTop+O,A=f+h+k,j=x-A;if(A<=E){let e=o.length>0&&_===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+y);c.style.height=n+`px`}else{let e=o.length>0&&_===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,f+g.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,g.scrollTop=A-E+g.offsetTop}c.style.margin=`${Ic}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,a.trigger,a.valueNode,c,u,g,_,v,a.dir,r]);M(()=>b(),[b]);let[x,C]=U.useState();return M(()=>{u&&C(window.getComputedStyle(u).zIndex)},[u]),(0,W.jsx)(Kc,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:U.useCallback(e=>{e&&h.current===!0&&(b(),y?.(),h.current=!1)},[b,y]),children:(0,W.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,W.jsx)(s.div,{...i,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Uc.displayName=Hc;var Wc=`SelectPopperPosition`,Gc=U.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ic,...a}=e,o=bc(n);return(0,W.jsx)(O,{...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)`}})});Gc.displayName=Wc;var[Kc,qc]=vc(Pc,{}),Jc=`SelectViewport`,Yc=U.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Rc(Jc,n),o=qc(Jc,n),c=S(t,a.onViewportChange),l=U.useRef(0);return(0,W.jsxs)(W.Fragment,{children:[(0,W.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:r}),(0,W.jsx)(hc.Slot,{scope:n,children:(0,W.jsx)(s.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:N(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ic*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`)}}}l.current=t.scrollTop})})})]})});Yc.displayName=Jc;var Xc=`SelectGroup`,[Zc,Qc]=vc(Xc),$c=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=b();return(0,W.jsx)(Zc,{scope:n,id:i,children:(0,W.jsx)(s.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});$c.displayName=Xc;var el=`SelectLabel`,tl=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Qc(el,n);return(0,W.jsx)(s.div,{id:i.id,...r,ref:t})});tl.displayName=el;var nl=`SelectItem`,[rl,il]=vc(nl),al=U.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Sc(nl,n),l=Rc(nl,n),u=c.value===r,[d,f]=U.useState(a??``),[p,m]=U.useState(!1),h=S(t,e=>l.itemRefCallback?.(e,r,i)),g=b(),_=U.useRef(`touch`),v=()=>{i||(c.onValueChange(r),c.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,W.jsx)(rl,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:U.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,W.jsx)(hc.ItemSlot,{scope:n,value:r,disabled:i,textValue:d,children:(0,W.jsx)(s.div,{role:`option`,"aria-labelledby":g,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:h,onFocus:N(o.onFocus,()=>m(!0)),onBlur:N(o.onBlur,()=>m(!1)),onClick:N(o.onClick,()=>{_.current!==`mouse`&&v()}),onPointerUp:N(o.onPointerUp,()=>{_.current===`mouse`&&v()}),onPointerDown:N(o.onPointerDown,e=>{_.current=e.pointerType}),onPointerMove:N(o.onPointerMove,e=>{_.current=e.pointerType,i?l.onItemLeave?.():_.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:N(o.onKeyDown,e=>{l.searchRef?.current!==``&&e.key===` `||(pc.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})});al.displayName=nl;var ol=`SelectItemText`,sl=U.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Sc(ol,n),c=Rc(ol,n),l=il(ol,n),u=wc(ol,n),[d,f]=U.useState(null),p=S(t,e=>f(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=d?.textContent,h=U.useMemo(()=>(0,W.jsx)(`option`,{value:l.value,disabled:l.disabled,children:m},l.value),[l.disabled,l.value,m]),{onNativeOptionAdd:g,onNativeOptionRemove:_}=u;return M(()=>(g(h),()=>_(h)),[g,_,h]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(s.span,{id:l.textId,...a,ref:p}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?cn.createPortal(a.children,o.valueNode):null]})});sl.displayName=ol;var cl=`SelectItemIndicator`,ll=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return il(cl,n).isSelected?(0,W.jsx)(s.span,{"aria-hidden":!0,...r,ref:t}):null});ll.displayName=cl;var ul=`SelectScrollUpButton`,dl=U.forwardRef((e,t)=>{let n=Rc(ul,e.__scopeSelect),r=qc(ul,e.__scopeSelect),[i,a]=U.useState(!1),o=S(t,r.onScrollButtonChange);return M(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,W.jsx)(ml,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});dl.displayName=ul;var fl=`SelectScrollDownButton`,pl=U.forwardRef((e,t)=>{let n=Rc(fl,e.__scopeSelect),r=qc(fl,e.__scopeSelect),[i,a]=U.useState(!1),o=S(t,r.onScrollButtonChange);return M(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,W.jsx)(ml,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});pl.displayName=fl;var ml=U.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Rc(`SelectScrollButton`,n),o=U.useRef(null),c=gc(n),l=U.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return U.useEffect(()=>()=>l(),[l]),M(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,W.jsx)(s.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:N(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:N(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:N(i.onPointerLeave,()=>{l()})})}),hl=`SelectSeparator`,gl=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,W.jsx)(s.div,{"aria-hidden":!0,...r,ref:t})});gl.displayName=hl;var _l=`SelectArrow`,vl=U.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=bc(n),a=Sc(_l,n),o=Rc(_l,n);return a.open&&o.position===`popper`?(0,W.jsx)(T,{...i,...r,ref:t}):null});vl.displayName=_l;var yl=`SelectBubbleInput`,bl=U.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=U.useRef(null),a=S(r,i),o=Br(t);return U.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,W.jsx)(s.select,{...n,style:{...Jn,...n.style},ref:a,defaultValue:t})});bl.displayName=yl;function xl(e){return e===``||e===void 0}function Sl(e){let t=D(e),n=U.useRef(``),r=U.useRef(0),i=U.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=U.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return U.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Cl(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=wl(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}function wl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Tl=Tc,El=Dc,Dl=kc,Ol=jc,kl=Nc,Al=Fc,jl=Yc,Ml=al,Nl=sl,Pl=ll,Fl=dl,Il=pl,Ll=`Separator`,q=`horizontal`,Rl=[`horizontal`,`vertical`],J=U.forwardRef((e,t)=>{let{decorative:n,orientation:r=q,...i}=e,a=Y(r)?r:q,o=a===`vertical`?a:void 0,c=n?{role:`none`}:{"aria-orientation":o,role:`separator`};return(0,W.jsx)(s.div,{"data-orientation":a,...c,...i,ref:t})});J.displayName=Ll;function Y(e){return Rl.includes(e)}var X=J,zl=`Switch`,[Bl,Vl]=d(zl),[Hl,Ul]=Bl(zl),Wl=U.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:c,value:l=`on`,onCheckedChange:u,form:d,...f}=e,[m,h]=U.useState(null),g=S(t,e=>h(e)),_=U.useRef(!1),v=m?d||!!m.closest(`form`):!0,[y,b]=p({prop:i,defaultProp:a??!1,onChange:u,caller:zl});return(0,W.jsxs)(Hl,{scope:n,checked:y,disabled:c,children:[(0,W.jsx)(s.button,{type:`button`,role:`switch`,"aria-checked":y,"aria-required":o,"data-state":Yl(y),"data-disabled":c?``:void 0,disabled:c,value:l,...f,ref:g,onClick:N(e.onClick,e=>{b(e=>!e),v&&(_.current=e.isPropagationStopped(),_.current||e.stopPropagation())})}),v&&(0,W.jsx)(Jl,{control:m,bubbles:!_.current,name:r,value:l,checked:y,required:o,disabled:c,form:d,style:{transform:`translateX(-100%)`}})]})});Wl.displayName=zl;var Gl=`SwitchThumb`,Kl=U.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ul(Gl,n);return(0,W.jsx)(s.span,{"data-state":Yl(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});Kl.displayName=Gl;var ql=`SwitchBubbleInput`,Jl=U.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let o=U.useRef(null),s=S(o,a),c=Br(n),l=E(t);return U.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(c!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[c,n,r]),(0,W.jsx)(`input`,{type:`checkbox`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:s,style:{...i.style,...l,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});Jl.displayName=ql;function Yl(e){return e?`checked`:`unchecked`}var Xl=Wl,Zl=Kl,[Ql,$l]=d(`Tooltip`,[m]),eu=m(),tu=`TooltipProvider`,nu=700,ru=`tooltip.open`,[iu,au]=Ql(tu),ou=e=>{let{__scopeTooltip:t,delayDuration:n=nu,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=U.useRef(!0),s=U.useRef(!1),c=U.useRef(0);return U.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,W.jsx)(iu,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:U.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:U.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:U.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};ou.displayName=tu;var su=`Tooltip`,[cu,lu]=Ql(su),uu=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=au(su,e.__scopeTooltip),l=eu(t),[u,d]=U.useState(null),f=b(),m=U.useRef(0),h=o??c.disableHoverableContent,g=s??c.delayDuration,_=U.useRef(!1),[v,y]=p({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(ru))):c.onClose(),a?.(e)},caller:su}),S=U.useMemo(()=>v?_.current?`delayed-open`:`instant-open`:`closed`,[v]),C=U.useCallback(()=>{window.clearTimeout(m.current),m.current=0,_.current=!1,y(!0)},[y]),w=U.useCallback(()=>{window.clearTimeout(m.current),m.current=0,y(!1)},[y]),T=U.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{_.current=!0,y(!0),m.current=0},g)},[g,y]);return U.useEffect(()=>()=>{m.current&&=(window.clearTimeout(m.current),0)},[]),(0,W.jsx)(x,{...l,children:(0,W.jsx)(cu,{scope:t,contentId:f,open:v,stateAttribute:S,trigger:u,onTriggerChange:d,onTriggerEnter:U.useCallback(()=>{c.isOpenDelayedRef.current?T():C()},[c.isOpenDelayedRef,T,C]),onTriggerLeave:U.useCallback(()=>{h?w():(window.clearTimeout(m.current),m.current=0)},[w,h]),onOpen:C,onClose:w,disableHoverableContent:h,children:n})})};uu.displayName=su;var du=`TooltipTrigger`,fu=U.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=lu(du,n),a=au(du,n),o=eu(n),c=S(t,U.useRef(null),i.onTriggerChange),l=U.useRef(!1),u=U.useRef(!1),d=U.useCallback(()=>l.current=!1,[]);return U.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,W.jsx)(A,{asChild:!0,...o,children:(0,W.jsx)(s.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:c,onPointerMove:N(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),u.current=!0)}),onPointerLeave:N(e.onPointerLeave,()=>{i.onTriggerLeave(),u.current=!1}),onPointerDown:N(e.onPointerDown,()=>{i.open&&i.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:N(e.onFocus,()=>{l.current||i.onOpen()}),onBlur:N(e.onBlur,i.onClose),onClick:N(e.onClick,i.onClose)})})});fu.displayName=du;var pu=`TooltipPortal`,[mu,hu]=Ql(pu,{forceMount:void 0}),gu=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=lu(pu,t);return(0,W.jsx)(mu,{scope:t,forceMount:n,children:(0,W.jsx)(y,{present:n||a.open,children:(0,W.jsx)(j,{asChild:!0,container:i,children:r})})})};gu.displayName=pu;var _u=`TooltipContent`,vu=U.forwardRef((e,t)=>{let n=hu(_u,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=lu(_u,e.__scopeTooltip);return(0,W.jsx)(y,{present:r||o.open,children:o.disableHoverableContent?(0,W.jsx)(Cu,{side:i,...a,ref:t}):(0,W.jsx)(yu,{side:i,...a,ref:t})})}),yu=U.forwardRef((e,t)=>{let n=lu(_u,e.__scopeTooltip),r=au(_u,e.__scopeTooltip),i=U.useRef(null),a=S(t,i),[o,s]=U.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=U.useCallback(()=>{s(null),d(!1)},[d]),p=U.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Du(r,Eu(r,n.getBoundingClientRect())),a=Ou(t.getBoundingClientRect());s(Au([...i,...a])),d(!0)},[d]);return U.useEffect(()=>()=>f(),[f]),U.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),U.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!ku(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,W.jsx)(Cu,{...e,ref:a})}),[bu,xu]=Ql(su,{isInside:!1}),Su=c(`TooltipContent`),Cu=U.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=lu(_u,n),l=eu(n),{onClose:u}=c;return U.useEffect(()=>(document.addEventListener(ru,u),()=>document.removeEventListener(ru,u)),[u]),U.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,W.jsx)(v,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,W.jsxs)(O,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,W.jsx)(Su,{children:r}),(0,W.jsx)(bu,{scope:n,isInside:!0,children:(0,W.jsx)(Zn,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});vu.displayName=_u;var wu=`TooltipArrow`,Tu=U.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=eu(n);return xu(wu,n).isInside?null:(0,W.jsx)(T,{...i,...r,ref:t})});Tu.displayName=wu;function Eu(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function Du(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function Ou(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function ku(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Au(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0),ju(t)}function ju(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Mu=ou,Nu=uu,Pu=fu,Fu=gu,Iu=vu,Lu=Tu;function Ru({delayDuration:e=0,...t}){return(0,W.jsx)(Mu,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function zu({...e}){return(0,W.jsx)(Nu,{"data-slot":`tooltip`,...e})}function Bu({...e}){return(0,W.jsx)(Pu,{"data-slot":`tooltip-trigger`,...e})}function Vu({className:e,sideOffset:t=0,children:n,...r}){return(0,W.jsx)(Fu,{children:(0,W.jsxs)(Iu,{"data-slot":`tooltip-content`,sideOffset:t,className:z(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 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`,e),...r,children:[n,(0,W.jsx)(Lu,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}function Hu(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function Uu(e,t){let n=getComputedStyle(e.ownerDocument.body);return t*parseFloat(n.fontSize)}function Wu(e){return e/100*window.innerHeight}function Gu(e){return e/100*window.innerWidth}function Ku(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}function qu({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=Ku(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=Uu(t,i);break;case`em`:r=Hu(t,i);break;case`vh`:r=Wu(i);break;case`vw`:r=Gu(i);break}return r}function Ju(e){return parseFloat(e.toFixed(3))}function Yu({group:e}){let{orientation:t,panels:n}=e;return n.reduce((e,n)=>(e+=t===`horizontal`?n.element.offsetWidth:n.element.offsetHeight,e),0)}function Xu(e){let{panels:t}=e,n=Yu({group:e});return n===0?t.map(e=>({groupResizeBehavior:e.panelConstraints.groupResizeBehavior,collapsedSize:0,collapsible:e.panelConstraints.collapsible===!0,defaultSize:void 0,disabled:e.panelConstraints.disabled,minSize:0,maxSize:100,panelId:e.id})):t.map(e=>{let{element:t,panelConstraints:r}=e,i=0;r.collapsedSize!==void 0&&(i=Ju(qu({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=Ju(qu({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=Ju(qu({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=Ju(qu({groupSize:n,panelElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsible:r.collapsible===!0,defaultSize:a,disabled:r.disabled,minSize:o,maxSize:s,panelId:e.id}})}function Zu(e,t=`Assertion error`){if(!e)throw Error(t)}function Qu(e,t){return Array.from(t).sort(e===`horizontal`?$u:ed)}function $u(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function ed(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function td(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function nd(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function rd({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=nd(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return Zu(i,`No rect found`),i}var id;function ad(){return id===void 0&&(id=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),id}function od(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=Qu(n,Array.from(t.children).filter(td).map(e=>({element:e}))).map(({element:e})=>e),o=[],s=!1,c=!1,l=-1,u=-1,d=0,f,p=[];{let e=-1;for(let t of a)t.hasAttribute(`data-panel`)&&(e++,t.ariaDisabled===null&&(d++,l===-1&&(l=e),u=e))}if(d>1){let t=-1;for(let d of a)if(d.hasAttribute(`data-panel`)){t++;let i=r.find(e=>e.element===d);if(i){if(f){let r=f.element.getBoundingClientRect(),a=d.getBoundingClientRect(),m;if(c){let e=n===`horizontal`?new DOMRect(r.right,r.top,0,r.height):new DOMRect(r.left,r.bottom,r.width,0),t=n===`horizontal`?new DOMRect(a.left,a.top,0,a.height):new DOMRect(a.left,a.top,a.width,0);switch(p.length){case 0:m=[e,t];break;case 1:{let i=p[0];m=[i,rd({orientation:n,rects:[r,a],targetRect:i.element.getBoundingClientRect()})===r?t:e];break}default:m=p;break}}else m=p.length?p:[n===`horizontal`?new DOMRect(r.right,a.top,a.left-r.right,a.height):new DOMRect(a.left,r.bottom,a.width,a.top-r.bottom)];for(let n of m){let r=`width`in n?n:n.element.getBoundingClientRect(),a=ad()?e.resizeTargetMinimumSize.coarse:e.resizeTargetMinimumSize.fine;if(r.width<a){let e=a-r.width;r=new DOMRect(r.x-e/2,r.y,r.width+e,r.height)}if(r.height<a){let e=a-r.height;r=new DOMRect(r.x,r.y-e/2,r.width,r.height+e)}!s&&!(t<=l||t>u)&&o.push({group:e,groupSize:Yu({group:e}),panels:[f,i],separator:`width`in n?void 0:n,rect:r}),s=!1}}c=!1,f=i,p=[]}}else if(d.hasAttribute(`data-separator`)){d.ariaDisabled!==null&&(s=!0);let e=i.find(e=>e.element===d);e?p.push(e):(f=void 0,p=[])}else c=!0}return o}var sd=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0)if(n.length===1)n[0].call(null,t);else{let e=!1,r=null,i=Array.from(n);for(let n=0;n<i.length;n++){let a=i[n];try{a.call(null,t)}catch(t){r===null&&(e=!0,r=t)}}if(e)throw r}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},cd=new Map,ld=new sd;function ud(e){cd=new Map(cd),cd.delete(e)}function dd(e,t){for(let[t]of cd)if(t.id===e)return t}function fd(e,t){for(let[t,n]of cd)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function pd(){return cd}function md(e,t){return ld.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function hd(e,t){let n=cd.get(e);cd=new Map(cd),cd.set(e,t),ld.emit(`groupChange`,{group:e,prev:n,next:t})}function gd(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=nd(n,a.rect);switch(e){case`horizontal`:t.x<=i.x&&(r=a,i=t);break;case`vertical`:t.y<=i.y&&(r=a,i=t);break}}return r?{distance:i,hitRegion:r}:void 0}function _d(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function vd(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:Cd(e),b:Cd(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();Zu(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Sd(xd(n.a)),b:Sd(xd(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var yd=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function bd(e){let t=getComputedStyle(wd(e)??e).display;return t===`flex`||t===`inline-flex`}function Z(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||bd(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||yd.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function xd(e){let t=e.length;for(;t--;){let n=e[t];if(Zu(n,`Missing node`),Z(n))return n}return null}function Sd(e){return e&&Number(getComputedStyle(e).zIndex)||0}function Cd(e){let t=[];for(;e;)t.push(e),e=wd(e);return t}function wd(e){let{parentNode:t}=e;return _d(t)?t.host:t}function Td(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Ed({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!td(n)||n.contains(e)||e.contains(n))return!0;if(vd(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Td(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Dd(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=od(r),a=gd(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&Ed({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function Od(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function kd(e,t,n=0){return Math.abs(Ju(e)-Ju(t))<=n}function Ad(e,t){return kd(e,t)?0:e>t?1:-1}function jd({overrideDisabledPanels:e,panelConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsible:a,disabled:o,maxSize:s=100,minSize:c=0}=t;if(o&&!e)return n;if(Ad(r,c)<0)if(a){let e=(i+c)/2;r=Ad(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=Ju(r),r}function Md({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(kd(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;Zu(u!=null,`Invalid first pivot index`),Zu(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];Zu(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Zu(n!=null,`Previous layout not found for panel index ${t}`),kd(n,i)){let t=o-n;Ad(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];Zu(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(Zu(n!=null,`Previous layout not found for panel index ${t}`),kd(n,o)){let t=n-i;Ad(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];Zu(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&Ad(i,c)<0)if(e>0){let t=c-o,n=t/2;Ad(i+e,c)<0&&(e=Ad(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;Ad(i-e,c)<0&&(e=Ad(100+e,n)>0?0:-t)}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];Zu(e!=null,`Previous layout not found for panel index ${r}`);let a=jd({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];Zu(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=jd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!kd(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(Od(c,l))return i;{let t=e<0?d:u,r=s[t];Zu(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=jd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!kd(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];Zu(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=jd({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(kd(i,s)||(t-=s-i,l[r]=s),kd(t,0))break;e>0?r--:r++}}}if(!kd(Object.values(l).reduce((e,t)=>t+e,0),100,.1))return i;let p=Object.keys(i);return l.reduce((e,t,n)=>(e[p[n]]=t,e),{})}function Nd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||Ad(e[n],t[n])!==0)return!1;return!0}function Q({layout:e,panelConstraints:t}){let n=Object.values(e),r=[...n],i=r.reduce((e,t)=>e+t,0);if(r.length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${r.map(e=>`${e}%`).join(`, `)}`);if(!kd(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];Zu(t!=null,`No layout data found for index ${e}`),r[e]=100/i*t}let a=0;for(let e=0;e<t.length;e++){let i=n[e];Zu(i!=null,`No layout data found for index ${e}`);let o=r[e];Zu(o!=null,`No layout data found for index ${e}`);let s=jd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!kd(a,0))for(let e=0;e<t.length;e++){let n=r[e];Zu(n!=null,`No layout data found for index ${e}`);let i=n+a,o=jd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,kd(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Pd({groupId:e,panelId:t}){let n=()=>{let t=pd();for(let[n,{defaultLayoutDeferred:r,derivedPanelConstraints:i,layout:a,groupSize:o,separatorToPanels:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedPanelConstraints:i,group:n,groupSize:o,layout:a,separatorToPanels:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedPanelConstraints.find(e=>e.panelId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().group.panels.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=e=>{let r=a();if(e===r)return;let{defaultLayoutDeferred:i,derivedPanelConstraints:o,group:s,groupSize:c,layout:l,separatorToPanels:u}=n(),d=s.panels.findIndex(e=>e.id===t),f=d===s.panels.length-1,p=Q({layout:Md({delta:f?r-e:e-r,initialLayout:l,panelConstraints:o,pivotIndices:f?[d-1,d]:[d,d+1],prevLayout:l,trigger:`imperative-api`}),panelConstraints:o});Nd(l,p)||hd(s,{defaultLayoutDeferred:i,derivedPanelConstraints:o,groupSize:c,layout:p,separatorToPanels:u})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),s=a();e&&s!==t&&(n.expandToSize=s,o(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:s}=i(),c=a();if(e&&c===t){let e=s.expandToSize??n;e===0&&(e=1),o(e)}},getSize:()=>{let{group:e}=n(),t=a(),{element:r}=i();return{asPercentage:t,inPixels:e.orientation===`horizontal`?r.offsetWidth:r.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&kd(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=Yu({group:t});o(Ju(qu({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function Fd(e){e.defaultPrevented||Dd(e,pd()).forEach(t=>{if(t.separator){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Pd({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function Id(e){let t=pd();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function Ld({groupId:e}){let t=()=>{let t=pd();for(let[n,r]of t)if(n.id===e)return{group:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedPanelConstraints:r,group:i,groupSize:a,layout:o,separatorToPanels:s}=t(),c=Q({layout:e,panelConstraints:r});return n?o:(Nd(o,c)||hd(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Rd(e,t){let n=Id(e),r=fd(n.id,!0),i=n.separators.find(t=>t.element===e);Zu(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);Zu(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=Ld({groupId:n.id}).getLayout(),c=Q({layout:Md({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});Nd(s,c)||hd(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function zd(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Id(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Rd(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Rd(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Rd(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Rd(t,-5);break;case`End`:e.preventDefault(),Rd(t,100);break;case`Enter`:{e.preventDefault();let n=Id(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=fd(n.id,!0),o=n.separators.find(e=>e.element===t);Zu(o,`Matching separator not found`);let s=a.get(o);Zu(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(Zu(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];Rd(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=Id(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);Zu(r!==null,`Index not found`),n[e.shiftKey?r>0?r-1:n.length-1:r+1<n.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),Rd(t,-100);break}}var Bd={cursorFlags:0,state:`inactive`},Vd=new sd;function Hd(){return Bd}function Ud(e){return Vd.addListener(`change`,e)}function Wd(e){let t=Bd,n={...Bd};n.cursorFlags=e,Bd=n,Vd.emit(`change`,{prev:t,next:n})}function Gd(e){let t=Bd;Bd=e,Vd.emit(`change`,{prev:t,next:e})}function Kd(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=pd(),n=Dd(e,t),r=new Map,i=!1;n.forEach(e=>{e.separator&&(i||(i=!0,e.separator.element.focus({preventScroll:!0})));let n=t.get(e.group);n&&r.set(e.group,n.layout)}),Gd({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var qd=e=>e,Jd=()=>{},Yd=1,Xd=2,Zd=4,Qd=8,$d=3,ef=12,tf;function nf(){return tf===void 0&&(tf=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(tf=!0)),tf}function rf({cursorFlags:e,groups:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(!(r===0&&i===0)){switch(n){case`active`:if(e&&nf()){let t=(e&Yd)!==0,n=(e&Xd)!==0,r=(e&Zd)!==0,i=(e&Qd)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}break}return nf()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var af=new WeakMap;function of(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=af.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let r=Hd();switch(r.state){case`active`:case`hover`:{let e=rf({cursorFlags:r.cursorFlags,groups:r.hitRegions.map(e=>e.group),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}af.set(e,{prevStyle:t,styleSheet:n})}function sf({document:e,event:t,hitRegions:n,initialLayoutMap:r,mountedGroups:i,pointerDownAtPoint:a,prevCursorFlags:o}){let s=0;n.forEach(e=>{let{group:n,groupSize:o}=e,{orientation:c,panels:l}=n,{disableCursor:u}=n.mutableState,d=0;d=a?c===`horizontal`?(t.clientX-a.x)/o*100:(t.clientY-a.y)/o*100:c===`horizontal`?t.clientX<0?-100:100:t.clientY<0?-100:100;let f=r.get(n),p=i.get(n);if(!f||!p)return;let{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:_,separatorToPanels:v}=p;if(h&&_&&v){let t=Md({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(Nd(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?Yd:Xd;break;case`vertical`:s|=d<0?Zd:Qd;break}}else hd(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&$d:c|=s&$d,t.movementY===0?c|=o&ef:c|=s&ef,Wd(c),of(e)}function cf(e){let t=pd(),n=Hd();switch(n.state){case`active`:sf({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function lf(e){if(e.defaultPrevented)return;let t=Hd(),n=pd();switch(t.state){case`active`:if(e.buttons===0){Gd({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=fd(e.group.id,!0);hd(e.group,t)});return}sf({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=Dd(e,n);r.length===0?t.state!==`inactive`&&Gd({cursorFlags:0,state:`inactive`}):Gd({cursorFlags:0,hitRegions:r,state:`hover`}),of(e.currentTarget);break}}}function uf(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Hd().state){case`hover`:Gd({cursorFlags:0,state:`inactive`})}}function df(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=Hd();switch(t.state){case`active`:Gd({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(of(e.currentTarget),t.hitRegions.forEach(e=>{let t=fd(e.group.id,!0);hd(e.group,t)}),e.preventDefault())}}function ff(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=Ju(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=Ju((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function pf(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=Yu({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:Ju(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function mf(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function hf({group:e,nextGroupSize:t,prevGroupSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.panels){let e=r[l.id]??0;switch(l.panelConstraints.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=Ju(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e;break}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=Ju((r[e]??0)/a*l);else{let e=Ju(l/c.length);for(let t of c)u[t]=e}return u}function gf(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}var _f=new Map;function vf(e){let t=!0;Zu(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{for(let r of n){let{borderBoxSize:n,target:i}=r;if(i===e.element){if(t){let t=Yu({group:e});if(t===0)return;let n=fd(e.id);if(!n)return;let r=Xu(e),i=n.defaultLayoutDeferred?ff(r):n.layout,a=Q({layout:hf({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&Nd(n.layout,a)&&mf(n.derivedPanelConstraints,r)&&n.groupSize===t)return;hd(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else pf(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{Zu(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=Yu({group:e}),s=Xu(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(gf(e.panels,l)||(l=void 0));let u=Q({layout:e.mutableState.layouts[c]??l??ff(s),panelConstraints:s}),d=e.element.ownerDocument;_f.set(d,(_f.get(d)??0)+1);let f=new Map;return od(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),hd(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{Zu(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,zd)}),_f.get(d)===1&&(d.addEventListener(`dblclick`,Fd,!0),d.addEventListener(`pointerdown`,Kd,!0),d.addEventListener(`pointerleave`,cf),d.addEventListener(`pointermove`,lf),d.addEventListener(`pointerout`,uf),d.addEventListener(`pointerup`,df,!0)),function(){t=!1,_f.set(d,Math.max(0,(_f.get(d)??0)-1)),ud(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,zd)}),_f.get(d)||(d.removeEventListener(`dblclick`,Fd,!0),d.removeEventListener(`pointerdown`,Kd,!0),d.removeEventListener(`pointerleave`,cf),d.removeEventListener(`pointermove`,lf),d.removeEventListener(`pointerout`,uf),d.removeEventListener(`pointerup`,df,!0)),a.disconnect()}}function yf(){let[e,t]=(0,U.useState)({});return[e,(0,U.useCallback)(()=>t({}),[])]}function bf(e){let t=(0,U.useId)();return`${e??t}`}var xf=typeof window<`u`?U.useLayoutEffect:U.useEffect;function Sf(e){let t=(0,U.useRef)(e);return xf(()=>{t.current=e},[e]),(0,U.useCallback)((...e)=>t.current?.(...e),[t])}function Cf(...e){return Sf(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function wf(e){let t=(0,U.useRef)({...e});return xf(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var Tf=(0,U.createContext)(null);function Ef(e,t){let n=(0,U.useRef)({getLayout:()=>({}),setLayout:qd});(0,U.useImperativeHandle)(t,()=>n.current,[]),xf(()=>{Object.assign(n.current,Ld({groupId:e}))})}function Df({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizeTargetMinimumSize:d={coarse:20,fine:10},style:f,...p}){let m=(0,U.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=Sf(e=>{Nd(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=Sf(e=>{Nd(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e))}),_=bf(s),v=(0,U.useRef)(null),[y,b]=yf(),x=(0,U.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=Cf(v,a);Ef(_,o);let C=Sf((e,t)=>{let r=Hd(),i=dd(e),a=fd(e);if(a){let e=!1;switch(r.state){case`active`:e=r.hitRegions.some(e=>e.group===i);break}return{flexGrow:a.layout[t]??1,pointerEvents:e?`none`:void 0}}return{flexGrow:n?.[t]??1}}),w=wf({defaultLayout:n,disableCursor:r}),T=(0,U.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=Qu(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=Qu(u,[...t.separators,e]),b(),()=>{t.separators=t.separators.filter(t=>t!==e),b()}},togglePanelDisabled:(e,t)=>{let n=x.current.panels.find(t=>t.id===e);n&&(n.panelConstraints.disabled=t);let r=dd(_),i=fd(_);r&&i&&hd(r,{...i,derivedPanelConstraints:Xu(r)})},toggleSeparatorDisabled:(e,t)=>{let n=x.current.separators.find(t=>t.id===e);n&&(n.disabled=t)}}),[C,_,b,u,w]),E=(0,U.useRef)(null);return xf(()=>{let e=v.current;if(e===null)return;let t=x.current,n;if(w.defaultLayout!==void 0&&Object.keys(w.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=w.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:_,mutableState:{defaultLayout:n,disableCursor:!!w.disableCursor,expandedPanelSizes:x.current.lastExpandedPanelSizes,layouts:x.current.layouts},orientation:u,panels:t.panels,resizeTargetMinimumSize:t.resizeTargetMinimumSize,separators:t.separators};E.current=r;let a=vf(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=fd(r.id,!0);!o&&s.length>0&&(h(c),g(c));let l=md(_,e=>{let{defaultLayoutDeferred:t,derivedPanelConstraints:n,layout:i}=e.next;if(t||n.length===0)return;let a=r.panels.map(({id:e})=>e).join(`,`);r.mutableState.layouts[a]=i,n.forEach(t=>{if(t.collapsible){let{layout:n}=e.prev??{};if(n){let e=kd(t.collapsedSize,i[t.panelId]),a=kd(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=Hd().state!==`active`;h(i),o&&g(i)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,U.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,W.jsx)(Tf.Provider,{value:T,children:(0,W.jsx)(`div`,{...p,className:t,"data-group":!0,"data-testid":_,id:_,ref:S,style:{height:`100%`,width:`100%`,overflow:`hidden`,...f,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:e})})}Df.displayName=`Group`;function Of(){let e=(0,U.useContext)(Tf);return Zu(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function kf(e,t){let{id:n}=Of(),r=(0,U.useRef)({collapse:Jd,expand:Jd,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Jd});(0,U.useImperativeHandle)(t,()=>r.current,[]),xf(()=>{Object.assign(r.current,Pd({groupId:n,panelId:e}))})}function Af({children:e,className:t,collapsedSize:n=`0%`,collapsible:r=!1,defaultSize:i,disabled:a,elementRef:o,groupResizeBehavior:s=`preserve-relative-size`,id:c,maxSize:l=`100%`,minSize:u=`0%`,onResize:d,panelRef:f,style:p,...m}){let h=!!c,g=bf(c),_=wf({disabled:a}),v=(0,U.useRef)(null),y=Cf(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,togglePanelDisabled:w}=Of(),T=d!==null,E=Sf((e,t,n)=>{d?.(e,c,n)});xf(()=>{let e=v.current;if(e!==null)return C({element:e,id:g,idIsStable:h,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:T?E:void 0,panelConstraints:{groupResizeBehavior:s,collapsedSize:n,collapsible:r,defaultSize:i,disabled:_.disabled,maxSize:l,minSize:u}})},[s,n,r,i,T,g,h,l,u,E,C,_]),(0,U.useEffect)(()=>{w(g,!!a)},[a,g,w]),kf(g,f);let D=(0,U.useSyncExternalStore)(e=>md(x,e),()=>JSON.stringify(b(x,g)),()=>JSON.stringify(b(x,g)));return(0,W.jsx)(`div`,{...m,"aria-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...jf,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...JSON.parse(D)},children:(0,W.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}Af.displayName=`Panel`;var jf={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function Mf({layout:e,panelConstraints:t,panelId:n,panelIndex:r}){let i,a,o=e[n],s=t.find(e=>e.panelId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=Q({layout:Md({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Q({layout:Md({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function Nf({children:e,className:t,disabled:n,elementRef:r,id:i,style:a,...o}){let s=bf(i),c=wf({disabled:n}),[l,u]=(0,U.useState)({}),[d,f]=(0,U.useState)(`inactive`),p=(0,U.useRef)(null),m=Cf(p,r),{disableCursor:h,id:g,orientation:_,registerSeparator:v,toggleSeparatorDisabled:y}=Of(),b=_===`horizontal`?`vertical`:`horizontal`;xf(()=>{let e=p.current;if(e!==null){let t={disabled:c.disabled,element:e,id:s},n=v(t),r=Ud(e=>{f(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=md(g,e=>{let{derivedPanelConstraints:n,layout:r,separatorToPanels:i}=e.next,a=i.get(t);if(a){let e=a[0],t=a.indexOf(e);u(Mf({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[g,s,v,c]),(0,U.useEffect)(()=>{y(s,!!n)},[n,s,y]);let x;return n&&!h&&(x=`not-allowed`),(0,W.jsx)(`div`,{...o,"aria-controls":l.valueControls,"aria-disabled":n||void 0,"aria-orientation":b,"aria-valuemax":l.valueMax,"aria-valuemin":l.valueMin,"aria-valuenow":l.valueNow,children:e,className:t,"data-separator":n?`disabled`:d,"data-testid":s,id:s,ref:m,role:`separator`,style:{flexBasis:`auto`,cursor:x,...a,flexGrow:0,flexShrink:0,touchAction:`none`},tabIndex:n?void 0:0})}Nf.displayName=`Separator`;var Pf=`ppm-custom-order`;function Ff(){try{let e=localStorage.getItem(Pf);return e?JSON.parse(e):null}catch{return null}}function If(e){try{localStorage.setItem(Pf,JSON.stringify(e))}catch{}}function Lf(e,t){if(!t)return[...e];let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.name)??1/0)-(n.get(t.name)??1/0))}var Rf=ae((e,t)=>({projects:[],activeProject:null,customOrder:Ff(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{e({projects:await V.get(`/api/projects`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to fetch projects`,loading:!1})}},setActiveProject:t=>{e({activeProject:t})},addProject:async(n,r)=>{let i=await V.post(`/api/projects`,{path:n,name:r});await t().fetchProjects();let a=t().projects.find(e=>e.name===(r??i.name)||e.path===n);return a&&e({activeProject:a}),i},setProjectColor:async(e,n)=>{await V.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:n}),await t().fetchProjects()},moveProject:async(n,r)=>{let{projects:i,customOrder:a}=t(),o=Lf(i,a),s=o.findIndex(e=>e.name===n);if(s===-1)return;let c=r===`up`?s-1:s+1;if(c<0||c>=o.length)return;let l=o.map(e=>e.name);[l[s],l[c]]=[l[c],l[s]],If(l),await V.patch(`/api/projects/reorder`,{order:l}),e({customOrder:l})},reorderProjects:async t=>{If(t),e({customOrder:t}),await V.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,n)=>{await V.patch(`/api/projects/${encodeURIComponent(e)}`,{name:n}),await t().fetchProjects()},deleteProject:async t=>{await V.del(`/api/projects/${encodeURIComponent(t)}`),e(e=>{let n=e.projects.filter(e=>e.name!==t),r=e.customOrder?e.customOrder.filter(e=>e!==t):null;return r&&If(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}})),zf=`application/ppm-tab`,Bf=!1,Vf=new Set;function Hf(e){Bf!==e&&(Bf=e,Vf.forEach(e=>e()))}function Uf(){return(0,U.useSyncExternalStore)(e=>(Vf.add(e),()=>Vf.delete(e)),()=>Bf)}function Wf(){Hf(!1)}function Gf(e){let[t,n]=(0,U.useState)(null),r=(0,U.useRef)(null);return{dropIndex:t,handleDragStart:(0,U.useCallback)((t,n)=>{let r={tabId:n,panelId:e};t.dataTransfer.setData(zf,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`,requestAnimationFrame(()=>Hf(!0))},[e]),handleDragOver:(0,U.useCallback)((e,t,i)=>{if(!e.dataTransfer.types.includes(`application/ppm-tab`)||(e.preventDefault(),e.dataTransfer.dropEffect=`move`,r.current===t))return;r.current=t;let a=e.currentTarget.getBoundingClientRect(),o=a.left+a.width/2;n(e.clientX<o?i:i+1)},[]),handleDragOverBar:(0,U.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},[]),handleDrop:(0,U.useCallback)(i=>{i.preventDefault(),Hf(!1);let a=i.dataTransfer.getData(zf);if(a){try{let n=JSON.parse(a),r=F.getState();n.panelId===e?t!==null&&r.reorderTab(n.tabId,e,t):r.moveTab(n.tabId,n.panelId,e,t??void 0)}catch{}n(null),r.current=null}},[e,t]),handleDragEnd:(0,U.useCallback)(()=>{Hf(!1),n(null),r.current=null},[])}}var Kf=null,qf=null,Jf=0,Yf=new Set;function Xf(){Yf.forEach(e=>e())}function Zf(){return(0,U.useSyncExternalStore)(e=>(Yf.add(e),()=>Yf.delete(e)),()=>qf)}function Qf(){return Date.now()-Jf<300}var $f=null;function ep(e,t,n){let r=document.createElement(`div`);r.id=`touch-drag-ghost`,Object.assign(r.style,{position:`fixed`,zIndex:`9999`,pointerEvents:`none`,padding:`6px 14px`,borderRadius:`8px`,background:`rgba(30,30,30,0.92)`,color:`#fff`,fontSize:`12px`,whiteSpace:`nowrap`,opacity:`0.95`,boxShadow:`0 4px 16px rgba(0,0,0,0.35)`,transform:`translate(-50%, -130%)`,left:`${t}px`,top:`${n}px`}),r.textContent=e,document.body.appendChild(r),$f=r}function tp(e,t){$f&&($f.style.left=`${e}px`,$f.style.top=`${t}px`)}function np(){$f?.remove(),$f=null}function rp(e,t){$f&&($f.style.display=`none`);let n=document.elementFromPoint(e,t);$f&&($f.style.display=``);let r=n?.closest(`[data-panel-drop-zone]`);if(!r)return null;let i=r.dataset.panelDropZone,a=r.getBoundingClientRect(),o=(e-a.left)/a.width,s=(t-a.top)/a.height,c=.25,{grid:l}=F.getState(),u=window.innerWidth<768,d=P(l,i),f=d?!u&&(l[d.row]?.length??0)<ie(!1):!1,p=!u&&l.length<3,m=`center`;return o<c&&f?m=`left`:o>1-c&&f?m=`right`:s<c&&p?m=`top`:s>1-c&&p&&(m=`bottom`),{panelId:i,zone:m}}function ip(e){if(!Kf)return;e.preventDefault();let t=e.touches[0];if(!t)return;tp(t.clientX,t.clientY);let n=rp(t.clientX,t.clientY);(n?.panelId!==qf?.panelId||n?.zone!==qf?.zone)&&(qf=n,Xf())}function ap(){Kf=null,qf=null,Xf(),np(),Wf(),document.removeEventListener(`touchmove`,ip),document.removeEventListener(`touchend`,op),document.removeEventListener(`touchcancel`,sp)}function op(){let e=Kf,t=qf;if(ap(),Jf=Date.now(),!e||!t)return;let n=F.getState();if(t.zone===`center`)e.panelId!==t.panelId&&n.moveTab(e.tabId,e.panelId,t.panelId);else{let r=t.zone===`top`?`up`:t.zone===`bottom`?`down`:t.zone;n.splitPanel(r,e.tabId,e.panelId,t.panelId)}}function sp(){ap(),Jf=Date.now()}function cp(e,t,n,r){Kf=e,Hf(!0),ep(t,n,r),document.addEventListener(`touchmove`,ip,{passive:!1}),document.addEventListener(`touchend`,op),document.addEventListener(`touchcancel`,sp)}var lp=200,up=10;function dp(e){let t=(0,U.useRef)(null),n=(0,U.useRef)(null),r=(0,U.useRef)(!1);return{handleTouchStart:(0,U.useCallback)((i,a,o)=>{let s=i.touches[0];s&&(n.current={x:s.clientX,y:s.clientY},r.current=!1,t.current=setTimeout(()=>{r.current=!0,cp({tabId:a,panelId:e},o,n.current.x,n.current.y)},lp))},[e]),handleTouchMove:(0,U.useCallback)(e=>{if(r.current||!n.current||!t.current)return;let i=e.touches[0];i&&(Math.abs(i.clientX-n.current.x)>up||Math.abs(i.clientY-n.current.y)>up)&&(clearTimeout(t.current),t.current=null)},[]),handleTouchEnd:(0,U.useCallback)(()=>{t.current&&=(clearTimeout(t.current),null)},[])}}var fp=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent),pp=[{id:`command-palette`,label:`Command Palette`,category:`general`,defaultKey:`F1`,note:`Shift+Shift also opens (not customizable)`},{id:`toggle-sidebar`,label:`Toggle Sidebar`,category:`general`,defaultKey:`Mod+B`},{id:`save-prevent`,label:`Prevent Save Dialog`,category:`general`,defaultKey:`Mod+S`,locked:!0,note:`Always active — prevents browser save`},{id:`next-tab`,label:`Next Tab`,category:`tabs`,defaultKey:`Alt+]`},{id:`prev-tab`,label:`Previous Tab`,category:`tabs`,defaultKey:`Alt+[`},{id:`open-chat`,label:`Open Chat`,category:`tabs`,defaultKey:`Mod+L`},{id:`open-terminal`,label:`Open Terminal`,category:`tabs`,defaultKey:`Mod+'`},{id:`open-settings`,label:`Open Settings`,category:`tabs`,defaultKey:`Mod+,`},{id:`open-git-graph`,label:`Git Graph`,category:`tabs`,defaultKey:`Mod+G`},{id:`open-git-status`,label:`Git Status (sidebar)`,category:`tabs`,defaultKey:`Mod+Shift+E`},{id:`open-search`,label:`Search Files (sidebar)`,category:`tabs`,defaultKey:`Mod+Shift+F`},{id:`voice-input`,label:`Voice Input`,category:`general`,defaultKey:`Mod+Shift+V`,note:`Toggle speech-to-text in chat`},...Array.from({length:9},(e,t)=>({id:`switch-project-${t+1}`,label:`Switch to Project ${t+1}`,category:`projects`,defaultKey:`Mod+${t+1}`}))],mp=new Map(pp.map(e=>[e.id,e.defaultKey]));function hp(e){let t=e.split(`+`),n={ctrl:!1,meta:!1,alt:!1,shift:!1,key:``};for(let e of t){let t=e.trim();switch(t){case`Mod`:fp?n.meta=!0:n.ctrl=!0;break;case`Ctrl`:n.ctrl=!0;break;case`Meta`:case`Cmd`:n.meta=!0;break;case`Alt`:n.alt=!0;break;case`Shift`:n.shift=!0;break;default:n.key=t.toLowerCase();break}}return n}function gp(e,t){return e.ctrlKey!==t.ctrl||e.metaKey!==t.meta||e.altKey!==t.alt||e.shiftKey!==t.shift?!1:e.key.toLowerCase()===t.key}function _p(e){return e.replace(/Mod/g,fp?`⌘`:`Ctrl`).replace(/Shift/g,fp?`⇧`:`Shift`).replace(/Alt/g,fp?`⌥`:`Alt`).replace(/Meta|Cmd/g,`⌘`).replace(/Ctrl/g,fp?`⌃`:`Ctrl`)}function vp(e){if([`Control`,`Meta`,`Alt`,`Shift`].includes(e.key))return null;let t=[];e.ctrlKey&&!e.metaKey&&t.push(fp?`Ctrl`:`Mod`),e.metaKey&&t.push(fp?`Mod`:`Meta`),e.altKey&&t.push(`Alt`),e.shiftKey&&t.push(`Shift`);let n=e.key;return n===` `?n=`Space`:n.length===1&&(n=n.toUpperCase()),t.push(n),t.join(`+`)}var yp=ae((e,t)=>({overrides:{},loaded:!1,getBinding:e=>t().overrides[e]??mp.get(e)??``,matchesEvent:(e,n)=>{let r=t().getBinding(n);return r?gp(e,hp(r)):!1},setBinding:(n,r)=>{e({overrides:{...t().overrides,[n]:r}}),V.put(`/api/settings/keybindings`,{[n]:r}).catch(()=>{})},resetBinding:n=>{let r={...t().overrides};delete r[n],e({overrides:r}),V.put(`/api/settings/keybindings`,{[n]:null}).catch(()=>{})},resetAll:()=>{e({overrides:{}});let n={};for(let e of Object.keys(t().overrides))n[e]=null;Object.keys(n).length>0&&V.put(`/api/settings/keybindings`,n).catch(()=>{})},loadFromServer:async()=>{try{e({overrides:await V.get(`/api/settings/keybindings`),loaded:!0})}catch{e({loaded:!0})}}}));function bp(e){window.dispatchEvent(new CustomEvent(`open-command-palette`,{detail:e}))}function xp(){let[e,t]=(0,U.useState)(!1),[n,r]=(0,U.useState)(``);return(0,U.useEffect)(()=>{let e=0,n=!1,{matchesEvent:i}=yp.getState(),a=!1;function o(){a=!0}function s(){a=!1}function c(i){if(i.type===`keydown`&&i.key===`Shift`){n=!0;return}if(i.type===`keydown`&&i.shiftKey&&(n=!1),i.type===`keydown`&&i.key!==`Shift`&&(e=0),i.type===`keyup`&&i.key===`Shift`&&n&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&!a&&!i.isComposing){let n=Date.now();if(n-e<400){e=0,r(``),t(!0);return}e=n;return}if(i.type!==`keydown`||a||i.isComposing)return;let{matchesEvent:o}=yp.getState();if(o(i,`save-prevent`)){i.preventDefault();return}if(o(i,`command-palette`)){i.preventDefault(),r(``),t(!0);return}if(o(i,`toggle-sidebar`)){i.preventDefault(),Kn.getState().toggleSidebar();return}if(o(i,`next-tab`)||o(i,`prev-tab`)){i.preventDefault();let{tabs:e,activeTabId:t,setActiveTab:n}=R.getState();if(e.length<2)return;let r=e.findIndex(e=>e.id===t);n(e[o(i,`next-tab`)?(r+1)%e.length:(r-1+e.length)%e.length].id);return}for(let e of[{action:`open-chat`,type:`chat`,title:`AI Chat`},{action:`open-terminal`,type:`terminal`,title:`Terminal`},{action:`open-git-graph`,type:`git-graph`,title:`Git Graph`}])if(o(i,e.action)){i.preventDefault();let t=Rf.getState().activeProject;R.getState().openTab({type:e.type,title:e.title,projectId:t?.name??null,metadata:t?{projectName:t.name}:void 0,closable:!0});return}if(o(i,`open-settings`)){i.preventDefault();let e=Kn.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`settings`);return}if(o(i,`open-git-status`)){i.preventDefault();let e=Kn.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`git`);return}if(o(i,`voice-input`)){i.preventDefault(),window.dispatchEvent(new CustomEvent(`toggle-voice-input`));return}if(o(i,`open-search`)){i.preventDefault();let e=Kn.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`search`);return}for(let e=1;e<=9;e++)if(o(i,`switch-project-${e}`)){i.preventDefault();let t=Rf.getState().projects[e-1];t&&(Rf.getState().setActiveProject(t),R.getState().switchProject(t.name));return}}function l(e){let n=e.detail;r(typeof n==`string`?n:``),t(!0)}return window.addEventListener(`keydown`,c),window.addEventListener(`keyup`,c),window.addEventListener(`compositionstart`,o),window.addEventListener(`compositionend`,s),window.addEventListener(`open-command-palette`,l),()=>{window.removeEventListener(`keydown`,c),window.removeEventListener(`keyup`,c),window.removeEventListener(`compositionstart`,o),window.removeEventListener(`compositionend`,s),window.removeEventListener(`open-command-palette`,l)}},[]),{paletteOpen:e,paletteInitialQuery:n,closePalette:(0,U.useCallback)(()=>{t(!1),r(``)},[])}}var Sp={approval_request:`bg-red-500`,question:`bg-amber-500`,done:`bg-blue-500`},Cp={done:0,question:1,approval_request:2};function wp(e){return e&&Sp[e]||`bg-red-500`}var Tp=ae()(e=>({notifications:new Map,addNotification:(t,n,r)=>{e(e=>{let i=new Map(e.notifications),a=i.get(t);return i.set(t,{count:(a?.count??0)+1,type:n,projectName:r}),{notifications:i}})},clearForSession:t=>{e(e=>{if(!e.notifications.has(t))return e;let n=new Map(e.notifications);return n.delete(t),{notifications:n}})},clearAll:()=>e({notifications:new Map})}));function Ep(e){let t=0;for(let[,n]of e.notifications)t+=n.count;return t}function Dp(e){return t=>{let n=null,r=-1;for(let[,i]of t.notifications){if(i.projectName!==e)continue;let t=Cp[i.type]??0;t>r&&(r=t,n=i.type)}return n}}function Op(e){let[t,n]=(0,U.useState)(!1),[r,i]=(0,U.useState)(!1),a=(0,U.useCallback)(()=>{let t=e.current;t&&(n(t.scrollLeft>1),i(t.scrollLeft+t.clientWidth<t.scrollWidth-1))},[e]);return(0,U.useEffect)(()=>{let t=e.current;if(!t)return;a(),t.addEventListener(`scroll`,a,{passive:!0});let n=new ResizeObserver(a);n.observe(t);let r=new MutationObserver(a);return r.observe(t,{childList:!0,subtree:!0}),()=>{t.removeEventListener(`scroll`,a),n.disconnect(),r.disconnect()}},[e,a]),{canScrollLeft:t,canScrollRight:r,scrollLeft:(0,U.useCallback)(()=>{e.current?.scrollBy({left:-150,behavior:`smooth`})},[e]),scrollRight:(0,U.useCallback)(()=>{e.current?.scrollBy({left:150,behavior:`smooth`})},[e])}}var kp={done:0,question:1,approval_request:2};function Ap(e,t,n,r){if(!e)return{left:null,right:null};let i=e.scrollLeft,a=i+e.clientWidth,o=null,s=-1,c=null,l=-1,u=e.getBoundingClientRect();for(let d of n){if(d.type!==`chat`)continue;let n=d.metadata?.sessionId,f=n?r.get(n):void 0;if(!f||f.count===0)continue;let p=t.get(d.id);if(!p)continue;let m=p.getBoundingClientRect(),h=m.left-u.left+e.scrollLeft,g=h+m.width,_=kp[f.type]??0;g<=i&&_>s&&(s=_,o=f.type),h>=a&&_>l&&(l=_,c=f.type)}return{left:o,right:c}}function jp(e){let t=/^#([0-9a-fA-F]{6})$/.exec(e.trim());if(!t)return null;let n=parseInt(t[1],16);return{r:n>>16&255,g:n>>8&255,b:n&255}}function Mp(e,t,n){let[r,i,a]=[e,t,n].map(e=>{let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4});return .2126*r+.7152*i+.0722*a}function Np(e){let t=jp(e);return t?Mp(t.r,t.g,t.b)<.4:!1}function Pp({tab:e,isActive:t,icon:n,showDropBefore:r,notificationType:i,onSelect:a,onClose:o,onDragStart:s,onDragOver:c,onDragEnd:l,onTouchStart:u,onTouchMove:d,onTouchEnd:f,tabRef:p,onRename:m}){let[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(e.title),y=(0,U.useRef)(null);(0,U.useEffect)(()=>{h&&(v(e.title),setTimeout(()=>y.current?.select(),0))},[h]);let b=()=>{g(!1);let t=_.trim();t&&t!==e.title&&m&&m(t)},x=e.metadata?.connectionColor,S=x?{backgroundColor:t?x:`${x}33`,color:t&&Np(x)?`#fff`:void 0}:void 0;return(0,W.jsxs)(`div`,{className:`relative flex items-center`,children:[r&&(0,W.jsx)(`div`,{className:`absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-full z-10`}),(0,W.jsxs)(`button`,{ref:p,"data-tab-item":!0,draggable:!h,onClick:a,onAuxClick:t=>{t.button===1&&e.closable&&(t.preventDefault(),o())},onDragStart:s,onDragOver:c,onDragEnd:l,onTouchStart:u,onTouchMove:d,onTouchEnd:f,style:S,className:z(`group flex items-center gap-1 px-3 h-10 whitespace-nowrap text-xs transition-colors`,`border-b-2 -mb-px cursor-grab active:cursor-grabbing`,!S&&(t?`border-primary text-primary`:`border-transparent text-text-secondary hover:text-foreground`),S&&`border-transparent`),children:[(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(n,{className:`size-4`}),i&&!t&&(0,W.jsx)(`span`,{className:z(`absolute -top-1 -right-1 size-2 rounded-full`,wp(i))})]}),h?(0,W.jsx)(`input`,{ref:y,value:_,onChange:e=>v(e.target.value),onBlur:b,onKeyDown:e=>{e.key===`Enter`&&b(),e.key===`Escape`&&g(!1),e.stopPropagation()},onClick:e=>e.stopPropagation(),className:`max-w-[120px] bg-surface-elevated text-xs px-1 py-0.5 rounded border border-border outline-none focus:border-primary`,autoFocus:!0}):(0,W.jsx)(`span`,{className:`max-w-[120px] truncate`,onDoubleClick:e=>{m&&(e.stopPropagation(),g(!0))},children:e.title}),e.closable&&!h&&(0,W.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),o()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),o())},className:`ml-1 can-hover:opacity-0 can-hover:group-hover:opacity-100 rounded-sm hover:bg-surface-elevated p-0.5 transition-opacity`,children:(0,W.jsx)(rn,{className:`size-3`})})]})]})}var Fp={terminal:Yt,chat:vt,editor:qe,database:He,sqlite:He,postgres:He,"git-graph":rt,"git-diff":Je,settings:Gt,browser:at,"extension-webview":It};function Ip({panelId:e}){Rf(e=>e.activeProject);let t=(0,U.useRef)(new Map),n=(0,U.useRef)(null),r=(0,U.useRef)(0),i=F(t=>e?t.panels[e]:t.panels[t.focusedPanelId]),o=i?.tabs??[],s=i?.activeTabId??null,c=i?.id??F.getState().focusedPanelId,{dropIndex:l,handleDragStart:u,handleDragOver:d,handleDragOverBar:f,handleDrop:p,handleDragEnd:m}=Gf(c),{handleTouchStart:h,handleTouchMove:g,handleTouchEnd:_}=dp(c),v=Tp(e=>e.notifications),{canScrollLeft:y,canScrollRight:b,scrollLeft:x,scrollRight:S}=Op(n),C=Ap(n.current,t.current,o,v);(0,U.useEffect)(()=>{if(o.length>r.current&&s){let e=t.current.get(s);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})}r.current=o.length},[o.length,s]);let w=(0,U.useCallback)((e,t)=>{R.getState().updateTab(e.id,{title:t});let n=e.metadata?.projectName,r=e.metadata?.sessionId;n&&r&&V.patch(`${B(n)}/chat/sessions/${r}`,{title:t}).catch(()=>{})},[]);function T(e){e.target.closest(`[data-tab-item]`)||bp()}function E(e){e.target.closest(`[data-tab-item]`)||(e.preventDefault(),bp())}return(0,W.jsxs)(`div`,{className:`hidden md:flex items-center h-10 border-b border-border bg-background relative`,onDragOver:f,onDrop:p,onDoubleClick:T,onContextMenu:E,children:[y&&(0,W.jsx)(`button`,{onClick:x,className:`absolute left-0 z-10 flex items-center justify-center size-8 bg-gradient-to-r from-background via-background to-transparent`,children:(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(Me,{className:`size-4 text-text-secondary`}),C.left&&(0,W.jsx)(`span`,{className:z(`absolute -top-1 -right-0.5 size-2 rounded-full`,wp(C.left))})]})}),(0,W.jsx)(`div`,{ref:n,className:`flex-1 overflow-x-auto overflow-y-hidden min-w-0 scrollbar-none`,children:(0,W.jsxs)(`div`,{className:`flex items-center h-10`,children:[o.map((e,n)=>{let r=e.type===`chat`?e.metadata?.sessionId:void 0,i=r?v.get(r):void 0,a=i&&i.count>0?i.type:null;return(0,W.jsx)(Pp,{tab:e,isActive:e.id===s,icon:Fp[e.type],showDropBefore:l===n,notificationType:a,onSelect:()=>{Qf()||(F.getState().setActiveTab(e.id,c),r&&Tp.getState().clearForSession(r))},onClose:()=>F.getState().closeTab(e.id,c),onDragStart:t=>u(t,e.id),onDragOver:t=>d(t,e.id,n),onDragEnd:m,onTouchStart:t=>h(t,e.id,e.title),onTouchMove:g,onTouchEnd:_,tabRef:n=>{n?t.current.set(e.id,n):t.current.delete(e.id)},onRename:e.type===`chat`?t=>w(e,t):void 0},e.id)}),l!==null&&l>=o.length&&(0,W.jsx)(`div`,{className:`w-0.5 h-6 bg-primary rounded-full`}),(0,W.jsx)(`button`,{onClick:()=>bp(),title:`Open command palette (Shift+Shift)`,className:`flex items-center justify-center size-10 shrink-0 sticky right-0 border-b-2 border-transparent text-text-secondary hover:text-foreground transition-colors bg-background`,children:(0,W.jsx)(Nt,{className:`size-4`})})]})}),b&&(0,W.jsx)(`button`,{onClick:S,className:`absolute right-10 z-10 flex items-center justify-center size-8 bg-gradient-to-l from-background via-background to-transparent`,children:(0,W.jsxs)(`span`,{className:`relative`,children:[(0,W.jsx)(a,{className:`size-4 text-text-secondary`}),C.right&&(0,W.jsx)(`span`,{className:z(`absolute -top-1 -left-0.5 size-2 rounded-full`,wp(C.right))})]})})]})}function Lp({panelId:e}){let[t,n]=(0,U.useState)(null),r=Uf(),i=Zf(),a=(i?.panelId===e?i.zone:null)??t,o=F(e=>e.grid),s=F(e=>e.isMobile()),c=P(o,e),l=!s&&o.length<3,u=c?!s&&(o[c.row]?.length??0)<ie(!1):!1,d=(0,U.useCallback)(e=>{let t=e.currentTarget.getBoundingClientRect(),n=(e.clientX-t.left)/t.width,r=(e.clientY-t.top)/t.height,i=.25;return n<i&&u?`left`:n>1-i&&u?`right`:r<i&&l?`top`:r>1-i&&l?`bottom`:`center`},[u,l]),f=(0,U.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.stopPropagation(),n(d(e)))},[d]),p=(0,U.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||n(null)},[]),m=(0,U.useCallback)(t=>{t.preventDefault(),t.stopPropagation();let r=d(t);if(n(null),Wf(),!r)return;let i=t.dataTransfer.getData(zf);if(i)try{let t=JSON.parse(i),n=F.getState();if(r===`center`)t.panelId!==e&&n.moveTab(t.tabId,t.panelId,e);else{let i=r===`top`?`up`:r===`bottom`?`down`:r;n.splitPanel(i,t.tabId,t.panelId,e)}}catch{}},[d,e]);return r?(0,W.jsxs)(`div`,{className:`absolute inset-0 z-20`,onDragOver:f,onDragLeave:p,onDrop:m,children:[a===`left`&&(0,W.jsx)(`div`,{className:`absolute inset-y-0 left-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-l-md`}),a===`right`&&(0,W.jsx)(`div`,{className:`absolute inset-y-0 right-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-r-md`}),a===`top`&&(0,W.jsx)(`div`,{className:`absolute inset-x-0 top-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-t-md`}),a===`bottom`&&(0,W.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-b-md`}),a===`center`&&(0,W.jsx)(`div`,{className:`absolute inset-0 bg-primary/5 border-2 border-dashed border-primary/30 rounded-md`})]}):null}var Rp=[{type:`terminal`,label:`Terminal`,icon:Yt},{type:`chat`,label:`AI Chat`,icon:vt},{type:`git-graph`,label:`Git Graph`,icon:rt}],zp={terminal:(0,U.lazy)(()=>oe(()=>import(`./terminal-tab-Bjdfnbmn.js`).then(e=>({default:e.TerminalTab})),__vite__mapDeps([3,1,4,5,6,7]))),chat:(0,U.lazy)(()=>oe(()=>import(`./chat-tab-Bej84Yuh.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([8,1,9,10,11,12,6,13,5,14,15,16,17,18,19,4,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,38,39,0]))),editor:(0,U.lazy)(()=>oe(()=>import(`./code-editor-BBdXEMHh.js`).then(e=>({default:e.CodeEditor})),__vite__mapDeps([40,1,9,10,11,12,6,13,5,14,15,16,17,18,19,41,4,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,42]))),database:(0,U.lazy)(()=>oe(()=>import(`./database-viewer-IBzgLkgl.js`).then(e=>({default:e.DatabaseViewer})),__vite__mapDeps([43,1,44,5,6,45,21,12,2]))),sqlite:(0,U.lazy)(()=>oe(()=>import(`./sqlite-viewer-B6ugkvON.js`).then(e=>({default:e.SqliteViewer})),__vite__mapDeps([46,1,44,5,6,45,21,12,42,2]))),postgres:(0,U.lazy)(()=>oe(()=>import(`./postgres-viewer-icIN9Fd9.js`).then(e=>({default:e.PostgresViewer})),__vite__mapDeps([47,1,44,5,6,45,21,12,42,2]))),"git-graph":(0,U.lazy)(()=>oe(()=>import(`./git-graph-CK3PuYrZ.js`).then(e=>({default:e.GitGraph})),__vite__mapDeps([48,1,11,12,6,13,5,4,24,25,39,2]))),"git-diff":(0,U.lazy)(()=>oe(()=>import(`./diff-viewer-O0Cw2ozL.js`).then(e=>({default:e.DiffViewer})),__vite__mapDeps([49,1,41,12,6,38,5,2]))),settings:(0,U.lazy)(()=>oe(()=>import(`./settings-tab-DDEYO_L1.js`).then(e=>({default:e.SettingsTab})),__vite__mapDeps([50,11,1,12,6,13,5,2,0]))),browser:(0,U.lazy)(()=>oe(()=>import(`./browser-tab-1r4MVZg5.js`).then(e=>({default:e.BrowserTab})),__vite__mapDeps([51,1,24,4,12,6,25,5,2]))),"extension-webview":(0,U.lazy)(()=>oe(()=>import(`./extension-webview-BFEbUjma.js`).then(e=>({default:e.ExtensionWebview})),__vite__mapDeps([52,1,5,6])))};function Bp({panelId:e,projectName:t}){let n=F(t=>t.panels[e]),r=F(t=>t.focusedPanelId===e),i=F(e=>(e.currentProject===t?e.grid:e.projectGrids[t]??[[]]).flat().length);return n?(0,W.jsxs)(`div`,{className:z(`flex flex-col h-full overflow-hidden`,i>1&&`border border-transparent`,i>1&&r&&`border-primary/30`),onMouseDown:()=>{F.getState().focusedPanelId!==e&&F.getState().setFocusedPanel(e)},children:[(0,W.jsx)(Ip,{panelId:e}),(0,W.jsxs)(`div`,{className:`flex-1 overflow-hidden relative`,"data-panel-drop-zone":e,children:[n.tabs.length===0?(0,W.jsx)(Wp,{panelId:e}):n.tabs.map(e=>{let t=zp[e.type];return(0,W.jsx)(`div`,{className:e.id===n.activeTabId?`h-full w-full`:`hidden`,children:(0,W.jsx)(U.Suspense,{fallback:(0,W.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,W.jsx)(H,{className:`size-6 animate-spin text-primary`})}),children:(0,W.jsx)(t,{metadata:e.metadata,tabId:e.id})})},e.id)}),(0,W.jsx)(Lp,{panelId:e})]})]}):null}function Vp(e){try{let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`Just now`;if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`})}catch{return``}}var Hp=5,Up=20;function Wp({panelId:e}){let t=Rf(e=>e.activeProject),[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1),c=(0,U.useCallback)(async()=>{if(t?.name){a(!0);try{r((await V.get(`${B(t.name)}/chat/sessions`)).slice(0,Up))}catch{}finally{a(!1)}}},[t?.name]);(0,U.useEffect)(()=>{c()},[c]);let l=(0,U.useCallback)(async(e,n)=>{if(e.stopPropagation(),!t?.name)return;let i=`${B(t.name)}/chat/sessions/${n.id}/pin`;try{n.pinned?await V.del(i):await V.put(i),r(e=>e.map(e=>e.id===n.id?{...e,pinned:!e.pinned}:e).sort((e,t)=>e.pinned&&!t.pinned?-1:!e.pinned&&t.pinned?1:new Date(t.createdAt).getTime()-new Date(e.createdAt).getTime()))}catch{}},[t?.name]);function u(n){let r=n!==`settings`&&t?{projectName:t.name}:void 0;F.getState().openTab({type:n,title:Rp.find(e=>e.type===n)?.label??n,metadata:r,projectId:t?.name??null,closable:!0},e)}function d(n){F.getState().openTab({type:`chat`,title:n.title||`Chat`,projectId:t?.name??null,metadata:{projectName:t?.name,sessionId:n.id,providerId:n.providerId},closable:!0},e)}let f=n.filter(e=>e.pinned),p=n.filter(e=>!e.pinned),m=o?p:p.slice(0,Hp),h=p.length>Hp;function g(e){return(0,W.jsxs)(`button`,{onClick:()=>d(e),className:`group flex items-center gap-2.5 w-full px-3 py-2.5 text-left hover:bg-surface-elevated active:bg-surface-elevated transition-colors border-b border-border/50 last:border-0`,children:[(0,W.jsx)(vt,{className:`size-3.5 shrink-0 text-text-subtle`}),(0,W.jsx)(`span`,{className:`flex-1 min-w-0 text-xs font-medium truncate text-text-primary`,children:e.title||`Untitled`}),e.updatedAt&&(0,W.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:Vp(e.updatedAt)}),(0,W.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>l(t,e),className:`p-1 rounded transition-colors shrink-0 ${e.pinned?`text-primary hover:text-primary/70`:`text-text-subtle can-hover:opacity-0 can-hover:group-hover:opacity-100 hover:text-text-primary`}`,"aria-label":e.pinned?`Unpin session`:`Pin session`,children:e.pinned?(0,W.jsx)(kt,{className:`size-3`}):(0,W.jsx)(At,{className:`size-3`})})]},e.id)}return(0,W.jsx)(`div`,{className:`flex flex-col h-full overflow-y-auto text-text-secondary`,children:(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-6 px-4 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm`,children:`Open a tab to get started`}),(0,W.jsx)(`div`,{className:`grid grid-cols-3 gap-2 w-full max-w-sm`,children:Rp.map(e=>{let t=e.icon;return(0,W.jsxs)(`button`,{onClick:()=>u(e.type),className:`flex flex-col items-center justify-center gap-1.5 px-2 py-3 rounded-md border border-border bg-surface hover:bg-surface-elevated active:bg-surface-elevated text-xs text-foreground transition-colors`,children:[(0,W.jsx)(t,{className:`size-5`}),e.label]},e.type)})}),t&&!i&&f.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,W.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Pinned`}),(0,W.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:f.map(g)})]}),t&&!i&&m.length>0&&(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,W.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Recent chats`}),(0,W.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:m.map(g)}),h&&(0,W.jsxs)(`button`,{onClick:()=>s(!o),className:`flex items-center justify-center gap-1 text-[11px] text-text-subtle hover:text-text-primary transition-colors py-1`,children:[o?(0,W.jsx)(Ne,{className:`size-3`}):(0,W.jsx)(je,{className:`size-3`}),o?`Show less`:`Show more (${p.length-Hp})`]})]})]})})}function Gp({projectName:e}){let t=F(t=>t.currentProject===e?t.grid:t.projectGrids[e]??[[]]),n=t.flat().length;return(0,U.useEffect)(()=>{if(n===0){let e=I();F.setState(t=>({panels:{...t.panels,[e.id]:e},grid:[[e.id]],focusedPanelId:e.id}))}},[n]),n===0?null:n===1&&t[0]?.[0]?(0,W.jsx)(Bp,{panelId:t[0][0],projectName:e}):(0,W.jsx)(Df,{orientation:`vertical`,style:{height:`100%`},children:t.map((n,r)=>(0,W.jsx)(Kp,{row:n,rowIdx:r,totalRows:t.length,projectName:e},`row-${r}`))})}function Kp({row:e,rowIdx:t,totalRows:n,projectName:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Af,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:e.length===1?(0,W.jsx)(Bp,{panelId:e[0],projectName:r}):(0,W.jsx)(Df,{orientation:`horizontal`,children:e.map((t,n)=>(0,W.jsx)(qp,{panelId:t,colIdx:n,totalCols:e.length,projectName:r},t))})}),t<n-1&&(0,W.jsx)(Jp,{orientation:`horizontal`})]})}function qp({panelId:e,colIdx:t,totalCols:n,projectName:r}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Af,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:(0,W.jsx)(Bp,{panelId:e,projectName:r})}),t<n-1&&(0,W.jsx)(Jp,{orientation:`vertical`})]})}function Jp({orientation:e}){let t=e===`vertical`;return(0,W.jsx)(Nf,{className:`
15
15
  group/handle relative flex items-center justify-center
16
16
  ${t?`w-1 cursor-col-resize`:`h-1 cursor-row-resize`}
17
17
  bg-border/30 hover:bg-primary/30 active:bg-primary/50
18
18
  transition-colors duration-150
19
- `,children:(0,W.jsx)(`div`,{className:`absolute can-hover:opacity-0 can-hover:group-hover/handle:opacity-70 transition-opacity text-foreground/50`,children:t?(0,W.jsx)(st,{className:`size-3`}):(0,W.jsx)(ot,{className:`size-3`})})})}var Yp=ae((e,t)=>({statusBarItems:[],addStatusBarItem:t=>e(e=>({statusBarItems:[...e.statusBarItems.filter(e=>e.id!==t.id),t]})),removeStatusBarItem:t=>e(e=>({statusBarItems:e.statusBarItems.filter(e=>e.id!==t)})),updateStatusBarItem:(t,n)=>e(e=>({statusBarItems:e.statusBarItems.map(e=>e.id===t?{...e,...n}:e)})),treeViews:{},updateTree:(t,n)=>e(e=>({treeViews:{...e.treeViews,[t]:n}})),updateTreeChildren:(t,n,r)=>e(e=>{let i=e.treeViews[t];if(!i)return e;let a=e=>e.map(e=>e.id===n?{...e,children:r,collapsibleState:`expanded`}:e.children?{...e,children:a(e.children)}:e);return{treeViews:{...e.treeViews,[t]:a(i)}}}),removeTree:t=>e(e=>{let{[t]:n,...r}=e.treeViews;return{treeViews:r}}),webviewPanels:{},addWebviewPanel:t=>e(e=>({webviewPanels:{...e.webviewPanels,[t.id]:t}})),removeWebviewPanel:t=>e(e=>{let{[t]:n,...r}=e.webviewPanels;return{webviewPanels:r}}),updateWebviewPanel:(t,n)=>e(e=>{let r=e.webviewPanels[t];return r?{webviewPanels:{...e.webviewPanels,[t]:{...r,...n}}}:e}),contributions:null,setContributions:t=>e({contributions:t}),quickPick:null,showQuickPick:(n,r={})=>{let i=t().quickPick;return i&&i.resolve(void 0),new Promise(t=>{e({quickPick:{items:n,options:r,resolve:t}})})},resolveQuickPick:n=>{let r=t().quickPick;r&&(r.resolve(n),e({quickPick:null}))},inputBox:null,showInputBox:(n={})=>{let r=t().inputBox;return r&&r.resolve(void 0),new Promise(t=>{e({inputBox:{options:n,resolve:t}})})},resolveInputBox:n=>{let r=t().inputBox;r&&(r.resolve(n),e({inputBox:null}))},clearExtension:t=>e(e=>{let n={...e.webviewPanels};for(let[e,r]of Object.entries(n))r.extensionId===t&&delete n[e];return{statusBarItems:e.statusBarItems.filter(e=>e.extensionId!==t),webviewPanels:n}})})),Xp=ae((e,t)=>({tree:[],loading:!1,error:null,expandedPaths:new Set,selectedFiles:[],fetchTree:async t=>{e({loading:!0,error:null});try{e({tree:await V.get(`${B(t)}/files/tree?depth=3`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to load files`,loading:!1})}},toggleExpand:n=>{let r=new Set(t().expandedPaths);r.has(n)?r.delete(n):r.add(n),e({expandedPaths:r})},setExpanded:(n,r)=>{let i=new Set(t().expandedPaths);r?i.add(n):i.delete(n),e({expandedPaths:i})},toggleFileSelect:n=>{let r=t().selectedFiles;r.indexOf(n)>=0?e({selectedFiles:r.filter(e=>e!==n)}):e({selectedFiles:r.length>=2?[r[1],n]:[...r,n]})},clearSelection:()=>e({selectedFiles:[]}),reset:()=>e({tree:[],expandedPaths:new Set,error:null,selectedFiles:[]})}));function Zp({className:e,children:t,...n}){return(0,W.jsxs)(lc,{"data-slot":`scroll-area`,className:z(`relative`,e),...n,children:[(0,W.jsx)(uc,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,W.jsx)(Qp,{}),(0,W.jsx)(dc,{})]})}function Qp({className:e,orientation:t=`vertical`,...n}){return(0,W.jsx)(Ls,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:z(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-1.5 border-l border-l-transparent`,t===`horizontal`&&`h-1.5 flex-col border-t border-t-transparent`,e),...n,children:(0,W.jsx)(Js,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function $p({...e}){return(0,W.jsx)(Do,{"data-slot":`context-menu`,...e})}function em({...e}){return(0,W.jsx)(Oo,{"data-slot":`context-menu-trigger`,...e})}function tm({className:e,...t}){return(0,W.jsx)(ko,{children:(0,W.jsx)(Ao,{"data-slot":`context-menu-content`,className:z(`z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 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`,e),...t})})}function nm({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(jo,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function rm({className:e,...t}){return(0,W.jsx)(Mo,{"data-slot":`context-menu-separator`,className:z(`-mx-1 my-1 h-px bg-border`,e),...t})}var im=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,am=ce,om=((e,t)=>n=>{if(t?.variants==null)return am(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=im(t)||im(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return am(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)})(`inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,xs:`h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-xs":`size-6 rounded-md [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function $({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,W.jsx)(r?f:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:z(om({variant:t,size:n,className:e})),...i})}function sm({...e}){return(0,W.jsx)(Mr,{"data-slot":`dialog`,...e})}function cm({...e}){return(0,W.jsx)(Nr,{"data-slot":`dialog-trigger`,...e})}function lm({...e}){return(0,W.jsx)(Pr,{"data-slot":`dialog-portal`,...e})}function um({className:e,...t}){return(0,W.jsx)(Fr,{"data-slot":`dialog-overlay`,className:z(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function dm({className:e,children:t,showCloseButton:n=!0,...r}){return(0,W.jsxs)(lm,{"data-slot":`dialog-portal`,children:[(0,W.jsx)(um,{}),(0,W.jsxs)(Ir,{"data-slot":`dialog-content`,className:z(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background text-foreground p-6 shadow-lg duration-200 outline-none 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 sm:max-w-lg`,e),...r,children:[t,n&&(0,W.jsxs)(zr,{"data-slot":`dialog-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,W.jsx)(rn,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function fm({className:e,...t}){return(0,W.jsx)(`div`,{"data-slot":`dialog-header`,className:z(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function pm({className:e,showCloseButton:t=!1,children:n,...r}){return(0,W.jsxs)(`div`,{"data-slot":`dialog-footer`,className:z(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...r,children:[n,t&&(0,W.jsx)(zr,{asChild:!0,children:(0,W.jsx)($,{variant:`outline`,children:`Close`})})]})}function mm({className:e,...t}){return(0,W.jsx)(Lr,{"data-slot":`dialog-title`,className:z(`text-lg leading-none font-semibold`,e),...t})}function hm({className:e,...t}){return(0,W.jsx)(Rr,{"data-slot":`dialog-description`,className:z(`text-sm text-muted-foreground`,e),...t})}function gm({className:e,type:t,...n}){return(0,W.jsx)(`input`,{type:t,"data-slot":`input`,className:z(`h-9 w-full min-w-0 rounded-lg border border-border bg-surface px-3 py-2 text-base md:text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`selection:bg-primary selection:text-primary-foreground`,`file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground`,`aria-invalid:border-destructive`,e),...n})}function _m({action:e,node:t,projectName:n,onClose:r,onRefresh:i}){let[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{o(e===`rename`?t.name:``)},[e,t.name]),(0,U.useEffect)(()=>{let e=setTimeout(()=>d.current?.focus(),100);return()=>clearTimeout(e)},[]);async function f(e){if(a.trim()){c(!0),u(null);try{let o=t.type===`directory`?t.path:t.path.split(`/`).slice(0,-1).join(`/`),s=o?`${o}/${a.trim()}`:a.trim();await V.post(`${B(n)}/files/create`,{path:s,type:e}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to create`)}finally{c(!1)}}}async function p(){if(!a.trim()||a.trim()===t.name){r();return}c(!0),u(null);try{let e=t.path.split(`/`).slice(0,-1).join(`/`),o=e?`${e}/${a.trim()}`:a.trim();await V.post(`${B(n)}/files/rename`,{oldPath:t.path,newPath:o}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to rename`)}finally{c(!1)}}async function m(){c(!0),u(null);try{await V.del(`${B(n)}/files/delete`,{path:t.path}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to delete`)}finally{c(!1)}}function h(t){t.key===`Enter`&&(e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):e===`rename`&&p()),t.key===`Escape`&&r()}if(e===`delete`)return(0,W.jsx)(sm,{open:!0,onOpenChange:e=>!e&&r(),children:(0,W.jsxs)(dm,{children:[(0,W.jsxs)(fm,{children:[(0,W.jsxs)(mm,{children:[`Delete `,t.type===`directory`?`Folder`:`File`]}),(0,W.jsxs)(hm,{children:[`Are you sure you want to delete`,` `,(0,W.jsx)(`span`,{className:`font-mono font-semibold`,children:t.name}),`?`,t.type===`directory`&&` This will delete all contents.`]})]}),l&&(0,W.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,W.jsx)($,{variant:`destructive`,onClick:m,disabled:s,children:s?`Deleting...`:`Delete`})]})]})});let g=e===`new-file`?`New File`:e===`new-folder`?`New Folder`:`Rename`,_=e===`rename`?t.name:e===`new-file`?`filename.ts`:`folder-name`;return(0,W.jsx)(sm,{open:!0,onOpenChange:e=>!e&&r(),children:(0,W.jsxs)(dm,{children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{children:g}),(0,W.jsx)(hm,{children:e===`rename`?`Rename "${t.name}" to:`:`Create in ${t.type===`directory`?t.path||`/`:t.path.split(`/`).slice(0,-1).join(`/`)||`/`}`})]}),(0,W.jsx)(gm,{ref:d,value:a,onChange:e=>o(e.target.value),onKeyDown:h,placeholder:_,disabled:s}),l&&(0,W.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,W.jsx)($,{onClick:()=>{e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):p()},disabled:s||!a.trim(),children:s?`Saving...`:e===`rename`?`Rename`:`Create`})]})]})})}async function vm(e,t){let{token:n}=await V.post(`${B(e)}/files/download/token`);bm(`${B(e)}/files/raw?path=${encodeURIComponent(t)}&download=true&dl_token=${encodeURIComponent(n)}`,t.split(`/`).pop()??`download`)}async function ym(e,t){let{token:n}=await V.post(`${B(e)}/files/download/token`),r=t.split(`/`).pop()??`folder`;bm(`${B(e)}/files/download/zip?path=${encodeURIComponent(t)}&dl_token=${encodeURIComponent(n)}`,`${r}.zip`)}function bm(e,t){let n=document.createElement(`a`);n.href=e,n.download=t,n.style.display=`none`,document.body.appendChild(n),n.click(),document.body.removeChild(n)}var xm={ts:qe,tsx:qe,js:qe,jsx:qe,py:qe,rs:qe,go:qe,json:Ke,md:Ye,txt:Ye,yaml:Xe,yml:Xe,html:qe,css:qe,scss:qe};function Sm(e){return xm[e.split(`.`).pop()?.toLowerCase()??``]??Ze}function Cm({node:e,depth:t,projectName:n,onAction:r,onFileOpen:i}){let{expandedPaths:s,toggleExpand:c,selectedFiles:l,toggleFileSelect:u}=Xp(),d=R(e=>e.openTab),f=s.has(e.path),p=e.type===`directory`,m=l.includes(e.path),h=e.ignored===!0;function g(t){if(p){c(e.path);return}if(t.metaKey||t.ctrlKey){u(e.path);return}let r=e.name.split(`.`).pop()?.toLowerCase()??``;d({type:r===`db`||r===`sqlite`||r===`sqlite3`?`sqlite`:`editor`,title:e.name,metadata:{filePath:e.path,projectName:n},projectId:n,closable:!0}),i?.()}let _=p?f?$e:nt:Sm(e.name),v=e.children?[...e.children].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1):[];return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)($p,{children:[(0,W.jsx)(em,{asChild:!0,children:(0,W.jsxs)(`button`,{onClick:g,className:z(`flex items-center w-full gap-1.5 px-2 py-1 rounded-sm text-sm`,`min-h-[32px] hover:bg-surface-elevated transition-colors text-left`,`select-none`,h&&`opacity-40`,m&&`bg-primary/15 ring-1 ring-primary/40`),style:{paddingLeft:`${t*16+8}px`},children:[p?f?(0,W.jsx)(je,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,W.jsx)(a,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,W.jsx)(`span`,{className:`w-3.5 shrink-0`}),(0,W.jsx)(_,{className:z(`size-4 shrink-0`,p?`text-primary`:`text-text-secondary`)}),(0,W.jsx)(`span`,{className:`truncate`,children:e.name})]})}),(0,W.jsxs)(tm,{children:[p&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(nm,{onClick:()=>r(`new-file`,e),children:`New File`}),(0,W.jsx)(nm,{onClick:()=>r(`new-folder`,e),children:`New Folder`}),(0,W.jsx)(rm,{})]}),(0,W.jsx)(nm,{onClick:()=>r(`rename`,e),children:`Rename`}),(0,W.jsx)(nm,{variant:`destructive`,onClick:()=>r(`delete`,e),children:`Delete`}),(0,W.jsx)(rm,{}),(0,W.jsx)(nm,{onClick:()=>r(`copy-path`,e),children:`Copy Path`}),(0,W.jsx)(rm,{}),(0,W.jsxs)(nm,{onClick:()=>r(`download`,e),children:[(0,W.jsx)(o,{className:`size-3.5 mr-2`}),`Download`,p?` as Zip`:``]}),!p&&l.length===2&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(rm,{}),(0,W.jsx)(nm,{onClick:()=>r(`compare-selected`,e),children:`Compare Selected`})]})]})]}),p&&f&&v.map(e=>(0,W.jsx)(Cm,{node:e,depth:t+1,projectName:n,onAction:r,onFileOpen:i},e.path))]})}function wm({onFileOpen:e}={}){let{tree:t,loading:n,error:r,fetchTree:i,reset:a,selectedFiles:o,clearSelection:s}=Xp(),c=Rf(e=>e.activeProject),l=R(e=>e.openTab),[u,d]=(0,U.useState)(null),f=(0,U.useCallback)(()=>{c&&i(c.name)},[c,i]);(0,U.useEffect)(()=>{c&&(a(),f())},[c?.name]),(0,U.useEffect)(()=>{let e=()=>{c&&i(c.name)};return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[c,i]);function p(e,t){if(e===`copy-path`){navigator.clipboard.writeText(t.path).catch(()=>{});return}if(e===`download`){t.type===`directory`?ym(c.name,t.path):vm(c.name,t.path);return}if(e===`compare-selected`&&o.length===2){let e=o[0],t=o[1];l({type:`git-diff`,title:`Compare ${le(e)} vs ${le(t)}`,closable:!0,metadata:{projectName:c.name,file1:e,file2:t},projectId:c.name}),s();return}d({action:e,node:t})}if(!c)return(0,W.jsx)(`div`,{className:`p-3 text-xs text-text-subtle`,children:`Select a project to browse files.`});if(n&&t.length===0)return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-xs text-text-secondary`,children:[(0,W.jsx)(H,{className:`size-3 animate-spin`}),`Loading files...`]});if(r)return(0,W.jsxs)(`div`,{className:`p-3 text-xs text-error`,children:[r,(0,W.jsx)(`button`,{onClick:f,className:`block mt-1 text-primary underline`,children:`Retry`})]});let m=[...t].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Zp,{className:`flex-1`,children:(0,W.jsxs)(`div`,{className:`py-1`,children:[m.map(t=>(0,W.jsx)(Cm,{node:t,depth:0,projectName:c.name,onAction:p,onFileOpen:e},t.path)),m.length===0&&(0,W.jsx)(`p`,{className:`p-3 text-xs text-text-subtle`,children:`Empty project.`})]})}),u&&(0,W.jsx)(_m,{action:u.action,node:u.node,projectName:c.name,onClose:()=>d(null),onRefresh:f})]})}function Tm({className:e,...t}){return(0,W.jsx)(Ts,{"data-slot":`label`,className:z(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Em({open:e,onOpenChange:t,projectName:n,onCreated:r}){let[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(`new`),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)([]),[m,h]=(0,U.useState)(!1),[g,_]=(0,U.useState)(null);(0,U.useEffect)(()=>{!e||!n||V.get(`${B(n)}/git/branches`).then(e=>{let t=e.filter(e=>!e.remote).map(e=>e.name);p(t),t.length>0&&!u&&d(t[0])}).catch(()=>p([]))},[e,n]);function v(){a(``),s(`new`),l(``),_(null)}function y(){v(),t(!1)}async function b(){if(!i.trim()){_(`Worktree path is required`);return}let e=o===`existing`?u:void 0,t=o===`new`&&c.trim()?c.trim():void 0;h(!0),_(null);try{await V.post(`${B(n)}/git/worktree/add`,{path:i.trim(),branch:e,newBranch:t}),r(),y()}catch(e){_(e instanceof Error?e.message:`Failed to create worktree`)}finally{h(!1)}}let x=(0,W.jsxs)(`div`,{className:`space-y-4`,children:[g&&(0,W.jsx)(`p`,{className:`text-xs text-destructive bg-destructive/10 px-3 py-2 rounded-md`,children:g}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{htmlFor:`wt-path`,children:`Worktree Path`}),(0,W.jsx)(gm,{id:`wt-path`,placeholder:`../my-feature`,value:i,onChange:e=>a(e.target.value),autoFocus:!0,className:`w-full`}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Relative or absolute path for the new worktree directory`})]}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(Tm,{children:`Branch`}),(0,W.jsxs)(`div`,{className:`flex gap-3`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`radio`,checked:o===`new`,onChange:()=>s(`new`),className:`accent-primary`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Create new branch`})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`radio`,checked:o===`existing`,onChange:()=>s(`existing`),className:`accent-primary`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Use existing branch`})]})]}),o===`new`?(0,W.jsx)(gm,{placeholder:`feature/my-branch`,value:c,onChange:e=>l(e.target.value),className:`w-full`}):(0,W.jsxs)(`select`,{value:u,onChange:e=>d(e.target.value),className:`w-full h-9 px-3 rounded-md border border-input bg-transparent text-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:[f.length===0&&(0,W.jsx)(`option`,{value:``,children:`No branches available`}),f.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]})]}),S=(0,W.jsxs)(`div`,{className:`flex gap-2 justify-end pt-2`,children:[(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:y,disabled:m,children:`Cancel`}),(0,W.jsxs)($,{size:`sm`,onClick:b,disabled:m||!i.trim(),children:[m?(0,W.jsx)(H,{className:`size-3 animate-spin mr-1`}):null,`Create Worktree`]})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(sm,{open:e,onOpenChange:e=>{e||y()},children:(0,W.jsxs)(dm,{className:`hidden md:grid sm:max-w-md`,children:[(0,W.jsx)(fm,{children:(0,W.jsx)(mm,{children:`Add Worktree`})}),x,(0,W.jsx)(pm,{children:S})]})}),e&&(0,W.jsxs)(`div`,{className:`md:hidden`,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:y}),(0,W.jsxs)(`div`,{className:z(`fixed bottom-0 left-0 right-0 z-50 bg-background rounded-t-2xl border-t border-border shadow-2xl`,`animate-in slide-in-from-bottom-2 duration-200`),children:[(0,W.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,W.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,W.jsx)(`span`,{className:`text-sm font-semibold`,children:`Add Worktree`}),(0,W.jsx)(`button`,{onClick:y,className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,W.jsx)(rn,{className:`size-4`})})]}),(0,W.jsxs)(`div`,{className:`px-4 py-4 space-y-4 max-h-[70vh] overflow-y-auto`,children:[x,S]})]})]})]})}function Dm({projectName:e,projectPath:t}){let[n,r]=(0,U.useState)(!1),[i,o]=(0,U.useState)([]),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(!1),_=(0,U.useCallback)(async()=>{if(e){c(!0),u(null);try{o(await V.get(`${B(e)}/git/worktrees`))}catch(e){u(e instanceof Error?e.message:`Failed to load worktrees`)}finally{c(!1)}}},[e]);(0,U.useEffect)(()=>{n&&_()},[n,_]);async function v(t=!1){if(p){g(!0);try{await V.post(`${B(e)}/git/worktree/remove`,{path:p.path,force:t}),m(null),await _()}catch(e){u(e instanceof Error?e.message:`Failed to remove worktree`),m(null)}finally{g(!1)}}}async function y(){try{await V.post(`${B(e)}/git/worktree/prune`,{}),await _()}catch(e){u(e instanceof Error?e.message:`Prune failed`)}}return(0,W.jsxs)(`div`,{className:`border-t border-border`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center justify-between w-full px-3 py-2 hover:bg-muted/50 transition-colors`,onClick:()=>r(e=>!e),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n?(0,W.jsx)(je,{className:`size-3.5 text-muted-foreground`}):(0,W.jsx)(a,{className:`size-3.5 text-muted-foreground`}),(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:`Worktrees`}),i.length>0&&(0,W.jsx)(`span`,{className:`text-[10px] bg-muted text-muted-foreground rounded px-1`,children:i.length})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-0.5`,children:n&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{role:`button`,tabIndex:0,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground transition-colors`,onClick:e=>{e.stopPropagation(),y()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),y())},title:`Prune stale worktrees`,"aria-label":`Prune stale worktrees`,children:(0,W.jsx)(Lt,{className:z(`size-3`,s&&`animate-spin`)})}),(0,W.jsx)(`span`,{role:`button`,tabIndex:0,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground transition-colors`,onClick:e=>{e.stopPropagation(),f(!0)},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),f(!0))},title:`Add worktree`,"aria-label":`Add worktree`,children:(0,W.jsx)(Nt,{className:`size-3`})})]})})]}),n&&(0,W.jsxs)(`div`,{className:`pb-1`,children:[l&&(0,W.jsx)(`p`,{className:`text-xs text-destructive px-3 py-1`,children:l}),s&&i.length===0&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 text-muted-foreground`,children:[(0,W.jsx)(H,{className:`size-3.5 animate-spin`}),(0,W.jsx)(`span`,{className:`text-xs`,children:`Loading worktrees...`})]}),!s&&i.length===0&&!l&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground px-3 py-1`,children:`No worktrees found.`}),i.map(e=>(0,W.jsx)(Om,{worktree:e,isActive:!!t&&e.path===t,onRemove:()=>m(e)},e.path)),(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2 w-full px-3 py-2 text-xs text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors`,onClick:()=>f(!0),children:[(0,W.jsx)(Nt,{className:`size-3.5`}),`Add worktree`]})]}),(0,W.jsx)(Em,{open:d,onOpenChange:f,projectName:e,onCreated:_}),(0,W.jsx)(sm,{open:!!p,onOpenChange:e=>!e&&m(null),children:(0,W.jsxs)(dm,{showCloseButton:!1,children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{children:`Remove Worktree`}),(0,W.jsxs)(hm,{children:[`Remove worktree at`,` `,(0,W.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-muted text-xs font-mono`,children:p?.path}),p?.branch&&(0,W.jsxs)(W.Fragment,{children:[` (branch: `,(0,W.jsx)(`strong`,{children:p.branch}),`)`]}),`? The directory will be deleted.`]})]}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>m(null),disabled:h,children:`Cancel`}),(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>v(!0),disabled:h,children:h?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Force Remove`}),(0,W.jsx)($,{variant:`destructive`,size:`sm`,onClick:()=>v(!1),disabled:h,children:h?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Remove`})]})]})})]})}function Om({worktree:e,isActive:t,onRemove:n}){let r=e.branch||e.head.slice(0,7)||`detached`,i=e.path.replace(/^\/home\/[^/]+/,`~`);return(0,W.jsxs)(`div`,{className:z(`group flex items-center gap-2 px-3 py-1.5 hover:bg-muted/50 transition-colors`,t&&`bg-accent/10`),children:[(0,W.jsx)(rt,{className:`size-3.5 text-muted-foreground shrink-0`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-xs font-mono truncate`,title:e.branch,children:r}),t&&(0,W.jsx)(Ae,{className:`size-3 text-green-500 shrink-0`}),e.isMain&&(0,W.jsx)(`span`,{className:`text-[10px] bg-muted text-muted-foreground rounded px-1 shrink-0`,children:`main`}),e.locked&&(0,W.jsx)(`span`,{title:e.lockReason??`locked`,children:(0,W.jsx)(ht,{className:`size-3 text-yellow-500 shrink-0`})}),e.prunable&&(0,W.jsx)(`span`,{title:`stale/prunable`,children:(0,W.jsx)(Pe,{className:`size-3 text-destructive shrink-0`})})]}),(0,W.jsx)(`p`,{className:`text-[10px] text-muted-foreground truncate`,title:e.path,children:i})]}),!e.isMain&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-destructive opacity-0 group-hover:opacity-100 can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-all active:scale-95 shrink-0`,onClick:n,title:`Remove worktree`,"aria-label":`Remove worktree`,children:(0,W.jsx)(Xt,{className:`size-3`})})]})}function km({...e}){return(0,W.jsx)(hs,{"data-slot":`dropdown-menu`,...e})}function Am({...e}){return(0,W.jsx)(gs,{"data-slot":`dropdown-menu-trigger`,...e})}function jm({className:e,sideOffset:t=4,...n}){return(0,W.jsx)(_s,{children:(0,W.jsx)(vs,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:z(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 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`,e),...n})})}function Mm({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(ys,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function Nm({...e}){return(0,W.jsx)(bs,{"data-slot":`dropdown-menu-sub`,...e})}function Pm({className:e,inset:t,children:n,...r}){return(0,W.jsxs)(xs,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:z(`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_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,W.jsx)(a,{className:`ml-auto size-4`})]})}function Fm({className:e,...t}){return(0,W.jsx)(Ss,{"data-slot":`dropdown-menu-sub-content`,className:z(`z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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`,e),...t})}var Im={M:`text-yellow-500`,A:`text-green-500`,D:`text-red-500`,R:`text-blue-500`,C:`text-purple-500`,"?":`text-gray-400`};function Lm(e){let t=[];for(let n of e){let e=n.path.split(`/`),r=t;for(let t=0;t<e.length;t++){let i=e[t],a=e.slice(0,t+1).join(`/`),o=t===e.length-1,s=r.find(e=>e.name===i);s||(s={name:i,fullPath:a,file:o?n:void 0,children:[]},r.push(s)),o&&(s.file=n),r=s.children}}return t}function Rm(e){let t=[];e.file&&t.push(e.file);for(let n of e.children)t.push(...Rm(n));return t}function zm({metadata:e,tabId:t,onNavigate:n}){let r=e?.projectName,[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!0),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(null),{openTab:g}=R(),_=Kn(e=>e.gitStatusViewMode),v=Kn(e=>e.setGitStatusViewMode),y=Rf(e=>e.projects.find(e=>e.name===r)?.path),b=(0,U.useCallback)(async()=>{if(r)try{s(!0),a(await V.get(`${B(r)}/git/status`)),l(null)}catch(e){l(e instanceof Error?e.message:`Failed to fetch status`)}finally{s(!1)}},[r]);(0,U.useEffect)(()=>{b();let e=setInterval(b,5e3);return()=>clearInterval(e)},[b]);let x=async e=>{if(r){p(!0);try{await V.post(`${B(r)}/git/stage`,{files:e}),await b()}catch(e){l(e instanceof Error?e.message:`Stage failed`)}finally{p(!1)}}},S=async e=>{if(r){p(!0);try{await V.post(`${B(r)}/git/unstage`,{files:e}),await b()}catch(e){l(e instanceof Error?e.message:`Unstage failed`)}finally{p(!1)}}},C=async e=>{if(r){p(!0);try{await V.post(`${B(r)}/git/discard`,{files:e}),await b()}catch(e){l(e instanceof Error?e.message:`Discard failed`)}finally{p(!1)}}},w=async()=>{m&&(await C(m.files),h(null))},T=async()=>{if(!(!r||!u.trim()||!i?.staged.length)){p(!0);try{await V.post(`${B(r)}/git/commit`,{message:u.trim()}),d(``),await b()}catch(e){l(e instanceof Error?e.message:`Commit failed`)}finally{p(!1)}}},E=async()=>{if(r){p(!0);try{await V.post(`${B(r)}/git/push`,{}),await b()}catch(e){l(e instanceof Error?e.message:`Push failed`)}finally{p(!1)}}},D=async()=>{if(r){p(!0);try{await V.post(`${B(r)}/git/pull`,{}),await b()}catch(e){l(e instanceof Error?e.message:`Pull failed`)}finally{p(!1)}}},O=e=>{g({type:`git-diff`,title:le(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},k=e=>{g({type:`editor`,title:le(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},A=(0,U.useMemo)(()=>[...i?.unstaged??[],...i?.untracked.map(e=>({path:e,status:`?`}))??[]],[i]);return r?o&&!i?(0,W.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-muted-foreground`,children:[(0,W.jsx)(H,{className:`size-5 animate-spin`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Loading git status...`})]}):c&&!i?(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-2 text-destructive text-sm`,children:[(0,W.jsx)(`p`,{children:c}),(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:b,children:`Retry`})]}):(0,W.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b shrink-0`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:i?.current?`On: ${i.current}`:`Git Status`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)($,{variant:_===`flat`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`flat`),title:`Flat view`,children:(0,W.jsx)(mt,{className:`size-3.5`})}),(0,W.jsx)($,{variant:_===`tree`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`tree`),title:`Tree view`,children:(0,W.jsx)(tt,{className:`size-3.5`})}),(0,W.jsx)($,{variant:`ghost`,size:`icon-xs`,onClick:b,disabled:f,children:(0,W.jsx)(Lt,{className:o?`animate-spin`:``})})]})]}),c&&(0,W.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-destructive bg-destructive/10 shrink-0`,children:c}),r&&(0,W.jsx)(Dm,{projectName:r,projectPath:y}),(0,W.jsx)(Zp,{className:`flex-1 overflow-hidden`,children:(0,W.jsxs)(`div`,{className:`p-1.5 space-y-2 overflow-hidden`,children:[(0,W.jsx)(Vm,{title:`Staged Changes`,count:i?.staged.length??0,files:i?.staged??[],viewMode:_,actionIcon:(0,W.jsx)(bt,{className:`size-3`}),actionAllIcon:(0,W.jsx)(bt,{className:`size-3`}),actionTitle:`Unstage`,onAction:e=>S([e.path]),onActionAll:i?.staged.length?()=>S(i.staged.map(e=>e.path)):void 0,actionAllLabel:`Unstage All`,onFolderAction:e=>S(e.map(e=>e.path)),onClickFile:O,onOpenFile:k,disabled:f}),(0,W.jsx)(Vm,{title:`Changes`,count:A.length,files:A,viewMode:_,actionIcon:(0,W.jsx)(Nt,{className:`size-3`}),actionAllIcon:(0,W.jsx)(Nt,{className:`size-3`}),actionTitle:`Stage`,onAction:e=>x([e.path]),onActionAll:A.length?()=>x(A.map(e=>e.path)):void 0,actionAllLabel:`Stage All`,onFolderAction:e=>x(e.map(e=>e.path)),onClickFile:O,onOpenFile:k,disabled:f,showRevert:!0,onRevert:e=>h({label:e.path,files:[e.path]}),onFolderRevert:(e,t)=>h({label:`${t}/ (${e.length} files)`,files:e.map(e=>e.path)})})]})}),(0,W.jsxs)(`div`,{className:`border-t p-2 space-y-2 shrink-0`,children:[(0,W.jsx)(`textarea`,{className:`w-full h-16 px-3 py-2 text-base md:text-sm text-foreground bg-surface border border-border rounded-lg resize-none focus:outline-none focus:border-ring placeholder:text-muted-foreground`,placeholder:`Commit message...`,value:u,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T()}}),(0,W.jsx)($,{size:`sm`,className:`w-full`,disabled:f||!u.trim()||!i?.staged.length,onClick:T,children:f?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Commit (${i?.staged.length??0})`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:E,children:[(0,W.jsx)(Ce,{className:`size-3`}),`Push`]}),(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:D,children:[(0,W.jsx)(be,{className:`size-3`}),`Pull`]})]})]}),(0,W.jsx)(sm,{open:!!m,onOpenChange:e=>!e&&h(null),children:(0,W.jsxs)(dm,{showCloseButton:!1,children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{children:`Discard Changes`}),(0,W.jsxs)(hm,{children:[`Are you sure you want to discard all changes to`,` `,(0,W.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-muted text-sm font-mono`,children:m?.label}),`? This action cannot be undone.`]})]}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,onClick:()=>h(null),children:`Cancel`}),(0,W.jsx)($,{variant:`destructive`,onClick:w,disabled:f,children:f?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Discard`})]})]})})]}):(0,W.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:`No project selected.`})}function Bm({showRevert:e,onRevert:t,onAction:n,onOpenFile:r,actionIcon:i,actionTitle:a,disabled:o}){return(0,W.jsxs)(`div`,{className:`hidden md:flex absolute right-0 top-0 bottom-0 items-center gap-0.5 pl-6 pr-1 bg-gradient-to-l from-background from-70% to-transparent can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-opacity`,children:[r&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-primary active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),r()},disabled:o,title:`Open file`,children:(0,W.jsx)(Ye,{className:`size-3`})}),e&&t&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-destructive active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),t()},disabled:o,title:`Discard changes`,children:(0,W.jsx)(Qt,{className:`size-3`})}),(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),n()},disabled:o,title:a,children:i})]})}function Vm({title:e,count:t,files:n,viewMode:r,actionIcon:i,actionAllIcon:a,actionTitle:o,onAction:s,onActionAll:c,actionAllLabel:l,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g}){return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-0.5`,children:[(0,W.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:[e,` (`,t,`)`]}),c&&t>0&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:c,disabled:p,title:l,children:a})]}),n.length===0?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground px-1`,children:`No changes`}):r===`flat`?(0,W.jsx)(`div`,{className:`w-full overflow-hidden`,children:n.map(e=>(0,W.jsx)(Um,{file:e,actionIcon:i,actionTitle:o,onAction:s,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h},e.path))}):(0,W.jsx)(Wm,{files:n,actionIcon:i,actionTitle:o,onAction:s,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g})]})}function Hm(e,t,n=400){let r=(0,U.useRef)(null),i=(0,U.useRef)(!1),a=(0,U.useRef)(!1),o=(0,U.useCallback)(()=>{r.current&&=(clearTimeout(r.current),null)},[]);return{onTouchStart:(0,U.useCallback)(t=>{i.current=!1,a.current=!1,r.current=setTimeout(()=>{a.current=!0,e()},n)},[e,n]),onTouchMove:(0,U.useCallback)(()=>{i.current=!0,o()},[o]),onTouchEnd:(0,U.useCallback)(e=>{o(),!i.current&&!a.current&&(e.preventDefault(),t())},[o,t])}}function Um({file:e,actionIcon:t,actionTitle:n,onAction:r,onClickFile:i,onOpenFile:a,disabled:o,showRevert:s,onRevert:c,displayName:l}){let[u,d]=(0,U.useState)(!1),f=Hm((0,U.useCallback)(()=>d(!0),[]),(0,U.useCallback)(()=>i(e),[i,e])),p=(0,W.jsxs)(`div`,{className:`group relative flex items-center gap-1 hover:bg-muted/50 rounded pl-1 py-px w-full min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-xs font-mono w-4 text-center shrink-0 ${Im[e.status]??``}`,children:e.status}),(0,W.jsx)(`button`,{type:`button`,className:`hidden md:block flex-1 text-left text-xs font-mono truncate hover:underline min-w-0`,onClick:()=>i(e),title:e.path,children:l??e.path}),(0,W.jsx)(`span`,{className:`md:hidden flex-1 text-left text-xs font-mono truncate min-w-0 select-none`,children:l??e.path}),(0,W.jsx)(Bm,{showRevert:s,onRevert:c?()=>c(e):void 0,onOpenFile:a?()=>a(e):void 0,onAction:()=>r(e),actionIcon:t,actionTitle:n,disabled:o})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`hidden md:block`,children:p}),(0,W.jsx)(`div`,{className:`md:hidden select-none`,...f,children:(0,W.jsxs)(km,{open:u,onOpenChange:d,children:[(0,W.jsx)(Am,{asChild:!0,children:p}),(0,W.jsxs)(jm,{align:`start`,className:`min-w-40`,children:[(0,W.jsx)(Mm,{onClick:()=>i(e),children:`View Diff`}),a&&(0,W.jsx)(Mm,{onClick:()=>a(e),children:`Open File`}),(0,W.jsx)(Mm,{onClick:()=>r(e),disabled:o,children:n}),s&&c&&(0,W.jsx)(Mm,{className:`text-destructive focus:text-destructive`,onClick:()=>c(e),disabled:o,children:`Discard Changes`})]})]})})]})}function Wm({files:e,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u}){let d=(0,U.useMemo)(()=>Lm(e),[e]);return(0,W.jsx)(`div`,{children:d.map((e,f)=>(0,W.jsx)(Gm,{node:e,depth:0,isLast:f===d.length-1,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u},e.fullPath))})}function Gm({node:e,depth:t,isLast:n,actionIcon:r,actionTitle:i,onAction:o,onFolderAction:s,onClickFile:c,onOpenFile:l,disabled:u,showRevert:d,onRevert:f,onFolderRevert:p}){let[m,h]=(0,U.useState)(!0),g=e.children.length>0&&!e.file,_=t*12-6,v=`absolute border-dashed border-border`;if(e.file)return(0,W.jsxs)(`div`,{className:`relative`,style:{paddingLeft:t*12},children:[t>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`${v} border-l`,style:{left:_,top:0,bottom:n?`50%`:0}}),(0,W.jsx)(`div`,{className:`${v} border-t`,style:{left:_,top:`50%`,width:6}})]}),(0,W.jsx)(Um,{file:e.file,displayName:e.name,actionIcon:r,actionTitle:i,onAction:o,onClickFile:c,onOpenFile:l,disabled:u,showRevert:d,onRevert:f})]});if(g){let g=Rm(e);return(0,W.jsxs)(`div`,{className:`relative`,children:[t>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`${v} border-l`,style:{left:_,top:0,...n?{height:13}:{bottom:0}}}),(0,W.jsx)(`div`,{className:`${v} border-t`,style:{left:_,top:13,width:8}})]}),(()=>{let n=(0,W.jsxs)(`div`,{className:`group relative flex items-center hover:bg-muted/50 rounded py-0.5`,style:{paddingLeft:t*12+2},children:[(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 flex-1 min-w-0 text-xs font-mono text-muted-foreground`,onClick:()=>h(!m),children:[m?(0,W.jsx)(je,{className:`size-3.5 shrink-0`}):(0,W.jsx)(a,{className:`size-3.5 shrink-0`}),(0,W.jsx)(`span`,{className:`truncate font-semibold`,children:e.name}),(0,W.jsxs)(`span`,{className:`text-[10px] opacity-60 shrink-0`,children:[`(`,g.length,`)`]})]}),(0,W.jsx)(Bm,{showRevert:d,onRevert:p?()=>p(g,e.fullPath):void 0,onAction:()=>s?.(g),actionIcon:r,actionTitle:`${i} ${e.name}/`,disabled:u})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`hidden md:block`,children:n}),(0,W.jsx)(`div`,{className:`md:hidden`,children:(0,W.jsxs)(km,{children:[(0,W.jsx)(Am,{asChild:!0,children:n}),(0,W.jsxs)(jm,{align:`start`,className:`min-w-40`,children:[(0,W.jsxs)(Mm,{onClick:()=>s?.(g),disabled:u,children:[i,` `,e.name,`/`]}),p&&(0,W.jsx)(Mm,{className:`text-destructive focus:text-destructive`,onClick:()=>p(g,e.fullPath),disabled:u,children:`Discard Changes`})]})]})})]})})(),m&&(0,W.jsx)(`div`,{children:e.children.map((n,a)=>(0,W.jsx)(Gm,{node:n,depth:t+1,isLast:a===e.children.length-1,actionIcon:r,actionTitle:i,onAction:o,onFolderAction:s,onClickFile:c,onOpenFile:l,disabled:u,showRevert:d,onRevert:f,onFolderRevert:p},n.fullPath))})]})}return null}function Km({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,W.jsx)(X,{"data-slot":`separator`,decorative:n,orientation:t,className:z(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}function qm({...e}){return(0,W.jsx)(Tl,{"data-slot":`select`,...e})}function Jm({...e}){return(0,W.jsx)(Dl,{"data-slot":`select-value`,...e})}function Ym({className:e,size:t=`default`,children:n,...r}){return(0,W.jsxs)(El,{"data-slot":`select-trigger`,"data-size":t,className:z(`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,W.jsx)(Ol,{asChild:!0,children:(0,W.jsx)(je,{className:`size-4 opacity-50`})})]})}function Xm({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,W.jsx)(kl,{children:(0,W.jsxs)(Al,{"data-slot":`select-content`,className:z(`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,...i,children:[(0,W.jsx)(Qm,{}),(0,W.jsx)(jl,{className:z(`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,W.jsx)($m,{})]})})}function Zm({className:e,children:t,...n}){return(0,W.jsxs)(Ml,{"data-slot":`select-item`,className:z(`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,W.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,W.jsx)(Pl,{children:(0,W.jsx)(Ae,{className:`size-4`})})}),(0,W.jsx)(Nl,{children:t})]})}function Qm({className:e,...t}){return(0,W.jsx)(Fl,{"data-slot":`select-scroll-up-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,W.jsx)(Ne,{className:`size-4`})})}function $m({className:e,...t}){return(0,W.jsx)(Il,{"data-slot":`select-scroll-down-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,W.jsx)(je,{className:`size-4`})})}var eh=U.forwardRef(({className:e,...t},n)=>(0,W.jsx)(Xl,{className:z(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,e),...t,ref:n,children:(0,W.jsx)(Zl,{className:z(`pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})}));eh.displayName=Xl.displayName;var th={claude:`C`,cursor:`▶`,codex:`◆`,gemini:`G`};function nh({value:e,onChange:t,projectName:n}){let[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null),c=(0,U.useRef)(0);(0,U.useEffect)(()=>{n&&V.get(`${B(n)}/chat/providers`).then(i).catch(()=>{})},[n]),(0,U.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[a]),(0,U.useEffect)(()=>{a&&(c.current=Math.max(0,r.findIndex(t=>t.id===e)))},[a,e,r]);let l=(0,U.useCallback)(e=>{if(e.key===`Escape`){o(!1);return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;c.current=(c.current+t+r.length)%r.length,(s.current?.querySelector(`[data-idx="${c.current}"]`))?.focus()}if(e.key===`Enter`){e.preventDefault();let n=r[c.current];n&&(t(n.id),o(!1))}},[t,r]);if(r.length<=1)return null;let u=r.find(t=>t.id===e),d=th[e]||`?`;return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o(e=>!e)},className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-[11px] text-text-subtle hover:text-text-primary hover:bg-surface-elevated transition-colors border border-transparent hover:border-border`,"aria-label":`AI Provider: ${u?.name??e}`,children:[(0,W.jsx)(`span`,{className:`inline-flex h-3.5 w-3.5 items-center justify-center rounded text-[9px] font-bold bg-surface-elevated shrink-0`,children:d}),(0,W.jsx)(`span`,{className:`max-w-[80px] truncate capitalize`,children:u?.name??e})]}),a&&(0,W.jsxs)(`div`,{ref:s,role:`listbox`,"aria-label":`AI Providers`,onKeyDown:l,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),className:`absolute bottom-full left-0 mb-1 z-50 w-56 rounded-lg border border-border bg-surface shadow-lg`,children:[(0,W.jsx)(`div`,{className:`px-3 py-2 border-b border-border`,children:(0,W.jsx)(`span`,{className:`text-xs font-medium text-text-secondary`,children:`Provider`})}),(0,W.jsx)(`div`,{className:`py-1`,children:r.map((n,r)=>{let i=th[n.id]||`?`,a=n.id===e;return(0,W.jsxs)(`button`,{"data-idx":r,role:`option`,"aria-selected":a,tabIndex:0,onClick:()=>{t(n.id),o(!1)},className:`w-full flex items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-surface-elevated focus:bg-surface-elevated focus:outline-none ${a?`bg-surface-elevated`:``}`,children:[(0,W.jsx)(`span`,{className:`inline-flex h-5 w-5 items-center justify-center rounded text-[11px] font-bold bg-surface-elevated text-text-subtle shrink-0`,children:i}),(0,W.jsx)(`span`,{className:`flex-1 text-sm font-medium text-text-primary capitalize`,children:n.name}),a&&(0,W.jsx)(Ae,{className:`size-4 shrink-0 text-primary`})]},n.id)})})]})]})}function rh({providerId:e}){return(0,W.jsx)(`span`,{className:`inline-flex h-4 w-4 items-center justify-center rounded text-[10px] font-bold bg-surface-elevated text-text-subtle shrink-0`,title:e,children:th[e]||`?`})}var ih=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}],ah=[{value:`bypassPermissions`,label:`Bypass permissions (default)`},{value:`default`,label:`Ask before edits`},{value:`acceptEdits`,label:`Edit automatically`},{value:`plan`,label:`Plan mode`}],oh={claude:`Claude`,cursor:`Cursor`,codex:`Codex`,gemini:`Gemini`};function sh({compact:e}={}){let[t,n]=(0,U.useState)(null),[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)([]),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(0);(0,U.useEffect)(()=>{fe().then(e=>{n(e),i(e.default_provider??`claude`)}).catch(e=>f(e.message))},[]),(0,U.useEffect)(()=>{r&&(c(!0),V.get(`/api/settings/ai/providers/${r}/models`).then(o).catch(()=>o([])).finally(()=>c(!1)))},[r]);let h=t?Object.keys(t.providers).filter(e=>e!==`mock`).map(e=>({id:e,name:oh[e]??e})):[],g=t?.providers[r],_=g?.type===`agent-sdk`||!g?.type&&r===`claude`,v=async(e,i)=>{if(t){u(!0),f(null);try{n(await he({providers:{[r]:{[e]:i}}})),m(e=>e+1)}catch(e){f(e.message)}finally{u(!1)}}},y=e?`text-[11px]`:`text-sm`,b=e?`text-xs`:`text-sm`,x=e?`space-y-2`:`space-y-4`,S=e?`space-y-1.5`:`space-y-3`,C=e?`space-y-1`:`space-y-1.5`;if(!t)return(0,W.jsxs)(`div`,{className:S,children:[(0,W.jsx)(`h3`,{className:`${b} font-medium text-text-secondary`,children:`AI Settings`}),(0,W.jsx)(`p`,{className:`${y} text-text-subtle`,children:d?`Error: ${d}`:`Loading...`})]});let w=_?a:[{value:`__default__`,label:`Auto (default)`},...a];return(0,W.jsxs)(`div`,{className:x,children:[(0,W.jsx)(`h3`,{className:`${b} font-medium text-text-secondary`,children:`AI Settings`}),h.length>1&&(0,W.jsx)(`div`,{className:`flex gap-0.5 border-b border-border/50 -mx-1 px-1`,children:h.map(e=>(0,W.jsxs)(`button`,{onClick:()=>i(e.id),className:`flex items-center gap-1 px-2 py-1 text-[11px] rounded-t transition-colors ${r===e.id?`text-primary border-b-2 border-primary font-medium`:`text-text-subtle hover:text-text-secondary`}`,children:[(0,W.jsx)(rh,{providerId:e.id}),(0,W.jsx)(`span`,{className:`capitalize`,children:e.name})]},e.id))}),(0,W.jsxs)(`div`,{className:S,children:[a.length>0&&(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-model`,className:e?y:void 0,children:`Model`}),(0,W.jsxs)(qm,{value:_?g?.model??a[0]?.value:g?.model||`__default__`,onValueChange:e=>v(`model`,e===`__default__`?void 0:e),disabled:s,children:[(0,W.jsx)(Ym,{id:`ai-model`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,W.jsx)(Jm,{placeholder:s?`Loading models...`:`Select model`})}),(0,W.jsx)(Xm,{className:`max-h-[300px]`,children:w.map(e=>(0,W.jsx)(Zm,{value:e.value,children:e.label},e.value))})]})]}),_&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-base-url`,className:e?y:void 0,children:`Base URL`}),(0,W.jsx)(gm,{id:`ai-base-url`,type:`url`,defaultValue:g?.base_url??``,placeholder:`https://api.anthropic.com (default)`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{v(`base_url`,e.target.value.trim()||void 0)}},`baseurl-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-api-key`,className:e?y:void 0,children:`API Key / Token`}),(0,W.jsx)(gm,{id:`ai-api-key`,type:`password`,defaultValue:g?.api_key??``,placeholder:`sk-ant-... (optional, overrides accounts)`,className:e?`h-7 text-[11px] font-mono`:`font-mono`,onBlur:e=>{let t=e.target.value.trim();t.startsWith(`••••`)||v(`api_key`,t||void 0)}},`apikey-${r}-${p}`),(0,W.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Direct API key or OAuth token. Leave empty to use connected accounts.`})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-effort`,className:e?y:void 0,children:`Effort`}),(0,W.jsxs)(qm,{value:g?.effort??`high`,onValueChange:e=>v(`effort`,e),children:[(0,W.jsx)(Ym,{id:`ai-effort`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,W.jsx)(Jm,{})}),(0,W.jsx)(Xm,{children:ih.map(e=>(0,W.jsx)(Zm,{value:e.value,children:e.label},e.value))})]})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-max-turns`,className:e?y:void 0,children:`Max Turns (1-500)`}),(0,W.jsx)(gm,{id:`ai-max-turns`,type:`number`,min:1,max:500,defaultValue:g?.max_turns??100,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);isNaN(t)||v(`max_turns`,t)}},`turns-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-budget`,className:e?y:void 0,children:`Max Budget (USD)`}),(0,W.jsx)(gm,{id:`ai-budget`,type:`number`,step:.1,min:.01,max:50,defaultValue:g?.max_budget_usd??``,placeholder:`No limit`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseFloat(e.target.value);v(`max_budget_usd`,isNaN(t)?void 0:t)}},`budget-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-thinking`,className:e?y:void 0,children:`Thinking Budget (tokens)`}),(0,W.jsx)(gm,{id:`ai-thinking`,type:`number`,min:0,defaultValue:g?.thinking_budget_tokens??``,placeholder:`Disabled`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);v(`thinking_budget_tokens`,isNaN(t)?void 0:t)}},`thinking-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Tm,{htmlFor:`ai-agent-teams`,className:e?y:void 0,children:`Agent Teams`}),(0,W.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Experimental. Enables multi-agent collaboration with shared tasks and messaging. Uses ~7x more tokens.`})]}),(0,W.jsx)(eh,{id:`ai-agent-teams`,checked:g?.agent_teams??!1,onCheckedChange:e=>v(`agent_teams`,e)})]}),g?.agent_teams&&(0,W.jsx)(ch,{compact:e})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-permission-mode`,className:e?y:void 0,children:`Default Permission Mode`}),(0,W.jsxs)(qm,{value:g?.permission_mode??`bypassPermissions`,onValueChange:e=>v(`permission_mode`,e),children:[(0,W.jsx)(Ym,{id:`ai-permission-mode`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,W.jsx)(Jm,{})}),(0,W.jsx)(Xm,{children:ah.map(e=>(0,W.jsx)(Zm,{value:e.value,children:e.label},e.value))})]})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-system-prompt`,className:e?y:void 0,children:`Additional Instructions`}),(0,W.jsx)(`textarea`,{id:`ai-system-prompt`,rows:e?3:4,defaultValue:g?.system_prompt??``,placeholder:`Enter additional instructions for ${r}...`,className:`w-full rounded-md border border-input bg-background px-3 py-2 ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ${e?`text-[11px]`:`text-sm`}`,onBlur:e=>{v(`system_prompt`,e.target.value.trim()||void 0)}},`sysprompt-${r}-${p}`)]})]}),l&&(0,W.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Saving...`}),d&&(0,W.jsx)(`p`,{className:`text-xs text-red-500`,children:d})]})}function ch({compact:e}){let[t,n]=(0,U.useState)([]),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(null),s=(0,U.useCallback)(async()=>{i(!0);try{n(await V.get(`/api/teams`)??[])}catch{}i(!1)},[]);(0,U.useEffect)(()=>{s()},[s]);let c=async e=>{try{await V.del(`/api/teams/${encodeURIComponent(e)}`),n(t=>t.filter(t=>t.name!==e)),o(null)}catch{}};return t.length===0&&!r?null:(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(Tm,{className:e?`text-[11px]`:void 0,children:[`Teams (`,t.length,`)`]}),(0,W.jsx)(`button`,{onClick:s,className:`text-text-subtle hover:text-foreground p-1`,"aria-label":`Refresh teams`,children:(0,W.jsx)(Lt,{className:`size-3 ${r?`animate-spin`:``}`})})]}),t.map(e=>(0,W.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded bg-surface-elevated text-xs`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`font-medium truncate`,children:e.name}),e.description&&(0,W.jsx)(`div`,{className:`text-text-subtle truncate`,children:e.description}),(0,W.jsxs)(`div`,{className:`text-text-subtle`,children:[e.members?.length??e.memberCount??0,` members`,e.createdAt?` · ${new Date(e.createdAt).toLocaleDateString()}`:``]})]}),a===e.name?(0,W.jsxs)(`div`,{className:`flex gap-1 shrink-0 ml-2`,children:[(0,W.jsx)(`button`,{onClick:()=>c(e.name),className:`px-2 py-1 bg-red-600 text-white rounded text-[10px]`,children:`Delete`}),(0,W.jsx)(`button`,{onClick:()=>o(null),className:`px-2 py-1 bg-zinc-600 text-white rounded text-[10px]`,children:`Cancel`})]}):(0,W.jsx)(`button`,{onClick:()=>o(e.name),className:`shrink-0 text-text-subtle hover:text-red-500 p-1 ml-2`,"aria-label":`Delete team ${e.name}`,children:(0,W.jsx)(Xt,{className:`size-3.5`})})]},e.name))]})}var lh=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],uh=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function dh({actionId:e,combo:t,locked:n}){let[r,i]=(0,U.useState)(!1),a=yp(e=>e.setBinding),o=(0,U.useRef)(null),s=(0,U.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){i(!1);return}let n=vp(t);n&&(a(e,n),i(!1))},[e,a]);return(0,U.useEffect)(()=>{if(r)return document.addEventListener(`keydown`,s,!0),()=>document.removeEventListener(`keydown`,s,!0)},[r,s]),(0,U.useEffect)(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&i(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),n?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-border bg-muted px-2 py-0.5 text-[11px] font-mono text-muted-foreground`,children:[(0,W.jsx)(ht,{className:`size-2.5`}),_p(t)]}):r?(0,W.jsx)(`button`,{ref:o,className:`inline-flex items-center rounded border-2 border-primary bg-primary/10 px-2 py-0.5 text-[11px] font-mono text-primary animate-pulse`,children:`Press keys...`}):(0,W.jsx)(`button`,{ref:o,onClick:()=>i(!0),className:`inline-flex items-center rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-mono text-foreground hover:border-primary hover:bg-primary/5 transition-colors cursor-pointer`,title:`Click to change shortcut`,children:_p(t)})}function fh(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:r}=yp();return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(r).length>0&&(0,W.jsxs)($,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,W.jsx)(Bt,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,W.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-2.5 py-2`,children:[(0,W.jsx)(Zt,{className:`size-3.5 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,uh.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),lh.map(n=>{let i=pp.filter(e=>e.category===n.key);return i.length===0?null:(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,W.jsx)(`div`,{className:`space-y-0.5`,children:i.map(n=>{let i=e(n.id),a=n.id in r;return(0,W.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,W.jsx)(dh,{actionId:n.id,combo:i,locked:n.locked}),a&&!n.locked&&(0,W.jsx)(`button`,{onClick:()=>t(n.id),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,W.jsx)(Bt,{className:`size-3`})})]})]},n.id)})})]},n.key)})]})}function ph(){let[e,t]=(0,U.useState)({bot_token:``,chat_id:``}),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null);(0,U.useEffect)(()=>{V.get(`/api/settings/telegram`).then(e=>{t(e),a(e.chat_id)}).catch(()=>{})},[]);let f=async()=>{s(!0),d(null);try{let e={chat_id:i};n&&(e.bot_token=n),t(await V.put(`/api/settings/telegram`,e)),r(``),d({type:`ok`,msg:`Saved`})}catch(e){d({type:`err`,msg:e.message})}finally{s(!1)}},p=async()=>{l(!0),d(null);try{await V.post(`/api/settings/telegram/test`,{...n?{bot_token:n}:{},...i?{chat_id:i}:{}}),d({type:`ok`,msg:`Test message sent!`})}catch(e){d({type:`err`,msg:e.message})}finally{l(!1)}},m=!!e.bot_token;return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`label`,{className:`text-[11px] text-text-subtle`,children:`Bot Token`}),(0,W.jsx)(gm,{type:`password`,placeholder:m?`•••••• (saved)`:`123456:ABC-DEF...`,value:n,onChange:e=>r(e.target.value),className:`h-7 text-xs`})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`label`,{className:`text-[11px] text-text-subtle`,children:`Chat ID`}),(0,W.jsx)(gm,{placeholder:`-1001234567890`,value:i,onChange:e=>a(e.target.value),className:`h-7 text-xs`}),(0,W.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`Personal or group chat ID`})]}),(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsx)($,{variant:`default`,size:`sm`,className:`h-7 text-xs flex-1`,disabled:o||!n&&!i,onClick:f,children:o?`...`:`Save`}),(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`h-7 text-xs gap-1`,disabled:c||!m,onClick:p,children:[(0,W.jsx)(Ht,{className:`size-3`}),c?`...`:`Test`]})]}),u&&(0,W.jsx)(`p`,{className:`text-[11px] ${u.type===`ok`?`text-green-600 dark:text-green-400`:`text-destructive`}`,children:u.msg})]})}var mh=`Hello! Reply briefly.`,hh=`claude-sonnet-4-6`;function gh(e){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(sm,{open:t,onOpenChange:n,children:[(0,W.jsx)(cm,{asChild:!0,children:(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`h-7 text-[11px] gap-1.5 cursor-pointer`,children:[(0,W.jsx)(Qe,{className:`size-3`}),`Test`]})}),(0,W.jsxs)(dm,{className:`sm:max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{className:`text-sm`,children:`Test Proxy`}),(0,W.jsx)(hm,{className:`text-[11px]`,children:`Send a test request and inspect the raw response.`})]}),(0,W.jsx)(_h,{...e})]})]})}function _h({authKey:e,baseUrl:t}){let[n,r]=(0,U.useState)(`anthropic`),[i,a]=(0,U.useState)(mh),[o,s]=(0,U.useState)(hh),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(null),g=(0,U.useRef)(null),_=(0,U.useRef)(null);(0,U.useEffect)(()=>{g.current?.select()},[]),(0,U.useEffect)(()=>{_.current&&(_.current.scrollTop=_.current.scrollHeight)},[u]);let v=n===`anthropic`?`${t}/proxy/v1/messages`:`${t}/proxy/v1/chat/completions`,y=async()=>{l(!0),d(null),p(null),h(null);let t=Date.now(),r=n===`anthropic`,a=JSON.stringify({model:o,max_tokens:256,stream:!0,messages:[{role:`user`,content:i}]}),s={"Content-Type":`application/json`};r?(s[`x-api-key`]=e,s[`anthropic-version`]=`2023-06-01`):s.Authorization=`Bearer ${e}`;try{let e=await fetch(v,{method:`POST`,headers:s,body:a});if(!e.ok){let n=await e.text();p(`HTTP ${e.status}: ${n}`),l(!1),h(Date.now()-t);return}let n=e.body?.getReader();if(!n){p(`No response body`),l(!1);return}let r=new TextDecoder,i=``;for(;;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0}),d(i)}h(Date.now()-t)}catch(e){p(e.message)}finally{l(!1),h(e=>e??Date.now()-t)}};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Endpoint Format`}),(0,W.jsx)(`div`,{className:`flex gap-1`,children:[`anthropic`,`openai`].map(e=>(0,W.jsx)(`button`,{onClick:()=>r(e),className:`flex-1 h-8 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${n===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e===`anthropic`?`Anthropic`:`OpenAI`},e))}),(0,W.jsx)(`code`,{className:`block text-[9px] font-mono text-muted-foreground truncate`,children:v})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Model`}),(0,W.jsxs)(`select`,{value:o,onChange:e=>s(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-[11px]`,children:[(0,W.jsx)(`option`,{value:`claude-sonnet-4-6`,children:`claude-sonnet-4-6`}),(0,W.jsx)(`option`,{value:`claude-haiku-4-5-20251001`,children:`claude-haiku-4-5`}),(0,W.jsx)(`option`,{value:`claude-opus-4-6`,children:`claude-opus-4-6`})]})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Message`}),(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsx)(gm,{ref:g,value:i,onChange:e=>a(e.target.value),placeholder:`Type a test message...`,className:`h-9 text-[11px] flex-1`,onKeyDown:e=>{e.key===`Enter`&&!c&&y()}}),(0,W.jsxs)($,{size:`sm`,className:`h-9 px-3 cursor-pointer shrink-0`,onClick:y,disabled:c||!i.trim(),children:[c?(0,W.jsx)(H,{className:`size-3.5 animate-spin`}):(0,W.jsx)(jt,{className:`size-3.5`}),(0,W.jsx)(`span`,{className:`ml-1 text-[11px]`,children:c?`...`:`Send`})]})]})]}),(u||f)&&(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Raw Response`}),m!=null&&(0,W.jsxs)(`span`,{className:`text-[9px] font-mono text-muted-foreground`,children:[(m/1e3).toFixed(1),`s`]})]}),f?(0,W.jsx)(`pre`,{className:`text-[9px] font-mono bg-red-500/10 text-red-500 p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:f}):(0,W.jsx)(`pre`,{ref:_,className:`text-[9px] font-mono bg-muted p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:u})]})]})}function vh(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!0),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null);(0,U.useEffect)(()=>{r(!0),pe().then(t).catch(e=>s(e.message)).finally(()=>r(!1))},[]);let u=async e=>{a(!0),s(null);try{t(await me(e))}catch(e){s(e.message)}finally{a(!1)}},d=(e,t)=>{navigator.clipboard.writeText(e),l(t),setTimeout(()=>l(null),2e3)};if(n||!e)return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`API Proxy`}),(0,W.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:o?`Error: ${o}`:`Loading...`})]});let f=!!e.authKey,p=!!e.tunnelUrl,m=e.localEndpoint,h=m.replace(/\/proxy\/v1\/messages$/,``);return(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(`div`,{className:`space-y-1.5`,children:(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Expose your Claude accounts as an Anthropic-compatible API endpoint. External tools (OpenCode, Cursor, etc.) can use your accounts via this proxy.`})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,W.jsx)(Tm,{className:`text-xs`,children:`Enable Proxy`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Accept API requests on /proxy/v1/messages`})]}),(0,W.jsx)(eh,{checked:e.enabled,onCheckedChange:e=>u({enabled:e}),disabled:i})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Auth Key`}),f?(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsx)(gm,{readOnly:!0,value:e.authKey,className:`h-7 text-[11px] font-mono flex-1`}),(0,W.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>d(e.authKey,`key`),children:c===`key`?`Copied!`:(0,W.jsx)(Ve,{className:`size-3`})}),(0,W.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>u({generateKey:!0}),disabled:i,children:(0,W.jsx)(Lt,{className:`size-3`})})]}):(0,W.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,onClick:()=>u({generateKey:!0}),disabled:i,children:`Generate Auth Key`}),(0,W.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Use as Bearer token or x-api-key when calling the proxy.`})]}),e.enabled&&f&&(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3 bg-muted/30`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`h4`,{className:`text-[11px] font-medium`,children:`Connection Info`}),(0,W.jsx)(gh,{authKey:e.authKey,baseUrl:h})]}),(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Local Endpoint`}),(0,W.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,W.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:m}),(0,W.jsx)($,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>d(m,`local`),children:c===`local`?`Copied!`:(0,W.jsx)(Ve,{className:`size-3`})})]})]}),p&&e.proxyEndpoint&&(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Public Endpoint (Tunnel)`}),(0,W.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,W.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:e.proxyEndpoint}),(0,W.jsx)($,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>d(e.proxyEndpoint,`tunnel`),children:c===`tunnel`?`Copied!`:(0,W.jsx)(Ve,{className:`size-3`})})]})]}),!p&&(0,W.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Start a Cloudflare tunnel (Share) to get a public URL.`}),(0,W.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Usage Example`}),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:`# Set as base URL in your tool
19
+ `,children:(0,W.jsx)(`div`,{className:`absolute can-hover:opacity-0 can-hover:group-hover/handle:opacity-70 transition-opacity text-foreground/50`,children:t?(0,W.jsx)(st,{className:`size-3`}):(0,W.jsx)(ot,{className:`size-3`})})})}var Yp=ae((e,t)=>({statusBarItems:[],addStatusBarItem:t=>e(e=>({statusBarItems:[...e.statusBarItems.filter(e=>e.id!==t.id),t]})),removeStatusBarItem:t=>e(e=>({statusBarItems:e.statusBarItems.filter(e=>e.id!==t)})),updateStatusBarItem:(t,n)=>e(e=>({statusBarItems:e.statusBarItems.map(e=>e.id===t?{...e,...n}:e)})),treeViews:{},updateTree:(t,n)=>e(e=>({treeViews:{...e.treeViews,[t]:n}})),updateTreeChildren:(t,n,r)=>e(e=>{let i=e.treeViews[t];if(!i)return e;let a=e=>e.map(e=>e.id===n?{...e,children:r,collapsibleState:`expanded`}:e.children?{...e,children:a(e.children)}:e);return{treeViews:{...e.treeViews,[t]:a(i)}}}),removeTree:t=>e(e=>{let{[t]:n,...r}=e.treeViews;return{treeViews:r}}),webviewPanels:{},addWebviewPanel:t=>e(e=>({webviewPanels:{...e.webviewPanels,[t.id]:t}})),removeWebviewPanel:t=>e(e=>{let{[t]:n,...r}=e.webviewPanels;return{webviewPanels:r}}),updateWebviewPanel:(t,n)=>e(e=>{let r=e.webviewPanels[t];return r?{webviewPanels:{...e.webviewPanels,[t]:{...r,...n}}}:e}),contributions:null,setContributions:t=>e({contributions:t}),quickPick:null,showQuickPick:(n,r={})=>{let i=t().quickPick;return i&&i.resolve(void 0),new Promise(t=>{e({quickPick:{items:n,options:r,resolve:t}})})},resolveQuickPick:n=>{let r=t().quickPick;r&&(r.resolve(n),e({quickPick:null}))},inputBox:null,showInputBox:(n={})=>{let r=t().inputBox;return r&&r.resolve(void 0),new Promise(t=>{e({inputBox:{options:n,resolve:t}})})},resolveInputBox:n=>{let r=t().inputBox;r&&(r.resolve(n),e({inputBox:null}))},clearExtension:t=>e(e=>{let n={...e.webviewPanels};for(let[e,r]of Object.entries(n))r.extensionId===t&&delete n[e];return{statusBarItems:e.statusBarItems.filter(e=>e.extensionId!==t),webviewPanels:n}})})),Xp=ae((e,t)=>({tree:[],loading:!1,error:null,expandedPaths:new Set,selectedFiles:[],fetchTree:async t=>{e({loading:!0,error:null});try{e({tree:await V.get(`${B(t)}/files/tree?depth=3`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to load files`,loading:!1})}},toggleExpand:n=>{let r=new Set(t().expandedPaths);r.has(n)?r.delete(n):r.add(n),e({expandedPaths:r})},setExpanded:(n,r)=>{let i=new Set(t().expandedPaths);r?i.add(n):i.delete(n),e({expandedPaths:i})},toggleFileSelect:n=>{let r=t().selectedFiles;r.indexOf(n)>=0?e({selectedFiles:r.filter(e=>e!==n)}):e({selectedFiles:r.length>=2?[r[1],n]:[...r,n]})},clearSelection:()=>e({selectedFiles:[]}),reset:()=>e({tree:[],expandedPaths:new Set,error:null,selectedFiles:[]})}));function Zp({className:e,children:t,...n}){return(0,W.jsxs)(lc,{"data-slot":`scroll-area`,className:z(`relative`,e),...n,children:[(0,W.jsx)(uc,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,W.jsx)(Qp,{}),(0,W.jsx)(dc,{})]})}function Qp({className:e,orientation:t=`vertical`,...n}){return(0,W.jsx)(Ls,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:z(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-1.5 border-l border-l-transparent`,t===`horizontal`&&`h-1.5 flex-col border-t border-t-transparent`,e),...n,children:(0,W.jsx)(Js,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function $p({...e}){return(0,W.jsx)(Do,{"data-slot":`context-menu`,...e})}function em({...e}){return(0,W.jsx)(Oo,{"data-slot":`context-menu-trigger`,...e})}function tm({className:e,...t}){return(0,W.jsx)(ko,{children:(0,W.jsx)(Ao,{"data-slot":`context-menu-content`,className:z(`z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 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`,e),...t})})}function nm({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(jo,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function rm({className:e,...t}){return(0,W.jsx)(Mo,{"data-slot":`context-menu-separator`,className:z(`-mx-1 my-1 h-px bg-border`,e),...t})}var im=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,am=ce,om=((e,t)=>n=>{if(t?.variants==null)return am(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=im(t)||im(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return am(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)})(`inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,xs:`h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-xs":`size-6 rounded-md [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function $({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,W.jsx)(r?f:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:z(om({variant:t,size:n,className:e})),...i})}function sm({...e}){return(0,W.jsx)(Mr,{"data-slot":`dialog`,...e})}function cm({...e}){return(0,W.jsx)(Nr,{"data-slot":`dialog-trigger`,...e})}function lm({...e}){return(0,W.jsx)(Pr,{"data-slot":`dialog-portal`,...e})}function um({className:e,...t}){return(0,W.jsx)(Fr,{"data-slot":`dialog-overlay`,className:z(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function dm({className:e,children:t,showCloseButton:n=!0,...r}){return(0,W.jsxs)(lm,{"data-slot":`dialog-portal`,children:[(0,W.jsx)(um,{}),(0,W.jsxs)(Ir,{"data-slot":`dialog-content`,className:z(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background text-foreground p-6 shadow-lg duration-200 outline-none 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 sm:max-w-lg`,e),...r,children:[t,n&&(0,W.jsxs)(zr,{"data-slot":`dialog-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,W.jsx)(rn,{}),(0,W.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function fm({className:e,...t}){return(0,W.jsx)(`div`,{"data-slot":`dialog-header`,className:z(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function pm({className:e,showCloseButton:t=!1,children:n,...r}){return(0,W.jsxs)(`div`,{"data-slot":`dialog-footer`,className:z(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...r,children:[n,t&&(0,W.jsx)(zr,{asChild:!0,children:(0,W.jsx)($,{variant:`outline`,children:`Close`})})]})}function mm({className:e,...t}){return(0,W.jsx)(Lr,{"data-slot":`dialog-title`,className:z(`text-lg leading-none font-semibold`,e),...t})}function hm({className:e,...t}){return(0,W.jsx)(Rr,{"data-slot":`dialog-description`,className:z(`text-sm text-muted-foreground`,e),...t})}function gm({className:e,type:t,...n}){return(0,W.jsx)(`input`,{type:t,"data-slot":`input`,className:z(`h-9 w-full min-w-0 rounded-lg border border-border bg-surface px-3 py-2 text-base md:text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`selection:bg-primary selection:text-primary-foreground`,`file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground`,`aria-invalid:border-destructive`,e),...n})}function _m({action:e,node:t,projectName:n,onClose:r,onRefresh:i}){let[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{o(e===`rename`?t.name:``)},[e,t.name]),(0,U.useEffect)(()=>{let e=setTimeout(()=>d.current?.focus(),100);return()=>clearTimeout(e)},[]);async function f(e){if(a.trim()){c(!0),u(null);try{let o=t.type===`directory`?t.path:t.path.split(`/`).slice(0,-1).join(`/`),s=o?`${o}/${a.trim()}`:a.trim();await V.post(`${B(n)}/files/create`,{path:s,type:e}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to create`)}finally{c(!1)}}}async function p(){if(!a.trim()||a.trim()===t.name){r();return}c(!0),u(null);try{let e=t.path.split(`/`).slice(0,-1).join(`/`),o=e?`${e}/${a.trim()}`:a.trim();await V.post(`${B(n)}/files/rename`,{oldPath:t.path,newPath:o}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to rename`)}finally{c(!1)}}async function m(){c(!0),u(null);try{await V.del(`${B(n)}/files/delete`,{path:t.path}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to delete`)}finally{c(!1)}}function h(t){t.key===`Enter`&&(e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):e===`rename`&&p()),t.key===`Escape`&&r()}if(e===`delete`)return(0,W.jsx)(sm,{open:!0,onOpenChange:e=>!e&&r(),children:(0,W.jsxs)(dm,{children:[(0,W.jsxs)(fm,{children:[(0,W.jsxs)(mm,{children:[`Delete `,t.type===`directory`?`Folder`:`File`]}),(0,W.jsxs)(hm,{children:[`Are you sure you want to delete`,` `,(0,W.jsx)(`span`,{className:`font-mono font-semibold`,children:t.name}),`?`,t.type===`directory`&&` This will delete all contents.`]})]}),l&&(0,W.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,W.jsx)($,{variant:`destructive`,onClick:m,disabled:s,children:s?`Deleting...`:`Delete`})]})]})});let g=e===`new-file`?`New File`:e===`new-folder`?`New Folder`:`Rename`,_=e===`rename`?t.name:e===`new-file`?`filename.ts`:`folder-name`;return(0,W.jsx)(sm,{open:!0,onOpenChange:e=>!e&&r(),children:(0,W.jsxs)(dm,{children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{children:g}),(0,W.jsx)(hm,{children:e===`rename`?`Rename "${t.name}" to:`:`Create in ${t.type===`directory`?t.path||`/`:t.path.split(`/`).slice(0,-1).join(`/`)||`/`}`})]}),(0,W.jsx)(gm,{ref:d,value:a,onChange:e=>o(e.target.value),onKeyDown:h,placeholder:_,disabled:s}),l&&(0,W.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,W.jsx)($,{onClick:()=>{e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):p()},disabled:s||!a.trim(),children:s?`Saving...`:e===`rename`?`Rename`:`Create`})]})]})})}async function vm(e,t){let{token:n}=await V.post(`${B(e)}/files/download/token`);bm(`${B(e)}/files/raw?path=${encodeURIComponent(t)}&download=true&dl_token=${encodeURIComponent(n)}`,t.split(`/`).pop()??`download`)}async function ym(e,t){let{token:n}=await V.post(`${B(e)}/files/download/token`),r=t.split(`/`).pop()??`folder`;bm(`${B(e)}/files/download/zip?path=${encodeURIComponent(t)}&dl_token=${encodeURIComponent(n)}`,`${r}.zip`)}function bm(e,t){let n=document.createElement(`a`);n.href=e,n.download=t,n.style.display=`none`,document.body.appendChild(n),n.click(),document.body.removeChild(n)}var xm={ts:qe,tsx:qe,js:qe,jsx:qe,py:qe,rs:qe,go:qe,json:Ke,md:Ye,txt:Ye,yaml:Xe,yml:Xe,html:qe,css:qe,scss:qe};function Sm(e){return xm[e.split(`.`).pop()?.toLowerCase()??``]??Ze}function Cm({node:e,depth:t,projectName:n,onAction:r,onFileOpen:i}){let{expandedPaths:s,toggleExpand:c,selectedFiles:l,toggleFileSelect:u}=Xp(),d=R(e=>e.openTab),f=s.has(e.path),p=e.type===`directory`,m=l.includes(e.path),h=e.ignored===!0;function g(t){if(p){c(e.path);return}if(t.metaKey||t.ctrlKey){u(e.path);return}let r=e.name.split(`.`).pop()?.toLowerCase()??``;d({type:r===`db`||r===`sqlite`||r===`sqlite3`?`sqlite`:`editor`,title:e.name,metadata:{filePath:e.path,projectName:n},projectId:n,closable:!0}),i?.()}let _=p?f?$e:nt:Sm(e.name),v=e.children?[...e.children].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1):[];return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)($p,{children:[(0,W.jsx)(em,{asChild:!0,children:(0,W.jsxs)(`button`,{onClick:g,className:z(`flex items-center w-full gap-1.5 px-2 py-1 rounded-sm text-sm`,`min-h-[32px] hover:bg-surface-elevated transition-colors text-left`,`select-none`,h&&`opacity-40`,m&&`bg-primary/15 ring-1 ring-primary/40`),style:{paddingLeft:`${t*16+8}px`},children:[p?f?(0,W.jsx)(je,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,W.jsx)(a,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,W.jsx)(`span`,{className:`w-3.5 shrink-0`}),(0,W.jsx)(_,{className:z(`size-4 shrink-0`,p?`text-primary`:`text-text-secondary`)}),(0,W.jsx)(`span`,{className:`truncate`,children:e.name})]})}),(0,W.jsxs)(tm,{children:[p&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(nm,{onClick:()=>r(`new-file`,e),children:`New File`}),(0,W.jsx)(nm,{onClick:()=>r(`new-folder`,e),children:`New Folder`}),(0,W.jsx)(rm,{})]}),(0,W.jsx)(nm,{onClick:()=>r(`rename`,e),children:`Rename`}),(0,W.jsx)(nm,{variant:`destructive`,onClick:()=>r(`delete`,e),children:`Delete`}),(0,W.jsx)(rm,{}),(0,W.jsx)(nm,{onClick:()=>r(`copy-path`,e),children:`Copy Path`}),(0,W.jsx)(rm,{}),(0,W.jsxs)(nm,{onClick:()=>r(`download`,e),children:[(0,W.jsx)(o,{className:`size-3.5 mr-2`}),`Download`,p?` as Zip`:``]}),!p&&l.length===2&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(rm,{}),(0,W.jsx)(nm,{onClick:()=>r(`compare-selected`,e),children:`Compare Selected`})]})]})]}),p&&f&&v.map(e=>(0,W.jsx)(Cm,{node:e,depth:t+1,projectName:n,onAction:r,onFileOpen:i},e.path))]})}function wm({onFileOpen:e}={}){let{tree:t,loading:n,error:r,fetchTree:i,reset:a,selectedFiles:o,clearSelection:s}=Xp(),c=Rf(e=>e.activeProject),l=R(e=>e.openTab),[u,d]=(0,U.useState)(null),f=(0,U.useCallback)(()=>{c&&i(c.name)},[c,i]);(0,U.useEffect)(()=>{c&&(a(),f())},[c?.name]),(0,U.useEffect)(()=>{let e=()=>{c&&i(c.name)};return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[c,i]);function p(e,t){if(e===`copy-path`){navigator.clipboard.writeText(t.path).catch(()=>{});return}if(e===`download`){t.type===`directory`?ym(c.name,t.path):vm(c.name,t.path);return}if(e===`compare-selected`&&o.length===2){let e=o[0],t=o[1];l({type:`git-diff`,title:`Compare ${le(e)} vs ${le(t)}`,closable:!0,metadata:{projectName:c.name,file1:e,file2:t},projectId:c.name}),s();return}d({action:e,node:t})}if(!c)return(0,W.jsx)(`div`,{className:`p-3 text-xs text-text-subtle`,children:`Select a project to browse files.`});if(n&&t.length===0)return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-xs text-text-secondary`,children:[(0,W.jsx)(H,{className:`size-3 animate-spin`}),`Loading files...`]});if(r)return(0,W.jsxs)(`div`,{className:`p-3 text-xs text-error`,children:[r,(0,W.jsx)(`button`,{onClick:f,className:`block mt-1 text-primary underline`,children:`Retry`})]});let m=[...t].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Zp,{className:`flex-1`,children:(0,W.jsxs)(`div`,{className:`py-1`,children:[m.map(t=>(0,W.jsx)(Cm,{node:t,depth:0,projectName:c.name,onAction:p,onFileOpen:e},t.path)),m.length===0&&(0,W.jsx)(`p`,{className:`p-3 text-xs text-text-subtle`,children:`Empty project.`})]})}),u&&(0,W.jsx)(_m,{action:u.action,node:u.node,projectName:c.name,onClose:()=>d(null),onRefresh:f})]})}function Tm({className:e,...t}){return(0,W.jsx)(Ts,{"data-slot":`label`,className:z(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Em({open:e,onOpenChange:t,projectName:n,onCreated:r}){let[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(`new`),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)([]),[m,h]=(0,U.useState)(!1),[g,_]=(0,U.useState)(null);(0,U.useEffect)(()=>{!e||!n||V.get(`${B(n)}/git/branches`).then(e=>{let t=e.filter(e=>!e.remote).map(e=>e.name);p(t),t.length>0&&!u&&d(t[0])}).catch(()=>p([]))},[e,n]);function v(){a(``),s(`new`),l(``),_(null)}function y(){v(),t(!1)}async function b(){if(!i.trim()){_(`Worktree path is required`);return}let e=o===`existing`?u:void 0,t=o===`new`&&c.trim()?c.trim():void 0;h(!0),_(null);try{await V.post(`${B(n)}/git/worktree/add`,{path:i.trim(),branch:e,newBranch:t}),r(),y()}catch(e){_(e instanceof Error?e.message:`Failed to create worktree`)}finally{h(!1)}}let x=(0,W.jsxs)(`div`,{className:`space-y-4`,children:[g&&(0,W.jsx)(`p`,{className:`text-xs text-destructive bg-destructive/10 px-3 py-2 rounded-md`,children:g}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{htmlFor:`wt-path`,children:`Worktree Path`}),(0,W.jsx)(gm,{id:`wt-path`,placeholder:`../my-feature`,value:i,onChange:e=>a(e.target.value),autoFocus:!0,className:`w-full`}),(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Relative or absolute path for the new worktree directory`})]}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(Tm,{children:`Branch`}),(0,W.jsxs)(`div`,{className:`flex gap-3`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`radio`,checked:o===`new`,onChange:()=>s(`new`),className:`accent-primary`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Create new branch`})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`radio`,checked:o===`existing`,onChange:()=>s(`existing`),className:`accent-primary`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Use existing branch`})]})]}),o===`new`?(0,W.jsx)(gm,{placeholder:`feature/my-branch`,value:c,onChange:e=>l(e.target.value),className:`w-full`}):(0,W.jsxs)(`select`,{value:u,onChange:e=>d(e.target.value),className:`w-full h-9 px-3 rounded-md border border-input bg-transparent text-sm focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,children:[f.length===0&&(0,W.jsx)(`option`,{value:``,children:`No branches available`}),f.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]})]}),S=(0,W.jsxs)(`div`,{className:`flex gap-2 justify-end pt-2`,children:[(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:y,disabled:m,children:`Cancel`}),(0,W.jsxs)($,{size:`sm`,onClick:b,disabled:m||!i.trim(),children:[m?(0,W.jsx)(H,{className:`size-3 animate-spin mr-1`}):null,`Create Worktree`]})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(sm,{open:e,onOpenChange:e=>{e||y()},children:(0,W.jsxs)(dm,{className:`hidden md:grid sm:max-w-md`,children:[(0,W.jsx)(fm,{children:(0,W.jsx)(mm,{children:`Add Worktree`})}),x,(0,W.jsx)(pm,{children:S})]})}),e&&(0,W.jsxs)(`div`,{className:`md:hidden`,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:y}),(0,W.jsxs)(`div`,{className:z(`fixed bottom-0 left-0 right-0 z-50 bg-background rounded-t-2xl border-t border-border shadow-2xl`,`animate-in slide-in-from-bottom-2 duration-200`),children:[(0,W.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,W.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,W.jsx)(`span`,{className:`text-sm font-semibold`,children:`Add Worktree`}),(0,W.jsx)(`button`,{onClick:y,className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,W.jsx)(rn,{className:`size-4`})})]}),(0,W.jsxs)(`div`,{className:`px-4 py-4 space-y-4 max-h-[70vh] overflow-y-auto`,children:[x,S]})]})]})]})}function Dm({projectName:e,projectPath:t}){let[n,r]=(0,U.useState)(!1),[i,o]=(0,U.useState)([]),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(!1),_=(0,U.useCallback)(async()=>{if(e){c(!0),u(null);try{o(await V.get(`${B(e)}/git/worktrees`))}catch(e){u(e instanceof Error?e.message:`Failed to load worktrees`)}finally{c(!1)}}},[e]);(0,U.useEffect)(()=>{n&&_()},[n,_]);async function v(t=!1){if(p){g(!0);try{await V.post(`${B(e)}/git/worktree/remove`,{path:p.path,force:t}),m(null),await _()}catch(e){u(e instanceof Error?e.message:`Failed to remove worktree`),m(null)}finally{g(!1)}}}async function y(){try{await V.post(`${B(e)}/git/worktree/prune`,{}),await _()}catch(e){u(e instanceof Error?e.message:`Prune failed`)}}return(0,W.jsxs)(`div`,{className:`border-t border-border`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center justify-between w-full px-3 py-2 hover:bg-muted/50 transition-colors`,onClick:()=>r(e=>!e),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n?(0,W.jsx)(je,{className:`size-3.5 text-muted-foreground`}):(0,W.jsx)(a,{className:`size-3.5 text-muted-foreground`}),(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:`Worktrees`}),i.length>0&&(0,W.jsx)(`span`,{className:`text-[10px] bg-muted text-muted-foreground rounded px-1`,children:i.length})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-0.5`,children:n&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{role:`button`,tabIndex:0,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground transition-colors`,onClick:e=>{e.stopPropagation(),y()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),y())},title:`Prune stale worktrees`,"aria-label":`Prune stale worktrees`,children:(0,W.jsx)(Lt,{className:z(`size-3`,s&&`animate-spin`)})}),(0,W.jsx)(`span`,{role:`button`,tabIndex:0,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground transition-colors`,onClick:e=>{e.stopPropagation(),f(!0)},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),f(!0))},title:`Add worktree`,"aria-label":`Add worktree`,children:(0,W.jsx)(Nt,{className:`size-3`})})]})})]}),n&&(0,W.jsxs)(`div`,{className:`pb-1`,children:[l&&(0,W.jsx)(`p`,{className:`text-xs text-destructive px-3 py-1`,children:l}),s&&i.length===0&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 text-muted-foreground`,children:[(0,W.jsx)(H,{className:`size-3.5 animate-spin`}),(0,W.jsx)(`span`,{className:`text-xs`,children:`Loading worktrees...`})]}),!s&&i.length===0&&!l&&(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground px-3 py-1`,children:`No worktrees found.`}),i.map(e=>(0,W.jsx)(Om,{worktree:e,isActive:!!t&&e.path===t,onRemove:()=>m(e)},e.path)),(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2 w-full px-3 py-2 text-xs text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors`,onClick:()=>f(!0),children:[(0,W.jsx)(Nt,{className:`size-3.5`}),`Add worktree`]})]}),(0,W.jsx)(Em,{open:d,onOpenChange:f,projectName:e,onCreated:_}),(0,W.jsx)(sm,{open:!!p,onOpenChange:e=>!e&&m(null),children:(0,W.jsxs)(dm,{showCloseButton:!1,children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{children:`Remove Worktree`}),(0,W.jsxs)(hm,{children:[`Remove worktree at`,` `,(0,W.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-muted text-xs font-mono`,children:p?.path}),p?.branch&&(0,W.jsxs)(W.Fragment,{children:[` (branch: `,(0,W.jsx)(`strong`,{children:p.branch}),`)`]}),`? The directory will be deleted.`]})]}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>m(null),disabled:h,children:`Cancel`}),(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>v(!0),disabled:h,children:h?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Force Remove`}),(0,W.jsx)($,{variant:`destructive`,size:`sm`,onClick:()=>v(!1),disabled:h,children:h?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Remove`})]})]})})]})}function Om({worktree:e,isActive:t,onRemove:n}){let r=e.branch||e.head.slice(0,7)||`detached`,i=e.path.replace(/^\/home\/[^/]+/,`~`);return(0,W.jsxs)(`div`,{className:z(`group flex items-center gap-2 px-3 py-1.5 hover:bg-muted/50 transition-colors`,t&&`bg-accent/10`),children:[(0,W.jsx)(rt,{className:`size-3.5 text-muted-foreground shrink-0`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-xs font-mono truncate`,title:e.branch,children:r}),t&&(0,W.jsx)(Ae,{className:`size-3 text-green-500 shrink-0`}),e.isMain&&(0,W.jsx)(`span`,{className:`text-[10px] bg-muted text-muted-foreground rounded px-1 shrink-0`,children:`main`}),e.locked&&(0,W.jsx)(`span`,{title:e.lockReason??`locked`,children:(0,W.jsx)(ht,{className:`size-3 text-yellow-500 shrink-0`})}),e.prunable&&(0,W.jsx)(`span`,{title:`stale/prunable`,children:(0,W.jsx)(Pe,{className:`size-3 text-destructive shrink-0`})})]}),(0,W.jsx)(`p`,{className:`text-[10px] text-muted-foreground truncate`,title:e.path,children:i})]}),!e.isMain&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-destructive opacity-0 group-hover:opacity-100 can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-all active:scale-95 shrink-0`,onClick:n,title:`Remove worktree`,"aria-label":`Remove worktree`,children:(0,W.jsx)(Xt,{className:`size-3`})})]})}function km({...e}){return(0,W.jsx)(hs,{"data-slot":`dropdown-menu`,...e})}function Am({...e}){return(0,W.jsx)(gs,{"data-slot":`dropdown-menu-trigger`,...e})}function jm({className:e,sideOffset:t=4,...n}){return(0,W.jsx)(_s,{children:(0,W.jsx)(vs,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:z(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 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`,e),...n})})}function Mm({className:e,inset:t,variant:n=`default`,...r}){return(0,W.jsx)(ys,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function Nm({...e}){return(0,W.jsx)(bs,{"data-slot":`dropdown-menu-sub`,...e})}function Pm({className:e,inset:t,children:n,...r}){return(0,W.jsxs)(xs,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:z(`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_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,W.jsx)(a,{className:`ml-auto size-4`})]})}function Fm({className:e,...t}){return(0,W.jsx)(Ss,{"data-slot":`dropdown-menu-sub-content`,className:z(`z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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`,e),...t})}var Im={M:`text-yellow-500`,A:`text-green-500`,D:`text-red-500`,R:`text-blue-500`,C:`text-purple-500`,"?":`text-gray-400`};function Lm(e){let t=[];for(let n of e){let e=n.path.split(`/`),r=t;for(let t=0;t<e.length;t++){let i=e[t],a=e.slice(0,t+1).join(`/`),o=t===e.length-1,s=r.find(e=>e.name===i);s||(s={name:i,fullPath:a,file:o?n:void 0,children:[]},r.push(s)),o&&(s.file=n),r=s.children}}return t}function Rm(e){let t=[];e.file&&t.push(e.file);for(let n of e.children)t.push(...Rm(n));return t}function zm({metadata:e,tabId:t,onNavigate:n}){let r=e?.projectName,[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!0),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(null),{openTab:g}=R(),_=Kn(e=>e.gitStatusViewMode),v=Kn(e=>e.setGitStatusViewMode),y=Rf(e=>e.projects.find(e=>e.name===r)?.path),b=(0,U.useCallback)(async()=>{if(r)try{s(!0),a(await V.get(`${B(r)}/git/status`)),l(null)}catch(e){l(e instanceof Error?e.message:`Failed to fetch status`)}finally{s(!1)}},[r]);(0,U.useEffect)(()=>{b();let e=setInterval(b,5e3);return()=>clearInterval(e)},[b]);let x=async e=>{if(r){p(!0);try{await V.post(`${B(r)}/git/stage`,{files:e}),await b()}catch(e){l(e instanceof Error?e.message:`Stage failed`)}finally{p(!1)}}},S=async e=>{if(r){p(!0);try{await V.post(`${B(r)}/git/unstage`,{files:e}),await b()}catch(e){l(e instanceof Error?e.message:`Unstage failed`)}finally{p(!1)}}},C=async e=>{if(r){p(!0);try{await V.post(`${B(r)}/git/discard`,{files:e}),await b()}catch(e){l(e instanceof Error?e.message:`Discard failed`)}finally{p(!1)}}},w=async()=>{m&&(await C(m.files),h(null))},T=async()=>{if(!(!r||!u.trim()||!i?.staged.length)){p(!0);try{await V.post(`${B(r)}/git/commit`,{message:u.trim()}),d(``),await b()}catch(e){l(e instanceof Error?e.message:`Commit failed`)}finally{p(!1)}}},E=async()=>{if(r){p(!0);try{await V.post(`${B(r)}/git/push`,{}),await b()}catch(e){l(e instanceof Error?e.message:`Push failed`)}finally{p(!1)}}},D=async()=>{if(r){p(!0);try{await V.post(`${B(r)}/git/pull`,{}),await b()}catch(e){l(e instanceof Error?e.message:`Pull failed`)}finally{p(!1)}}},O=e=>{g({type:`git-diff`,title:le(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},k=e=>{g({type:`editor`,title:le(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},A=(0,U.useMemo)(()=>[...i?.unstaged??[],...i?.untracked.map(e=>({path:e,status:`?`}))??[]],[i]);return r?o&&!i?(0,W.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-muted-foreground`,children:[(0,W.jsx)(H,{className:`size-5 animate-spin`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Loading git status...`})]}):c&&!i?(0,W.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-2 text-destructive text-sm`,children:[(0,W.jsx)(`p`,{children:c}),(0,W.jsx)($,{variant:`outline`,size:`sm`,onClick:b,children:`Retry`})]}):(0,W.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b shrink-0`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:i?.current?`On: ${i.current}`:`Git Status`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)($,{variant:_===`flat`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`flat`),title:`Flat view`,children:(0,W.jsx)(mt,{className:`size-3.5`})}),(0,W.jsx)($,{variant:_===`tree`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`tree`),title:`Tree view`,children:(0,W.jsx)(tt,{className:`size-3.5`})}),(0,W.jsx)($,{variant:`ghost`,size:`icon-xs`,onClick:b,disabled:f,children:(0,W.jsx)(Lt,{className:o?`animate-spin`:``})})]})]}),c&&(0,W.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-destructive bg-destructive/10 shrink-0`,children:c}),r&&(0,W.jsx)(Dm,{projectName:r,projectPath:y}),(0,W.jsx)(Zp,{className:`flex-1 overflow-hidden`,children:(0,W.jsxs)(`div`,{className:`p-1.5 space-y-2 overflow-hidden`,children:[(0,W.jsx)(Vm,{title:`Staged Changes`,count:i?.staged.length??0,files:i?.staged??[],viewMode:_,actionIcon:(0,W.jsx)(bt,{className:`size-3`}),actionAllIcon:(0,W.jsx)(bt,{className:`size-3`}),actionTitle:`Unstage`,onAction:e=>S([e.path]),onActionAll:i?.staged.length?()=>S(i.staged.map(e=>e.path)):void 0,actionAllLabel:`Unstage All`,onFolderAction:e=>S(e.map(e=>e.path)),onClickFile:O,onOpenFile:k,disabled:f}),(0,W.jsx)(Vm,{title:`Changes`,count:A.length,files:A,viewMode:_,actionIcon:(0,W.jsx)(Nt,{className:`size-3`}),actionAllIcon:(0,W.jsx)(Nt,{className:`size-3`}),actionTitle:`Stage`,onAction:e=>x([e.path]),onActionAll:A.length?()=>x(A.map(e=>e.path)):void 0,actionAllLabel:`Stage All`,onFolderAction:e=>x(e.map(e=>e.path)),onClickFile:O,onOpenFile:k,disabled:f,showRevert:!0,onRevert:e=>h({label:e.path,files:[e.path]}),onFolderRevert:(e,t)=>h({label:`${t}/ (${e.length} files)`,files:e.map(e=>e.path)})})]})}),(0,W.jsxs)(`div`,{className:`border-t p-2 space-y-2 shrink-0`,children:[(0,W.jsx)(`textarea`,{className:`w-full h-16 px-3 py-2 text-base md:text-sm text-foreground bg-surface border border-border rounded-lg resize-none focus:outline-none focus:border-ring placeholder:text-muted-foreground`,placeholder:`Commit message...`,value:u,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&T()}}),(0,W.jsx)($,{size:`sm`,className:`w-full`,disabled:f||!u.trim()||!i?.staged.length,onClick:T,children:f?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Commit (${i?.staged.length??0})`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:E,children:[(0,W.jsx)(Ce,{className:`size-3`}),`Push`]}),(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:D,children:[(0,W.jsx)(be,{className:`size-3`}),`Pull`]})]})]}),(0,W.jsx)(sm,{open:!!m,onOpenChange:e=>!e&&h(null),children:(0,W.jsxs)(dm,{showCloseButton:!1,children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{children:`Discard Changes`}),(0,W.jsxs)(hm,{children:[`Are you sure you want to discard all changes to`,` `,(0,W.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-muted text-sm font-mono`,children:m?.label}),`? This action cannot be undone.`]})]}),(0,W.jsxs)(pm,{children:[(0,W.jsx)($,{variant:`outline`,onClick:()=>h(null),children:`Cancel`}),(0,W.jsx)($,{variant:`destructive`,onClick:w,disabled:f,children:f?(0,W.jsx)(H,{className:`size-3 animate-spin`}):`Discard`})]})]})})]}):(0,W.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:`No project selected.`})}function Bm({showRevert:e,onRevert:t,onAction:n,onOpenFile:r,actionIcon:i,actionTitle:a,disabled:o}){return(0,W.jsxs)(`div`,{className:`hidden md:flex absolute right-0 top-0 bottom-0 items-center gap-0.5 pl-6 pr-1 bg-gradient-to-l from-background from-70% to-transparent can-hover:opacity-0 can-hover:group-hover:opacity-100 transition-opacity`,children:[r&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-primary active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),r()},disabled:o,title:`Open file`,children:(0,W.jsx)(Ye,{className:`size-3`})}),e&&t&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-destructive active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),t()},disabled:o,title:`Discard changes`,children:(0,W.jsx)(Qt,{className:`size-3`})}),(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),n()},disabled:o,title:a,children:i})]})}function Vm({title:e,count:t,files:n,viewMode:r,actionIcon:i,actionAllIcon:a,actionTitle:o,onAction:s,onActionAll:c,actionAllLabel:l,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g}){return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-0.5`,children:[(0,W.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:[e,` (`,t,`)`]}),c&&t>0&&(0,W.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:c,disabled:p,title:l,children:a})]}),n.length===0?(0,W.jsx)(`p`,{className:`text-xs text-muted-foreground px-1`,children:`No changes`}):r===`flat`?(0,W.jsx)(`div`,{className:`w-full overflow-hidden`,children:n.map(e=>(0,W.jsx)(Um,{file:e,actionIcon:i,actionTitle:o,onAction:s,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h},e.path))}):(0,W.jsx)(Wm,{files:n,actionIcon:i,actionTitle:o,onAction:s,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g})]})}function Hm(e,t,n=400){let r=(0,U.useRef)(null),i=(0,U.useRef)(!1),a=(0,U.useRef)(!1),o=(0,U.useCallback)(()=>{r.current&&=(clearTimeout(r.current),null)},[]);return{onTouchStart:(0,U.useCallback)(t=>{i.current=!1,a.current=!1,r.current=setTimeout(()=>{a.current=!0,e()},n)},[e,n]),onTouchMove:(0,U.useCallback)(()=>{i.current=!0,o()},[o]),onTouchEnd:(0,U.useCallback)(e=>{o(),!i.current&&!a.current&&(e.preventDefault(),t())},[o,t])}}function Um({file:e,actionIcon:t,actionTitle:n,onAction:r,onClickFile:i,onOpenFile:a,disabled:o,showRevert:s,onRevert:c,displayName:l}){let[u,d]=(0,U.useState)(!1),f=Hm((0,U.useCallback)(()=>d(!0),[]),(0,U.useCallback)(()=>i(e),[i,e])),p=(0,W.jsxs)(`div`,{className:`group relative flex items-center gap-1 hover:bg-muted/50 rounded pl-1 py-px w-full min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-xs font-mono w-4 text-center shrink-0 ${Im[e.status]??``}`,children:e.status}),(0,W.jsx)(`button`,{type:`button`,className:`hidden md:block flex-1 text-left text-xs font-mono truncate hover:underline min-w-0`,onClick:()=>i(e),title:e.path,children:l??e.path}),(0,W.jsx)(`span`,{className:`md:hidden flex-1 text-left text-xs font-mono truncate min-w-0 select-none`,children:l??e.path}),(0,W.jsx)(Bm,{showRevert:s,onRevert:c?()=>c(e):void 0,onOpenFile:a?()=>a(e):void 0,onAction:()=>r(e),actionIcon:t,actionTitle:n,disabled:o})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`hidden md:block`,children:p}),(0,W.jsx)(`div`,{className:`md:hidden select-none`,...f,children:(0,W.jsxs)(km,{open:u,onOpenChange:d,children:[(0,W.jsx)(Am,{asChild:!0,children:p}),(0,W.jsxs)(jm,{align:`start`,className:`min-w-40`,children:[(0,W.jsx)(Mm,{onClick:()=>i(e),children:`View Diff`}),a&&(0,W.jsx)(Mm,{onClick:()=>a(e),children:`Open File`}),(0,W.jsx)(Mm,{onClick:()=>r(e),disabled:o,children:n}),s&&c&&(0,W.jsx)(Mm,{className:`text-destructive focus:text-destructive`,onClick:()=>c(e),disabled:o,children:`Discard Changes`})]})]})})]})}function Wm({files:e,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u}){let d=(0,U.useMemo)(()=>Lm(e),[e]);return(0,W.jsx)(`div`,{children:d.map((e,f)=>(0,W.jsx)(Gm,{node:e,depth:0,isLast:f===d.length-1,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u},e.fullPath))})}function Gm({node:e,depth:t,isLast:n,actionIcon:r,actionTitle:i,onAction:o,onFolderAction:s,onClickFile:c,onOpenFile:l,disabled:u,showRevert:d,onRevert:f,onFolderRevert:p}){let[m,h]=(0,U.useState)(!0),g=e.children.length>0&&!e.file,_=t*12-6,v=`absolute border-dashed border-border`;if(e.file)return(0,W.jsxs)(`div`,{className:`relative`,style:{paddingLeft:t*12},children:[t>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`${v} border-l`,style:{left:_,top:0,bottom:n?`50%`:0}}),(0,W.jsx)(`div`,{className:`${v} border-t`,style:{left:_,top:`50%`,width:6}})]}),(0,W.jsx)(Um,{file:e.file,displayName:e.name,actionIcon:r,actionTitle:i,onAction:o,onClickFile:c,onOpenFile:l,disabled:u,showRevert:d,onRevert:f})]});if(g){let g=Rm(e);return(0,W.jsxs)(`div`,{className:`relative`,children:[t>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`${v} border-l`,style:{left:_,top:0,...n?{height:13}:{bottom:0}}}),(0,W.jsx)(`div`,{className:`${v} border-t`,style:{left:_,top:13,width:8}})]}),(()=>{let n=(0,W.jsxs)(`div`,{className:`group relative flex items-center hover:bg-muted/50 rounded py-0.5`,style:{paddingLeft:t*12+2},children:[(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 flex-1 min-w-0 text-xs font-mono text-muted-foreground`,onClick:()=>h(!m),children:[m?(0,W.jsx)(je,{className:`size-3.5 shrink-0`}):(0,W.jsx)(a,{className:`size-3.5 shrink-0`}),(0,W.jsx)(`span`,{className:`truncate font-semibold`,children:e.name}),(0,W.jsxs)(`span`,{className:`text-[10px] opacity-60 shrink-0`,children:[`(`,g.length,`)`]})]}),(0,W.jsx)(Bm,{showRevert:d,onRevert:p?()=>p(g,e.fullPath):void 0,onAction:()=>s?.(g),actionIcon:r,actionTitle:`${i} ${e.name}/`,disabled:u})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`hidden md:block`,children:n}),(0,W.jsx)(`div`,{className:`md:hidden`,children:(0,W.jsxs)(km,{children:[(0,W.jsx)(Am,{asChild:!0,children:n}),(0,W.jsxs)(jm,{align:`start`,className:`min-w-40`,children:[(0,W.jsxs)(Mm,{onClick:()=>s?.(g),disabled:u,children:[i,` `,e.name,`/`]}),p&&(0,W.jsx)(Mm,{className:`text-destructive focus:text-destructive`,onClick:()=>p(g,e.fullPath),disabled:u,children:`Discard Changes`})]})]})})]})})(),m&&(0,W.jsx)(`div`,{children:e.children.map((n,a)=>(0,W.jsx)(Gm,{node:n,depth:t+1,isLast:a===e.children.length-1,actionIcon:r,actionTitle:i,onAction:o,onFolderAction:s,onClickFile:c,onOpenFile:l,disabled:u,showRevert:d,onRevert:f,onFolderRevert:p},n.fullPath))})]})}return null}function Km({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,W.jsx)(X,{"data-slot":`separator`,decorative:n,orientation:t,className:z(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}function qm({...e}){return(0,W.jsx)(Tl,{"data-slot":`select`,...e})}function Jm({...e}){return(0,W.jsx)(Dl,{"data-slot":`select-value`,...e})}function Ym({className:e,size:t=`default`,children:n,...r}){return(0,W.jsxs)(El,{"data-slot":`select-trigger`,"data-size":t,className:z(`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,W.jsx)(Ol,{asChild:!0,children:(0,W.jsx)(je,{className:`size-4 opacity-50`})})]})}function Xm({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,W.jsx)(kl,{children:(0,W.jsxs)(Al,{"data-slot":`select-content`,className:z(`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,...i,children:[(0,W.jsx)(Qm,{}),(0,W.jsx)(jl,{className:z(`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,W.jsx)($m,{})]})})}function Zm({className:e,children:t,...n}){return(0,W.jsxs)(Ml,{"data-slot":`select-item`,className:z(`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,W.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,W.jsx)(Pl,{children:(0,W.jsx)(Ae,{className:`size-4`})})}),(0,W.jsx)(Nl,{children:t})]})}function Qm({className:e,...t}){return(0,W.jsx)(Fl,{"data-slot":`select-scroll-up-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,W.jsx)(Ne,{className:`size-4`})})}function $m({className:e,...t}){return(0,W.jsx)(Il,{"data-slot":`select-scroll-down-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,W.jsx)(je,{className:`size-4`})})}var eh=U.forwardRef(({className:e,...t},n)=>(0,W.jsx)(Xl,{className:z(`peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input`,e),...t,ref:n,children:(0,W.jsx)(Zl,{className:z(`pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})}));eh.displayName=Xl.displayName;var th={claude:`C`,cursor:`▶`,codex:`◆`,gemini:`G`};function nh({value:e,onChange:t,projectName:n}){let[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null),c=(0,U.useRef)(0);(0,U.useEffect)(()=>{n&&V.get(`${B(n)}/chat/providers`).then(i).catch(()=>{})},[n]),(0,U.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[a]),(0,U.useEffect)(()=>{a&&(c.current=Math.max(0,r.findIndex(t=>t.id===e)))},[a,e,r]);let l=(0,U.useCallback)(e=>{if(e.key===`Escape`){o(!1);return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;c.current=(c.current+t+r.length)%r.length,(s.current?.querySelector(`[data-idx="${c.current}"]`))?.focus()}if(e.key===`Enter`){e.preventDefault();let n=r[c.current];n&&(t(n.id),o(!1))}},[t,r]);if(r.length<=1)return null;let u=r.find(t=>t.id===e),d=th[e]||`?`;return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o(e=>!e)},className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-[11px] text-text-subtle hover:text-text-primary hover:bg-surface-elevated transition-colors border border-transparent hover:border-border`,"aria-label":`AI Provider: ${u?.name??e}`,children:[(0,W.jsx)(`span`,{className:`inline-flex h-3.5 w-3.5 items-center justify-center rounded text-[9px] font-bold bg-surface-elevated shrink-0`,children:d}),(0,W.jsx)(`span`,{className:`max-w-[80px] truncate capitalize`,children:u?.name??e})]}),a&&(0,W.jsxs)(`div`,{ref:s,role:`listbox`,"aria-label":`AI Providers`,onKeyDown:l,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),className:`absolute bottom-full left-0 mb-1 z-50 w-56 rounded-lg border border-border bg-surface shadow-lg`,children:[(0,W.jsx)(`div`,{className:`px-3 py-2 border-b border-border`,children:(0,W.jsx)(`span`,{className:`text-xs font-medium text-text-secondary`,children:`Provider`})}),(0,W.jsx)(`div`,{className:`py-1`,children:r.map((n,r)=>{let i=th[n.id]||`?`,a=n.id===e;return(0,W.jsxs)(`button`,{"data-idx":r,role:`option`,"aria-selected":a,tabIndex:0,onClick:()=>{t(n.id),o(!1)},className:`w-full flex items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-surface-elevated focus:bg-surface-elevated focus:outline-none ${a?`bg-surface-elevated`:``}`,children:[(0,W.jsx)(`span`,{className:`inline-flex h-5 w-5 items-center justify-center rounded text-[11px] font-bold bg-surface-elevated text-text-subtle shrink-0`,children:i}),(0,W.jsx)(`span`,{className:`flex-1 text-sm font-medium text-text-primary capitalize`,children:n.name}),a&&(0,W.jsx)(Ae,{className:`size-4 shrink-0 text-primary`})]},n.id)})})]})]})}function rh({providerId:e}){return(0,W.jsx)(`span`,{className:`inline-flex h-4 w-4 items-center justify-center rounded text-[10px] font-bold bg-surface-elevated text-text-subtle shrink-0`,title:e,children:th[e]||`?`})}var ih=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}],ah=[{value:`bypassPermissions`,label:`Bypass permissions (default)`},{value:`default`,label:`Ask before edits`},{value:`acceptEdits`,label:`Edit automatically`},{value:`plan`,label:`Plan mode`}],oh={claude:`Claude`,cursor:`Cursor`,codex:`Codex`,gemini:`Gemini`};function sh({compact:e}={}){let[t,n]=(0,U.useState)(null),[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)([]),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(0);(0,U.useEffect)(()=>{fe().then(e=>{n(e),i(e.default_provider??`claude`)}).catch(e=>f(e.message))},[]),(0,U.useEffect)(()=>{r&&(c(!0),V.get(`/api/settings/ai/providers/${r}/models`).then(o).catch(()=>o([])).finally(()=>c(!1)))},[r]);let h=t?Object.keys(t.providers).filter(e=>e!==`mock`).map(e=>({id:e,name:oh[e]??e})):[],g=t?.providers[r],_=g?.type===`agent-sdk`||!g?.type&&r===`claude`,v=async(e,i)=>{if(t){u(!0),f(null);try{n(await he({providers:{[r]:{[e]:i}}})),m(e=>e+1)}catch(e){f(e.message)}finally{u(!1)}}},y=e?`text-[11px]`:`text-sm`,b=e?`text-xs`:`text-sm`,x=e?`space-y-2`:`space-y-4`,S=e?`space-y-1.5`:`space-y-3`,C=e?`space-y-1`:`space-y-1.5`;if(!t)return(0,W.jsxs)(`div`,{className:S,children:[(0,W.jsx)(`h3`,{className:`${b} font-medium text-text-secondary`,children:`AI Settings`}),(0,W.jsx)(`p`,{className:`${y} text-text-subtle`,children:d?`Error: ${d}`:`Loading...`})]});let w=_?a:[{value:`__default__`,label:`Auto (default)`},...a];return(0,W.jsxs)(`div`,{className:x,children:[(0,W.jsx)(`h3`,{className:`${b} font-medium text-text-secondary`,children:`AI Settings`}),h.length>1&&(0,W.jsx)(`div`,{className:`flex gap-0.5 border-b border-border/50 -mx-1 px-1`,children:h.map(e=>(0,W.jsxs)(`button`,{onClick:()=>i(e.id),className:`flex items-center gap-1 px-2 py-1 text-[11px] rounded-t transition-colors ${r===e.id?`text-primary border-b-2 border-primary font-medium`:`text-text-subtle hover:text-text-secondary`}`,children:[(0,W.jsx)(rh,{providerId:e.id}),(0,W.jsx)(`span`,{className:`capitalize`,children:e.name})]},e.id))}),(0,W.jsxs)(`div`,{className:S,children:[a.length>0&&(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-model`,className:e?y:void 0,children:`Model`}),(0,W.jsxs)(qm,{value:_?g?.model??a[0]?.value:g?.model||`__default__`,onValueChange:e=>v(`model`,e===`__default__`?void 0:e),disabled:s,children:[(0,W.jsx)(Ym,{id:`ai-model`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,W.jsx)(Jm,{placeholder:s?`Loading models...`:`Select model`})}),(0,W.jsx)(Xm,{className:`max-h-[300px]`,children:w.map(e=>(0,W.jsx)(Zm,{value:e.value,children:e.label},e.value))})]})]}),_&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-base-url`,className:e?y:void 0,children:`Base URL`}),(0,W.jsx)(gm,{id:`ai-base-url`,type:`url`,defaultValue:g?.base_url??``,placeholder:`https://api.anthropic.com (default)`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{v(`base_url`,e.target.value.trim()||void 0)}},`baseurl-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-api-key`,className:e?y:void 0,children:`API Key / Token`}),(0,W.jsx)(gm,{id:`ai-api-key`,type:`password`,defaultValue:g?.api_key??``,placeholder:`sk-ant-... (optional, overrides accounts)`,className:e?`h-7 text-[11px] font-mono`:`font-mono`,onBlur:e=>{let t=e.target.value.trim();t.startsWith(`••••`)||v(`api_key`,t||void 0)}},`apikey-${r}-${p}`),(0,W.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Direct API key or OAuth token. Leave empty to use connected accounts.`})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-effort`,className:e?y:void 0,children:`Effort`}),(0,W.jsxs)(qm,{value:g?.effort??`high`,onValueChange:e=>v(`effort`,e),children:[(0,W.jsx)(Ym,{id:`ai-effort`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,W.jsx)(Jm,{})}),(0,W.jsx)(Xm,{children:ih.map(e=>(0,W.jsx)(Zm,{value:e.value,children:e.label},e.value))})]})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-max-turns`,className:e?y:void 0,children:`Max Turns (1-500)`}),(0,W.jsx)(gm,{id:`ai-max-turns`,type:`number`,min:1,max:500,defaultValue:g?.max_turns??100,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);isNaN(t)||v(`max_turns`,t)}},`turns-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-budget`,className:e?y:void 0,children:`Max Budget (USD)`}),(0,W.jsx)(gm,{id:`ai-budget`,type:`number`,step:.1,min:.01,max:50,defaultValue:g?.max_budget_usd??``,placeholder:`No limit`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseFloat(e.target.value);v(`max_budget_usd`,isNaN(t)?void 0:t)}},`budget-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-thinking`,className:e?y:void 0,children:`Thinking Budget (tokens)`}),(0,W.jsx)(gm,{id:`ai-thinking`,type:`number`,min:0,defaultValue:g?.thinking_budget_tokens??``,placeholder:`Disabled`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);v(`thinking_budget_tokens`,isNaN(t)?void 0:t)}},`thinking-${r}-${p}`)]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(Tm,{htmlFor:`ai-agent-teams`,className:e?y:void 0,children:`Agent Teams`}),(0,W.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Experimental. Enables multi-agent collaboration with shared tasks and messaging. Uses ~7x more tokens.`})]}),(0,W.jsx)(eh,{id:`ai-agent-teams`,checked:g?.agent_teams??!1,onCheckedChange:e=>v(`agent_teams`,e)})]}),g?.agent_teams&&(0,W.jsx)(ch,{compact:e})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-permission-mode`,className:e?y:void 0,children:`Default Permission Mode`}),(0,W.jsxs)(qm,{value:g?.permission_mode??`bypassPermissions`,onValueChange:e=>v(`permission_mode`,e),children:[(0,W.jsx)(Ym,{id:`ai-permission-mode`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,W.jsx)(Jm,{})}),(0,W.jsx)(Xm,{children:ah.map(e=>(0,W.jsx)(Zm,{value:e.value,children:e.label},e.value))})]})]}),(0,W.jsxs)(`div`,{className:C,children:[(0,W.jsx)(Tm,{htmlFor:`ai-system-prompt`,className:e?y:void 0,children:`Additional Instructions`}),(0,W.jsx)(`textarea`,{id:`ai-system-prompt`,rows:e?3:4,defaultValue:g?.system_prompt??``,placeholder:`Enter additional instructions for ${r}...`,className:`w-full rounded-md border border-input bg-background px-3 py-2 ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ${e?`text-[11px]`:`text-sm`}`,onBlur:e=>{v(`system_prompt`,e.target.value.trim()||void 0)}},`sysprompt-${r}-${p}`)]})]}),l&&(0,W.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Saving...`}),d&&(0,W.jsx)(`p`,{className:`text-xs text-red-500`,children:d})]})}function ch({compact:e}){let[t,n]=(0,U.useState)([]),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(null),s=(0,U.useCallback)(async()=>{i(!0);try{n(await V.get(`/api/teams`)??[])}catch{}i(!1)},[]);(0,U.useEffect)(()=>{s()},[s]);let c=async e=>{try{await V.del(`/api/teams/${encodeURIComponent(e)}`),n(t=>t.filter(t=>t.name!==e)),o(null)}catch{}};return t.length===0&&!r?null:(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(Tm,{className:e?`text-[11px]`:void 0,children:[`Teams (`,t.length,`)`]}),(0,W.jsx)(`button`,{onClick:s,className:`text-text-subtle hover:text-foreground p-1`,"aria-label":`Refresh teams`,children:(0,W.jsx)(Lt,{className:`size-3 ${r?`animate-spin`:``}`})})]}),t.map(e=>(0,W.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded bg-surface-elevated text-xs`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`font-medium truncate`,children:e.name}),e.description&&(0,W.jsx)(`div`,{className:`text-text-subtle truncate`,children:e.description}),(0,W.jsxs)(`div`,{className:`text-text-subtle`,children:[e.members?.length??e.memberCount??0,` members`,e.createdAt?` · ${new Date(e.createdAt).toLocaleDateString()}`:``]})]}),a===e.name?(0,W.jsxs)(`div`,{className:`flex gap-1 shrink-0 ml-2`,children:[(0,W.jsx)(`button`,{onClick:()=>c(e.name),className:`px-2 py-1 bg-red-600 text-white rounded text-[10px]`,children:`Delete`}),(0,W.jsx)(`button`,{onClick:()=>o(null),className:`px-2 py-1 bg-zinc-600 text-white rounded text-[10px]`,children:`Cancel`})]}):(0,W.jsx)(`button`,{onClick:()=>o(e.name),className:`shrink-0 text-text-subtle hover:text-red-500 p-1 ml-2`,"aria-label":`Delete team ${e.name}`,children:(0,W.jsx)(Xt,{className:`size-3.5`})})]},e.name))]})}var lh=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],uh=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function dh({actionId:e,combo:t,locked:n}){let[r,i]=(0,U.useState)(!1),a=yp(e=>e.setBinding),o=(0,U.useRef)(null),s=(0,U.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){i(!1);return}let n=vp(t);n&&(a(e,n),i(!1))},[e,a]);return(0,U.useEffect)(()=>{if(r)return document.addEventListener(`keydown`,s,!0),()=>document.removeEventListener(`keydown`,s,!0)},[r,s]),(0,U.useEffect)(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&i(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),n?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-border bg-muted px-2 py-0.5 text-[11px] font-mono text-muted-foreground`,children:[(0,W.jsx)(ht,{className:`size-2.5`}),_p(t)]}):r?(0,W.jsx)(`button`,{ref:o,className:`inline-flex items-center rounded border-2 border-primary bg-primary/10 px-2 py-0.5 text-[11px] font-mono text-primary animate-pulse`,children:`Press keys...`}):(0,W.jsx)(`button`,{ref:o,onClick:()=>i(!0),className:`inline-flex items-center rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-mono text-foreground hover:border-primary hover:bg-primary/5 transition-colors cursor-pointer`,title:`Click to change shortcut`,children:_p(t)})}function fh(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:r}=yp();return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(r).length>0&&(0,W.jsxs)($,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,W.jsx)(Bt,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,W.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-2.5 py-2`,children:[(0,W.jsx)(Zt,{className:`size-3.5 text-amber-500 shrink-0 mt-0.5`}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,uh.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),lh.map(n=>{let i=pp.filter(e=>e.category===n.key);return i.length===0?null:(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,W.jsx)(`div`,{className:`space-y-0.5`,children:i.map(n=>{let i=e(n.id),a=n.id in r;return(0,W.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,W.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,W.jsx)(dh,{actionId:n.id,combo:i,locked:n.locked}),a&&!n.locked&&(0,W.jsx)(`button`,{onClick:()=>t(n.id),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,W.jsx)(Bt,{className:`size-3`})})]})]},n.id)})})]},n.key)})]})}function ph(){let[e,t]=(0,U.useState)({bot_token:``,chat_id:``}),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null);(0,U.useEffect)(()=>{V.get(`/api/settings/telegram`).then(e=>{t(e),a(e.chat_id)}).catch(()=>{})},[]);let f=async()=>{s(!0),d(null);try{let e={chat_id:i};n&&(e.bot_token=n),t(await V.put(`/api/settings/telegram`,e)),r(``),d({type:`ok`,msg:`Saved`})}catch(e){d({type:`err`,msg:e.message})}finally{s(!1)}},p=async()=>{l(!0),d(null);try{await V.post(`/api/settings/telegram/test`,{...n?{bot_token:n}:{},...i?{chat_id:i}:{}}),d({type:`ok`,msg:`Test message sent!`})}catch(e){d({type:`err`,msg:e.message})}finally{l(!1)}},m=!!e.bot_token;return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`label`,{className:`text-[11px] text-text-subtle`,children:`Bot Token`}),(0,W.jsx)(gm,{type:`password`,placeholder:m?`•••••• (saved)`:`123456:ABC-DEF...`,value:n,onChange:e=>r(e.target.value),className:`h-7 text-xs`})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(`label`,{className:`text-[11px] text-text-subtle`,children:`Chat ID`}),(0,W.jsx)(gm,{placeholder:`-1001234567890`,value:i,onChange:e=>a(e.target.value),className:`h-7 text-xs`}),(0,W.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`Personal or group chat ID`})]}),(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsx)($,{variant:`default`,size:`sm`,className:`h-7 text-xs flex-1`,disabled:o||!n&&!i,onClick:f,children:o?`...`:`Save`}),(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`h-7 text-xs gap-1`,disabled:c||!m,onClick:p,children:[(0,W.jsx)(Ht,{className:`size-3`}),c?`...`:`Test`]})]}),u&&(0,W.jsx)(`p`,{className:`text-[11px] ${u.type===`ok`?`text-green-600 dark:text-green-400`:`text-destructive`}`,children:u.msg})]})}var mh=`Hello! Reply briefly.`,hh=`claude-sonnet-4-6`;function gh(e){let[t,n]=(0,U.useState)(!1);return(0,W.jsxs)(sm,{open:t,onOpenChange:n,children:[(0,W.jsx)(cm,{asChild:!0,children:(0,W.jsxs)($,{variant:`outline`,size:`sm`,className:`h-7 text-[11px] gap-1.5 cursor-pointer`,children:[(0,W.jsx)(Qe,{className:`size-3`}),`Test`]})}),(0,W.jsxs)(dm,{className:`sm:max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,W.jsxs)(fm,{children:[(0,W.jsx)(mm,{className:`text-sm`,children:`Test Proxy`}),(0,W.jsx)(hm,{className:`text-[11px]`,children:`Send a test request and inspect the raw response.`})]}),(0,W.jsx)(_h,{...e})]})]})}function _h({authKey:e,baseUrl:t}){let[n,r]=(0,U.useState)(`anthropic`),[i,a]=(0,U.useState)(mh),[o,s]=(0,U.useState)(hh),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(null),g=(0,U.useRef)(null),_=(0,U.useRef)(null);(0,U.useEffect)(()=>{g.current?.select()},[]),(0,U.useEffect)(()=>{_.current&&(_.current.scrollTop=_.current.scrollHeight)},[u]);let v=n===`anthropic`?`${t}/proxy/v1/messages`:`${t}/proxy/v1/chat/completions`,y=async()=>{l(!0),d(null),p(null),h(null);let t=Date.now(),r=n===`anthropic`,a=JSON.stringify({model:o,max_tokens:256,stream:!0,messages:[{role:`user`,content:i}]}),s={"Content-Type":`application/json`};r?(s[`x-api-key`]=e,s[`anthropic-version`]=`2023-06-01`):s.Authorization=`Bearer ${e}`;try{let e=await fetch(v,{method:`POST`,headers:s,body:a});if(!e.ok){let n=await e.text();p(`HTTP ${e.status}: ${n}`),l(!1),h(Date.now()-t);return}let n=e.body?.getReader();if(!n){p(`No response body`),l(!1);return}let r=new TextDecoder,i=``;for(;;){let{done:e,value:t}=await n.read();if(e)break;i+=r.decode(t,{stream:!0}),d(i)}h(Date.now()-t)}catch(e){p(e.message)}finally{l(!1),h(e=>e??Date.now()-t)}};return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Endpoint Format`}),(0,W.jsx)(`div`,{className:`flex gap-1`,children:[`anthropic`,`openai`].map(e=>(0,W.jsx)(`button`,{onClick:()=>r(e),className:`flex-1 h-8 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${n===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e===`anthropic`?`Anthropic`:`OpenAI`},e))}),(0,W.jsx)(`code`,{className:`block text-[9px] font-mono text-muted-foreground truncate`,children:v})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Model`}),(0,W.jsxs)(`select`,{value:o,onChange:e=>s(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-[11px]`,children:[(0,W.jsx)(`option`,{value:`claude-sonnet-4-6`,children:`claude-sonnet-4-6`}),(0,W.jsx)(`option`,{value:`claude-haiku-4-5-20251001`,children:`claude-haiku-4-5`}),(0,W.jsx)(`option`,{value:`claude-opus-4-6`,children:`claude-opus-4-6`})]})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Message`}),(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsx)(gm,{ref:g,value:i,onChange:e=>a(e.target.value),placeholder:`Type a test message...`,className:`h-9 text-[11px] flex-1`,onKeyDown:e=>{e.key===`Enter`&&!c&&y()}}),(0,W.jsxs)($,{size:`sm`,className:`h-9 px-3 cursor-pointer shrink-0`,onClick:y,disabled:c||!i.trim(),children:[c?(0,W.jsx)(H,{className:`size-3.5 animate-spin`}):(0,W.jsx)(jt,{className:`size-3.5`}),(0,W.jsx)(`span`,{className:`ml-1 text-[11px]`,children:c?`...`:`Send`})]})]})]}),(u||f)&&(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Raw Response`}),m!=null&&(0,W.jsxs)(`span`,{className:`text-[9px] font-mono text-muted-foreground`,children:[(m/1e3).toFixed(1),`s`]})]}),f?(0,W.jsx)(`pre`,{className:`text-[9px] font-mono bg-red-500/10 text-red-500 p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:f}):(0,W.jsx)(`pre`,{ref:_,className:`text-[9px] font-mono bg-muted p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:u})]})]})}function vh(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!0),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null);(0,U.useEffect)(()=>{r(!0),pe().then(t).catch(e=>s(e.message)).finally(()=>r(!1))},[]);let u=async e=>{a(!0),s(null);try{t(await me(e))}catch(e){s(e.message)}finally{a(!1)}},d=(e,t)=>{navigator.clipboard.writeText(e),l(t),setTimeout(()=>l(null),2e3)};if(n||!e)return(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`API Proxy`}),(0,W.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:o?`Error: ${o}`:`Loading...`})]});let f=!!e.authKey,p=!!e.tunnelUrl,m=e.localEndpoint,h=m.replace(/\/proxy\/v1\/messages$/,``);return(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(`div`,{className:`space-y-1.5`,children:(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Expose your Claude accounts as an Anthropic-compatible API endpoint. External tools (OpenCode, Cursor, etc.) can use your accounts via this proxy.`})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,W.jsx)(Tm,{className:`text-xs`,children:`Enable Proxy`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Accept API requests on /proxy/v1/messages`})]}),(0,W.jsx)(eh,{checked:e.enabled,onCheckedChange:e=>u({enabled:e}),disabled:i})]}),(0,W.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,W.jsx)(Tm,{className:`text-[11px]`,children:`Auth Key`}),f?(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsx)(gm,{readOnly:!0,value:e.authKey,className:`h-7 text-[11px] font-mono flex-1`}),(0,W.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>d(e.authKey,`key`),children:c===`key`?`Copied!`:(0,W.jsx)(Ve,{className:`size-3`})}),(0,W.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>u({generateKey:!0}),disabled:i,children:(0,W.jsx)(Lt,{className:`size-3`})})]}):(0,W.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,onClick:()=>u({generateKey:!0}),disabled:i,children:`Generate Auth Key`}),(0,W.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Use as Bearer token or x-api-key when calling the proxy.`})]}),e.enabled&&f&&(0,W.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3 bg-muted/30`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`h4`,{className:`text-[11px] font-medium`,children:`Connection Info`}),(0,W.jsx)(gh,{authKey:e.authKey,baseUrl:window.location.origin})]}),(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Local Endpoint`}),(0,W.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,W.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:m}),(0,W.jsx)($,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>d(m,`local`),children:c===`local`?`Copied!`:(0,W.jsx)(Ve,{className:`size-3`})})]})]}),p&&e.proxyEndpoint&&(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Public Endpoint (Tunnel)`}),(0,W.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,W.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:e.proxyEndpoint}),(0,W.jsx)($,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>d(e.proxyEndpoint,`tunnel`),children:c===`tunnel`?`Copied!`:(0,W.jsx)(Ve,{className:`size-3`})})]})]}),!p&&(0,W.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Start a Cloudflare tunnel (Share) to get a public URL.`}),(0,W.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,W.jsx)(Tm,{className:`text-[10px] text-muted-foreground`,children:`Usage Example`}),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:`# Set as base URL in your tool
20
20
  ANTHROPIC_BASE_URL=${p?e.tunnelUrl+`/proxy`:h+`/proxy`}
21
21
  ANTHROPIC_API_KEY=${e.authKey}
22
22
 
@@ -34,4 +34,4 @@ curl ${p?e.proxyEndpoint:m} \\
34
34
  <rect width="32" height="32" rx="6" fill="#3b82f6"/>
35
35
  <text x="16" y="22" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="700" font-size="11" fill="white">PPM</text>
36
36
  <circle cx="26" cy="6" r="5" fill="#ef4444"/>
37
- </svg>`,O_=`data:image/svg+xml,${encodeURIComponent(E_)}`,k_=`data:image/svg+xml,${encodeURIComponent(D_)}`;function A_(e){let t=document.getElementById(`ppm-favicon`);t&&(t.href=e?k_:O_)}function j_(e,t,n){let r=[t,n||null,`PPM`].filter(Boolean).join(` - `);return e>0?`(${e}) ${r}`:r}function M_(){let e=Rf(e=>e.activeProject),t=Kn(e=>e.deviceName);(0,U.useEffect)(()=>{let n=()=>{let n=Ep(Tp.getState());document.title=j_(n,e?.name,t??void 0),A_(n>0)};return n(),Tp.subscribe(n)},[e?.name,t])}var N_=15e3,P_=ae((e,t)=>({isDown:!1,downSince:null,showOverlay:!1,markDown:()=>{let{downSince:n}=t(),r=Date.now(),i=n??r;e({isDown:!0,downSince:i,showOverlay:r-i>=N_})},markUp:()=>{e({isDown:!1,downSince:null,showOverlay:!1})}})),F_=1e4,I_=2e3;function L_(){(0,U.useEffect)(()=>{let e=!1,t,{markDown:n,markUp:r}=P_.getState();async function i(){try{let t=await fetch(`/api/health`,{cache:`no-store`});if(t.ok&&e){if(r(),`caches`in window){let e=await caches.keys();await Promise.all(e.map(e=>caches.delete(e)))}window.location.reload();return}t.ok&&r(),e=!1}catch{e=!0,n()}t=setTimeout(i,e?I_:F_)}return t=setTimeout(i,F_),()=>clearTimeout(t)},[])}var R_=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent);function z_(e){return e?e.replace(/Mod\+/g,R_?`⌘`:`Ctrl+`).replace(/Alt\+/g,R_?`⌥`:`Alt+`).replace(/Shift\+/g,R_?`⇧`:`Shift+`).replace(/Meta\+/g,`⌘`).replace(/Ctrl\+/g,R_?`⌃`:`Ctrl+`):``}function B_(e){let t=[];for(let n of e)n.type===`file`&&t.push({name:n.name,path:n.path}),n.children&&t.push(...B_(n.children));return t}function V_(e){return e?e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`~\\`)||/^[A-Za-z]:[/\\]/.test(e):!1}function H_(e){let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return e;let n=Math.max(t.lastIndexOf(`/`),e.lastIndexOf(`\\`));return n>0?e.slice(0,n+1):e}var U_=new Map;function W_({open:e,onClose:t,initialQuery:n=``}){let[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)(0),[s,c]=(0,U.useState)([]),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)([]),p=(0,U.useRef)(null),m=(0,U.useRef)(null),h=R(e=>e.openTab),g=Rf(e=>e.activeProject),_=Xp(e=>e.tree),v=Kn(e=>e.setSidebarActiveTab),y=Kn(e=>e.sidebarCollapsed),b=Kn(e=>e.toggleSidebar),x=yp(e=>e.getBinding),S=Yp(e=>e.contributions),C=(0,U.useCallback)(async e=>{if(U_.has(e)){c(U_.get(e));return}u(!0);try{let t=await V.get(`/api/fs/list?dir=${encodeURIComponent(e)}`);U_.set(e,t),c(t)}catch{c([])}finally{u(!1)}},[]);(0,U.useEffect)(()=>{if(!V_(r)){c([]);return}C(H_(r))},[r,C]),(0,U.useEffect)(()=>{if(V_(r)||r.trim().length<2){f([]);return}let e=setTimeout(async()=>{try{f(await V.get(`/api/db/search?q=${encodeURIComponent(r.trim())}`)??[])}catch{f([])}},300);return()=>clearTimeout(e)},[r]);let w=(0,U.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0,r=(r,i)=>()=>{h({type:r,title:i,projectId:e,metadata:n,closable:!0}),t()},i=[{id:`chat`,label:`New AI Chat`,icon:vt,action:r(`chat`,`AI Chat`),keywords:`ai assistant claude`,group:`action`,shortcut:z_(x(`open-chat`))},{id:`terminal`,label:`New Terminal`,icon:Yt,action:r(`terminal`,`Terminal`),keywords:`bash shell console`,group:`action`,shortcut:z_(x(`open-terminal`))},{id:`git-graph`,label:`Git Graph`,icon:rt,action:r(`git-graph`,`Git Graph`),keywords:`branch history log`,group:`action`,shortcut:z_(x(`open-git-graph`))},{id:`browser`,label:`Open Browser`,icon:at,action:r(`browser`,`Browser`),keywords:`web preview localhost iframe url`,group:`action`},{id:`postgres`,label:`PostgreSQL`,icon:He,action:r(`postgres`,`PostgreSQL`),keywords:`database pg sql query`,group:`action`},{id:`voice-input`,label:`Voice Input`,icon:yt,action:()=>{window.dispatchEvent(new CustomEvent(`toggle-voice-input`)),t()},keywords:`speech microphone dictate voice`,group:`action`,shortcut:z_(x(`voice-input`))},{id:`git-status`,label:`Git Status`,icon:it,action:()=>{v(`git`),t()},keywords:`changes diff staged`,group:`action`,shortcut:z_(x(`open-git-status`))},{id:`settings`,label:`Settings`,icon:Gt,action:()=>{y&&b(),v(`settings`),t()},keywords:`config preferences theme`,group:`action`,shortcut:z_(x(`open-settings`))}],a=(S?.commands??[]).map(e=>({id:`ext:${e.command}`,label:e.title,hint:e.category,icon:It,group:`action`,keywords:`extension ${e.command} ${e.category??``}`,action:()=>{console.log(`[CmdPalette] ext command:`,e.command),t()}}));return[...i,...a]},[g,h,t,v,y,b,x,S]),T=(0,U.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return B_(_).map(r=>({id:`file:${r.path}`,label:r.name,hint:r.path,icon:qe,group:`file`,keywords:r.path,action:()=>{h({type:`editor`,title:r.name,projectId:e,metadata:{...n,filePath:r.path},closable:!0}),t()}}))},[_,g,h,t]),E=(0,U.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return s.map(r=>{let i=le(r);return{id:`fs:${r}`,label:i,hint:r,icon:$e,group:`fs`,keywords:r,action:()=>{h({type:`editor`,title:i,projectId:e,metadata:{...n,filePath:r},closable:!0}),t()}}})},[s,g,h,t]),D=(0,U.useMemo)(()=>d.map(e=>({id:`db:${e.connectionId}:${e.schemaName}.${e.tableName}`,label:e.tableName,hint:`${e.connectionName} (${e.connectionType===`postgres`?`PG`:`SQLite`})`,icon:He,group:`db`,connectionColor:e.connectionColor,action:()=>{h({type:`database`,title:`${e.connectionName} · ${e.tableName}`,projectId:null,closable:!0,metadata:{connectionId:e.connectionId,connectionName:e.connectionName,dbType:e.connectionType,tableName:e.tableName,schemaName:e.schemaName,connectionColor:e.connectionColor}}),t()}})),[d,h,t]),O=(0,U.useMemo)(()=>[...w,...T],[w,T]),k=(0,U.useMemo)(()=>{if(V_(r)){let e=r.lastIndexOf(`/`),t=e>=0?r.slice(e+1).toLowerCase():``;return t?E.filter(e=>{let n=e.label.toLowerCase(),r=(e.keywords??``).toLowerCase();return n.includes(t)||r.includes(t)}).slice(0,50):E.slice(0,50)}if(!r.trim())return w;let e=r.toLowerCase(),t=t=>{let n=0;for(let r=0;r<e.length;r++){if(n=t.indexOf(e[r],n),n===-1)return!1;n++}return!0},n=O.filter(e=>t(e.label.toLowerCase())||e.keywords&&t(e.keywords.toLowerCase()));return r.trim().length>=2?[...D,...n]:n},[O,w,E,D,r]);(0,U.useEffect)(()=>{e&&(i(n||``),o(0),c([]),f([]),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,U.useEffect)(()=>{o(e=>Math.min(e,Math.max(k.length-1,0)))},[k.length]),(0,U.useEffect)(()=>{let e=m.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let A=(0,U.useCallback)(()=>{r.trim()&&(h({type:`chat`,title:`AI Chat`,projectId:g?.name??null,metadata:{projectName:g?.name,pendingMessage:r.trim()},closable:!0}),t())},[r,g,h,t]);function j(e){let n=k.length;switch(e.key){case`ArrowDown`:e.preventDefault(),n>0&&o(e=>(e+1)%n);break;case`ArrowUp`:e.preventDefault(),n>0&&o(e=>(e-1+n)%n);break;case`Enter`:e.preventDefault(),n>0?k[a]?.action():r.trim()&&A();break;case`Escape`:e.preventDefault(),t();break}}if(!e)return null;let M=V_(r);return(0,W.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:t,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,W.jsxs)(`div`,{className:`relative z-10 w-full max-w-md rounded-t-xl md:rounded-xl border border-border bg-background shadow-2xl overflow-hidden max-h-[80vh] md:max-h-none`,onClick:e=>e.stopPropagation(),onKeyDown:j,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,W.jsx)(Vt,{className:`size-4 text-text-subtle shrink-0`}),(0,W.jsx)(`input`,{ref:p,type:`text`,value:r,onChange:e=>i(e.target.value),placeholder:`Search actions & files... (type / or ~/ for filesystem)`,className:`flex-1 bg-transparent text-sm text-text-primary outline-none placeholder:text-text-subtle`}),l&&(0,W.jsx)(H,{className:`size-3.5 animate-spin text-text-subtle shrink-0`}),(0,W.jsx)(`kbd`,{className:`hidden sm:inline-flex items-center rounded border border-border bg-surface px-1.5 py-0.5 text-[10px] text-text-subtle font-mono`,children:`ESC`})]}),M&&!l&&s.length===0&&r.length<4&&(0,W.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-subtle border-b border-border/50`,children:`Type a directory path to browse files (e.g. ~/Projects/)`}),(0,W.jsx)(`div`,{ref:m,className:`max-h-72 overflow-y-auto py-1`,children:k.length===0?l?(0,W.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`Searching...`}):r.trim()?(0,W.jsxs)(`button`,{onClick:A,className:`flex items-center gap-3 w-full px-3 py-3 text-sm text-left text-text-secondary hover:bg-accent/15 hover:text-text-primary transition-colors`,children:[(0,W.jsx)(vt,{className:`size-4 shrink-0 text-accent`}),(0,W.jsxs)(`span`,{children:[`Ask AI: `,(0,W.jsx)(`span`,{className:`text-text-primary font-medium`,children:r.trim().slice(0,60)})]})]}):(0,W.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`No results`}):k.map((e,t)=>{let n=e.icon;return(0,W.jsxs)(`button`,{onClick:e.action,className:`flex items-center gap-3 w-full px-3 py-2 text-sm text-left transition-colors ${t===a?`bg-accent/15 text-text-primary`:`text-text-secondary hover:bg-surface-elevated`}`,children:[(0,W.jsx)(n,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.label}),e.hint&&(0,W.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-xs text-text-subtle truncate max-w-[200px]`,children:[e.connectionColor&&(0,W.jsx)(`span`,{className:`shrink-0 size-2 rounded-full`,style:{backgroundColor:e.connectionColor}}),e.hint]}),e.shortcut&&(0,W.jsx)(`kbd`,{className:`ml-auto shrink-0 rounded border border-border bg-surface px-1.5 py-0.5 text-[10px] text-text-subtle font-mono`,children:e.shortcut})]},e.id)})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 border-t border-border px-3 py-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`Press`}),(0,W.jsx)(`kbd`,{className:`inline-flex items-center rounded border border-border bg-surface px-1 py-0.5 text-[10px] text-text-subtle font-mono`,children:`Shift`}),(0,W.jsx)(`kbd`,{className:`inline-flex items-center rounded border border-border bg-surface px-1 py-0.5 text-[10px] text-text-subtle font-mono`,children:`Shift`}),(0,W.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`to open this palette`})]})]})]})}function G_(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!1);(0,U.useEffect)(()=>{function e(e){let n=e.detail;n&&(t(n),r(!1))}return window.addEventListener(`open-bug-report`,e),()=>window.removeEventListener(`open-bug-report`,e)},[]);let i=(0,U.useCallback)(()=>t(null),[]);return e?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:i}),(0,W.jsxs)(`div`,{className:`fixed inset-4 md:inset-auto md:top-[15%] md:left-1/2 md:-translate-x-1/2 md:w-full md:max-w-lg md:max-h-[70vh] z-50 flex flex-col bg-background border border-border rounded-lg shadow-2xl overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Bug Report`}),(0,W.jsx)(`button`,{onClick:i,className:`p-1 rounded hover:bg-surface-elevated`,children:(0,W.jsx)(rn,{className:`size-4`})})]}),(0,W.jsx)(`pre`,{className:`flex-1 overflow-auto px-4 py-2 text-xs font-mono whitespace-pre-wrap break-all`,children:e}),(0,W.jsxs)(`div`,{className:`flex gap-2 p-3 border-t border-border`,children:[(0,W.jsxs)(`button`,{onClick:async()=>{await e_(e)&&r(!0)},className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-surface-elevated text-xs text-foreground hover:bg-surface transition-colors`,children:[n?(0,W.jsx)(Ae,{className:`size-3`}):(0,W.jsx)(Ve,{className:`size-3`}),n?`Copied`:`Copy`]}),(0,W.jsxs)(`button`,{onClick:()=>{$g(e),i()},className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-xs hover:bg-primary/90 transition-colors`,children:[(0,W.jsx)(ne,{className:`size-3`}),`Open GitHub Issue`]})]})]})]}):null}var K_=6e4,q_=`ppm-upgrade-dismissed-`;function J_({onVisibilityChange:e}){let[t,n]=(0,U.useState)(null),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let e;async function t(){try{let e=await V.get(`/api/upgrade`);if(e.availableVersion){n(e.availableVersion);let t=q_+e.availableVersion;sessionStorage.getItem(t)?o(!0):o(!1)}else n(null)}catch{}}return t(),e=setInterval(t,K_),()=>clearInterval(e)},[]);let s=(0,U.useCallback)(async()=>{i(!0);try{await V.post(`/api/upgrade/apply`)}catch(e){wn.error(`Upgrade failed: ${e.message}`),i(!1)}},[]),c=(0,U.useCallback)(()=>{t&&sessionStorage.setItem(q_+t,`1`),o(!0)},[t]),l=!!t&&!a;return(0,U.useEffect)(()=>{e?.(l)},[l,e]),l?(0,W.jsx)(`div`,{className:`w-full bg-blue-600 dark:bg-blue-700 text-white px-3 py-1 flex items-center justify-between gap-2 z-50 text-sm shrink-0`,children:r?(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,W.jsx)(H,{className:`size-4 animate-spin shrink-0`}),(0,W.jsxs)(`span`,{className:`truncate`,children:[`Upgrading to v`,t,`... PPM will restart shortly`]})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,W.jsx)(Fe,{className:`size-4 shrink-0`}),(0,W.jsxs)(`span`,{className:`truncate`,children:[`PPM v`,t,` available`]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,W.jsx)(`button`,{onClick:s,className:`bg-white text-blue-600 font-medium rounded-full px-3 py-0.5 text-xs min-h-[28px] min-w-[28px] flex items-center justify-center hover:bg-blue-50 active:bg-blue-100 transition-colors`,children:`Upgrade`}),(0,W.jsx)(`button`,{onClick:c,className:`min-h-[28px] min-w-[28px] flex items-center justify-center rounded-full hover:bg-blue-500 active:bg-blue-800 transition-colors`,"aria-label":`Dismiss upgrade notification`,children:(0,W.jsx)(rn,{className:`size-4`})})]})]})}):null}var Y_=ae(e=>({src:null,alt:``,open:(t,n=``)=>e({src:t,alt:n}),close:()=>e({src:null,alt:``})}));function X_(){let{src:e,alt:t,close:n}=Y_(),r=(0,U.useCallback)(e=>{e.key===`Escape`&&n()},[n]);return(0,U.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,r),()=>document.removeEventListener(`keydown`,r)},[e,r]),e?(0,W.jsxs)(`div`,{className:`fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm animate-in fade-in duration-150`,onClick:n,children:[(0,W.jsx)(`button`,{onClick:n,className:`absolute top-4 right-4 z-10 flex items-center justify-center size-8 rounded-full bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Close`,children:(0,W.jsx)(rn,{className:`size-5`})}),(0,W.jsx)(`img`,{src:e,alt:t,className:`max-w-[90vw] max-h-[90vh] object-contain rounded-lg shadow-2xl`,onClick:e=>e.stopPropagation()})]}):null}var Z_=ae(e=>({svg:null,open:t=>e({svg:t}),close:()=>e({svg:null})})),Q_=.25,$_=4,ev=.25;function tv(){let{svg:e,close:t}=Z_(),n=(0,U.useRef)(null),[r,i]=(0,U.useState)(1),[a,o]=(0,U.useState)({x:0,y:0}),s=(0,U.useRef)(!1),c=(0,U.useRef)({x:0,y:0});(0,U.useEffect)(()=>{e&&(i(1),o({x:0,y:0}))},[e]);let l=(0,U.useCallback)(e=>{e.key===`Escape`&&t(),(e.key===`=`||e.key===`+`)&&i(e=>Math.min($_,e+ev)),e.key===`-`&&i(e=>Math.max(Q_,e-ev)),e.key===`0`&&(i(1),o({x:0,y:0}))},[t]);(0,U.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,l),()=>document.removeEventListener(`keydown`,l)},[e,l]);let u=(0,U.useCallback)(e=>{e.preventDefault();let t=e.deltaY>0?-ev:ev;i(e=>Math.min($_,Math.max(Q_,e+t)))},[]),d=(0,U.useCallback)(e=>{e.button===0&&(s.current=!0,c.current={x:e.clientX,y:e.clientY},e.target.setPointerCapture(e.pointerId))},[]),f=(0,U.useCallback)(e=>{if(!s.current)return;let t=e.clientX-c.current.x,n=e.clientY-c.current.y;c.current={x:e.clientX,y:e.clientY},o(e=>({x:e.x+t,y:e.y+n}))},[]),p=(0,U.useCallback)(()=>{s.current=!1},[]);return e?(0,W.jsxs)(`div`,{className:`fixed inset-0 z-[100] flex flex-col bg-black/85 backdrop-blur-sm animate-in fade-in duration-150`,onClick:t,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-black/40`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`span`,{className:`text-sm text-white/70`,children:[Math.round(r*100),`% — Scroll to zoom, drag to pan, 0 to reset`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`button`,{onClick:()=>i(e=>Math.max(Q_,e-ev)),className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Zoom out`,children:(0,W.jsx)(on,{className:`size-4`})}),(0,W.jsx)(`button`,{onClick:()=>i(e=>Math.min($_,e+ev)),className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Zoom in`,children:(0,W.jsx)(an,{className:`size-4`})}),(0,W.jsx)(`button`,{onClick:()=>{i(1),o({x:0,y:0})},className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Reset zoom`,children:(0,W.jsx)(Bt,{className:`size-4`})}),(0,W.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors ml-2`,"aria-label":`Close`,children:(0,W.jsx)(rn,{className:`size-5`})})]})]}),(0,W.jsx)(`div`,{ref:n,className:`flex-1 overflow-hidden cursor-grab active:cursor-grabbing`,onClick:e=>e.stopPropagation(),onWheel:u,onPointerDown:d,onPointerMove:f,onPointerUp:p,children:(0,W.jsx)(`div`,{className:`w-full h-full flex items-center justify-center`,style:{transform:`translate(${a.x}px, ${a.y}px) scale(${r})`,transformOrigin:`center center`},children:(0,W.jsx)(`div`,{className:`mermaid-overlay-content bg-white rounded-lg p-6 shadow-2xl [&_svg]:max-w-full [&_svg]:h-auto`,dangerouslySetInnerHTML:{__html:e}})})})]}):null}var nv=`https://ppm.hienle.tech`;function rv(){return window.location.hostname.endsWith(`.trycloudflare.com`)}function iv(){let e=P_(e=>e.showOverlay),[t,n]=(0,U.useState)(!1);if(!e)return null;let r=rv();async function i(){n(!0);try{if((await fetch(`/api/health`,{cache:`no-store`})).ok){if(P_.getState().markUp(),`caches`in window){let e=await caches.keys();await Promise.all(e.map(e=>caches.delete(e)))}window.location.reload();return}}catch{}n(!1)}return(0,W.jsx)(`div`,{className:`fixed inset-0 z-[200] bg-background/95 backdrop-blur-sm flex items-center justify-center p-4`,children:(0,W.jsxs)(`div`,{className:`max-w-sm w-full text-center space-y-6`,children:[(0,W.jsx)(`div`,{className:`flex justify-center`,children:(0,W.jsx)(`div`,{className:`rounded-full bg-destructive/10 p-4`,children:(0,W.jsx)(r?nn:Ut,{className:`h-10 w-10 text-destructive`})})}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:r?`Connection Lost`:`Server Unreachable`}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground leading-relaxed`,children:r?`The tunnel appears to have closed. The server may have restarted with a new URL.`:`Cannot connect to the PPM server. It may have stopped or is restarting.`})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[r&&(0,W.jsx)(`a`,{href:nv,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center justify-center rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:`Open PPM Cloud`}),(0,W.jsxs)(`button`,{onClick:i,disabled:t,className:`inline-flex items-center justify-center gap-2 rounded-md border border-border px-4 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors disabled:opacity-50`,children:[(0,W.jsx)(Lt,{className:`h-4 w-4 ${t?`animate-spin`:``}`}),t?`Retrying…`:`Retry Connection`]})]}),!r&&(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`If the server was stopped, run `,(0,W.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded text-[11px]`,children:`ppm start`}),` to restart it.`]})]})})}function av(){let e=Yp(e=>e.statusBarItems),t=e.filter(e=>e.alignment===`left`).sort((e,t)=>t.priority-e.priority),n=e.filter(e=>e.alignment===`right`).sort((e,t)=>t.priority-e.priority);return(0,W.jsxs)(`div`,{className:`hidden md:flex items-center justify-between h-[22px] px-2 bg-surface border-t border-border text-[11px] text-text-subtle select-none shrink-0`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:t.map(e=>(0,W.jsx)(ov,{item:e},e.id))}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:n.map(e=>(0,W.jsx)(ov,{item:e},e.id))})]})}function ov({item:e}){let t=(0,W.jsx)(`button`,{className:`truncate px-1 rounded-sm transition-colors ${e.command?`hover:bg-accent/15 hover:text-text-primary cursor-pointer`:`cursor-default`}`,onClick:()=>{e.command&&window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e.command}}))},children:e.text});return e.tooltip?(0,W.jsxs)(zu,{children:[(0,W.jsx)(Bu,{asChild:!0,children:t}),(0,W.jsx)(Vu,{side:`top`,className:`text-xs`,children:e.tooltip})]}):t}function sv(){let e=Yp(e=>e.quickPick),t=Yp(e=>e.resolveQuickPick);return e?(0,W.jsx)(cv,{items:e.items,options:e.options,onSelect:e=>t(e),onCancel:()=>t(void 0)}):null}function cv({items:e,options:t,onSelect:n,onCancel:r}){let[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(0),[c,l]=(0,U.useState)(()=>{let t=new Set;return e.forEach((e,n)=>{e.picked&&t.add(n)}),t}),u=(0,U.useRef)(null),d=(0,U.useRef)(null),f=t.canPickMany??!1;(0,U.useEffect)(()=>{requestAnimationFrame(()=>u.current?.focus())},[]);let p=(0,U.useMemo)(()=>{if(!i.trim())return e.map((e,t)=>({item:e,originalIdx:t}));let t=i.toLowerCase();return e.map((e,t)=>({item:e,originalIdx:t})).filter(({item:e})=>e.label.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t)||e.detail?.toLowerCase().includes(t))},[e,i]);(0,U.useEffect)(()=>{s(e=>Math.min(e,Math.max(p.length-1,0)))},[p.length]),(0,U.useEffect)(()=>{(d.current?.children[o])?.scrollIntoView({block:`nearest`})},[o]);let m=(0,U.useCallback)(()=>{f?n(e.filter((e,t)=>c.has(t))):p[o]&&n([p[o].item])},[f,c,e,p,o,n]);function h(e){switch(e.key){case`ArrowDown`:e.preventDefault(),p.length>0&&s(e=>(e+1)%p.length);break;case`ArrowUp`:e.preventDefault(),p.length>0&&s(e=>(e-1+p.length)%p.length);break;case` `:if(f&&p[o]){e.preventDefault();let t=p[o].originalIdx;l(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}break;case`Enter`:e.preventDefault(),m();break;case`Escape`:e.preventDefault(),r();break}}return(0,W.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:r,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,W.jsxs)(`div`,{className:`relative z-10 w-full max-w-md rounded-t-xl md:rounded-xl border border-border bg-background shadow-2xl overflow-hidden max-h-[80vh] md:max-h-none`,onClick:e=>e.stopPropagation(),onKeyDown:h,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,W.jsx)(Vt,{className:`size-4 text-text-subtle shrink-0`}),(0,W.jsx)(`input`,{ref:u,type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:t.placeholder??`Select an item...`,className:`flex-1 bg-transparent text-sm text-text-primary outline-none placeholder:text-text-subtle`}),(0,W.jsx)(`kbd`,{className:`hidden sm:inline-flex items-center rounded border border-border bg-surface px-1.5 py-0.5 text-[10px] text-text-subtle font-mono`,children:`ESC`})]}),(0,W.jsx)(`div`,{ref:d,className:`max-h-72 overflow-y-auto py-1`,children:p.length===0?(0,W.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`No matching items`}):p.map(({item:e,originalIdx:t},r)=>(0,W.jsxs)(`button`,{onClick:()=>{f?l(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}):n([e])},className:z(`flex items-center gap-3 w-full px-3 py-2 text-sm text-left transition-colors`,r===o?`bg-accent/15 text-text-primary`:`text-text-secondary hover:bg-surface-elevated`),children:[f&&(0,W.jsx)(`span`,{className:z(`size-4 shrink-0 rounded border flex items-center justify-center`,c.has(t)?`bg-primary border-primary text-primary-foreground`:`border-border`),children:c.has(t)&&(0,W.jsx)(Ae,{className:`size-3`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate`,children:e.label}),e.description&&(0,W.jsx)(`span`,{className:`text-xs text-text-subtle ml-2`,children:e.description}),e.detail&&(0,W.jsx)(`div`,{className:`text-xs text-text-subtle truncate mt-0.5`,children:e.detail})]})]},t))}),f&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-3 py-1.5`,children:[(0,W.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[c.size,` selected`]}),(0,W.jsx)(`button`,{onClick:m,className:`text-xs text-primary hover:text-primary/80 font-medium`,children:`Confirm`})]})]})]})}function lv(){let e=Yp(e=>e.inputBox),t=Yp(e=>e.resolveInputBox);return e?(0,W.jsx)(uv,{options:e.options,onConfirm:e=>t(e),onCancel:()=>t(void 0)}):null}function uv({options:e,onConfirm:t,onCancel:n}){let[r,i]=(0,U.useState)(e.value??``),a=(0,U.useRef)(null);(0,U.useEffect)(()=>{requestAnimationFrame(()=>{a.current?.focus(),a.current?.select()})},[]);function o(e){e.key===`Enter`?(e.preventDefault(),t(r)):e.key===`Escape`&&(e.preventDefault(),n())}return(0,W.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:n,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,W.jsxs)(`div`,{className:`relative z-10 w-full max-w-md rounded-t-xl md:rounded-xl border border-border bg-background shadow-2xl overflow-hidden`,onClick:e=>e.stopPropagation(),children:[e.prompt&&(0,W.jsx)(`div`,{className:`px-3 pt-3 pb-1 text-sm text-text-primary`,children:e.prompt}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 px-3 py-2.5`,children:(0,W.jsx)(`input`,{ref:a,type:e.password?`password`:`text`,value:r,onChange:e=>i(e.target.value),onKeyDown:o,placeholder:e.placeholder??``,className:`flex-1 bg-surface border border-border rounded px-2 py-1.5 text-sm text-text-primary outline-none focus:border-primary placeholder:text-text-subtle`})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-border px-3 py-2`,children:[(0,W.jsx)(`button`,{onClick:n,className:`px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors rounded`,children:`Cancel`}),(0,W.jsx)(`button`,{onClick:()=>t(r),className:`px-3 py-1.5 text-xs bg-primary text-primary-foreground rounded hover:bg-primary/90 transition-colors font-medium`,children:`OK`})]})]})]})}var dv=3e4,fv=1e3,pv=class{ws=null;url;handlers=[];reconnectAttempts=0;reconnectTimer=null;intentionalClose=!1;pendingMessages=[];visibilityHandler=null;constructor(e){this.url=e,this.visibilityHandler=()=>{document.visibilityState===`visible`&&!this.intentionalClose&&this.ws?.readyState!==WebSocket.OPEN&&(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.reconnectAttempts=0,this.connect())},document.addEventListener(`visibilitychange`,this.visibilityHandler)}connect(){this.intentionalClose=!1,this.cleanup();let e=window.location.protocol===`https:`?`wss:`:`ws:`,t=this.url.startsWith(`ws`)?this.url:`${e}//${window.location.host}${this.url}`;this.ws=new WebSocket(t),this.ws.onopen=()=>{this.reconnectAttempts=0;try{this.ws?.send(JSON.stringify({type:`ready`}))}catch{}if(this.pendingMessages.length>0){console.log(`[ws] flushing ${this.pendingMessages.length} queued message(s)`);for(let e of this.pendingMessages)try{this.ws?.send(e)}catch{}this.pendingMessages=[]}},this.ws.onmessage=e=>{for(let t of this.handlers)t(e)},this.ws.onclose=()=>{this.intentionalClose||this.scheduleReconnect()},this.ws.onerror=()=>{this.ws?.close()}}disconnect(){this.intentionalClose=!0,this.pendingMessages=[],this.cleanup(),this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.visibilityHandler&&=(document.removeEventListener(`visibilitychange`,this.visibilityHandler),null)}send(e){this.ws?.readyState===WebSocket.OPEN?this.ws.send(e):this.ws?.readyState===WebSocket.CONNECTING?(console.warn(`[ws] WS still CONNECTING — queuing message`),this.pendingMessages.push(e)):console.warn(`[ws] message dropped — readyState=${this.ws?.readyState??`no-ws`}`)}onMessage(e){return this.handlers.push(e),()=>{this.handlers=this.handlers.filter(t=>t!==e)}}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}cleanup(){this.ws&&=(this.ws.onopen=null,this.ws.onclose=null,this.ws.onmessage=null,this.ws.onerror=null,(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)&&this.ws.close(),null)}scheduleReconnect(){let e=Math.min(fv*2**this.reconnectAttempts,dv);this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>this.connect(),e)}};function mv(e=!0){let t=(0,U.useRef)(null),n=(0,U.useCallback)(e=>{t.current?.send(JSON.stringify(e))},[]);return(0,U.useEffect)(()=>{if(!e)return;let r=de(),i=new pv(r?`/ws/extensions?token=${encodeURIComponent(r)}`:`/ws/extensions`);t.current=i,i.onMessage(e=>{let t;try{t=JSON.parse(e.data)}catch{return}let r=Yp.getState();switch(t.type){case`contributions:update`:r.setContributions(t.contributions);break;case`statusbar:update`:r.addStatusBarItem(t.item);break;case`statusbar:remove`:r.removeStatusBarItem(t.itemId);break;case`tree:update`:t.parentId?r.updateTreeChildren(t.viewId,t.parentId,t.items):r.updateTree(t.viewId,t.items);break;case`tree:refresh`:r.removeTree(t.viewId);break;case`notification`:{let e=t.level===`error`?wn.error:t.level===`warn`?wn.warning:wn.info;if(t.actions&&t.actions.length>0){let r={action:{label:t.actions[0],onClick:()=>n({type:`notification:action`,id:t.id,action:t.actions[0]??null})},onDismiss:()=>n({type:`notification:action`,id:t.id,action:null})};t.actions.length>1&&(r.cancel={label:t.actions[1],onClick:()=>n({type:`notification:action`,id:t.id,action:t.actions[1]??null})}),e(t.message,r)}else e(t.message);break}case`quickpick:show`:r.showQuickPick(t.items,t.options).then(e=>{n({type:`quickpick:resolve`,requestId:t.requestId,selected:e??null})});break;case`inputbox:show`:r.showInputBox(t.options).then(e=>{n({type:`inputbox:resolve`,requestId:t.requestId,value:e??null})});break;case`webview:create`:r.addWebviewPanel({id:t.panelId,extensionId:t.extensionId,viewType:t.viewType,title:t.title,html:``}),R.getState().openTab({type:`extension-webview`,title:t.title,projectId:null,closable:!0,metadata:{panelId:t.panelId,extensionId:t.extensionId}});break;case`webview:html`:r.updateWebviewPanel(t.panelId,{html:t.html});break;case`webview:dispose`:r.removeWebviewPanel(t.panelId);break;case`webview:postMessage`:window.dispatchEvent(new CustomEvent(`ext:webview:message`,{detail:{panelId:t.panelId,message:t.message}}));break}});let a=e=>{let{panelId:t,message:n}=e.detail;i.send(JSON.stringify({type:`webview:message`,panelId:t,message:n}))};window.addEventListener(`ext:webview:send`,a);let o=e=>{let{viewId:t,itemId:n}=e.detail;i.send(JSON.stringify({type:`tree:expand`,viewId:t,itemId:n}))};window.addEventListener(`ext:tree:expand`,o);let s=e=>{let{command:t,args:n}=e.detail;i.send(JSON.stringify({type:`command:execute`,command:t,args:n}))};return window.addEventListener(`ext:command:execute`,s),i.connect(),()=>{window.removeEventListener(`ext:webview:send`,a),window.removeEventListener(`ext:tree:expand`,o),window.removeEventListener(`ext:command:execute`,s),i.disconnect(),t.current=null}},[n,e]),{send:n}}function hv(){let[e,t]=(0,U.useState)(`checking`),[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(),[c,l]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let e=()=>{s(`settings`),a(!0)};return window.addEventListener(`open-mobile-settings`,e),()=>window.removeEventListener(`open-mobile-settings`,e)},[]);let[u,d]=(0,U.useState)(()=>new Set([`__global__`])),f=Kn(e=>e.theme),p=Kn(e=>e.deviceName),m=Rf(e=>e.fetchProjects),h=Kn(e=>e.fetchServerInfo),g=Rf(e=>e.activeProject),_=(0,U.useRef)(y_());(0,U.useEffect)(()=>{if(Wn(f),f===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>Wn(`system`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)}},[f]),(0,U.useEffect)(()=>{h()},[h]),(0,U.useEffect)(()=>{async function e(){let e=de();try{let n={};e&&(n.Authorization=`Bearer ${e}`),(await(await fetch(`/api/auth/check`,{headers:n})).json()).ok?t(`authenticated`):t(`unauthenticated`)}catch{t(`unauthenticated`)}}e()},[]),T_();let{paletteOpen:v,paletteInitialQuery:y,closePalette:b}=xp();M_(),L_(),mv(e===`authenticated`),(0,U.useEffect)(()=>{if(e!==`authenticated`)return;let t=e=>{e.preventDefault()};return window.addEventListener(`beforeunload`,t),()=>window.removeEventListener(`beforeunload`,t)},[e]),(0,U.useEffect)(()=>{e===`authenticated`&&oe(async()=>{let{useKeybindingsStore:e}=await import(`./keybindings-store-Ch4LMTQO.js`);return{useKeybindingsStore:e}},__vite__mapDeps([53,6,1,2])).then(({useKeybindingsStore:e})=>{e.getState().loadFromServer()})},[e]),(0,U.useEffect)(()=>{e===`authenticated`&&m().then(async()=>{let e=_.current,{projects:t,customOrder:n}=Rf.getState();if(t.length===0)return;let r=e.projectName?t.find(t=>t.name===e.projectName):void 0;if(r||=Lf(t,n)[0],!r)return;let i=await re(r.name);if(i){let e=localStorage.getItem(`ppm-panels-${r.name}`),t=L(e?JSON.parse(e):null,i);t&&t===i&&localStorage.setItem(`ppm-panels-${r.name}`,JSON.stringify(i))}Rf.getState().setActiveProject(r),queueMicrotask(()=>{if(e.tabType&&w_(e.tabType,e.tabIdentifier,r.name),e.openChat){w_(`chat`,e.openChat,r.name);let t=new URL(window.location.href);t.searchParams.delete(`openChat`),window.history.replaceState(null,``,t.pathname)}})})},[e,m]),(0,U.useEffect)(()=>{let e=g?.name??`__global__`;R.getState().switchProject(e)},[g?.name]),(0,U.useEffect)(()=>{let e=g?.name??`__global__`;d(t=>t.has(e)?t:new Set([...t,e]))},[g?.name]),(0,U.useEffect)(()=>{e===`authenticated`&&!g&&R.getState().switchProject(`__global__`)},[e,g]);let x=(0,U.useCallback)(()=>{t(`authenticated`)},[]);if(e===`checking`)return(0,W.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background`,children:(0,W.jsx)(`div`,{className:`animate-pulse text-text-secondary text-sm`,children:`Loading...`})});if(e===`unauthenticated`)return(0,W.jsx)(__,{onSuccess:x});let S=g?.name??`__global__`;return(0,W.jsx)(Ru,{children:(0,W.jsxs)(`div`,{className:`h-dvh flex flex-col bg-background text-foreground overflow-hidden relative`,children:[(0,W.jsx)(J_,{onVisibilityChange:r}),p&&(0,W.jsx)(`div`,{className:z(`md:hidden fixed left-0 z-50 px-2 py-0.5 bg-primary/80 text-primary-foreground text-[10px] font-medium rounded-br transition-[top]`,n?`top-7`:`top-0`),children:p}),(0,W.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,W.jsx)(c_,{}),(0,W.jsx)(xg,{}),(0,W.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[[...u].map(e=>(0,W.jsx)(`div`,{className:z(`flex-1 overflow-hidden pb-12 md:pb-0`,S!==e&&`hidden`),children:(0,W.jsx)(Gp,{projectName:e})},e)),(0,W.jsx)(av,{})]})]}),(0,W.jsx)(f_,{onMenuPress:()=>a(!0),onProjectsPress:()=>l(!0)}),(0,W.jsx)(m_,{isOpen:i,onClose:()=>{a(!1),s(void 0)},initialTab:o}),(0,W.jsx)(g_,{isOpen:c,onClose:()=>l(!1)}),(0,W.jsx)(W_,{open:v,onClose:b,initialQuery:y}),(0,W.jsx)(G_,{}),(0,W.jsx)(X_,{}),(0,W.jsx)(tv,{}),(0,W.jsx)(sv,{}),(0,W.jsx)(lv,{}),(0,W.jsx)(iv,{}),(0,W.jsx)(qn,{position:`bottom-left`,closeButton:!0,toastOptions:{className:`bg-surface border-border text-foreground`}})]})})}(0,sn.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(U.StrictMode,{children:(0,W.jsx)(hv,{})}));export{Bt as $,mm as A,Oe as At,bp as B,vm as C,Le as Ct,hm as D,Me as Dt,dm as E,Ne as Et,rm as F,Rf as G,vp as H,em as I,en as J,Kn as K,Xp as L,$p as M,we as Mt,tm as N,Ce as Nt,pm as O,je as Ot,nm as P,Vt as Q,Yp as R,Tm as S,ze as St,sm as T,Pe as Tt,_p as U,pp as V,yp as W,Yt as X,Xt as Y,Gt as Z,Mm as _,qe as _t,Bh as a,Ot as at,Pm as b,He as bt,nh as c,vt as ct,Xm as d,at as dt,Lt as et,Zm as f,rt as ft,jm as g,Ye as gt,km as h,Xe as ht,t_ as i,kt as it,$ as j,De as jt,fm as k,Ae as kt,eh as l,ht as lt,Jm as m,Ze as mt,Z_ as n,jt as nt,sh as o,Dt as ot,Ym as p,nt as pt,rn as q,Y_ as r,At as rt,rh as s,yt as st,pv as t,Nt as tt,qm as u,H as ut,Nm as v,Ke as vt,gm as w,Ie as wt,Am as x,Ve as xt,Fm as y,Ge as yt,Tp as z};
37
+ </svg>`,O_=`data:image/svg+xml,${encodeURIComponent(E_)}`,k_=`data:image/svg+xml,${encodeURIComponent(D_)}`;function A_(e){let t=document.getElementById(`ppm-favicon`);t&&(t.href=e?k_:O_)}function j_(e,t,n){let r=[t,n||null,`PPM`].filter(Boolean).join(` - `);return e>0?`(${e}) ${r}`:r}function M_(){let e=Rf(e=>e.activeProject),t=Kn(e=>e.deviceName);(0,U.useEffect)(()=>{let n=()=>{let n=Ep(Tp.getState());document.title=j_(n,e?.name,t??void 0),A_(n>0)};return n(),Tp.subscribe(n)},[e?.name,t])}var N_=15e3,P_=ae((e,t)=>({isDown:!1,downSince:null,showOverlay:!1,markDown:()=>{let{downSince:n}=t(),r=Date.now(),i=n??r;e({isDown:!0,downSince:i,showOverlay:r-i>=N_})},markUp:()=>{e({isDown:!1,downSince:null,showOverlay:!1})}})),F_=1e4,I_=2e3;function L_(){(0,U.useEffect)(()=>{let e=!1,t,{markDown:n,markUp:r}=P_.getState();async function i(){try{let t=await fetch(`/api/health`,{cache:`no-store`});if(t.ok&&e){if(r(),`caches`in window){let e=await caches.keys();await Promise.all(e.map(e=>caches.delete(e)))}window.location.reload();return}t.ok&&r(),e=!1}catch{e=!0,n()}t=setTimeout(i,e?I_:F_)}return t=setTimeout(i,F_),()=>clearTimeout(t)},[])}var R_=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent);function z_(e){return e?e.replace(/Mod\+/g,R_?`⌘`:`Ctrl+`).replace(/Alt\+/g,R_?`⌥`:`Alt+`).replace(/Shift\+/g,R_?`⇧`:`Shift+`).replace(/Meta\+/g,`⌘`).replace(/Ctrl\+/g,R_?`⌃`:`Ctrl+`):``}function B_(e){let t=[];for(let n of e)n.type===`file`&&t.push({name:n.name,path:n.path}),n.children&&t.push(...B_(n.children));return t}function V_(e){return e?e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`~\\`)||/^[A-Za-z]:[/\\]/.test(e):!1}function H_(e){let t=e.replace(/\\/g,`/`);if(t.endsWith(`/`))return e;let n=Math.max(t.lastIndexOf(`/`),e.lastIndexOf(`\\`));return n>0?e.slice(0,n+1):e}var U_=new Map;function W_({open:e,onClose:t,initialQuery:n=``}){let[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)(0),[s,c]=(0,U.useState)([]),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)([]),p=(0,U.useRef)(null),m=(0,U.useRef)(null),h=R(e=>e.openTab),g=Rf(e=>e.activeProject),_=Xp(e=>e.tree),v=Kn(e=>e.setSidebarActiveTab),y=Kn(e=>e.sidebarCollapsed),b=Kn(e=>e.toggleSidebar),x=yp(e=>e.getBinding),S=Yp(e=>e.contributions),C=(0,U.useCallback)(async e=>{if(U_.has(e)){c(U_.get(e));return}u(!0);try{let t=await V.get(`/api/fs/list?dir=${encodeURIComponent(e)}`);U_.set(e,t),c(t)}catch{c([])}finally{u(!1)}},[]);(0,U.useEffect)(()=>{if(!V_(r)){c([]);return}C(H_(r))},[r,C]),(0,U.useEffect)(()=>{if(V_(r)||r.trim().length<2){f([]);return}let e=setTimeout(async()=>{try{f(await V.get(`/api/db/search?q=${encodeURIComponent(r.trim())}`)??[])}catch{f([])}},300);return()=>clearTimeout(e)},[r]);let w=(0,U.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0,r=(r,i)=>()=>{h({type:r,title:i,projectId:e,metadata:n,closable:!0}),t()},i=[{id:`chat`,label:`New AI Chat`,icon:vt,action:r(`chat`,`AI Chat`),keywords:`ai assistant claude`,group:`action`,shortcut:z_(x(`open-chat`))},{id:`terminal`,label:`New Terminal`,icon:Yt,action:r(`terminal`,`Terminal`),keywords:`bash shell console`,group:`action`,shortcut:z_(x(`open-terminal`))},{id:`git-graph`,label:`Git Graph`,icon:rt,action:r(`git-graph`,`Git Graph`),keywords:`branch history log`,group:`action`,shortcut:z_(x(`open-git-graph`))},{id:`browser`,label:`Open Browser`,icon:at,action:r(`browser`,`Browser`),keywords:`web preview localhost iframe url`,group:`action`},{id:`postgres`,label:`PostgreSQL`,icon:He,action:r(`postgres`,`PostgreSQL`),keywords:`database pg sql query`,group:`action`},{id:`voice-input`,label:`Voice Input`,icon:yt,action:()=>{window.dispatchEvent(new CustomEvent(`toggle-voice-input`)),t()},keywords:`speech microphone dictate voice`,group:`action`,shortcut:z_(x(`voice-input`))},{id:`git-status`,label:`Git Status`,icon:it,action:()=>{v(`git`),t()},keywords:`changes diff staged`,group:`action`,shortcut:z_(x(`open-git-status`))},{id:`settings`,label:`Settings`,icon:Gt,action:()=>{y&&b(),v(`settings`),t()},keywords:`config preferences theme`,group:`action`,shortcut:z_(x(`open-settings`))}],a=(S?.commands??[]).map(e=>({id:`ext:${e.command}`,label:e.title,hint:e.category,icon:It,group:`action`,keywords:`extension ${e.command} ${e.category??``}`,action:()=>{console.log(`[CmdPalette] ext command:`,e.command),t()}}));return[...i,...a]},[g,h,t,v,y,b,x,S]),T=(0,U.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return B_(_).map(r=>({id:`file:${r.path}`,label:r.name,hint:r.path,icon:qe,group:`file`,keywords:r.path,action:()=>{h({type:`editor`,title:r.name,projectId:e,metadata:{...n,filePath:r.path},closable:!0}),t()}}))},[_,g,h,t]),E=(0,U.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return s.map(r=>{let i=le(r);return{id:`fs:${r}`,label:i,hint:r,icon:$e,group:`fs`,keywords:r,action:()=>{h({type:`editor`,title:i,projectId:e,metadata:{...n,filePath:r},closable:!0}),t()}}})},[s,g,h,t]),D=(0,U.useMemo)(()=>d.map(e=>({id:`db:${e.connectionId}:${e.schemaName}.${e.tableName}`,label:e.tableName,hint:`${e.connectionName} (${e.connectionType===`postgres`?`PG`:`SQLite`})`,icon:He,group:`db`,connectionColor:e.connectionColor,action:()=>{h({type:`database`,title:`${e.connectionName} · ${e.tableName}`,projectId:null,closable:!0,metadata:{connectionId:e.connectionId,connectionName:e.connectionName,dbType:e.connectionType,tableName:e.tableName,schemaName:e.schemaName,connectionColor:e.connectionColor}}),t()}})),[d,h,t]),O=(0,U.useMemo)(()=>[...w,...T],[w,T]),k=(0,U.useMemo)(()=>{if(V_(r)){let e=r.lastIndexOf(`/`),t=e>=0?r.slice(e+1).toLowerCase():``;return t?E.filter(e=>{let n=e.label.toLowerCase(),r=(e.keywords??``).toLowerCase();return n.includes(t)||r.includes(t)}).slice(0,50):E.slice(0,50)}if(!r.trim())return w;let e=r.toLowerCase(),t=t=>{let n=0;for(let r=0;r<e.length;r++){if(n=t.indexOf(e[r],n),n===-1)return!1;n++}return!0},n=O.filter(e=>t(e.label.toLowerCase())||e.keywords&&t(e.keywords.toLowerCase()));return r.trim().length>=2?[...D,...n]:n},[O,w,E,D,r]);(0,U.useEffect)(()=>{e&&(i(n||``),o(0),c([]),f([]),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,U.useEffect)(()=>{o(e=>Math.min(e,Math.max(k.length-1,0)))},[k.length]),(0,U.useEffect)(()=>{let e=m.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let A=(0,U.useCallback)(()=>{r.trim()&&(h({type:`chat`,title:`AI Chat`,projectId:g?.name??null,metadata:{projectName:g?.name,pendingMessage:r.trim()},closable:!0}),t())},[r,g,h,t]);function j(e){let n=k.length;switch(e.key){case`ArrowDown`:e.preventDefault(),n>0&&o(e=>(e+1)%n);break;case`ArrowUp`:e.preventDefault(),n>0&&o(e=>(e-1+n)%n);break;case`Enter`:e.preventDefault(),n>0?k[a]?.action():r.trim()&&A();break;case`Escape`:e.preventDefault(),t();break}}if(!e)return null;let M=V_(r);return(0,W.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:t,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,W.jsxs)(`div`,{className:`relative z-10 w-full max-w-md rounded-t-xl md:rounded-xl border border-border bg-background shadow-2xl overflow-hidden max-h-[80vh] md:max-h-none`,onClick:e=>e.stopPropagation(),onKeyDown:j,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,W.jsx)(Vt,{className:`size-4 text-text-subtle shrink-0`}),(0,W.jsx)(`input`,{ref:p,type:`text`,value:r,onChange:e=>i(e.target.value),placeholder:`Search actions & files... (type / or ~/ for filesystem)`,className:`flex-1 bg-transparent text-sm text-text-primary outline-none placeholder:text-text-subtle`}),l&&(0,W.jsx)(H,{className:`size-3.5 animate-spin text-text-subtle shrink-0`}),(0,W.jsx)(`kbd`,{className:`hidden sm:inline-flex items-center rounded border border-border bg-surface px-1.5 py-0.5 text-[10px] text-text-subtle font-mono`,children:`ESC`})]}),M&&!l&&s.length===0&&r.length<4&&(0,W.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-subtle border-b border-border/50`,children:`Type a directory path to browse files (e.g. ~/Projects/)`}),(0,W.jsx)(`div`,{ref:m,className:`max-h-72 overflow-y-auto py-1`,children:k.length===0?l?(0,W.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`Searching...`}):r.trim()?(0,W.jsxs)(`button`,{onClick:A,className:`flex items-center gap-3 w-full px-3 py-3 text-sm text-left text-text-secondary hover:bg-accent/15 hover:text-text-primary transition-colors`,children:[(0,W.jsx)(vt,{className:`size-4 shrink-0 text-accent`}),(0,W.jsxs)(`span`,{children:[`Ask AI: `,(0,W.jsx)(`span`,{className:`text-text-primary font-medium`,children:r.trim().slice(0,60)})]})]}):(0,W.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`No results`}):k.map((e,t)=>{let n=e.icon;return(0,W.jsxs)(`button`,{onClick:e.action,className:`flex items-center gap-3 w-full px-3 py-2 text-sm text-left transition-colors ${t===a?`bg-accent/15 text-text-primary`:`text-text-secondary hover:bg-surface-elevated`}`,children:[(0,W.jsx)(n,{className:`size-4 shrink-0`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.label}),e.hint&&(0,W.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-xs text-text-subtle truncate max-w-[200px]`,children:[e.connectionColor&&(0,W.jsx)(`span`,{className:`shrink-0 size-2 rounded-full`,style:{backgroundColor:e.connectionColor}}),e.hint]}),e.shortcut&&(0,W.jsx)(`kbd`,{className:`ml-auto shrink-0 rounded border border-border bg-surface px-1.5 py-0.5 text-[10px] text-text-subtle font-mono`,children:e.shortcut})]},e.id)})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 border-t border-border px-3 py-1.5`,children:[(0,W.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`Press`}),(0,W.jsx)(`kbd`,{className:`inline-flex items-center rounded border border-border bg-surface px-1 py-0.5 text-[10px] text-text-subtle font-mono`,children:`Shift`}),(0,W.jsx)(`kbd`,{className:`inline-flex items-center rounded border border-border bg-surface px-1 py-0.5 text-[10px] text-text-subtle font-mono`,children:`Shift`}),(0,W.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`to open this palette`})]})]})]})}function G_(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)(!1);(0,U.useEffect)(()=>{function e(e){let n=e.detail;n&&(t(n),r(!1))}return window.addEventListener(`open-bug-report`,e),()=>window.removeEventListener(`open-bug-report`,e)},[]);let i=(0,U.useCallback)(()=>t(null),[]);return e?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:i}),(0,W.jsxs)(`div`,{className:`fixed inset-4 md:inset-auto md:top-[15%] md:left-1/2 md:-translate-x-1/2 md:w-full md:max-w-lg md:max-h-[70vh] z-50 flex flex-col bg-background border border-border rounded-lg shadow-2xl overflow-hidden`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:`Bug Report`}),(0,W.jsx)(`button`,{onClick:i,className:`p-1 rounded hover:bg-surface-elevated`,children:(0,W.jsx)(rn,{className:`size-4`})})]}),(0,W.jsx)(`pre`,{className:`flex-1 overflow-auto px-4 py-2 text-xs font-mono whitespace-pre-wrap break-all`,children:e}),(0,W.jsxs)(`div`,{className:`flex gap-2 p-3 border-t border-border`,children:[(0,W.jsxs)(`button`,{onClick:async()=>{await e_(e)&&r(!0)},className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-surface-elevated text-xs text-foreground hover:bg-surface transition-colors`,children:[n?(0,W.jsx)(Ae,{className:`size-3`}):(0,W.jsx)(Ve,{className:`size-3`}),n?`Copied`:`Copy`]}),(0,W.jsxs)(`button`,{onClick:()=>{$g(e),i()},className:`flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-xs hover:bg-primary/90 transition-colors`,children:[(0,W.jsx)(ne,{className:`size-3`}),`Open GitHub Issue`]})]})]})]}):null}var K_=6e4,q_=`ppm-upgrade-dismissed-`;function J_({onVisibilityChange:e}){let[t,n]=(0,U.useState)(null),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let e;async function t(){try{let e=await V.get(`/api/upgrade`);if(e.availableVersion){n(e.availableVersion);let t=q_+e.availableVersion;sessionStorage.getItem(t)?o(!0):o(!1)}else n(null)}catch{}}return t(),e=setInterval(t,K_),()=>clearInterval(e)},[]);let s=(0,U.useCallback)(async()=>{i(!0);try{await V.post(`/api/upgrade/apply`)}catch(e){wn.error(`Upgrade failed: ${e.message}`),i(!1)}},[]),c=(0,U.useCallback)(()=>{t&&sessionStorage.setItem(q_+t,`1`),o(!0)},[t]),l=!!t&&!a;return(0,U.useEffect)(()=>{e?.(l)},[l,e]),l?(0,W.jsx)(`div`,{className:`w-full bg-blue-600 dark:bg-blue-700 text-white px-3 py-1 flex items-center justify-between gap-2 z-50 text-sm shrink-0`,children:r?(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,W.jsx)(H,{className:`size-4 animate-spin shrink-0`}),(0,W.jsxs)(`span`,{className:`truncate`,children:[`Upgrading to v`,t,`... PPM will restart shortly`]})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,W.jsx)(Fe,{className:`size-4 shrink-0`}),(0,W.jsxs)(`span`,{className:`truncate`,children:[`PPM v`,t,` available`]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,W.jsx)(`button`,{onClick:s,className:`bg-white text-blue-600 font-medium rounded-full px-3 py-0.5 text-xs min-h-[28px] min-w-[28px] flex items-center justify-center hover:bg-blue-50 active:bg-blue-100 transition-colors`,children:`Upgrade`}),(0,W.jsx)(`button`,{onClick:c,className:`min-h-[28px] min-w-[28px] flex items-center justify-center rounded-full hover:bg-blue-500 active:bg-blue-800 transition-colors`,"aria-label":`Dismiss upgrade notification`,children:(0,W.jsx)(rn,{className:`size-4`})})]})]})}):null}var Y_=ae(e=>({src:null,alt:``,open:(t,n=``)=>e({src:t,alt:n}),close:()=>e({src:null,alt:``})}));function X_(){let{src:e,alt:t,close:n}=Y_(),r=(0,U.useCallback)(e=>{e.key===`Escape`&&n()},[n]);return(0,U.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,r),()=>document.removeEventListener(`keydown`,r)},[e,r]),e?(0,W.jsxs)(`div`,{className:`fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm animate-in fade-in duration-150`,onClick:n,children:[(0,W.jsx)(`button`,{onClick:n,className:`absolute top-4 right-4 z-10 flex items-center justify-center size-8 rounded-full bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Close`,children:(0,W.jsx)(rn,{className:`size-5`})}),(0,W.jsx)(`img`,{src:e,alt:t,className:`max-w-[90vw] max-h-[90vh] object-contain rounded-lg shadow-2xl`,onClick:e=>e.stopPropagation()})]}):null}var Z_=ae(e=>({svg:null,open:t=>e({svg:t}),close:()=>e({svg:null})})),Q_=.25,$_=4,ev=.25;function tv(){let{svg:e,close:t}=Z_(),n=(0,U.useRef)(null),[r,i]=(0,U.useState)(1),[a,o]=(0,U.useState)({x:0,y:0}),s=(0,U.useRef)(!1),c=(0,U.useRef)({x:0,y:0});(0,U.useEffect)(()=>{e&&(i(1),o({x:0,y:0}))},[e]);let l=(0,U.useCallback)(e=>{e.key===`Escape`&&t(),(e.key===`=`||e.key===`+`)&&i(e=>Math.min($_,e+ev)),e.key===`-`&&i(e=>Math.max(Q_,e-ev)),e.key===`0`&&(i(1),o({x:0,y:0}))},[t]);(0,U.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,l),()=>document.removeEventListener(`keydown`,l)},[e,l]);let u=(0,U.useCallback)(e=>{e.preventDefault();let t=e.deltaY>0?-ev:ev;i(e=>Math.min($_,Math.max(Q_,e+t)))},[]),d=(0,U.useCallback)(e=>{e.button===0&&(s.current=!0,c.current={x:e.clientX,y:e.clientY},e.target.setPointerCapture(e.pointerId))},[]),f=(0,U.useCallback)(e=>{if(!s.current)return;let t=e.clientX-c.current.x,n=e.clientY-c.current.y;c.current={x:e.clientX,y:e.clientY},o(e=>({x:e.x+t,y:e.y+n}))},[]),p=(0,U.useCallback)(()=>{s.current=!1},[]);return e?(0,W.jsxs)(`div`,{className:`fixed inset-0 z-[100] flex flex-col bg-black/85 backdrop-blur-sm animate-in fade-in duration-150`,onClick:t,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-black/40`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`span`,{className:`text-sm text-white/70`,children:[Math.round(r*100),`% — Scroll to zoom, drag to pan, 0 to reset`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`button`,{onClick:()=>i(e=>Math.max(Q_,e-ev)),className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Zoom out`,children:(0,W.jsx)(on,{className:`size-4`})}),(0,W.jsx)(`button`,{onClick:()=>i(e=>Math.min($_,e+ev)),className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Zoom in`,children:(0,W.jsx)(an,{className:`size-4`})}),(0,W.jsx)(`button`,{onClick:()=>{i(1),o({x:0,y:0})},className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors`,"aria-label":`Reset zoom`,children:(0,W.jsx)(Bt,{className:`size-4`})}),(0,W.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-8 rounded bg-white/10 hover:bg-white/20 text-white transition-colors ml-2`,"aria-label":`Close`,children:(0,W.jsx)(rn,{className:`size-5`})})]})]}),(0,W.jsx)(`div`,{ref:n,className:`flex-1 overflow-hidden cursor-grab active:cursor-grabbing`,onClick:e=>e.stopPropagation(),onWheel:u,onPointerDown:d,onPointerMove:f,onPointerUp:p,children:(0,W.jsx)(`div`,{className:`w-full h-full flex items-center justify-center`,style:{transform:`translate(${a.x}px, ${a.y}px) scale(${r})`,transformOrigin:`center center`},children:(0,W.jsx)(`div`,{className:`mermaid-overlay-content bg-white rounded-lg p-6 shadow-2xl [&_svg]:max-w-full [&_svg]:h-auto`,dangerouslySetInnerHTML:{__html:e}})})})]}):null}var nv=`https://ppm.hienle.tech`;function rv(){return window.location.hostname.endsWith(`.trycloudflare.com`)}function iv(){let e=P_(e=>e.showOverlay),[t,n]=(0,U.useState)(!1);if(!e)return null;let r=rv();async function i(){n(!0);try{if((await fetch(`/api/health`,{cache:`no-store`})).ok){if(P_.getState().markUp(),`caches`in window){let e=await caches.keys();await Promise.all(e.map(e=>caches.delete(e)))}window.location.reload();return}}catch{}n(!1)}return(0,W.jsx)(`div`,{className:`fixed inset-0 z-[200] bg-background/95 backdrop-blur-sm flex items-center justify-center p-4`,children:(0,W.jsxs)(`div`,{className:`max-w-sm w-full text-center space-y-6`,children:[(0,W.jsx)(`div`,{className:`flex justify-center`,children:(0,W.jsx)(`div`,{className:`rounded-full bg-destructive/10 p-4`,children:(0,W.jsx)(r?nn:Ut,{className:`h-10 w-10 text-destructive`})})}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:r?`Connection Lost`:`Server Unreachable`}),(0,W.jsx)(`p`,{className:`text-sm text-muted-foreground leading-relaxed`,children:r?`The tunnel appears to have closed. The server may have restarted with a new URL.`:`Cannot connect to the PPM server. It may have stopped or is restarting.`})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[r&&(0,W.jsx)(`a`,{href:nv,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center justify-center rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:`Open PPM Cloud`}),(0,W.jsxs)(`button`,{onClick:i,disabled:t,className:`inline-flex items-center justify-center gap-2 rounded-md border border-border px-4 py-2.5 text-sm font-medium text-foreground hover:bg-accent transition-colors disabled:opacity-50`,children:[(0,W.jsx)(Lt,{className:`h-4 w-4 ${t?`animate-spin`:``}`}),t?`Retrying…`:`Retry Connection`]})]}),!r&&(0,W.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`If the server was stopped, run `,(0,W.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded text-[11px]`,children:`ppm start`}),` to restart it.`]})]})})}function av(){let e=Yp(e=>e.statusBarItems),t=e.filter(e=>e.alignment===`left`).sort((e,t)=>t.priority-e.priority),n=e.filter(e=>e.alignment===`right`).sort((e,t)=>t.priority-e.priority);return(0,W.jsxs)(`div`,{className:`hidden md:flex items-center justify-between h-[22px] px-2 bg-surface border-t border-border text-[11px] text-text-subtle select-none shrink-0`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:t.map(e=>(0,W.jsx)(ov,{item:e},e.id))}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:n.map(e=>(0,W.jsx)(ov,{item:e},e.id))})]})}function ov({item:e}){let t=(0,W.jsx)(`button`,{className:`truncate px-1 rounded-sm transition-colors ${e.command?`hover:bg-accent/15 hover:text-text-primary cursor-pointer`:`cursor-default`}`,onClick:()=>{e.command&&window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e.command}}))},children:e.text});return e.tooltip?(0,W.jsxs)(zu,{children:[(0,W.jsx)(Bu,{asChild:!0,children:t}),(0,W.jsx)(Vu,{side:`top`,className:`text-xs`,children:e.tooltip})]}):t}function sv(){let e=Yp(e=>e.quickPick),t=Yp(e=>e.resolveQuickPick);return e?(0,W.jsx)(cv,{items:e.items,options:e.options,onSelect:e=>t(e),onCancel:()=>t(void 0)}):null}function cv({items:e,options:t,onSelect:n,onCancel:r}){let[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(0),[c,l]=(0,U.useState)(()=>{let t=new Set;return e.forEach((e,n)=>{e.picked&&t.add(n)}),t}),u=(0,U.useRef)(null),d=(0,U.useRef)(null),f=t.canPickMany??!1;(0,U.useEffect)(()=>{requestAnimationFrame(()=>u.current?.focus())},[]);let p=(0,U.useMemo)(()=>{if(!i.trim())return e.map((e,t)=>({item:e,originalIdx:t}));let t=i.toLowerCase();return e.map((e,t)=>({item:e,originalIdx:t})).filter(({item:e})=>e.label.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t)||e.detail?.toLowerCase().includes(t))},[e,i]);(0,U.useEffect)(()=>{s(e=>Math.min(e,Math.max(p.length-1,0)))},[p.length]),(0,U.useEffect)(()=>{(d.current?.children[o])?.scrollIntoView({block:`nearest`})},[o]);let m=(0,U.useCallback)(()=>{f?n(e.filter((e,t)=>c.has(t))):p[o]&&n([p[o].item])},[f,c,e,p,o,n]);function h(e){switch(e.key){case`ArrowDown`:e.preventDefault(),p.length>0&&s(e=>(e+1)%p.length);break;case`ArrowUp`:e.preventDefault(),p.length>0&&s(e=>(e-1+p.length)%p.length);break;case` `:if(f&&p[o]){e.preventDefault();let t=p[o].originalIdx;l(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}break;case`Enter`:e.preventDefault(),m();break;case`Escape`:e.preventDefault(),r();break}}return(0,W.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:r,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,W.jsxs)(`div`,{className:`relative z-10 w-full max-w-md rounded-t-xl md:rounded-xl border border-border bg-background shadow-2xl overflow-hidden max-h-[80vh] md:max-h-none`,onClick:e=>e.stopPropagation(),onKeyDown:h,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,W.jsx)(Vt,{className:`size-4 text-text-subtle shrink-0`}),(0,W.jsx)(`input`,{ref:u,type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:t.placeholder??`Select an item...`,className:`flex-1 bg-transparent text-sm text-text-primary outline-none placeholder:text-text-subtle`}),(0,W.jsx)(`kbd`,{className:`hidden sm:inline-flex items-center rounded border border-border bg-surface px-1.5 py-0.5 text-[10px] text-text-subtle font-mono`,children:`ESC`})]}),(0,W.jsx)(`div`,{ref:d,className:`max-h-72 overflow-y-auto py-1`,children:p.length===0?(0,W.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`No matching items`}):p.map(({item:e,originalIdx:t},r)=>(0,W.jsxs)(`button`,{onClick:()=>{f?l(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}):n([e])},className:z(`flex items-center gap-3 w-full px-3 py-2 text-sm text-left transition-colors`,r===o?`bg-accent/15 text-text-primary`:`text-text-secondary hover:bg-surface-elevated`),children:[f&&(0,W.jsx)(`span`,{className:z(`size-4 shrink-0 rounded border flex items-center justify-center`,c.has(t)?`bg-primary border-primary text-primary-foreground`:`border-border`),children:c.has(t)&&(0,W.jsx)(Ae,{className:`size-3`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate`,children:e.label}),e.description&&(0,W.jsx)(`span`,{className:`text-xs text-text-subtle ml-2`,children:e.description}),e.detail&&(0,W.jsx)(`div`,{className:`text-xs text-text-subtle truncate mt-0.5`,children:e.detail})]})]},t))}),f&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-3 py-1.5`,children:[(0,W.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[c.size,` selected`]}),(0,W.jsx)(`button`,{onClick:m,className:`text-xs text-primary hover:text-primary/80 font-medium`,children:`Confirm`})]})]})]})}function lv(){let e=Yp(e=>e.inputBox),t=Yp(e=>e.resolveInputBox);return e?(0,W.jsx)(uv,{options:e.options,onConfirm:e=>t(e),onCancel:()=>t(void 0)}):null}function uv({options:e,onConfirm:t,onCancel:n}){let[r,i]=(0,U.useState)(e.value??``),a=(0,U.useRef)(null);(0,U.useEffect)(()=>{requestAnimationFrame(()=>{a.current?.focus(),a.current?.select()})},[]);function o(e){e.key===`Enter`?(e.preventDefault(),t(r)):e.key===`Escape`&&(e.preventDefault(),n())}return(0,W.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:n,children:[(0,W.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,W.jsxs)(`div`,{className:`relative z-10 w-full max-w-md rounded-t-xl md:rounded-xl border border-border bg-background shadow-2xl overflow-hidden`,onClick:e=>e.stopPropagation(),children:[e.prompt&&(0,W.jsx)(`div`,{className:`px-3 pt-3 pb-1 text-sm text-text-primary`,children:e.prompt}),(0,W.jsx)(`div`,{className:`flex items-center gap-2 px-3 py-2.5`,children:(0,W.jsx)(`input`,{ref:a,type:e.password?`password`:`text`,value:r,onChange:e=>i(e.target.value),onKeyDown:o,placeholder:e.placeholder??``,className:`flex-1 bg-surface border border-border rounded px-2 py-1.5 text-sm text-text-primary outline-none focus:border-primary placeholder:text-text-subtle`})}),(0,W.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-border px-3 py-2`,children:[(0,W.jsx)(`button`,{onClick:n,className:`px-3 py-1.5 text-xs text-text-secondary hover:text-text-primary transition-colors rounded`,children:`Cancel`}),(0,W.jsx)(`button`,{onClick:()=>t(r),className:`px-3 py-1.5 text-xs bg-primary text-primary-foreground rounded hover:bg-primary/90 transition-colors font-medium`,children:`OK`})]})]})]})}var dv=3e4,fv=1e3,pv=class{ws=null;url;handlers=[];reconnectAttempts=0;reconnectTimer=null;intentionalClose=!1;pendingMessages=[];visibilityHandler=null;constructor(e){this.url=e,this.visibilityHandler=()=>{document.visibilityState===`visible`&&!this.intentionalClose&&this.ws?.readyState!==WebSocket.OPEN&&(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.reconnectAttempts=0,this.connect())},document.addEventListener(`visibilitychange`,this.visibilityHandler)}connect(){this.intentionalClose=!1,this.cleanup();let e=window.location.protocol===`https:`?`wss:`:`ws:`,t=this.url.startsWith(`ws`)?this.url:`${e}//${window.location.host}${this.url}`;this.ws=new WebSocket(t),this.ws.onopen=()=>{this.reconnectAttempts=0;try{this.ws?.send(JSON.stringify({type:`ready`}))}catch{}if(this.pendingMessages.length>0){console.log(`[ws] flushing ${this.pendingMessages.length} queued message(s)`);for(let e of this.pendingMessages)try{this.ws?.send(e)}catch{}this.pendingMessages=[]}},this.ws.onmessage=e=>{for(let t of this.handlers)t(e)},this.ws.onclose=()=>{this.intentionalClose||this.scheduleReconnect()},this.ws.onerror=()=>{this.ws?.close()}}disconnect(){this.intentionalClose=!0,this.pendingMessages=[],this.cleanup(),this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.visibilityHandler&&=(document.removeEventListener(`visibilitychange`,this.visibilityHandler),null)}send(e){this.ws?.readyState===WebSocket.OPEN?this.ws.send(e):this.ws?.readyState===WebSocket.CONNECTING?(console.warn(`[ws] WS still CONNECTING — queuing message`),this.pendingMessages.push(e)):console.warn(`[ws] message dropped — readyState=${this.ws?.readyState??`no-ws`}`)}onMessage(e){return this.handlers.push(e),()=>{this.handlers=this.handlers.filter(t=>t!==e)}}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}cleanup(){this.ws&&=(this.ws.onopen=null,this.ws.onclose=null,this.ws.onmessage=null,this.ws.onerror=null,(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)&&this.ws.close(),null)}scheduleReconnect(){let e=Math.min(fv*2**this.reconnectAttempts,dv);this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>this.connect(),e)}};function mv(e=!0){let t=(0,U.useRef)(null),n=(0,U.useCallback)(e=>{t.current?.send(JSON.stringify(e))},[]);return(0,U.useEffect)(()=>{if(!e)return;let r=de(),i=new pv(r?`/ws/extensions?token=${encodeURIComponent(r)}`:`/ws/extensions`);t.current=i,i.onMessage(e=>{let t;try{t=JSON.parse(e.data)}catch{return}let r=Yp.getState();switch(t.type){case`contributions:update`:r.setContributions(t.contributions);break;case`statusbar:update`:r.addStatusBarItem(t.item);break;case`statusbar:remove`:r.removeStatusBarItem(t.itemId);break;case`tree:update`:t.parentId?r.updateTreeChildren(t.viewId,t.parentId,t.items):r.updateTree(t.viewId,t.items);break;case`tree:refresh`:r.removeTree(t.viewId);break;case`notification`:{let e=t.level===`error`?wn.error:t.level===`warn`?wn.warning:wn.info;if(t.actions&&t.actions.length>0){let r={action:{label:t.actions[0],onClick:()=>n({type:`notification:action`,id:t.id,action:t.actions[0]??null})},onDismiss:()=>n({type:`notification:action`,id:t.id,action:null})};t.actions.length>1&&(r.cancel={label:t.actions[1],onClick:()=>n({type:`notification:action`,id:t.id,action:t.actions[1]??null})}),e(t.message,r)}else e(t.message);break}case`quickpick:show`:r.showQuickPick(t.items,t.options).then(e=>{n({type:`quickpick:resolve`,requestId:t.requestId,selected:e??null})});break;case`inputbox:show`:r.showInputBox(t.options).then(e=>{n({type:`inputbox:resolve`,requestId:t.requestId,value:e??null})});break;case`webview:create`:r.addWebviewPanel({id:t.panelId,extensionId:t.extensionId,viewType:t.viewType,title:t.title,html:``}),R.getState().openTab({type:`extension-webview`,title:t.title,projectId:null,closable:!0,metadata:{panelId:t.panelId,extensionId:t.extensionId}});break;case`webview:html`:r.updateWebviewPanel(t.panelId,{html:t.html});break;case`webview:dispose`:r.removeWebviewPanel(t.panelId);break;case`webview:postMessage`:window.dispatchEvent(new CustomEvent(`ext:webview:message`,{detail:{panelId:t.panelId,message:t.message}}));break}});let a=e=>{let{panelId:t,message:n}=e.detail;i.send(JSON.stringify({type:`webview:message`,panelId:t,message:n}))};window.addEventListener(`ext:webview:send`,a);let o=e=>{let{viewId:t,itemId:n}=e.detail;i.send(JSON.stringify({type:`tree:expand`,viewId:t,itemId:n}))};window.addEventListener(`ext:tree:expand`,o);let s=e=>{let{command:t,args:n}=e.detail;i.send(JSON.stringify({type:`command:execute`,command:t,args:n}))};return window.addEventListener(`ext:command:execute`,s),i.connect(),()=>{window.removeEventListener(`ext:webview:send`,a),window.removeEventListener(`ext:tree:expand`,o),window.removeEventListener(`ext:command:execute`,s),i.disconnect(),t.current=null}},[n,e]),{send:n}}function hv(){let[e,t]=(0,U.useState)(`checking`),[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(),[c,l]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let e=()=>{s(`settings`),a(!0)};return window.addEventListener(`open-mobile-settings`,e),()=>window.removeEventListener(`open-mobile-settings`,e)},[]);let[u,d]=(0,U.useState)(()=>new Set([`__global__`])),f=Kn(e=>e.theme),p=Kn(e=>e.deviceName),m=Rf(e=>e.fetchProjects),h=Kn(e=>e.fetchServerInfo),g=Rf(e=>e.activeProject),_=(0,U.useRef)(y_());(0,U.useEffect)(()=>{if(Wn(f),f===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>Wn(`system`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)}},[f]),(0,U.useEffect)(()=>{h()},[h]),(0,U.useEffect)(()=>{async function e(){let e=de();try{let n={};e&&(n.Authorization=`Bearer ${e}`),(await(await fetch(`/api/auth/check`,{headers:n})).json()).ok?t(`authenticated`):t(`unauthenticated`)}catch{t(`unauthenticated`)}}e()},[]),T_();let{paletteOpen:v,paletteInitialQuery:y,closePalette:b}=xp();M_(),L_(),mv(e===`authenticated`),(0,U.useEffect)(()=>{if(e!==`authenticated`)return;let t=e=>{e.preventDefault()};return window.addEventListener(`beforeunload`,t),()=>window.removeEventListener(`beforeunload`,t)},[e]),(0,U.useEffect)(()=>{e===`authenticated`&&oe(async()=>{let{useKeybindingsStore:e}=await import(`./keybindings-store-CGJa7o0j.js`);return{useKeybindingsStore:e}},__vite__mapDeps([53,6,1,2])).then(({useKeybindingsStore:e})=>{e.getState().loadFromServer()})},[e]),(0,U.useEffect)(()=>{e===`authenticated`&&m().then(async()=>{let e=_.current,{projects:t,customOrder:n}=Rf.getState();if(t.length===0)return;let r=e.projectName?t.find(t=>t.name===e.projectName):void 0;if(r||=Lf(t,n)[0],!r)return;let i=await re(r.name);if(i){let e=localStorage.getItem(`ppm-panels-${r.name}`),t=L(e?JSON.parse(e):null,i);t&&t===i&&localStorage.setItem(`ppm-panels-${r.name}`,JSON.stringify(i))}Rf.getState().setActiveProject(r),queueMicrotask(()=>{if(e.tabType&&w_(e.tabType,e.tabIdentifier,r.name),e.openChat){w_(`chat`,e.openChat,r.name);let t=new URL(window.location.href);t.searchParams.delete(`openChat`),window.history.replaceState(null,``,t.pathname)}})})},[e,m]),(0,U.useEffect)(()=>{let e=g?.name??`__global__`;R.getState().switchProject(e)},[g?.name]),(0,U.useEffect)(()=>{let e=g?.name??`__global__`;d(t=>t.has(e)?t:new Set([...t,e]))},[g?.name]),(0,U.useEffect)(()=>{e===`authenticated`&&!g&&R.getState().switchProject(`__global__`)},[e,g]);let x=(0,U.useCallback)(()=>{t(`authenticated`)},[]);if(e===`checking`)return(0,W.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background`,children:(0,W.jsx)(`div`,{className:`animate-pulse text-text-secondary text-sm`,children:`Loading...`})});if(e===`unauthenticated`)return(0,W.jsx)(__,{onSuccess:x});let S=g?.name??`__global__`;return(0,W.jsx)(Ru,{children:(0,W.jsxs)(`div`,{className:`h-dvh flex flex-col bg-background text-foreground overflow-hidden relative`,children:[(0,W.jsx)(J_,{onVisibilityChange:r}),p&&(0,W.jsx)(`div`,{className:z(`md:hidden fixed left-0 z-50 px-2 py-0.5 bg-primary/80 text-primary-foreground text-[10px] font-medium rounded-br transition-[top]`,n?`top-7`:`top-0`),children:p}),(0,W.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,W.jsx)(c_,{}),(0,W.jsx)(xg,{}),(0,W.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[[...u].map(e=>(0,W.jsx)(`div`,{className:z(`flex-1 overflow-hidden pb-12 md:pb-0`,S!==e&&`hidden`),children:(0,W.jsx)(Gp,{projectName:e})},e)),(0,W.jsx)(av,{})]})]}),(0,W.jsx)(f_,{onMenuPress:()=>a(!0),onProjectsPress:()=>l(!0)}),(0,W.jsx)(m_,{isOpen:i,onClose:()=>{a(!1),s(void 0)},initialTab:o}),(0,W.jsx)(g_,{isOpen:c,onClose:()=>l(!1)}),(0,W.jsx)(W_,{open:v,onClose:b,initialQuery:y}),(0,W.jsx)(G_,{}),(0,W.jsx)(X_,{}),(0,W.jsx)(tv,{}),(0,W.jsx)(sv,{}),(0,W.jsx)(lv,{}),(0,W.jsx)(iv,{}),(0,W.jsx)(qn,{position:`bottom-left`,closeButton:!0,toastOptions:{className:`bg-surface border-border text-foreground`}})]})})}(0,sn.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(U.StrictMode,{children:(0,W.jsx)(hv,{})}));export{Bt as $,mm as A,Oe as At,bp as B,vm as C,Le as Ct,hm as D,Me as Dt,dm as E,Ne as Et,rm as F,Rf as G,vp as H,em as I,en as J,Kn as K,Xp as L,$p as M,we as Mt,tm as N,Ce as Nt,pm as O,je as Ot,nm as P,Vt as Q,Yp as R,Tm as S,ze as St,sm as T,Pe as Tt,_p as U,pp as V,yp as W,Yt as X,Xt as Y,Gt as Z,Mm as _,qe as _t,Bh as a,Ot as at,Pm as b,He as bt,nh as c,vt as ct,Xm as d,at as dt,Lt as et,Zm as f,rt as ft,jm as g,Ye as gt,km as h,Xe as ht,t_ as i,kt as it,$ as j,De as jt,fm as k,Ae as kt,eh as l,ht as lt,Jm as m,Ze as mt,Z_ as n,jt as nt,sh as o,Dt as ot,Ym as p,nt as pt,rn as q,Y_ as r,At as rt,rh as s,yt as st,pv as t,Nt as tt,qm as u,H as ut,Nm as v,Ke as vt,gm as w,Ie as wt,Am as x,Ve as xt,Fm as y,Ge as yt,Tp as z};