@hienlh/ppm 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/web/assets/{browser-tab-CjUzlPYv.js → browser-tab-LFNnCzgB.js} +1 -1
  3. package/dist/web/assets/chat-tab-rYBo5Mff.js +8 -0
  4. package/dist/web/assets/{code-editor-aQQZUc2m.js → code-editor-BdM11-0K.js} +1 -1
  5. package/dist/web/assets/{database-viewer-ChyP1N3c.js → database-viewer-CINo6teP.js} +1 -1
  6. package/dist/web/assets/{diff-viewer-ktwO5JbX.js → diff-viewer-_MPL-DRu.js} +1 -1
  7. package/dist/web/assets/{extension-webview-Bx1TlP6q.js → extension-webview-BU1T2a8n.js} +1 -1
  8. package/dist/web/assets/{git-graph-BIrGMX6e.js → git-graph-Dde-j8cK.js} +1 -1
  9. package/dist/web/assets/index-BkidPsSC.css +2 -0
  10. package/dist/web/assets/{index-C6KLr58u.js → index-CyXEMb4g.js} +4 -4
  11. package/dist/web/assets/keybindings-store-6_p_JT0B.js +1 -0
  12. package/dist/web/assets/{markdown-renderer-A7J2gdKT.js → markdown-renderer-Djgmbi23.js} +1 -1
  13. package/dist/web/assets/{postgres-viewer-C9-Acry_.js → postgres-viewer-FCpA6nh4.js} +1 -1
  14. package/dist/web/assets/{settings-tab-C17exmRv.js → settings-tab-Y37tD1kM.js} +1 -1
  15. package/dist/web/assets/{sqlite-viewer-Dr5oWCWA.js → sqlite-viewer-Cjl4uXyo.js} +1 -1
  16. package/dist/web/assets/{terminal-tab-CpyKvyfC.js → terminal-tab-CnYqGghP.js} +1 -1
  17. package/dist/web/assets/{use-monaco-theme-BjPAik5w.js → use-monaco-theme-DGjkK3eO.js} +1 -1
  18. package/dist/web/index.html +2 -2
  19. package/dist/web/monacoeditorwork/css.worker.bundle.js +122 -122
  20. package/dist/web/monacoeditorwork/editor.worker.bundle.js +78 -78
  21. package/dist/web/monacoeditorwork/html.worker.bundle.js +110 -110
  22. package/dist/web/monacoeditorwork/json.worker.bundle.js +108 -108
  23. package/dist/web/monacoeditorwork/ts.worker.bundle.js +81 -81
  24. package/dist/web/sw.js +1 -1
  25. package/docs/project-roadmap.md +3 -3
  26. package/docs/streaming-input-guide.md +267 -0
  27. package/package.json +1 -1
  28. package/snapshot-state.md +1526 -0
  29. package/src/providers/claude-agent-sdk.ts +16 -11
  30. package/src/web/components/chat/chat-tab.tsx +1 -0
  31. package/src/web/components/chat/message-list.tsx +8 -4
  32. package/src/web/components/layout/mobile-nav.tsx +44 -40
  33. package/test-session-ops.mjs +444 -0
  34. package/test-tokens.mjs +212 -0
  35. package/.claude.bak/agent-memory/tester/MEMORY.md +0 -3
  36. package/.claude.bak/agent-memory/tester/project-ppm-test-conventions.md +0 -32
  37. package/dist/web/assets/chat-tab-moB4W7-w.js +0 -8
  38. package/dist/web/assets/index-DpBKDbIW.css +0 -2
  39. package/dist/web/assets/keybindings-store-D3Y5c5uS.js +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-settings-BUvk6Saw.js","assets/chunk-CFjPhJqf.js","assets/api-client-BfBM3I7n.js","assets/terminal-tab-CpyKvyfC.js","assets/utils-BNytJOb1.js","assets/jsx-runtime-kMwlnEGE.js","assets/react-nm2Ru1Pt.js","assets/terminal-tab-BrP-ENHg.css","assets/chat-tab-moB4W7-w.js","assets/preload-helper-Bf_JiD2A.js","assets/dist-CSJdAyA9.js","assets/dist-DIV6WgAG.js","assets/react-dom-Bpkvzu3U.js","assets/chunk-PU5JKC2W-ek7k4QVB.js","assets/src-BqX54PbV.js","assets/chunk-GEFDOKGD-D-pKjlVd.js","assets/math-069Z4SuC.js","assets/chunk-7R4GIKGN-Dv-4cAYn.js","assets/isArrayLikeObject-B_v2FtYn.js","assets/createLucideIcon-PuMiQgHl.js","assets/arrow-up-BYhx9ckd.js","assets/chevron-right-5HgK6l7K.js","assets/markdown-renderer-A7J2gdKT.js","assets/isEmpty-bnrF3Qbc.js","assets/tab-store-BOgTrqRr.js","assets/react-SKk5z-bm.js","assets/chunk-GLR3WWYH-DKikpoJM.js","assets/chunk-KYZI473N-Bb0MCaIO.js","assets/chunk-PQ6SQG4A-TF58UVMU.js","assets/chunk-YBOYWFTD-rQG3QH5s.js","assets/rough.esm-JX0wREDd.js","assets/chunk-O4XLMI2P-nDhi_cVu.js","assets/line-CVvo3dRu.js","assets/path-6uRLdFF7.js","assets/array-B9UHiPd-.js","assets/chunk-MX3YWQON-BpS_PtKp.js","assets/chunk-HHEYEP7N-C7vxA5i9.js","assets/chunk-XPW4576I-BPQQBakK.js","assets/columns-2-cEVJHYd7.js","assets/tag-CXMT0QB6.js","assets/code-editor-aQQZUc2m.js","assets/use-monaco-theme-BjPAik5w.js","assets/table-DFevCOMd.js","assets/database-viewer-ChyP1N3c.js","assets/dist-ovWkrgO-.js","assets/lib-BQ34Db2e.js","assets/sqlite-viewer-Dr5oWCWA.js","assets/postgres-viewer-C9-Acry_.js","assets/git-graph-BIrGMX6e.js","assets/diff-viewer-ktwO5JbX.js","assets/settings-tab-C17exmRv.js","assets/browser-tab-CjUzlPYv.js","assets/extension-webview-Bx1TlP6q.js","assets/keybindings-store-D3Y5c5uS.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-settings-BUvk6Saw.js","assets/chunk-CFjPhJqf.js","assets/api-client-BfBM3I7n.js","assets/terminal-tab-CnYqGghP.js","assets/utils-BNytJOb1.js","assets/jsx-runtime-kMwlnEGE.js","assets/react-nm2Ru1Pt.js","assets/terminal-tab-BrP-ENHg.css","assets/chat-tab-rYBo5Mff.js","assets/preload-helper-Bf_JiD2A.js","assets/dist-CSJdAyA9.js","assets/dist-DIV6WgAG.js","assets/react-dom-Bpkvzu3U.js","assets/chunk-PU5JKC2W-ek7k4QVB.js","assets/src-BqX54PbV.js","assets/chunk-GEFDOKGD-D-pKjlVd.js","assets/math-069Z4SuC.js","assets/chunk-7R4GIKGN-Dv-4cAYn.js","assets/isArrayLikeObject-B_v2FtYn.js","assets/createLucideIcon-PuMiQgHl.js","assets/arrow-up-BYhx9ckd.js","assets/chevron-right-5HgK6l7K.js","assets/markdown-renderer-Djgmbi23.js","assets/isEmpty-bnrF3Qbc.js","assets/tab-store-BOgTrqRr.js","assets/react-SKk5z-bm.js","assets/chunk-GLR3WWYH-DKikpoJM.js","assets/chunk-KYZI473N-Bb0MCaIO.js","assets/chunk-PQ6SQG4A-TF58UVMU.js","assets/chunk-YBOYWFTD-rQG3QH5s.js","assets/rough.esm-JX0wREDd.js","assets/chunk-O4XLMI2P-nDhi_cVu.js","assets/line-CVvo3dRu.js","assets/path-6uRLdFF7.js","assets/array-B9UHiPd-.js","assets/chunk-MX3YWQON-BpS_PtKp.js","assets/chunk-HHEYEP7N-C7vxA5i9.js","assets/chunk-XPW4576I-BPQQBakK.js","assets/columns-2-cEVJHYd7.js","assets/tag-CXMT0QB6.js","assets/code-editor-BdM11-0K.js","assets/use-monaco-theme-DGjkK3eO.js","assets/table-DFevCOMd.js","assets/database-viewer-CINo6teP.js","assets/dist-ovWkrgO-.js","assets/lib-BQ34Db2e.js","assets/sqlite-viewer-Cjl4uXyo.js","assets/postgres-viewer-FCpA6nh4.js","assets/git-graph-Dde-j8cK.js","assets/diff-viewer-_MPL-DRu.js","assets/settings-tab-Y37tD1kM.js","assets/browser-tab-LFNnCzgB.js","assets/extension-webview-BU1T2a8n.js","assets/keybindings-store-6_p_JT0B.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,i as c,l,n as u,o as d,r as f,s as p,t as m}from"./tab-store-BOgTrqRr.js";import{t as h}from"./react-SKk5z-bm.js";import{t as g}from"./preload-helper-Bf_JiD2A.js";import{t as _}from"./jsx-runtime-kMwlnEGE.js";import{C as v,D as y,E as b,O as x,S,T as C,_ as w,a as T,b as E,c as D,d as O,f as ee,g as k,h as A,i as te,k as j,l as ne,m as M,n as N,o as re,p as ie,r as ae,s as oe,t as P,u as F,v as se,w as ce,x as le,y as I}from"./dist-DIV6WgAG.js";import{i as ue,n as L,t as de}from"./utils-BNytJOb1.js";import{a as fe,i as pe,r as me,t as R}from"./api-client-BfBM3I7n.js";import{a as he,d as ge,g as _e,m as ve}from"./api-settings-BUvk6Saw.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 ye=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&&A(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&&A(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 ee=new MessageChannel,k=ee.port2;ee.port1.onmessage=D,O=function(){k.postMessage(null)}}else O=function(){_(D,0)};function A(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,A(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}}}})),be=t(((e,t)=>{t.exports=ye()})),xe=t((e=>{var t=be(),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`),ee=Symbol.for(`react.memo_cache_sentinel`),k=Symbol.iterator;function A(e){return typeof e!=`object`||!e?null:(e=k&&e[k]||e[`@@iterator`],typeof e==`function`?e:null)}var te=Symbol.for(`react.client.reference`);function j(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===te?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?j(e.type)||`Memo`:t;case D:t=e._payload,e=e._init;try{return j(e(t))}catch{}}return null}var ne=Array.isArray,M=i.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=a.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,re={pending:!1,data:null,method:null,action:null},ie=[],ae=-1;function oe(e){return{current:e}}function P(e){0>ae||(e.current=ie[ae],ie[ae]=null,ae--)}function F(e,t){ae++,ie[ae]=e.current,e.current=t}var se=oe(null),ce=oe(null),le=oe(null),I=oe(null);function ue(e,t){switch(F(le,t),F(ce,e),F(se,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}}P(se),F(se,e)}function L(){P(se),P(ce),P(le)}function de(e){e.memoizedState!==null&&F(I,e);var t=se.current,n=Ud(t,e.type);t!==n&&(F(ce,e),F(se,n))}function fe(e){ce.current===e&&(P(se),P(ce)),I.current===e&&(P(I),$f._currentValue=re)}var pe,me;function R(e){if(pe===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);pe=t&&t[1]||``,me=-1<e.stack.indexOf(`
3
3
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
4
4
  `+pe+e+me}var he=!1;function ge(e,t){if(!e||he)return``;he=!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,7 +11,7 @@ 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 z.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Mr=`DialogDescriptionWarning`,Nr=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Ar(Mr).contentName}}.`;return z.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Pr=ar,Fr=dr,Ir=pr,Lr=_r,Rr=Sr,zr=wr,Br=Er;function Vr(e){let t=z.useRef({value:e,previous:e});return z.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Hr=`rovingFocusGroup.onEntryFocus`,Ur={bubbles:!1,cancelable:!0},Wr=`RovingFocusGroup`,[Gr,Kr,qr]=E(Wr),[Jr,Yr]=S(Wr,[qr]),[Xr,Zr]=Jr(Wr),Qr=z.forwardRef((e,t)=>(0,V.jsx)(Gr.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,V.jsx)(Gr.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,V.jsx)($r,{...e,ref:t})})}));Qr.displayName=Wr;var $r=z.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:c,onEntryFocus:l,preventScrollOnEntryFocus:u=!1,...d}=e,f=z.useRef(null),p=j(t,f),m=M(a),[h,g]=w({prop:o,defaultProp:s??null,onChange:c,caller:Wr}),[_,y]=z.useState(!1),b=ie(l),x=Kr(n),S=z.useRef(!1),[C,T]=z.useState(0);return z.useEffect(()=>{let e=f.current;if(e)return e.addEventListener(Hr,b),()=>e.removeEventListener(Hr,b)},[b]),(0,V.jsx)(Xr,{scope:n,orientation:r,dir:m,loop:i,currentTabStopId:h,onItemFocus:z.useCallback(e=>g(e),[g]),onItemShiftTab:z.useCallback(()=>y(!0),[]),onFocusableItemAdd:z.useCallback(()=>T(e=>e+1),[]),onFocusableItemRemove:z.useCallback(()=>T(e=>e-1),[]),children:(0,V.jsx)(v.div,{tabIndex:_||C===0?-1:0,"data-orientation":r,...d,ref:p,style:{outline:`none`,...e.style},onMouseDown:I(e.onMouseDown,()=>{S.current=!0}),onFocus:I(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!_){let t=new CustomEvent(Hr,Ur);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);ai([e.find(e=>e.active),e.find(e=>e.id===h),...e].filter(Boolean).map(e=>e.ref.current),u)}}S.current=!1}),onBlur:I(e.onBlur,()=>y(!1))})})}),ei=`RovingFocusGroupItem`,ti=z.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=A(),l=a||c,u=Zr(ei,n),d=u.currentTabStopId===l,f=Kr(n),{onFocusableItemAdd:p,onFocusableItemRemove:m,currentTabStopId:h}=u;return z.useEffect(()=>{if(r)return p(),()=>m()},[r,p,m]),(0,V.jsx)(Gr.ItemSlot,{scope:n,id:l,focusable:r,active:i,children:(0,V.jsx)(v.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...s,ref:t,onMouseDown:I(e.onMouseDown,e=>{r?u.onItemFocus(l):e.preventDefault()}),onFocus:I(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:I(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){u.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ii(e,u.orientation,u.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=f().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=u.loop?oi(n,r+1):n.slice(r+1)}setTimeout(()=>ai(n))}}),children:typeof o==`function`?o({isCurrentTabStop:d,hasTabStop:h!=null}):o})})});ti.displayName=ei;var ni={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function ri(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ii(e,t,n){let r=ri(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return ni[r]}function ai(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function oi(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var si=Qr,ci=ti,li=[`Enter`,` `],ui=[`ArrowDown`,`PageUp`,`Home`],di=[`ArrowUp`,`PageDown`,`End`],fi=[...ui,...di],pi={ltr:[...li,`ArrowRight`],rtl:[...li,`ArrowLeft`]},mi={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},hi=`Menu`,[gi,_i,vi]=E(hi),[yi,bi]=S(hi,[vi,T,Yr]),xi=T(),Si=Yr(),[Ci,wi]=yi(hi),[Ti,Ei]=yi(hi),Di=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=xi(t),[c,l]=z.useState(null),u=z.useRef(!1),d=ie(a),f=M(i);return z.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,V.jsx)(te,{...s,children:(0,V.jsx)(Ci,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,V.jsx)(Ti,{scope:t,onClose:z.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Di.displayName=hi;var Oi=`MenuAnchor`,ki=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=xi(n);return(0,V.jsx)(P,{...i,...r,ref:t})});ki.displayName=Oi;var Ai=`MenuPortal`,[ji,H]=yi(Ai,{forceMount:void 0}),Mi=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=wi(Ai,t);return(0,V.jsx)(ji,{scope:t,forceMount:n,children:(0,V.jsx)(k,{present:n||a.open,children:(0,V.jsx)(F,{asChild:!0,container:i,children:r})})})};Mi.displayName=Ai;var Ni=`MenuContent`,[Pi,Fi]=yi(Ni),Ii=z.forwardRef((e,t)=>{let n=H(Ni,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=wi(Ni,e.__scopeMenu),o=Ei(Ni,e.__scopeMenu);return(0,V.jsx)(gi.Provider,{scope:e.__scopeMenu,children:(0,V.jsx)(k,{present:r||a.open,children:(0,V.jsx)(gi.Slot,{scope:e.__scopeMenu,children:o.modal?(0,V.jsx)(Li,{...i,ref:t}):(0,V.jsx)(Ri,{...i,ref:t})})})})}),Li=z.forwardRef((e,t)=>{let n=wi(Ni,e.__scopeMenu),r=z.useRef(null),i=j(t,r);return z.useEffect(()=>{let e=r.current;if(e)return oe(e)},[]),(0,V.jsx)(Bi,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:I(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Ri=z.forwardRef((e,t)=>{let n=wi(Ni,e.__scopeMenu);return(0,V.jsx)(Bi,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),zi=b(`MenuContent.ScrollLock`),Bi=z.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,g=wi(Ni,n),_=Ei(Ni,n),v=xi(n),y=Si(n),b=_i(n),[x,S]=z.useState(null),C=z.useRef(null),w=j(t,C,g.onContentChange),T=z.useRef(0),E=z.useRef(``),k=z.useRef(0),A=z.useRef(null),te=z.useRef(`right`),M=z.useRef(0),N=m?D:z.Fragment,re=m?{as:zi,allowPinchZoom:!0}:void 0,ie=e=>{let t=E.current+e,n=b().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=wa(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){E.current=t,window.clearTimeout(T.current),t!==``&&(T.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};z.useEffect(()=>()=>window.clearTimeout(T.current),[]),ne();let oe=z.useCallback(e=>te.current===A.current?.side&&Ea(e,A.current?.area),[]);return(0,V.jsx)(Pi,{scope:n,searchRef:E,onItemEnter:z.useCallback(e=>{oe(e)&&e.preventDefault()},[oe]),onItemLeave:z.useCallback(e=>{oe(e)||(C.current?.focus(),S(null))},[oe]),onTriggerLeave:z.useCallback(e=>{oe(e)&&e.preventDefault()},[oe]),pointerGraceTimerRef:k,onPointerGraceIntentChange:z.useCallback(e=>{A.current=e},[]),children:(0,V.jsx)(N,{...re,children:(0,V.jsx)(O,{asChild:!0,trapped:i,onMountAutoFocus:I(a,e=>{e.preventDefault(),C.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,V.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,V.jsx)(si,{asChild:!0,...y,dir:_.dir,orientation:`vertical`,loop:r,currentTabStopId:x,onCurrentTabStopIdChange:S,onEntryFocus:I(c,e=>{_.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,V.jsx)(ae,{role:`menu`,"aria-orientation":`vertical`,"data-state":ya(g.open),"data-radix-menu-content":``,dir:_.dir,...v,...h,ref:w,style:{outline:`none`,...h.style},onKeyDown:I(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=C.current;if(e.target!==i||!fi.includes(e.key))return;e.preventDefault();let a=b().filter(e=>!e.disabled).map(e=>e.ref.current);di.includes(e.key)&&a.reverse(),Sa(a)}),onBlur:I(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(T.current),E.current=``)}),onPointerMove:I(e.onPointerMove,Da(e=>{let t=e.target,n=M.current!==e.clientX;e.currentTarget.contains(t)&&n&&(te.current=e.clientX>M.current?`right`:`left`,M.current=e.clientX)}))})})})})})})});Ii.displayName=Ni;var Vi=`MenuGroup`,Hi=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,V.jsx)(v.div,{role:`group`,...r,ref:t})});Hi.displayName=Vi;var Ui=`MenuLabel`,Wi=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,V.jsx)(v.div,{...r,ref:t})});Wi.displayName=Ui;var Gi=`MenuItem`,Ki=`menu.itemSelect`,qi=z.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=z.useRef(null),o=Ei(Gi,e.__scopeMenu),s=Fi(Gi,e.__scopeMenu),c=j(t,a),l=z.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Ki,{bubbles:!0,cancelable:!0});e.addEventListener(Ki,e=>r?.(e),{once:!0}),ce(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,V.jsx)(Ji,{...i,ref:c,disabled:n,onClick:I(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:I(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:I(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||li.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});qi.displayName=Gi;var Ji=z.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Fi(Gi,n),s=Si(n),c=z.useRef(null),l=j(t,c),[u,d]=z.useState(!1),[f,p]=z.useState(``);return z.useEffect(()=>{let e=c.current;e&&p((e.textContent??``).trim())},[a.children]),(0,V.jsx)(gi.ItemSlot,{scope:n,disabled:r,textValue:i??f,children:(0,V.jsx)(ci,{asChild:!0,...s,focusable:!r,children:(0,V.jsx)(v.div,{role:`menuitem`,"data-highlighted":u?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:l,onPointerMove:I(e.onPointerMove,Da(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:I(e.onPointerLeave,Da(e=>o.onItemLeave(e))),onFocus:I(e.onFocus,()=>d(!0)),onBlur:I(e.onBlur,()=>d(!1))})})})}),Yi=`MenuCheckboxItem`,Xi=z.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,V.jsx)(ia,{scope:e.__scopeMenu,checked:n,children:(0,V.jsx)(qi,{role:`menuitemcheckbox`,"aria-checked":ba(n)?`mixed`:n,...i,ref:t,"data-state":xa(n),onSelect:I(i.onSelect,()=>r?.(ba(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Xi.displayName=Yi;var Zi=`MenuRadioGroup`,[Qi,$i]=yi(Zi,{value:void 0,onValueChange:()=>{}}),ea=z.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=ie(r);return(0,V.jsx)(Qi,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,V.jsx)(Hi,{...i,ref:t})})});ea.displayName=Zi;var ta=`MenuRadioItem`,na=z.forwardRef((e,t)=>{let{value:n,...r}=e,i=$i(ta,e.__scopeMenu),a=n===i.value;return(0,V.jsx)(ia,{scope:e.__scopeMenu,checked:a,children:(0,V.jsx)(qi,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":xa(a),onSelect:I(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});na.displayName=ta;var ra=`MenuItemIndicator`,[ia,aa]=yi(ra,{checked:!1}),oa=z.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=aa(ra,n);return(0,V.jsx)(k,{present:r||ba(a.checked)||a.checked===!0,children:(0,V.jsx)(v.span,{...i,ref:t,"data-state":xa(a.checked)})})});oa.displayName=ra;var sa=`MenuSeparator`,ca=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,V.jsx)(v.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});ca.displayName=sa;var la=`MenuArrow`,ua=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=xi(n);return(0,V.jsx)(N,{...i,...r,ref:t})});ua.displayName=la;var da=`MenuSub`,[fa,pa]=yi(da),ma=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=wi(da,t),o=xi(t),[s,c]=z.useState(null),[l,u]=z.useState(null),d=ie(i);return z.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,V.jsx)(te,{...o,children:(0,V.jsx)(Ci,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,V.jsx)(fa,{scope:t,contentId:A(),triggerId:A(),trigger:s,onTriggerChange:c,children:n})})})};ma.displayName=da;var ha=`MenuSubTrigger`,ga=z.forwardRef((e,t)=>{let n=wi(ha,e.__scopeMenu),r=Ei(ha,e.__scopeMenu),i=pa(ha,e.__scopeMenu),a=Fi(ha,e.__scopeMenu),o=z.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},u=z.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return z.useEffect(()=>u,[u]),z.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,V.jsx)(ki,{asChild:!0,...l,children:(0,V.jsx)(Ji,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":ya(n.open),...e,ref:x(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:I(e.onPointerMove,Da(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:I(e.onPointerLeave,Da(e=>{u();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:I(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||pi[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});ga.displayName=ha;var _a=`MenuSubContent`,va=z.forwardRef((e,t)=>{let n=H(Ni,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=wi(Ni,e.__scopeMenu),o=Ei(Ni,e.__scopeMenu),s=pa(_a,e.__scopeMenu),c=z.useRef(null),l=j(t,c);return(0,V.jsx)(gi.Provider,{scope:e.__scopeMenu,children:(0,V.jsx)(k,{present:r||a.open,children:(0,V.jsx)(gi.Slot,{scope:e.__scopeMenu,children:(0,V.jsx)(Bi,{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:I(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:I(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:I(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=mi[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});va.displayName=_a;function ya(e){return e?`open`:`closed`}function ba(e){return e===`indeterminate`}function xa(e){return ba(e)?`indeterminate`:e?`checked`:`unchecked`}function Sa(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Ca(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function wa(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=Ca(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 Ta(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 Ea(e,t){return t?Ta({x:e.clientX,y:e.clientY},t):!1}function Da(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Oa=Di,ka=ki,Aa=Mi,ja=Ii,Ma=Hi,Na=Wi,Pa=qi,Fa=Xi,Ia=ea,La=na,Ra=oa,za=ca,Ba=ua,Va=ma,Ha=ga,Ua=va,Wa=`ContextMenu`,[Ga,Ka]=S(Wa,[bi]),qa=bi(),[Ja,Ya]=Ga(Wa),Xa=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:a=!0}=e,[o,s]=z.useState(!1),c=qa(t),l=ie(r),u=z.useCallback(e=>{s(e),l(e)},[l]);return(0,V.jsx)(Ja,{scope:t,open:o,onOpenChange:u,modal:a,children:(0,V.jsx)(Oa,{...c,dir:i,open:o,onOpenChange:u,modal:a,children:n})})};Xa.displayName=Wa;var Za=`ContextMenuTrigger`,Qa=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,disabled:r=!1,...i}=e,a=Ya(Za,n),o=qa(n),s=z.useRef({x:0,y:0}),c=z.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...s.current})}),l=z.useRef(0),u=z.useCallback(()=>window.clearTimeout(l.current),[]),d=e=>{s.current={x:e.clientX,y:e.clientY},a.onOpenChange(!0)};return z.useEffect(()=>u,[u]),z.useEffect(()=>void(r&&u()),[r,u]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(ka,{...o,virtualRef:c}),(0,V.jsx)(v.span,{"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,...i,ref:t,style:{WebkitTouchCallout:`none`,...e.style},onContextMenu:r?e.onContextMenu:I(e.onContextMenu,e=>{u(),d(e),e.preventDefault()}),onPointerDown:r?e.onPointerDown:I(e.onPointerDown,Eo(e=>{u(),l.current=window.setTimeout(()=>d(e),700)})),onPointerMove:r?e.onPointerMove:I(e.onPointerMove,Eo(u)),onPointerCancel:r?e.onPointerCancel:I(e.onPointerCancel,Eo(u)),onPointerUp:r?e.onPointerUp:I(e.onPointerUp,Eo(u))})]})});Qa.displayName=Za;var $a=`ContextMenuPortal`,eo=e=>{let{__scopeContextMenu:t,...n}=e,r=qa(t);return(0,V.jsx)(Aa,{...r,...n})};eo.displayName=$a;var to=`ContextMenuContent`,no=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ya(to,n),a=qa(n),o=z.useRef(!1);return(0,V.jsx)(ja,{...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)`}})});no.displayName=to;var ro=`ContextMenuGroup`,io=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ma,{...i,...r,ref:t})});io.displayName=ro;var ao=`ContextMenuLabel`,oo=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Na,{...i,...r,ref:t})});oo.displayName=ao;var so=`ContextMenuItem`,co=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Pa,{...i,...r,ref:t})});co.displayName=so;var lo=`ContextMenuCheckboxItem`,U=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Fa,{...i,...r,ref:t})});U.displayName=lo;var W=`ContextMenuRadioGroup`,uo=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ia,{...i,...r,ref:t})});uo.displayName=W;var fo=`ContextMenuRadioItem`,po=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(La,{...i,...r,ref:t})});po.displayName=fo;var mo=`ContextMenuItemIndicator`,ho=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ra,{...i,...r,ref:t})});ho.displayName=mo;var go=`ContextMenuSeparator`,_o=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(za,{...i,...r,ref:t})});_o.displayName=go;var vo=`ContextMenuArrow`,yo=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ba,{...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=qa(t),[s,c]=w({prop:i,defaultProp:a??!1,onChange:r,caller:bo});return(0,V.jsx)(Va,{...o,open:s,onOpenChange:c,children:n})};xo.displayName=bo;var So=`ContextMenuSubTrigger`,Co=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ha,{...i,...r,ref:t})});Co.displayName=So;var wo=`ContextMenuSubContent`,To=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ua,{...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=Xa,Oo=Qa,ko=eo,Ao=no,jo=co,Mo=_o,No=`DropdownMenu`,[Po,Fo]=S(No,[bi]),Io=bi(),[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=z.useRef(null),[u,d]=w({prop:i,defaultProp:a??!1,onChange:o,caller:No});return(0,V.jsx)(Lo,{scope:t,triggerId:A(),triggerRef:l,contentId:A(),open:u,onOpenChange:d,onOpenToggle:z.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,V.jsx)(Oa,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};zo.displayName=No;var Bo=`DropdownMenuTrigger`,Vo=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Ro(Bo,n),o=Io(n);return(0,V.jsx)(ka,{asChild:!0,...o,children:(0,V.jsx)(v.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:x(t,a.triggerRef),onPointerDown:I(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:I(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,V.jsx)(Aa,{...r,...n})};Uo.displayName=Ho;var Wo=`DropdownMenuContent`,Go=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ro(Wo,n),a=Io(n),o=z.useRef(!1);return(0,V.jsx)(ja,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:I(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:I(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=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ma,{...i,...r,ref:t})});qo.displayName=Ko;var Jo=`DropdownMenuLabel`,Yo=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Na,{...i,...r,ref:t})});Yo.displayName=Jo;var Xo=`DropdownMenuItem`,Zo=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Pa,{...i,...r,ref:t})});Zo.displayName=Xo;var Qo=`DropdownMenuCheckboxItem`,$o=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Fa,{...i,...r,ref:t})});$o.displayName=Qo;var es=`DropdownMenuRadioGroup`,ts=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ia,{...i,...r,ref:t})});ts.displayName=es;var ns=`DropdownMenuRadioItem`,rs=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(La,{...i,...r,ref:t})});rs.displayName=ns;var is=`DropdownMenuItemIndicator`,as=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ra,{...i,...r,ref:t})});as.displayName=is;var os=`DropdownMenuSeparator`,ss=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(za,{...i,...r,ref:t})});ss.displayName=os;var cs=`DropdownMenuArrow`,ls=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ba,{...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]=w({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,V.jsx)(Va,{...o,open:s,onOpenChange:c,children:n})},ds=`DropdownMenuSubTrigger`,fs=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ha,{...i,...r,ref:t})});fs.displayName=ds;var ps=`DropdownMenuSubContent`,ms=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ua,{...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=z.forwardRef((e,t)=>(0,V.jsx)(v.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 z.useReducer((e,n)=>t[e][n]??e,e)}var Os=`ScrollArea`,[ks,As]=S(Os),[js,Ms]=ks(Os),Ns=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=z.useState(null),[l,u]=z.useState(null),[d,f]=z.useState(null),[p,m]=z.useState(null),[h,g]=z.useState(null),[_,y]=z.useState(0),[b,x]=z.useState(0),[S,C]=z.useState(!1),[w,T]=z.useState(!1),E=j(t,e=>c(e)),D=M(i);return(0,V.jsx)(js,{scope:n,type:r,dir:D,scrollHideDelay:a,scrollArea:s,viewport:l,onViewportChange:u,content:d,onContentChange:f,scrollbarX:p,onScrollbarXChange:m,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:h,onScrollbarYChange:g,scrollbarYEnabled:w,onScrollbarYEnabledChange:T,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,V.jsx)(v.div,{dir:D,...o,ref:E,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});Ns.displayName=Os;var Ps=`ScrollAreaViewport`,Fs=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=Ms(Ps,n),s=j(t,z.useRef(null),o.onViewportChange);return(0,V.jsxs)(V.Fragment,{children:[(0,V.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,V.jsx)(v.div,{"data-radix-scroll-area-viewport":``,...a,ref:s,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,V.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Fs.displayName=Ps;var Is=`ScrollAreaScrollbar`,Ls=z.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return z.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,V.jsx)(Rs,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,V.jsx)(zs,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,V.jsx)(Bs,{...r,ref:t,forceMount:n}):i.type===`always`?(0,V.jsx)(Vs,{...r,ref:t}):null});Ls.displayName=Is;var Rs=z.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),[a,o]=z.useState(!1);return z.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,V.jsx)(k,{present:n||a,children:(0,V.jsx)(Bs,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),zs=z.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 z.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),z.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,V.jsx)(k,{present:n||s!==`hidden`,children:(0,V.jsx)(Vs,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:I(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:I(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Bs=z.forwardRef((e,t)=>{let n=Ms(Is,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=z.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,V.jsx)(k,{present:r||a,children:(0,V.jsx)(Vs,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),Vs=z.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=Ms(Is,e.__scopeScrollArea),a=z.useRef(null),o=z.useRef(0),[s,c]=z.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,V.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,V.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=z.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=z.useState(),c=z.useRef(null),l=j(t,c,a.onScrollbarXChange);return z.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,V.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=z.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=z.useState(),c=z.useRef(null),l=j(t,c,a.onScrollbarYChange);return z.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,V.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=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:l,onWheelScroll:u,onResize:d,...f}=e,p=Ms(Is,n),[m,h]=z.useState(null),g=j(t,e=>h(e)),_=z.useRef(null),y=z.useRef(``),b=p.viewport,x=r.content-r.viewport,S=ie(u),C=ie(c),w=sc(d,10);function T(e){_.current&&l({x:e.clientX-_.current.left,y:e.clientY-_.current.top})}return z.useEffect(()=>{let e=e=>{let t=e.target;m?.contains(t)&&S(e,x)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,m,x,S]),z.useEffect(C,[r,C]),cc(m,w),cc(p.content,w),(0,V.jsx)(Ws,{scope:n,scrollbar:m,hasThumb:i,onThumbChange:ie(a),onThumbPointerUp:ie(o),onThumbPositionChange:C,onThumbPointerDown:ie(s),children:(0,V.jsx)(v.div,{...f,ref:g,style:{position:`absolute`,...f.style},onPointerDown:I(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,p.viewport&&(p.viewport.style.scrollBehavior=`auto`),T(e))}),onPointerMove:I(e.onPointerMove,T),onPointerUp:I(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,p.viewport&&(p.viewport.style.scrollBehavior=``),_.current=null})})})}),qs=`ScrollAreaThumb`,Js=z.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Gs(qs,e.__scopeScrollArea);return(0,V.jsx)(k,{present:n||i.hasThumb,children:(0,V.jsx)(Ys,{ref:t,...r})})}),Ys=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=Ms(qs,n),o=Gs(qs,n),{onThumbPositionChange:s}=o,c=j(t,e=>o.onThumbChange(e)),l=z.useRef(void 0),u=sc(()=>{l.current&&=(l.current(),void 0)},100);return z.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{u(),l.current||(l.current=oc(e,s),s())};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,V.jsx)(v.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:I(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:I(e.onPointerUp,o.onThumbPointerUp)})});Js.displayName=qs;var Xs=`ScrollAreaCorner`,Zs=z.forwardRef((e,t)=>{let n=Ms(Xs,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,V.jsx)(Qs,{...e,ref:t}):null});Zs.displayName=Xs;var Qs=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=Ms(Xs,n),[a,o]=z.useState(0),[s,c]=z.useState(0),l=!!(a&&s);return cc(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),cc(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,V.jsx)(v.div,{...r,ref:t,style:{width:a,height:s,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=ie(e),r=z.useRef(0);return z.useEffect(()=>()=>window.clearTimeout(r.current),[]),z.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function cc(e,t){let n=ie(t);se(()=>{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]=E(mc),[vc,yc]=S(mc,[_c,T]),bc=T(),[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:p,form:m}=e,h=bc(t),[g,_]=z.useState(null),[v,y]=z.useState(null),[b,x]=z.useState(!1),S=M(l),[C,T]=w({prop:r,defaultProp:i??!1,onChange:a,caller:mc}),[E,D]=w({prop:o,defaultProp:s,onChange:c,caller:mc}),O=z.useRef(null),ee=g?m||!!g.closest(`form`):!0,[k,j]=z.useState(new Set),ne=Array.from(k).map(e=>e.props.value).join(`;`);return(0,V.jsx)(te,{...h,children:(0,V.jsxs)(xc,{required:p,scope:t,trigger:g,onTriggerChange:_,valueNode:v,onValueNodeChange:y,valueNodeHasChildren:b,onValueNodeHasChildrenChange:x,contentId:A(),value:E,onValueChange:D,open:C,onOpenChange:T,dir:S,triggerPointerDownPosRef:O,disabled:f,children:[(0,V.jsx)(hc.Provider,{scope:t,children:(0,V.jsx)(Cc,{scope:e.__scopeSelect,onNativeOptionAdd:z.useCallback(e=>{j(t=>new Set(t).add(e))},[]),onNativeOptionRemove:z.useCallback(e=>{j(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),ee?(0,V.jsxs)(bl,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:E,onChange:e=>D(e.target.value),disabled:f,form:m,children:[E===void 0?(0,V.jsx)(`option`,{value:``}):null,Array.from(k)]},ne):null]})})};Tc.displayName=mc;var Ec=`SelectTrigger`,Dc=z.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=bc(n),o=Sc(Ec,n),s=o.disabled||r,c=j(t,o.onTriggerChange),l=gc(n),u=z.useRef(`touch`),[d,f,p]=Sl(e=>{let t=l().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,V.jsx)(P,{asChild:!0,...a,children:(0,V.jsx)(v.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:s,"data-disabled":s?``:void 0,"data-placeholder":xl(o.value)?``:void 0,...i,ref:c,onClick:I(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:I(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:I(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&fc.includes(e.key)&&(m(),e.preventDefault())})})})});Dc.displayName=Ec;var Oc=`SelectValue`,kc=z.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=Sc(Oc,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=j(t,c.onValueNodeChange);return se(()=>{l(u)},[l,u]),(0,V.jsx)(v.span,{...s,ref:d,style:{pointerEvents:`none`},children:xl(c.value)?(0,V.jsx)(V.Fragment,{children:o}):a})});kc.displayName=Oc;var Ac=`SelectIcon`,jc=z.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,V.jsx)(v.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});jc.displayName=Ac;var Mc=`SelectPortal`,Nc=e=>(0,V.jsx)(F,{asChild:!0,...e});Nc.displayName=Mc;var Pc=`SelectContent`,Fc=z.forwardRef((e,t)=>{let n=Sc(Pc,e.__scopeSelect),[r,i]=z.useState();if(se(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?dn.createPortal((0,V.jsx)(Lc,{scope:e.__scopeSelect,children:(0,V.jsx)(hc.Slot,{scope:e.__scopeSelect,children:(0,V.jsx)(`div`,{children:e.children})})}),t):null}return(0,V.jsx)(Vc,{...e,ref:t})});Fc.displayName=Pc;var Ic=10,[Lc,Rc]=vc(Pc),zc=`SelectContentImpl`,Bc=b(`SelectContent.RemoveScroll`),Vc=z.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:g,..._}=e,v=Sc(Pc,n),[y,b]=z.useState(null),[x,S]=z.useState(null),C=j(t,e=>b(e)),[w,T]=z.useState(null),[E,k]=z.useState(null),A=gc(n),[te,M]=z.useState(!1),N=z.useRef(!1);z.useEffect(()=>{if(y)return oe(y)},[y]),ne();let re=z.useCallback(e=>{let[t,...n]=A().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&&x&&(x.scrollTop=0),n===r&&x&&(x.scrollTop=x.scrollHeight),n?.focus(),document.activeElement!==i))return},[A,x]),ie=z.useCallback(()=>re([w,y]),[re,w,y]);z.useEffect(()=>{te&&ie()},[te,ie]);let{onOpenChange:ae,triggerPointerDownPosRef:P}=v;z.useEffect(()=>{if(y){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(P.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(P.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():y.contains(n.target)||ae(!1),document.removeEventListener(`pointermove`,t),P.current=null};return P.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[y,ae,P]),z.useEffect(()=>{let e=()=>ae(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[ae]);let[F,se]=Sl(e=>{let t=A().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ce=z.useCallback((e,t,n)=>{let r=!N.current&&!n;(v.value!==void 0&&v.value===t||r)&&(T(e),r&&(N.current=!0))},[v.value]),le=z.useCallback(()=>y?.focus(),[y]),ue=z.useCallback((e,t,n)=>{let r=!N.current&&!n;(v.value!==void 0&&v.value===t||r)&&k(e)},[v.value]),L=r===`popper`?Gc:Uc,de=L===Gc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,V.jsx)(Lc,{scope:n,content:y,viewport:x,onViewportChange:S,itemRefCallback:ce,selectedItem:w,onItemLeave:le,itemTextRefCallback:ue,focusSelectedItem:ie,selectedItemText:E,position:r,isPositioned:te,searchRef:F,children:(0,V.jsx)(D,{as:Bc,allowPinchZoom:!0,children:(0,V.jsx)(O,{asChild:!0,trapped:v.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:I(i,e=>{v.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,V.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:(0,V.jsx)(L,{role:`listbox`,id:v.contentId,"data-state":v.open?`open`:`closed`,dir:v.dir,onContextMenu:e=>e.preventDefault(),..._,...de,onPlaced:()=>M(!0),ref:C,style:{display:`flex`,flexDirection:`column`,outline:`none`,..._.style},onKeyDown:I(_.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&se(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=A().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(()=>re(t)),e.preventDefault()}})})})})})})});Vc.displayName=zc;var Hc=`SelectItemAlignedPosition`,Uc=z.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Sc(Pc,n),o=Rc(Pc,n),[s,c]=z.useState(null),[l,u]=z.useState(null),d=j(t,e=>u(e)),f=gc(n),p=z.useRef(!1),m=z.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:_,focusSelectedItem:y}=o,b=z.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&_){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=_.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-Ic*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),v=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+v+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ic,D=c-E,O=g.offsetHeight/2,ee=g.offsetTop+O,k=m+v+ee,A=x-k;if(k<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(D,O+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+O)+A;s.style.height=t+`px`,h.scrollTop=k-E+h.offsetTop}s.style.margin=`${Ic}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,_,a.dir,r]);se(()=>b(),[b]);let[x,S]=z.useState();return se(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]),(0,V.jsx)(Kc,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:z.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]),children:(0,V.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,V.jsx)(v.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Uc.displayName=Hc;var Wc=`SelectPopperPosition`,Gc=z.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ic,...a}=e,o=bc(n);return(0,V.jsx)(ae,{...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=z.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Rc(Jc,n),o=qc(Jc,n),s=j(t,a.onViewportChange),c=z.useRef(0);return(0,V.jsxs)(V.Fragment,{children:[(0,V.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,V.jsx)(hc.Slot,{scope:n,children:(0,V.jsx)(v.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:I(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.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`)}}}c.current=t.scrollTop})})})]})});Yc.displayName=Jc;var Xc=`SelectGroup`,[Zc,Qc]=vc(Xc),$c=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=A();return(0,V.jsx)(Zc,{scope:n,id:i,children:(0,V.jsx)(v.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});$c.displayName=Xc;var el=`SelectLabel`,tl=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Qc(el,n);return(0,V.jsx)(v.div,{id:i.id,...r,ref:t})});tl.displayName=el;var nl=`SelectItem`,[rl,il]=vc(nl),al=z.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=Sc(nl,n),c=Rc(nl,n),l=s.value===r,[u,d]=z.useState(a??``),[f,p]=z.useState(!1),m=j(t,e=>c.itemRefCallback?.(e,r,i)),h=A(),g=z.useRef(`touch`),_=()=>{i||(s.onValueChange(r),s.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,V.jsx)(rl,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:z.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,V.jsx)(hc.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,V.jsx)(v.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:I(o.onFocus,()=>p(!0)),onBlur:I(o.onBlur,()=>p(!1)),onClick:I(o.onClick,()=>{g.current!==`mouse`&&_()}),onPointerUp:I(o.onPointerUp,()=>{g.current===`mouse`&&_()}),onPointerDown:I(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:I(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:I(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:I(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(pc.includes(e.key)&&_(),e.key===` `&&e.preventDefault())})})})})});al.displayName=nl;var ol=`SelectItemText`,sl=z.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Sc(ol,n),s=Rc(ol,n),c=il(ol,n),l=wc(ol,n),[u,d]=z.useState(null),f=j(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=z.useMemo(()=>(0,V.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return se(()=>(h(m),()=>g(m)),[h,g,m]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(v.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?dn.createPortal(a.children,o.valueNode):null]})});sl.displayName=ol;var cl=`SelectItemIndicator`,ll=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return il(cl,n).isSelected?(0,V.jsx)(v.span,{"aria-hidden":!0,...r,ref:t}):null});ll.displayName=cl;var ul=`SelectScrollUpButton`,dl=z.forwardRef((e,t)=>{let n=Rc(ul,e.__scopeSelect),r=qc(ul,e.__scopeSelect),[i,a]=z.useState(!1),o=j(t,r.onScrollButtonChange);return se(()=>{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,V.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=z.forwardRef((e,t)=>{let n=Rc(fl,e.__scopeSelect),r=qc(fl,e.__scopeSelect),[i,a]=z.useState(!1),o=j(t,r.onScrollButtonChange);return se(()=>{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,V.jsx)(ml,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});pl.displayName=fl;var ml=z.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Rc(`SelectScrollButton`,n),o=z.useRef(null),s=gc(n),c=z.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return z.useEffect(()=>()=>c(),[c]),se(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,V.jsx)(v.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:I(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:I(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:I(i.onPointerLeave,()=>{c()})})}),hl=`SelectSeparator`,gl=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,V.jsx)(v.div,{"aria-hidden":!0,...r,ref:t})});gl.displayName=hl;var _l=`SelectArrow`,vl=z.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,V.jsx)(N,{...i,...r,ref:t}):null});vl.displayName=_l;var yl=`SelectBubbleInput`,bl=z.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=z.useRef(null),a=j(r,i),o=Vr(t);return z.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,V.jsx)(v.select,{...n,style:{...Xn,...n.style},ref:a,defaultValue:t})});bl.displayName=yl;function xl(e){return e===``||e===void 0}function Sl(e){let t=ie(e),n=z.useRef(``),r=z.useRef(0),i=z.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=z.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return z.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`,Rl=`horizontal`,zl=[`horizontal`,`vertical`],G=z.forwardRef((e,t)=>{let{decorative:n,orientation:r=Rl,...i}=e,a=Bl(r)?r:Rl,o=a===`vertical`?a:void 0,s=n?{role:`none`}:{"aria-orientation":o,role:`separator`};return(0,V.jsx)(v.div,{"data-orientation":a,...s,...i,ref:t})});G.displayName=Ll;function Bl(e){return zl.includes(e)}var K=G,q=`Switch`,[J,Vl]=S(q),[Hl,Ul]=J(q),Wl=z.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c=`on`,onCheckedChange:l,form:u,...d}=e,[f,p]=z.useState(null),m=j(t,e=>p(e)),h=z.useRef(!1),g=f?u||!!f.closest(`form`):!0,[_,y]=w({prop:i,defaultProp:a??!1,onChange:l,caller:q});return(0,V.jsxs)(Hl,{scope:n,checked:_,disabled:s,children:[(0,V.jsx)(v.button,{type:`button`,role:`switch`,"aria-checked":_,"aria-required":o,"data-state":Yl(_),"data-disabled":s?``:void 0,disabled:s,value:c,...d,ref:m,onClick:I(e.onClick,e=>{y(e=>!e),g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())})}),g&&(0,V.jsx)(Jl,{control:f,bubbles:!h.current,name:r,value:c,checked:_,required:o,disabled:s,form:u,style:{transform:`translateX(-100%)`}})]})});Wl.displayName=q;var Gl=`SwitchThumb`,Kl=z.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ul(Gl,n);return(0,V.jsx)(v.span,{"data-state":Yl(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});Kl.displayName=Gl;var ql=`SwitchBubbleInput`,Jl=z.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let o=z.useRef(null),s=j(o,a),c=Vr(n),l=re(t);return z.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,V.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]=S(`Tooltip`,[T]),eu=T(),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=z.useRef(!0),s=z.useRef(!1),c=z.useRef(0);return z.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,V.jsx)(iu,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:z.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:z.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:z.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]=z.useState(null),f=A(),p=z.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=z.useRef(!1),[_,v]=w({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(ru))):c.onClose(),a?.(e)},caller:su}),y=z.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),b=z.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=z.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),S=z.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return z.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,V.jsx)(te,{...l,children:(0,V.jsx)(cu,{scope:t,contentId:f,open:_,stateAttribute:y,trigger:u,onTriggerChange:d,onTriggerEnter:z.useCallback(()=>{c.isOpenDelayedRef.current?S():b()},[c.isOpenDelayedRef,S,b]),onTriggerLeave:z.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:b,onClose:x,disableHoverableContent:m,children:n})})};uu.displayName=su;var du=`TooltipTrigger`,fu=z.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=lu(du,n),a=au(du,n),o=eu(n),s=j(t,z.useRef(null),i.onTriggerChange),c=z.useRef(!1),l=z.useRef(!1),u=z.useCallback(()=>c.current=!1,[]);return z.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,V.jsx)(P,{asChild:!0,...o,children:(0,V.jsx)(v.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:I(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:I(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:I(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:I(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:I(e.onBlur,i.onClose),onClick:I(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,V.jsx)(mu,{scope:t,forceMount:n,children:(0,V.jsx)(k,{present:n||a.open,children:(0,V.jsx)(F,{asChild:!0,container:i,children:r})})})};gu.displayName=pu;var _u=`TooltipContent`,vu=z.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,V.jsx)(k,{present:r||o.open,children:o.disableHoverableContent?(0,V.jsx)(Cu,{side:i,...a,ref:t}):(0,V.jsx)(yu,{side:i,...a,ref:t})})}),yu=z.forwardRef((e,t)=>{let n=lu(_u,e.__scopeTooltip),r=au(_u,e.__scopeTooltip),i=z.useRef(null),a=j(t,i),[o,s]=z.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=z.useCallback(()=>{s(null),d(!1)},[d]),p=z.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 z.useEffect(()=>()=>f(),[f]),z.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]),z.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,V.jsx)(Cu,{...e,ref:a})}),[bu,xu]=Ql(su,{isInside:!1}),Su=y(`TooltipContent`),Cu=z.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 z.useEffect(()=>(document.addEventListener(ru,u),()=>document.removeEventListener(ru,u)),[u]),z.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,V.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,V.jsxs)(ae,{"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,V.jsx)(Su,{children:r}),(0,V.jsx)(bu,{scope:n,isInside:!0,children:(0,V.jsx)($n,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});vu.displayName=_u;var wu=`TooltipArrow`,Tu=z.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=eu(n);return xu(wu,n).isInside?null:(0,V.jsx)(N,{...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,V.jsx)(Mu,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function zu({...e}){return(0,V.jsx)(Nu,{"data-slot":`tooltip`,...e})}function Bu({...e}){return(0,V.jsx)(Pu,{"data-slot":`tooltip-trigger`,...e})}function Vu({className:e,sideOffset:t=0,children:n,...r}){return(0,V.jsx)(Fu,{children:(0,V.jsxs)(Iu,{"data-slot":`tooltip-content`,sideOffset:t,className:L(`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,V.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 Y({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 qu(e){return parseFloat(e.toFixed(3))}function Ju({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 Yu(e){let{panels:t}=e,n=Ju({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=qu(Y({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=qu(Y({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=qu(Y({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=qu(Y({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 X(e,t=`Assertion error`){if(!e)throw Error(t)}function Xu(e,t){return Array.from(t).sort(e===`horizontal`?Zu:Qu)}function Zu(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function Qu(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function $u(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function ed(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 td({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}=ed(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return X(i,`No rect found`),i}var nd;function rd(){return nd===void 0&&(nd=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),nd}function id(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=Xu(n,Array.from(t.children).filter($u).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,td({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=rd()?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:Ju({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 ad=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)}}},od=new Map,sd=new ad;function cd(e){od=new Map(od),od.delete(e)}function ld(e,t){for(let[t]of od)if(t.id===e)return t}function ud(e,t){for(let[t,n]of od)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function dd(){return od}function fd(e,t){return sd.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function pd(e,t){let n=od.get(e);od=new Map(od),od.set(e,t),sd.emit(`groupChange`,{group:e,prev:n,next:t})}function md(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=ed(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 hd(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function gd(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:xd(e),b:xd(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();X(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Z(bd(n.a)),b:Z(bd(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 _d=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function vd(e){let t=getComputedStyle(Sd(e)??e).display;return t===`flex`||t===`inline-flex`}function yd(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||vd(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`||_d.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function bd(e){let t=e.length;for(;t--;){let n=e[t];if(X(n,`Missing node`),yd(n))return n}return null}function Z(e){return e&&Number(getComputedStyle(e).zIndex)||0}function xd(e){let t=[];for(;e;)t.push(e),e=Sd(e);return t}function Sd(e){let{parentNode:t}=e;return hd(t)?t.host:t}function Cd(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 wd({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!$u(n)||n.contains(e)||e.contains(n))return!0;if(gd(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Cd(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Td(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=id(r),a=md(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&wd({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function Ed(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 Dd(e,t,n=0){return Math.abs(qu(e)-qu(t))<=n}function Od(e,t){return Dd(e,t)?0:e>t?1:-1}function kd({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(Od(r,c)<0)if(a){let e=(i+c)/2;r=Od(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=qu(r),r}function Ad({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(Dd(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;X(u!=null,`Invalid first pivot index`),X(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];X(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(X(n!=null,`Previous layout not found for panel index ${t}`),Dd(n,i)){let t=o-n;Od(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];X(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(X(n!=null,`Previous layout not found for panel index ${t}`),Dd(n,o)){let t=n-i;Od(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];X(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&Od(i,c)<0)if(e>0){let t=c-o,n=t/2;Od(i+e,c)<0&&(e=Od(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;Od(i-e,c)<0&&(e=Od(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];X(e!=null,`Previous layout not found for panel index ${r}`);let a=kd({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];X(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=kd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!Dd(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(Ed(c,l))return i;{let t=e<0?d:u,r=s[t];X(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=kd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!Dd(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];X(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=kd({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(Dd(i,s)||(t-=s-i,l[r]=s),Dd(t,0))break;e>0?r--:r++}}}if(!Dd(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 jd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||Od(e[n],t[n])!==0)return!1;return!0}function Md({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(!Dd(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];X(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];X(i!=null,`No layout data found for index ${e}`);let o=r[e];X(o!=null,`No layout data found for index ${e}`);let s=kd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!Dd(a,0))for(let e=0;e<t.length;e++){let n=r[e];X(n!=null,`No layout data found for index ${e}`);let i=n+a,o=kd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,Dd(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Nd({groupId:e,panelId:t}){let n=()=>{let t=dd();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=Md({layout:Ad({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});jd(l,p)||pd(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&&Dd(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=Ju({group:t});o(qu(Y({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function Q(e){e.defaultPrevented||Td(e,dd()).forEach(t=>{if(t.separator){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Nd({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function Pd(e){let t=dd();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 Fd({groupId:e}){let t=()=>{let t=dd();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=Md({layout:e,panelConstraints:r});return n?o:(jd(o,c)||pd(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Id(e,t){let n=Pd(e),r=ud(n.id,!0),i=n.separators.find(t=>t.element===e);X(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);X(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=Fd({groupId:n.id}).getLayout(),c=Md({layout:Ad({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});jd(s,c)||pd(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function Ld(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Pd(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Id(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Id(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Id(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Id(t,-5);break;case`End`:e.preventDefault(),Id(t,100);break;case`Enter`:{e.preventDefault();let n=Pd(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=ud(n.id,!0),o=n.separators.find(e=>e.element===t);X(o,`Matching separator not found`);let s=a.get(o);X(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(X(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];Id(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=Pd(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);X(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(),Id(t,-100);break}}var Rd={cursorFlags:0,state:`inactive`},zd=new ad;function Bd(){return Rd}function Vd(e){return zd.addListener(`change`,e)}function Hd(e){let t=Rd,n={...Rd};n.cursorFlags=e,Rd=n,zd.emit(`change`,{prev:t,next:n})}function Ud(e){let t=Rd;Rd=e,zd.emit(`change`,{prev:t,next:e})}function Wd(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=dd(),n=Td(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)}),Ud({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var Gd=e=>e,Kd=()=>{},qd=1,Jd=2,Yd=4,Xd=8,Zd=3,Qd=12,$d;function ef(){return $d===void 0&&($d=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&($d=!0)),$d}function tf({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&&ef()){let t=(e&qd)!==0,n=(e&Jd)!==0,r=(e&Yd)!==0,i=(e&Xd)!==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 ef()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var nf=new WeakMap;function rf(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=nf.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let r=Bd();switch(r.state){case`active`:case`hover`:{let e=tf({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}nf.set(e,{prevStyle:t,styleSheet:n})}function af({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=Ad({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(jd(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?qd:Jd;break;case`vertical`:s|=d<0?Yd:Xd;break}}else pd(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Zd:c|=s&Zd,t.movementY===0?c|=o&Qd:c|=s&Qd,Hd(c),rf(e)}function of(e){let t=dd(),n=Bd();switch(n.state){case`active`:af({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function sf(e){if(e.defaultPrevented)return;let t=Bd(),n=dd();switch(t.state){case`active`:if(e.buttons===0){Ud({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=ud(e.group.id,!0);pd(e.group,t)});return}af({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=Td(e,n);r.length===0?t.state!==`inactive`&&Ud({cursorFlags:0,state:`inactive`}):Ud({cursorFlags:0,hitRegions:r,state:`hover`}),rf(e.currentTarget);break}}}function cf(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Bd().state){case`hover`:Ud({cursorFlags:0,state:`inactive`})}}function lf(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=Bd();switch(t.state){case`active`:Ud({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(rf(e.currentTarget),t.hitRegions.forEach(e=>{let t=ud(e.group.id,!0);pd(e.group,t)}),e.preventDefault())}}function uf(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=qu(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=qu((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function df(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=Ju({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:qu(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function ff(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 pf({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=qu(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]=qu((r[e]??0)/a*l);else{let e=qu(l/c.length);for(let t of c)u[t]=e}return u}function mf(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 hf=new Map;function gf(e){let t=!0;X(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=Ju({group:e});if(t===0)return;let n=ud(e.id);if(!n)return;let r=Yu(e),i=n.defaultLayoutDeferred?uf(r):n.layout,a=Md({layout:pf({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&jd(n.layout,a)&&ff(n.derivedPanelConstraints,r)&&n.groupSize===t)return;pd(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else df(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{X(!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=Ju({group:e}),s=Yu(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(mf(e.panels,l)||(l=void 0));let u=Md({layout:e.mutableState.layouts[c]??l??uf(s),panelConstraints:s}),d=e.element.ownerDocument;hf.set(d,(hf.get(d)??0)+1);let f=new Map;return id(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),pd(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{X(!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`,Ld)}),hf.get(d)===1&&(d.addEventListener(`dblclick`,Q,!0),d.addEventListener(`pointerdown`,Wd,!0),d.addEventListener(`pointerleave`,of),d.addEventListener(`pointermove`,sf),d.addEventListener(`pointerout`,cf),d.addEventListener(`pointerup`,lf,!0)),function(){t=!1,hf.set(d,Math.max(0,(hf.get(d)??0)-1)),cd(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,Ld)}),hf.get(d)||(d.removeEventListener(`dblclick`,Q,!0),d.removeEventListener(`pointerdown`,Wd,!0),d.removeEventListener(`pointerleave`,of),d.removeEventListener(`pointermove`,sf),d.removeEventListener(`pointerout`,cf),d.removeEventListener(`pointerup`,lf,!0)),a.disconnect()}}function _f(){let[e,t]=(0,z.useState)({});return[e,(0,z.useCallback)(()=>t({}),[])]}function vf(e){let t=(0,z.useId)();return`${e??t}`}var yf=typeof window<`u`?z.useLayoutEffect:z.useEffect;function bf(e){let t=(0,z.useRef)(e);return yf(()=>{t.current=e},[e]),(0,z.useCallback)((...e)=>t.current?.(...e),[t])}function xf(...e){return bf(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function Sf(e){let t=(0,z.useRef)({...e});return yf(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var Cf=(0,z.createContext)(null);function wf(e,t){let n=(0,z.useRef)({getLayout:()=>({}),setLayout:Gd});(0,z.useImperativeHandle)(t,()=>n.current,[]),yf(()=>{Object.assign(n.current,Fd({groupId:e}))})}function Tf({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,z.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=bf(e=>{jd(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=bf(e=>{jd(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e))}),_=vf(s),v=(0,z.useRef)(null),[y,b]=_f(),x=(0,z.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=xf(v,a);wf(_,o);let C=bf((e,t)=>{let r=Bd(),i=ld(e),a=ud(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=Sf({defaultLayout:n,disableCursor:r}),T=(0,z.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=Xu(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=Xu(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=ld(_),i=ud(_);r&&i&&pd(r,{...i,derivedPanelConstraints:Yu(r)})},toggleSeparatorDisabled:(e,t)=>{let n=x.current.separators.find(t=>t.id===e);n&&(n.disabled=t)}}),[C,_,b,u,w]),E=(0,z.useRef)(null);return yf(()=>{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=gf(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=ud(r.id,!0);!o&&s.length>0&&(h(c),g(c));let l=fd(_,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=Dd(t.collapsedSize,i[t.panelId]),a=Dd(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=Bd().state!==`active`;h(i),o&&g(i)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,z.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,V.jsx)(Cf.Provider,{value:T,children:(0,V.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})})}Tf.displayName=`Group`;function Ef(){let e=(0,z.useContext)(Cf);return X(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function Df(e,t){let{id:n}=Ef(),r=(0,z.useRef)({collapse:Kd,expand:Kd,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Kd});(0,z.useImperativeHandle)(t,()=>r.current,[]),yf(()=>{Object.assign(r.current,Nd({groupId:n,panelId:e}))})}function Of({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=vf(c),_=Sf({disabled:a}),v=(0,z.useRef)(null),y=xf(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,togglePanelDisabled:w}=Ef(),T=d!==null,E=bf((e,t,n)=>{d?.(e,c,n)});yf(()=>{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,z.useEffect)(()=>{w(g,!!a)},[a,g,w]),Df(g,f);let D=(0,z.useSyncExternalStore)(e=>fd(x,e),()=>JSON.stringify(b(x,g)),()=>JSON.stringify(b(x,g)));return(0,V.jsx)(`div`,{...m,"aria-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...kf,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...JSON.parse(D)},children:(0,V.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}Of.displayName=`Panel`;var kf={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function Af({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=Md({layout:Ad({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Md({layout:Ad({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function jf({children:e,className:t,disabled:n,elementRef:r,id:i,style:a,...o}){let s=vf(i),c=Sf({disabled:n}),[l,u]=(0,z.useState)({}),[d,f]=(0,z.useState)(`inactive`),p=(0,z.useRef)(null),m=xf(p,r),{disableCursor:h,id:g,orientation:_,registerSeparator:v,toggleSeparatorDisabled:y}=Ef(),b=_===`horizontal`?`vertical`:`horizontal`;yf(()=>{let e=p.current;if(e!==null){let t={disabled:c.disabled,element:e,id:s},n=v(t),r=Vd(e=>{f(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=fd(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(Af({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[g,s,v,c]),(0,z.useEffect)(()=>{y(s,!!n)},[n,s,y]);let x;return n&&!h&&(x=`not-allowed`),(0,V.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})}jf.displayName=`Separator`;var Mf=`ppm-custom-order`;function Nf(){try{let e=localStorage.getItem(Mf);return e?JSON.parse(e):null}catch{return null}}function Pf(e){try{localStorage.setItem(Mf,JSON.stringify(e))}catch{}}function Ff(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 If=h((e,t)=>({projects:[],activeProject:null,customOrder:Nf(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{e({projects:await R.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 R.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 R.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:n}),await t().fetchProjects()},moveProject:async(n,r)=>{let{projects:i,customOrder:a}=t(),o=Ff(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]],Pf(l),await R.patch(`/api/projects/reorder`,{order:l}),e({customOrder:l})},reorderProjects:async t=>{Pf(t),e({customOrder:t}),await R.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,n)=>{await R.patch(`/api/projects/${encodeURIComponent(e)}`,{name:n}),await t().fetchProjects()},deleteProject:async t=>{await R.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&&Pf(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}})),Lf=`application/ppm-tab`,Rf=!1,zf=new Set;function Bf(e){Rf!==e&&(Rf=e,zf.forEach(e=>e()))}function Vf(){return(0,z.useSyncExternalStore)(e=>(zf.add(e),()=>zf.delete(e)),()=>Rf)}function Hf(){Bf(!1)}function Uf(e){let[t,n]=(0,z.useState)(null),r=(0,z.useRef)(null);return{dropIndex:t,handleDragStart:(0,z.useCallback)((t,n)=>{let r={tabId:n,panelId:e};t.dataTransfer.setData(Lf,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`,requestAnimationFrame(()=>Bf(!0))},[e]),handleDragOver:(0,z.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,z.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},[]),handleDrop:(0,z.useCallback)(i=>{i.preventDefault(),Bf(!1);let a=i.dataTransfer.getData(Lf);if(a){try{let n=JSON.parse(a),r=u.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,z.useCallback)(()=>{Bf(!1),n(null),r.current=null},[])}}var Wf=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent),Gf=[{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}`}))],Kf=new Map(Gf.map(e=>[e.id,e.defaultKey]));function qf(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`:Wf?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 Jf(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 Yf(e){return e.replace(/Mod/g,Wf?`⌘`:`Ctrl`).replace(/Shift/g,Wf?`⇧`:`Shift`).replace(/Alt/g,Wf?`⌥`:`Alt`).replace(/Meta|Cmd/g,`⌘`).replace(/Ctrl/g,Wf?`⌃`:`Ctrl`)}function Xf(e){if([`Control`,`Meta`,`Alt`,`Shift`].includes(e.key))return null;let t=[];e.ctrlKey&&!e.metaKey&&t.push(Wf?`Ctrl`:`Mod`),e.metaKey&&t.push(Wf?`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 Zf=h((e,t)=>({overrides:{},loaded:!1,getBinding:e=>t().overrides[e]??Kf.get(e)??``,matchesEvent:(e,n)=>{let r=t().getBinding(n);return r?Jf(e,qf(r)):!1},setBinding:(n,r)=>{e({overrides:{...t().overrides,[n]:r}}),R.put(`/api/settings/keybindings`,{[n]:r}).catch(()=>{})},resetBinding:n=>{let r={...t().overrides};delete r[n],e({overrides:r}),R.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&&R.put(`/api/settings/keybindings`,n).catch(()=>{})},loadFromServer:async()=>{try{e({overrides:await R.get(`/api/settings/keybindings`),loaded:!0})}catch{e({loaded:!0})}}}));function Qf(e){window.dispatchEvent(new CustomEvent(`open-command-palette`,{detail:e}))}function $f(){let[e,t]=(0,z.useState)(!1),[n,r]=(0,z.useState)(``);return(0,z.useEffect)(()=>{let e=0,n=!1,{matchesEvent:i}=Zf.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}=Zf.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(),B.getState().toggleSidebar();return}if(o(i,`next-tab`)||o(i,`prev-tab`)){i.preventDefault();let{tabs:e,activeTabId:t,setActiveTab:n}=m.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=If.getState().activeProject;m.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=B.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`settings`);return}if(o(i,`open-git-status`)){i.preventDefault();let e=B.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=B.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=If.getState().projects[e-1];t&&(If.getState().setActiveProject(t),m.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,z.useCallback)(()=>{t(!1),r(``)},[])}}var ep={approval_request:`bg-red-500`,question:`bg-amber-500`,done:`bg-blue-500`},tp={done:0,question:1,approval_request:2};function np(e){return e&&ep[e]||`bg-red-500`}var rp=h()(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 ip(e){let t=0;for(let[,n]of e.notifications)t+=n.count;return t}function ap(e){return t=>{let n=null,r=-1;for(let[,i]of t.notifications){if(i.projectName!==e)continue;let t=tp[i.type]??0;t>r&&(r=t,n=i.type)}return n}}function op(e){let[t,n]=(0,z.useState)(!1),[r,i]=(0,z.useState)(!1),a=(0,z.useCallback)(()=>{let t=e.current;t&&(n(t.scrollLeft>1),i(t.scrollLeft+t.clientWidth<t.scrollWidth-1))},[e]);return(0,z.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,z.useCallback)(()=>{e.current?.scrollBy({left:-150,behavior:`smooth`})},[e]),scrollRight:(0,z.useCallback)(()=>{e.current?.scrollBy({left:150,behavior:`smooth`})},[e])}}var sp={done:0,question:1,approval_request:2};function cp(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,_=sp[f.type]??0;g<=i&&_>s&&(s=_,o=f.type),h>=a&&_>l&&(l=_,c=f.type)}return{left:o,right:c}}function lp(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 up(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 dp(e){let t=lp(e);return t?up(t.r,t.g,t.b)<.4:!1}function fp({tab:e,isActive:t,icon:n,showDropBefore:r,notificationType:i,onSelect:a,onClose:o,onDragStart:s,onDragOver:c,onDragEnd:l,tabRef:u,onRename:d}){let[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(e.title),g=(0,z.useRef)(null);(0,z.useEffect)(()=>{f&&(h(e.title),setTimeout(()=>g.current?.select(),0))},[f]);let _=()=>{p(!1);let t=m.trim();t&&t!==e.title&&d&&d(t)},v=e.metadata?.connectionColor,y=v?{backgroundColor:t?v:`${v}33`,color:t&&dp(v)?`#fff`:void 0}:void 0;return(0,V.jsxs)(`div`,{className:`relative flex items-center`,children:[r&&(0,V.jsx)(`div`,{className:`absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-full z-10`}),(0,V.jsxs)(`button`,{ref:u,"data-tab-item":!0,draggable:!f,onClick:a,onAuxClick:t=>{t.button===1&&e.closable&&(t.preventDefault(),o())},onDragStart:s,onDragOver:c,onDragEnd:l,style:y,className:L(`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`,!y&&(t?`border-primary text-primary`:`border-transparent text-text-secondary hover:text-foreground`),y&&`border-transparent`),children:[(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(n,{className:`size-4`}),i&&!t&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-1 size-2 rounded-full`,np(i))})]}),f?(0,V.jsx)(`input`,{ref:g,value:m,onChange:e=>h(e.target.value),onBlur:_,onKeyDown:e=>{e.key===`Enter`&&_(),e.key===`Escape`&&p(!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,V.jsx)(`span`,{className:`max-w-[120px] truncate`,onDoubleClick:e=>{d&&(e.stopPropagation(),p(!0))},children:e.title}),e.closable&&!f&&(0,V.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),o()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),o())},className:`ml-1 opacity-0 group-hover:opacity-100 rounded-sm hover:bg-surface-elevated p-0.5 transition-opacity`,children:(0,V.jsx)(sn,{className:`size-3`})})]})]})}var pp={terminal:Qt,chat:St,editor:Ze,database:Ge,sqlite:Ge,postgres:Ge,"git-graph":ot,"git-diff":Qe,settings:Jt,browser:ct,"extension-webview":zt};function mp({panelId:e}){If(e=>e.activeProject);let t=(0,z.useRef)(new Map),n=(0,z.useRef)(null),r=(0,z.useRef)(0),i=u(t=>e?t.panels[e]:t.panels[t.focusedPanelId]),o=i?.tabs??[],s=i?.activeTabId??null,c=i?.id??u.getState().focusedPanelId,{dropIndex:l,handleDragStart:d,handleDragOver:f,handleDragOverBar:p,handleDrop:h,handleDragEnd:g}=Uf(c),_=rp(e=>e.notifications),{canScrollLeft:v,canScrollRight:y,scrollLeft:b,scrollRight:x}=op(n),S=cp(n.current,t.current,o,_);(0,z.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 C=(0,z.useCallback)((e,t)=>{m.getState().updateTab(e.id,{title:t});let n=e.metadata?.projectName,r=e.metadata?.sessionId;n&&r&&R.patch(`${pe(n)}/chat/sessions/${r}`,{title:t}).catch(()=>{})},[]);function w(e){e.target.closest(`[data-tab-item]`)||Qf()}function T(e){e.target.closest(`[data-tab-item]`)||(e.preventDefault(),Qf())}return(0,V.jsxs)(`div`,{className:`hidden md:flex items-center h-10 border-b border-border bg-background relative`,onDragOver:p,onDrop:h,onDoubleClick:w,onContextMenu:T,children:[v&&(0,V.jsx)(`button`,{onClick:b,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,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(Fe,{className:`size-4 text-text-secondary`}),S.left&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-0.5 size-2 rounded-full`,np(S.left))})]})}),(0,V.jsx)(`div`,{ref:n,className:`flex-1 overflow-x-auto overflow-y-hidden min-w-0 scrollbar-none`,children:(0,V.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?_.get(r):void 0,a=i&&i.count>0?i.type:null;return(0,V.jsx)(fp,{tab:e,isActive:e.id===s,icon:pp[e.type],showDropBefore:l===n,notificationType:a,onSelect:()=>{u.getState().setActiveTab(e.id,c),r&&rp.getState().clearForSession(r)},onClose:()=>u.getState().closeTab(e.id,c),onDragStart:t=>d(t,e.id),onDragOver:t=>f(t,e.id,n),onDragEnd:g,tabRef:n=>{n?t.current.set(e.id,n):t.current.delete(e.id)},onRename:e.type===`chat`?t=>C(e,t):void 0},e.id)}),l!==null&&l>=o.length&&(0,V.jsx)(`div`,{className:`w-0.5 h-6 bg-primary rounded-full`}),(0,V.jsx)(`button`,{onClick:()=>Qf(),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,V.jsx)(It,{className:`size-4`})})]})}),y&&(0,V.jsx)(`button`,{onClick:x,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,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(a,{className:`size-4 text-text-secondary`}),S.right&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -left-0.5 size-2 rounded-full`,np(S.right))})]})})]})}function hp({panelId:e}){let[t,n]=(0,z.useState)(null),r=Vf(),i=u(e=>e.grid),a=u(e=>e.isMobile()),s=o(i,e),c=!a&&i.length<3,l=s?!a&&(i[s.row]?.length??0)<d(!1):!1,f=(0,z.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&&l?`left`:n>1-i&&l?`right`:r<i&&c?`top`:r>1-i&&c?`bottom`:`center`},[l,c]),p=(0,z.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.stopPropagation(),n(f(e)))},[f]),m=(0,z.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||n(null)},[]),h=(0,z.useCallback)(t=>{t.preventDefault(),t.stopPropagation();let r=f(t);if(n(null),Hf(),!r)return;let i=t.dataTransfer.getData(Lf);if(i)try{let t=JSON.parse(i),n=u.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{}},[f,e]);return r?(0,V.jsxs)(`div`,{className:`absolute inset-0 z-20`,onDragOver:p,onDragLeave:m,onDrop:h,children:[t===`left`&&(0,V.jsx)(`div`,{className:`absolute inset-y-0 left-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-l-md`}),t===`right`&&(0,V.jsx)(`div`,{className:`absolute inset-y-0 right-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-r-md`}),t===`top`&&(0,V.jsx)(`div`,{className:`absolute inset-x-0 top-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-t-md`}),t===`bottom`&&(0,V.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-b-md`}),t===`center`&&(0,V.jsx)(`div`,{className:`absolute inset-0 bg-primary/5 border-2 border-dashed border-primary/30 rounded-md`})]}):null}var gp=[{type:`terminal`,label:`Terminal`,icon:Qt},{type:`chat`,label:`AI Chat`,icon:St},{type:`git-graph`,label:`Git Graph`,icon:ot}],_p={terminal:(0,z.lazy)(()=>g(()=>import(`./terminal-tab-CpyKvyfC.js`).then(e=>({default:e.TerminalTab})),__vite__mapDeps([3,1,4,5,6,7]))),chat:(0,z.lazy)(()=>g(()=>import(`./chat-tab-moB4W7-w.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([8,1,9,10,11,12,6,5,13,14,15,16,17,18,4,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,38,39,0]))),editor:(0,z.lazy)(()=>g(()=>import(`./code-editor-aQQZUc2m.js`).then(e=>({default:e.CodeEditor})),__vite__mapDeps([40,1,9,10,11,12,6,5,13,14,15,16,17,18,41,19,4,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,42]))),database:(0,z.lazy)(()=>g(()=>import(`./database-viewer-ChyP1N3c.js`).then(e=>({default:e.DatabaseViewer})),__vite__mapDeps([43,1,44,19,6,5,45,21,2]))),sqlite:(0,z.lazy)(()=>g(()=>import(`./sqlite-viewer-Dr5oWCWA.js`).then(e=>({default:e.SqliteViewer})),__vite__mapDeps([46,1,44,19,6,5,45,21,42,2]))),postgres:(0,z.lazy)(()=>g(()=>import(`./postgres-viewer-C9-Acry_.js`).then(e=>({default:e.PostgresViewer})),__vite__mapDeps([47,1,44,19,6,5,45,21,42,2]))),"git-graph":(0,z.lazy)(()=>g(()=>import(`./git-graph-BIrGMX6e.js`).then(e=>({default:e.GitGraph})),__vite__mapDeps([48,1,11,12,6,5,4,19,24,25,39,2]))),"git-diff":(0,z.lazy)(()=>g(()=>import(`./diff-viewer-ktwO5JbX.js`).then(e=>({default:e.DiffViewer})),__vite__mapDeps([49,1,41,19,6,38,5,2]))),settings:(0,z.lazy)(()=>g(()=>import(`./settings-tab-C17exmRv.js`).then(e=>({default:e.SettingsTab})),__vite__mapDeps([50,11,1,12,6,5,2,0]))),browser:(0,z.lazy)(()=>g(()=>import(`./browser-tab-CjUzlPYv.js`).then(e=>({default:e.BrowserTab})),__vite__mapDeps([51,1,24,4,19,6,25,5,2]))),"extension-webview":(0,z.lazy)(()=>g(()=>import(`./extension-webview-Bx1TlP6q.js`).then(e=>({default:e.ExtensionWebview})),__vite__mapDeps([52,1,5,6])))};function vp({panelId:e,projectName:t}){let n=u(t=>t.panels[e]),r=u(t=>t.focusedPanelId===e),i=u(e=>(e.currentProject===t?e.grid:e.projectGrids[t]??[[]]).flat().length);return n?(0,V.jsxs)(`div`,{className:L(`flex flex-col h-full overflow-hidden`,i>1&&`border border-transparent`,i>1&&r&&`border-primary/30`),onMouseDown:()=>{u.getState().focusedPanelId!==e&&u.getState().setFocusedPanel(e)},children:[(0,V.jsx)(mp,{panelId:e}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-hidden relative`,children:[n.tabs.length===0?(0,V.jsx)(Sp,{panelId:e}):n.tabs.map(e=>{let t=_p[e.type];return(0,V.jsx)(`div`,{className:e.id===n.activeTabId?`h-full w-full`:`hidden`,children:(0,V.jsx)(z.Suspense,{fallback:(0,V.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,V.jsx)(vt,{className:`size-6 animate-spin text-primary`})}),children:(0,V.jsx)(t,{metadata:e.metadata,tabId:e.id})})},e.id)}),(0,V.jsx)(hp,{panelId:e})]})]}):null}function yp(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 bp=5,xp=20;function Sp({panelId:e}){let t=If(e=>e.activeProject),[n,r]=(0,z.useState)([]),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(!1),c=(0,z.useCallback)(async()=>{if(t?.name){a(!0);try{r((await R.get(`${pe(t.name)}/chat/sessions`)).slice(0,xp))}catch{}finally{a(!1)}}},[t?.name]);(0,z.useEffect)(()=>{c()},[c]);let l=(0,z.useCallback)(async(e,n)=>{if(e.stopPropagation(),!t?.name)return;let i=`${pe(t.name)}/chat/sessions/${n.id}/pin`;try{n.pinned?await R.del(i):await R.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 d(n){let r=n!==`settings`&&t?{projectName:t.name}:void 0;u.getState().openTab({type:n,title:gp.find(e=>e.type===n)?.label??n,metadata:r,projectId:t?.name??null,closable:!0},e)}function f(n){u.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 p=n.filter(e=>e.pinned),m=n.filter(e=>!e.pinned),h=o?m:m.slice(0,bp),g=m.length>bp;function _(e){return(0,V.jsxs)(`button`,{onClick:()=>f(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,V.jsx)(St,{className:`size-3.5 shrink-0 text-text-subtle`}),(0,V.jsx)(`span`,{className:`flex-1 min-w-0 text-xs font-medium truncate text-text-primary`,children:e.title||`Untitled`}),e.updatedAt&&(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:yp(e.updatedAt)}),(0,V.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 md:opacity-0 md:group-hover:opacity-100 hover:text-text-primary`}`,"aria-label":e.pinned?`Unpin session`:`Pin session`,children:e.pinned?(0,V.jsx)(Nt,{className:`size-3`}):(0,V.jsx)(Pt,{className:`size-3`})})]},e.id)}return(0,V.jsx)(`div`,{className:`flex flex-col h-full overflow-y-auto text-text-secondary`,children:(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-6 px-4 flex-1`,children:[(0,V.jsx)(`p`,{className:`text-sm`,children:`Open a tab to get started`}),(0,V.jsx)(`div`,{className:`grid grid-cols-3 gap-2 w-full max-w-sm`,children:gp.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:()=>d(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,V.jsx)(t,{className:`size-5`}),e.label]},e.type)})}),t&&!i&&p.length>0&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,V.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Pinned`}),(0,V.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:p.map(_)})]}),t&&!i&&h.length>0&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,V.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Recent chats`}),(0,V.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:h.map(_)}),g&&(0,V.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,V.jsx)(Ie,{className:`size-3`}):(0,V.jsx)(Pe,{className:`size-3`}),o?`Show less`:`Show more (${m.length-bp})`]})]})]})})}function Cp({projectName:e}){let t=u(t=>t.currentProject===e?t.grid:t.projectGrids[e]??[[]]),n=t.flat().length;return(0,z.useEffect)(()=>{if(n===0){let e=f();u.setState(t=>({panels:{...t.panels,[e.id]:e},grid:[[e.id]],focusedPanelId:e.id}))}},[n]),n===0?null:n===1&&t[0]?.[0]?(0,V.jsx)(vp,{panelId:t[0][0],projectName:e}):(0,V.jsx)(Tf,{orientation:`vertical`,style:{height:`100%`},children:t.map((n,r)=>(0,V.jsx)(wp,{row:n,rowIdx:r,totalRows:t.length,projectName:e},`row-${r}`))})}function wp({row:e,rowIdx:t,totalRows:n,projectName:r}){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Of,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:e.length===1?(0,V.jsx)(vp,{panelId:e[0],projectName:r}):(0,V.jsx)(Tf,{orientation:`horizontal`,children:e.map((t,n)=>(0,V.jsx)(Tp,{panelId:t,colIdx:n,totalCols:e.length,projectName:r},t))})}),t<n-1&&(0,V.jsx)(Ep,{orientation:`horizontal`})]})}function Tp({panelId:e,colIdx:t,totalCols:n,projectName:r}){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Of,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:(0,V.jsx)(vp,{panelId:e,projectName:r})}),t<n-1&&(0,V.jsx)(Ep,{orientation:`vertical`})]})}function Ep({orientation:e}){let t=e===`vertical`;return(0,V.jsx)(jf,{className:`
14
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return z.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Mr=`DialogDescriptionWarning`,Nr=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Ar(Mr).contentName}}.`;return z.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Pr=ar,Fr=dr,Ir=pr,Lr=_r,Rr=Sr,zr=wr,Br=Er;function Vr(e){let t=z.useRef({value:e,previous:e});return z.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Hr=`rovingFocusGroup.onEntryFocus`,Ur={bubbles:!1,cancelable:!0},Wr=`RovingFocusGroup`,[Gr,Kr,qr]=E(Wr),[Jr,Yr]=S(Wr,[qr]),[Xr,Zr]=Jr(Wr),Qr=z.forwardRef((e,t)=>(0,V.jsx)(Gr.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,V.jsx)(Gr.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,V.jsx)($r,{...e,ref:t})})}));Qr.displayName=Wr;var $r=z.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:c,onEntryFocus:l,preventScrollOnEntryFocus:u=!1,...d}=e,f=z.useRef(null),p=j(t,f),m=M(a),[h,g]=w({prop:o,defaultProp:s??null,onChange:c,caller:Wr}),[_,y]=z.useState(!1),b=ie(l),x=Kr(n),S=z.useRef(!1),[C,T]=z.useState(0);return z.useEffect(()=>{let e=f.current;if(e)return e.addEventListener(Hr,b),()=>e.removeEventListener(Hr,b)},[b]),(0,V.jsx)(Xr,{scope:n,orientation:r,dir:m,loop:i,currentTabStopId:h,onItemFocus:z.useCallback(e=>g(e),[g]),onItemShiftTab:z.useCallback(()=>y(!0),[]),onFocusableItemAdd:z.useCallback(()=>T(e=>e+1),[]),onFocusableItemRemove:z.useCallback(()=>T(e=>e-1),[]),children:(0,V.jsx)(v.div,{tabIndex:_||C===0?-1:0,"data-orientation":r,...d,ref:p,style:{outline:`none`,...e.style},onMouseDown:I(e.onMouseDown,()=>{S.current=!0}),onFocus:I(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!_){let t=new CustomEvent(Hr,Ur);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);ai([e.find(e=>e.active),e.find(e=>e.id===h),...e].filter(Boolean).map(e=>e.ref.current),u)}}S.current=!1}),onBlur:I(e.onBlur,()=>y(!1))})})}),ei=`RovingFocusGroupItem`,ti=z.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=A(),l=a||c,u=Zr(ei,n),d=u.currentTabStopId===l,f=Kr(n),{onFocusableItemAdd:p,onFocusableItemRemove:m,currentTabStopId:h}=u;return z.useEffect(()=>{if(r)return p(),()=>m()},[r,p,m]),(0,V.jsx)(Gr.ItemSlot,{scope:n,id:l,focusable:r,active:i,children:(0,V.jsx)(v.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...s,ref:t,onMouseDown:I(e.onMouseDown,e=>{r?u.onItemFocus(l):e.preventDefault()}),onFocus:I(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:I(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){u.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ii(e,u.orientation,u.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=f().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=u.loop?oi(n,r+1):n.slice(r+1)}setTimeout(()=>ai(n))}}),children:typeof o==`function`?o({isCurrentTabStop:d,hasTabStop:h!=null}):o})})});ti.displayName=ei;var ni={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function ri(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ii(e,t,n){let r=ri(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return ni[r]}function ai(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function oi(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var si=Qr,ci=ti,li=[`Enter`,` `],ui=[`ArrowDown`,`PageUp`,`Home`],di=[`ArrowUp`,`PageDown`,`End`],fi=[...ui,...di],pi={ltr:[...li,`ArrowRight`],rtl:[...li,`ArrowLeft`]},mi={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},hi=`Menu`,[gi,_i,vi]=E(hi),[yi,bi]=S(hi,[vi,T,Yr]),xi=T(),Si=Yr(),[Ci,wi]=yi(hi),[Ti,Ei]=yi(hi),Di=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=xi(t),[c,l]=z.useState(null),u=z.useRef(!1),d=ie(a),f=M(i);return z.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,V.jsx)(te,{...s,children:(0,V.jsx)(Ci,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,V.jsx)(Ti,{scope:t,onClose:z.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Di.displayName=hi;var Oi=`MenuAnchor`,ki=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=xi(n);return(0,V.jsx)(P,{...i,...r,ref:t})});ki.displayName=Oi;var Ai=`MenuPortal`,[ji,H]=yi(Ai,{forceMount:void 0}),Mi=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=wi(Ai,t);return(0,V.jsx)(ji,{scope:t,forceMount:n,children:(0,V.jsx)(k,{present:n||a.open,children:(0,V.jsx)(F,{asChild:!0,container:i,children:r})})})};Mi.displayName=Ai;var Ni=`MenuContent`,[Pi,Fi]=yi(Ni),Ii=z.forwardRef((e,t)=>{let n=H(Ni,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=wi(Ni,e.__scopeMenu),o=Ei(Ni,e.__scopeMenu);return(0,V.jsx)(gi.Provider,{scope:e.__scopeMenu,children:(0,V.jsx)(k,{present:r||a.open,children:(0,V.jsx)(gi.Slot,{scope:e.__scopeMenu,children:o.modal?(0,V.jsx)(Li,{...i,ref:t}):(0,V.jsx)(Ri,{...i,ref:t})})})})}),Li=z.forwardRef((e,t)=>{let n=wi(Ni,e.__scopeMenu),r=z.useRef(null),i=j(t,r);return z.useEffect(()=>{let e=r.current;if(e)return oe(e)},[]),(0,V.jsx)(Bi,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:I(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Ri=z.forwardRef((e,t)=>{let n=wi(Ni,e.__scopeMenu);return(0,V.jsx)(Bi,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),zi=b(`MenuContent.ScrollLock`),Bi=z.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,g=wi(Ni,n),_=Ei(Ni,n),v=xi(n),y=Si(n),b=_i(n),[x,S]=z.useState(null),C=z.useRef(null),w=j(t,C,g.onContentChange),T=z.useRef(0),E=z.useRef(``),k=z.useRef(0),A=z.useRef(null),te=z.useRef(`right`),M=z.useRef(0),N=m?D:z.Fragment,re=m?{as:zi,allowPinchZoom:!0}:void 0,ie=e=>{let t=E.current+e,n=b().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=wa(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){E.current=t,window.clearTimeout(T.current),t!==``&&(T.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};z.useEffect(()=>()=>window.clearTimeout(T.current),[]),ne();let oe=z.useCallback(e=>te.current===A.current?.side&&Ea(e,A.current?.area),[]);return(0,V.jsx)(Pi,{scope:n,searchRef:E,onItemEnter:z.useCallback(e=>{oe(e)&&e.preventDefault()},[oe]),onItemLeave:z.useCallback(e=>{oe(e)||(C.current?.focus(),S(null))},[oe]),onTriggerLeave:z.useCallback(e=>{oe(e)&&e.preventDefault()},[oe]),pointerGraceTimerRef:k,onPointerGraceIntentChange:z.useCallback(e=>{A.current=e},[]),children:(0,V.jsx)(N,{...re,children:(0,V.jsx)(O,{asChild:!0,trapped:i,onMountAutoFocus:I(a,e=>{e.preventDefault(),C.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,V.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,V.jsx)(si,{asChild:!0,...y,dir:_.dir,orientation:`vertical`,loop:r,currentTabStopId:x,onCurrentTabStopIdChange:S,onEntryFocus:I(c,e=>{_.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,V.jsx)(ae,{role:`menu`,"aria-orientation":`vertical`,"data-state":ya(g.open),"data-radix-menu-content":``,dir:_.dir,...v,...h,ref:w,style:{outline:`none`,...h.style},onKeyDown:I(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=C.current;if(e.target!==i||!fi.includes(e.key))return;e.preventDefault();let a=b().filter(e=>!e.disabled).map(e=>e.ref.current);di.includes(e.key)&&a.reverse(),Sa(a)}),onBlur:I(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(T.current),E.current=``)}),onPointerMove:I(e.onPointerMove,Da(e=>{let t=e.target,n=M.current!==e.clientX;e.currentTarget.contains(t)&&n&&(te.current=e.clientX>M.current?`right`:`left`,M.current=e.clientX)}))})})})})})})});Ii.displayName=Ni;var Vi=`MenuGroup`,Hi=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,V.jsx)(v.div,{role:`group`,...r,ref:t})});Hi.displayName=Vi;var Ui=`MenuLabel`,Wi=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,V.jsx)(v.div,{...r,ref:t})});Wi.displayName=Ui;var Gi=`MenuItem`,Ki=`menu.itemSelect`,qi=z.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=z.useRef(null),o=Ei(Gi,e.__scopeMenu),s=Fi(Gi,e.__scopeMenu),c=j(t,a),l=z.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Ki,{bubbles:!0,cancelable:!0});e.addEventListener(Ki,e=>r?.(e),{once:!0}),ce(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,V.jsx)(Ji,{...i,ref:c,disabled:n,onClick:I(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:I(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:I(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||li.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});qi.displayName=Gi;var Ji=z.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Fi(Gi,n),s=Si(n),c=z.useRef(null),l=j(t,c),[u,d]=z.useState(!1),[f,p]=z.useState(``);return z.useEffect(()=>{let e=c.current;e&&p((e.textContent??``).trim())},[a.children]),(0,V.jsx)(gi.ItemSlot,{scope:n,disabled:r,textValue:i??f,children:(0,V.jsx)(ci,{asChild:!0,...s,focusable:!r,children:(0,V.jsx)(v.div,{role:`menuitem`,"data-highlighted":u?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:l,onPointerMove:I(e.onPointerMove,Da(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:I(e.onPointerLeave,Da(e=>o.onItemLeave(e))),onFocus:I(e.onFocus,()=>d(!0)),onBlur:I(e.onBlur,()=>d(!1))})})})}),Yi=`MenuCheckboxItem`,Xi=z.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,V.jsx)(ia,{scope:e.__scopeMenu,checked:n,children:(0,V.jsx)(qi,{role:`menuitemcheckbox`,"aria-checked":ba(n)?`mixed`:n,...i,ref:t,"data-state":xa(n),onSelect:I(i.onSelect,()=>r?.(ba(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Xi.displayName=Yi;var Zi=`MenuRadioGroup`,[Qi,$i]=yi(Zi,{value:void 0,onValueChange:()=>{}}),ea=z.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=ie(r);return(0,V.jsx)(Qi,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,V.jsx)(Hi,{...i,ref:t})})});ea.displayName=Zi;var ta=`MenuRadioItem`,na=z.forwardRef((e,t)=>{let{value:n,...r}=e,i=$i(ta,e.__scopeMenu),a=n===i.value;return(0,V.jsx)(ia,{scope:e.__scopeMenu,checked:a,children:(0,V.jsx)(qi,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":xa(a),onSelect:I(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});na.displayName=ta;var ra=`MenuItemIndicator`,[ia,aa]=yi(ra,{checked:!1}),oa=z.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=aa(ra,n);return(0,V.jsx)(k,{present:r||ba(a.checked)||a.checked===!0,children:(0,V.jsx)(v.span,{...i,ref:t,"data-state":xa(a.checked)})})});oa.displayName=ra;var sa=`MenuSeparator`,ca=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,V.jsx)(v.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});ca.displayName=sa;var la=`MenuArrow`,ua=z.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=xi(n);return(0,V.jsx)(N,{...i,...r,ref:t})});ua.displayName=la;var da=`MenuSub`,[fa,pa]=yi(da),ma=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=wi(da,t),o=xi(t),[s,c]=z.useState(null),[l,u]=z.useState(null),d=ie(i);return z.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,V.jsx)(te,{...o,children:(0,V.jsx)(Ci,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,V.jsx)(fa,{scope:t,contentId:A(),triggerId:A(),trigger:s,onTriggerChange:c,children:n})})})};ma.displayName=da;var ha=`MenuSubTrigger`,ga=z.forwardRef((e,t)=>{let n=wi(ha,e.__scopeMenu),r=Ei(ha,e.__scopeMenu),i=pa(ha,e.__scopeMenu),a=Fi(ha,e.__scopeMenu),o=z.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},u=z.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return z.useEffect(()=>u,[u]),z.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,V.jsx)(ki,{asChild:!0,...l,children:(0,V.jsx)(Ji,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":ya(n.open),...e,ref:x(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:I(e.onPointerMove,Da(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:I(e.onPointerLeave,Da(e=>{u();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:I(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||pi[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});ga.displayName=ha;var _a=`MenuSubContent`,va=z.forwardRef((e,t)=>{let n=H(Ni,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=wi(Ni,e.__scopeMenu),o=Ei(Ni,e.__scopeMenu),s=pa(_a,e.__scopeMenu),c=z.useRef(null),l=j(t,c);return(0,V.jsx)(gi.Provider,{scope:e.__scopeMenu,children:(0,V.jsx)(k,{present:r||a.open,children:(0,V.jsx)(gi.Slot,{scope:e.__scopeMenu,children:(0,V.jsx)(Bi,{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:I(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:I(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:I(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=mi[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});va.displayName=_a;function ya(e){return e?`open`:`closed`}function ba(e){return e===`indeterminate`}function xa(e){return ba(e)?`indeterminate`:e?`checked`:`unchecked`}function Sa(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Ca(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function wa(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=Ca(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 Ta(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 Ea(e,t){return t?Ta({x:e.clientX,y:e.clientY},t):!1}function Da(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Oa=Di,ka=ki,Aa=Mi,ja=Ii,Ma=Hi,Na=Wi,Pa=qi,Fa=Xi,Ia=ea,La=na,Ra=oa,za=ca,Ba=ua,Va=ma,Ha=ga,Ua=va,Wa=`ContextMenu`,[Ga,Ka]=S(Wa,[bi]),qa=bi(),[Ja,Ya]=Ga(Wa),Xa=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:a=!0}=e,[o,s]=z.useState(!1),c=qa(t),l=ie(r),u=z.useCallback(e=>{s(e),l(e)},[l]);return(0,V.jsx)(Ja,{scope:t,open:o,onOpenChange:u,modal:a,children:(0,V.jsx)(Oa,{...c,dir:i,open:o,onOpenChange:u,modal:a,children:n})})};Xa.displayName=Wa;var Za=`ContextMenuTrigger`,Qa=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,disabled:r=!1,...i}=e,a=Ya(Za,n),o=qa(n),s=z.useRef({x:0,y:0}),c=z.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...s.current})}),l=z.useRef(0),u=z.useCallback(()=>window.clearTimeout(l.current),[]),d=e=>{s.current={x:e.clientX,y:e.clientY},a.onOpenChange(!0)};return z.useEffect(()=>u,[u]),z.useEffect(()=>void(r&&u()),[r,u]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(ka,{...o,virtualRef:c}),(0,V.jsx)(v.span,{"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,...i,ref:t,style:{WebkitTouchCallout:`none`,...e.style},onContextMenu:r?e.onContextMenu:I(e.onContextMenu,e=>{u(),d(e),e.preventDefault()}),onPointerDown:r?e.onPointerDown:I(e.onPointerDown,Eo(e=>{u(),l.current=window.setTimeout(()=>d(e),700)})),onPointerMove:r?e.onPointerMove:I(e.onPointerMove,Eo(u)),onPointerCancel:r?e.onPointerCancel:I(e.onPointerCancel,Eo(u)),onPointerUp:r?e.onPointerUp:I(e.onPointerUp,Eo(u))})]})});Qa.displayName=Za;var $a=`ContextMenuPortal`,eo=e=>{let{__scopeContextMenu:t,...n}=e,r=qa(t);return(0,V.jsx)(Aa,{...r,...n})};eo.displayName=$a;var to=`ContextMenuContent`,no=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=Ya(to,n),a=qa(n),o=z.useRef(!1);return(0,V.jsx)(ja,{...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)`}})});no.displayName=to;var ro=`ContextMenuGroup`,io=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ma,{...i,...r,ref:t})});io.displayName=ro;var ao=`ContextMenuLabel`,oo=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Na,{...i,...r,ref:t})});oo.displayName=ao;var so=`ContextMenuItem`,co=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Pa,{...i,...r,ref:t})});co.displayName=so;var lo=`ContextMenuCheckboxItem`,U=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Fa,{...i,...r,ref:t})});U.displayName=lo;var W=`ContextMenuRadioGroup`,uo=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ia,{...i,...r,ref:t})});uo.displayName=W;var fo=`ContextMenuRadioItem`,po=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(La,{...i,...r,ref:t})});po.displayName=fo;var mo=`ContextMenuItemIndicator`,ho=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ra,{...i,...r,ref:t})});ho.displayName=mo;var go=`ContextMenuSeparator`,_o=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(za,{...i,...r,ref:t})});_o.displayName=go;var vo=`ContextMenuArrow`,yo=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ba,{...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=qa(t),[s,c]=w({prop:i,defaultProp:a??!1,onChange:r,caller:bo});return(0,V.jsx)(Va,{...o,open:s,onOpenChange:c,children:n})};xo.displayName=bo;var So=`ContextMenuSubTrigger`,Co=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ha,{...i,...r,ref:t})});Co.displayName=So;var wo=`ContextMenuSubContent`,To=z.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=qa(n);return(0,V.jsx)(Ua,{...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=Xa,Oo=Qa,ko=eo,Ao=no,jo=co,Mo=_o,No=`DropdownMenu`,[Po,Fo]=S(No,[bi]),Io=bi(),[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=z.useRef(null),[u,d]=w({prop:i,defaultProp:a??!1,onChange:o,caller:No});return(0,V.jsx)(Lo,{scope:t,triggerId:A(),triggerRef:l,contentId:A(),open:u,onOpenChange:d,onOpenToggle:z.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,V.jsx)(Oa,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};zo.displayName=No;var Bo=`DropdownMenuTrigger`,Vo=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Ro(Bo,n),o=Io(n);return(0,V.jsx)(ka,{asChild:!0,...o,children:(0,V.jsx)(v.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:x(t,a.triggerRef),onPointerDown:I(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:I(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,V.jsx)(Aa,{...r,...n})};Uo.displayName=Ho;var Wo=`DropdownMenuContent`,Go=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ro(Wo,n),a=Io(n),o=z.useRef(!1);return(0,V.jsx)(ja,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:I(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:I(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=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ma,{...i,...r,ref:t})});qo.displayName=Ko;var Jo=`DropdownMenuLabel`,Yo=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Na,{...i,...r,ref:t})});Yo.displayName=Jo;var Xo=`DropdownMenuItem`,Zo=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Pa,{...i,...r,ref:t})});Zo.displayName=Xo;var Qo=`DropdownMenuCheckboxItem`,$o=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Fa,{...i,...r,ref:t})});$o.displayName=Qo;var es=`DropdownMenuRadioGroup`,ts=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ia,{...i,...r,ref:t})});ts.displayName=es;var ns=`DropdownMenuRadioItem`,rs=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(La,{...i,...r,ref:t})});rs.displayName=ns;var is=`DropdownMenuItemIndicator`,as=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ra,{...i,...r,ref:t})});as.displayName=is;var os=`DropdownMenuSeparator`,ss=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(za,{...i,...r,ref:t})});ss.displayName=os;var cs=`DropdownMenuArrow`,ls=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ba,{...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]=w({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,V.jsx)(Va,{...o,open:s,onOpenChange:c,children:n})},ds=`DropdownMenuSubTrigger`,fs=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ha,{...i,...r,ref:t})});fs.displayName=ds;var ps=`DropdownMenuSubContent`,ms=z.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Io(n);return(0,V.jsx)(Ua,{...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=z.forwardRef((e,t)=>(0,V.jsx)(v.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 z.useReducer((e,n)=>t[e][n]??e,e)}var Os=`ScrollArea`,[ks,As]=S(Os),[js,Ms]=ks(Os),Ns=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:a=600,...o}=e,[s,c]=z.useState(null),[l,u]=z.useState(null),[d,f]=z.useState(null),[p,m]=z.useState(null),[h,g]=z.useState(null),[_,y]=z.useState(0),[b,x]=z.useState(0),[S,C]=z.useState(!1),[w,T]=z.useState(!1),E=j(t,e=>c(e)),D=M(i);return(0,V.jsx)(js,{scope:n,type:r,dir:D,scrollHideDelay:a,scrollArea:s,viewport:l,onViewportChange:u,content:d,onContentChange:f,scrollbarX:p,onScrollbarXChange:m,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:h,onScrollbarYChange:g,scrollbarYEnabled:w,onScrollbarYEnabledChange:T,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,V.jsx)(v.div,{dir:D,...o,ref:E,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});Ns.displayName=Os;var Ps=`ScrollAreaViewport`,Fs=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...a}=e,o=Ms(Ps,n),s=j(t,z.useRef(null),o.onViewportChange);return(0,V.jsxs)(V.Fragment,{children:[(0,V.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,V.jsx)(v.div,{"data-radix-scroll-area-viewport":``,...a,ref:s,style:{overflowX:o.scrollbarXEnabled?`scroll`:`hidden`,overflowY:o.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,V.jsx)(`div`,{ref:o.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Fs.displayName=Ps;var Is=`ScrollAreaScrollbar`,Ls=z.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return z.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,V.jsx)(Rs,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,V.jsx)(zs,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,V.jsx)(Bs,{...r,ref:t,forceMount:n}):i.type===`always`?(0,V.jsx)(Vs,{...r,ref:t}):null});Ls.displayName=Is;var Rs=z.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ms(Is,e.__scopeScrollArea),[a,o]=z.useState(!1);return z.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,V.jsx)(k,{present:n||a,children:(0,V.jsx)(Bs,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),zs=z.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 z.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),z.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,V.jsx)(k,{present:n||s!==`hidden`,children:(0,V.jsx)(Vs,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:I(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:I(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Bs=z.forwardRef((e,t)=>{let n=Ms(Is,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=z.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,V.jsx)(k,{present:r||a,children:(0,V.jsx)(Vs,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),Vs=z.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=Ms(Is,e.__scopeScrollArea),a=z.useRef(null),o=z.useRef(0),[s,c]=z.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,V.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,V.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=z.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=z.useState(),c=z.useRef(null),l=j(t,c,a.onScrollbarXChange);return z.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,V.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=z.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=Ms(Is,e.__scopeScrollArea),[o,s]=z.useState(),c=z.useRef(null),l=j(t,c,a.onScrollbarYChange);return z.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,V.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=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:i,onThumbChange:a,onThumbPointerUp:o,onThumbPointerDown:s,onThumbPositionChange:c,onDragScroll:l,onWheelScroll:u,onResize:d,...f}=e,p=Ms(Is,n),[m,h]=z.useState(null),g=j(t,e=>h(e)),_=z.useRef(null),y=z.useRef(``),b=p.viewport,x=r.content-r.viewport,S=ie(u),C=ie(c),w=sc(d,10);function T(e){_.current&&l({x:e.clientX-_.current.left,y:e.clientY-_.current.top})}return z.useEffect(()=>{let e=e=>{let t=e.target;m?.contains(t)&&S(e,x)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[b,m,x,S]),z.useEffect(C,[r,C]),cc(m,w),cc(p.content,w),(0,V.jsx)(Ws,{scope:n,scrollbar:m,hasThumb:i,onThumbChange:ie(a),onThumbPointerUp:ie(o),onThumbPositionChange:C,onThumbPointerDown:ie(s),children:(0,V.jsx)(v.div,{...f,ref:g,style:{position:`absolute`,...f.style},onPointerDown:I(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,p.viewport&&(p.viewport.style.scrollBehavior=`auto`),T(e))}),onPointerMove:I(e.onPointerMove,T),onPointerUp:I(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,p.viewport&&(p.viewport.style.scrollBehavior=``),_.current=null})})})}),qs=`ScrollAreaThumb`,Js=z.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Gs(qs,e.__scopeScrollArea);return(0,V.jsx)(k,{present:n||i.hasThumb,children:(0,V.jsx)(Ys,{ref:t,...r})})}),Ys=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...i}=e,a=Ms(qs,n),o=Gs(qs,n),{onThumbPositionChange:s}=o,c=j(t,e=>o.onThumbChange(e)),l=z.useRef(void 0),u=sc(()=>{l.current&&=(l.current(),void 0)},100);return z.useEffect(()=>{let e=a.viewport;if(e){let t=()=>{u(),l.current||(l.current=oc(e,s),s())};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,V.jsx)(v.div,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:I(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:I(e.onPointerUp,o.onThumbPointerUp)})});Js.displayName=qs;var Xs=`ScrollAreaCorner`,Zs=z.forwardRef((e,t)=>{let n=Ms(Xs,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,V.jsx)(Qs,{...e,ref:t}):null});Zs.displayName=Xs;var Qs=z.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=Ms(Xs,n),[a,o]=z.useState(0),[s,c]=z.useState(0),l=!!(a&&s);return cc(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),cc(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,V.jsx)(v.div,{...r,ref:t,style:{width:a,height:s,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=ie(e),r=z.useRef(0);return z.useEffect(()=>()=>window.clearTimeout(r.current),[]),z.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function cc(e,t){let n=ie(t);se(()=>{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]=E(mc),[vc,yc]=S(mc,[_c,T]),bc=T(),[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:p,form:m}=e,h=bc(t),[g,_]=z.useState(null),[v,y]=z.useState(null),[b,x]=z.useState(!1),S=M(l),[C,T]=w({prop:r,defaultProp:i??!1,onChange:a,caller:mc}),[E,D]=w({prop:o,defaultProp:s,onChange:c,caller:mc}),O=z.useRef(null),ee=g?m||!!g.closest(`form`):!0,[k,j]=z.useState(new Set),ne=Array.from(k).map(e=>e.props.value).join(`;`);return(0,V.jsx)(te,{...h,children:(0,V.jsxs)(xc,{required:p,scope:t,trigger:g,onTriggerChange:_,valueNode:v,onValueNodeChange:y,valueNodeHasChildren:b,onValueNodeHasChildrenChange:x,contentId:A(),value:E,onValueChange:D,open:C,onOpenChange:T,dir:S,triggerPointerDownPosRef:O,disabled:f,children:[(0,V.jsx)(hc.Provider,{scope:t,children:(0,V.jsx)(Cc,{scope:e.__scopeSelect,onNativeOptionAdd:z.useCallback(e=>{j(t=>new Set(t).add(e))},[]),onNativeOptionRemove:z.useCallback(e=>{j(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),ee?(0,V.jsxs)(bl,{"aria-hidden":!0,required:p,tabIndex:-1,name:u,autoComplete:d,value:E,onChange:e=>D(e.target.value),disabled:f,form:m,children:[E===void 0?(0,V.jsx)(`option`,{value:``}):null,Array.from(k)]},ne):null]})})};Tc.displayName=mc;var Ec=`SelectTrigger`,Dc=z.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=bc(n),o=Sc(Ec,n),s=o.disabled||r,c=j(t,o.onTriggerChange),l=gc(n),u=z.useRef(`touch`),[d,f,p]=Sl(e=>{let t=l().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),m=e=>{s||(o.onOpenChange(!0),p()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,V.jsx)(P,{asChild:!0,...a,children:(0,V.jsx)(v.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:s,"data-disabled":s?``:void 0,"data-placeholder":xl(o.value)?``:void 0,...i,ref:c,onClick:I(i.onClick,e=>{e.currentTarget.focus(),u.current!==`mouse`&&m(e)}),onPointerDown:I(i.onPointerDown,e=>{u.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(m(e),e.preventDefault())}),onKeyDown:I(i.onKeyDown,e=>{let t=d.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&f(e.key),!(t&&e.key===` `)&&fc.includes(e.key)&&(m(),e.preventDefault())})})})});Dc.displayName=Ec;var Oc=`SelectValue`,kc=z.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=Sc(Oc,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=j(t,c.onValueNodeChange);return se(()=>{l(u)},[l,u]),(0,V.jsx)(v.span,{...s,ref:d,style:{pointerEvents:`none`},children:xl(c.value)?(0,V.jsx)(V.Fragment,{children:o}):a})});kc.displayName=Oc;var Ac=`SelectIcon`,jc=z.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,V.jsx)(v.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});jc.displayName=Ac;var Mc=`SelectPortal`,Nc=e=>(0,V.jsx)(F,{asChild:!0,...e});Nc.displayName=Mc;var Pc=`SelectContent`,Fc=z.forwardRef((e,t)=>{let n=Sc(Pc,e.__scopeSelect),[r,i]=z.useState();if(se(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?dn.createPortal((0,V.jsx)(Lc,{scope:e.__scopeSelect,children:(0,V.jsx)(hc.Slot,{scope:e.__scopeSelect,children:(0,V.jsx)(`div`,{children:e.children})})}),t):null}return(0,V.jsx)(Vc,{...e,ref:t})});Fc.displayName=Pc;var Ic=10,[Lc,Rc]=vc(Pc),zc=`SelectContentImpl`,Bc=b(`SelectContent.RemoveScroll`),Vc=z.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:g,..._}=e,v=Sc(Pc,n),[y,b]=z.useState(null),[x,S]=z.useState(null),C=j(t,e=>b(e)),[w,T]=z.useState(null),[E,k]=z.useState(null),A=gc(n),[te,M]=z.useState(!1),N=z.useRef(!1);z.useEffect(()=>{if(y)return oe(y)},[y]),ne();let re=z.useCallback(e=>{let[t,...n]=A().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&&x&&(x.scrollTop=0),n===r&&x&&(x.scrollTop=x.scrollHeight),n?.focus(),document.activeElement!==i))return},[A,x]),ie=z.useCallback(()=>re([w,y]),[re,w,y]);z.useEffect(()=>{te&&ie()},[te,ie]);let{onOpenChange:ae,triggerPointerDownPosRef:P}=v;z.useEffect(()=>{if(y){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(P.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(P.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():y.contains(n.target)||ae(!1),document.removeEventListener(`pointermove`,t),P.current=null};return P.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[y,ae,P]),z.useEffect(()=>{let e=()=>ae(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[ae]);let[F,se]=Sl(e=>{let t=A().filter(e=>!e.disabled),n=Cl(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ce=z.useCallback((e,t,n)=>{let r=!N.current&&!n;(v.value!==void 0&&v.value===t||r)&&(T(e),r&&(N.current=!0))},[v.value]),le=z.useCallback(()=>y?.focus(),[y]),ue=z.useCallback((e,t,n)=>{let r=!N.current&&!n;(v.value!==void 0&&v.value===t||r)&&k(e)},[v.value]),L=r===`popper`?Gc:Uc,de=L===Gc?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:p,sticky:m,hideWhenDetached:h,avoidCollisions:g}:{};return(0,V.jsx)(Lc,{scope:n,content:y,viewport:x,onViewportChange:S,itemRefCallback:ce,selectedItem:w,onItemLeave:le,itemTextRefCallback:ue,focusSelectedItem:ie,selectedItemText:E,position:r,isPositioned:te,searchRef:F,children:(0,V.jsx)(D,{as:Bc,allowPinchZoom:!0,children:(0,V.jsx)(O,{asChild:!0,trapped:v.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:I(i,e=>{v.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,V.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:(0,V.jsx)(L,{role:`listbox`,id:v.contentId,"data-state":v.open?`open`:`closed`,dir:v.dir,onContextMenu:e=>e.preventDefault(),..._,...de,onPlaced:()=>M(!0),ref:C,style:{display:`flex`,flexDirection:`column`,outline:`none`,..._.style},onKeyDown:I(_.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&se(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=A().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(()=>re(t)),e.preventDefault()}})})})})})})});Vc.displayName=zc;var Hc=`SelectItemAlignedPosition`,Uc=z.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Sc(Pc,n),o=Rc(Pc,n),[s,c]=z.useState(null),[l,u]=z.useState(null),d=j(t,e=>u(e)),f=gc(n),p=z.useRef(!1),m=z.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:_,focusSelectedItem:y}=o,b=z.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&_){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=_.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-Ic,d=Es(a,[Ic,Math.max(Ic,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-Ic*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),v=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+v+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Ic,D=c-E,O=g.offsetHeight/2,ee=g.offsetTop+O,k=m+v+ee,A=x-k;if(k<=E){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(D,O+(e?T:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(E,m+h.offsetTop+(e?w:0)+O)+A;s.style.height=t+`px`,h.scrollTop=k-E+h.offsetTop}s.style.margin=`${Ic}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,_,a.dir,r]);se(()=>b(),[b]);let[x,S]=z.useState();return se(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]),(0,V.jsx)(Kc,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:z.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]),children:(0,V.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,V.jsx)(v.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});Uc.displayName=Hc;var Wc=`SelectPopperPosition`,Gc=z.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ic,...a}=e,o=bc(n);return(0,V.jsx)(ae,{...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=z.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=Rc(Jc,n),o=qc(Jc,n),s=j(t,a.onViewportChange),c=z.useRef(0);return(0,V.jsxs)(V.Fragment,{children:[(0,V.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,V.jsx)(hc.Slot,{scope:n,children:(0,V.jsx)(v.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:I(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.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`)}}}c.current=t.scrollTop})})})]})});Yc.displayName=Jc;var Xc=`SelectGroup`,[Zc,Qc]=vc(Xc),$c=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=A();return(0,V.jsx)(Zc,{scope:n,id:i,children:(0,V.jsx)(v.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});$c.displayName=Xc;var el=`SelectLabel`,tl=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Qc(el,n);return(0,V.jsx)(v.div,{id:i.id,...r,ref:t})});tl.displayName=el;var nl=`SelectItem`,[rl,il]=vc(nl),al=z.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=Sc(nl,n),c=Rc(nl,n),l=s.value===r,[u,d]=z.useState(a??``),[f,p]=z.useState(!1),m=j(t,e=>c.itemRefCallback?.(e,r,i)),h=A(),g=z.useRef(`touch`),_=()=>{i||(s.onValueChange(r),s.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,V.jsx)(rl,{scope:n,value:r,disabled:i,textId:h,isSelected:l,onItemTextChange:z.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,V.jsx)(hc.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,V.jsx)(v.div,{role:`option`,"aria-labelledby":h,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:m,onFocus:I(o.onFocus,()=>p(!0)),onBlur:I(o.onBlur,()=>p(!1)),onClick:I(o.onClick,()=>{g.current!==`mouse`&&_()}),onPointerUp:I(o.onPointerUp,()=>{g.current===`mouse`&&_()}),onPointerDown:I(o.onPointerDown,e=>{g.current=e.pointerType}),onPointerMove:I(o.onPointerMove,e=>{g.current=e.pointerType,i?c.onItemLeave?.():g.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:I(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:I(o.onKeyDown,e=>{c.searchRef?.current!==``&&e.key===` `||(pc.includes(e.key)&&_(),e.key===` `&&e.preventDefault())})})})})});al.displayName=nl;var ol=`SelectItemText`,sl=z.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Sc(ol,n),s=Rc(ol,n),c=il(ol,n),l=wc(ol,n),[u,d]=z.useState(null),f=j(t,e=>d(e),c.onItemTextChange,e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=u?.textContent,m=z.useMemo(()=>(0,V.jsx)(`option`,{value:c.value,disabled:c.disabled,children:p},c.value),[c.disabled,c.value,p]),{onNativeOptionAdd:h,onNativeOptionRemove:g}=l;return se(()=>(h(m),()=>g(m)),[h,g,m]),(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(v.span,{id:c.textId,...a,ref:f}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren?dn.createPortal(a.children,o.valueNode):null]})});sl.displayName=ol;var cl=`SelectItemIndicator`,ll=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return il(cl,n).isSelected?(0,V.jsx)(v.span,{"aria-hidden":!0,...r,ref:t}):null});ll.displayName=cl;var ul=`SelectScrollUpButton`,dl=z.forwardRef((e,t)=>{let n=Rc(ul,e.__scopeSelect),r=qc(ul,e.__scopeSelect),[i,a]=z.useState(!1),o=j(t,r.onScrollButtonChange);return se(()=>{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,V.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=z.forwardRef((e,t)=>{let n=Rc(fl,e.__scopeSelect),r=qc(fl,e.__scopeSelect),[i,a]=z.useState(!1),o=j(t,r.onScrollButtonChange);return se(()=>{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,V.jsx)(ml,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});pl.displayName=fl;var ml=z.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Rc(`SelectScrollButton`,n),o=z.useRef(null),s=gc(n),c=z.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return z.useEffect(()=>()=>c(),[c]),se(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,V.jsx)(v.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:I(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:I(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:I(i.onPointerLeave,()=>{c()})})}),hl=`SelectSeparator`,gl=z.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,V.jsx)(v.div,{"aria-hidden":!0,...r,ref:t})});gl.displayName=hl;var _l=`SelectArrow`,vl=z.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,V.jsx)(N,{...i,...r,ref:t}):null});vl.displayName=_l;var yl=`SelectBubbleInput`,bl=z.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=z.useRef(null),a=j(r,i),o=Vr(t);return z.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,V.jsx)(v.select,{...n,style:{...Xn,...n.style},ref:a,defaultValue:t})});bl.displayName=yl;function xl(e){return e===``||e===void 0}function Sl(e){let t=ie(e),n=z.useRef(``),r=z.useRef(0),i=z.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=z.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return z.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`,Rl=`horizontal`,zl=[`horizontal`,`vertical`],G=z.forwardRef((e,t)=>{let{decorative:n,orientation:r=Rl,...i}=e,a=Bl(r)?r:Rl,o=a===`vertical`?a:void 0,s=n?{role:`none`}:{"aria-orientation":o,role:`separator`};return(0,V.jsx)(v.div,{"data-orientation":a,...s,...i,ref:t})});G.displayName=Ll;function Bl(e){return zl.includes(e)}var K=G,q=`Switch`,[J,Vl]=S(q),[Hl,Ul]=J(q),Wl=z.forwardRef((e,t)=>{let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c=`on`,onCheckedChange:l,form:u,...d}=e,[f,p]=z.useState(null),m=j(t,e=>p(e)),h=z.useRef(!1),g=f?u||!!f.closest(`form`):!0,[_,y]=w({prop:i,defaultProp:a??!1,onChange:l,caller:q});return(0,V.jsxs)(Hl,{scope:n,checked:_,disabled:s,children:[(0,V.jsx)(v.button,{type:`button`,role:`switch`,"aria-checked":_,"aria-required":o,"data-state":Yl(_),"data-disabled":s?``:void 0,disabled:s,value:c,...d,ref:m,onClick:I(e.onClick,e=>{y(e=>!e),g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())})}),g&&(0,V.jsx)(Jl,{control:f,bubbles:!h.current,name:r,value:c,checked:_,required:o,disabled:s,form:u,style:{transform:`translateX(-100%)`}})]})});Wl.displayName=q;var Gl=`SwitchThumb`,Kl=z.forwardRef((e,t)=>{let{__scopeSwitch:n,...r}=e,i=Ul(Gl,n);return(0,V.jsx)(v.span,{"data-state":Yl(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})});Kl.displayName=Gl;var ql=`SwitchBubbleInput`,Jl=z.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let o=z.useRef(null),s=j(o,a),c=Vr(n),l=re(t);return z.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,V.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]=S(`Tooltip`,[T]),eu=T(),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=z.useRef(!0),s=z.useRef(!1),c=z.useRef(0);return z.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,V.jsx)(iu,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:z.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:z.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:z.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]=z.useState(null),f=A(),p=z.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=z.useRef(!1),[_,v]=w({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(ru))):c.onClose(),a?.(e)},caller:su}),y=z.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),b=z.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=z.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),S=z.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return z.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,V.jsx)(te,{...l,children:(0,V.jsx)(cu,{scope:t,contentId:f,open:_,stateAttribute:y,trigger:u,onTriggerChange:d,onTriggerEnter:z.useCallback(()=>{c.isOpenDelayedRef.current?S():b()},[c.isOpenDelayedRef,S,b]),onTriggerLeave:z.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:b,onClose:x,disableHoverableContent:m,children:n})})};uu.displayName=su;var du=`TooltipTrigger`,fu=z.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=lu(du,n),a=au(du,n),o=eu(n),s=j(t,z.useRef(null),i.onTriggerChange),c=z.useRef(!1),l=z.useRef(!1),u=z.useCallback(()=>c.current=!1,[]);return z.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,V.jsx)(P,{asChild:!0,...o,children:(0,V.jsx)(v.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:I(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:I(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:I(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:I(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:I(e.onBlur,i.onClose),onClick:I(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,V.jsx)(mu,{scope:t,forceMount:n,children:(0,V.jsx)(k,{present:n||a.open,children:(0,V.jsx)(F,{asChild:!0,container:i,children:r})})})};gu.displayName=pu;var _u=`TooltipContent`,vu=z.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,V.jsx)(k,{present:r||o.open,children:o.disableHoverableContent?(0,V.jsx)(Cu,{side:i,...a,ref:t}):(0,V.jsx)(yu,{side:i,...a,ref:t})})}),yu=z.forwardRef((e,t)=>{let n=lu(_u,e.__scopeTooltip),r=au(_u,e.__scopeTooltip),i=z.useRef(null),a=j(t,i),[o,s]=z.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=z.useCallback(()=>{s(null),d(!1)},[d]),p=z.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 z.useEffect(()=>()=>f(),[f]),z.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]),z.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,V.jsx)(Cu,{...e,ref:a})}),[bu,xu]=Ql(su,{isInside:!1}),Su=y(`TooltipContent`),Cu=z.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 z.useEffect(()=>(document.addEventListener(ru,u),()=>document.removeEventListener(ru,u)),[u]),z.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,V.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,V.jsxs)(ae,{"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,V.jsx)(Su,{children:r}),(0,V.jsx)(bu,{scope:n,isInside:!0,children:(0,V.jsx)($n,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});vu.displayName=_u;var wu=`TooltipArrow`,Tu=z.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=eu(n);return xu(wu,n).isInside?null:(0,V.jsx)(N,{...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,V.jsx)(Mu,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function zu({...e}){return(0,V.jsx)(Nu,{"data-slot":`tooltip`,...e})}function Bu({...e}){return(0,V.jsx)(Pu,{"data-slot":`tooltip-trigger`,...e})}function Vu({className:e,sideOffset:t=0,children:n,...r}){return(0,V.jsx)(Fu,{children:(0,V.jsxs)(Iu,{"data-slot":`tooltip-content`,sideOffset:t,className:L(`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,V.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 Y({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 qu(e){return parseFloat(e.toFixed(3))}function Ju({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 Yu(e){let{panels:t}=e,n=Ju({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=qu(Y({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=qu(Y({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=qu(Y({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=qu(Y({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 X(e,t=`Assertion error`){if(!e)throw Error(t)}function Xu(e,t){return Array.from(t).sort(e===`horizontal`?Zu:Qu)}function Zu(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function Qu(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function $u(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function ed(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 td({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}=ed(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return X(i,`No rect found`),i}var nd;function rd(){return nd===void 0&&(nd=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),nd}function id(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=Xu(n,Array.from(t.children).filter($u).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,td({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=rd()?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:Ju({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 ad=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)}}},od=new Map,sd=new ad;function cd(e){od=new Map(od),od.delete(e)}function ld(e,t){for(let[t]of od)if(t.id===e)return t}function ud(e,t){for(let[t,n]of od)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function dd(){return od}function fd(e,t){return sd.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function pd(e,t){let n=od.get(e);od=new Map(od),od.set(e,t),sd.emit(`groupChange`,{group:e,prev:n,next:t})}function md(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=ed(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 hd(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function gd(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:xd(e),b:xd(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();X(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Z(bd(n.a)),b:Z(bd(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 _d=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function vd(e){let t=getComputedStyle(Sd(e)??e).display;return t===`flex`||t===`inline-flex`}function yd(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||vd(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`||_d.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function bd(e){let t=e.length;for(;t--;){let n=e[t];if(X(n,`Missing node`),yd(n))return n}return null}function Z(e){return e&&Number(getComputedStyle(e).zIndex)||0}function xd(e){let t=[];for(;e;)t.push(e),e=Sd(e);return t}function Sd(e){let{parentNode:t}=e;return hd(t)?t.host:t}function Cd(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 wd({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!$u(n)||n.contains(e)||e.contains(n))return!0;if(gd(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Cd(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Td(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=id(r),a=md(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&wd({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function Ed(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 Dd(e,t,n=0){return Math.abs(qu(e)-qu(t))<=n}function Od(e,t){return Dd(e,t)?0:e>t?1:-1}function kd({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(Od(r,c)<0)if(a){let e=(i+c)/2;r=Od(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=qu(r),r}function Ad({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(Dd(e,0))return t;let o=a===`imperative-api`,s=Object.values(t),c=Object.values(i),l=[...s],[u,d]=r;X(u!=null,`Invalid first pivot index`),X(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];X(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(X(n!=null,`Previous layout not found for panel index ${t}`),Dd(n,i)){let t=o-n;Od(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];X(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(X(n!=null,`Previous layout not found for panel index ${t}`),Dd(n,o)){let t=n-i;Od(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];X(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsible:a,collapsedSize:o,minSize:c}=r;if(a&&Od(i,c)<0)if(e>0){let t=c-o,n=t/2;Od(i+e,c)<0&&(e=Od(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;Od(i-e,c)<0&&(e=Od(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];X(e!=null,`Previous layout not found for panel index ${r}`);let a=kd({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];X(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=kd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!Dd(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(Ed(c,l))return i;{let t=e<0?d:u,r=s[t];X(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=kd({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!Dd(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];X(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=kd({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(Dd(i,s)||(t-=s-i,l[r]=s),Dd(t,0))break;e>0?r--:r++}}}if(!Dd(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 jd(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||Od(e[n],t[n])!==0)return!1;return!0}function Md({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(!Dd(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];X(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];X(i!=null,`No layout data found for index ${e}`);let o=r[e];X(o!=null,`No layout data found for index ${e}`);let s=kd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!Dd(a,0))for(let e=0;e<t.length;e++){let n=r[e];X(n!=null,`No layout data found for index ${e}`);let i=n+a,o=kd({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,Dd(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Nd({groupId:e,panelId:t}){let n=()=>{let t=dd();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=Md({layout:Ad({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});jd(l,p)||pd(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&&Dd(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=Ju({group:t});o(qu(Y({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function Q(e){e.defaultPrevented||Td(e,dd()).forEach(t=>{if(t.separator){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Nd({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function Pd(e){let t=dd();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 Fd({groupId:e}){let t=()=>{let t=dd();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=Md({layout:e,panelConstraints:r});return n?o:(jd(o,c)||pd(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Id(e,t){let n=Pd(e),r=ud(n.id,!0),i=n.separators.find(t=>t.element===e);X(i,`Matching separator not found`);let a=r.separatorToPanels.get(i);X(a,`Matching panels not found`);let o=a.map(e=>n.panels.indexOf(e)),s=Fd({groupId:n.id}).getLayout(),c=Md({layout:Ad({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});jd(s,c)||pd(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function Ld(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Pd(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Id(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Id(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Id(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Id(t,-5);break;case`End`:e.preventDefault(),Id(t,100);break;case`Enter`:{e.preventDefault();let n=Pd(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=ud(n.id,!0),o=n.separators.find(e=>e.element===t);X(o,`Matching separator not found`);let s=a.get(o);X(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.panelId===c.id);if(X(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];Id(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=Pd(t).separators.map(e=>e.element),r=Array.from(n).findIndex(t=>t===e.currentTarget);X(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(),Id(t,-100);break}}var Rd={cursorFlags:0,state:`inactive`},zd=new ad;function Bd(){return Rd}function Vd(e){return zd.addListener(`change`,e)}function Hd(e){let t=Rd,n={...Rd};n.cursorFlags=e,Rd=n,zd.emit(`change`,{prev:t,next:n})}function Ud(e){let t=Rd;Rd=e,zd.emit(`change`,{prev:t,next:e})}function Wd(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=dd(),n=Td(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)}),Ud({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var Gd=e=>e,Kd=()=>{},qd=1,Jd=2,Yd=4,Xd=8,Zd=3,Qd=12,$d;function ef(){return $d===void 0&&($d=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&($d=!0)),$d}function tf({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&&ef()){let t=(e&qd)!==0,n=(e&Jd)!==0,r=(e&Yd)!==0,i=(e&Xd)!==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 ef()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var nf=new WeakMap;function rf(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=nf.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let r=Bd();switch(r.state){case`active`:case`hover`:{let e=tf({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}nf.set(e,{prevStyle:t,styleSheet:n})}function af({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=Ad({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(jd(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?qd:Jd;break;case`vertical`:s|=d<0?Yd:Xd;break}}else pd(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Zd:c|=s&Zd,t.movementY===0?c|=o&Qd:c|=s&Qd,Hd(c),rf(e)}function of(e){let t=dd(),n=Bd();switch(n.state){case`active`:af({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function sf(e){if(e.defaultPrevented)return;let t=Bd(),n=dd();switch(t.state){case`active`:if(e.buttons===0){Ud({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=ud(e.group.id,!0);pd(e.group,t)});return}af({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=Td(e,n);r.length===0?t.state!==`inactive`&&Ud({cursorFlags:0,state:`inactive`}):Ud({cursorFlags:0,hitRegions:r,state:`hover`}),rf(e.currentTarget);break}}}function cf(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(Bd().state){case`hover`:Ud({cursorFlags:0,state:`inactive`})}}function lf(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=Bd();switch(t.state){case`active`:Ud({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(rf(e.currentTarget),t.hitRegions.forEach(e=>{let t=ud(e.group.id,!0);pd(e.group,t)}),e.preventDefault())}}function uf(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=qu(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=qu((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function df(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=Ju({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:qu(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function ff(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 pf({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=qu(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]=qu((r[e]??0)/a*l);else{let e=qu(l/c.length);for(let t of c)u[t]=e}return u}function mf(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 hf=new Map;function gf(e){let t=!0;X(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=Ju({group:e});if(t===0)return;let n=ud(e.id);if(!n)return;let r=Yu(e),i=n.defaultLayoutDeferred?uf(r):n.layout,a=Md({layout:pf({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&jd(n.layout,a)&&ff(n.derivedPanelConstraints,r)&&n.groupSize===t)return;pd(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else df(e,i,n)}});a.observe(e.element),e.panels.forEach(e=>{X(!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=Ju({group:e}),s=Yu(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(mf(e.panels,l)||(l=void 0));let u=Md({layout:e.mutableState.layouts[c]??l??uf(s),panelConstraints:s}),d=e.element.ownerDocument;hf.set(d,(hf.get(d)??0)+1);let f=new Map;return id(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),pd(e,{defaultLayoutDeferred:o===0,derivedPanelConstraints:s,groupSize:o,layout:u,separatorToPanels:f}),e.separators.forEach(e=>{X(!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`,Ld)}),hf.get(d)===1&&(d.addEventListener(`dblclick`,Q,!0),d.addEventListener(`pointerdown`,Wd,!0),d.addEventListener(`pointerleave`,of),d.addEventListener(`pointermove`,sf),d.addEventListener(`pointerout`,cf),d.addEventListener(`pointerup`,lf,!0)),function(){t=!1,hf.set(d,Math.max(0,(hf.get(d)??0)-1)),cd(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,Ld)}),hf.get(d)||(d.removeEventListener(`dblclick`,Q,!0),d.removeEventListener(`pointerdown`,Wd,!0),d.removeEventListener(`pointerleave`,of),d.removeEventListener(`pointermove`,sf),d.removeEventListener(`pointerout`,cf),d.removeEventListener(`pointerup`,lf,!0)),a.disconnect()}}function _f(){let[e,t]=(0,z.useState)({});return[e,(0,z.useCallback)(()=>t({}),[])]}function vf(e){let t=(0,z.useId)();return`${e??t}`}var yf=typeof window<`u`?z.useLayoutEffect:z.useEffect;function bf(e){let t=(0,z.useRef)(e);return yf(()=>{t.current=e},[e]),(0,z.useCallback)((...e)=>t.current?.(...e),[t])}function xf(...e){return bf(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function Sf(e){let t=(0,z.useRef)({...e});return yf(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var Cf=(0,z.createContext)(null);function wf(e,t){let n=(0,z.useRef)({getLayout:()=>({}),setLayout:Gd});(0,z.useImperativeHandle)(t,()=>n.current,[]),yf(()=>{Object.assign(n.current,Fd({groupId:e}))})}function Tf({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,z.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=bf(e=>{jd(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=bf(e=>{jd(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e))}),_=vf(s),v=(0,z.useRef)(null),[y,b]=_f(),x=(0,z.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=xf(v,a);wf(_,o);let C=bf((e,t)=>{let r=Bd(),i=ld(e),a=ud(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=Sf({defaultLayout:n,disableCursor:r}),T=(0,z.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=Xu(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=Xu(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=ld(_),i=ud(_);r&&i&&pd(r,{...i,derivedPanelConstraints:Yu(r)})},toggleSeparatorDisabled:(e,t)=>{let n=x.current.separators.find(t=>t.id===e);n&&(n.disabled=t)}}),[C,_,b,u,w]),E=(0,z.useRef)(null);return yf(()=>{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=gf(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=ud(r.id,!0);!o&&s.length>0&&(h(c),g(c));let l=fd(_,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=Dd(t.collapsedSize,i[t.panelId]),a=Dd(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=Bd().state!==`active`;h(i),o&&g(i)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,z.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,V.jsx)(Cf.Provider,{value:T,children:(0,V.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})})}Tf.displayName=`Group`;function Ef(){let e=(0,z.useContext)(Cf);return X(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function Df(e,t){let{id:n}=Ef(),r=(0,z.useRef)({collapse:Kd,expand:Kd,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Kd});(0,z.useImperativeHandle)(t,()=>r.current,[]),yf(()=>{Object.assign(r.current,Nd({groupId:n,panelId:e}))})}function Of({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=vf(c),_=Sf({disabled:a}),v=(0,z.useRef)(null),y=xf(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,togglePanelDisabled:w}=Ef(),T=d!==null,E=bf((e,t,n)=>{d?.(e,c,n)});yf(()=>{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,z.useEffect)(()=>{w(g,!!a)},[a,g,w]),Df(g,f);let D=(0,z.useSyncExternalStore)(e=>fd(x,e),()=>JSON.stringify(b(x,g)),()=>JSON.stringify(b(x,g)));return(0,V.jsx)(`div`,{...m,"aria-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...kf,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...JSON.parse(D)},children:(0,V.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}Of.displayName=`Panel`;var kf={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function Af({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=Md({layout:Ad({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Md({layout:Ad({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function jf({children:e,className:t,disabled:n,elementRef:r,id:i,style:a,...o}){let s=vf(i),c=Sf({disabled:n}),[l,u]=(0,z.useState)({}),[d,f]=(0,z.useState)(`inactive`),p=(0,z.useRef)(null),m=xf(p,r),{disableCursor:h,id:g,orientation:_,registerSeparator:v,toggleSeparatorDisabled:y}=Ef(),b=_===`horizontal`?`vertical`:`horizontal`;yf(()=>{let e=p.current;if(e!==null){let t={disabled:c.disabled,element:e,id:s},n=v(t),r=Vd(e=>{f(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=fd(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(Af({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[g,s,v,c]),(0,z.useEffect)(()=>{y(s,!!n)},[n,s,y]);let x;return n&&!h&&(x=`not-allowed`),(0,V.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})}jf.displayName=`Separator`;var Mf=`ppm-custom-order`;function Nf(){try{let e=localStorage.getItem(Mf);return e?JSON.parse(e):null}catch{return null}}function Pf(e){try{localStorage.setItem(Mf,JSON.stringify(e))}catch{}}function Ff(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 If=h((e,t)=>({projects:[],activeProject:null,customOrder:Nf(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{e({projects:await R.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 R.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 R.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:n}),await t().fetchProjects()},moveProject:async(n,r)=>{let{projects:i,customOrder:a}=t(),o=Ff(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]],Pf(l),await R.patch(`/api/projects/reorder`,{order:l}),e({customOrder:l})},reorderProjects:async t=>{Pf(t),e({customOrder:t}),await R.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,n)=>{await R.patch(`/api/projects/${encodeURIComponent(e)}`,{name:n}),await t().fetchProjects()},deleteProject:async t=>{await R.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&&Pf(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}})),Lf=`application/ppm-tab`,Rf=!1,zf=new Set;function Bf(e){Rf!==e&&(Rf=e,zf.forEach(e=>e()))}function Vf(){return(0,z.useSyncExternalStore)(e=>(zf.add(e),()=>zf.delete(e)),()=>Rf)}function Hf(){Bf(!1)}function Uf(e){let[t,n]=(0,z.useState)(null),r=(0,z.useRef)(null);return{dropIndex:t,handleDragStart:(0,z.useCallback)((t,n)=>{let r={tabId:n,panelId:e};t.dataTransfer.setData(Lf,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`,requestAnimationFrame(()=>Bf(!0))},[e]),handleDragOver:(0,z.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,z.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},[]),handleDrop:(0,z.useCallback)(i=>{i.preventDefault(),Bf(!1);let a=i.dataTransfer.getData(Lf);if(a){try{let n=JSON.parse(a),r=u.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,z.useCallback)(()=>{Bf(!1),n(null),r.current=null},[])}}var Wf=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent),Gf=[{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}`}))],Kf=new Map(Gf.map(e=>[e.id,e.defaultKey]));function qf(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`:Wf?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 Jf(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 Yf(e){return e.replace(/Mod/g,Wf?`⌘`:`Ctrl`).replace(/Shift/g,Wf?`⇧`:`Shift`).replace(/Alt/g,Wf?`⌥`:`Alt`).replace(/Meta|Cmd/g,`⌘`).replace(/Ctrl/g,Wf?`⌃`:`Ctrl`)}function Xf(e){if([`Control`,`Meta`,`Alt`,`Shift`].includes(e.key))return null;let t=[];e.ctrlKey&&!e.metaKey&&t.push(Wf?`Ctrl`:`Mod`),e.metaKey&&t.push(Wf?`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 Zf=h((e,t)=>({overrides:{},loaded:!1,getBinding:e=>t().overrides[e]??Kf.get(e)??``,matchesEvent:(e,n)=>{let r=t().getBinding(n);return r?Jf(e,qf(r)):!1},setBinding:(n,r)=>{e({overrides:{...t().overrides,[n]:r}}),R.put(`/api/settings/keybindings`,{[n]:r}).catch(()=>{})},resetBinding:n=>{let r={...t().overrides};delete r[n],e({overrides:r}),R.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&&R.put(`/api/settings/keybindings`,n).catch(()=>{})},loadFromServer:async()=>{try{e({overrides:await R.get(`/api/settings/keybindings`),loaded:!0})}catch{e({loaded:!0})}}}));function Qf(e){window.dispatchEvent(new CustomEvent(`open-command-palette`,{detail:e}))}function $f(){let[e,t]=(0,z.useState)(!1),[n,r]=(0,z.useState)(``);return(0,z.useEffect)(()=>{let e=0,n=!1,{matchesEvent:i}=Zf.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}=Zf.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(),B.getState().toggleSidebar();return}if(o(i,`next-tab`)||o(i,`prev-tab`)){i.preventDefault();let{tabs:e,activeTabId:t,setActiveTab:n}=m.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=If.getState().activeProject;m.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=B.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`settings`);return}if(o(i,`open-git-status`)){i.preventDefault();let e=B.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=B.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=If.getState().projects[e-1];t&&(If.getState().setActiveProject(t),m.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,z.useCallback)(()=>{t(!1),r(``)},[])}}var ep={approval_request:`bg-red-500`,question:`bg-amber-500`,done:`bg-blue-500`},tp={done:0,question:1,approval_request:2};function np(e){return e&&ep[e]||`bg-red-500`}var rp=h()(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 ip(e){let t=0;for(let[,n]of e.notifications)t+=n.count;return t}function ap(e){return t=>{let n=null,r=-1;for(let[,i]of t.notifications){if(i.projectName!==e)continue;let t=tp[i.type]??0;t>r&&(r=t,n=i.type)}return n}}function op(e){let[t,n]=(0,z.useState)(!1),[r,i]=(0,z.useState)(!1),a=(0,z.useCallback)(()=>{let t=e.current;t&&(n(t.scrollLeft>1),i(t.scrollLeft+t.clientWidth<t.scrollWidth-1))},[e]);return(0,z.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,z.useCallback)(()=>{e.current?.scrollBy({left:-150,behavior:`smooth`})},[e]),scrollRight:(0,z.useCallback)(()=>{e.current?.scrollBy({left:150,behavior:`smooth`})},[e])}}var sp={done:0,question:1,approval_request:2};function cp(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,_=sp[f.type]??0;g<=i&&_>s&&(s=_,o=f.type),h>=a&&_>l&&(l=_,c=f.type)}return{left:o,right:c}}function lp(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 up(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 dp(e){let t=lp(e);return t?up(t.r,t.g,t.b)<.4:!1}function fp({tab:e,isActive:t,icon:n,showDropBefore:r,notificationType:i,onSelect:a,onClose:o,onDragStart:s,onDragOver:c,onDragEnd:l,tabRef:u,onRename:d}){let[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(e.title),g=(0,z.useRef)(null);(0,z.useEffect)(()=>{f&&(h(e.title),setTimeout(()=>g.current?.select(),0))},[f]);let _=()=>{p(!1);let t=m.trim();t&&t!==e.title&&d&&d(t)},v=e.metadata?.connectionColor,y=v?{backgroundColor:t?v:`${v}33`,color:t&&dp(v)?`#fff`:void 0}:void 0;return(0,V.jsxs)(`div`,{className:`relative flex items-center`,children:[r&&(0,V.jsx)(`div`,{className:`absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-full z-10`}),(0,V.jsxs)(`button`,{ref:u,"data-tab-item":!0,draggable:!f,onClick:a,onAuxClick:t=>{t.button===1&&e.closable&&(t.preventDefault(),o())},onDragStart:s,onDragOver:c,onDragEnd:l,style:y,className:L(`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`,!y&&(t?`border-primary text-primary`:`border-transparent text-text-secondary hover:text-foreground`),y&&`border-transparent`),children:[(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(n,{className:`size-4`}),i&&!t&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-1 size-2 rounded-full`,np(i))})]}),f?(0,V.jsx)(`input`,{ref:g,value:m,onChange:e=>h(e.target.value),onBlur:_,onKeyDown:e=>{e.key===`Enter`&&_(),e.key===`Escape`&&p(!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,V.jsx)(`span`,{className:`max-w-[120px] truncate`,onDoubleClick:e=>{d&&(e.stopPropagation(),p(!0))},children:e.title}),e.closable&&!f&&(0,V.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),o()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),o())},className:`ml-1 opacity-0 group-hover:opacity-100 rounded-sm hover:bg-surface-elevated p-0.5 transition-opacity`,children:(0,V.jsx)(sn,{className:`size-3`})})]})]})}var pp={terminal:Qt,chat:St,editor:Ze,database:Ge,sqlite:Ge,postgres:Ge,"git-graph":ot,"git-diff":Qe,settings:Jt,browser:ct,"extension-webview":zt};function mp({panelId:e}){If(e=>e.activeProject);let t=(0,z.useRef)(new Map),n=(0,z.useRef)(null),r=(0,z.useRef)(0),i=u(t=>e?t.panels[e]:t.panels[t.focusedPanelId]),o=i?.tabs??[],s=i?.activeTabId??null,c=i?.id??u.getState().focusedPanelId,{dropIndex:l,handleDragStart:d,handleDragOver:f,handleDragOverBar:p,handleDrop:h,handleDragEnd:g}=Uf(c),_=rp(e=>e.notifications),{canScrollLeft:v,canScrollRight:y,scrollLeft:b,scrollRight:x}=op(n),S=cp(n.current,t.current,o,_);(0,z.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 C=(0,z.useCallback)((e,t)=>{m.getState().updateTab(e.id,{title:t});let n=e.metadata?.projectName,r=e.metadata?.sessionId;n&&r&&R.patch(`${pe(n)}/chat/sessions/${r}`,{title:t}).catch(()=>{})},[]);function w(e){e.target.closest(`[data-tab-item]`)||Qf()}function T(e){e.target.closest(`[data-tab-item]`)||(e.preventDefault(),Qf())}return(0,V.jsxs)(`div`,{className:`hidden md:flex items-center h-10 border-b border-border bg-background relative`,onDragOver:p,onDrop:h,onDoubleClick:w,onContextMenu:T,children:[v&&(0,V.jsx)(`button`,{onClick:b,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,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(Fe,{className:`size-4 text-text-secondary`}),S.left&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-0.5 size-2 rounded-full`,np(S.left))})]})}),(0,V.jsx)(`div`,{ref:n,className:`flex-1 overflow-x-auto overflow-y-hidden min-w-0 scrollbar-none`,children:(0,V.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?_.get(r):void 0,a=i&&i.count>0?i.type:null;return(0,V.jsx)(fp,{tab:e,isActive:e.id===s,icon:pp[e.type],showDropBefore:l===n,notificationType:a,onSelect:()=>{u.getState().setActiveTab(e.id,c),r&&rp.getState().clearForSession(r)},onClose:()=>u.getState().closeTab(e.id,c),onDragStart:t=>d(t,e.id),onDragOver:t=>f(t,e.id,n),onDragEnd:g,tabRef:n=>{n?t.current.set(e.id,n):t.current.delete(e.id)},onRename:e.type===`chat`?t=>C(e,t):void 0},e.id)}),l!==null&&l>=o.length&&(0,V.jsx)(`div`,{className:`w-0.5 h-6 bg-primary rounded-full`}),(0,V.jsx)(`button`,{onClick:()=>Qf(),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,V.jsx)(It,{className:`size-4`})})]})}),y&&(0,V.jsx)(`button`,{onClick:x,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,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(a,{className:`size-4 text-text-secondary`}),S.right&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -left-0.5 size-2 rounded-full`,np(S.right))})]})})]})}function hp({panelId:e}){let[t,n]=(0,z.useState)(null),r=Vf(),i=u(e=>e.grid),a=u(e=>e.isMobile()),s=o(i,e),c=!a&&i.length<3,l=s?!a&&(i[s.row]?.length??0)<d(!1):!1,f=(0,z.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&&l?`left`:n>1-i&&l?`right`:r<i&&c?`top`:r>1-i&&c?`bottom`:`center`},[l,c]),p=(0,z.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.stopPropagation(),n(f(e)))},[f]),m=(0,z.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||n(null)},[]),h=(0,z.useCallback)(t=>{t.preventDefault(),t.stopPropagation();let r=f(t);if(n(null),Hf(),!r)return;let i=t.dataTransfer.getData(Lf);if(i)try{let t=JSON.parse(i),n=u.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{}},[f,e]);return r?(0,V.jsxs)(`div`,{className:`absolute inset-0 z-20`,onDragOver:p,onDragLeave:m,onDrop:h,children:[t===`left`&&(0,V.jsx)(`div`,{className:`absolute inset-y-0 left-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-l-md`}),t===`right`&&(0,V.jsx)(`div`,{className:`absolute inset-y-0 right-0 w-1/3 bg-primary/10 border-2 border-primary/30 rounded-r-md`}),t===`top`&&(0,V.jsx)(`div`,{className:`absolute inset-x-0 top-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-t-md`}),t===`bottom`&&(0,V.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-1/3 bg-primary/10 border-2 border-primary/30 rounded-b-md`}),t===`center`&&(0,V.jsx)(`div`,{className:`absolute inset-0 bg-primary/5 border-2 border-dashed border-primary/30 rounded-md`})]}):null}var gp=[{type:`terminal`,label:`Terminal`,icon:Qt},{type:`chat`,label:`AI Chat`,icon:St},{type:`git-graph`,label:`Git Graph`,icon:ot}],_p={terminal:(0,z.lazy)(()=>g(()=>import(`./terminal-tab-CnYqGghP.js`).then(e=>({default:e.TerminalTab})),__vite__mapDeps([3,1,4,5,6,7]))),chat:(0,z.lazy)(()=>g(()=>import(`./chat-tab-rYBo5Mff.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([8,1,9,10,11,12,6,5,13,14,15,16,17,18,4,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,38,39,0]))),editor:(0,z.lazy)(()=>g(()=>import(`./code-editor-BdM11-0K.js`).then(e=>({default:e.CodeEditor})),__vite__mapDeps([40,1,9,10,11,12,6,5,13,14,15,16,17,18,41,19,4,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,2,42]))),database:(0,z.lazy)(()=>g(()=>import(`./database-viewer-CINo6teP.js`).then(e=>({default:e.DatabaseViewer})),__vite__mapDeps([43,1,44,19,6,5,45,21,2]))),sqlite:(0,z.lazy)(()=>g(()=>import(`./sqlite-viewer-Cjl4uXyo.js`).then(e=>({default:e.SqliteViewer})),__vite__mapDeps([46,1,44,19,6,5,45,21,42,2]))),postgres:(0,z.lazy)(()=>g(()=>import(`./postgres-viewer-FCpA6nh4.js`).then(e=>({default:e.PostgresViewer})),__vite__mapDeps([47,1,44,19,6,5,45,21,42,2]))),"git-graph":(0,z.lazy)(()=>g(()=>import(`./git-graph-Dde-j8cK.js`).then(e=>({default:e.GitGraph})),__vite__mapDeps([48,1,11,12,6,5,4,19,24,25,39,2]))),"git-diff":(0,z.lazy)(()=>g(()=>import(`./diff-viewer-_MPL-DRu.js`).then(e=>({default:e.DiffViewer})),__vite__mapDeps([49,1,41,19,6,38,5,2]))),settings:(0,z.lazy)(()=>g(()=>import(`./settings-tab-Y37tD1kM.js`).then(e=>({default:e.SettingsTab})),__vite__mapDeps([50,11,1,12,6,5,2,0]))),browser:(0,z.lazy)(()=>g(()=>import(`./browser-tab-LFNnCzgB.js`).then(e=>({default:e.BrowserTab})),__vite__mapDeps([51,1,24,4,19,6,25,5,2]))),"extension-webview":(0,z.lazy)(()=>g(()=>import(`./extension-webview-BU1T2a8n.js`).then(e=>({default:e.ExtensionWebview})),__vite__mapDeps([52,1,5,6])))};function vp({panelId:e,projectName:t}){let n=u(t=>t.panels[e]),r=u(t=>t.focusedPanelId===e),i=u(e=>(e.currentProject===t?e.grid:e.projectGrids[t]??[[]]).flat().length);return n?(0,V.jsxs)(`div`,{className:L(`flex flex-col h-full overflow-hidden`,i>1&&`border border-transparent`,i>1&&r&&`border-primary/30`),onMouseDown:()=>{u.getState().focusedPanelId!==e&&u.getState().setFocusedPanel(e)},children:[(0,V.jsx)(mp,{panelId:e}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-hidden relative`,children:[n.tabs.length===0?(0,V.jsx)(Sp,{panelId:e}):n.tabs.map(e=>{let t=_p[e.type];return(0,V.jsx)(`div`,{className:e.id===n.activeTabId?`h-full w-full`:`hidden`,children:(0,V.jsx)(z.Suspense,{fallback:(0,V.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,V.jsx)(vt,{className:`size-6 animate-spin text-primary`})}),children:(0,V.jsx)(t,{metadata:e.metadata,tabId:e.id})})},e.id)}),(0,V.jsx)(hp,{panelId:e})]})]}):null}function yp(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 bp=5,xp=20;function Sp({panelId:e}){let t=If(e=>e.activeProject),[n,r]=(0,z.useState)([]),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(!1),c=(0,z.useCallback)(async()=>{if(t?.name){a(!0);try{r((await R.get(`${pe(t.name)}/chat/sessions`)).slice(0,xp))}catch{}finally{a(!1)}}},[t?.name]);(0,z.useEffect)(()=>{c()},[c]);let l=(0,z.useCallback)(async(e,n)=>{if(e.stopPropagation(),!t?.name)return;let i=`${pe(t.name)}/chat/sessions/${n.id}/pin`;try{n.pinned?await R.del(i):await R.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 d(n){let r=n!==`settings`&&t?{projectName:t.name}:void 0;u.getState().openTab({type:n,title:gp.find(e=>e.type===n)?.label??n,metadata:r,projectId:t?.name??null,closable:!0},e)}function f(n){u.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 p=n.filter(e=>e.pinned),m=n.filter(e=>!e.pinned),h=o?m:m.slice(0,bp),g=m.length>bp;function _(e){return(0,V.jsxs)(`button`,{onClick:()=>f(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,V.jsx)(St,{className:`size-3.5 shrink-0 text-text-subtle`}),(0,V.jsx)(`span`,{className:`flex-1 min-w-0 text-xs font-medium truncate text-text-primary`,children:e.title||`Untitled`}),e.updatedAt&&(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0`,children:yp(e.updatedAt)}),(0,V.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 md:opacity-0 md:group-hover:opacity-100 hover:text-text-primary`}`,"aria-label":e.pinned?`Unpin session`:`Pin session`,children:e.pinned?(0,V.jsx)(Nt,{className:`size-3`}):(0,V.jsx)(Pt,{className:`size-3`})})]},e.id)}return(0,V.jsx)(`div`,{className:`flex flex-col h-full overflow-y-auto text-text-secondary`,children:(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-6 px-4 flex-1`,children:[(0,V.jsx)(`p`,{className:`text-sm`,children:`Open a tab to get started`}),(0,V.jsx)(`div`,{className:`grid grid-cols-3 gap-2 w-full max-w-sm`,children:gp.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:()=>d(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,V.jsx)(t,{className:`size-5`}),e.label]},e.type)})}),t&&!i&&p.length>0&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,V.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Pinned`}),(0,V.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:p.map(_)})]}),t&&!i&&h.length>0&&(0,V.jsxs)(`div`,{className:`flex flex-col gap-2 w-full max-w-sm`,children:[(0,V.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Recent chats`}),(0,V.jsx)(`div`,{className:`w-full rounded-md border border-border bg-surface overflow-hidden`,children:h.map(_)}),g&&(0,V.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,V.jsx)(Ie,{className:`size-3`}):(0,V.jsx)(Pe,{className:`size-3`}),o?`Show less`:`Show more (${m.length-bp})`]})]})]})})}function Cp({projectName:e}){let t=u(t=>t.currentProject===e?t.grid:t.projectGrids[e]??[[]]),n=t.flat().length;return(0,z.useEffect)(()=>{if(n===0){let e=f();u.setState(t=>({panels:{...t.panels,[e.id]:e},grid:[[e.id]],focusedPanelId:e.id}))}},[n]),n===0?null:n===1&&t[0]?.[0]?(0,V.jsx)(vp,{panelId:t[0][0],projectName:e}):(0,V.jsx)(Tf,{orientation:`vertical`,style:{height:`100%`},children:t.map((n,r)=>(0,V.jsx)(wp,{row:n,rowIdx:r,totalRows:t.length,projectName:e},`row-${r}`))})}function wp({row:e,rowIdx:t,totalRows:n,projectName:r}){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Of,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:e.length===1?(0,V.jsx)(vp,{panelId:e[0],projectName:r}):(0,V.jsx)(Tf,{orientation:`horizontal`,children:e.map((t,n)=>(0,V.jsx)(Tp,{panelId:t,colIdx:n,totalCols:e.length,projectName:r},t))})}),t<n-1&&(0,V.jsx)(Ep,{orientation:`horizontal`})]})}function Tp({panelId:e,colIdx:t,totalCols:n,projectName:r}){return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(Of,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:(0,V.jsx)(vp,{panelId:e,projectName:r})}),t<n-1&&(0,V.jsx)(Ep,{orientation:`vertical`})]})}function Ep({orientation:e}){let t=e===`vertical`;return(0,V.jsx)(jf,{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
@@ -27,11 +27,11 @@ curl ${p&&e.proxyEndpoint?e.proxyEndpoint:window.location.origin+`/proxy/v1/mess
27
27
  -H "anthropic-version: 2023-06-01" \\
28
28
  -d '{"model":"claude-sonnet-4-6","max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}'`}),(0,V.jsx)($,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>d(`ANTHROPIC_BASE_URL=${p?e.tunnelUrl+`/proxy`:window.location.origin+`/proxy`}\nANTHROPIC_API_KEY=${e.authKey}`,`example`),children:c===`example`?`Copied!`:(0,V.jsx)(We,{className:`size-2.5`})})]})]}),(0,V.jsx)(`div`,{className:`flex items-center gap-3 pt-1`,children:(0,V.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Requests served: `,(0,V.jsx)(`span`,{className:`font-mono`,children:e.requestCount})]})})]}),i&&(0,V.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Saving...`}),o&&(0,V.jsx)(`p`,{className:`text-[11px] text-red-500`,children:o})]})}function zm(){return R.get(`/api/settings/mcp`)}function Bm(e,t){return R.post(`/api/settings/mcp`,{name:e,config:t})}function Vm(e,t){return R.put(`/api/settings/mcp/${encodeURIComponent(e)}`,t)}function Hm(e){return R.del(`/api/settings/mcp/${encodeURIComponent(e)}`)}function Um(){return R.post(`/api/settings/mcp/import`,{})}function Wm(e){return!e||!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(e)?`Name must start with a letter/digit, then alphanumeric, hyphens, or underscores`:e.length>50?`Name max 50 chars`:null}function Gm(e){let t=[];if(!e||typeof e!=`object`)return[`Config must be an object`];let n=e,r=n.type??`stdio`;return r===`stdio`?(!n.command||typeof n.command!=`string`)&&t.push(`command is required for stdio`):r===`http`||r===`sse`?((!n.url||typeof n.url!=`string`)&&t.push(`url is required for `+r),n.url&&typeof n.url==`string`&&!/^https?:\/\/.+/.test(n.url)&&t.push(`url must be HTTP(S)`)):t.push(`type must be stdio, http, or sse`),t}var Km=[`stdio`,`http`,`sse`];function qm({open:e,onClose:t,editServer:n}){let r=!!n,[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(`stdio`),[c,l]=(0,z.useState)(``),[u,d]=(0,z.useState)(``),[f,p]=(0,z.useState)(``),[m,h]=(0,z.useState)([]),[g,_]=(0,z.useState)(!1),[v,y]=(0,z.useState)(null);(0,z.useEffect)(()=>{if(e)if(y(null),_(!1),n){a(n.name),s(n.transport||`stdio`);let e=n.config;`command`in e?(l(e.command||``),d((e.args??[]).join(` `)),h(Jm(e.env))):`url`in e&&(p(e.url||``),h(Jm(e.headers)))}else a(``),s(`stdio`),l(``),d(``),p(``),h([])},[e,n]);let b=()=>{let e=Ym(m);return o===`stdio`?{type:`stdio`,command:c,...u.trim()&&{args:u.trim().split(/\s+/)},...Object.keys(e).length>0&&{env:e}}:{type:o,url:f,...Object.keys(e).length>0&&{headers:e}}},x=async()=>{if(y(null),!r){let e=Wm(i);if(e){y(e);return}}let e=b(),n=Gm(e);if(n.length){y(n.join(`; `));return}_(!0);try{r?await Vm(i,e):await Bm(i,e),t(!0)}catch(e){y(e.message||`Save failed`)}finally{_(!1)}},S=()=>h([...m,{key:``,value:``}]),C=e=>h(m.filter((t,n)=>n!==e)),w=(e,t,n)=>{h(m.map((r,i)=>i===e?{key:t===`key`?n:r.key,value:t===`value`?n:r.value}:r))},T=o===`stdio`,E=T?`Environment Variables`:`Headers`;return(0,V.jsx)(zp,{open:e,onOpenChange:e=>{e||t()},children:(0,V.jsxs)(Hp,{className:`max-h-[85vh] overflow-y-auto sm:max-w-md`,children:[(0,V.jsxs)(Up,{children:[(0,V.jsx)(Gp,{className:`text-sm`,children:r?`Edit MCP Server`:`Add MCP Server`}),(0,V.jsx)(Kp,{className:`text-[11px]`,children:`Configure a Model Context Protocol server connection.`})]}),(0,V.jsxs)(`div`,{className:`space-y-3`,children:[(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,children:`Name`}),(0,V.jsx)(qp,{value:i,onChange:e=>a(e.target.value),placeholder:`my-mcp-server`,className:`h-8 text-xs`,disabled:r})]}),(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,children:`Transport`}),(0,V.jsx)(`div`,{className:`flex gap-1`,children:Km.map(e=>(0,V.jsx)($,{variant:o===e?`default`:`outline`,size:`sm`,className:`flex-1 h-7 text-xs cursor-pointer`,onClick:()=>{s(e),h([]),l(``),d(``),p(``)},children:e},e))})]}),T?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,children:`Command *`}),(0,V.jsx)(qp,{value:c,onChange:e=>l(e.target.value),placeholder:`npx`,className:`h-8 text-xs`})]}),(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,children:`Arguments (space-separated)`}),(0,V.jsx)(qp,{value:u,onChange:e=>d(e.target.value),placeholder:`@playwright/mcp@latest`,className:`h-8 text-xs`})]})]}):(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,children:`URL *`}),(0,V.jsx)(qp,{value:f,onChange:e=>p(e.target.value),placeholder:`https://mcp.example.com`,className:`h-8 text-xs`})]}),(0,V.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,V.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground`,children:E}),m.map((e,t)=>(0,V.jsxs)(`div`,{className:`flex gap-1 items-center`,children:[(0,V.jsx)(qp,{value:e.key,onChange:e=>w(t,`key`,e.target.value),placeholder:`KEY`,className:`h-7 text-xs flex-1`}),(0,V.jsx)(qp,{value:e.value,onChange:e=>w(t,`value`,e.target.value),placeholder:`value`,className:`h-7 text-xs flex-1`}),(0,V.jsx)($,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0 cursor-pointer`,onClick:()=>C(t),children:(0,V.jsx)(sn,{className:`size-3`})})]},t)),(0,V.jsxs)($,{variant:`outline`,size:`sm`,className:`h-7 text-xs gap-1 cursor-pointer`,onClick:S,children:[(0,V.jsx)(It,{className:`size-3`}),` Add `,T?`Variable`:`Header`]})]}),v&&(0,V.jsx)(`p`,{className:`text-[11px] text-destructive`,children:v})]}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)($,{variant:`outline`,size:`sm`,className:`h-8 text-xs cursor-pointer`,onClick:()=>t(),children:`Cancel`}),(0,V.jsx)($,{size:`sm`,className:`h-8 text-xs cursor-pointer`,onClick:x,disabled:g,children:g?`Saving...`:`Save`})]})]})})}function Jm(e){return e?Object.entries(e).map(([e,t])=>({key:e,value:t})):[]}function Ym(e){let t={};for(let{key:n,value:r}of e)n.trim()&&(t[n.trim()]=r);return t}function Xm(){let[e,t]=(0,z.useState)([]),[n,r]=(0,z.useState)(!0),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(null),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(null),m=(0,z.useCallback)(async()=>{try{t(await zm())}catch(e){console.error(`Failed to load MCP servers:`,e)}finally{r(!1)}},[]);(0,z.useEffect)(()=>{m()},[m]);let h=async e=>{try{await Hm(e),l(null),m()}catch(e){console.error(`Failed to delete:`,e)}},g=async()=>{d(!0),p(null);try{let e=await Um();p(`Imported ${e.imported}, skipped ${e.skipped}`),m()}catch(e){p(e.message||`Import failed`)}finally{d(!1)}},_=e=>{a(!1),s(null),e&&m()},v=()=>{s(null),a(!0)},y=e=>{s(e),a(!0)};return n?(0,V.jsx)(`div`,{className:`space-y-3`,children:[1,2,3].map(e=>(0,V.jsx)(`div`,{className:`h-16 rounded-lg bg-muted animate-pulse`},e))}):(0,V.jsxs)(`div`,{className:`space-y-3`,children:[e.length===0?(0,V.jsxs)(`div`,{className:`text-center py-8 space-y-2`,children:[(0,V.jsx)(qt,{className:`size-8 mx-auto text-muted-foreground`}),(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No MCP servers configured. Add one or import from Claude Code.`})]}):(0,V.jsx)(`div`,{className:`space-y-2`,children:e.map(e=>(0,V.jsxs)(`div`,{className:`rounded-lg border bg-card p-3 space-y-1.5`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`text-xs font-medium truncate flex-1`,children:e.name}),(0,V.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-muted text-muted-foreground shrink-0`,children:e.transport})]}),(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:Zm(e)}),(0,V.jsx)(`div`,{className:`flex justify-end gap-1.5`,children:c===e.name?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{className:`text-[11px] text-destructive self-center mr-1`,children:`Delete?`}),(0,V.jsx)($,{variant:`destructive`,size:`sm`,className:`h-8 min-w-[44px] text-xs cursor-pointer`,onClick:()=>h(e.name),children:`Yes`}),(0,V.jsx)($,{variant:`outline`,size:`sm`,className:`h-8 min-w-[44px] text-xs cursor-pointer`,onClick:()=>l(null),children:`No`})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)($,{variant:`ghost`,size:`sm`,className:`h-7 text-xs gap-1 cursor-pointer`,onClick:()=>y(e),children:[(0,V.jsx)(Mt,{className:`size-3`}),` Edit`]}),(0,V.jsxs)($,{variant:`ghost`,size:`sm`,className:`h-7 text-xs gap-1 text-destructive hover:text-destructive cursor-pointer`,onClick:()=>l(e.name),children:[(0,V.jsx)($t,{className:`size-3`}),` Delete`]})]})})]},e.name))}),(0,V.jsxs)(`div`,{className:`space-y-2 pt-1`,children:[(0,V.jsxs)($,{className:`w-full h-10 text-xs gap-1.5 cursor-pointer`,onClick:v,children:[(0,V.jsx)(It,{className:`size-3.5`}),` Add MCP Server`]}),(0,V.jsxs)($,{variant:`outline`,className:`w-full h-10 text-xs gap-1.5 cursor-pointer`,onClick:g,disabled:u,children:[(0,V.jsx)(Ke,{className:`size-3.5`}),` `,u?`Importing...`:`Import from Claude Code`]}),f&&(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground text-center`,children:f})]}),(0,V.jsx)(qm,{open:i,onClose:_,editServer:o})]})}function Zm(e){let t=e.config;if(e.transport===`stdio`||!(`url`in t)){let e=t;return[e.command,...e.args??[]].join(` `)}return t.url??``}function Qm(){let[e,t]=(0,z.useState)([]),[n,r]=(0,z.useState)(!0),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(!1),[c,l]=(0,z.useState)(``),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(null),g=(0,z.useCallback)(async()=>{try{t(await R.get(`/api/extensions`))}catch(e){console.error(`Failed to load extensions:`,e)}finally{r(!1)}},[]);(0,z.useEffect)(()=>{g()},[g]);let _=async()=>{let e=i.trim();if(e){s(!0);try{await R.post(`/api/extensions/install`,{name:e}),Dn.success(`Installed ${e}`),a(``),g()}catch(e){Dn.error(e.message||`Install failed`)}finally{s(!1)}}},v=async e=>{p(e.id);try{await R.patch(`/api/extensions/${e.id}`,{enabled:!e.enabled}),g()}catch(e){Dn.error(e.message||`Toggle failed`)}finally{p(null)}},y=async e=>{h(e);try{await R.del(`/api/extensions/${e}`),Dn.success(`Removed ${e}`),g()}catch(e){Dn.error(e.message||`Remove failed`)}finally{h(null)}};return n?(0,V.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,V.jsx)(vt,{className:`size-4 animate-spin text-muted-foreground`})}):(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Install Extension`}),(0,V.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,V.jsx)(qp,{value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&_()},placeholder:`npm package name (e.g. @ppm/ext-database)`,className:`h-8 text-xs flex-1`}),(0,V.jsxs)($,{variant:`outline`,size:`sm`,className:`h-8 text-xs px-3 gap-1 cursor-pointer`,disabled:!i.trim()||o,onClick:_,children:[o?(0,V.jsx)(vt,{className:`size-3 animate-spin`}):(0,V.jsx)(It,{className:`size-3`}),`Install`]})]}),(0,V.jsx)(`button`,{onClick:()=>d(!u),className:`text-[11px] text-muted-foreground hover:text-foreground transition-colors cursor-pointer`,children:u?`Hide`:`Dev link local extension...`}),u&&(0,V.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,V.jsx)(qp,{value:c,onChange:e=>l(e.target.value),placeholder:`Local path (e.g. ./packages/ext-database)`,className:`h-8 text-xs flex-1`}),(0,V.jsxs)($,{variant:`outline`,size:`sm`,className:`h-8 text-xs px-3 gap-1 cursor-pointer`,disabled:!c.trim(),onClick:async()=>{try{await R.post(`/api/extensions/dev-link`,{path:c.trim()}),Dn.success(`Dev-linked successfully`),l(``),g()}catch(e){Dn.error(e.message||`Dev link failed`)}},children:[(0,V.jsx)(rt,{className:`size-3`}),`Link`]})]})]}),(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsxs)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:[`Installed (`,e.length,`)`]}),e.length===0?(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-4 text-center`,children:`No extensions installed`}):(0,V.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>(0,V.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 py-2 rounded-lg bg-muted/50 hover:bg-muted transition-colors`,children:[(0,V.jsx)(`div`,{className:`size-8 rounded-md bg-background flex items-center justify-center shrink-0`,children:(0,V.jsx)(zt,{className:`size-4 text-muted-foreground`})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium truncate`,children:e.displayName||e.id}),(0,V.jsxs)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:[e.id,` v`,e.version,e.activated&&(0,V.jsx)(`span`,{className:`ml-1 text-green-500`,children:`active`})]})]}),(0,V.jsx)($,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0 cursor-pointer`,title:e.enabled?`Disable`:`Enable`,disabled:f===e.id,onClick:()=>v(e),children:f===e.id?(0,V.jsx)(vt,{className:`size-3.5 animate-spin`}):e.enabled?(0,V.jsx)(Rt,{className:`size-3.5 text-green-500`}):(0,V.jsx)(Lt,{className:`size-3.5 text-muted-foreground`})}),(0,V.jsx)($,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0 cursor-pointer text-destructive hover:text-destructive`,title:`Remove`,disabled:m===e.id,onClick:()=>y(e.id),children:m===e.id?(0,V.jsx)(vt,{className:`size-3.5 animate-spin`}):(0,V.jsx)($t,{className:`size-3.5`})})]},e.id))})]})]})}function $m(){let[e,t]=(0,z.useState)(!1),[n,r]=(0,z.useState)(``),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(!1),[c,l]=(0,z.useState)(!1),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(null),m=i.length>0&&n!==i,h=n.trim().length>=4&&n===i&&!c,g=(0,z.useCallback)(async()=>{if(h){l(!0),p(null);try{let{token:e}=await R.put(`/api/settings/auth/password`,{password:n.trim(),confirm:i.trim()});fe(e),d(!0),r(``),a(``),setTimeout(()=>{d(!1),t(!1)},1500)}catch(e){p(e instanceof Error?e.message:`Failed to change password`)}finally{l(!1)}}},[h,n,i]);return e?(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Change Password`}),(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(qp,{type:o?`text`:`password`,placeholder:`New password`,value:n,onChange:e=>r(e.target.value),className:`h-8 text-xs pr-8`,autoFocus:!0}),(0,V.jsx)(`button`,{type:`button`,className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground cursor-pointer`,onClick:()=>s(!o),tabIndex:-1,children:o?(0,V.jsx)(Je,{className:`size-3.5`}):(0,V.jsx)(Ye,{className:`size-3.5`})})]}),(0,V.jsx)(qp,{type:o?`text`:`password`,placeholder:`Confirm password`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&g()},className:`h-8 text-xs`}),m&&(0,V.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Passwords do not match`}),f&&(0,V.jsx)(`p`,{className:`text-[11px] text-destructive`,children:f}),(0,V.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,V.jsx)($,{variant:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,onClick:()=>{t(!1),r(``),a(``),p(null)},children:`Cancel`}),(0,V.jsx)($,{variant:u?`default`:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,disabled:!h,onClick:g,children:c?`...`:u?(0,V.jsx)(Ne,{className:`size-3.5`}):`Save`})]}),(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Min 4 characters. You'll stay logged in on this device.`})]})]}):(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Security`}),(0,V.jsxs)($,{variant:`outline`,size:`sm`,className:`h-8 text-xs gap-1.5 cursor-pointer`,onClick:()=>t(!0),children:[(0,V.jsx)(pt,{className:`size-3.5`}),`Change Password`]})]})}function eh(e){let t=(e+`=`.repeat((4-e.length%4)%4)).replace(/-/g,`+`).replace(/_/g,`/`),n=atob(t);return Uint8Array.from(n,e=>e.charCodeAt(0))}function th(){let[e,t]=(0,z.useState)(`default`),[n,r]=(0,z.useState)(!1),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(null);return(0,z.useEffect)(()=>{`Notification`in window&&t(Notification.permission),r(localStorage.getItem(`ppm-push-subscribed`)===`true`)},[]),{permission:e,isSubscribed:n,loading:i,error:o,subscribe:(0,z.useCallback)(async()=>{a(!0),s(null);try{let e=await Notification.requestPermission();if(t(e),e!==`granted`){s(`Permission denied`);return}if(!navigator.serviceWorker?.controller&&!navigator.serviceWorker?.ready){s(`Service worker not available (dev mode?)`);return}let n=await Promise.race([navigator.serviceWorker.ready,new Promise((e,t)=>setTimeout(()=>t(Error(`Service worker timeout`)),5e3))]);if(!n)throw Error(`Service worker not ready`);let i={},a=me();a&&(i.Authorization=`Bearer ${a}`);let o=await(await fetch(`/api/push/vapid-key`,{headers:i})).json();if(!o.ok)throw Error(o.error||`Failed to get VAPID key`);let c=await n.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:eh(o.data.publicKey).buffer});await fetch(`/api/push/subscribe`,{method:`POST`,headers:{...i,"Content-Type":`application/json`},body:JSON.stringify(c.toJSON())}),r(!0),localStorage.setItem(`ppm-push-subscribed`,`true`)}catch(e){s(e instanceof Error?e.message:`Subscribe failed`),console.error(`[push] Subscribe failed:`,e)}finally{a(!1)}},[]),unsubscribe:(0,z.useCallback)(async()=>{a(!0);try{let e=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(e){let t={"Content-Type":`application/json`},n=me();n&&(t.Authorization=`Bearer ${n}`),await fetch(`/api/push/subscribe`,{method:`DELETE`,headers:t,body:JSON.stringify({endpoint:e.endpoint})}),await e.unsubscribe()}r(!1),localStorage.removeItem(`ppm-push-subscribed`)}catch(e){console.error(`[push] Unsubscribe failed:`,e)}finally{a(!1)}},[])}}var nh=[{value:`light`,label:`Light`,icon:Zt},{value:`dark`,label:`Dark`,icon:Et},{value:`system`,label:`System`,icon:Tt}],rh=`PushManager`in window&&`serviceWorker`in navigator,ih=/iPhone|iPad/.test(navigator.userAgent)&&!window.matchMedia(`(display-mode: standalone)`).matches,ah=[{value:`ai`,label:`AI Provider`,subtitle:`Model, execution mode, limits`,icon:Ae},{value:`notifications`,label:`Notifications`,subtitle:`Push & Telegram alerts`,icon:Oe},{value:`proxy`,label:`API Proxy`,subtitle:`Expose accounts as Anthropic API`,icon:ct},{value:`shortcuts`,label:`Keyboard Shortcuts`,subtitle:`Customize key bindings`,icon:mt},{value:`mcp`,label:`MCP Servers`,subtitle:`Model Context Protocol tools`,icon:Ft},{value:`extensions`,label:`Extensions`,subtitle:`Install and manage extensions`,icon:zt}];function oh(){let{theme:e,setTheme:t,deviceName:n,setDeviceName:r,version:i}=B(),{permission:o,isSubscribed:s,loading:c,error:l,subscribe:u,unsubscribe:d}=th(),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(n??``),[g,_]=(0,z.useState)(!1),[v,y]=(0,z.useState)(!1),b=(0,z.useRef)(void 0),x=m.trim()!==(n??``),S=(0,z.useCallback)(async()=>{if(x){_(!0);try{await r(m),y(!0),clearTimeout(b.current),b.current=setTimeout(()=>y(!1),2e3)}finally{_(!1)}}},[m,x,r]);if(f){let e=ah.find(e=>e.value===f),t=e.icon;return(0,V.jsxs)(`div`,{className:`h-full w-full flex flex-col`,children:[(0,V.jsxs)(`div`,{className:`shrink-0 px-2 pt-3 pb-1 flex items-center gap-1`,children:[(0,V.jsx)($,{variant:`ghost`,size:`icon`,className:`size-8 cursor-pointer shrink-0`,onClick:()=>p(null),children:(0,V.jsx)(we,{className:`size-4`})}),(0,V.jsx)(t,{className:`size-4 text-muted-foreground shrink-0`}),(0,V.jsx)(`h2`,{className:`text-sm font-semibold truncate`,children:e.label})]}),(0,V.jsx)(gm,{}),(0,V.jsx)(kp,{className:`flex-1 min-h-0`,children:(0,V.jsxs)(`div`,{className:`p-3`,children:[f===`ai`&&(0,V.jsx)(jm,{compact:!0}),f===`notifications`&&(0,V.jsx)(sh,{isSubscribed:s,loading:c,permission:o,pushError:l,subscribe:u,unsubscribe:d}),f===`proxy`&&(0,V.jsx)(Rm,{}),f===`shortcuts`&&(0,V.jsx)(Fm,{}),f===`mcp`&&(0,V.jsx)(Xm,{}),f===`extensions`&&(0,V.jsx)(Qm,{})]})})]})}return(0,V.jsxs)(`div`,{className:`h-full w-full flex flex-col`,children:[(0,V.jsx)(`div`,{className:`shrink-0 px-3 pt-3 pb-1`,children:(0,V.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`})}),(0,V.jsx)(kp,{className:`flex-1 min-h-0`,children:(0,V.jsxs)(`div`,{className:`p-3 space-y-4`,children:[(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Device Name`}),(0,V.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,V.jsx)(qp,{value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`&&S()},placeholder:`My Device`,className:`h-8 text-xs flex-1`,maxLength:100}),(0,V.jsx)($,{variant:v?`default`:`outline`,size:`sm`,className:`h-8 text-xs px-3 cursor-pointer`,disabled:!x||g,onClick:S,children:g?`...`:v?(0,V.jsx)(Ne,{className:`size-3.5`}):`Save`})]}),(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Shown in page title and synced to PPM Cloud.`})]}),(0,V.jsx)($m,{}),(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Theme`}),(0,V.jsx)(`div`,{className:`flex gap-1.5`,children:nh.map(n=>{let r=n.icon;return(0,V.jsxs)($,{variant:e===n.value?`default`:`outline`,size:`sm`,onClick:()=>t(n.value),className:L(`flex-1 gap-1.5 text-xs h-8 cursor-pointer`,e===n.value&&`ring-2 ring-primary`),children:[(0,V.jsx)(r,{className:`size-3.5`}),n.label]},n.value)})})]}),(0,V.jsx)(gm,{}),(0,V.jsx)(`nav`,{className:`space-y-1`,"aria-label":`Settings categories`,children:ah.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:()=>p(e.value),className:`w-full flex items-center gap-3 px-2.5 py-2.5 rounded-lg hover:bg-accent/50 active:bg-accent transition-colors cursor-pointer text-left group`,children:[(0,V.jsx)(`div`,{className:`size-8 rounded-md bg-muted flex items-center justify-center shrink-0 group-hover:bg-accent`,children:(0,V.jsx)(t,{className:`size-4 text-muted-foreground`})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`p`,{className:`text-xs font-medium text-foreground truncate`,children:e.label}),(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:e.subtitle})]}),(0,V.jsx)(a,{className:`size-4 text-muted-foreground shrink-0`})]},e.value)})}),(0,V.jsx)(gm,{}),(0,V.jsxs)(`section`,{className:`space-y-1 pb-2`,children:[(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`PPM — Personal Project Manager`}),(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`A mobile-first web IDE for managing your projects.`}),i&&(0,V.jsxs)(`p`,{className:`text-[11px] text-muted-foreground tabular-nums`,children:[`Version `,i]})]})]})})]})}function sh({isSubscribed:e,loading:t,permission:n,pushError:r,subscribe:i,unsubscribe:a}){return(0,V.jsxs)(`div`,{className:`space-y-4`,children:[(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Push Notifications`}),rh?(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e?(0,V.jsx)(ke,{className:`size-3.5`}):(0,V.jsx)(De,{className:`size-3.5`}),(0,V.jsx)(`span`,{className:`text-xs`,children:`Push notifications`})]}),(0,V.jsx)($,{variant:e?`default`:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,disabled:t||n===`denied`,onClick:()=>e?a():i(),children:t?`...`:e?`On`:`Off`})]}),e&&(0,V.jsx)($,{variant:`outline`,size:`sm`,className:`h-7 text-xs w-full cursor-pointer`,onClick:()=>{new Notification(`PPM Test`,{body:`Push notifications are working!`})},children:`Test notification`}),r&&(0,V.jsx)(`p`,{className:`text-[11px] text-destructive`,children:r}),n===`denied`&&(0,V.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Notifications blocked. Enable in browser settings.`}),ih&&(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`On iOS, install PPM to Home Screen for push notifications.`})]}):(0,V.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Push notifications not supported in this browser.`})]}),(0,V.jsx)(gm,{}),(0,V.jsxs)(`section`,{className:`space-y-2`,children:[(0,V.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Telegram`}),(0,V.jsx)(Im,{})]})]})}function ch({connections:e,cachedTables:t,onOpenTable:n,onRefreshTables:r,onEdit:i,onDelete:o}){let[s,c]=(0,z.useState)(new Set),[l,u]=(0,z.useState)(new Set([`__ungrouped__`])),[d,f]=(0,z.useState)(new Set),[p,m]=(0,z.useState)(new Map),h=e=>{c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},g=e=>{u(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},_=async e=>{f(t=>new Set(t).add(e));try{await r(e)}finally{f(t=>{let n=new Set(t);return n.delete(e),n})}},v={};for(let t of e){let e=t.group_name??`__ungrouped__`;(v[e]??=[]).push(t)}let y=Object.keys(v).sort((e,t)=>e===`__ungrouped__`?1:t===`__ungrouped__`?-1:e.localeCompare(t));return e.length===0?(0,V.jsxs)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:[`No connections yet.`,(0,V.jsx)(`br`,{}),`Click + to add one.`]}):(0,V.jsx)(`div`,{className:`py-1`,children:y.map(e=>{let r=l.has(e),c=e===`__ungrouped__`?`Ungrouped`:e,u=v[e],f=y.length>1||e!==`__ungrouped__`;return(0,V.jsxs)(`div`,{children:[f&&(0,V.jsxs)(`button`,{onClick:()=>g(e),className:`w-full flex items-center gap-1 px-2 py-1 text-[10px] font-semibold text-text-subtle uppercase tracking-wider hover:text-text-secondary transition-colors`,children:[r?(0,V.jsx)(Pe,{className:`size-3`}):(0,V.jsx)(a,{className:`size-3`}),c]}),r&&(0,V.jsx)(`div`,{className:f?`ml-[11px] border-l border-dashed border-border`:``,children:u.map(e=>{let r=s.has(e.id),c=t.get(e.id)??[],l=d.has(e.id);return(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`div`,{className:L(`group flex items-center gap-1 py-1 hover:bg-surface-elevated transition-colors`,f?`pl-3 pr-2`:`px-2`),children:[(0,V.jsx)(`button`,{onClick:()=>{h(e.id),!s.has(e.id)&&c.length===0&&_(e.id)},className:`shrink-0 text-text-subtle hover:text-foreground transition-colors`,children:r?(0,V.jsx)(Pe,{className:`size-3`}):(0,V.jsx)(a,{className:`size-3`})}),(0,V.jsx)(`span`,{className:`shrink-0 size-2 rounded-full border border-border`,style:{backgroundColor:e.color??`transparent`}}),(0,V.jsx)(`button`,{className:`flex-1 text-left text-xs truncate hover:text-primary transition-colors`,onClick:()=>{h(e.id),!s.has(e.id)&&c.length===0&&_(e.id)},children:e.name}),(0,V.jsx)(`span`,{className:`shrink-0 text-[9px] text-text-subtle uppercase px-1 rounded bg-surface-elevated`,children:e.type===`postgres`?`PG`:`DB`}),e.readonly===1&&(0,V.jsx)(`span`,{title:`Readonly`,children:(0,V.jsx)(yt,{className:`shrink-0 size-2.5 text-text-subtle`,"aria-label":`Readonly`})}),(0,V.jsxs)(`div`,{className:`hidden group-hover:flex items-center gap-0.5 shrink-0`,children:[(0,V.jsx)(`button`,{onClick:()=>_(e.id),disabled:l,className:`p-0.5 text-text-subtle hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,V.jsx)(Bt,{className:L(`size-3`,l&&`animate-spin`)})}),(0,V.jsx)(`button`,{onClick:()=>i(e),className:`p-0.5 text-text-subtle hover:text-foreground transition-colors`,title:`Edit`,children:(0,V.jsx)(Mt,{className:`size-3`})}),(0,V.jsx)(`button`,{onClick:()=>o(e.id),className:`p-0.5 text-text-subtle hover:text-red-500 transition-colors`,title:`Delete`,children:(0,V.jsx)($t,{className:`size-3`})})]})]}),r&&(0,V.jsxs)(`div`,{className:`ml-[11px] border-l border-dashed border-border pl-3`,children:[l&&c.length===0&&(0,V.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`Loading…`}),!l&&c.length===0&&(0,V.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`No tables cached`}),c.length>0&&(0,V.jsx)(uh,{connId:e.id,tables:c,filter:p.get(e.id)??``,onFilterChange:t=>m(n=>new Map(n).set(e.id,t)),onOpenTable:(t,r)=>n(e,t,r)})]})]},e.id)})})]},e)})})}var lh=200;function uh({connId:e,tables:t,filter:n,onFilterChange:r,onOpenTable:i}){let a=(0,z.useMemo)(()=>{if(!n)return t;let e=n.toLowerCase();return t.filter(t=>t.tableName.toLowerCase().includes(e))},[t,n]);return(0,V.jsxs)(`div`,{children:[t.length>5&&(0,V.jsxs)(`div`,{className:`flex items-center gap-1 px-1 py-0.5`,children:[(0,V.jsx)(Wt,{className:`size-2.5 text-text-subtle shrink-0`}),(0,V.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`Filter tables…`,className:`w-full text-[10px] bg-transparent border-none outline-none text-foreground placeholder:text-text-subtle`})]}),(0,V.jsxs)(`div`,{className:`overflow-y-auto`,style:{maxHeight:lh},children:[a.map(t=>(0,V.jsxs)(`button`,{onClick:()=>i(t.tableName,t.schemaName),className:`w-full flex items-center gap-1.5 px-2 py-0.5 text-[11px] text-text-secondary hover:text-foreground hover:bg-surface-elevated transition-colors text-left truncate`,children:[(0,V.jsx)(Ge,{className:`size-2.5 shrink-0 text-text-subtle`}),(0,V.jsx)(`span`,{className:`truncate`,children:t.tableName})]},`${e}-${t.schemaName}.${t.tableName}`)),n&&a.length===0&&(0,V.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`No match`})]})]})}var dh=`ppm-recent-paths`,fh=5,ph=[{name:`Home`,path:`~`,icon:dt},{name:`Desktop`,path:`~/Desktop`,icon:Tt},{name:`Documents`,path:`~/Documents`,icon:$e},{name:`Downloads`,path:`~/Downloads`,icon:Ke}];function mh(){try{return JSON.parse(localStorage.getItem(dh)??`[]`)}catch{return[]}}function hh(e){let t=[e,...mh().filter(t=>t!==e)].slice(0,fh);localStorage.setItem(dh,JSON.stringify(t))}function gh(e){return e==null?``:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function _h(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return`now`;if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function vh(e){if(e.type===`directory`)return(0,V.jsx)(at,{className:`size-4 text-blue-500`});let t=e.name.split(`.`).pop()?.toLowerCase();return t&&[`db`,`sqlite`,`sqlite3`].includes(t)?(0,V.jsx)(Ge,{className:`size-4 text-amber-500`}):(0,V.jsx)(tt,{className:`size-4 text-text-subtle`})}function yh(e,t){if(!t?.length)return!0;let n=`.`+e.split(`.`).pop()?.toLowerCase();return t.includes(n)}function bh({open:e,mode:t,accept:n,root:r,title:i,onSelect:o,onCancel:s}){let[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(``),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)([]),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)(``),[w,T]=(0,z.useState)(``),[E,D]=(0,z.useState)(!1),[O,ee]=(0,z.useState)([]),k=(0,z.useRef)(null),A=typeof window<`u`&&window.innerWidth<768,te=t===`folder`?`Select Folder`:t===`file`?`Select File`:`Select File or Folder`,j=(0,z.useCallback)(async(e,t)=>{y(!0),x(null),_(null),C(``);try{let n=new URLSearchParams;e&&n.set(`path`,e),t&&n.set(`showHidden`,`true`);let r=await R.get(`/api/fs/browse?${n}`);l(r.entries),d(r.current),p(r.parent),h(r.breadcrumbs),T(r.current)}catch(e){x(e.message||`Failed to browse directory`)}finally{y(!1)}},[]);(0,z.useEffect)(()=>{e&&(j(r??`~`,E),ee(mh()))},[e,r,j,E]);let ne=e=>j(e,E),M=()=>{let e=!E;D(e),j(u||(r??`~`),e)},N=e=>{e.key===`Enter`&&w.trim()&&j(w.trim())},re=e=>{e.type===`directory`?t===`file`?ne(e.path):_(e.path):t!==`folder`&&_(e.path)},ie=e=>{e.type===`directory`&&ne(e.path)},ae=()=>{g&&(hh(u),o(g))},oe=c.filter(e=>!(S&&!e.name.toLowerCase().includes(S.toLowerCase())||e.type===`file`&&n?.length&&!yh(e.name,n))),P=e=>e.type===`directory`?t!==`file`:t!==`folder`,F=(0,V.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5 px-3 py-2 border-b border-border`,children:[f&&(0,V.jsx)($,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0`,onClick:()=>ne(f),children:(0,V.jsx)(we,{className:`size-4`})}),(0,V.jsx)(qp,{value:w,onChange:e=>T(e.target.value),onKeyDown:N,placeholder:`Type path and press Enter`,className:`h-7 text-xs font-mono flex-1`})]}),(0,V.jsx)(`div`,{className:`flex items-center gap-0.5 px-3 py-1.5 border-b border-border overflow-x-auto text-xs`,children:m.map((e,t)=>(0,V.jsxs)(`span`,{className:`flex items-center shrink-0`,children:[t>0&&(0,V.jsx)(a,{className:`size-3 text-text-subtle mx-0.5`}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>ne(e.path),className:`hover:text-primary hover:underline text-text-secondary`,children:e.name})]},e.path))}),(0,V.jsxs)(`div`,{className:`flex flex-1 min-h-0 overflow-hidden`,children:[!A&&(0,V.jsxs)(`div`,{className:`w-36 border-r border-border py-2 px-1 shrink-0 overflow-y-auto`,children:[ph.map(e=>(0,V.jsxs)(`button`,{type:`button`,onClick:()=>ne(e.path),className:L(`flex items-center gap-2 w-full px-2 py-1 text-xs rounded-md hover:bg-surface-hover text-left`,u.endsWith(e.name)&&`bg-primary/10 text-primary`),children:[(0,V.jsx)(e.icon,{className:`size-3.5`}),e.name]},e.path)),O.length>0&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`text-[10px] text-text-subtle px-2 mt-3 mb-1 font-medium`,children:`Recent`}),O.map(e=>(0,V.jsxs)(`button`,{type:`button`,onClick:()=>ne(e),className:`flex items-center gap-2 w-full px-2 py-1 text-xs rounded-md hover:bg-surface-hover text-left truncate`,children:[(0,V.jsx)(He,{className:`size-3 shrink-0`}),(0,V.jsx)(`span`,{className:`truncate`,children:e.split(`/`).pop()})]},e))]})]}),(0,V.jsx)(kp,{className:`flex-1 min-h-0`,children:v?(0,V.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,V.jsx)(vt,{className:`size-5 animate-spin text-text-subtle`})}):b?(0,V.jsx)(`div`,{className:`text-center py-8 text-xs text-red-500`,children:b}):oe.length===0?(0,V.jsx)(`div`,{className:`text-center py-8 text-xs text-text-subtle`,children:S?`No matching entries`:`Empty directory`}):(0,V.jsx)(`div`,{ref:k,className:`py-1`,children:oe.map(e=>{let t=P(e);return(0,V.jsxs)(`button`,{type:`button`,onClick:()=>re(e),onDoubleClick:()=>ie(e),className:L(`flex items-center gap-2 w-full px-3 py-1.5 text-left text-xs transition-colors`,g===e.path?`bg-primary/10 text-primary`:t?`hover:bg-surface-hover text-text-primary`:`opacity-40 cursor-default`),disabled:!t&&e.type===`file`,children:[vh(e),(0,V.jsx)(`span`,{className:L(`flex-1 truncate`,e.type===`directory`&&`font-medium`),children:e.name}),(0,V.jsx)(`span`,{className:`text-text-subtle text-[10px] shrink-0 w-14 text-right`,children:gh(e.size)}),(0,V.jsx)(`span`,{className:`text-text-subtle text-[10px] shrink-0 w-14 text-right`,children:_h(e.modified)})]},e.path)})})})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-t border-border shrink-0`,children:[(0,V.jsx)($,{variant:`ghost`,size:`icon`,className:L(`size-7 shrink-0`,E&&`text-primary`),onClick:M,title:E?`Hide hidden files`:`Show hidden files`,children:E?(0,V.jsx)(Ye,{className:`size-3.5`}):(0,V.jsx)(Je,{className:`size-3.5`})}),n?.length?(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle bg-surface-hover px-1.5 py-0.5 rounded`,children:n.join(`, `)}):null,(0,V.jsx)(`div`,{className:`flex-1 max-w-48`,children:(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(Wt,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3 text-text-subtle`}),(0,V.jsx)(qp,{value:S,onChange:e=>C(e.target.value),placeholder:`Filter...`,className:`h-6 text-[11px] pl-6`})]})}),(0,V.jsx)(`div`,{className:`flex-1`}),(0,V.jsx)($,{variant:`outline`,size:`sm`,onClick:s,className:`h-7 text-xs`,children:`Cancel`}),(0,V.jsx)($,{size:`sm`,onClick:ae,disabled:!g,className:`h-7 text-xs`,children:`Select`})]})]});return(0,V.jsx)(zp,{open:e,onOpenChange:e=>{e||s()},children:(0,V.jsxs)(Hp,{className:L(`p-0 gap-0 overflow-hidden flex flex-col`,A?`max-w-[95vw] h-[85vh]`:`max-w-2xl h-[70vh]`),children:[(0,V.jsx)(Up,{className:`px-3 py-2 border-b border-border`,children:(0,V.jsx)(Gp,{className:`text-sm`,children:i??te})}),F]})})}function xh({mode:e,accept:t,root:n,title:r,onSelect:i,className:a}){let[o,s]=(0,z.useState)(!1);return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)($,{type:`button`,variant:`ghost`,size:`icon`,className:L(`size-8 shrink-0`,a),onClick:()=>s(!0),title:r??`Browse...`,children:(0,V.jsx)(nt,{className:`size-4`})}),(0,V.jsx)(bh,{open:o,mode:e,accept:t,root:n,title:r,onSelect:e=>{i(e),s(!1)},onCancel:()=>s(!1)})]})}var Sh=[`#ef4444`,`#f97316`,`#eab308`,`#22c55e`,`#06b6d4`,`#3b82f6`,`#8b5cf6`,`#ec4899`,`#6b7280`,`#000000`];function Ch({value:e,onChange:t}){return(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,V.jsx)(`button`,{type:`button`,onClick:()=>t(null),className:L(`size-6 rounded-full border-2 transition-all`,e?`border-border hover:scale-105`:`border-primary scale-110`,`bg-transparent relative`),title:`No color`,children:(0,V.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center text-[8px] text-text-subtle`,children:`×`})}),Sh.map(n=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:L(`size-6 rounded-full border-2 transition-all hover:scale-105`,e===n?`border-primary scale-110`:`border-transparent`),style:{backgroundColor:n},title:n},n))]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsx)(`div`,{className:`size-6 rounded-full border border-border shrink-0`,style:{backgroundColor:e??`transparent`}}),(0,V.jsx)(`input`,{type:`text`,value:e??``,onChange:e=>{let n=e.target.value.trim();if(n===``){t(null);return}/^#[0-9a-fA-F]{6}$/.test(n),t(n)},placeholder:`#3b82f6`,className:`flex-1 h-7 text-xs px-2 rounded-md border border-border bg-background focus:outline-none focus:border-primary font-mono`})]})]})}function wh({open:e,onClose:t,connection:n,onSave:r,onUpdate:i,onTest:a}){let o=!!n,[s,c]=(0,z.useState)({name:``,type:`postgres`,path:``,connectionString:``,groupName:``,color:null,readonly:!0}),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(!1),[h,g]=(0,z.useState)(null);(0,z.useEffect)(()=>{if(!e){f(null),g(null);return}c(n?{name:n.name,type:n.type,path:``,connectionString:``,groupName:n.group_name??``,color:n.color,readonly:n.readonly===1}:{name:``,type:`postgres`,path:``,connectionString:``,groupName:``,color:null,readonly:!0})},[e,n]);let _=(e,t)=>{c(n=>({...n,[e]:t})),f(null)};return(0,V.jsx)(zp,{open:e,onOpenChange:e=>{e||t()},children:(0,V.jsxs)(Hp,{className:`max-w-md`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:o?`Edit Connection`:`Add Connection`})}),(0,V.jsxs)(`div`,{className:`space-y-3 py-1`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Name *`}),(0,V.jsx)(`input`,{value:s.name,onChange:e=>_(`name`,e.target.value),placeholder:`my-database`,className:`w-full h-8 text-sm px-2.5 rounded-md border border-border bg-background focus:outline-none focus:border-primary`})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Type`}),(0,V.jsxs)(`select`,{value:s.type,onChange:e=>_(`type`,e.target.value),className:`w-full h-8 text-sm px-2 rounded-md border border-border bg-background focus:outline-none focus:border-primary`,children:[(0,V.jsx)(`option`,{value:`postgres`,children:`PostgreSQL`}),(0,V.jsx)(`option`,{value:`sqlite`,children:`SQLite`})]})]}),s.type===`postgres`?(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Connection String *`}),(0,V.jsx)(`input`,{type:`password`,value:s.connectionString,onChange:e=>_(`connectionString`,e.target.value),placeholder:`postgresql://user:pass@host:5432/db`,className:`w-full h-8 text-sm px-2.5 rounded-md border border-border bg-background focus:outline-none focus:border-primary font-mono`})]}):(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`File Path *`}),(0,V.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,V.jsx)(`input`,{value:s.path,onChange:e=>_(`path`,e.target.value),placeholder:`/path/to/database.db`,className:`flex-1 h-8 text-sm px-2.5 rounded-md border border-border bg-background focus:outline-none focus:border-primary font-mono`}),(0,V.jsx)(xh,{mode:`file`,accept:[`.db`,`.sqlite`,`.sqlite3`],title:`Browse for SQLite database`,onSelect:e=>_(`path`,e)})]})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Group`}),(0,V.jsx)(`input`,{value:s.groupName,onChange:e=>_(`groupName`,e.target.value),placeholder:`Production`,className:`w-full h-8 text-sm px-2.5 rounded-md border border-border bg-background focus:outline-none focus:border-primary`})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Tab Color`}),(0,V.jsx)(Ch,{value:s.color,onChange:e=>_(`color`,e)})]}),o&&(0,V.jsxs)(`div`,{className:`flex items-center justify-between py-1`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`p`,{className:`text-xs font-medium`,children:`Readonly`}),(0,V.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`Block non-SELECT queries (AI protection)`})]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>_(`readonly`,!s.readonly),className:`relative w-9 h-5 rounded-full transition-colors ${s.readonly?`bg-primary`:`bg-border`}`,children:(0,V.jsx)(`span`,{className:`absolute top-0.5 left-0.5 size-4 rounded-full bg-white transition-transform ${s.readonly?`translate-x-4`:``}`})})]}),d&&(0,V.jsx)(`p`,{className:`text-xs ${d.ok?`text-green-500`:`text-red-500`}`,children:d.ok?`✓ Connection successful`:`✗ ${d.error}`}),h&&(0,V.jsx)(`p`,{className:`text-xs text-red-500`,children:h})]}),(0,V.jsxs)(Wp,{children:[o&&(0,V.jsx)($,{variant:`outline`,size:`sm`,onClick:async()=>{if(o){u(!0),f(null);try{f(await a(n.id))}finally{u(!1)}}},disabled:l,className:`mr-auto`,children:l?`Testing…`:`Test Connection`}),(0,V.jsx)($,{variant:`outline`,size:`sm`,onClick:t,children:`Cancel`}),(0,V.jsx)($,{size:`sm`,onClick:async()=>{if(g(null),!s.name.trim()){g(`Name is required`);return}m(!0);try{if(o&&i){let e=(s.type===`postgres`?s.connectionString.trim():s.path.trim())?s.type===`postgres`?{type:`postgres`,connectionString:s.connectionString}:{type:`sqlite`,path:s.path}:void 0;await i(n.id,{name:s.name.trim(),...e!==void 0&&{connectionConfig:e},groupName:s.groupName.trim()||null,color:s.color,readonly:s.readonly?1:0})}else if(r){let e=s.type===`postgres`?{type:`postgres`,connectionString:s.connectionString}:{type:`sqlite`,path:s.path};await r({type:s.type,name:s.name.trim(),connectionConfig:e,groupName:s.groupName.trim()||void 0,color:s.color??void 0})}t()}catch(e){g(e.message)}finally{m(!1)}},disabled:p,children:p?`Saving…`:o?`Save`:`Add`})]})]})})}function Th({onExport:e,onImport:t}){let[n,r]=(0,z.useState)(!1),i=(0,z.useRef)(null),a=()=>r(!1),o=async()=>{a();try{let t=await e(),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`ppm-connections-${new Date().toISOString().slice(0,10)}.json`,i.click(),URL.revokeObjectURL(r)}catch(e){alert(`Export failed: ${e.message}`)}},s=async()=>{a();try{let t=await e();await navigator.clipboard.writeText(JSON.stringify(t,null,2)),alert(`Copied ${t.connections.length} connection(s) to clipboard`)}catch(e){alert(`Export failed: ${e.message}`)}},c=async e=>{try{let n=JSON.parse(e),r=n.connections??n;if(!Array.isArray(r)){alert(`Invalid format: expected connections array`);return}let i=await t({connections:r}),a=`Imported ${i.imported} connection(s)`;i.skipped>0&&(a+=`, ${i.skipped} skipped`),i.errors?.length>0&&(a+=`\n\nErrors:\n${i.errors.join(`
29
29
  `)}`),alert(a)}catch(e){alert(`Import failed: ${e.message}`)}};return(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(`button`,{onClick:()=>r(e=>!e),className:`flex items-center justify-center size-5 rounded hover:bg-surface-elevated transition-colors text-text-subtle hover:text-foreground`,title:`Import / Export`,children:(0,V.jsx)(qe,{className:`size-3.5`})}),n&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:a}),(0,V.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 z-50 w-44 bg-background border border-border rounded-md shadow-lg py-1 text-xs`,children:[(0,V.jsxs)(`button`,{onClick:o,className:`w-full flex items-center gap-2 px-3 py-1.5 hover:bg-surface-elevated transition-colors text-left`,children:[(0,V.jsx)(Ke,{className:`size-3`}),` Export to file`]}),(0,V.jsxs)(`button`,{onClick:s,className:`w-full flex items-center gap-2 px-3 py-1.5 hover:bg-surface-elevated transition-colors text-left`,children:[(0,V.jsx)(Ve,{className:`size-3`}),` Export to clipboard`]}),(0,V.jsx)(`div`,{className:`border-t border-border my-1`}),(0,V.jsxs)(`button`,{onClick:()=>{a(),i.current?.click()},className:`w-full flex items-center gap-2 px-3 py-1.5 hover:bg-surface-elevated transition-colors text-left`,children:[(0,V.jsx)(rn,{className:`size-3`}),` Import from file`]}),(0,V.jsxs)(`button`,{onClick:async()=>{a();try{let e=await navigator.clipboard.readText();if(!e.trim()){alert(`Clipboard is empty`);return}await c(e)}catch(e){alert(`Clipboard read failed: ${e.message}`)}},className:`w-full flex items-center gap-2 px-3 py-1.5 hover:bg-surface-elevated transition-colors text-left`,children:[(0,V.jsx)(Be,{className:`size-3`}),` Import from clipboard`]})]})]}),(0,V.jsx)(`input`,{ref:i,type:`file`,accept:`.json`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];if(!t)return;let n=new FileReader;n.onload=()=>c(n.result),n.readAsText(t),e.target.value=``}})]})}function Eh(){let[e,t]=(0,z.useState)([]),[n,r]=(0,z.useState)(!0),[i,a]=(0,z.useState)(new Map),o=(0,z.useCallback)(async()=>{try{t(await R.get(`/api/db/connections`))}catch{}finally{r(!1)}},[]);return(0,z.useEffect)(()=>{o()},[o]),{connections:e,loading:n,cachedTables:i,createConnection:(0,z.useCallback)(async e=>{let n=await R.post(`/api/db/connections`,e);return t(e=>[...e,n]),n},[]),updateConnection:(0,z.useCallback)(async(e,n)=>{let r=await R.put(`/api/db/connections/${e}`,n);t(t=>t.map(t=>t.id===e?r:t))},[]),deleteConnection:(0,z.useCallback)(async e=>{await R.del(`/api/db/connections/${e}`),t(t=>t.filter(t=>t.id!==e)),a(t=>{let n=new Map(t);return n.delete(e),n})},[]),testConnection:(0,z.useCallback)(async e=>R.post(`/api/db/connections/${e}/test`),[]),refreshTables:(0,z.useCallback)(async e=>{let t=(await R.get(`/api/db/connections/${e}/tables`)).map(t=>({connectionId:e,tableName:t.name,schemaName:t.schema,rowCount:t.rowCount,cachedAt:new Date().toISOString()}));a(n=>new Map(n).set(e,t))},[]),exportConnections:(0,z.useCallback)(async()=>R.get(`/api/db/connections/export`),[]),importConnections:(0,z.useCallback)(async e=>{let t=await R.post(`/api/db/connections/import`,e);return await o(),t},[o])}}function Dh(){let{connections:e,loading:t,cachedTables:n,createConnection:r,updateConnection:i,deleteConnection:a,testConnection:o,refreshTables:s,exportConnections:c,importConnections:l}=Eh(),u=m(e=>e.openTab),[d,f]=(0,z.useState)(!1),[p,h]=(0,z.useState)(null);return(0,V.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-semibold text-text-subtle uppercase tracking-wider`,children:`Database`}),(0,V.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,V.jsx)(Th,{onExport:c,onImport:l}),(0,V.jsx)(`button`,{onClick:()=>f(!0),className:`flex items-center justify-center size-5 rounded hover:bg-surface-elevated transition-colors text-text-subtle hover:text-foreground`,title:`Add connection`,children:(0,V.jsx)(It,{className:`size-3.5`})})]})]}),(0,V.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:t?(0,V.jsx)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:`Loading…`}):(0,V.jsx)(ch,{connections:e,cachedTables:n,onOpenTable:(e,t,n)=>{u({type:`database`,title:`${e.name} · ${t}`,projectId:null,closable:!0,metadata:{connectionId:e.id,connectionName:e.name,dbType:e.type,tableName:t,schemaName:n,connectionColor:e.color}})},onRefreshTables:s,onEdit:h,onDelete:async e=>{confirm(`Delete this connection?`)&&await a(e)}})}),(0,V.jsx)(wh,{open:d,onClose:()=>f(!1),onSave:async e=>{let t=await r(e);t&&s(t.id).catch(()=>{})},onTest:()=>Promise.resolve({ok:!1,error:`Save connection first`})}),p&&(0,V.jsx)(wh,{open:!!p,onClose:()=>h(null),connection:p,onUpdate:async(e,t)=>{await i(e,t)},onTest:e=>o(e)})]})}function Oh(e,t,n,r){if(!e)return null;try{let i=r?e:e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return n&&(i=`\\b${i}\\b`),RegExp(`(${i})`,t?`g`:`gi`)}catch{return null}}function kh({text:e,re:t}){if(!t)return(0,V.jsx)(`span`,{children:e});try{t.lastIndex=0;let n=e.split(t);return t.lastIndex=0,(0,V.jsx)(`span`,{children:n.map((e,n)=>(t.lastIndex=0,t.test(e)?(0,V.jsx)(`mark`,{className:`bg-yellow-300/40 text-foreground rounded-sm`,children:e},n):e))})}catch{return(0,V.jsx)(`span`,{children:e})}}function Ah({active:e,onClick:t,title:n,children:r}){return(0,V.jsx)(`button`,{onClick:t,title:n,className:L(`flex items-center justify-center w-6 h-6 rounded border shrink-0`,e?`border-primary text-primary bg-primary/10`:`border-border text-text-subtle hover:text-foreground hover:border-border/80`),children:r})}function jh(){let{activeProject:e}=If(),t=m(e=>e.openTab),[n,r]=(0,z.useState)(``),[i,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(!1),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(!1),[p,h]=(0,z.useState)(``),[g,_]=(0,z.useState)(``),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)([]),[w,T]=(0,z.useState)(0),[E,D]=(0,z.useState)(!1),[O,ee]=(0,z.useState)(new Set),k=(0,z.useRef)(null),A=(0,z.useRef)(null),te=(0,z.useCallback)(async(t,n,r,i,a)=>{if(f(!1),!e||!i&&t.length<2||i&&t.length<1){C([]),T(0);return}if(i)try{new RegExp(t)}catch{f(!0),C([]);return}D(!0);try{let o=new URLSearchParams({q:t,caseSensitive:String(n),wholeWord:String(r),regex:String(i)});a&&o.set(`include`,a);let s=await R.get(`${pe(e.name)}/files/search?${o}`);C(s.results),T(s.total)}catch{C([])}finally{D(!1)}},[e]);(0,z.useEffect)(()=>(A.current&&clearTimeout(A.current),A.current=setTimeout(()=>te(n,i,s,l,p),300),()=>{A.current&&clearTimeout(A.current)}),[n,i,s,l,p,te]),(0,z.useEffect)(()=>{k.current?.focus()},[]);let j=Oh(n,i,s,l);function ne(n,r){e&&t({type:`editor`,title:n.split(`/`).pop()??n,metadata:{filePath:n,projectName:e.name,lineNumber:r},projectId:e.name,closable:!0})}function M(e){ee(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}async function N(){if(!e||!n||S.length===0||v)return;y(!0),x(null);let t=0;try{for(let r of S){let a=await R.get(`${pe(e.name)}/files/read?path=${encodeURIComponent(r.file)}`),o=Oh(n,i,s,l);if(!o)continue;o.lastIndex=0;let c=a.content.match(o)??[];if(!c.length)continue;t+=c.length,o.lastIndex=0;let u=a.content.replace(o,g);await R.put(`${pe(e.name)}/files/write`,{path:r.file,content:u})}x(t),te(n,i,s,l,p)}catch{}finally{y(!1)}}return(0,V.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,V.jsxs)(`div`,{className:`p-2 border-b border-border space-y-1.5`,children:[(0,V.jsx)(`div`,{className:`relative flex items-center gap-1`,children:(0,V.jsxs)(`div`,{className:`relative flex-1`,children:[(0,V.jsx)(Wt,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3.5 text-text-subtle pointer-events-none`}),(0,V.jsx)(`input`,{ref:k,value:n,onChange:e=>{r(e.target.value),x(null)},placeholder:e?`Search files…`:`Select a project first`,disabled:!e,className:L(`w-full pl-7 pr-6 py-1 text-xs bg-input border rounded focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50`,d?`border-destructive`:`border-border`)}),n&&(0,V.jsx)(`button`,{onClick:()=>{r(``),C([]),T(0),f(!1),x(null)},className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-text-subtle hover:text-foreground`,children:(0,V.jsx)(sn,{className:`size-3`})})]})}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(Ah,{active:i,onClick:()=>o(e=>!e),title:`Match Case (Alt+C)`,children:(0,V.jsx)(Me,{className:`size-3.5`})}),(0,V.jsx)(Ah,{active:s,onClick:()=>{c(e=>!e),l&&u(!1)},title:`Match Whole Word (Alt+W)`,children:(0,V.jsx)(an,{className:`size-3.5`})}),(0,V.jsx)(Ah,{active:l,onClick:()=>{u(e=>!e),s&&c(!1)},title:`Use Regular Expression (Alt+R)`,children:(0,V.jsx)(Vt,{className:`size-3.5`})}),d&&(0,V.jsx)(`span`,{className:`text-[10px] text-destructive ml-1`,children:`Invalid regex`})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,V.jsxs)(`div`,{className:`relative flex-1`,children:[(0,V.jsx)(`input`,{value:g,onChange:e=>_(e.target.value),placeholder:`Replace…`,disabled:!e,className:`w-full pl-2 pr-6 py-1 text-xs bg-input border border-border rounded focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50`}),g&&(0,V.jsx)(`button`,{onClick:()=>_(``),className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-text-subtle hover:text-foreground`,children:(0,V.jsx)(sn,{className:`size-3`})})]}),(0,V.jsx)(`button`,{onClick:N,disabled:!n||S.length===0||v,title:`Replace All`,className:`flex items-center justify-center w-6 h-6 rounded border border-border text-text-subtle hover:text-foreground hover:border-border/80 disabled:opacity-40 shrink-0`,children:v?(0,V.jsx)(vt,{className:`size-3.5 animate-spin`}):(0,V.jsx)(Ht,{className:`size-3.5`})})]}),(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(`input`,{value:p,onChange:e=>h(e.target.value),placeholder:`Files to include (e.g. *.ts, src/**)`,disabled:!e,className:`w-full pl-2 pr-6 py-1 text-xs bg-input border border-border rounded focus:outline-none focus:ring-1 focus:ring-primary/50 disabled:opacity-50`}),p&&(0,V.jsx)(`button`,{onClick:()=>h(``),className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-text-subtle hover:text-foreground`,children:(0,V.jsx)(sn,{className:`size-3`})})]}),(0,V.jsxs)(`div`,{className:`text-[10px] text-text-subtle h-3`,children:[(E||v)&&(0,V.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(vt,{className:`size-2.5 animate-spin`}),v?`Replacing…`:`Searching…`]}),!E&&!v&&b!==null&&(0,V.jsxs)(`span`,{className:`text-green-500`,children:[b,` replacement`,b===1?``:`s`,` made`]}),!E&&!v&&b===null&&!d&&n.length>=2&&S.length===0&&(0,V.jsx)(`span`,{children:`No results`}),!E&&!v&&b===null&&w>0&&(0,V.jsxs)(`span`,{children:[w,` result`,w===1?``:`s`,` in `,S.length,` file`,S.length===1?``:`s`]})]})]}),(0,V.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:S.map(e=>{let t=O.has(e.file),n=e.file.split(`/`).pop()??e.file,r=e.file.includes(`/`)?e.file.slice(0,e.file.lastIndexOf(`/`)):``;return(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`button`,{onClick:()=>M(e.file),className:`w-full flex items-center gap-1 px-2 py-1 hover:bg-muted/50 text-left`,children:[t?(0,V.jsx)(a,{className:`size-3 shrink-0 text-text-subtle`}):(0,V.jsx)(Pe,{className:`size-3 shrink-0 text-text-subtle`}),(0,V.jsx)($e,{className:`size-3 shrink-0 text-text-subtle`}),(0,V.jsx)(`span`,{className:`text-xs font-medium text-foreground truncate`,children:n}),(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle truncate flex-1 min-w-0 ml-1`,children:r}),(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0 ml-1 bg-muted px-1 rounded`,children:e.matches.length})]}),!t&&e.matches.map(t=>(0,V.jsxs)(`button`,{onClick:()=>ne(e.file,t.lineNum),className:`w-full flex items-start gap-2 pl-7 pr-2 py-0.5 hover:bg-primary/10 text-left`,children:[(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle shrink-0 w-7 text-right pt-px`,children:t.lineNum}),(0,V.jsx)(`span`,{className:`text-xs text-text-secondary truncate font-mono leading-4`,children:(0,V.jsx)(kh,{text:t.content.trimStart(),re:j})})]},`${e.file}-${t.lineNum}`))]},e.file)})})]})}function Mh(e,t){window.dispatchEvent(new CustomEvent(`ext:tree:expand`,{detail:{viewId:e,itemId:t}}))}function Nh(e,t){window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:t}}))}var Ph={refresh:Bt,edit:Mt,trash:$t,plus:It,search:Wt};function Fh({viewId:e,className:t}){let n=Dp(t=>t.treeViews[e])??[],r=Dp(e=>e.contributions),i=(0,z.useMemo)(()=>{if(!r)return{name:e,headerActions:[]};let t=e,n=r.views;if(n)for(let r of Object.values(n)){let n=r.find(t=>t.id===e);if(n){t=n.name;break}}let i=[],a=r.menus?.[`view/title`];if(a)for(let t of a){if(t.when){let n=t.when.match(/view\s*==\s*(\S+)/);if(n&&n[1]!==e)continue}let n=r.commands?.find(e=>e.command===t.command);n&&i.push({command:n.command,title:n.title,icon:n.icon})}return{name:t,headerActions:i}},[r,e]);return(0,V.jsxs)(`div`,{className:L(`flex flex-col h-full`,t),children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-semibold text-text-subtle uppercase tracking-wider`,children:i.name}),(0,V.jsx)(`div`,{className:`flex items-center gap-0.5`,children:i.headerActions.map(e=>{let t=Ph[e.icon??Ih(e.command)]??Bt;return(0,V.jsx)(`button`,{onClick:()=>Nh(e.command),className:`flex items-center justify-center size-5 rounded hover:bg-surface-elevated transition-colors text-text-subtle hover:text-foreground`,title:e.title,children:(0,V.jsx)(t,{className:`size-3.5`})},e.command)})})]}),(0,V.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 py-1`,role:`tree`,"aria-label":e,children:n.length===0?(0,V.jsx)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:`No items`}):n.map(t=>(0,V.jsx)(Lh,{item:t,depth:0,viewId:e},t.id))})]})}function Ih(e){return e.includes(`refresh`)?`refresh`:e.includes(`add`)||e.includes(`create`)||e.includes(`new`)?`plus`:e.includes(`delete`)||e.includes(`remove`)?`trash`:e.includes(`edit`)||e.includes(`update`)?`edit`:e.includes(`search`)||e.includes(`find`)?`search`:`refresh`}function Lh({item:e,depth:t,viewId:n}){let[r,i]=(0,z.useState)(!1),o=e.collapsibleState!==`none`,s=(0,z.useRef)(!1);e.children&&e.children.length>0&&!s.current&&(s.current=!0,r||i(!0));let c=(0,z.useCallback)(()=>{if(!o)return;let t=!r;i(t),t&&(!e.children||e.children.length===0)&&Mh(n,e.id)},[o,r,e.id,e.children,n]),l=(0,z.useCallback)(()=>{c(),e.command&&Nh(e.command,e.commandArgs)},[c,e.command,e.commandArgs]),u=8+t*16;return(0,V.jsxs)(`div`,{role:`treeitem`,"aria-expanded":o?r:void 0,children:[(0,V.jsxs)(`div`,{className:L(`group/node flex items-center gap-1 py-1 hover:bg-surface-elevated transition-colors`),style:{paddingLeft:u,paddingRight:8},children:[(0,V.jsx)(`button`,{onClick:c,className:`shrink-0 text-text-subtle hover:text-foreground transition-colors`,children:o?r?(0,V.jsx)(Pe,{className:`size-3`}):(0,V.jsx)(a,{className:`size-3`}):(0,V.jsx)(`span`,{className:`size-3`})}),e.color&&(0,V.jsx)(`span`,{className:`shrink-0 size-2 rounded-full border border-border`,style:{backgroundColor:e.color}}),(0,V.jsx)(`button`,{className:`flex-1 text-left text-xs truncate hover:text-primary transition-colors`,onClick:l,children:e.label}),e.description&&(0,V.jsx)(`span`,{className:`shrink-0 ml-1 text-text-subtle text-[10px]`,children:e.description}),e.badge&&(0,V.jsx)(`span`,{className:`shrink-0 text-[9px] text-text-subtle uppercase px-1 rounded bg-surface-elevated`,children:e.badge}),e.actions&&e.actions.length>0&&(0,V.jsx)(`div`,{className:`hidden group-hover/node:flex items-center gap-0.5 shrink-0`,children:e.actions.map(e=>(0,V.jsx)(Rh,{action:e},e.command))})]}),o&&r&&e.children&&(0,V.jsx)(`div`,{role:`group`,children:e.children.map(e=>(0,V.jsx)(Lh,{item:e,depth:t+1,viewId:n},e.id))})]})}function Rh({action:e}){let[t,n]=(0,z.useState)(!1),r=Ph[e.icon]??Bt,i=e.icon===`trash`;return(0,V.jsx)(`button`,{onClick:(0,z.useCallback)(t=>{t.stopPropagation(),e.icon===`refresh`&&(n(!0),setTimeout(()=>n(!1),1e3)),Nh(e.command,e.commandArgs)},[e]),className:L(`p-0.5 text-text-subtle transition-colors`,i?`hover:text-red-500`:`hover:text-foreground`),title:e.tooltip,children:(0,V.jsx)(r,{className:L(`size-3`,t&&`animate-spin`)})})}var zh=[{id:`explorer`,label:`Explorer`,icon:nt},{id:`search`,label:`Search`,icon:Wt},{id:`git`,label:`Git`,icon:ot},{id:`database`,label:`Database`,icon:Ge},{id:`settings`,label:`Settings`,icon:Jt}];function Bh({onResize:e}){let t=(0,z.useRef)(!1);return(0,V.jsx)(`div`,{className:`absolute right-0 top-0 bottom-0 w-1 cursor-col-resize hover:bg-primary/30 active:bg-primary/50 transition-colors z-10`,onPointerDown:(0,z.useCallback)(e=>{e.preventDefault(),t.current=!0,e.currentTarget.setPointerCapture(e.pointerId),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},[]),onPointerMove:(0,z.useCallback)(n=>{t.current&&e(n.clientX-48)},[e]),onPointerUp:(0,z.useCallback)(e=>{t.current=!1,e.currentTarget.releasePointerCapture(e.pointerId),document.body.style.cursor=``,document.body.style.userSelect=``},[])})}function Vh(){let{activeProject:e}=If(),t=B(e=>e.sidebarCollapsed),n=B(e=>e.sidebarWidth),r=B(e=>e.toggleSidebar),i=B(e=>e.setSidebarWidth),a=B(e=>e.sidebarActiveTab),o=B(e=>e.setSidebarActiveTab),s=Dp(e=>e.contributions),c=(0,z.useMemo)(()=>{let e=[...zh];if(s?.views){let t=s.views.sidebar??s.views.explorer??[];for(let n of t)e.push({id:`ext:${n.id}`,label:n.name,icon:zt})}return e},[s]);return t?(0,V.jsx)(`aside`,{className:`hidden md:flex flex-col w-10 min-w-10 bg-background border-r border-border`,children:(0,V.jsx)(`button`,{onClick:r,title:`Expand sidebar (⌘B)`,className:`flex items-center justify-center h-[41px] border-b border-border text-text-secondary hover:text-foreground transition-colors`,children:(0,V.jsx)(jt,{className:`size-4`})})}):(0,V.jsxs)(`aside`,{className:`hidden md:flex flex-col bg-background border-r border-border overflow-hidden relative`,style:{width:n,minWidth:200,maxWidth:600},children:[(0,V.jsxs)(`div`,{className:`flex items-center h-[41px] border-b border-border shrink-0`,children:[c.map(e=>{let t=e.icon;return(0,V.jsx)(`button`,{onClick:()=>o(e.id),className:L(`flex-1 flex items-center justify-center gap-1.5 h-full text-xs transition-colors border-b-2 -mb-px`,a===e.id?`border-primary text-primary font-medium`:`border-transparent text-text-secondary hover:text-foreground`),children:(0,V.jsx)(t,{className:`size-3.5`,title:e.label})},e.id)}),(0,V.jsx)(`button`,{onClick:r,title:`Collapse sidebar (⌘B)`,className:`flex items-center justify-center w-8 h-full text-text-subtle hover:text-text-secondary transition-colors shrink-0`,children:(0,V.jsx)(At,{className:`size-3.5`})})]}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(e?(0,V.jsx)(Qp,{}):(0,V.jsx)(`div`,{className:`flex items-center justify-center h-24 p-4`,children:(0,V.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Select a project to browse files`})})),a===`git`&&(0,V.jsx)(lm,{metadata:{projectName:e?.name}}),a===`search`&&(0,V.jsx)(jh,{}),a===`database`&&(0,V.jsx)(Dh,{}),a===`settings`&&(0,V.jsx)(oh,{}),typeof a==`string`&&a.startsWith(`ext:`)&&(0,V.jsx)(Fh,{viewId:a.slice(4),className:`h-full`})]}),(0,V.jsx)(Bh,{onResize:i})]})}var Hh=Object.defineProperty,Uh=Object.getOwnPropertySymbols,Wh=Object.prototype.hasOwnProperty,Gh=Object.prototype.propertyIsEnumerable,Kh=(e,t,n)=>t in e?Hh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qh=(e,t)=>{for(var n in t||={})Wh.call(t,n)&&Kh(e,n,t[n]);if(Uh)for(var n of Uh(t))Gh.call(t,n)&&Kh(e,n,t[n]);return e},Jh=(e,t)=>{var n={};for(var r in e)Wh.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Uh)for(var r of Uh(e))t.indexOf(r)<0&&Gh.call(e,r)&&(n[r]=e[r]);return n},Yh;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+(t?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(Yh||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(Yh||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(Yh||={});var Xh=Yh,Zh={L:Xh.QrCode.Ecc.LOW,M:Xh.QrCode.Ecc.MEDIUM,Q:Xh.QrCode.Ecc.QUARTILE,H:Xh.QrCode.Ecc.HIGH},Qh=128,$h=`L`,eg=`#FFFFFF`,tg=`#000000`,ng=!1,rg=1,ig=4,ag=0,og=.1;function sg(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function cg(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function lg(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*og),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function ug(e,t){return t==null?e?ig:ag:Math.max(Math.floor(t),0)}function dg({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=z.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...Xh.QrSegment.makeSegments(t)),e),[]);return Xh.QrCode.encodeSegments(r,Zh[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=z.useMemo(()=>{let e=c.getModules(),t=ug(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:lg(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var fg=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),pg=z.forwardRef(function(e,t){let n=e,{value:r,size:i=Qh,level:a=$h,bgColor:o=eg,fgColor:s=tg,includeMargin:c=ng,minVersion:l=rg,boostLevel:u,marginSize:d,imageSettings:f}=n,p=Jh(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=Jh(p,[`style`]),g=f?.src,_=z.useRef(null),v=z.useRef(null),y=z.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=z.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=dg({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});z.useEffect(()=>{if(_.current!=null){let e=_.current,t=e.getContext(`2d`);if(!t)return;let n=C,r=v.current,a=T!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&T.excavation!=null&&(n=cg(C,T.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/w*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,w,w),t.fillStyle=s,fg?t.fill(new Path2D(sg(n,S))):C.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+S,n+S,1,1)})}),T&&(t.globalAlpha=T.opacity),a&&t.drawImage(r,T.x+S,T.y+S,T.w,T.h)}}),z.useEffect(()=>{x(!1)},[g]);let E=qh({height:i,width:i},m),D=null;return g!=null&&(D=z.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),z.createElement(z.Fragment,null,z.createElement(`canvas`,qh({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});pg.displayName=`QRCodeCanvas`;var mg=z.forwardRef(function(e,t){let n=e,{value:r,size:i=Qh,level:a=$h,bgColor:o=eg,fgColor:s=tg,includeMargin:c=ng,minVersion:l=rg,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=Jh(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=dg({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:f,imageSettings:p,size:i}),y=g,b=null;p!=null&&v!=null&&(v.excavation!=null&&(y=cg(g,v.excavation)),b=z.createElement(`image`,{href:p.src,height:v.h,width:v.w,x:v.x+h,y:v.y+h,preserveAspectRatio:`none`,opacity:v.opacity,crossOrigin:v.crossOrigin}));let x=sg(y,h);return z.createElement(`svg`,qh({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&z.createElement(`title`,null,d),z.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),z.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});mg.displayName=`QRCodeSVG`;function hg({onClose:e}){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(null),[a,o]=(0,z.useState)(!0),[s,c]=(0,z.useState)(!1),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(null),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(null),[b,x]=(0,z.useState)(!1);(0,z.useEffect)(()=>{(async()=>{try{let[e,t]=await Promise.all([R.get(`/api/cloud/status`),R.get(`/api/tunnel`)]);n(e),i(t)}catch{}o(!1)})()},[]);let S=(0,z.useCallback)(e=>{navigator.clipboard.writeText(e),_(e),setTimeout(()=>_(null),2e3)},[]),C=(0,z.useCallback)(async()=>{c(!0),h(null);try{i({active:!0,url:(await R.post(`/api/tunnel/start`,{})).url,localUrl:r?.localUrl??null}),n(await R.get(`/api/cloud/status`))}catch(e){h(e instanceof Error?e.message:`Failed to start tunnel`)}finally{c(!1)}},[r]),w=(0,z.useCallback)(async()=>{h(null);try{let{cloud_url:e}=await R.get(`/api/cloud/login-url`),t=await fetch(`${e}/auth/device-code`,{method:`POST`,headers:{"Content-Type":`application/json`}});if(!t.ok)throw Error(`Failed to get device code`);let r=await t.json();y({userCode:r.user_code,verifyUrl:r.verification_uri}),x(!0);let i=(r.interval||5)*1e3,a=Date.now()+r.expires_in*1e3,o=setInterval(async()=>{if(Date.now()>a){clearInterval(o),x(!1),y(null),h(`Login expired. Try again.`);return}try{let t=await fetch(`${e}/auth/device-code/poll`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({device_code:r.device_code})});if(!t.ok)return;let i=await t.json();i.status===`approved`&&i.access_token&&i.email&&(clearInterval(o),x(!1),y(null),await R.post(`/api/cloud/login`,{access_token:i.access_token,email:i.email,cloud_url:e}),n(await R.get(`/api/cloud/status`)))}catch{}},i)}catch(e){h(e instanceof Error?e.message:`Failed to start login`),x(!1),y(null)}},[]),T=(0,z.useCallback)(async()=>{d(!0),h(null);try{r?.active||i({active:!0,url:(await R.post(`/api/tunnel/start`,{})).url,localUrl:r?.localUrl??null}),await R.post(`/api/cloud/link`,{}),n(await R.get(`/api/cloud/status`))}catch(e){h(e instanceof Error?e.message:`Failed to link device`)}finally{d(!1)}},[r]),E=(0,z.useCallback)(async()=>{if(confirm(`Unlink this device from PPM Cloud? It will no longer appear on your cloud dashboard.`)){p(!0);try{await R.post(`/api/cloud/unlink`,{}),n(await R.get(`/api/cloud/status`))}catch{}p(!1)}},[]),D=(0,z.useCallback)(async()=>{let e=t?.linked?`Sign out from PPM Cloud? This will also unlink your device.`:`Sign out from PPM Cloud?`;if(confirm(e)){if(t?.linked)try{await R.post(`/api/cloud/unlink`,{})}catch{}await R.post(`/api/cloud/logout`,{}),n(e=>e?{...e,logged_in:!1,email:null,linked:!1,device_name:null,device_id:null}:null)}},[t?.linked]),O=r?.url||t?.tunnel_url;return(0,V.jsxs)(`div`,{className:`w-72 bg-background border border-border rounded-lg shadow-lg p-3 space-y-3`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,V.jsx)(Ue,{className:`size-4 text-primary`}),(0,V.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:`PPM Cloud`})]}),(0,V.jsx)(`button`,{onClick:e,className:`text-text-subtle hover:text-foreground`,children:(0,V.jsx)(sn,{className:`size-3.5`})})]}),a&&(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground text-xs py-2`,children:[(0,V.jsx)(vt,{className:`size-4 animate-spin`}),(0,V.jsx)(`span`,{children:`Loading...`})]}),!a&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`space-y-1.5`,children:t?.logged_in?(0,V.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,V.jsx)(`div`,{className:`size-2 rounded-full bg-green-500 shrink-0`}),(0,V.jsx)(`span`,{className:`text-xs text-foreground truncate`,children:t.email})]}),(0,V.jsx)(`button`,{onClick:D,className:`text-text-subtle hover:text-foreground p-1 rounded hover:bg-muted transition-colors shrink-0`,title:`Sign out`,children:(0,V.jsx)(bt,{className:`size-3`})})]}):v?(0,V.jsxs)(`div`,{className:`space-y-2 text-center`,children:[(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Open the link below and enter the code:`}),(0,V.jsx)(`div`,{className:`font-mono text-2xl font-bold tracking-[0.3em] text-primary`,children:v.userCode}),(0,V.jsx)(`a`,{href:v.verifyUrl,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-primary hover:underline`,children:v.verifyUrl}),b&&(0,V.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 text-xs text-muted-foreground`,children:[(0,V.jsx)(vt,{className:`size-3 animate-spin`}),(0,V.jsx)(`span`,{children:`Waiting for verification...`})]})]}):(0,V.jsxs)(`button`,{onClick:w,className:`w-full flex items-center justify-center gap-1.5 px-3 py-2 text-xs font-medium rounded-md border border-border hover:bg-muted transition-colors`,children:[(0,V.jsx)(Ue,{className:`size-3.5`}),`Sign in to PPM Cloud`]})}),t?.logged_in&&(0,V.jsx)(`div`,{className:`space-y-1.5`,children:t.linked?(0,V.jsxs)(`div`,{className:`flex items-center justify-between text-xs`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,V.jsx)(gt,{className:`size-3 text-primary shrink-0`}),(0,V.jsx)(`span`,{className:`text-foreground truncate`,children:t.device_name})]}),(0,V.jsx)(`button`,{onClick:E,disabled:f,className:`text-text-subtle hover:text-destructive p-1 rounded hover:bg-muted transition-colors shrink-0`,title:`Unlink device`,children:f?(0,V.jsx)(vt,{className:`size-3 animate-spin`}):(0,V.jsx)(nn,{className:`size-3`})})]}):(0,V.jsx)(`button`,{onClick:T,disabled:u,className:`w-full flex items-center justify-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors disabled:opacity-50`,children:u?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(vt,{className:`size-3.5 animate-spin`}),` Linking...`]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(gt,{className:`size-3.5`}),` Link this machine`]})})}),(0,V.jsx)(`div`,{className:`border-t border-border`}),r?.localUrl&&(0,V.jsxs)(`div`,{className:`space-y-1`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Local Network`}),(0,V.jsx)(gg,{url:r.localUrl,copied:g,onCopy:S})]}),!O&&!s&&(0,V.jsxs)(`button`,{onClick:C,className:`w-full flex items-center justify-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors`,children:[(0,V.jsx)(Yt,{className:`size-3.5`}),`Start Sharing`]}),s&&(0,V.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-2`,children:[(0,V.jsx)(vt,{className:`size-5 animate-spin text-primary`}),(0,V.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Starting tunnel...`})]}),O&&(0,V.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,V.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Public URL`}),(0,V.jsx)(`div`,{className:`flex justify-center`,children:(0,V.jsx)(`div`,{className:`p-3 rounded-lg`,style:{backgroundColor:`#ffffff`,colorScheme:`light`},children:(0,V.jsx)(mg,{value:O,size:180,bgColor:`#ffffff`,fgColor:`#000000`,level:`L`,style:{display:`block`}})})}),(0,V.jsx)(gg,{url:O,copied:g,onCopy:S})]}),t?.logged_in&&t.linked&&(0,V.jsxs)(`a`,{href:t.cloud_url+`/dashboard`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center justify-center gap-1.5 w-full px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground rounded-md border border-border hover:bg-muted transition-colors`,children:[(0,V.jsx)(l,{className:`size-3`}),`Open Cloud Dashboard`]}),m&&(0,V.jsx)(`p`,{className:`text-xs text-destructive`,children:m})]})]})}function gg({url:e,copied:t,onCopy:n}){return(0,V.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(`input`,{readOnly:!0,value:e,className:`flex-1 text-xs font-mono text-foreground bg-muted px-2 py-1.5 rounded border border-border truncate`,onClick:e=>e.target.select()}),(0,V.jsx)(`button`,{onClick:()=>n(e),className:`flex items-center justify-center size-7 rounded border border-border text-muted-foreground bg-muted hover:bg-accent hover:text-foreground transition-colors shrink-0`,title:`Copy URL`,children:t===e?(0,V.jsx)(Ne,{className:`size-3.5 text-primary`}):(0,V.jsx)(We,{className:`size-3.5`})})]})}var _g=`hienlh/ppm`;async function vg(e,t){let n=`(could not fetch)`;try{let e=await(await fetch(`/api/logs/recent`)).json();e.ok&&(n=e.data.logs||`(empty)`)}catch{}let r=``;if(t?.sessionId&&t?.projectName)try{let e=await R.get(`${pe(t.projectName)}/chat/sessions/${t.sessionId}/logs?tail=100`);e.logs&&(r=e.logs)}catch{}return[`## Environment`,`- PPM: v${e??`unknown`}`,`- Browser: ${navigator.userAgent}`,``,`## Description`,`<!-- Describe the bug -->`,``,`## Steps to Reproduce`,`1. `,``,`## Expected Behavior`,``,...r?[`## Chat Session Logs (${t?.sessionId?.slice(0,8)})`,"```",r,"```",``]:[],`## Server Logs (last 30 lines)`,"```",n,"```"].join(`
30
- `)}function yg(e){let t=`https://github.com/${_g}/issues/new?title=bug%3A%20&body=${encodeURIComponent(e)}`;window.open(t,`_blank`)}async function bg(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function xg(e,t){vg(e,t).then(e=>{window.dispatchEvent(new CustomEvent(`open-bug-report`,{detail:e}))})}var Sg=[`linear-gradient(135deg, #667eea, #764ba2)`,`linear-gradient(135deg, #f5576c, #f093fb)`,`linear-gradient(135deg, #4facfe, #00c6ff)`,`linear-gradient(135deg, #43e97b, #38f9d7)`,`linear-gradient(135deg, #fa709a, #fee140)`,`linear-gradient(135deg, #a18cd1, #6a3de8)`,`linear-gradient(135deg, #fd7043, #ff8a65)`,`linear-gradient(135deg, #26c6da, #0097a7)`,`linear-gradient(135deg, #ab47bc, #7b1fa2)`,`linear-gradient(135deg, #ef5350, #b71c1c)`,`linear-gradient(135deg, #1976d2, #42a5f5)`,`linear-gradient(135deg, #2e7d32, #66bb6a)`];function Cg(e,t){return e??Sg[t%Sg.length]}function wg(e,t){let n=e.split(/[-_.\s]+/).filter(Boolean),r=(n[0]?.[0]??e[0]??`?`).toUpperCase(),i=n.length>1?r+(n[1][0]??``).toUpperCase():r,a=t.filter(t=>t!==e);if(!a.map(e=>(e.split(/[-_.\s]+/).filter(Boolean)[0]?.[0]??e[0]??``).toUpperCase()).includes(r))return r;if(!a.map(e=>{let t=e.split(/[-_.\s]+/).filter(Boolean),n=(t[0]?.[0]??e[0]??``).toUpperCase(),r=t.length>1?(t[1][0]??``).toUpperCase():n;return t.length>1?n+r:n}).includes(i))return i;let o=t.indexOf(e);return String(o>=0?o+1:`?`)}function Tg({onSuccess:e,onCancel:t,footerClassName:n}){let{addProject:r}=If(),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(!1),[g,_]=(0,z.useState)(``),v=(0,z.useRef)(null),y=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(v.current&&clearTimeout(v.current),!i.trim()){l([]),d(!1);return}v.current=setTimeout(async()=>{p(!0);try{l(await R.get(`/api/projects/suggest-dirs?q=${encodeURIComponent(i)}`)??[]),d(!0)}catch{l([])}finally{p(!1)}},250)},[i]),(0,z.useEffect)(()=>{function e(e){y.current&&!y.current.contains(e.target)&&d(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);function b(e){a(e.path),o||s(e.name),d(!1)}async function x(t){if(t?.preventDefault(),!i.trim()){_(`Path is required`);return}_(``),h(!0);try{await r(i.trim(),o.trim()||void 0),e()}catch(e){_(e instanceof Error?e.message:`Failed to add project`)}finally{h(!1)}}return(0,V.jsxs)(`form`,{onSubmit:x,className:`flex flex-col gap-3`,children:[(0,V.jsxs)(`div`,{ref:y,className:`relative`,children:[(0,V.jsx)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:`Project path`}),(0,V.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,V.jsxs)(`div`,{className:`relative flex items-center flex-1`,children:[(0,V.jsx)(nt,{className:`absolute left-2.5 size-3.5 text-text-subtle pointer-events-none`}),(0,V.jsx)(`input`,{type:`text`,value:i,onChange:e=>{a(e.target.value),_(``)},onFocus:()=>c.length>0&&d(!0),placeholder:`/path/to/project`,className:`w-full pl-8 pr-3 py-2 rounded-md border border-border bg-background text-sm focus:outline-none focus:ring-1 focus:ring-primary`,autoFocus:!0,autoComplete:`off`}),f&&(0,V.jsx)(vt,{className:`absolute right-2.5 size-3.5 text-text-subtle animate-spin`})]}),(0,V.jsx)(xh,{mode:`folder`,onSelect:e=>{a(e),o||s(e.split(`/`).pop()??``),_(``)}})]}),u&&c.length>0&&(0,V.jsx)(`div`,{className:`absolute top-full left-0 right-0 mt-1 z-10 bg-popover border border-border rounded-md shadow-md max-h-48 overflow-y-auto`,children:c.map(e=>(0,V.jsxs)(`button`,{type:`button`,onMouseDown:()=>b(e),className:`w-full flex flex-col items-start px-3 py-2 text-left hover:bg-accent/50 transition-colors`,children:[(0,V.jsx)(`span`,{className:`text-sm font-medium truncate w-full`,children:e.name}),(0,V.jsx)(`span`,{className:`text-xs text-text-subtle truncate w-full`,children:e.path})]},e.path))})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:[`Display name `,(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`(optional)`})]}),(0,V.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),placeholder:`my-project`,className:`w-full px-3 py-2 rounded-md border border-border bg-background text-sm focus:outline-none focus:ring-1 focus:ring-primary`})]}),g&&(0,V.jsx)(`p`,{className:`text-xs text-destructive`,children:g}),(0,V.jsxs)(`div`,{className:L(`flex justify-end gap-2 pt-1`,n),children:[(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{type:`submit`,disabled:m||!i.trim(),className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50`,children:m?`Adding…`:`Add Project`})]})]})}function Eg({name:e,color:t,active:n,allNames:r}){let i=wg(e,r),a=rp((0,z.useMemo)(()=>ap(e),[e]));return(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(`div`,{className:L(`size-10 rounded-full flex items-center justify-center text-xs font-bold text-white select-none shrink-0`,n&&`ring-2 ring-primary ring-offset-2 ring-offset-background`),style:{background:t},children:i}),a&&(0,V.jsx)(`div`,{className:L(`absolute -top-0.5 -right-0.5 size-2.5 rounded-full border-2 border-background`,np(a))})]})}function Dg({current:e,onChange:t}){return(0,V.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Sg.map(n=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:L(`size-8 rounded-full border-2 transition-all`,e===n?`border-primary scale-110`:`border-transparent hover:scale-105`),style:{background:n}},n))})}function Og(){let{projects:e,activeProject:t,setActiveProject:n,setProjectColor:r,reorderProjects:i,renameProject:a,deleteProject:o,customOrder:s}=If();m(e=>e.openTab);let c=B(e=>e.version),l=(0,z.useCallback)(()=>xg(c),[c]),[u,d]=(0,z.useState)(null),[f,p]=(0,z.useState)(null),h=Ff(e,s),g=h.map(e=>e.name),[_,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)(``),[x,S]=(0,z.useState)(``),[C,w]=(0,z.useState)(!1),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)(!1),[ee,k]=(0,z.useState)(!1),[A,te]=(0,z.useState)(``),[j,ne]=(0,z.useState)(``),[M,N]=(0,z.useState)(!1),re=(0,z.useCallback)(e=>{b(e),S(e),v(!0)},[]),ie=(0,z.useCallback)(e=>{E(e),w(!0)},[]),ae=(0,z.useCallback)((e,t)=>{te(e),ne(t),k(!0)},[]);async function oe(){if(!x.trim()||x===y){v(!1);return}try{await a(y,x.trim())}catch{}v(!1)}async function P(){try{await o(T)}catch{}w(!1)}async function F(){N(!0);try{await r(A,j),k(!1)}catch(e){console.error(`Failed to save color:`,e)}finally{N(!1)}}function se(){O(!0)}let[ce,le]=(0,z.useState)(!1),I=(0,z.useRef)(null),[ue,de]=(0,z.useState)(null);(0,z.useEffect)(()=>{if(!ce||!I.current){de(null);return}let e=I.current.getBoundingClientRect();de({left:e.right+6,bottom:window.innerHeight-e.bottom})},[ce]);function fe(){let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=B.getState();e&&t(),n(`settings`)}return(0,V.jsxs)(`aside`,{className:`hidden md:flex flex-col w-[52px] min-w-[52px] bg-background border-r border-border overflow-hidden`,children:[(0,V.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center justify-center h-[41px] border-b border-border gap-0.5`,children:[(0,V.jsx)(`span`,{className:`text-[11px] font-bold text-primary leading-none`,children:`PPM`}),c&&(0,V.jsxs)(`span`,{className:`text-[8px] text-text-subtle leading-none`,children:[`v`,c]})]}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-2 flex flex-col items-center gap-2 min-h-0`,children:[h.map((e,r)=>{let a=Cg(e.color,r),o=t?.name===e.name;return(0,V.jsxs)(jp,{children:[(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(Mp,{asChild:!0,children:(0,V.jsx)(`button`,{draggable:!0,onDragStart:()=>d(r),onDragOver:e=>{e.preventDefault(),p(r)},onDragLeave:()=>p(null),onDragEnd:()=>{d(null),p(null)},onDrop:()=>{if(u!=null&&u!==r){let e=h.map(e=>e.name),[t]=e.splice(u,1);e.splice(r,0,t),i(e)}d(null),p(null)},onClick:()=>n(e),className:`p-1 rounded-lg hover:bg-surface-elevated transition-all ${u===r?`opacity-40 scale-90`:``} ${f===r&&u!==r?`ring-2 ring-accent`:``}`,children:(0,V.jsx)(Eg,{name:e.name,color:a,active:o,allNames:g})})})}),(0,V.jsxs)(Vu,{side:`right`,className:`max-w-[200px]`,children:[(0,V.jsx)(`p`,{className:`font-medium`,children:e.name}),(0,V.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]})]}),(0,V.jsxs)(Np,{children:[(0,V.jsxs)(Pp,{onClick:()=>re(e.name),children:[(0,V.jsx)(Mt,{className:`size-3.5 mr-2`}),` Rename`]}),(0,V.jsxs)(Pp,{onClick:()=>ae(e.name,a),children:[(0,V.jsx)(kt,{className:`size-3.5 mr-2`}),` Change Color`]}),(0,V.jsx)(Fp,{}),(0,V.jsxs)(Pp,{className:`text-destructive focus:text-destructive`,onClick:()=>ie(e.name),children:[(0,V.jsx)($t,{className:`size-3.5 mr-2`}),` Delete`]})]})]},e.name)}),(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{onClick:se,className:`size-10 rounded-full border-2 border-dashed border-border flex items-center justify-center text-text-subtle hover:border-primary hover:text-primary transition-colors`,children:(0,V.jsx)(It,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Add Project`})]})]}),(0,V.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center gap-1 py-2 border-t border-border`,children:[(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{ref:I,onClick:()=>le(!ce),className:L(`flex items-center justify-center size-8 rounded-md transition-colors`,ce?`text-primary bg-primary/10`:`text-text-subtle hover:text-foreground hover:bg-surface-elevated`),children:(0,V.jsx)(Ue,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Cloud & Share`})]}),ce&&ue&&(0,dn.createPortal)((0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:()=>le(!1)}),(0,V.jsx)(`div`,{className:`fixed z-50`,style:{left:ue.left,bottom:ue.bottom},children:(0,V.jsx)(hg,{onClose:()=>le(!1)})})]}),document.body),(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{onClick:l,className:`flex items-center justify-center size-8 rounded-md text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(je,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Report Bug`})]}),(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{onClick:fe,className:`flex items-center justify-center size-8 rounded-md text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(Jt,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Settings`})]})]}),(0,V.jsx)(zp,{open:D,onOpenChange:O,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Add Project`})}),(0,V.jsx)(Tg,{onSuccess:()=>O(!1),onCancel:()=>O(!1)})]})}),(0,V.jsx)(zp,{open:_,onOpenChange:v,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Rename Project`})}),(0,V.jsx)(`input`,{type:`text`,value:x,onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&oe()},className:`w-full px-3 py-2 rounded-md border border-border bg-background text-sm focus:outline-none focus:ring-1 focus:ring-primary`,autoFocus:!0}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)(`button`,{onClick:()=>v(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:oe,className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors`,children:`Rename`})]})]})}),(0,V.jsx)(zp,{open:C,onOpenChange:w,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Delete Project`})}),(0,V.jsxs)(`p`,{className:`text-sm text-text-secondary`,children:[`Remove `,(0,V.jsx)(`strong`,{className:`text-foreground`,children:T}),` from PPM? The files on disk won't be deleted.`]}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)(`button`,{onClick:()=>w(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:P,className:`px-3 py-1.5 text-sm bg-destructive text-white rounded-md hover:bg-destructive/90 transition-colors`,children:`Delete`})]})]})}),(0,V.jsx)(zp,{open:ee,onOpenChange:k,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Change Color`})}),(0,V.jsx)(Dg,{current:j,onChange:ne}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)(`button`,{onClick:()=>k(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:F,disabled:M,className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50`,children:M?`Saving…`:`Save`})]})]})})]})}var kg=[{type:`terminal`,label:`Terminal`},{type:`chat`,label:`AI Chat`},{type:`git-graph`,label:`Git Graph`},{type:`settings`,label:`Settings`}],Ag=Object.fromEntries(kg.map(e=>[e.type,e.label])),jg={terminal:Qt,chat:St,editor:Ze,database:Ge,sqlite:Ge,postgres:Ge,"git-graph":ot,"git-diff":Qe,settings:Jt,browser:ct,"extension-webview":zt};function Mg({onMenuPress:e,onProjectsPress:t}){let n=u(e=>e.focusedPanelId),r=u(e=>e.panels[e.focusedPanelId]);u(e=>Object.keys(e.panels).length);let i=u(e=>e.grid),s=r?.tabs??[],c=r?.activeTabId??null,l=(0,z.useRef)(new Map),d=(0,z.useRef)(null),f=(0,z.useRef)(s.length),p=rp(e=>e.notifications),{canScrollLeft:m,canScrollRight:h,scrollLeft:g,scrollRight:_}=op(d),v=cp(d.current,l.current,s,p),[y,b]=(0,z.useState)(null),[x,S]=(0,z.useState)(!1),C=(0,z.useRef)(null);(0,z.useEffect)(()=>{s.length>f.current&&c&&l.current.get(c)?.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`}),f.current=s.length},[s.length,c]);let w=(0,z.useCallback)(e=>{C.current=setTimeout(()=>b(e),400)},[]),T=(0,z.useCallback)(()=>{C.current&&=(clearTimeout(C.current),null)},[]),E=o(i,n)?i.length<3:!1,D=Object.keys(u.getState().panels).filter(e=>e!==n);function O(e){let t=s.findIndex(t=>t.id===e);t>0&&u.getState().reorderTab(e,n,t-1)}function ee(e){let t=s.findIndex(t=>t.id===e);t<s.length-1&&u.getState().reorderTab(e,n,t+1)}function k(e){u.getState().splitPanel(`down`,e,n)}function A(e,t){u.getState().moveTab(e,n,t)}let te=y?s.find(e=>e.id===y):null,j=y?s.findIndex(e=>e.id===y):-1,{activeProject:ne}=If.getState();function M(e){let t=e===`git-graph`||e===`git-diff`||e===`terminal`||e===`chat`?{projectName:ne?.name}:void 0;u.getState().openTab({type:e,title:Ag[e]??e,metadata:t,projectId:ne?.name??null,closable:!0},n),S(!1)}let{activeProject:N,projects:re,customOrder:ie}=If(),ae=Ff(re,ie??null),oe=ae.map(e=>e.name),P=ae.findIndex(e=>e.name===N?.name),F=N?Cg(N.color,P>=0?P:0):`#4f86c6`,se=N?wg(N.name,oe):null;return(0,V.jsxs)(`nav`,{className:`fixed bottom-0 left-0 right-0 md:hidden bg-background border-t border-border z-40 select-none`,children:[(0,V.jsxs)(`div`,{className:`flex items-center h-12`,children:[(0,V.jsx)(`button`,{onClick:e,className:`flex items-center justify-center size-12 shrink-0 text-text-secondary border-r border-border`,children:(0,V.jsx)(xt,{className:`size-5`})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0 relative flex items-center h-12`,children:[m&&(0,V.jsx)(`button`,{onClick:g,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,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(Fe,{className:`size-3.5 text-text-secondary`}),v.left&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-0.5 size-1.5 rounded-full`,np(v.left))})]})}),(0,V.jsx)(`div`,{ref:d,className:`flex-1 min-w-0 flex items-center h-12 overflow-x-auto scrollbar-none`,children:s.map(e=>{let t=jg[e.type],n=e.id===c,r=e.type===`chat`?e.metadata?.sessionId:void 0,i=r?p.get(r):void 0,a=i&&i.count>0?i.type:null;return(0,V.jsxs)(`button`,{ref:t=>{t?l.current.set(e.id,t):l.current.delete(e.id)},onClick:()=>{u.getState().setActiveTab(e.id),r&&rp.getState().clearForSession(r)},onTouchStart:()=>w(e.id),onTouchEnd:T,onTouchMove:T,onContextMenu:e=>e.preventDefault(),className:L(`flex items-center gap-1 px-3 h-12 whitespace-nowrap text-xs shrink-0 border-t-2 transition-colors`,n?`border-primary bg-surface text-primary`:`border-transparent text-text-secondary`),children:[(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(t,{className:`size-4`}),a&&!n&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-1 size-2 rounded-full`,np(a))})]}),(0,V.jsx)(`span`,{className:`max-w-[80px] truncate`,children:e.title}),e.closable&&(0,V.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>{t.stopPropagation(),u.getState().closeTab(e.id)},className:`ml-0.5 p-0.5 rounded hover:bg-surface-elevated`,children:(0,V.jsx)(sn,{className:`size-3`})})]},e.id)})}),h&&(0,V.jsx)(`button`,{onClick:_,className:`absolute right-0 z-10 flex items-center justify-center size-8 bg-gradient-to-l from-background via-background to-transparent`,children:(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(a,{className:`size-3.5 text-text-secondary`}),v.right&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -left-0.5 size-1.5 rounded-full`,np(v.right))})]})})]}),(0,V.jsx)(`button`,{onClick:()=>Qf(),className:`flex items-center justify-center size-12 shrink-0 border-t-2 border-transparent text-text-secondary`,children:(0,V.jsx)(It,{className:`size-4`})}),(0,V.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-12 shrink-0 text-text-secondary border-l border-border`,title:`Switch project`,children:se?(0,V.jsx)(`div`,{className:`size-7 rounded-full flex items-center justify-center text-[10px] font-bold text-white`,style:{background:F},children:se}):(0,V.jsx)(ht,{className:`size-5`})})]}),x&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>S(!1)}),(0,V.jsxs)(`div`,{className:`fixed bottom-14 left-2 right-2 z-50 bg-surface border border-border rounded-lg shadow-lg overflow-hidden animate-in slide-in-from-bottom-2 duration-150`,children:[(0,V.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border`,children:`New Tab`}),kg.map(e=>{let t=jg[e.type];return(0,V.jsxs)(`button`,{onClick:()=>M(e.type),className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(t,{className:`size-4`}),` `,e.label]},e.type)})]})]}),te&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>b(null)}),(0,V.jsxs)(`div`,{className:`fixed bottom-14 left-2 right-2 z-50 bg-surface border border-border rounded-lg shadow-lg overflow-hidden animate-in slide-in-from-bottom-2 duration-150`,children:[(0,V.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border truncate`,children:te.title}),j>0&&(0,V.jsxs)(`button`,{onClick:()=>{O(y),b(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(we,{className:`size-4`}),` Move Left`]}),j<s.length-1&&(0,V.jsxs)(`button`,{onClick:()=>{ee(y),b(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(Te,{className:`size-4`}),` Move Right`]}),E&&s.length>1&&(0,V.jsxs)(`button`,{onClick:()=>{k(y),b(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(Xt,{className:`size-4`}),` Split to Bottom`]}),D.map((e,t)=>(0,V.jsxs)(`button`,{onClick:()=>{A(y,e),b(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(Dt,{className:`size-4`}),` Move to Panel `,t+1===1?`Top`:`Bottom`]},e))]})]})]})}var Ng=[{id:`explorer`,label:`Explorer`,icon:nt},{id:`git`,label:`Git`,icon:ot},{id:`database`,label:`Database`,icon:Ge},{id:`settings`,label:`Settings`,icon:Jt}];function Pg({isOpen:e,onClose:t,initialTab:n}){let{activeProject:r}=If(),i=B(e=>e.version),[a,o]=(0,z.useState)(n??`explorer`);(0,z.useEffect)(()=>{n&&o(n)},[n]);let s=(0,z.useCallback)(()=>xg(i),[i]);return(0,V.jsxs)(`div`,{className:L(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),children:[(0,V.jsx)(`div`,{className:`absolute inset-0 bg-black/50`,onClick:t,"aria-label":`Close drawer`}),(0,V.jsxs)(`div`,{className:L(`fixed left-0 top-0 bottom-0 w-[90vw] bg-background border-r border-border`,`z-50 flex flex-col transition-transform duration-300 ease-out`,e?`translate-x-0`:`-translate-x-full`),children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-border shrink-0`,children:[(0,V.jsx)(`span`,{className:`text-sm font-bold text-primary tracking-tight`,children:r?.name??`PPM`}),(0,V.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-8 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(sn,{className:`size-4`})})]}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(r?(0,V.jsx)(Qp,{onFileOpen:t}):(0,V.jsx)(`p`,{className:`px-4 py-6 text-xs text-text-secondary text-center`,children:`Select a project from the bottom nav bar`})),a===`git`&&(0,V.jsx)(lm,{metadata:{projectName:r?.name},onNavigate:t}),a===`database`&&(0,V.jsx)(Dh,{}),a===`settings`&&(0,V.jsx)(oh,{})]}),(0,V.jsxs)(`div`,{className:`shrink-0 border-t border-border`,children:[(0,V.jsx)(`div`,{className:`flex items-center`,children:Ng.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:()=>o(e.id),className:L(`flex-1 flex flex-col items-center gap-0.5 py-2.5 text-[10px] transition-colors`,a===e.id?`text-primary`:`text-text-secondary`),children:[(0,V.jsx)(t,{className:`size-4`}),(0,V.jsx)(`span`,{children:e.label})]},e.id)})}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-t border-border`,children:[i&&(0,V.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[`v`,i]}),(0,V.jsxs)(`button`,{onClick:s,className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,V.jsx)(je,{className:`size-3`}),(0,V.jsx)(`span`,{children:`Report Bug`})]})]})]})]})]})}function Fg({name:e,color:t,allNames:n}){let r=wg(e,n);return(0,V.jsx)(`div`,{className:`size-10 rounded-full flex items-center justify-center text-xs font-bold text-white shrink-0`,style:{background:t},children:r})}function Ig({isOpen:e,onClose:t}){let{projects:n,activeProject:r,setActiveProject:i,setProjectColor:a,reorderProjects:o,renameProject:s,deleteProject:c,customOrder:l}=If();m(e=>e.openTab);let u=B(e=>e.version),d=Ff(n,l),f=d.map(e=>e.name),[p,h]=(0,z.useState)(`list`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(``),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null),[C,w]=(0,z.useState)(null),[T,E]=(0,z.useState)(``),D=(0,z.useCallback)(e=>{S.current=setTimeout(()=>_(e),400)},[]),O=(0,z.useCallback)(()=>{S.current&&=(clearTimeout(S.current),null)},[]);function ee(){h(`list`),t()}function k(e){let t=n.find(t=>t.name===e);t&&(i(t),ee())}function A(){h(`add`)}function te(){if(ee(),window.innerWidth<768){window.dispatchEvent(new Event(`open-mobile-settings`));return}let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=B.getState();e&&t(),n(`settings`)}async function j(){if(!C||!T.trim()||T===C){w(null);return}try{await s(C,T.trim())}catch{}w(null)}async function ne(e){_(null);try{await c(e)}catch{}}async function M(e,t){try{await a(e,t),x(!1),_(null)}catch(e){console.error(`Failed to save color:`,e)}}g&&d.find(e=>e.name===g);let N=g?d.findIndex(e=>e.name===g):-1,re=g?[{label:`Rename`,icon:Mt,onClick:()=>{E(g),w(g),_(null)}},{label:`Change Color`,icon:kt,onClick:()=>{let e=d.findIndex(e=>e.name===g),t=d[e];y(Cg(t?.color,e)),x(!0)}},...N>0?[{label:`Move Up`,icon:Ie,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N-1,0,t),o(e),_(null)}}]:[],...N<d.length-1?[{label:`Move Down`,icon:Pe,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N+1,0,t),o(e),_(null)}}]:[],{label:`Delete`,icon:$t,destructive:!0,onClick:()=>ne(g)}]:[];return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:L(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),onClick:ee,style:{backgroundColor:`rgba(0,0,0,0.5)`}}),(0,V.jsxs)(`div`,{className:L(`fixed bottom-0 left-0 right-0 z-50 md:hidden bg-background rounded-t-2xl border-t border-border shadow-2xl`,`transition-transform duration-300 ease-out`,e?`translate-y-0`:`translate-y-full`),children:[(0,V.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,V.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`add`&&(0,V.jsx)(`button`,{onClick:()=>h(`list`),className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(we,{className:`size-4`})}),(0,V.jsx)(`span`,{className:`text-sm font-semibold`,children:p===`add`?`Add Project`:`Projects`})]}),(0,V.jsx)(`button`,{onClick:ee,className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(sn,{className:`size-4`})})]}),p===`add`&&(0,V.jsx)(`div`,{className:`px-4 py-4`,children:(0,V.jsx)(Tg,{onSuccess:()=>{h(`list`),t()},onCancel:()=>h(`list`),footerClassName:`pt-2`})}),(0,V.jsx)(`div`,{className:p===`add`?`hidden`:`max-h-[60vh] overflow-y-auto`,children:d.map((e,t)=>{let n=Cg(e.color,t),i=r?.name===e.name,a=C===e.name;return(0,V.jsxs)(`div`,{className:L(`flex items-center gap-3 px-4 py-3 transition-colors active:bg-surface-elevated`,i&&`bg-accent/10`),onClick:()=>!a&&k(e.name),onTouchStart:()=>D(e.name),onTouchEnd:O,onTouchMove:O,children:[(0,V.jsx)(Fg,{name:e.name,color:n,allNames:f}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[a?(0,V.jsx)(`input`,{type:`text`,value:T,onChange:e=>E(e.target.value),onKeyDown:e=>{e.key===`Enter`&&j(),e.key===`Escape`&&w(null)},onBlur:j,onClick:e=>e.stopPropagation(),className:`w-full bg-transparent border-b border-primary text-sm outline-none`,autoFocus:!0}):(0,V.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.name}),(0,V.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]}),i&&(0,V.jsx)(Ne,{className:`size-4 text-primary shrink-0`})]},e.name)})}),(0,V.jsx)(`div`,{className:`border-t border-border`,children:(0,V.jsxs)(`button`,{onClick:A,className:`w-full flex items-center gap-3 px-4 py-3 text-text-secondary hover:bg-surface-elevated transition-colors`,children:[(0,V.jsx)(It,{className:`size-4 shrink-0`}),(0,V.jsx)(`span`,{className:`text-sm`,children:`Add Project`})]})}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-t border-border`,children:[(0,V.jsxs)(`button`,{onClick:te,className:`flex items-center gap-2 text-text-secondary hover:text-foreground transition-colors`,children:[(0,V.jsx)(Jt,{className:`size-4`}),(0,V.jsx)(`span`,{className:`text-sm`,children:`Settings`})]}),u&&(0,V.jsxs)(`span`,{className:`text-xs text-text-subtle`,children:[`v`,u]})]})]}),g&&!b&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>_(null)}),(0,V.jsxs)(`div`,{className:`fixed bottom-0 left-0 right-0 z-[61] md:hidden bg-surface border-t border-border rounded-t-2xl shadow-2xl animate-in slide-in-from-bottom-2 duration-150`,children:[(0,V.jsx)(`div`,{className:`px-4 py-2 border-b border-border`,children:(0,V.jsx)(`p`,{className:`text-xs font-medium text-text-secondary`,children:g})}),re.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:e.onClick,className:L(`w-full flex items-center gap-3 px-4 py-3 text-sm transition-colors active:bg-surface-elevated`,e.destructive?`text-destructive`:`text-foreground`),children:[(0,V.jsx)(t,{className:`size-4 shrink-0`}),e.label]},e.label)})]})]}),b&&g&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>{x(!1),_(null)}}),(0,V.jsxs)(`div`,{className:`fixed bottom-0 left-0 right-0 z-[61] md:hidden bg-surface border-t border-border rounded-t-2xl shadow-2xl p-4 space-y-4`,children:[(0,V.jsx)(`p`,{className:`text-sm font-medium`,children:`Change Color`}),(0,V.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:Sg.map(e=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>y(e),className:L(`size-9 rounded-full border-2 transition-all`,v===e?`border-primary scale-110`:`border-transparent`),style:{background:e}},e))}),(0,V.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,V.jsx)(`button`,{onClick:()=>{x(!1),_(null)},className:`flex-1 py-2 text-sm text-text-secondary border border-border rounded-md`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:()=>M(g,v),className:`flex-1 py-2 text-sm bg-primary text-white rounded-md`,children:`Save`})]})]})]})]})}function Lg({onSuccess:e}){let[t,n]=(0,z.useState)(``),r=B(e=>e.deviceName),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(!1);async function c(n){if(n.preventDefault(),t.trim()){s(!0),a(null);try{fe(t.trim());let n=await(await fetch(`/api/auth/check`,{headers:{Authorization:`Bearer ${t.trim()}`}})).json();if(!n.ok)throw Error(n.error??`Invalid token`);e()}catch(e){a(e instanceof Error?e.message:`Authentication failed`),localStorage.removeItem(`ppm-auth-token`)}finally{s(!1)}}}return(0,V.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background p-4`,children:(0,V.jsxs)(`div`,{className:`w-full max-w-sm bg-surface rounded-lg border border-border p-6 space-y-6`,children:[(0,V.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,V.jsx)(`div`,{className:`flex items-center justify-center size-12 mx-auto rounded-full bg-surface-elevated`,children:(0,V.jsx)(yt,{className:`size-6 text-primary`})}),(0,V.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`PPM`}),r&&(0,V.jsx)(`p`,{className:`text-xs text-text-subtle bg-surface-elevated inline-block px-2 py-0.5 rounded-full`,children:r}),(0,V.jsx)(`p`,{className:`text-sm text-text-secondary`,children:`Enter your access password to unlock`})]}),(0,V.jsxs)(`form`,{onSubmit:c,className:`space-y-4`,children:[(0,V.jsx)(`div`,{children:(0,V.jsx)(qp,{type:`password`,placeholder:`Auth token`,value:t,onChange:e=>n(e.target.value),className:`h-11 bg-background border-border`,autoFocus:!0})}),i&&(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-error text-sm`,children:[(0,V.jsx)(Le,{className:`size-4 shrink-0`}),(0,V.jsx)(`span`,{children:i})]}),(0,V.jsx)($,{type:`submit`,disabled:o||!t.trim(),className:`w-full h-11`,children:o?`Checking...`:`Unlock`})]})]})})}var Rg=[`terminal`,`chat`,`editor`,`database`,`sqlite`,`postgres`,`git-graph`,`git-diff`,`settings`,`browser`];function zg(){let e=window.location.pathname,t=new URLSearchParams(window.location.search).get(`openChat`),n=e.match(/^\/project\/([^/]+)(?:\/([^/]+)(\/.*)?)?/);if(!n)return{projectName:null,tabType:null,tabIdentifier:null,openChat:t};let r=decodeURIComponent(n[1]),i=n[2]??null,a=n[3]?n[3].slice(1):null;return i===`tab`?{projectName:r,tabType:null,tabIdentifier:null,openChat:t}:{projectName:r,tabType:Rg.includes(i)?i:null,tabIdentifier:a,openChat:t}}function Bg(e,t){if(!e||e===`__global__`)return`/`;let n=`/project/${encodeURIComponent(e)}`;if(!t)return n;let r=t.indexOf(`@`),i=r===-1?t:t.slice(0,r),a=i.indexOf(`:`);if(a===-1)n+=`/${i}`;else{let e=i.slice(0,a),t=i.slice(a+1);n+=`/${e}/${t.replace(/[?#]/g,encodeURIComponent)}`}return n}function Vg(e,t){return t?`${e}:${t}`:e}function Hg(e,t,n){switch(e){case`editor`:return t?{filePath:t,projectName:n}:null;case`chat`:{if(!t)return null;let e=t.indexOf(`/`);if(e===-1)return{sessionId:t,projectName:n};let r=t.slice(0,e),i=t.slice(e+1);return i?{sessionId:i,providerId:r,projectName:n}:null}case`terminal`:return{terminalIndex:parseInt(t??`1`,10),projectName:n};case`git-graph`:return{projectName:n};case`git-diff`:return t?{filePath:t,projectName:n}:null;case`settings`:return{};case`database`:{let[e,n]=(t??``).split(`:`);return e?{connectionId:e,tableName:n??``}:null}case`sqlite`:return t?{filePath:t,projectName:n}:null;case`postgres`:{let[e,n]=(t??``).split(`:`);return e?{connectionId:e,tableName:n??``}:null}case`browser`:return t?{url:t}:null;default:return null}}function Ug(e,t){switch(e){case`editor`:return t?.split(`/`).pop()??`File`;case`chat`:return`Chat`;case`terminal`:return`Terminal ${t??`1`}`;case`git-graph`:return`Git Graph`;case`git-diff`:return t?.split(`/`).pop()??`Diff`;case`settings`:return`Settings`;case`database`:return t??`Database`;case`sqlite`:return t?.split(`/`).pop()??`SQLite`;case`postgres`:return t??`PostgreSQL`;case`browser`:return`Browser`;default:return e}}function Wg(e,t,n){let{tabs:r,setActiveTab:i,openTab:a}=m.getState(),o=Vg(e,t),s=r.find(e=>e.id===o);if(s){i(s.id);return}let c=Hg(e,t,n);c&&a({type:e,title:Ug(e,t),projectId:n,closable:!0,metadata:c})}function Gg(){let e=m(e=>e.activeTabId),t=m(e=>e.currentProject),n=(0,z.useRef)(!1);(0,z.useEffect)(()=>{if(n.current){n.current=!1;return}let r=Bg(t,e);window.location.pathname!==r&&window.history.pushState(null,``,r)},[e,t]),(0,z.useEffect)(()=>{function e(){let{tabType:e,tabIdentifier:t}=zg();if(!e)return;n.current=!0;let{tabs:r,setActiveTab:i}=m.getState(),a=Vg(e,t),o=r.find(e=>e.id===a);if(o)i(o.id);else{let n=m.getState().currentProject;n&&Wg(e,t,n)}}return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[])}var Kg=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
30
+ `)}function yg(e){let t=`https://github.com/${_g}/issues/new?title=bug%3A%20&body=${encodeURIComponent(e)}`;window.open(t,`_blank`)}async function bg(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function xg(e,t){vg(e,t).then(e=>{window.dispatchEvent(new CustomEvent(`open-bug-report`,{detail:e}))})}var Sg=[`linear-gradient(135deg, #667eea, #764ba2)`,`linear-gradient(135deg, #f5576c, #f093fb)`,`linear-gradient(135deg, #4facfe, #00c6ff)`,`linear-gradient(135deg, #43e97b, #38f9d7)`,`linear-gradient(135deg, #fa709a, #fee140)`,`linear-gradient(135deg, #a18cd1, #6a3de8)`,`linear-gradient(135deg, #fd7043, #ff8a65)`,`linear-gradient(135deg, #26c6da, #0097a7)`,`linear-gradient(135deg, #ab47bc, #7b1fa2)`,`linear-gradient(135deg, #ef5350, #b71c1c)`,`linear-gradient(135deg, #1976d2, #42a5f5)`,`linear-gradient(135deg, #2e7d32, #66bb6a)`];function Cg(e,t){return e??Sg[t%Sg.length]}function wg(e,t){let n=e.split(/[-_.\s]+/).filter(Boolean),r=(n[0]?.[0]??e[0]??`?`).toUpperCase(),i=n.length>1?r+(n[1][0]??``).toUpperCase():r,a=t.filter(t=>t!==e);if(!a.map(e=>(e.split(/[-_.\s]+/).filter(Boolean)[0]?.[0]??e[0]??``).toUpperCase()).includes(r))return r;if(!a.map(e=>{let t=e.split(/[-_.\s]+/).filter(Boolean),n=(t[0]?.[0]??e[0]??``).toUpperCase(),r=t.length>1?(t[1][0]??``).toUpperCase():n;return t.length>1?n+r:n}).includes(i))return i;let o=t.indexOf(e);return String(o>=0?o+1:`?`)}function Tg({onSuccess:e,onCancel:t,footerClassName:n}){let{addProject:r}=If(),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)([]),[u,d]=(0,z.useState)(!1),[f,p]=(0,z.useState)(!1),[m,h]=(0,z.useState)(!1),[g,_]=(0,z.useState)(``),v=(0,z.useRef)(null),y=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(v.current&&clearTimeout(v.current),!i.trim()){l([]),d(!1);return}v.current=setTimeout(async()=>{p(!0);try{l(await R.get(`/api/projects/suggest-dirs?q=${encodeURIComponent(i)}`)??[]),d(!0)}catch{l([])}finally{p(!1)}},250)},[i]),(0,z.useEffect)(()=>{function e(e){y.current&&!y.current.contains(e.target)&&d(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);function b(e){a(e.path),o||s(e.name),d(!1)}async function x(t){if(t?.preventDefault(),!i.trim()){_(`Path is required`);return}_(``),h(!0);try{await r(i.trim(),o.trim()||void 0),e()}catch(e){_(e instanceof Error?e.message:`Failed to add project`)}finally{h(!1)}}return(0,V.jsxs)(`form`,{onSubmit:x,className:`flex flex-col gap-3`,children:[(0,V.jsxs)(`div`,{ref:y,className:`relative`,children:[(0,V.jsx)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:`Project path`}),(0,V.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,V.jsxs)(`div`,{className:`relative flex items-center flex-1`,children:[(0,V.jsx)(nt,{className:`absolute left-2.5 size-3.5 text-text-subtle pointer-events-none`}),(0,V.jsx)(`input`,{type:`text`,value:i,onChange:e=>{a(e.target.value),_(``)},onFocus:()=>c.length>0&&d(!0),placeholder:`/path/to/project`,className:`w-full pl-8 pr-3 py-2 rounded-md border border-border bg-background text-sm focus:outline-none focus:ring-1 focus:ring-primary`,autoFocus:!0,autoComplete:`off`}),f&&(0,V.jsx)(vt,{className:`absolute right-2.5 size-3.5 text-text-subtle animate-spin`})]}),(0,V.jsx)(xh,{mode:`folder`,onSelect:e=>{a(e),o||s(e.split(`/`).pop()??``),_(``)}})]}),u&&c.length>0&&(0,V.jsx)(`div`,{className:`absolute top-full left-0 right-0 mt-1 z-10 bg-popover border border-border rounded-md shadow-md max-h-48 overflow-y-auto`,children:c.map(e=>(0,V.jsxs)(`button`,{type:`button`,onMouseDown:()=>b(e),className:`w-full flex flex-col items-start px-3 py-2 text-left hover:bg-accent/50 transition-colors`,children:[(0,V.jsx)(`span`,{className:`text-sm font-medium truncate w-full`,children:e.name}),(0,V.jsx)(`span`,{className:`text-xs text-text-subtle truncate w-full`,children:e.path})]},e.path))})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:[`Display name `,(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:`(optional)`})]}),(0,V.jsx)(`input`,{type:`text`,value:o,onChange:e=>s(e.target.value),placeholder:`my-project`,className:`w-full px-3 py-2 rounded-md border border-border bg-background text-sm focus:outline-none focus:ring-1 focus:ring-primary`})]}),g&&(0,V.jsx)(`p`,{className:`text-xs text-destructive`,children:g}),(0,V.jsxs)(`div`,{className:L(`flex justify-end gap-2 pt-1`,n),children:[(0,V.jsx)(`button`,{type:`button`,onClick:t,className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{type:`submit`,disabled:m||!i.trim(),className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50`,children:m?`Adding…`:`Add Project`})]})]})}function Eg({name:e,color:t,active:n,allNames:r}){let i=wg(e,r),a=rp((0,z.useMemo)(()=>ap(e),[e]));return(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(`div`,{className:L(`size-10 rounded-full flex items-center justify-center text-xs font-bold text-white select-none shrink-0`,n&&`ring-2 ring-primary ring-offset-2 ring-offset-background`),style:{background:t},children:i}),a&&(0,V.jsx)(`div`,{className:L(`absolute -top-0.5 -right-0.5 size-2.5 rounded-full border-2 border-background`,np(a))})]})}function Dg({current:e,onChange:t}){return(0,V.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Sg.map(n=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:L(`size-8 rounded-full border-2 transition-all`,e===n?`border-primary scale-110`:`border-transparent hover:scale-105`),style:{background:n}},n))})}function Og(){let{projects:e,activeProject:t,setActiveProject:n,setProjectColor:r,reorderProjects:i,renameProject:a,deleteProject:o,customOrder:s}=If();m(e=>e.openTab);let c=B(e=>e.version),l=(0,z.useCallback)(()=>xg(c),[c]),[u,d]=(0,z.useState)(null),[f,p]=(0,z.useState)(null),h=Ff(e,s),g=h.map(e=>e.name),[_,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)(``),[x,S]=(0,z.useState)(``),[C,w]=(0,z.useState)(!1),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)(!1),[ee,k]=(0,z.useState)(!1),[A,te]=(0,z.useState)(``),[j,ne]=(0,z.useState)(``),[M,N]=(0,z.useState)(!1),re=(0,z.useCallback)(e=>{b(e),S(e),v(!0)},[]),ie=(0,z.useCallback)(e=>{E(e),w(!0)},[]),ae=(0,z.useCallback)((e,t)=>{te(e),ne(t),k(!0)},[]);async function oe(){if(!x.trim()||x===y){v(!1);return}try{await a(y,x.trim())}catch{}v(!1)}async function P(){try{await o(T)}catch{}w(!1)}async function F(){N(!0);try{await r(A,j),k(!1)}catch(e){console.error(`Failed to save color:`,e)}finally{N(!1)}}function se(){O(!0)}let[ce,le]=(0,z.useState)(!1),I=(0,z.useRef)(null),[ue,de]=(0,z.useState)(null);(0,z.useEffect)(()=>{if(!ce||!I.current){de(null);return}let e=I.current.getBoundingClientRect();de({left:e.right+6,bottom:window.innerHeight-e.bottom})},[ce]);function fe(){let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=B.getState();e&&t(),n(`settings`)}return(0,V.jsxs)(`aside`,{className:`hidden md:flex flex-col w-[52px] min-w-[52px] bg-background border-r border-border overflow-hidden`,children:[(0,V.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center justify-center h-[41px] border-b border-border gap-0.5`,children:[(0,V.jsx)(`span`,{className:`text-[11px] font-bold text-primary leading-none`,children:`PPM`}),c&&(0,V.jsxs)(`span`,{className:`text-[8px] text-text-subtle leading-none`,children:[`v`,c]})]}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-2 flex flex-col items-center gap-2 min-h-0`,children:[h.map((e,r)=>{let a=Cg(e.color,r),o=t?.name===e.name;return(0,V.jsxs)(jp,{children:[(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(Mp,{asChild:!0,children:(0,V.jsx)(`button`,{draggable:!0,onDragStart:()=>d(r),onDragOver:e=>{e.preventDefault(),p(r)},onDragLeave:()=>p(null),onDragEnd:()=>{d(null),p(null)},onDrop:()=>{if(u!=null&&u!==r){let e=h.map(e=>e.name),[t]=e.splice(u,1);e.splice(r,0,t),i(e)}d(null),p(null)},onClick:()=>n(e),className:`p-1 rounded-lg hover:bg-surface-elevated transition-all ${u===r?`opacity-40 scale-90`:``} ${f===r&&u!==r?`ring-2 ring-accent`:``}`,children:(0,V.jsx)(Eg,{name:e.name,color:a,active:o,allNames:g})})})}),(0,V.jsxs)(Vu,{side:`right`,className:`max-w-[200px]`,children:[(0,V.jsx)(`p`,{className:`font-medium`,children:e.name}),(0,V.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]})]}),(0,V.jsxs)(Np,{children:[(0,V.jsxs)(Pp,{onClick:()=>re(e.name),children:[(0,V.jsx)(Mt,{className:`size-3.5 mr-2`}),` Rename`]}),(0,V.jsxs)(Pp,{onClick:()=>ae(e.name,a),children:[(0,V.jsx)(kt,{className:`size-3.5 mr-2`}),` Change Color`]}),(0,V.jsx)(Fp,{}),(0,V.jsxs)(Pp,{className:`text-destructive focus:text-destructive`,onClick:()=>ie(e.name),children:[(0,V.jsx)($t,{className:`size-3.5 mr-2`}),` Delete`]})]})]},e.name)}),(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{onClick:se,className:`size-10 rounded-full border-2 border-dashed border-border flex items-center justify-center text-text-subtle hover:border-primary hover:text-primary transition-colors`,children:(0,V.jsx)(It,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Add Project`})]})]}),(0,V.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center gap-1 py-2 border-t border-border`,children:[(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{ref:I,onClick:()=>le(!ce),className:L(`flex items-center justify-center size-8 rounded-md transition-colors`,ce?`text-primary bg-primary/10`:`text-text-subtle hover:text-foreground hover:bg-surface-elevated`),children:(0,V.jsx)(Ue,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Cloud & Share`})]}),ce&&ue&&(0,dn.createPortal)((0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:()=>le(!1)}),(0,V.jsx)(`div`,{className:`fixed z-50`,style:{left:ue.left,bottom:ue.bottom},children:(0,V.jsx)(hg,{onClose:()=>le(!1)})})]}),document.body),(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{onClick:l,className:`flex items-center justify-center size-8 rounded-md text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(je,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Report Bug`})]}),(0,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:(0,V.jsx)(`button`,{onClick:fe,className:`flex items-center justify-center size-8 rounded-md text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(Jt,{className:`size-4`})})}),(0,V.jsx)(Vu,{side:`right`,children:`Settings`})]})]}),(0,V.jsx)(zp,{open:D,onOpenChange:O,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Add Project`})}),(0,V.jsx)(Tg,{onSuccess:()=>O(!1),onCancel:()=>O(!1)})]})}),(0,V.jsx)(zp,{open:_,onOpenChange:v,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Rename Project`})}),(0,V.jsx)(`input`,{type:`text`,value:x,onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&oe()},className:`w-full px-3 py-2 rounded-md border border-border bg-background text-sm focus:outline-none focus:ring-1 focus:ring-primary`,autoFocus:!0}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)(`button`,{onClick:()=>v(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:oe,className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors`,children:`Rename`})]})]})}),(0,V.jsx)(zp,{open:C,onOpenChange:w,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Delete Project`})}),(0,V.jsxs)(`p`,{className:`text-sm text-text-secondary`,children:[`Remove `,(0,V.jsx)(`strong`,{className:`text-foreground`,children:T}),` from PPM? The files on disk won't be deleted.`]}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)(`button`,{onClick:()=>w(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:P,className:`px-3 py-1.5 text-sm bg-destructive text-white rounded-md hover:bg-destructive/90 transition-colors`,children:`Delete`})]})]})}),(0,V.jsx)(zp,{open:ee,onOpenChange:k,children:(0,V.jsxs)(Hp,{className:`sm:max-w-sm`,children:[(0,V.jsx)(Up,{children:(0,V.jsx)(Gp,{children:`Change Color`})}),(0,V.jsx)(Dg,{current:j,onChange:ne}),(0,V.jsxs)(Wp,{children:[(0,V.jsx)(`button`,{onClick:()=>k(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:F,disabled:M,className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors disabled:opacity-50`,children:M?`Saving…`:`Save`})]})]})})]})}var kg=[{type:`terminal`,label:`Terminal`},{type:`chat`,label:`AI Chat`},{type:`git-graph`,label:`Git Graph`},{type:`settings`,label:`Settings`}],Ag=Object.fromEntries(kg.map(e=>[e.type,e.label])),jg={terminal:Qt,chat:St,editor:Ze,database:Ge,sqlite:Ge,postgres:Ge,"git-graph":ot,"git-diff":Qe,settings:Jt,browser:ct,"extension-webview":zt};function Mg({onMenuPress:e,onProjectsPress:t}){let n=u(e=>e.focusedPanelId),r=u(e=>e.panels[e.focusedPanelId]);u(e=>Object.keys(e.panels).length);let i=u(e=>e.grid),s=r?.tabs??[],c=r?.activeTabId??null,l=(0,z.useRef)(new Map),d=(0,z.useRef)(null),f=(0,z.useRef)(s.length),p=rp(e=>e.notifications),{canScrollLeft:m,canScrollRight:h,scrollRight:g}=op(d),_=cp(d.current,l.current,s,p),[v,y]=(0,z.useState)(null),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null);(0,z.useEffect)(()=>{s.length>f.current&&c&&l.current.get(c)?.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`}),f.current=s.length},[s.length,c]);let C=(0,z.useCallback)(e=>{S.current=setTimeout(()=>y(e),400)},[]),w=(0,z.useCallback)(()=>{S.current&&=(clearTimeout(S.current),null)},[]),T=o(i,n)?i.length<3:!1,E=Object.keys(u.getState().panels).filter(e=>e!==n);function D(e){let t=s.findIndex(t=>t.id===e);t>0&&u.getState().reorderTab(e,n,t-1)}function O(e){let t=s.findIndex(t=>t.id===e);t<s.length-1&&u.getState().reorderTab(e,n,t+1)}function ee(e){u.getState().splitPanel(`down`,e,n)}function k(e,t){u.getState().moveTab(e,n,t)}let A=v?s.find(e=>e.id===v):null,te=v?s.findIndex(e=>e.id===v):-1,{activeProject:j}=If.getState();function ne(e){let t=e===`git-graph`||e===`git-diff`||e===`terminal`||e===`chat`?{projectName:j?.name}:void 0;u.getState().openTab({type:e,title:Ag[e]??e,metadata:t,projectId:j?.name??null,closable:!0},n),x(!1)}let{activeProject:M,projects:N,customOrder:re}=If(),ie=Ff(N,re??null),ae=ie.map(e=>e.name),oe=ie.findIndex(e=>e.name===M?.name),P=M?Cg(M.color,oe>=0?oe:0):`#4f86c6`,F=M?wg(M.name,ae):null;return(0,V.jsxs)(`nav`,{className:`fixed bottom-0 left-0 right-0 md:hidden bg-background border-t border-border z-40 select-none`,children:[(0,V.jsxs)(`div`,{className:`flex items-center h-12`,children:[(0,V.jsxs)(`div`,{className:L(`flex items-center shrink-0 bg-background relative z-10 rounded-r-2xl border-r border-border transition-shadow duration-200`,m&&`shadow-[6px_0_12px_-4px_rgba(0,0,0,0.12)]`),children:[(0,V.jsx)(`button`,{onClick:e,className:`flex items-center justify-center size-12 shrink-0 text-text-secondary`,children:(0,V.jsx)(xt,{className:`size-5`})}),(0,V.jsx)(`div`,{className:`w-px self-stretch bg-border shrink-0`}),(0,V.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-12 shrink-0 text-text-secondary`,title:`Switch project`,children:F?(0,V.jsx)(`div`,{className:`size-7 rounded-full flex items-center justify-center text-[10px] font-bold text-white`,style:{background:P},children:F}):(0,V.jsx)(ht,{className:`size-5`})}),(0,V.jsx)(`div`,{className:`w-px self-stretch bg-border shrink-0`}),(0,V.jsxs)(`button`,{onClick:()=>Qf(),className:L(`flex items-center justify-center shrink-0 text-text-secondary gap-1.5 h-12`,s.length===0?`px-4`:`w-12`),children:[(0,V.jsx)(It,{className:`size-4`}),s.length===0&&(0,V.jsx)(`span`,{className:`text-xs`,children:`New Tab`})]})]}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0 relative flex items-center h-12`,children:[(0,V.jsx)(`div`,{ref:d,className:`flex-1 min-w-0 flex items-center h-12 overflow-x-auto scrollbar-none`,children:s.map(e=>{let t=jg[e.type],n=e.id===c,r=e.type===`chat`?e.metadata?.sessionId:void 0,i=r?p.get(r):void 0,a=i&&i.count>0?i.type:null;return(0,V.jsxs)(`button`,{ref:t=>{t?l.current.set(e.id,t):l.current.delete(e.id)},onClick:()=>{u.getState().setActiveTab(e.id),r&&rp.getState().clearForSession(r)},onTouchStart:()=>C(e.id),onTouchEnd:w,onTouchMove:w,onContextMenu:e=>e.preventDefault(),className:L(`flex items-center gap-1 px-3 h-12 whitespace-nowrap text-xs shrink-0 border-t-2 transition-colors`,n?`border-primary bg-surface text-primary`:`border-transparent text-text-secondary`),children:[(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(t,{className:`size-4`}),a&&!n&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -right-1 size-2 rounded-full`,np(a))})]}),(0,V.jsx)(`span`,{className:`max-w-[80px] truncate`,children:e.title}),e.closable&&(0,V.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>{t.stopPropagation(),u.getState().closeTab(e.id)},className:`ml-0.5 p-0.5 rounded hover:bg-surface-elevated`,children:(0,V.jsx)(sn,{className:`size-3`})})]},e.id)})}),h&&(0,V.jsx)(`button`,{onClick:g,className:`absolute right-0 z-10 flex items-center justify-center size-8 bg-gradient-to-l from-background via-background to-transparent`,children:(0,V.jsxs)(`span`,{className:`relative`,children:[(0,V.jsx)(a,{className:`size-3.5 text-text-secondary`}),_.right&&(0,V.jsx)(`span`,{className:L(`absolute -top-1 -left-0.5 size-1.5 rounded-full`,np(_.right))})]})})]})]}),b&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>x(!1)}),(0,V.jsxs)(`div`,{className:`fixed bottom-14 left-2 right-2 z-50 bg-surface border border-border rounded-lg shadow-lg overflow-hidden animate-in slide-in-from-bottom-2 duration-150`,children:[(0,V.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border`,children:`New Tab`}),kg.map(e=>{let t=jg[e.type];return(0,V.jsxs)(`button`,{onClick:()=>ne(e.type),className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(t,{className:`size-4`}),` `,e.label]},e.type)})]})]}),A&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>y(null)}),(0,V.jsxs)(`div`,{className:`fixed bottom-14 left-2 right-2 z-50 bg-surface border border-border rounded-lg shadow-lg overflow-hidden animate-in slide-in-from-bottom-2 duration-150`,children:[(0,V.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border truncate`,children:A.title}),te>0&&(0,V.jsxs)(`button`,{onClick:()=>{D(v),y(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(we,{className:`size-4`}),` Move Left`]}),te<s.length-1&&(0,V.jsxs)(`button`,{onClick:()=>{O(v),y(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(Te,{className:`size-4`}),` Move Right`]}),T&&s.length>1&&(0,V.jsxs)(`button`,{onClick:()=>{ee(v),y(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(Xt,{className:`size-4`}),` Split to Bottom`]}),E.map((e,t)=>(0,V.jsxs)(`button`,{onClick:()=>{k(v,e),y(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,V.jsx)(Dt,{className:`size-4`}),` Move to Panel `,t+1===1?`Top`:`Bottom`]},e))]})]})]})}var Ng=[{id:`explorer`,label:`Explorer`,icon:nt},{id:`git`,label:`Git`,icon:ot},{id:`database`,label:`Database`,icon:Ge},{id:`settings`,label:`Settings`,icon:Jt}];function Pg({isOpen:e,onClose:t,initialTab:n}){let{activeProject:r}=If(),i=B(e=>e.version),[a,o]=(0,z.useState)(n??`explorer`);(0,z.useEffect)(()=>{n&&o(n)},[n]);let s=(0,z.useCallback)(()=>xg(i),[i]);return(0,V.jsxs)(`div`,{className:L(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),children:[(0,V.jsx)(`div`,{className:`absolute inset-0 bg-black/50`,onClick:t,"aria-label":`Close drawer`}),(0,V.jsxs)(`div`,{className:L(`fixed left-0 top-0 bottom-0 w-[90vw] bg-background border-r border-border`,`z-50 flex flex-col transition-transform duration-300 ease-out`,e?`translate-x-0`:`-translate-x-full`),children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-border shrink-0`,children:[(0,V.jsx)(`span`,{className:`text-sm font-bold text-primary tracking-tight`,children:r?.name??`PPM`}),(0,V.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-8 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(sn,{className:`size-4`})})]}),(0,V.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(r?(0,V.jsx)(Qp,{onFileOpen:t}):(0,V.jsx)(`p`,{className:`px-4 py-6 text-xs text-text-secondary text-center`,children:`Select a project from the bottom nav bar`})),a===`git`&&(0,V.jsx)(lm,{metadata:{projectName:r?.name},onNavigate:t}),a===`database`&&(0,V.jsx)(Dh,{}),a===`settings`&&(0,V.jsx)(oh,{})]}),(0,V.jsxs)(`div`,{className:`shrink-0 border-t border-border`,children:[(0,V.jsx)(`div`,{className:`flex items-center`,children:Ng.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:()=>o(e.id),className:L(`flex-1 flex flex-col items-center gap-0.5 py-2.5 text-[10px] transition-colors`,a===e.id?`text-primary`:`text-text-secondary`),children:[(0,V.jsx)(t,{className:`size-4`}),(0,V.jsx)(`span`,{children:e.label})]},e.id)})}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-t border-border`,children:[i&&(0,V.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[`v`,i]}),(0,V.jsxs)(`button`,{onClick:s,className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,V.jsx)(je,{className:`size-3`}),(0,V.jsx)(`span`,{children:`Report Bug`})]})]})]})]})]})}function Fg({name:e,color:t,allNames:n}){let r=wg(e,n);return(0,V.jsx)(`div`,{className:`size-10 rounded-full flex items-center justify-center text-xs font-bold text-white shrink-0`,style:{background:t},children:r})}function Ig({isOpen:e,onClose:t}){let{projects:n,activeProject:r,setActiveProject:i,setProjectColor:a,reorderProjects:o,renameProject:s,deleteProject:c,customOrder:l}=If();m(e=>e.openTab);let u=B(e=>e.version),d=Ff(n,l),f=d.map(e=>e.name),[p,h]=(0,z.useState)(`list`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(``),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null),[C,w]=(0,z.useState)(null),[T,E]=(0,z.useState)(``),D=(0,z.useCallback)(e=>{S.current=setTimeout(()=>_(e),400)},[]),O=(0,z.useCallback)(()=>{S.current&&=(clearTimeout(S.current),null)},[]);function ee(){h(`list`),t()}function k(e){let t=n.find(t=>t.name===e);t&&(i(t),ee())}function A(){h(`add`)}function te(){if(ee(),window.innerWidth<768){window.dispatchEvent(new Event(`open-mobile-settings`));return}let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=B.getState();e&&t(),n(`settings`)}async function j(){if(!C||!T.trim()||T===C){w(null);return}try{await s(C,T.trim())}catch{}w(null)}async function ne(e){_(null);try{await c(e)}catch{}}async function M(e,t){try{await a(e,t),x(!1),_(null)}catch(e){console.error(`Failed to save color:`,e)}}g&&d.find(e=>e.name===g);let N=g?d.findIndex(e=>e.name===g):-1,re=g?[{label:`Rename`,icon:Mt,onClick:()=>{E(g),w(g),_(null)}},{label:`Change Color`,icon:kt,onClick:()=>{let e=d.findIndex(e=>e.name===g),t=d[e];y(Cg(t?.color,e)),x(!0)}},...N>0?[{label:`Move Up`,icon:Ie,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N-1,0,t),o(e),_(null)}}]:[],...N<d.length-1?[{label:`Move Down`,icon:Pe,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N+1,0,t),o(e),_(null)}}]:[],{label:`Delete`,icon:$t,destructive:!0,onClick:()=>ne(g)}]:[];return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:L(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),onClick:ee,style:{backgroundColor:`rgba(0,0,0,0.5)`}}),(0,V.jsxs)(`div`,{className:L(`fixed bottom-0 left-0 right-0 z-50 md:hidden bg-background rounded-t-2xl border-t border-border shadow-2xl`,`transition-transform duration-300 ease-out`,e?`translate-y-0`:`translate-y-full`),children:[(0,V.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,V.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`add`&&(0,V.jsx)(`button`,{onClick:()=>h(`list`),className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(we,{className:`size-4`})}),(0,V.jsx)(`span`,{className:`text-sm font-semibold`,children:p===`add`?`Add Project`:`Projects`})]}),(0,V.jsx)(`button`,{onClick:ee,className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,V.jsx)(sn,{className:`size-4`})})]}),p===`add`&&(0,V.jsx)(`div`,{className:`px-4 py-4`,children:(0,V.jsx)(Tg,{onSuccess:()=>{h(`list`),t()},onCancel:()=>h(`list`),footerClassName:`pt-2`})}),(0,V.jsx)(`div`,{className:p===`add`?`hidden`:`max-h-[60vh] overflow-y-auto`,children:d.map((e,t)=>{let n=Cg(e.color,t),i=r?.name===e.name,a=C===e.name;return(0,V.jsxs)(`div`,{className:L(`flex items-center gap-3 px-4 py-3 transition-colors active:bg-surface-elevated`,i&&`bg-accent/10`),onClick:()=>!a&&k(e.name),onTouchStart:()=>D(e.name),onTouchEnd:O,onTouchMove:O,children:[(0,V.jsx)(Fg,{name:e.name,color:n,allNames:f}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[a?(0,V.jsx)(`input`,{type:`text`,value:T,onChange:e=>E(e.target.value),onKeyDown:e=>{e.key===`Enter`&&j(),e.key===`Escape`&&w(null)},onBlur:j,onClick:e=>e.stopPropagation(),className:`w-full bg-transparent border-b border-primary text-sm outline-none`,autoFocus:!0}):(0,V.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.name}),(0,V.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]}),i&&(0,V.jsx)(Ne,{className:`size-4 text-primary shrink-0`})]},e.name)})}),(0,V.jsx)(`div`,{className:`border-t border-border`,children:(0,V.jsxs)(`button`,{onClick:A,className:`w-full flex items-center gap-3 px-4 py-3 text-text-secondary hover:bg-surface-elevated transition-colors`,children:[(0,V.jsx)(It,{className:`size-4 shrink-0`}),(0,V.jsx)(`span`,{className:`text-sm`,children:`Add Project`})]})}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-t border-border`,children:[(0,V.jsxs)(`button`,{onClick:te,className:`flex items-center gap-2 text-text-secondary hover:text-foreground transition-colors`,children:[(0,V.jsx)(Jt,{className:`size-4`}),(0,V.jsx)(`span`,{className:`text-sm`,children:`Settings`})]}),u&&(0,V.jsxs)(`span`,{className:`text-xs text-text-subtle`,children:[`v`,u]})]})]}),g&&!b&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>_(null)}),(0,V.jsxs)(`div`,{className:`fixed bottom-0 left-0 right-0 z-[61] md:hidden bg-surface border-t border-border rounded-t-2xl shadow-2xl animate-in slide-in-from-bottom-2 duration-150`,children:[(0,V.jsx)(`div`,{className:`px-4 py-2 border-b border-border`,children:(0,V.jsx)(`p`,{className:`text-xs font-medium text-text-secondary`,children:g})}),re.map(e=>{let t=e.icon;return(0,V.jsxs)(`button`,{onClick:e.onClick,className:L(`w-full flex items-center gap-3 px-4 py-3 text-sm transition-colors active:bg-surface-elevated`,e.destructive?`text-destructive`:`text-foreground`),children:[(0,V.jsx)(t,{className:`size-4 shrink-0`}),e.label]},e.label)})]})]}),b&&g&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>{x(!1),_(null)}}),(0,V.jsxs)(`div`,{className:`fixed bottom-0 left-0 right-0 z-[61] md:hidden bg-surface border-t border-border rounded-t-2xl shadow-2xl p-4 space-y-4`,children:[(0,V.jsx)(`p`,{className:`text-sm font-medium`,children:`Change Color`}),(0,V.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:Sg.map(e=>(0,V.jsx)(`button`,{type:`button`,onClick:()=>y(e),className:L(`size-9 rounded-full border-2 transition-all`,v===e?`border-primary scale-110`:`border-transparent`),style:{background:e}},e))}),(0,V.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,V.jsx)(`button`,{onClick:()=>{x(!1),_(null)},className:`flex-1 py-2 text-sm text-text-secondary border border-border rounded-md`,children:`Cancel`}),(0,V.jsx)(`button`,{onClick:()=>M(g,v),className:`flex-1 py-2 text-sm bg-primary text-white rounded-md`,children:`Save`})]})]})]})]})}function Lg({onSuccess:e}){let[t,n]=(0,z.useState)(``),r=B(e=>e.deviceName),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(!1);async function c(n){if(n.preventDefault(),t.trim()){s(!0),a(null);try{fe(t.trim());let n=await(await fetch(`/api/auth/check`,{headers:{Authorization:`Bearer ${t.trim()}`}})).json();if(!n.ok)throw Error(n.error??`Invalid token`);e()}catch(e){a(e instanceof Error?e.message:`Authentication failed`),localStorage.removeItem(`ppm-auth-token`)}finally{s(!1)}}}return(0,V.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background p-4`,children:(0,V.jsxs)(`div`,{className:`w-full max-w-sm bg-surface rounded-lg border border-border p-6 space-y-6`,children:[(0,V.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,V.jsx)(`div`,{className:`flex items-center justify-center size-12 mx-auto rounded-full bg-surface-elevated`,children:(0,V.jsx)(yt,{className:`size-6 text-primary`})}),(0,V.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`PPM`}),r&&(0,V.jsx)(`p`,{className:`text-xs text-text-subtle bg-surface-elevated inline-block px-2 py-0.5 rounded-full`,children:r}),(0,V.jsx)(`p`,{className:`text-sm text-text-secondary`,children:`Enter your access password to unlock`})]}),(0,V.jsxs)(`form`,{onSubmit:c,className:`space-y-4`,children:[(0,V.jsx)(`div`,{children:(0,V.jsx)(qp,{type:`password`,placeholder:`Auth token`,value:t,onChange:e=>n(e.target.value),className:`h-11 bg-background border-border`,autoFocus:!0})}),i&&(0,V.jsxs)(`div`,{className:`flex items-center gap-2 text-error text-sm`,children:[(0,V.jsx)(Le,{className:`size-4 shrink-0`}),(0,V.jsx)(`span`,{children:i})]}),(0,V.jsx)($,{type:`submit`,disabled:o||!t.trim(),className:`w-full h-11`,children:o?`Checking...`:`Unlock`})]})]})})}var Rg=[`terminal`,`chat`,`editor`,`database`,`sqlite`,`postgres`,`git-graph`,`git-diff`,`settings`,`browser`];function zg(){let e=window.location.pathname,t=new URLSearchParams(window.location.search).get(`openChat`),n=e.match(/^\/project\/([^/]+)(?:\/([^/]+)(\/.*)?)?/);if(!n)return{projectName:null,tabType:null,tabIdentifier:null,openChat:t};let r=decodeURIComponent(n[1]),i=n[2]??null,a=n[3]?n[3].slice(1):null;return i===`tab`?{projectName:r,tabType:null,tabIdentifier:null,openChat:t}:{projectName:r,tabType:Rg.includes(i)?i:null,tabIdentifier:a,openChat:t}}function Bg(e,t){if(!e||e===`__global__`)return`/`;let n=`/project/${encodeURIComponent(e)}`;if(!t)return n;let r=t.indexOf(`@`),i=r===-1?t:t.slice(0,r),a=i.indexOf(`:`);if(a===-1)n+=`/${i}`;else{let e=i.slice(0,a),t=i.slice(a+1);n+=`/${e}/${t.replace(/[?#]/g,encodeURIComponent)}`}return n}function Vg(e,t){return t?`${e}:${t}`:e}function Hg(e,t,n){switch(e){case`editor`:return t?{filePath:t,projectName:n}:null;case`chat`:{if(!t)return null;let e=t.indexOf(`/`);if(e===-1)return{sessionId:t,projectName:n};let r=t.slice(0,e),i=t.slice(e+1);return i?{sessionId:i,providerId:r,projectName:n}:null}case`terminal`:return{terminalIndex:parseInt(t??`1`,10),projectName:n};case`git-graph`:return{projectName:n};case`git-diff`:return t?{filePath:t,projectName:n}:null;case`settings`:return{};case`database`:{let[e,n]=(t??``).split(`:`);return e?{connectionId:e,tableName:n??``}:null}case`sqlite`:return t?{filePath:t,projectName:n}:null;case`postgres`:{let[e,n]=(t??``).split(`:`);return e?{connectionId:e,tableName:n??``}:null}case`browser`:return t?{url:t}:null;default:return null}}function Ug(e,t){switch(e){case`editor`:return t?.split(`/`).pop()??`File`;case`chat`:return`Chat`;case`terminal`:return`Terminal ${t??`1`}`;case`git-graph`:return`Git Graph`;case`git-diff`:return t?.split(`/`).pop()??`Diff`;case`settings`:return`Settings`;case`database`:return t??`Database`;case`sqlite`:return t?.split(`/`).pop()??`SQLite`;case`postgres`:return t??`PostgreSQL`;case`browser`:return`Browser`;default:return e}}function Wg(e,t,n){let{tabs:r,setActiveTab:i,openTab:a}=m.getState(),o=Vg(e,t),s=r.find(e=>e.id===o);if(s){i(s.id);return}let c=Hg(e,t,n);c&&a({type:e,title:Ug(e,t),projectId:n,closable:!0,metadata:c})}function Gg(){let e=m(e=>e.activeTabId),t=m(e=>e.currentProject),n=(0,z.useRef)(!1);(0,z.useEffect)(()=>{if(n.current){n.current=!1;return}let r=Bg(t,e);window.location.pathname!==r&&window.history.pushState(null,``,r)},[e,t]),(0,z.useEffect)(()=>{function e(){let{tabType:e,tabIdentifier:t}=zg();if(!e)return;n.current=!0;let{tabs:r,setActiveTab:i}=m.getState(),a=Vg(e,t),o=r.find(e=>e.id===a);if(o)i(o.id);else{let n=m.getState().currentProject;n&&Wg(e,t,n)}}return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[])}var Kg=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
31
31
  <rect width="32" height="32" rx="6" fill="#3b82f6"/>
32
32
  <text x="16" y="22" text-anchor="middle" font-family="system-ui,sans-serif" font-weight="700" font-size="11" fill="white">PPM</text>
33
33
  </svg>`,qg=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
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>`,Jg=`data:image/svg+xml,${encodeURIComponent(Kg)}`,Yg=`data:image/svg+xml,${encodeURIComponent(qg)}`;function Xg(e){let t=document.getElementById(`ppm-favicon`);t&&(t.href=e?Yg:Jg)}function Zg(e,t,n){let r=[t,n||null,`PPM`].filter(Boolean).join(` - `);return e>0?`(${e}) ${r}`:r}function Qg(){let e=If(e=>e.activeProject),t=B(e=>e.deviceName);(0,z.useEffect)(()=>{let n=()=>{let n=ip(rp.getState());document.title=Zg(n,e?.name,t??void 0),Xg(n>0)};return n(),rp.subscribe(n)},[e?.name,t])}var $g=15e3,e_=h((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>=$g})},markUp:()=>{e({isDown:!1,downSince:null,showOverlay:!1})}})),t_=1e4,n_=2e3;function r_(){(0,z.useEffect)(()=>{let e=!1,t,{markDown:n,markUp:r}=e_.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?n_:t_)}return t=setTimeout(i,t_),()=>clearTimeout(t)},[])}var i_=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent);function a_(e){return e?e.replace(/Mod\+/g,i_?`⌘`:`Ctrl+`).replace(/Alt\+/g,i_?`⌥`:`Alt+`).replace(/Shift\+/g,i_?`⇧`:`Shift+`).replace(/Meta\+/g,`⌘`).replace(/Ctrl\+/g,i_?`⌃`:`Ctrl+`):``}function o_(e){let t=[];for(let n of e)n.type===`file`&&t.push({name:n.name,path:n.path}),n.children&&t.push(...o_(n.children));return t}function s_(e){return e?e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`~\\`)||/^[A-Za-z]:[/\\]/.test(e):!1}function c_(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 l_=new Map;function u_({open:e,onClose:t,initialQuery:n=``}){let[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(0),[s,c]=(0,z.useState)([]),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)([]),p=(0,z.useRef)(null),h=(0,z.useRef)(null),g=m(e=>e.openTab),_=If(e=>e.activeProject),v=Op(e=>e.tree),y=B(e=>e.setSidebarActiveTab),b=B(e=>e.sidebarCollapsed),x=B(e=>e.toggleSidebar),S=Zf(e=>e.getBinding),C=Dp(e=>e.contributions),w=(0,z.useCallback)(async e=>{if(l_.has(e)){c(l_.get(e));return}u(!0);try{let t=await R.get(`/api/fs/list?dir=${encodeURIComponent(e)}`);l_.set(e,t),c(t)}catch{c([])}finally{u(!1)}},[]);(0,z.useEffect)(()=>{if(!s_(r)){c([]);return}w(c_(r))},[r,w]),(0,z.useEffect)(()=>{if(s_(r)||r.trim().length<2){f([]);return}let e=setTimeout(async()=>{try{f(await R.get(`/api/db/search?q=${encodeURIComponent(r.trim())}`)??[])}catch{f([])}},300);return()=>clearTimeout(e)},[r]);let T=(0,z.useMemo)(()=>{let e=_?.name??null,n=_?{projectName:_.name}:void 0,r=(r,i)=>()=>{g({type:r,title:i,projectId:e,metadata:n,closable:!0}),t()},i=[{id:`chat`,label:`New AI Chat`,icon:St,action:r(`chat`,`AI Chat`),keywords:`ai assistant claude`,group:`action`,shortcut:a_(S(`open-chat`))},{id:`terminal`,label:`New Terminal`,icon:Qt,action:r(`terminal`,`Terminal`),keywords:`bash shell console`,group:`action`,shortcut:a_(S(`open-terminal`))},{id:`git-graph`,label:`Git Graph`,icon:ot,action:r(`git-graph`,`Git Graph`),keywords:`branch history log`,group:`action`,shortcut:a_(S(`open-git-graph`))},{id:`browser`,label:`Open Browser`,icon:ct,action:r(`browser`,`Browser`),keywords:`web preview localhost iframe url`,group:`action`},{id:`postgres`,label:`PostgreSQL`,icon:Ge,action:r(`postgres`,`PostgreSQL`),keywords:`database pg sql query`,group:`action`},{id:`voice-input`,label:`Voice Input`,icon:Ct,action:()=>{window.dispatchEvent(new CustomEvent(`toggle-voice-input`)),t()},keywords:`speech microphone dictate voice`,group:`action`,shortcut:a_(S(`voice-input`))},{id:`git-status`,label:`Git Status`,icon:st,action:()=>{y(`git`),t()},keywords:`changes diff staged`,group:`action`,shortcut:a_(S(`open-git-status`))},{id:`settings`,label:`Settings`,icon:Jt,action:()=>{b&&x(),y(`settings`),t()},keywords:`config preferences theme`,group:`action`,shortcut:a_(S(`open-settings`))}],a=(C?.commands??[]).map(e=>({id:`ext:${e.command}`,label:e.title,hint:e.category,icon:zt,group:`action`,keywords:`extension ${e.command} ${e.category??``}`,action:()=>{console.log(`[CmdPalette] ext command:`,e.command),t()}}));return[...i,...a]},[_,g,t,y,b,x,S,C]),E=(0,z.useMemo)(()=>{let e=_?.name??null,n=_?{projectName:_.name}:void 0;return o_(v).map(r=>({id:`file:${r.path}`,label:r.name,hint:r.path,icon:Ze,group:`file`,keywords:r.path,action:()=>{g({type:`editor`,title:r.name,projectId:e,metadata:{...n,filePath:r.path},closable:!0}),t()}}))},[v,_,g,t]),D=(0,z.useMemo)(()=>{let e=_?.name??null,n=_?{projectName:_.name}:void 0;return s.map(r=>{let i=de(r);return{id:`fs:${r}`,label:i,hint:r,icon:nt,group:`fs`,keywords:r,action:()=>{g({type:`editor`,title:i,projectId:e,metadata:{...n,filePath:r},closable:!0}),t()}}})},[s,_,g,t]),O=(0,z.useMemo)(()=>d.map(e=>({id:`db:${e.connectionId}:${e.schemaName}.${e.tableName}`,label:e.tableName,hint:`${e.connectionName} (${e.connectionType===`postgres`?`PG`:`SQLite`})`,icon:Ge,group:`db`,connectionColor:e.connectionColor,action:()=>{g({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,g,t]),ee=(0,z.useMemo)(()=>[...T,...E],[T,E]),k=(0,z.useMemo)(()=>{if(s_(r)){let e=r.lastIndexOf(`/`),t=e>=0?r.slice(e+1).toLowerCase():``;return t?D.filter(e=>{let n=e.label.toLowerCase(),r=(e.keywords??``).toLowerCase();return n.includes(t)||r.includes(t)}).slice(0,50):D.slice(0,50)}if(!r.trim())return T;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=ee.filter(e=>t(e.label.toLowerCase())||e.keywords&&t(e.keywords.toLowerCase()));return r.trim().length>=2?[...O,...n]:n},[ee,T,D,O,r]);(0,z.useEffect)(()=>{e&&(i(n||``),o(0),c([]),f([]),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,z.useEffect)(()=>{o(e=>Math.min(e,Math.max(k.length-1,0)))},[k.length]),(0,z.useEffect)(()=>{let e=h.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let A=(0,z.useCallback)(()=>{r.trim()&&(g({type:`chat`,title:`AI Chat`,projectId:_?.name??null,metadata:{projectName:_?.name,pendingMessage:r.trim()},closable:!0}),t())},[r,_,g,t]);function te(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 j=s_(r);return(0,V.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:t,children:[(0,V.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,V.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:te,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,V.jsx)(Wt,{className:`size-4 text-text-subtle shrink-0`}),(0,V.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,V.jsx)(vt,{className:`size-3.5 animate-spin text-text-subtle shrink-0`}),(0,V.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`})]}),j&&!l&&s.length===0&&r.length<4&&(0,V.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,V.jsx)(`div`,{ref:h,className:`max-h-72 overflow-y-auto py-1`,children:k.length===0?l?(0,V.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`Searching...`}):r.trim()?(0,V.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,V.jsx)(St,{className:`size-4 shrink-0 text-accent`}),(0,V.jsxs)(`span`,{children:[`Ask AI: `,(0,V.jsx)(`span`,{className:`text-text-primary font-medium`,children:r.trim().slice(0,60)})]})]}):(0,V.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,V.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,V.jsx)(n,{className:`size-4 shrink-0`}),(0,V.jsx)(`span`,{className:`truncate`,children:e.label}),e.hint&&(0,V.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-xs text-text-subtle truncate max-w-[200px]`,children:[e.connectionColor&&(0,V.jsx)(`span`,{className:`shrink-0 size-2 rounded-full`,style:{backgroundColor:e.connectionColor}}),e.hint]}),e.shortcut&&(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 border-t border-border px-3 py-1.5`,children:[(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`Press`}),(0,V.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,V.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,V.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`to open this palette`})]})]})]})}function d_(){let[e,t]=(0,z.useState)(null),[n,r]=(0,z.useState)(!1);(0,z.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,z.useCallback)(()=>t(null),[]);return e?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:i}),(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,V.jsx)(`span`,{className:`text-sm font-medium`,children:`Bug Report`}),(0,V.jsx)(`button`,{onClick:i,className:`p-1 rounded hover:bg-surface-elevated`,children:(0,V.jsx)(sn,{className:`size-4`})})]}),(0,V.jsx)(`pre`,{className:`flex-1 overflow-auto px-4 py-2 text-xs font-mono whitespace-pre-wrap break-all`,children:e}),(0,V.jsxs)(`div`,{className:`flex gap-2 p-3 border-t border-border`,children:[(0,V.jsxs)(`button`,{onClick:async()=>{await bg(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,V.jsx)(Ne,{className:`size-3`}):(0,V.jsx)(We,{className:`size-3`}),n?`Copied`:`Copy`]}),(0,V.jsxs)(`button`,{onClick:()=>{yg(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,V.jsx)(l,{className:`size-3`}),`Open GitHub Issue`]})]})]})]}):null}var f_=6e4,p_=`ppm-upgrade-dismissed-`;function m_({onVisibilityChange:e}){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(!1);(0,z.useEffect)(()=>{let e;async function t(){try{let e=await R.get(`/api/upgrade`);if(e.availableVersion){n(e.availableVersion);let t=p_+e.availableVersion;sessionStorage.getItem(t)?o(!0):o(!1)}else n(null)}catch{}}return t(),e=setInterval(t,f_),()=>clearInterval(e)},[]);let s=(0,z.useCallback)(async()=>{i(!0);try{await R.post(`/api/upgrade/apply`)}catch(e){Dn.error(`Upgrade failed: ${e.message}`),i(!1)}},[]),c=(0,z.useCallback)(()=>{t&&sessionStorage.setItem(p_+t,`1`),o(!0)},[t]),l=!!t&&!a;return(0,z.useEffect)(()=>{e?.(l)},[l,e]),l?(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,V.jsx)(vt,{className:`size-4 animate-spin shrink-0`}),(0,V.jsxs)(`span`,{className:`truncate`,children:[`Upgrading to v`,t,`... PPM will restart shortly`]})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,V.jsx)(Re,{className:`size-4 shrink-0`}),(0,V.jsxs)(`span`,{className:`truncate`,children:[`PPM v`,t,` available`]})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,V.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,V.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,V.jsx)(sn,{className:`size-4`})})]})]})}):null}var h_=h(e=>({src:null,alt:``,open:(t,n=``)=>e({src:t,alt:n}),close:()=>e({src:null,alt:``})}));function g_(){let{src:e,alt:t,close:n}=h_(),r=(0,z.useCallback)(e=>{e.key===`Escape`&&n()},[n]);return(0,z.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,r),()=>document.removeEventListener(`keydown`,r)},[e,r]),e?(0,V.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,V.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,V.jsx)(sn,{className:`size-5`})}),(0,V.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 __=h(e=>({svg:null,open:t=>e({svg:t}),close:()=>e({svg:null})})),v_=.25,y_=4,b_=.25;function x_(){let{svg:e,close:t}=__(),n=(0,z.useRef)(null),[r,i]=(0,z.useState)(1),[a,o]=(0,z.useState)({x:0,y:0}),s=(0,z.useRef)(!1),c=(0,z.useRef)({x:0,y:0});(0,z.useEffect)(()=>{e&&(i(1),o({x:0,y:0}))},[e]);let l=(0,z.useCallback)(e=>{e.key===`Escape`&&t(),(e.key===`=`||e.key===`+`)&&i(e=>Math.min(y_,e+b_)),e.key===`-`&&i(e=>Math.max(v_,e-b_)),e.key===`0`&&(i(1),o({x:0,y:0}))},[t]);(0,z.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,l),()=>document.removeEventListener(`keydown`,l)},[e,l]);let u=(0,z.useCallback)(e=>{e.preventDefault();let t=e.deltaY>0?-b_:b_;i(e=>Math.min(y_,Math.max(v_,e+t)))},[]),d=(0,z.useCallback)(e=>{e.button===0&&(s.current=!0,c.current={x:e.clientX,y:e.clientY},e.target.setPointerCapture(e.pointerId))},[]),f=(0,z.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,z.useCallback)(()=>{s.current=!1},[]);return e?(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-black/40`,onClick:e=>e.stopPropagation(),children:[(0,V.jsxs)(`span`,{className:`text-sm text-white/70`,children:[Math.round(r*100),`% — Scroll to zoom, drag to pan, 0 to reset`]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(`button`,{onClick:()=>i(e=>Math.max(v_,e-b_)),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,V.jsx)(ln,{className:`size-4`})}),(0,V.jsx)(`button`,{onClick:()=>i(e=>Math.min(y_,e+b_)),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,V.jsx)(cn,{className:`size-4`})}),(0,V.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,V.jsx)(Ut,{className:`size-4`})}),(0,V.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,V.jsx)(sn,{className:`size-5`})})]})]}),(0,V.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,V.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,V.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 S_=`https://ppm.hienle.tech`;function C_(){return window.location.hostname.endsWith(`.trycloudflare.com`)}function w_(){let e=e_(e=>e.showOverlay),[t,n]=(0,z.useState)(!1);if(!e)return null;let r=C_();async function i(){n(!0);try{if((await fetch(`/api/health`,{cache:`no-store`})).ok){if(e_.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,V.jsx)(`div`,{className:`fixed inset-0 z-[200] bg-background/95 backdrop-blur-sm flex items-center justify-center p-4`,children:(0,V.jsxs)(`div`,{className:`max-w-sm w-full text-center space-y-6`,children:[(0,V.jsx)(`div`,{className:`flex justify-center`,children:(0,V.jsx)(`div`,{className:`rounded-full bg-destructive/10 p-4`,children:(0,V.jsx)(r?on:Kt,{className:`h-10 w-10 text-destructive`})})}),(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:r?`Connection Lost`:`Server Unreachable`}),(0,V.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,V.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[r&&(0,V.jsx)(`a`,{href:S_,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,V.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,V.jsx)(Bt,{className:`h-4 w-4 ${t?`animate-spin`:``}`}),t?`Retrying…`:`Retry Connection`]})]}),!r&&(0,V.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`If the server was stopped, run `,(0,V.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded text-[11px]`,children:`ppm start`}),` to restart it.`]})]})})}function T_(){let e=Dp(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,V.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,V.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:t.map(e=>(0,V.jsx)(E_,{item:e},e.id))}),(0,V.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:n.map(e=>(0,V.jsx)(E_,{item:e},e.id))})]})}function E_({item:e}){let t=(0,V.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,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:t}),(0,V.jsx)(Vu,{side:`top`,className:`text-xs`,children:e.tooltip})]}):t}function D_(){let e=Dp(e=>e.quickPick),t=Dp(e=>e.resolveQuickPick);return e?(0,V.jsx)(O_,{items:e.items,options:e.options,onSelect:e=>t(e),onCancel:()=>t(void 0)}):null}function O_({items:e,options:t,onSelect:n,onCancel:r}){let[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(0),[c,l]=(0,z.useState)(()=>{let t=new Set;return e.forEach((e,n)=>{e.picked&&t.add(n)}),t}),u=(0,z.useRef)(null),d=(0,z.useRef)(null),f=t.canPickMany??!1;(0,z.useEffect)(()=>{requestAnimationFrame(()=>u.current?.focus())},[]);let p=(0,z.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,z.useEffect)(()=>{s(e=>Math.min(e,Math.max(p.length-1,0)))},[p.length]),(0,z.useEffect)(()=>{(d.current?.children[o])?.scrollIntoView({block:`nearest`})},[o]);let m=(0,z.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,V.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:r,children:[(0,V.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,V.jsx)(Wt,{className:`size-4 text-text-subtle shrink-0`}),(0,V.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,V.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,V.jsx)(`div`,{ref:d,className:`max-h-72 overflow-y-auto py-1`,children:p.length===0?(0,V.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,V.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:L(`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,V.jsx)(`span`,{className:L(`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,V.jsx)(Ne,{className:`size-3`})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`truncate`,children:e.label}),e.description&&(0,V.jsx)(`span`,{className:`text-xs text-text-subtle ml-2`,children:e.description}),e.detail&&(0,V.jsx)(`div`,{className:`text-xs text-text-subtle truncate mt-0.5`,children:e.detail})]})]},t))}),f&&(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-3 py-1.5`,children:[(0,V.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[c.size,` selected`]}),(0,V.jsx)(`button`,{onClick:m,className:`text-xs text-primary hover:text-primary/80 font-medium`,children:`Confirm`})]})]})]})}function k_(){let e=Dp(e=>e.inputBox),t=Dp(e=>e.resolveInputBox);return e?(0,V.jsx)(A_,{options:e.options,onConfirm:e=>t(e),onCancel:()=>t(void 0)}):null}function A_({options:e,onConfirm:t,onCancel:n}){let[r,i]=(0,z.useState)(e.value??``),a=(0,z.useRef)(null);(0,z.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,V.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:n,children:[(0,V.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,V.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,V.jsx)(`div`,{className:`px-3 pt-3 pb-1 text-sm text-text-primary`,children:e.prompt}),(0,V.jsx)(`div`,{className:`flex items-center gap-2 px-3 py-2.5`,children:(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-border px-3 py-2`,children:[(0,V.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,V.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 j_=3e4,M_=1e3,N_=class{ws=null;url;handlers=[];reconnectAttempts=0;reconnectTimer=null;intentionalClose=!1;pendingMessages=[];constructor(e){this.url=e}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)}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(M_*2**this.reconnectAttempts,j_);this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>this.connect(),e)}};function P_(e=!0){let t=(0,z.useRef)(null),n=(0,z.useCallback)(e=>{t.current?.send(JSON.stringify(e))},[]);return(0,z.useEffect)(()=>{if(!e)return;let r=me(),i=new N_(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=Dp.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`?Dn.error:t.level===`warn`?Dn.warning:Dn.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:``}),m.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 F_(){let[e,t]=(0,z.useState)(`checking`),[n,r]=(0,z.useState)(!1),[i,a]=(0,z.useState)(!1),[o,l]=(0,z.useState)(),[d,f]=(0,z.useState)(!1);(0,z.useEffect)(()=>{let e=()=>{l(`settings`),a(!0)};return window.addEventListener(`open-mobile-settings`,e),()=>window.removeEventListener(`open-mobile-settings`,e)},[]);let[h,_]=(0,z.useState)(()=>new Set([`__global__`])),v=B(e=>e.theme),y=B(e=>e.deviceName),b=If(e=>e.fetchProjects),x=B(e=>e.fetchServerInfo),S=If(e=>e.activeProject),C=(0,z.useRef)(zg());(0,z.useEffect)(()=>{if(qn(v),v===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>qn(`system`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)}},[v]),(0,z.useEffect)(()=>{x()},[x]),(0,z.useEffect)(()=>{async function e(){let e=me();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()},[]),Gg();let{paletteOpen:w,paletteInitialQuery:T,closePalette:E}=$f();Qg(),r_(),P_(e===`authenticated`),(0,z.useEffect)(()=>{if(e!==`authenticated`)return;let t=e=>{e.preventDefault()};return window.addEventListener(`beforeunload`,t),()=>window.removeEventListener(`beforeunload`,t)},[e]),(0,z.useEffect)(()=>{e===`authenticated`&&g(async()=>{let{useKeybindingsStore:e}=await import(`./keybindings-store-D3Y5c5uS.js`);return{useKeybindingsStore:e}},__vite__mapDeps([53,6,1,2])).then(({useKeybindingsStore:e})=>{e.getState().loadFromServer()})},[e]),(0,z.useEffect)(()=>{e===`authenticated`&&b().then(async()=>{let e=C.current,{projects:t,customOrder:n}=If.getState();if(t.length===0)return;let r=e.projectName?t.find(t=>t.name===e.projectName):void 0;if(r||=Ff(t,n)[0],!r)return;If.getState().setActiveProject(r);let i=await c(r.name);if(i){let e=localStorage.getItem(`ppm-panels-${r.name}`),t=p(e?JSON.parse(e):null,i);t&&t===i&&(s(r.name,t),u.getState().reloadProject(r.name))}queueMicrotask(()=>{if(e.tabType&&Wg(e.tabType,e.tabIdentifier,r.name),e.openChat){Wg(`chat`,e.openChat,r.name);let t=new URL(window.location.href);t.searchParams.delete(`openChat`),window.history.replaceState(null,``,t.pathname)}})})},[e,b]),(0,z.useEffect)(()=>{let e=S?.name??`__global__`;m.getState().switchProject(e)},[S?.name]),(0,z.useEffect)(()=>{let e=S?.name??`__global__`;_(t=>t.has(e)?t:new Set([...t,e]))},[S?.name]),(0,z.useEffect)(()=>{e===`authenticated`&&!S&&m.getState().switchProject(`__global__`)},[e,S]);let D=(0,z.useCallback)(()=>{t(`authenticated`)},[]);if(e===`checking`)return(0,V.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background`,children:(0,V.jsx)(`div`,{className:`animate-pulse text-text-secondary text-sm`,children:`Loading...`})});if(e===`unauthenticated`)return(0,V.jsx)(Lg,{onSuccess:D});let O=S?.name??`__global__`;return(0,V.jsx)(Ru,{children:(0,V.jsxs)(`div`,{className:`h-dvh flex flex-col bg-background text-foreground overflow-hidden relative`,children:[(0,V.jsx)(m_,{onVisibilityChange:r}),y&&(0,V.jsx)(`div`,{className:L(`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:y}),(0,V.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,V.jsx)(Og,{}),(0,V.jsx)(Vh,{}),(0,V.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[[...h].map(e=>(0,V.jsx)(`div`,{className:L(`flex-1 overflow-hidden pb-12 md:pb-0`,O!==e&&`hidden`),children:(0,V.jsx)(Cp,{projectName:e})},e)),(0,V.jsx)(T_,{})]})]}),(0,V.jsx)(Mg,{onMenuPress:()=>a(!0),onProjectsPress:()=>f(!0)}),(0,V.jsx)(Pg,{isOpen:i,onClose:()=>{a(!1),l(void 0)},initialTab:o}),(0,V.jsx)(Ig,{isOpen:d,onClose:()=>f(!1)}),(0,V.jsx)(u_,{open:w,onClose:E,initialQuery:T}),(0,V.jsx)(d_,{}),(0,V.jsx)(g_,{}),(0,V.jsx)(x_,{}),(0,V.jsx)(D_,{}),(0,V.jsx)(k_,{}),(0,V.jsx)(w_,{}),(0,V.jsx)(Yn,{position:`bottom-left`,closeButton:!0,toastOptions:{className:`bg-surface border-border text-foreground`}})]})})}(0,un.createRoot)(document.getElementById(`root`)).render((0,V.jsx)(z.StrictMode,{children:(0,V.jsx)(F_,{})}));export{Bt as $,$ as A,De as At,Gf as B,qp as C,Le as Ct,Wp as D,Ne as Dt,Kp as E,Pe as Et,Mp as F,B as G,Yf as H,Op as I,$t as J,sn as K,Dp as L,Np as M,Pp as N,Up as O,je as Ot,Fp as P,Ut as Q,rp as R,em as S,ze as St,Hp as T,Fe as Tt,Zf as U,Xf as V,If as W,Jt as X,Qt as Y,Wt as Z,tm as _,Ke as _t,oh as a,Ct as at,am as b,He as bt,Dm as c,ct,xm as d,tt as dt,It as et,Sm as f,et as ft,$p as g,Ye as gt,_m as h,Xe as ht,xg as i,jt as it,jp as j,Ee as jt,Gp as k,Ae as kt,Em as l,ot as lt,ym as m,Ze as mt,__ as n,Nt as nt,Lm as o,yt as ot,bm as p,$e as pt,rn as q,h_ as r,Mt as rt,jm as s,vt as st,N_ as t,Pt as tt,vm as u,at as ut,nm as v,Ge as vt,zp as w,Ie as wt,im as x,Be as xt,rm as y,We as yt,Qf as z};
37
+ </svg>`,Jg=`data:image/svg+xml,${encodeURIComponent(Kg)}`,Yg=`data:image/svg+xml,${encodeURIComponent(qg)}`;function Xg(e){let t=document.getElementById(`ppm-favicon`);t&&(t.href=e?Yg:Jg)}function Zg(e,t,n){let r=[t,n||null,`PPM`].filter(Boolean).join(` - `);return e>0?`(${e}) ${r}`:r}function Qg(){let e=If(e=>e.activeProject),t=B(e=>e.deviceName);(0,z.useEffect)(()=>{let n=()=>{let n=ip(rp.getState());document.title=Zg(n,e?.name,t??void 0),Xg(n>0)};return n(),rp.subscribe(n)},[e?.name,t])}var $g=15e3,e_=h((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>=$g})},markUp:()=>{e({isDown:!1,downSince:null,showOverlay:!1})}})),t_=1e4,n_=2e3;function r_(){(0,z.useEffect)(()=>{let e=!1,t,{markDown:n,markUp:r}=e_.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?n_:t_)}return t=setTimeout(i,t_),()=>clearTimeout(t)},[])}var i_=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent);function a_(e){return e?e.replace(/Mod\+/g,i_?`⌘`:`Ctrl+`).replace(/Alt\+/g,i_?`⌥`:`Alt+`).replace(/Shift\+/g,i_?`⇧`:`Shift+`).replace(/Meta\+/g,`⌘`).replace(/Ctrl\+/g,i_?`⌃`:`Ctrl+`):``}function o_(e){let t=[];for(let n of e)n.type===`file`&&t.push({name:n.name,path:n.path}),n.children&&t.push(...o_(n.children));return t}function s_(e){return e?e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`~\\`)||/^[A-Za-z]:[/\\]/.test(e):!1}function c_(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 l_=new Map;function u_({open:e,onClose:t,initialQuery:n=``}){let[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(0),[s,c]=(0,z.useState)([]),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)([]),p=(0,z.useRef)(null),h=(0,z.useRef)(null),g=m(e=>e.openTab),_=If(e=>e.activeProject),v=Op(e=>e.tree),y=B(e=>e.setSidebarActiveTab),b=B(e=>e.sidebarCollapsed),x=B(e=>e.toggleSidebar),S=Zf(e=>e.getBinding),C=Dp(e=>e.contributions),w=(0,z.useCallback)(async e=>{if(l_.has(e)){c(l_.get(e));return}u(!0);try{let t=await R.get(`/api/fs/list?dir=${encodeURIComponent(e)}`);l_.set(e,t),c(t)}catch{c([])}finally{u(!1)}},[]);(0,z.useEffect)(()=>{if(!s_(r)){c([]);return}w(c_(r))},[r,w]),(0,z.useEffect)(()=>{if(s_(r)||r.trim().length<2){f([]);return}let e=setTimeout(async()=>{try{f(await R.get(`/api/db/search?q=${encodeURIComponent(r.trim())}`)??[])}catch{f([])}},300);return()=>clearTimeout(e)},[r]);let T=(0,z.useMemo)(()=>{let e=_?.name??null,n=_?{projectName:_.name}:void 0,r=(r,i)=>()=>{g({type:r,title:i,projectId:e,metadata:n,closable:!0}),t()},i=[{id:`chat`,label:`New AI Chat`,icon:St,action:r(`chat`,`AI Chat`),keywords:`ai assistant claude`,group:`action`,shortcut:a_(S(`open-chat`))},{id:`terminal`,label:`New Terminal`,icon:Qt,action:r(`terminal`,`Terminal`),keywords:`bash shell console`,group:`action`,shortcut:a_(S(`open-terminal`))},{id:`git-graph`,label:`Git Graph`,icon:ot,action:r(`git-graph`,`Git Graph`),keywords:`branch history log`,group:`action`,shortcut:a_(S(`open-git-graph`))},{id:`browser`,label:`Open Browser`,icon:ct,action:r(`browser`,`Browser`),keywords:`web preview localhost iframe url`,group:`action`},{id:`postgres`,label:`PostgreSQL`,icon:Ge,action:r(`postgres`,`PostgreSQL`),keywords:`database pg sql query`,group:`action`},{id:`voice-input`,label:`Voice Input`,icon:Ct,action:()=>{window.dispatchEvent(new CustomEvent(`toggle-voice-input`)),t()},keywords:`speech microphone dictate voice`,group:`action`,shortcut:a_(S(`voice-input`))},{id:`git-status`,label:`Git Status`,icon:st,action:()=>{y(`git`),t()},keywords:`changes diff staged`,group:`action`,shortcut:a_(S(`open-git-status`))},{id:`settings`,label:`Settings`,icon:Jt,action:()=>{b&&x(),y(`settings`),t()},keywords:`config preferences theme`,group:`action`,shortcut:a_(S(`open-settings`))}],a=(C?.commands??[]).map(e=>({id:`ext:${e.command}`,label:e.title,hint:e.category,icon:zt,group:`action`,keywords:`extension ${e.command} ${e.category??``}`,action:()=>{console.log(`[CmdPalette] ext command:`,e.command),t()}}));return[...i,...a]},[_,g,t,y,b,x,S,C]),E=(0,z.useMemo)(()=>{let e=_?.name??null,n=_?{projectName:_.name}:void 0;return o_(v).map(r=>({id:`file:${r.path}`,label:r.name,hint:r.path,icon:Ze,group:`file`,keywords:r.path,action:()=>{g({type:`editor`,title:r.name,projectId:e,metadata:{...n,filePath:r.path},closable:!0}),t()}}))},[v,_,g,t]),D=(0,z.useMemo)(()=>{let e=_?.name??null,n=_?{projectName:_.name}:void 0;return s.map(r=>{let i=de(r);return{id:`fs:${r}`,label:i,hint:r,icon:nt,group:`fs`,keywords:r,action:()=>{g({type:`editor`,title:i,projectId:e,metadata:{...n,filePath:r},closable:!0}),t()}}})},[s,_,g,t]),O=(0,z.useMemo)(()=>d.map(e=>({id:`db:${e.connectionId}:${e.schemaName}.${e.tableName}`,label:e.tableName,hint:`${e.connectionName} (${e.connectionType===`postgres`?`PG`:`SQLite`})`,icon:Ge,group:`db`,connectionColor:e.connectionColor,action:()=>{g({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,g,t]),ee=(0,z.useMemo)(()=>[...T,...E],[T,E]),k=(0,z.useMemo)(()=>{if(s_(r)){let e=r.lastIndexOf(`/`),t=e>=0?r.slice(e+1).toLowerCase():``;return t?D.filter(e=>{let n=e.label.toLowerCase(),r=(e.keywords??``).toLowerCase();return n.includes(t)||r.includes(t)}).slice(0,50):D.slice(0,50)}if(!r.trim())return T;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=ee.filter(e=>t(e.label.toLowerCase())||e.keywords&&t(e.keywords.toLowerCase()));return r.trim().length>=2?[...O,...n]:n},[ee,T,D,O,r]);(0,z.useEffect)(()=>{e&&(i(n||``),o(0),c([]),f([]),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,z.useEffect)(()=>{o(e=>Math.min(e,Math.max(k.length-1,0)))},[k.length]),(0,z.useEffect)(()=>{let e=h.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let A=(0,z.useCallback)(()=>{r.trim()&&(g({type:`chat`,title:`AI Chat`,projectId:_?.name??null,metadata:{projectName:_?.name,pendingMessage:r.trim()},closable:!0}),t())},[r,_,g,t]);function te(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 j=s_(r);return(0,V.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:t,children:[(0,V.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,V.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:te,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,V.jsx)(Wt,{className:`size-4 text-text-subtle shrink-0`}),(0,V.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,V.jsx)(vt,{className:`size-3.5 animate-spin text-text-subtle shrink-0`}),(0,V.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`})]}),j&&!l&&s.length===0&&r.length<4&&(0,V.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,V.jsx)(`div`,{ref:h,className:`max-h-72 overflow-y-auto py-1`,children:k.length===0?l?(0,V.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`Searching...`}):r.trim()?(0,V.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,V.jsx)(St,{className:`size-4 shrink-0 text-accent`}),(0,V.jsxs)(`span`,{children:[`Ask AI: `,(0,V.jsx)(`span`,{className:`text-text-primary font-medium`,children:r.trim().slice(0,60)})]})]}):(0,V.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,V.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,V.jsx)(n,{className:`size-4 shrink-0`}),(0,V.jsx)(`span`,{className:`truncate`,children:e.label}),e.hint&&(0,V.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-xs text-text-subtle truncate max-w-[200px]`,children:[e.connectionColor&&(0,V.jsx)(`span`,{className:`shrink-0 size-2 rounded-full`,style:{backgroundColor:e.connectionColor}}),e.hint]}),e.shortcut&&(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 border-t border-border px-3 py-1.5`,children:[(0,V.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`Press`}),(0,V.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,V.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,V.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`to open this palette`})]})]})]})}function d_(){let[e,t]=(0,z.useState)(null),[n,r]=(0,z.useState)(!1);(0,z.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,z.useCallback)(()=>t(null),[]);return e?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:i}),(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,V.jsx)(`span`,{className:`text-sm font-medium`,children:`Bug Report`}),(0,V.jsx)(`button`,{onClick:i,className:`p-1 rounded hover:bg-surface-elevated`,children:(0,V.jsx)(sn,{className:`size-4`})})]}),(0,V.jsx)(`pre`,{className:`flex-1 overflow-auto px-4 py-2 text-xs font-mono whitespace-pre-wrap break-all`,children:e}),(0,V.jsxs)(`div`,{className:`flex gap-2 p-3 border-t border-border`,children:[(0,V.jsxs)(`button`,{onClick:async()=>{await bg(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,V.jsx)(Ne,{className:`size-3`}):(0,V.jsx)(We,{className:`size-3`}),n?`Copied`:`Copy`]}),(0,V.jsxs)(`button`,{onClick:()=>{yg(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,V.jsx)(l,{className:`size-3`}),`Open GitHub Issue`]})]})]})]}):null}var f_=6e4,p_=`ppm-upgrade-dismissed-`;function m_({onVisibilityChange:e}){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(!1);(0,z.useEffect)(()=>{let e;async function t(){try{let e=await R.get(`/api/upgrade`);if(e.availableVersion){n(e.availableVersion);let t=p_+e.availableVersion;sessionStorage.getItem(t)?o(!0):o(!1)}else n(null)}catch{}}return t(),e=setInterval(t,f_),()=>clearInterval(e)},[]);let s=(0,z.useCallback)(async()=>{i(!0);try{await R.post(`/api/upgrade/apply`)}catch(e){Dn.error(`Upgrade failed: ${e.message}`),i(!1)}},[]),c=(0,z.useCallback)(()=>{t&&sessionStorage.setItem(p_+t,`1`),o(!0)},[t]),l=!!t&&!a;return(0,z.useEffect)(()=>{e?.(l)},[l,e]),l?(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,V.jsx)(vt,{className:`size-4 animate-spin shrink-0`}),(0,V.jsxs)(`span`,{className:`truncate`,children:[`Upgrading to v`,t,`... PPM will restart shortly`]})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-2 flex-1 min-w-0`,children:[(0,V.jsx)(Re,{className:`size-4 shrink-0`}),(0,V.jsxs)(`span`,{className:`truncate`,children:[`PPM v`,t,` available`]})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,V.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,V.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,V.jsx)(sn,{className:`size-4`})})]})]})}):null}var h_=h(e=>({src:null,alt:``,open:(t,n=``)=>e({src:t,alt:n}),close:()=>e({src:null,alt:``})}));function g_(){let{src:e,alt:t,close:n}=h_(),r=(0,z.useCallback)(e=>{e.key===`Escape`&&n()},[n]);return(0,z.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,r),()=>document.removeEventListener(`keydown`,r)},[e,r]),e?(0,V.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,V.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,V.jsx)(sn,{className:`size-5`})}),(0,V.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 __=h(e=>({svg:null,open:t=>e({svg:t}),close:()=>e({svg:null})})),v_=.25,y_=4,b_=.25;function x_(){let{svg:e,close:t}=__(),n=(0,z.useRef)(null),[r,i]=(0,z.useState)(1),[a,o]=(0,z.useState)({x:0,y:0}),s=(0,z.useRef)(!1),c=(0,z.useRef)({x:0,y:0});(0,z.useEffect)(()=>{e&&(i(1),o({x:0,y:0}))},[e]);let l=(0,z.useCallback)(e=>{e.key===`Escape`&&t(),(e.key===`=`||e.key===`+`)&&i(e=>Math.min(y_,e+b_)),e.key===`-`&&i(e=>Math.max(v_,e-b_)),e.key===`0`&&(i(1),o({x:0,y:0}))},[t]);(0,z.useEffect)(()=>{if(e)return document.addEventListener(`keydown`,l),()=>document.removeEventListener(`keydown`,l)},[e,l]);let u=(0,z.useCallback)(e=>{e.preventDefault();let t=e.deltaY>0?-b_:b_;i(e=>Math.min(y_,Math.max(v_,e+t)))},[]),d=(0,z.useCallback)(e=>{e.button===0&&(s.current=!0,c.current={x:e.clientX,y:e.clientY},e.target.setPointerCapture(e.pointerId))},[]),f=(0,z.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,z.useCallback)(()=>{s.current=!1},[]);return e?(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-black/40`,onClick:e=>e.stopPropagation(),children:[(0,V.jsxs)(`span`,{className:`text-sm text-white/70`,children:[Math.round(r*100),`% — Scroll to zoom, drag to pan, 0 to reset`]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,V.jsx)(`button`,{onClick:()=>i(e=>Math.max(v_,e-b_)),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,V.jsx)(ln,{className:`size-4`})}),(0,V.jsx)(`button`,{onClick:()=>i(e=>Math.min(y_,e+b_)),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,V.jsx)(cn,{className:`size-4`})}),(0,V.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,V.jsx)(Ut,{className:`size-4`})}),(0,V.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,V.jsx)(sn,{className:`size-5`})})]})]}),(0,V.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,V.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,V.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 S_=`https://ppm.hienle.tech`;function C_(){return window.location.hostname.endsWith(`.trycloudflare.com`)}function w_(){let e=e_(e=>e.showOverlay),[t,n]=(0,z.useState)(!1);if(!e)return null;let r=C_();async function i(){n(!0);try{if((await fetch(`/api/health`,{cache:`no-store`})).ok){if(e_.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,V.jsx)(`div`,{className:`fixed inset-0 z-[200] bg-background/95 backdrop-blur-sm flex items-center justify-center p-4`,children:(0,V.jsxs)(`div`,{className:`max-w-sm w-full text-center space-y-6`,children:[(0,V.jsx)(`div`,{className:`flex justify-center`,children:(0,V.jsx)(`div`,{className:`rounded-full bg-destructive/10 p-4`,children:(0,V.jsx)(r?on:Kt,{className:`h-10 w-10 text-destructive`})})}),(0,V.jsxs)(`div`,{className:`space-y-2`,children:[(0,V.jsx)(`h2`,{className:`text-xl font-semibold text-foreground`,children:r?`Connection Lost`:`Server Unreachable`}),(0,V.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,V.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[r&&(0,V.jsx)(`a`,{href:S_,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,V.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,V.jsx)(Bt,{className:`h-4 w-4 ${t?`animate-spin`:``}`}),t?`Retrying…`:`Retry Connection`]})]}),!r&&(0,V.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`If the server was stopped, run `,(0,V.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded text-[11px]`,children:`ppm start`}),` to restart it.`]})]})})}function T_(){let e=Dp(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,V.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,V.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:t.map(e=>(0,V.jsx)(E_,{item:e},e.id))}),(0,V.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:n.map(e=>(0,V.jsx)(E_,{item:e},e.id))})]})}function E_({item:e}){let t=(0,V.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,V.jsxs)(zu,{children:[(0,V.jsx)(Bu,{asChild:!0,children:t}),(0,V.jsx)(Vu,{side:`top`,className:`text-xs`,children:e.tooltip})]}):t}function D_(){let e=Dp(e=>e.quickPick),t=Dp(e=>e.resolveQuickPick);return e?(0,V.jsx)(O_,{items:e.items,options:e.options,onSelect:e=>t(e),onCancel:()=>t(void 0)}):null}function O_({items:e,options:t,onSelect:n,onCancel:r}){let[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(0),[c,l]=(0,z.useState)(()=>{let t=new Set;return e.forEach((e,n)=>{e.picked&&t.add(n)}),t}),u=(0,z.useRef)(null),d=(0,z.useRef)(null),f=t.canPickMany??!1;(0,z.useEffect)(()=>{requestAnimationFrame(()=>u.current?.focus())},[]);let p=(0,z.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,z.useEffect)(()=>{s(e=>Math.min(e,Math.max(p.length-1,0)))},[p.length]),(0,z.useEffect)(()=>{(d.current?.children[o])?.scrollIntoView({block:`nearest`})},[o]);let m=(0,z.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,V.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:r,children:[(0,V.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,V.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,V.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,V.jsx)(Wt,{className:`size-4 text-text-subtle shrink-0`}),(0,V.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,V.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,V.jsx)(`div`,{ref:d,className:`max-h-72 overflow-y-auto py-1`,children:p.length===0?(0,V.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,V.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:L(`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,V.jsx)(`span`,{className:L(`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,V.jsx)(Ne,{className:`size-3`})}),(0,V.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,V.jsx)(`div`,{className:`truncate`,children:e.label}),e.description&&(0,V.jsx)(`span`,{className:`text-xs text-text-subtle ml-2`,children:e.description}),e.detail&&(0,V.jsx)(`div`,{className:`text-xs text-text-subtle truncate mt-0.5`,children:e.detail})]})]},t))}),f&&(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-3 py-1.5`,children:[(0,V.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[c.size,` selected`]}),(0,V.jsx)(`button`,{onClick:m,className:`text-xs text-primary hover:text-primary/80 font-medium`,children:`Confirm`})]})]})]})}function k_(){let e=Dp(e=>e.inputBox),t=Dp(e=>e.resolveInputBox);return e?(0,V.jsx)(A_,{options:e.options,onConfirm:e=>t(e),onCancel:()=>t(void 0)}):null}function A_({options:e,onConfirm:t,onCancel:n}){let[r,i]=(0,z.useState)(e.value??``),a=(0,z.useRef)(null);(0,z.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,V.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:n,children:[(0,V.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,V.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,V.jsx)(`div`,{className:`px-3 pt-3 pb-1 text-sm text-text-primary`,children:e.prompt}),(0,V.jsx)(`div`,{className:`flex items-center gap-2 px-3 py-2.5`,children:(0,V.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,V.jsxs)(`div`,{className:`flex items-center justify-end gap-2 border-t border-border px-3 py-2`,children:[(0,V.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,V.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 j_=3e4,M_=1e3,N_=class{ws=null;url;handlers=[];reconnectAttempts=0;reconnectTimer=null;intentionalClose=!1;pendingMessages=[];constructor(e){this.url=e}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)}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(M_*2**this.reconnectAttempts,j_);this.reconnectAttempts++,this.reconnectTimer=setTimeout(()=>this.connect(),e)}};function P_(e=!0){let t=(0,z.useRef)(null),n=(0,z.useCallback)(e=>{t.current?.send(JSON.stringify(e))},[]);return(0,z.useEffect)(()=>{if(!e)return;let r=me(),i=new N_(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=Dp.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`?Dn.error:t.level===`warn`?Dn.warning:Dn.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:``}),m.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 F_(){let[e,t]=(0,z.useState)(`checking`),[n,r]=(0,z.useState)(!1),[i,a]=(0,z.useState)(!1),[o,l]=(0,z.useState)(),[d,f]=(0,z.useState)(!1);(0,z.useEffect)(()=>{let e=()=>{l(`settings`),a(!0)};return window.addEventListener(`open-mobile-settings`,e),()=>window.removeEventListener(`open-mobile-settings`,e)},[]);let[h,_]=(0,z.useState)(()=>new Set([`__global__`])),v=B(e=>e.theme),y=B(e=>e.deviceName),b=If(e=>e.fetchProjects),x=B(e=>e.fetchServerInfo),S=If(e=>e.activeProject),C=(0,z.useRef)(zg());(0,z.useEffect)(()=>{if(qn(v),v===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>qn(`system`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)}},[v]),(0,z.useEffect)(()=>{x()},[x]),(0,z.useEffect)(()=>{async function e(){let e=me();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()},[]),Gg();let{paletteOpen:w,paletteInitialQuery:T,closePalette:E}=$f();Qg(),r_(),P_(e===`authenticated`),(0,z.useEffect)(()=>{if(e!==`authenticated`)return;let t=e=>{e.preventDefault()};return window.addEventListener(`beforeunload`,t),()=>window.removeEventListener(`beforeunload`,t)},[e]),(0,z.useEffect)(()=>{e===`authenticated`&&g(async()=>{let{useKeybindingsStore:e}=await import(`./keybindings-store-6_p_JT0B.js`);return{useKeybindingsStore:e}},__vite__mapDeps([53,6,1,2])).then(({useKeybindingsStore:e})=>{e.getState().loadFromServer()})},[e]),(0,z.useEffect)(()=>{e===`authenticated`&&b().then(async()=>{let e=C.current,{projects:t,customOrder:n}=If.getState();if(t.length===0)return;let r=e.projectName?t.find(t=>t.name===e.projectName):void 0;if(r||=Ff(t,n)[0],!r)return;If.getState().setActiveProject(r);let i=await c(r.name);if(i){let e=localStorage.getItem(`ppm-panels-${r.name}`),t=p(e?JSON.parse(e):null,i);t&&t===i&&(s(r.name,t),u.getState().reloadProject(r.name))}queueMicrotask(()=>{if(e.tabType&&Wg(e.tabType,e.tabIdentifier,r.name),e.openChat){Wg(`chat`,e.openChat,r.name);let t=new URL(window.location.href);t.searchParams.delete(`openChat`),window.history.replaceState(null,``,t.pathname)}})})},[e,b]),(0,z.useEffect)(()=>{let e=S?.name??`__global__`;m.getState().switchProject(e)},[S?.name]),(0,z.useEffect)(()=>{let e=S?.name??`__global__`;_(t=>t.has(e)?t:new Set([...t,e]))},[S?.name]),(0,z.useEffect)(()=>{e===`authenticated`&&!S&&m.getState().switchProject(`__global__`)},[e,S]);let D=(0,z.useCallback)(()=>{t(`authenticated`)},[]);if(e===`checking`)return(0,V.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background`,children:(0,V.jsx)(`div`,{className:`animate-pulse text-text-secondary text-sm`,children:`Loading...`})});if(e===`unauthenticated`)return(0,V.jsx)(Lg,{onSuccess:D});let O=S?.name??`__global__`;return(0,V.jsx)(Ru,{children:(0,V.jsxs)(`div`,{className:`h-dvh flex flex-col bg-background text-foreground overflow-hidden relative`,children:[(0,V.jsx)(m_,{onVisibilityChange:r}),y&&(0,V.jsx)(`div`,{className:L(`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:y}),(0,V.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,V.jsx)(Og,{}),(0,V.jsx)(Vh,{}),(0,V.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[[...h].map(e=>(0,V.jsx)(`div`,{className:L(`flex-1 overflow-hidden pb-12 md:pb-0`,O!==e&&`hidden`),children:(0,V.jsx)(Cp,{projectName:e})},e)),(0,V.jsx)(T_,{})]})]}),(0,V.jsx)(Mg,{onMenuPress:()=>a(!0),onProjectsPress:()=>f(!0)}),(0,V.jsx)(Pg,{isOpen:i,onClose:()=>{a(!1),l(void 0)},initialTab:o}),(0,V.jsx)(Ig,{isOpen:d,onClose:()=>f(!1)}),(0,V.jsx)(u_,{open:w,onClose:E,initialQuery:T}),(0,V.jsx)(d_,{}),(0,V.jsx)(g_,{}),(0,V.jsx)(x_,{}),(0,V.jsx)(D_,{}),(0,V.jsx)(k_,{}),(0,V.jsx)(w_,{}),(0,V.jsx)(Yn,{position:`bottom-left`,closeButton:!0,toastOptions:{className:`bg-surface border-border text-foreground`}})]})})}(0,un.createRoot)(document.getElementById(`root`)).render((0,V.jsx)(z.StrictMode,{children:(0,V.jsx)(F_,{})}));export{Bt as $,$ as A,Ae as At,Gf as B,qp as C,ze as Ct,Wp as D,Pe as Dt,Kp as E,Fe as Et,Mp as F,B as G,Yf as H,Op as I,$t as J,sn as K,Dp as L,Np as M,Ee as Mt,Pp as N,Up as O,Ne as Ot,Fp as P,Ut as Q,rp as R,em as S,Be as St,Hp as T,Ie as Tt,Zf as U,Xf as V,If as W,Jt as X,Qt as Y,Wt as Z,tm as _,Ye as _t,oh as a,Ct as at,am as b,We as bt,Dm as c,vt as ct,xm as d,at as dt,It as et,Sm as f,tt as ft,$p as g,Xe as gt,_m as h,Ze as ht,xg as i,jt as it,jp as j,De as jt,Gp as k,je as kt,Em as l,ct as lt,ym as m,$e as mt,__ as n,Nt as nt,Lm as o,St as ot,bm as p,et as pt,rn as q,h_ as r,Mt as rt,jm as s,yt as st,N_ as t,Pt as tt,vm as u,ot as ut,nm as v,Ke as vt,zp as w,Le as wt,im as x,He as xt,rm as y,Ge as yt,Qf as z};