@hienlh/ppm 0.6.4 → 0.6.6

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 (57) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/web/assets/{chat-tab-CDVCDw_H.js → chat-tab-dwpaSkQD.js} +3 -3
  3. package/dist/web/assets/{code-editor-wmS73ejX.js → code-editor-ZFl5kZ4-.js} +1 -1
  4. package/dist/web/assets/database-viewer-DPpOsMqa.js +1 -0
  5. package/dist/web/assets/{diff-viewer-BsYccTx1.js → diff-viewer-CX74l6lV.js} +1 -1
  6. package/dist/web/assets/dist-Jb3Tnkpc.js +16 -0
  7. package/dist/web/assets/{git-graph-BbWb6_Jq.js → git-graph-Dju1rygf.js} +1 -1
  8. package/dist/web/assets/index-DSg2VjxL.css +2 -0
  9. package/dist/web/assets/{index-DhuAmTQ1.js → index-DXOEmhRm.js} +6 -6
  10. package/dist/web/assets/{input-CCCPR1s4.js → input-nI4xe1Y9.js} +1 -1
  11. package/dist/web/assets/keybindings-store-VhiJwp77.js +1 -0
  12. package/dist/web/assets/{markdown-renderer-aPdw9BhU.js → markdown-renderer-Bke6DHFh.js} +1 -1
  13. package/dist/web/assets/postgres-viewer-DaNYnInA.js +1 -0
  14. package/dist/web/assets/{settings-store-DgOSmeGL.js → settings-store-CfB0vCtQ.js} +1 -1
  15. package/dist/web/assets/settings-tab-DD05d8rM.js +1 -0
  16. package/dist/web/assets/sqlite-viewer-Cx7tLyT-.js +1 -0
  17. package/dist/web/assets/{tab-store-DhXold0e.js → tab-store-DIyJSjtr.js} +1 -1
  18. package/dist/web/assets/table-DCVKGOr2.js +1 -0
  19. package/dist/web/assets/{terminal-tab-3tDV4RCn.js → terminal-tab-_farMLMO.js} +1 -1
  20. package/dist/web/assets/{use-monaco-theme-Ccqh1RD4.js → use-monaco-theme-Dexl3s3E.js} +1 -1
  21. package/dist/web/index.html +8 -8
  22. package/dist/web/sw.js +1 -1
  23. package/package.json +1 -1
  24. package/src/server/routes/chat.ts +2 -2
  25. package/src/server/routes/database.ts +5 -3
  26. package/src/services/database/sqlite-adapter.ts +1 -2
  27. package/src/services/sqlite.service.ts +2 -1
  28. package/src/types/config.ts +10 -2
  29. package/src/web/components/chat/tool-cards.tsx +2 -2
  30. package/src/web/components/database/connection-list.tsx +82 -33
  31. package/src/web/components/database/database-sidebar.tsx +2 -13
  32. package/src/web/components/database/database-viewer.tsx +232 -0
  33. package/src/web/components/database/use-connections.ts +14 -21
  34. package/src/web/components/database/use-database.ts +120 -0
  35. package/src/web/components/layout/command-palette.tsx +4 -5
  36. package/src/web/components/layout/editor-panel.tsx +1 -0
  37. package/src/web/components/layout/mobile-nav.tsx +1 -1
  38. package/src/web/components/layout/sidebar.tsx +1 -2
  39. package/src/web/components/layout/tab-bar.tsx +1 -0
  40. package/src/web/components/layout/tab-content.tsx +5 -0
  41. package/src/web/components/postgres/postgres-viewer.tsx +38 -30
  42. package/src/web/components/postgres/use-postgres.ts +2 -5
  43. package/src/web/components/settings/ai-settings-section.tsx +0 -1
  44. package/src/web/components/sqlite/sqlite-viewer.tsx +24 -18
  45. package/src/web/components/sqlite/use-sqlite.ts +4 -4
  46. package/src/web/hooks/use-chat.ts +1 -1
  47. package/src/web/hooks/use-usage.ts +1 -1
  48. package/src/web/stores/tab-store.ts +1 -0
  49. package/dist/web/assets/dist-PpKqMvyx.js +0 -16
  50. package/dist/web/assets/index-aIGuIMQ8.css +0 -2
  51. package/dist/web/assets/keybindings-store-BqgrTQAC.js +0 -1
  52. package/dist/web/assets/postgres-viewer-V4hKmmzV.js +0 -1
  53. package/dist/web/assets/settings-tab-DwsKpk9T.js +0 -1
  54. package/dist/web/assets/sqlite-viewer-BRsj8GXc.js +0 -1
  55. /package/dist/web/assets/{api-client-BHpHp5Lz.js → api-client-4Ni0i4Hl.js} +0 -0
  56. /package/dist/web/assets/{react-l9v2XLcs.js → react-DHSo28we.js} +0 -0
  57. /package/dist/web/assets/{utils-CAPYyGV3.js → utils-siJJ3uG0.js} +0 -0
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/terminal-tab-3tDV4RCn.js","assets/react-CYzKIDNi.js","assets/utils-CAPYyGV3.js","assets/jsx-runtime-wQxeESYQ.js","assets/settings-store-DgOSmeGL.js","assets/react-l9v2XLcs.js","assets/terminal-tab-BrP-ENHg.css","assets/chat-tab-CDVCDw_H.js","assets/input-CCCPR1s4.js","assets/tab-store-DhXold0e.js","assets/markdown-renderer-aPdw9BhU.js","assets/api-client-BHpHp5Lz.js","assets/code-editor-wmS73ejX.js","assets/use-monaco-theme-Ccqh1RD4.js","assets/sqlite-viewer-BRsj8GXc.js","assets/dist-PpKqMvyx.js","assets/postgres-viewer-V4hKmmzV.js","assets/git-graph-BbWb6_Jq.js","assets/diff-viewer-BsYccTx1.js","assets/settings-tab-DwsKpk9T.js","assets/keybindings-store-BqgrTQAC.js"])))=>i.map(i=>d[i]);
2
- import{i as e,n as t,t as n}from"./react-CYzKIDNi.js";import{A as r,C as i,D as a,E as o,O as s,S as c,T as l,_ as u,a as d,b as f,c as p,d as m,f as h,g,h as _,i as v,j as y,k as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k,v as A,w as ee,x as te,y as j}from"./input-CCCPR1s4.js";import{n as M,t as N}from"./jsx-runtime-wQxeESYQ.js";import{a as P,i as ne,n as F,r as re,t as I}from"./tab-store-DhXold0e.js";import{t as L}from"./react-l9v2XLcs.js";import{n as R,t as ie}from"./settings-store-DgOSmeGL.js";import{i as ae,n as z,t as oe}from"./utils-CAPYyGV3.js";import{a as se,i as ce,r as le,t as B}from"./api-client-BHpHp5Lz.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 ue=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&&ee(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&&ee(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function ee(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,ee(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}}}})),de=t(((e,t)=>{t.exports=ue()})),fe=t((e=>{var t=de(),r=n(),i=y();function a(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 o(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function s(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 c(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 l(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 u(e){if(s(e)!==e)throw Error(a(188))}function d(e){var t=e.alternate;if(!t){if(t=s(e),t===null)throw Error(a(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var o=i.alternate;if(o===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===o.child){for(o=i.child;o;){if(o===n)return u(i),e;if(o===r)return u(i),t;o=o.sibling}throw Error(a(188))}if(n.return!==r.return)n=i,r=o;else{for(var c=!1,l=i.child;l;){if(l===n){c=!0,n=i,r=o;break}if(l===r){c=!0,r=i,n=o;break}l=l.sibling}if(!c){for(l=o.child;l;){if(l===n){c=!0,n=o,r=i;break}if(l===r){c=!0,r=o,n=i;break}l=l.sibling}if(!c)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(n.tag!==3)throw Error(a(188));return n.stateNode.current===n?e:t}function f(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=f(e),t!==null)return t;e=e.sibling}return null}var p=Object.assign,m=Symbol.for(`react.element`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),b=Symbol.for(`react.profiler`),x=Symbol.for(`react.consumer`),S=Symbol.for(`react.context`),C=Symbol.for(`react.forward_ref`),w=Symbol.for(`react.suspense`),T=Symbol.for(`react.suspense_list`),E=Symbol.for(`react.memo`),D=Symbol.for(`react.lazy`),O=Symbol.for(`react.activity`),k=Symbol.for(`react.memo_cache_sentinel`),A=Symbol.iterator;function ee(e){return typeof e!=`object`||!e?null:(e=A&&e[A]||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 _:return`Fragment`;case b:return`Profiler`;case v:return`StrictMode`;case w:return`Suspense`;case T:return`SuspenseList`;case O:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case g: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 M=Array.isArray,N=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,P=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne={pending:!1,data:null,method:null,action:null},F=[],re=-1;function I(e){return{current:e}}function L(e){0>re||(e.current=F[re],F[re]=null,re--)}function R(e,t){re++,F[re]=e.current,e.current=t}var ie=I(null),ae=I(null),z=I(null),oe=I(null);function se(e,t){switch(R(z,t),R(ae,e),R(ie,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}L(ie),R(ie,e)}function ce(){L(ie),L(ae),L(z)}function le(e){e.memoizedState!==null&&R(oe,e);var t=ie.current,n=Hd(t,e.type);t!==n&&(R(ae,e),R(ie,n))}function B(e){ae.current===e&&(L(ie),L(ae)),oe.current===e&&(L(oe),Qf._currentValue=ne)}var ue,fe;function pe(e){if(ue===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ue=t&&t[1]||``,fe=-1<e.stack.indexOf(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/terminal-tab-_farMLMO.js","assets/react-CYzKIDNi.js","assets/utils-siJJ3uG0.js","assets/jsx-runtime-wQxeESYQ.js","assets/settings-store-CfB0vCtQ.js","assets/react-DHSo28we.js","assets/terminal-tab-BrP-ENHg.css","assets/chat-tab-dwpaSkQD.js","assets/input-nI4xe1Y9.js","assets/tab-store-DIyJSjtr.js","assets/markdown-renderer-Bke6DHFh.js","assets/api-client-4Ni0i4Hl.js","assets/code-editor-ZFl5kZ4-.js","assets/use-monaco-theme-Dexl3s3E.js","assets/database-viewer-DPpOsMqa.js","assets/dist-Jb3Tnkpc.js","assets/sqlite-viewer-Cx7tLyT-.js","assets/table-DCVKGOr2.js","assets/postgres-viewer-DaNYnInA.js","assets/git-graph-Dju1rygf.js","assets/diff-viewer-CX74l6lV.js","assets/settings-tab-DD05d8rM.js","assets/keybindings-store-VhiJwp77.js"])))=>i.map(i=>d[i]);
2
+ import{i as e,n as t,t as n}from"./react-CYzKIDNi.js";import{A as r,C as i,D as a,E as o,O as s,S as c,T as l,_ as u,a as d,b as f,c as p,d as m,f as h,g,h as _,i as v,j as y,k as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k,v as A,w as ee,x as te,y as j}from"./input-nI4xe1Y9.js";import{n as M,t as N}from"./jsx-runtime-wQxeESYQ.js";import{a as P,i as ne,n as F,r as re,t as I}from"./tab-store-DIyJSjtr.js";import{t as L}from"./react-DHSo28we.js";import{n as R,t as ie}from"./settings-store-CfB0vCtQ.js";import{i as ae,n as z,t as oe}from"./utils-siJJ3uG0.js";import{a as se,i as ce,r as le,t as B}from"./api-client-4Ni0i4Hl.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 ue=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&&ee(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&&ee(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function ee(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,ee(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}}}})),de=t(((e,t)=>{t.exports=ue()})),fe=t((e=>{var t=de(),r=n(),i=y();function a(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 o(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function s(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 c(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 l(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 u(e){if(s(e)!==e)throw Error(a(188))}function d(e){var t=e.alternate;if(!t){if(t=s(e),t===null)throw Error(a(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var o=i.alternate;if(o===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===o.child){for(o=i.child;o;){if(o===n)return u(i),e;if(o===r)return u(i),t;o=o.sibling}throw Error(a(188))}if(n.return!==r.return)n=i,r=o;else{for(var c=!1,l=i.child;l;){if(l===n){c=!0,n=i,r=o;break}if(l===r){c=!0,r=i,n=o;break}l=l.sibling}if(!c){for(l=o.child;l;){if(l===n){c=!0,n=o,r=i;break}if(l===r){c=!0,r=o,n=i;break}l=l.sibling}if(!c)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(n.tag!==3)throw Error(a(188));return n.stateNode.current===n?e:t}function f(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=f(e),t!==null)return t;e=e.sibling}return null}var p=Object.assign,m=Symbol.for(`react.element`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),b=Symbol.for(`react.profiler`),x=Symbol.for(`react.consumer`),S=Symbol.for(`react.context`),C=Symbol.for(`react.forward_ref`),w=Symbol.for(`react.suspense`),T=Symbol.for(`react.suspense_list`),E=Symbol.for(`react.memo`),D=Symbol.for(`react.lazy`),O=Symbol.for(`react.activity`),k=Symbol.for(`react.memo_cache_sentinel`),A=Symbol.iterator;function ee(e){return typeof e!=`object`||!e?null:(e=A&&e[A]||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 _:return`Fragment`;case b:return`Profiler`;case v:return`StrictMode`;case w:return`Suspense`;case T:return`SuspenseList`;case O:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case g: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 M=Array.isArray,N=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,P=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne={pending:!1,data:null,method:null,action:null},F=[],re=-1;function I(e){return{current:e}}function L(e){0>re||(e.current=F[re],F[re]=null,re--)}function R(e,t){re++,F[re]=e.current,e.current=t}var ie=I(null),ae=I(null),z=I(null),oe=I(null);function se(e,t){switch(R(z,t),R(ae,e),R(ie,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}L(ie),R(ie,e)}function ce(){L(ie),L(ae),L(z)}function le(e){e.memoizedState!==null&&R(oe,e);var t=ie.current,n=Hd(t,e.type);t!==n&&(R(ae,e),R(ie,n))}function B(e){ae.current===e&&(L(ie),L(ae)),oe.current===e&&(L(oe),Qf._currentValue=ne)}var ue,fe;function pe(e){if(ue===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ue=t&&t[1]||``,fe=-1<e.stack.indexOf(`
3
3
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
4
4
  `+ue+e+fe}var me=!1;function he(e,t){if(!e||me)return``;me=!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(`
5
5
  `),l=s.split(`
@@ -11,11 +11,11 @@ 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 V.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Rn=`DialogDescriptionWarning`,zn=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${In(Rn).contentName}}.`;return V.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Bn=dn,Vn=_n,Hn=yn,Un=Cn,Wn=On,Gn=An,Kn=Mn;function qn(e){let t=V.useRef({value:e,previous:e});return V.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Jn=`rovingFocusGroup.onEntryFocus`,Yn={bubbles:!1,cancelable:!0},Xn=`RovingFocusGroup`,[Zn,Qn,$n]=f(Xn),[er,tr]=c(Xn,[$n]),[nr,rr]=er(Xn),ir=V.forwardRef((e,t)=>(0,H.jsx)(Zn.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,H.jsx)(Zn.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,H.jsx)(ar,{...e,ref:t})})}));ir.displayName=Xn;var ar=V.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:o,currentTabStopId:s,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:d,preventScrollOnEntryFocus:f=!1,...p}=e,m=V.useRef(null),h=b(t,m),g=_(o),[v,y]=u({prop:s,defaultProp:c??null,onChange:l,caller:Xn}),[x,C]=V.useState(!1),w=S(d),T=Qn(n),E=V.useRef(!1),[D,O]=V.useState(0);return V.useEffect(()=>{let e=m.current;if(e)return e.addEventListener(Jn,w),()=>e.removeEventListener(Jn,w)},[w]),(0,H.jsx)(nr,{scope:n,orientation:r,dir:g,loop:a,currentTabStopId:v,onItemFocus:V.useCallback(e=>y(e),[y]),onItemShiftTab:V.useCallback(()=>C(!0),[]),onFocusableItemAdd:V.useCallback(()=>O(e=>e+1),[]),onFocusableItemRemove:V.useCallback(()=>O(e=>e-1),[]),children:(0,H.jsx)(i.div,{tabIndex:x||D===0?-1:0,"data-orientation":r,...p,ref:h,style:{outline:`none`,...e.style},onMouseDown:j(e.onMouseDown,()=>{E.current=!0}),onFocus:j(e.onFocus,e=>{let t=!E.current;if(e.target===e.currentTarget&&t&&!x){let t=new CustomEvent(Jn,Yn);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=T().filter(e=>e.focusable);dr([e.find(e=>e.active),e.find(e=>e.id===v),...e].filter(Boolean).map(e=>e.ref.current),f)}}E.current=!1}),onBlur:j(e.onBlur,()=>C(!1))})})}),or=`RovingFocusGroupItem`,sr=V.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:o,children:s,...c}=e,l=g(),u=o||l,d=rr(or,n),f=d.currentTabStopId===u,p=Qn(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:_}=d;return V.useEffect(()=>{if(r)return m(),()=>h()},[r,m,h]),(0,H.jsx)(Zn.ItemSlot,{scope:n,id:u,focusable:r,active:a,children:(0,H.jsx)(i.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:j(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:j(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:j(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ur(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?fr(n,r+1):n.slice(r+1)}setTimeout(()=>dr(n))}}),children:typeof s==`function`?s({isCurrentTabStop:f,hasTabStop:_!=null}):s})})});sr.displayName=or;var cr={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function lr(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ur(e,t,n){let r=lr(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return cr[r]}function dr(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function fr(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var pr=ir,mr=sr,hr=[`Enter`,` `],gr=[`ArrowDown`,`PageUp`,`Home`],_r=[`ArrowUp`,`PageDown`,`End`],vr=[...gr,..._r],yr={ltr:[...hr,`ArrowRight`],rtl:[...hr,`ArrowLeft`]},br={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},xr=`Menu`,[Sr,Cr,wr]=f(xr),[Tr,Er]=c(xr,[wr,D,tr]),Dr=D(),Or=tr(),[kr,Ar]=Tr(xr),[jr,Mr]=Tr(xr),Nr=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=Dr(t),[c,l]=V.useState(null),u=V.useRef(!1),d=S(a),f=_(i);return V.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,H.jsx)(w,{...s,children:(0,H.jsx)(kr,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,H.jsx)(jr,{scope:t,onClose:V.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Nr.displayName=xr;var Pr=`MenuAnchor`,Fr=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=Dr(n);return(0,H.jsx)(E,{...i,...r,ref:t})});Fr.displayName=Pr;var Ir=`MenuPortal`,[Lr,Rr]=Tr(Ir,{forceMount:void 0}),zr=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Ar(Ir,t);return(0,H.jsx)(Lr,{scope:t,forceMount:n,children:(0,H.jsx)(tn,{present:n||a.open,children:(0,H.jsx)(m,{asChild:!0,container:i,children:r})})})};zr.displayName=Ir;var Br=`MenuContent`,[Vr,Hr]=Tr(Br),Ur=V.forwardRef((e,t)=>{let n=Rr(Br,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ar(Br,e.__scopeMenu),o=Mr(Br,e.__scopeMenu);return(0,H.jsx)(Sr.Provider,{scope:e.__scopeMenu,children:(0,H.jsx)(tn,{present:r||a.open,children:(0,H.jsx)(Sr.Slot,{scope:e.__scopeMenu,children:o.modal?(0,H.jsx)(Wr,{...i,ref:t}):(0,H.jsx)(Gr,{...i,ref:t})})})})}),Wr=V.forwardRef((e,t)=>{let n=Ar(Br,e.__scopeMenu),r=V.useRef(null),i=b(t,r);return V.useEffect(()=>{let e=r.current;if(e)return p(e)},[]),(0,H.jsx)(qr,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:j(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Gr=V.forwardRef((e,t)=>{let n=Ar(Br,e.__scopeMenu);return(0,H.jsx)(qr,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Kr=o(`MenuContent.ScrollLock`),qr=V.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:f,onInteractOutside:p,onDismiss:m,disableOutsideScroll:g,..._}=e,v=Ar(Br,n),y=Mr(Br,n),S=Dr(n),C=Or(n),w=Cr(n),[E,D]=V.useState(null),O=V.useRef(null),A=b(t,O,v.onContentChange),ee=V.useRef(0),te=V.useRef(``),M=V.useRef(0),N=V.useRef(null),P=V.useRef(`right`),ne=V.useRef(0),F=g?x:V.Fragment,re=g?{as:Kr,allowPinchZoom:!0}:void 0,I=e=>{let t=te.current+e,n=w().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=U(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){te.current=t,window.clearTimeout(ee.current),t!==``&&(ee.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};V.useEffect(()=>()=>window.clearTimeout(ee.current),[]),k();let L=V.useCallback(e=>P.current===N.current?.side&&Mi(e,N.current?.area),[]);return(0,H.jsx)(Vr,{scope:n,searchRef:te,onItemEnter:V.useCallback(e=>{L(e)&&e.preventDefault()},[L]),onItemLeave:V.useCallback(e=>{L(e)||(O.current?.focus(),D(null))},[L]),onTriggerLeave:V.useCallback(e=>{L(e)&&e.preventDefault()},[L]),pointerGraceTimerRef:M,onPointerGraceIntentChange:V.useCallback(e=>{N.current=e},[]),children:(0,H.jsx)(F,{...re,children:(0,H.jsx)(h,{asChild:!0,trapped:i,onMountAutoFocus:j(a,e=>{e.preventDefault(),O.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:f,onInteractOutside:p,onDismiss:m,children:(0,H.jsx)(pr,{asChild:!0,...C,dir:y.dir,orientation:`vertical`,loop:r,currentTabStopId:E,onCurrentTabStopIdChange:D,onEntryFocus:j(c,e=>{y.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,H.jsx)(d,{role:`menu`,"aria-orientation":`vertical`,"data-state":Ei(v.open),"data-radix-menu-content":``,dir:y.dir,...S,..._,ref:A,style:{outline:`none`,..._.style},onKeyDown:j(_.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&&I(e.key));let i=O.current;if(e.target!==i||!vr.includes(e.key))return;e.preventDefault();let a=w().filter(e=>!e.disabled).map(e=>e.ref.current);_r.includes(e.key)&&a.reverse(),ki(a)}),onBlur:j(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(ee.current),te.current=``)}),onPointerMove:j(e.onPointerMove,Ni(e=>{let t=e.target,n=ne.current!==e.clientX;e.currentTarget.contains(t)&&n&&(P.current=e.clientX>ne.current?`right`:`left`,ne.current=e.clientX)}))})})})})})})});Ur.displayName=Br;var Jr=`MenuGroup`,Yr=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,H.jsx)(i.div,{role:`group`,...r,ref:t})});Yr.displayName=Jr;var Xr=`MenuLabel`,Zr=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,H.jsx)(i.div,{...r,ref:t})});Zr.displayName=Xr;var Qr=`MenuItem`,$r=`menu.itemSelect`,ei=V.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=V.useRef(null),o=Mr(Qr,e.__scopeMenu),s=Hr(Qr,e.__scopeMenu),c=b(t,a),l=V.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent($r,{bubbles:!0,cancelable:!0});e.addEventListener($r,e=>r?.(e),{once:!0}),ee(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,H.jsx)(ti,{...i,ref:c,disabled:n,onClick:j(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:j(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:j(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||hr.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});ei.displayName=Qr;var ti=V.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:a,...o}=e,s=Hr(Qr,n),c=Or(n),l=V.useRef(null),u=b(t,l),[d,f]=V.useState(!1),[p,m]=V.useState(``);return V.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[o.children]),(0,H.jsx)(Sr.ItemSlot,{scope:n,disabled:r,textValue:a??p,children:(0,H.jsx)(mr,{asChild:!0,...c,focusable:!r,children:(0,H.jsx)(i.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...o,ref:u,onPointerMove:j(e.onPointerMove,Ni(e=>{r?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:j(e.onPointerLeave,Ni(e=>s.onItemLeave(e))),onFocus:j(e.onFocus,()=>f(!0)),onBlur:j(e.onBlur,()=>f(!1))})})})}),ni=`MenuCheckboxItem`,ri=V.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,H.jsx)(di,{scope:e.__scopeMenu,checked:n,children:(0,H.jsx)(ei,{role:`menuitemcheckbox`,"aria-checked":Di(n)?`mixed`:n,...i,ref:t,"data-state":Oi(n),onSelect:j(i.onSelect,()=>r?.(Di(n)?!0:!n),{checkForDefaultPrevented:!1})})})});ri.displayName=ni;var ii=`MenuRadioGroup`,[ai,oi]=Tr(ii,{value:void 0,onValueChange:()=>{}}),si=V.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=S(r);return(0,H.jsx)(ai,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,H.jsx)(Yr,{...i,ref:t})})});si.displayName=ii;var ci=`MenuRadioItem`,li=V.forwardRef((e,t)=>{let{value:n,...r}=e,i=oi(ci,e.__scopeMenu),a=n===i.value;return(0,H.jsx)(di,{scope:e.__scopeMenu,checked:a,children:(0,H.jsx)(ei,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":Oi(a),onSelect:j(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});li.displayName=ci;var ui=`MenuItemIndicator`,[di,fi]=Tr(ui,{checked:!1}),pi=V.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...a}=e,o=fi(ui,n);return(0,H.jsx)(tn,{present:r||Di(o.checked)||o.checked===!0,children:(0,H.jsx)(i.span,{...a,ref:t,"data-state":Oi(o.checked)})})});pi.displayName=ui;var mi=`MenuSeparator`,hi=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,H.jsx)(i.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});hi.displayName=mi;var gi=`MenuArrow`,_i=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=Dr(n);return(0,H.jsx)(v,{...i,...r,ref:t})});_i.displayName=gi;var vi=`MenuSub`,[yi,bi]=Tr(vi),xi=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Ar(vi,t),o=Dr(t),[s,c]=V.useState(null),[l,u]=V.useState(null),d=S(i);return V.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,H.jsx)(w,{...o,children:(0,H.jsx)(kr,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,H.jsx)(yi,{scope:t,contentId:g(),triggerId:g(),trigger:s,onTriggerChange:c,children:n})})})};xi.displayName=vi;var Si=`MenuSubTrigger`,Ci=V.forwardRef((e,t)=>{let n=Ar(Si,e.__scopeMenu),r=Mr(Si,e.__scopeMenu),i=bi(Si,e.__scopeMenu),a=Hr(Si,e.__scopeMenu),o=V.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=a,u={__scopeMenu:e.__scopeMenu},d=V.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return V.useEffect(()=>d,[d]),V.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]),(0,H.jsx)(Fr,{asChild:!0,...u,children:(0,H.jsx)(ti,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":Ei(n.open),...e,ref:s(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:j(e.onPointerMove,Ni(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:j(e.onPointerLeave,Ni(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:j(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||yr[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});Ci.displayName=Si;var wi=`MenuSubContent`,Ti=V.forwardRef((e,t)=>{let n=Rr(Br,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ar(Br,e.__scopeMenu),o=Mr(Br,e.__scopeMenu),s=bi(wi,e.__scopeMenu),c=V.useRef(null),l=b(t,c);return(0,H.jsx)(Sr.Provider,{scope:e.__scopeMenu,children:(0,H.jsx)(tn,{present:r||a.open,children:(0,H.jsx)(Sr.Slot,{scope:e.__scopeMenu,children:(0,H.jsx)(qr,{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:j(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:j(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:j(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=br[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});Ti.displayName=wi;function Ei(e){return e?`open`:`closed`}function Di(e){return e===`indeterminate`}function Oi(e){return Di(e)?`indeterminate`:e?`checked`:`unchecked`}function ki(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Ai(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function U(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=Ai(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 ji(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 Mi(e,t){return t?ji({x:e.clientX,y:e.clientY},t):!1}function Ni(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Pi=Nr,Fi=Fr,Ii=zr,Li=Ur,Ri=Yr,zi=Zr,Bi=ei,Vi=ri,Hi=si,Ui=li,Wi=pi,Gi=hi,Ki=_i,qi=xi,Ji=Ci,Yi=Ti,Xi=`ContextMenu`,[Zi,Qi]=c(Xi,[Er]),$i=Er(),[ea,ta]=Zi(Xi),na=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:a=!0}=e,[o,s]=V.useState(!1),c=$i(t),l=S(r),u=V.useCallback(e=>{s(e),l(e)},[l]);return(0,H.jsx)(ea,{scope:t,open:o,onOpenChange:u,modal:a,children:(0,H.jsx)(Pi,{...c,dir:i,open:o,onOpenChange:u,modal:a,children:n})})};na.displayName=Xi;var ra=`ContextMenuTrigger`,ia=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,disabled:r=!1,...a}=e,o=ta(ra,n),s=$i(n),c=V.useRef({x:0,y:0}),l=V.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...c.current})}),u=V.useRef(0),d=V.useCallback(()=>window.clearTimeout(u.current),[]),f=e=>{c.current={x:e.clientX,y:e.clientY},o.onOpenChange(!0)};return V.useEffect(()=>d,[d]),V.useEffect(()=>void(r&&d()),[r,d]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Fi,{...s,virtualRef:l}),(0,H.jsx)(i.span,{"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,...a,ref:t,style:{WebkitTouchCallout:`none`,...e.style},onContextMenu:r?e.onContextMenu:j(e.onContextMenu,e=>{d(),f(e),e.preventDefault()}),onPointerDown:r?e.onPointerDown:j(e.onPointerDown,Na(e=>{d(),u.current=window.setTimeout(()=>f(e),700)})),onPointerMove:r?e.onPointerMove:j(e.onPointerMove,Na(d)),onPointerCancel:r?e.onPointerCancel:j(e.onPointerCancel,Na(d)),onPointerUp:r?e.onPointerUp:j(e.onPointerUp,Na(d))})]})});ia.displayName=ra;var aa=`ContextMenuPortal`,oa=e=>{let{__scopeContextMenu:t,...n}=e,r=$i(t);return(0,H.jsx)(Ii,{...r,...n})};oa.displayName=aa;var sa=`ContextMenuContent`,ca=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=ta(sa,n),a=$i(n),o=V.useRef(!1);return(0,H.jsx)(Li,{...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)`}})});ca.displayName=sa;var la=`ContextMenuGroup`,ua=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ri,{...i,...r,ref:t})});ua.displayName=la;var da=`ContextMenuLabel`,fa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(zi,{...i,...r,ref:t})});fa.displayName=da;var pa=`ContextMenuItem`,ma=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Bi,{...i,...r,ref:t})});ma.displayName=pa;var ha=`ContextMenuCheckboxItem`,ga=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Vi,{...i,...r,ref:t})});ga.displayName=ha;var _a=`ContextMenuRadioGroup`,va=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Hi,{...i,...r,ref:t})});va.displayName=_a;var ya=`ContextMenuRadioItem`,ba=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ui,{...i,...r,ref:t})});ba.displayName=ya;var xa=`ContextMenuItemIndicator`,Sa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Wi,{...i,...r,ref:t})});Sa.displayName=xa;var Ca=`ContextMenuSeparator`,wa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Gi,{...i,...r,ref:t})});wa.displayName=Ca;var Ta=`ContextMenuArrow`,Ea=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ki,{...i,...r,ref:t})});Ea.displayName=Ta;var Da=`ContextMenuSub`,Oa=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,open:i,defaultOpen:a}=e,o=$i(t),[s,c]=u({prop:i,defaultProp:a??!1,onChange:r,caller:Da});return(0,H.jsx)(qi,{...o,open:s,onOpenChange:c,children:n})};Oa.displayName=Da;var ka=`ContextMenuSubTrigger`,Aa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ji,{...i,...r,ref:t})});Aa.displayName=ka;var ja=`ContextMenuSubContent`,Ma=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Yi,{...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)`}})});Ma.displayName=ja;function Na(e){return t=>t.pointerType===`mouse`?void 0:e(t)}var Pa=na,Fa=ia,Ia=oa,La=ca,Ra=ma,za=wa,Ba=`DropdownMenu`,[Va,Ha]=c(Ba,[Er]),Ua=Er(),[Wa,Ga]=Va(Ba),Ka=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Ua(t),l=V.useRef(null),[d,f]=u({prop:i,defaultProp:a??!1,onChange:o,caller:Ba});return(0,H.jsx)(Wa,{scope:t,triggerId:g(),triggerRef:l,contentId:g(),open:d,onOpenChange:f,onOpenToggle:V.useCallback(()=>f(e=>!e),[f]),modal:s,children:(0,H.jsx)(Pi,{...c,open:d,onOpenChange:f,dir:r,modal:s,children:n})})};Ka.displayName=Ba;var qa=`DropdownMenuTrigger`,Ja=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...a}=e,o=Ga(qa,n),c=Ua(n);return(0,H.jsx)(Fi,{asChild:!0,...c,children:(0,H.jsx)(i.button,{type:`button`,id:o.triggerId,"aria-haspopup":`menu`,"aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...a,ref:s(t,o.triggerRef),onPointerDown:j(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(o.onOpenToggle(),o.open||e.preventDefault())}),onKeyDown:j(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&o.onOpenToggle(),e.key===`ArrowDown`&&o.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});Ja.displayName=qa;var Ya=`DropdownMenuPortal`,Xa=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Ua(t);return(0,H.jsx)(Ii,{...r,...n})};Xa.displayName=Ya;var Za=`DropdownMenuContent`,Qa=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ga(Za,n),a=Ua(n),o=V.useRef(!1);return(0,H.jsx)(Li,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:j(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:j(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)`}})});Qa.displayName=Za;var $a=`DropdownMenuGroup`,eo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ri,{...i,...r,ref:t})});eo.displayName=$a;var to=`DropdownMenuLabel`,no=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(zi,{...i,...r,ref:t})});no.displayName=to;var ro=`DropdownMenuItem`,io=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Bi,{...i,...r,ref:t})});io.displayName=ro;var ao=`DropdownMenuCheckboxItem`,oo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Vi,{...i,...r,ref:t})});oo.displayName=ao;var so=`DropdownMenuRadioGroup`,co=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Hi,{...i,...r,ref:t})});co.displayName=so;var W=`DropdownMenuRadioItem`,G=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ui,{...i,...r,ref:t})});G.displayName=W;var lo=`DropdownMenuItemIndicator`,uo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Wi,{...i,...r,ref:t})});uo.displayName=lo;var fo=`DropdownMenuSeparator`,po=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Gi,{...i,...r,ref:t})});po.displayName=fo;var mo=`DropdownMenuArrow`,ho=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ki,{...i,...r,ref:t})});ho.displayName=mo;var go=`DropdownMenuSubTrigger`,_o=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ji,{...i,...r,ref:t})});_o.displayName=go;var vo=`DropdownMenuSubContent`,yo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Yi,{...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)`}})});yo.displayName=vo;var bo=Ka,xo=Ja,So=Xa,Co=Qa,wo=io,To=`Label`,Eo=V.forwardRef((e,t)=>(0,H.jsx)(i.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));Eo.displayName=To;var Do=Eo;function Oo(e,t){return V.useReducer((e,n)=>t[e][n]??e,e)}var ko=`ScrollArea`,[Ao,jo]=c(ko),[Mo,No]=Ao(ko),Po=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:a,scrollHideDelay:o=600,...s}=e,[c,l]=V.useState(null),[u,d]=V.useState(null),[f,p]=V.useState(null),[m,h]=V.useState(null),[g,v]=V.useState(null),[y,x]=V.useState(0),[S,C]=V.useState(0),[w,T]=V.useState(!1),[E,D]=V.useState(!1),O=b(t,e=>l(e)),k=_(a);return(0,H.jsx)(Mo,{scope:n,type:r,dir:k,scrollHideDelay:o,scrollArea:c,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:w,onScrollbarXEnabledChange:T,scrollbarY:g,onScrollbarYChange:v,scrollbarYEnabled:E,onScrollbarYEnabledChange:D,onCornerWidthChange:x,onCornerHeightChange:C,children:(0,H.jsx)(i.div,{dir:k,...s,ref:O,style:{position:`relative`,"--radix-scroll-area-corner-width":y+`px`,"--radix-scroll-area-corner-height":S+`px`,...e.style}})})});Po.displayName=ko;var Fo=`ScrollAreaViewport`,Io=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:a,...o}=e,s=No(Fo,n),c=b(t,V.useRef(null),s.onViewportChange);return(0,H.jsxs)(H.Fragment,{children:[(0,H.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:a}),(0,H.jsx)(i.div,{"data-radix-scroll-area-viewport":``,...o,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,H.jsx)(`div`,{ref:s.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Io.displayName=Fo;var Lo=`ScrollAreaScrollbar`,Ro=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=No(Lo,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return V.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,H.jsx)(zo,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,H.jsx)(Bo,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,H.jsx)(Vo,{...r,ref:t,forceMount:n}):i.type===`always`?(0,H.jsx)(Ho,{...r,ref:t}):null});Ro.displayName=Lo;var zo=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=No(Lo,e.__scopeScrollArea),[a,o]=V.useState(!1);return V.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,H.jsx)(tn,{present:n||a,children:(0,H.jsx)(Vo,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),Bo=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=No(Lo,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=cs(()=>c(`SCROLL_END`),100),[s,c]=Oo(`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 V.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),V.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,H.jsx)(tn,{present:n||s!==`hidden`,children:(0,H.jsx)(Ho,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:j(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:j(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Vo=V.forwardRef((e,t)=>{let n=No(Lo,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=V.useState(!1),s=e.orientation===`horizontal`,c=cs(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return ls(n.viewport,c),ls(n.content,c),(0,H.jsx)(tn,{present:r||a,children:(0,H.jsx)(Ho,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),Ho=V.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=No(Lo,e.__scopeScrollArea),a=V.useRef(null),o=V.useRef(0),[s,c]=V.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ts(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 rs(e,o.current,s,t)}return n===`horizontal`?(0,H.jsx)(Uo,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=is(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,H.jsx)(Wo,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=is(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}),Uo=V.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=No(Lo,e.__scopeScrollArea),[o,s]=V.useState(),c=V.useRef(null),l=b(t,c,a.onScrollbarXChange);return V.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,H.jsx)(qo,{"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":ns(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),os(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:es(o.paddingLeft),paddingEnd:es(o.paddingRight)}})}})}),Wo=V.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=No(Lo,e.__scopeScrollArea),[o,s]=V.useState(),c=V.useRef(null),l=b(t,c,a.onScrollbarYChange);return V.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,H.jsx)(qo,{"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":ns(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),os(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:es(o.paddingTop),paddingEnd:es(o.paddingBottom)}})}})}),[Go,Ko]=Ao(Lo),qo=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:a,onThumbChange:o,onThumbPointerUp:s,onThumbPointerDown:c,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:d,onResize:f,...p}=e,m=No(Lo,n),[h,g]=V.useState(null),_=b(t,e=>g(e)),v=V.useRef(null),y=V.useRef(``),x=m.viewport,C=r.content-r.viewport,w=S(d),T=S(l),E=cs(f,10);function D(e){v.current&&u({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return V.useEffect(()=>{let e=e=>{let t=e.target;h?.contains(t)&&w(e,C)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[x,h,C,w]),V.useEffect(T,[r,T]),ls(h,E),ls(m.content,E),(0,H.jsx)(Go,{scope:n,scrollbar:h,hasThumb:a,onThumbChange:S(o),onThumbPointerUp:S(s),onThumbPositionChange:T,onThumbPointerDown:S(c),children:(0,H.jsx)(i.div,{...p,ref:_,style:{position:`absolute`,...p.style},onPointerDown:j(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),v.current=h.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),D(e))}),onPointerMove:j(e.onPointerMove,D),onPointerUp:j(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,m.viewport&&(m.viewport.style.scrollBehavior=``),v.current=null})})})}),Jo=`ScrollAreaThumb`,Yo=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ko(Jo,e.__scopeScrollArea);return(0,H.jsx)(tn,{present:n||i.hasThumb,children:(0,H.jsx)(Xo,{ref:t,...r})})}),Xo=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...a}=e,o=No(Jo,n),s=Ko(Jo,n),{onThumbPositionChange:c}=s,l=b(t,e=>s.onThumbChange(e)),u=V.useRef(void 0),d=cs(()=>{u.current&&=(u.current(),void 0)},100);return V.useEffect(()=>{let e=o.viewport;if(e){let t=()=>{d(),u.current||(u.current=ss(e,c),c())};return c(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[o.viewport,d,c]),(0,H.jsx)(i.div,{"data-state":s.hasThumb?`visible`:`hidden`,...a,ref:l,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:j(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;s.onThumbPointerDown({x:n,y:r})}),onPointerUp:j(e.onPointerUp,s.onThumbPointerUp)})});Yo.displayName=Jo;var Zo=`ScrollAreaCorner`,Qo=V.forwardRef((e,t)=>{let n=No(Zo,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,H.jsx)($o,{...e,ref:t}):null});Qo.displayName=Zo;var $o=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,a=No(Zo,n),[o,s]=V.useState(0),[c,l]=V.useState(0),u=!!(o&&c);return ls(a.scrollbarX,()=>{let e=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(e),l(e)}),ls(a.scrollbarY,()=>{let e=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(e),s(e)}),u?(0,H.jsx)(i.div,{...r,ref:t,style:{width:o,height:c,position:`absolute`,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function es(e){return e?parseInt(e,10):0}function ts(e,t){let n=e/t;return isNaN(n)?0:n}function ns(e){let t=ts(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function rs(e,t,n,r=`ltr`){let i=ns(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 as([c,l],d)(e)}function is(e,t,n=`ltr`){let r=ns(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=C(e,n===`ltr`?[0,o]:[o*-1,0]);return as([0,o],[0,s])(c)}function as(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 os(e,t){return e>0&&e<t}var ss=(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 cs(e,t){let n=S(e),r=V.useRef(0);return V.useEffect(()=>()=>window.clearTimeout(r.current),[]),V.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function ls(e,t){let n=S(t);A(()=>{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 us=Po,ds=Io,fs=Qo,ps=[` `,`Enter`,`ArrowUp`,`ArrowDown`],ms=[` `,`Enter`],hs=`Select`,[gs,_s,vs]=f(hs),[ys,bs]=c(hs,[vs,D]),xs=D(),[Ss,Cs]=ys(hs),[ws,Ts]=ys(hs),Es=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:d,autoComplete:f,disabled:p,required:m,form:h}=e,v=xs(t),[y,b]=V.useState(null),[x,S]=V.useState(null),[C,T]=V.useState(!1),E=_(l),[D,O]=u({prop:r,defaultProp:i??!1,onChange:a,caller:hs}),[k,A]=u({prop:o,defaultProp:s,onChange:c,caller:hs}),ee=V.useRef(null),te=y?h||!!y.closest(`form`):!0,[j,M]=V.useState(new Set),N=Array.from(j).map(e=>e.props.value).join(`;`);return(0,H.jsx)(w,{...v,children:(0,H.jsxs)(Ss,{required:m,scope:t,trigger:y,onTriggerChange:b,valueNode:x,onValueNodeChange:S,valueNodeHasChildren:C,onValueNodeHasChildrenChange:T,contentId:g(),value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:ee,disabled:p,children:[(0,H.jsx)(gs.Provider,{scope:t,children:(0,H.jsx)(ws,{scope:e.__scopeSelect,onNativeOptionAdd:V.useCallback(e=>{M(t=>new Set(t).add(e))},[]),onNativeOptionRemove:V.useCallback(e=>{M(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),te?(0,H.jsxs)(xc,{"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:f,value:k,onChange:e=>A(e.target.value),disabled:p,form:h,children:[k===void 0?(0,H.jsx)(`option`,{value:``}):null,Array.from(j)]},N):null]})})};Es.displayName=hs;var Ds=`SelectTrigger`,Os=V.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...a}=e,o=xs(n),s=Cs(Ds,n),c=s.disabled||r,l=b(t,s.onTriggerChange),u=_s(n),d=V.useRef(`touch`),[f,p,m]=Cc(e=>{let t=u().filter(e=>!e.disabled),n=wc(t,e,t.find(e=>e.value===s.value));n!==void 0&&s.onValueChange(n.value)}),h=e=>{c||(s.onOpenChange(!0),m()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,H.jsx)(E,{asChild:!0,...o,children:(0,H.jsx)(i.button,{type:`button`,role:`combobox`,"aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":`none`,dir:s.dir,"data-state":s.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":Sc(s.value)?``:void 0,...a,ref:l,onClick:j(a.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:j(a.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:j(a.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&ps.includes(e.key)&&(h(),e.preventDefault())})})})});Os.displayName=Ds;var ks=`SelectValue`,As=V.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:a,children:o,placeholder:s=``,...c}=e,l=Cs(ks,n),{onValueNodeHasChildrenChange:u}=l,d=o!==void 0,f=b(t,l.onValueNodeChange);return A(()=>{u(d)},[u,d]),(0,H.jsx)(i.span,{...c,ref:f,style:{pointerEvents:`none`},children:Sc(l.value)?(0,H.jsx)(H.Fragment,{children:s}):o})});As.displayName=ks;var js=`SelectIcon`,Ms=V.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...a}=e;return(0,H.jsx)(i.span,{"aria-hidden":!0,...a,ref:t,children:r||`▼`})});Ms.displayName=js;var Ns=`SelectPortal`,Ps=e=>(0,H.jsx)(m,{asChild:!0,...e});Ps.displayName=Ns;var Fs=`SelectContent`,Is=V.forwardRef((e,t)=>{let n=Cs(Fs,e.__scopeSelect),[r,i]=V.useState();if(A(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?_t.createPortal((0,H.jsx)(Rs,{scope:e.__scopeSelect,children:(0,H.jsx)(gs.Slot,{scope:e.__scopeSelect,children:(0,H.jsx)(`div`,{children:e.children})})}),t):null}return(0,H.jsx)(Hs,{...e,ref:t})});Is.displayName=Fs;var Ls=10,[Rs,zs]=ys(Fs),Bs=`SelectContentImpl`,Vs=o(`SelectContent.RemoveScroll`),Hs=V.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:m,sticky:g,hideWhenDetached:_,avoidCollisions:v,...y}=e,S=Cs(Fs,n),[C,w]=V.useState(null),[E,D]=V.useState(null),O=b(t,e=>w(e)),[A,ee]=V.useState(null),[te,M]=V.useState(null),N=_s(n),[P,ne]=V.useState(!1),F=V.useRef(!1);V.useEffect(()=>{if(C)return p(C)},[C]),k();let re=V.useCallback(e=>{let[t,...n]=N().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&E&&(E.scrollTop=0),n===r&&E&&(E.scrollTop=E.scrollHeight),n?.focus(),document.activeElement!==i))return},[N,E]),I=V.useCallback(()=>re([A,C]),[re,A,C]);V.useEffect(()=>{P&&I()},[P,I]);let{onOpenChange:L,triggerPointerDownPosRef:R}=S;V.useEffect(()=>{if(C){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(R.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(R.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||L(!1),document.removeEventListener(`pointermove`,t),R.current=null};return R.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[C,L,R]),V.useEffect(()=>{let e=()=>L(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[L]);let[ie,ae]=Cc(e=>{let t=N().filter(e=>!e.disabled),n=wc(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),z=V.useCallback((e,t,n)=>{let r=!F.current&&!n;(S.value!==void 0&&S.value===t||r)&&(ee(e),r&&(F.current=!0))},[S.value]),oe=V.useCallback(()=>C?.focus(),[C]),se=V.useCallback((e,t,n)=>{let r=!F.current&&!n;(S.value!==void 0&&S.value===t||r)&&M(e)},[S.value]),ce=r===`popper`?Ks:Ws,le=ce===Ks?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:m,sticky:g,hideWhenDetached:_,avoidCollisions:v}:{};return(0,H.jsx)(Rs,{scope:n,content:C,viewport:E,onViewportChange:D,itemRefCallback:z,selectedItem:A,onItemLeave:oe,itemTextRefCallback:se,focusSelectedItem:I,selectedItemText:te,position:r,isPositioned:P,searchRef:ie,children:(0,H.jsx)(x,{as:Vs,allowPinchZoom:!0,children:(0,H.jsx)(h,{asChild:!0,trapped:S.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:j(i,e=>{S.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>S.onOpenChange(!1),children:(0,H.jsx)(ce,{role:`listbox`,id:S.contentId,"data-state":S.open?`open`:`closed`,dir:S.dir,onContextMenu:e=>e.preventDefault(),...y,...le,onPlaced:()=>ne(!0),ref:O,style:{display:`flex`,flexDirection:`column`,outline:`none`,...y.style},onKeyDown:j(y.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ae(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=N().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()}})})})})})})});Hs.displayName=Bs;var Us=`SelectItemAlignedPosition`,Ws=V.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...a}=e,o=Cs(Fs,n),s=zs(Fs,n),[c,l]=V.useState(null),[u,d]=V.useState(null),f=b(t,e=>d(e)),p=_s(n),m=V.useRef(!1),h=V.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=s,x=V.useCallback(()=>{if(o.trigger&&o.valueNode&&c&&u&&g&&_&&v){let e=o.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=o.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(o.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ls,d=C(a,[Ls,Math.max(Ls,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ls,d=C(a,[Ls,Math.max(Ls,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let a=p(),s=window.innerHeight-Ls*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),w=window.getComputedStyle(g),T=parseInt(w.paddingTop,10),E=parseInt(w.paddingBottom,10),D=e.top+e.height/2-Ls,O=s-D,k=_.offsetHeight/2,A=_.offsetTop+k,ee=f+h+A,te=x-ee;if(ee<=D){let e=a.length>0&&_===a[a.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=ee+Math.max(O,k+(e?E:0)+t+y);c.style.height=n+`px`}else{let e=a.length>0&&_===a[0].ref.current;c.style.top=`0px`;let t=Math.max(D,f+g.offsetTop+(e?T:0)+k)+te;c.style.height=t+`px`,g.scrollTop=ee-D+g.offsetTop}c.style.margin=`${Ls}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,o.trigger,o.valueNode,c,u,g,_,v,o.dir,r]);A(()=>x(),[x]);let[S,w]=V.useState();return A(()=>{u&&w(window.getComputedStyle(u).zIndex)},[u]),(0,H.jsx)(qs,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:V.useCallback(e=>{e&&h.current===!0&&(x(),y?.(),h.current=!1)},[x,y]),children:(0,H.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:S},children:(0,H.jsx)(i.div,{...a,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...a.style}})})})});Ws.displayName=Us;var Gs=`SelectPopperPosition`,Ks=V.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ls,...a}=e,o=xs(n);return(0,H.jsx)(d,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Ks.displayName=Gs;var[qs,Js]=ys(Fs,{}),Ys=`SelectViewport`,Xs=V.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...a}=e,o=zs(Ys,n),s=Js(Ys,n),c=b(t,o.onViewportChange),l=V.useRef(0);return(0,H.jsxs)(H.Fragment,{children:[(0,H.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,H.jsx)(gs.Slot,{scope:n,children:(0,H.jsx)(i.div,{"data-radix-select-viewport":``,role:`presentation`,...a,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...a.style},onScroll:j(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=s;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ls*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}l.current=t.scrollTop})})})]})});Xs.displayName=Ys;var Zs=`SelectGroup`,[Qs,$s]=ys(Zs),ec=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,a=g();return(0,H.jsx)(Qs,{scope:n,id:a,children:(0,H.jsx)(i.div,{role:`group`,"aria-labelledby":a,...r,ref:t})})});ec.displayName=Zs;var tc=`SelectLabel`,nc=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,a=$s(tc,n);return(0,H.jsx)(i.div,{id:a.id,...r,ref:t})});nc.displayName=tc;var rc=`SelectItem`,[ic,ac]=ys(rc),oc=V.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:a=!1,textValue:o,...s}=e,c=Cs(rc,n),l=zs(rc,n),u=c.value===r,[d,f]=V.useState(o??``),[p,m]=V.useState(!1),h=b(t,e=>l.itemRefCallback?.(e,r,a)),_=g(),v=V.useRef(`touch`),y=()=>{a||(c.onValueChange(r),c.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,H.jsx)(ic,{scope:n,value:r,disabled:a,textId:_,isSelected:u,onItemTextChange:V.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,H.jsx)(gs.ItemSlot,{scope:n,value:r,disabled:a,textValue:d,children:(0,H.jsx)(i.div,{role:`option`,"aria-labelledby":_,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":a||void 0,"data-disabled":a?``:void 0,tabIndex:a?void 0:-1,...s,ref:h,onFocus:j(s.onFocus,()=>m(!0)),onBlur:j(s.onBlur,()=>m(!1)),onClick:j(s.onClick,()=>{v.current!==`mouse`&&y()}),onPointerUp:j(s.onPointerUp,()=>{v.current===`mouse`&&y()}),onPointerDown:j(s.onPointerDown,e=>{v.current=e.pointerType}),onPointerMove:j(s.onPointerMove,e=>{v.current=e.pointerType,a?l.onItemLeave?.():v.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:j(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:j(s.onKeyDown,e=>{l.searchRef?.current!==``&&e.key===` `||(ms.includes(e.key)&&y(),e.key===` `&&e.preventDefault())})})})})});oc.displayName=rc;var sc=`SelectItemText`,cc=V.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:a,...o}=e,s=Cs(sc,n),c=zs(sc,n),l=ac(sc,n),u=Ts(sc,n),[d,f]=V.useState(null),p=b(t,e=>f(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=d?.textContent,h=V.useMemo(()=>(0,H.jsx)(`option`,{value:l.value,disabled:l.disabled,children:m},l.value),[l.disabled,l.value,m]),{onNativeOptionAdd:g,onNativeOptionRemove:_}=u;return A(()=>(g(h),()=>_(h)),[g,_,h]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(i.span,{id:l.textId,...o,ref:p}),l.isSelected&&s.valueNode&&!s.valueNodeHasChildren?_t.createPortal(o.children,s.valueNode):null]})});cc.displayName=sc;var lc=`SelectItemIndicator`,uc=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return ac(lc,n).isSelected?(0,H.jsx)(i.span,{"aria-hidden":!0,...r,ref:t}):null});uc.displayName=lc;var dc=`SelectScrollUpButton`,fc=V.forwardRef((e,t)=>{let n=zs(dc,e.__scopeSelect),r=Js(dc,e.__scopeSelect),[i,a]=V.useState(!1),o=b(t,r.onScrollButtonChange);return A(()=>{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,H.jsx)(hc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});fc.displayName=dc;var pc=`SelectScrollDownButton`,mc=V.forwardRef((e,t)=>{let n=zs(pc,e.__scopeSelect),r=Js(pc,e.__scopeSelect),[i,a]=V.useState(!1),o=b(t,r.onScrollButtonChange);return A(()=>{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,H.jsx)(hc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});mc.displayName=pc;var hc=V.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...a}=e,o=zs(`SelectScrollButton`,n),s=V.useRef(null),c=_s(n),l=V.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return V.useEffect(()=>()=>l(),[l]),A(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,H.jsx)(i.div,{"aria-hidden":!0,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:j(a.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(r,50))}),onPointerMove:j(a.onPointerMove,()=>{o.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(r,50))}),onPointerLeave:j(a.onPointerLeave,()=>{l()})})}),gc=`SelectSeparator`,_c=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,H.jsx)(i.div,{"aria-hidden":!0,...r,ref:t})});_c.displayName=gc;var vc=`SelectArrow`,yc=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=xs(n),a=Cs(vc,n),o=zs(vc,n);return a.open&&o.position===`popper`?(0,H.jsx)(v,{...i,...r,ref:t}):null});yc.displayName=vc;var bc=`SelectBubbleInput`,xc=V.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let a=V.useRef(null),o=b(r,a),s=qn(t);return V.useEffect(()=>{let e=a.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(s!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,H.jsx)(i.select,{...n,style:{...Xt,...n.style},ref:o,defaultValue:t})});xc.displayName=bc;function Sc(e){return e===``||e===void 0}function Cc(e){let t=S(e),n=V.useRef(``),r=V.useRef(0),i=V.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=V.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return V.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function wc(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=Tc(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 Tc(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Ec=Es,Dc=Os,Oc=As,kc=Ms,Ac=Ps,jc=Is,Mc=Xs,Nc=oc,Pc=cc,Fc=uc,Ic=fc,Lc=mc,Rc=`Separator`,zc=`horizontal`,Bc=[`horizontal`,`vertical`],Vc=V.forwardRef((e,t)=>{let{decorative:n,orientation:r=zc,...a}=e,o=Hc(r)?r:zc,s=o===`vertical`?o:void 0,c=n?{role:`none`}:{"aria-orientation":s,role:`separator`};return(0,H.jsx)(i.div,{"data-orientation":o,...c,...a,ref:t})});Vc.displayName=Rc;function Hc(e){return Bc.includes(e)}var Uc=Vc,[Wc,Gc]=c(`Tooltip`,[D]),Kc=D(),qc=`TooltipProvider`,Jc=700,Yc=`tooltip.open`,[Xc,Zc]=Wc(qc),Qc=e=>{let{__scopeTooltip:t,delayDuration:n=Jc,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=V.useRef(!0),s=V.useRef(!1),c=V.useRef(0);return V.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,H.jsx)(Xc,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:V.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:V.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:V.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Qc.displayName=qc;var $c=`Tooltip`,[el,tl]=Wc($c),nl=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Zc($c,e.__scopeTooltip),l=Kc(t),[d,f]=V.useState(null),p=g(),m=V.useRef(0),h=o??c.disableHoverableContent,_=s??c.delayDuration,v=V.useRef(!1),[y,b]=u({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Yc))):c.onClose(),a?.(e)},caller:$c}),x=V.useMemo(()=>y?v.current?`delayed-open`:`instant-open`:`closed`,[y]),S=V.useCallback(()=>{window.clearTimeout(m.current),m.current=0,v.current=!1,b(!0)},[b]),C=V.useCallback(()=>{window.clearTimeout(m.current),m.current=0,b(!1)},[b]),T=V.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{v.current=!0,b(!0),m.current=0},_)},[_,b]);return V.useEffect(()=>()=>{m.current&&=(window.clearTimeout(m.current),0)},[]),(0,H.jsx)(w,{...l,children:(0,H.jsx)(el,{scope:t,contentId:p,open:y,stateAttribute:x,trigger:d,onTriggerChange:f,onTriggerEnter:V.useCallback(()=>{c.isOpenDelayedRef.current?T():S()},[c.isOpenDelayedRef,T,S]),onTriggerLeave:V.useCallback(()=>{h?C():(window.clearTimeout(m.current),m.current=0)},[C,h]),onOpen:S,onClose:C,disableHoverableContent:h,children:n})})};nl.displayName=$c;var rl=`TooltipTrigger`,il=V.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,a=tl(rl,n),o=Zc(rl,n),s=Kc(n),c=b(t,V.useRef(null),a.onTriggerChange),l=V.useRef(!1),u=V.useRef(!1),d=V.useCallback(()=>l.current=!1,[]);return V.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,H.jsx)(E,{asChild:!0,...s,children:(0,H.jsx)(i.button,{"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute,...r,ref:c,onPointerMove:j(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!o.isPointerInTransitRef.current&&(a.onTriggerEnter(),u.current=!0)}),onPointerLeave:j(e.onPointerLeave,()=>{a.onTriggerLeave(),u.current=!1}),onPointerDown:j(e.onPointerDown,()=>{a.open&&a.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:j(e.onFocus,()=>{l.current||a.onOpen()}),onBlur:j(e.onBlur,a.onClose),onClick:j(e.onClick,a.onClose)})})});il.displayName=rl;var al=`TooltipPortal`,[ol,sl]=Wc(al,{forceMount:void 0}),cl=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=tl(al,t);return(0,H.jsx)(ol,{scope:t,forceMount:n,children:(0,H.jsx)(tn,{present:n||a.open,children:(0,H.jsx)(m,{asChild:!0,container:i,children:r})})})};cl.displayName=al;var ll=`TooltipContent`,ul=V.forwardRef((e,t)=>{let n=sl(ll,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=tl(ll,e.__scopeTooltip);return(0,H.jsx)(tn,{present:r||o.open,children:o.disableHoverableContent?(0,H.jsx)(hl,{side:i,...a,ref:t}):(0,H.jsx)(dl,{side:i,...a,ref:t})})}),dl=V.forwardRef((e,t)=>{let n=tl(ll,e.__scopeTooltip),r=Zc(ll,e.__scopeTooltip),i=V.useRef(null),a=b(t,i),[o,s]=V.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=V.useCallback(()=>{s(null),d(!1)},[d]),p=V.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=yl(r,vl(r,n.getBoundingClientRect())),a=bl(t.getBoundingClientRect());s(Sl([...i,...a])),d(!0)},[d]);return V.useEffect(()=>()=>f(),[f]),V.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]),V.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=!xl(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,H.jsx)(hl,{...e,ref:a})}),[fl,pl]=Wc($c,{isInside:!1}),ml=a(`TooltipContent`),hl=V.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=tl(ll,n),l=Kc(n),{onClose:u}=c;return V.useEffect(()=>(document.addEventListener(Yc,u),()=>document.removeEventListener(Yc,u)),[u]),V.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,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,H.jsxs)(d,{"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,H.jsx)(ml,{children:r}),(0,H.jsx)(fl,{scope:n,isInside:!0,children:(0,H.jsx)($t,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});ul.displayName=ll;var gl=`TooltipArrow`,_l=V.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Kc(n);return pl(gl,n).isInside?null:(0,H.jsx)(v,{...i,...r,ref:t})});_l.displayName=gl;function vl(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 yl(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 bl(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 xl(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 Sl(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),Cl(t)}function Cl(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 wl=Qc,Tl=nl,El=il,Dl=cl,Ol=ul,kl=_l;function Al({delayDuration:e=0,...t}){return(0,H.jsx)(wl,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function jl({...e}){return(0,H.jsx)(Tl,{"data-slot":`tooltip`,...e})}function Ml({...e}){return(0,H.jsx)(El,{"data-slot":`tooltip-trigger`,...e})}function Nl({className:e,sideOffset:t=0,children:n,...r}){return(0,H.jsx)(Dl,{children:(0,H.jsxs)(Ol,{"data-slot":`tooltip-content`,sideOffset:t,className:z(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,e),...r,children:[n,(0,H.jsx)(kl,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}function Pl(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function Fl(e,t){let n=getComputedStyle(e.ownerDocument.body);return t*parseFloat(n.fontSize)}function Il(e){return e/100*window.innerHeight}function Ll(e){return e/100*window.innerWidth}function Rl(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 K({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=Rl(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=Fl(t,i);break;case`em`:r=Pl(t,i);break;case`vh`:r=Il(i);break;case`vw`:r=Ll(i);break}return r}function q(e){return parseFloat(e.toFixed(3))}function J({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 Y(e){let{panels:t}=e,n=J({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=q(K({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=q(K({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=q(K({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=q(K({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 zl(e,t){return Array.from(t).sort(e===`horizontal`?Bl:Vl)}function Bl(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function Vl(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function Hl(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function Ul(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 Wl({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}=Ul(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return X(i,`No rect found`),i}var Gl;function Kl(){return Gl===void 0&&(Gl=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),Gl}function ql(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=zl(n,Array.from(t.children).filter(Hl).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,Wl({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=Kl()?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:J({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 Jl=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)}}},Yl=new Map,Xl=new Jl;function Zl(e){Yl=new Map(Yl),Yl.delete(e)}function Ql(e,t){for(let[t]of Yl)if(t.id===e)return t}function $l(e,t){for(let[t,n]of Yl)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function eu(){return Yl}function tu(e,t){return Xl.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function nu(e,t){let n=Yl.get(e);Yl=new Map(Yl),Yl.set(e,t),Xl.emit(`groupChange`,{group:e,prev:n,next:t})}function ru(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=Ul(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 iu(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function au(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:du(e),b:du(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:uu(lu(n.a)),b:uu(lu(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 ou=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function su(e){let t=getComputedStyle(fu(e)??e).display;return t===`flex`||t===`inline-flex`}function cu(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||su(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`||ou.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function lu(e){let t=e.length;for(;t--;){let n=e[t];if(X(n,`Missing node`),cu(n))return n}return null}function uu(e){return e&&Number(getComputedStyle(e).zIndex)||0}function du(e){let t=[];for(;e;)t.push(e),e=fu(e);return t}function fu(e){let{parentNode:t}=e;return iu(t)?t.host:t}function pu(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 mu({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!Hl(n)||n.contains(e)||e.contains(n))return!0;if(au(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(pu(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function hu(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=ql(r),a=ru(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&mu({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function gu(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 _u(e,t,n=0){return Math.abs(q(e)-q(t))<=n}function vu(e,t){return _u(e,t)?0:e>t?1:-1}function yu({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(vu(r,c)<0)if(a){let e=(i+c)/2;r=vu(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=q(r),r}function bu({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(_u(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}`),_u(n,i)){let t=o-n;vu(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}`),_u(n,o)){let t=n-i;vu(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&&vu(i,c)<0)if(e>0){let t=c-o,n=t/2;vu(i+e,c)<0&&(e=vu(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;vu(i-e,c)<0&&(e=vu(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=yu({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=yu({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!_u(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(gu(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=yu({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!_u(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=yu({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(_u(i,s)||(t-=s-i,l[r]=s),_u(t,0))break;e>0?r--:r++}}}if(!_u(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 xu(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||vu(e[n],t[n])!==0)return!1;return!0}function Su({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(!_u(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=yu({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!_u(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=yu({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,_u(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Cu({groupId:e,panelId:t}){let n=()=>{let t=eu();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=Su({layout:bu({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});xu(l,p)||nu(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&&_u(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=J({group:t});o(q(K({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function wu(e){e.defaultPrevented||hu(e,eu()).forEach(t=>{if(t.separator){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Cu({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function Tu(e){let t=eu();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 Eu({groupId:e}){let t=()=>{let t=eu();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=Su({layout:e,panelConstraints:r});return n?o:(xu(o,c)||nu(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Du(e,t){let n=Tu(e),r=$l(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=Eu({groupId:n.id}).getLayout(),c=Su({layout:bu({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});xu(s,c)||nu(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function Ou(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Tu(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Du(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Du(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Du(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Du(t,-5);break;case`End`:e.preventDefault(),Du(t,100);break;case`Enter`:{e.preventDefault();let n=Tu(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=$l(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];Du(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=Tu(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(),Du(t,-100);break}}var ku={cursorFlags:0,state:`inactive`},Au=new Jl;function ju(){return ku}function Mu(e){return Au.addListener(`change`,e)}function Nu(e){let t=ku,n={...ku};n.cursorFlags=e,ku=n,Au.emit(`change`,{prev:t,next:n})}function Pu(e){let t=ku;ku=e,Au.emit(`change`,{prev:t,next:e})}function Fu(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=eu(),n=hu(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)}),Pu({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var Iu=e=>e,Lu=()=>{},Ru=1,zu=2,Bu=4,Vu=8,Hu=3,Uu=12,Wu;function Z(){return Wu===void 0&&(Wu=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(Wu=!0)),Wu}function Gu({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&&Z()){let t=(e&Ru)!==0,n=(e&zu)!==0,r=(e&Bu)!==0,i=(e&Vu)!==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 Z()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var Ku=new WeakMap;function qu(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=Ku.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let r=ju();switch(r.state){case`active`:case`hover`:{let e=Gu({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}Ku.set(e,{prevStyle:t,styleSheet:n})}function Ju({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=bu({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(xu(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?Ru:zu;break;case`vertical`:s|=d<0?Bu:Vu;break}}else nu(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Hu:c|=s&Hu,t.movementY===0?c|=o&Uu:c|=s&Uu,Nu(c),qu(e)}function Yu(e){let t=eu(),n=ju();switch(n.state){case`active`:Ju({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function Xu(e){if(e.defaultPrevented)return;let t=ju(),n=eu();switch(t.state){case`active`:if(e.buttons===0){Pu({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=$l(e.group.id,!0);nu(e.group,t)});return}Ju({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=hu(e,n);r.length===0?t.state!==`inactive`&&Pu({cursorFlags:0,state:`inactive`}):Pu({cursorFlags:0,hitRegions:r,state:`hover`}),qu(e.currentTarget);break}}}function Zu(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(ju().state){case`hover`:Pu({cursorFlags:0,state:`inactive`})}}function Qu(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=ju();switch(t.state){case`active`:Pu({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(qu(e.currentTarget),t.hitRegions.forEach(e=>{let t=$l(e.group.id,!0);nu(e.group,t)}),e.preventDefault())}}function $u(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=q(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=q((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function ed(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=J({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:q(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function td(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 nd({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=q(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]=q((r[e]??0)/a*l);else{let e=q(l/c.length);for(let t of c)u[t]=e}return u}function rd(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 id=new Map;function ad(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=J({group:e});if(t===0)return;let n=$l(e.id);if(!n)return;let r=Y(e),i=n.defaultLayoutDeferred?$u(r):n.layout,a=Su({layout:nd({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&xu(n.layout,a)&&td(n.derivedPanelConstraints,r)&&n.groupSize===t)return;nu(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else ed(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=J({group:e}),s=Y(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(rd(e.panels,l)||(l=void 0));let u=Su({layout:e.mutableState.layouts[c]??l??$u(s),panelConstraints:s}),d=e.element.ownerDocument;id.set(d,(id.get(d)??0)+1);let f=new Map;return ql(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),nu(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`,Ou)}),id.get(d)===1&&(d.addEventListener(`dblclick`,wu,!0),d.addEventListener(`pointerdown`,Fu,!0),d.addEventListener(`pointerleave`,Yu),d.addEventListener(`pointermove`,Xu),d.addEventListener(`pointerout`,Zu),d.addEventListener(`pointerup`,Qu,!0)),function(){t=!1,id.set(d,Math.max(0,(id.get(d)??0)-1)),Zl(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,Ou)}),id.get(d)||(d.removeEventListener(`dblclick`,wu,!0),d.removeEventListener(`pointerdown`,Fu,!0),d.removeEventListener(`pointerleave`,Yu),d.removeEventListener(`pointermove`,Xu),d.removeEventListener(`pointerout`,Zu),d.removeEventListener(`pointerup`,Qu,!0)),a.disconnect()}}function od(){let[e,t]=(0,V.useState)({});return[e,(0,V.useCallback)(()=>t({}),[])]}function sd(e){let t=(0,V.useId)();return`${e??t}`}var cd=typeof window<`u`?V.useLayoutEffect:V.useEffect;function ld(e){let t=(0,V.useRef)(e);return cd(()=>{t.current=e},[e]),(0,V.useCallback)((...e)=>t.current?.(...e),[t])}function ud(...e){return ld(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function dd(e){let t=(0,V.useRef)({...e});return cd(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var fd=(0,V.createContext)(null);function pd(e,t){let n=(0,V.useRef)({getLayout:()=>({}),setLayout:Iu});(0,V.useImperativeHandle)(t,()=>n.current,[]),cd(()=>{Object.assign(n.current,Eu({groupId:e}))})}function md({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,V.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=ld(e=>{xu(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=ld(e=>{xu(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e))}),_=sd(s),v=(0,V.useRef)(null),[y,b]=od(),x=(0,V.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=ud(v,a);pd(_,o);let C=ld((e,t)=>{let r=ju(),i=Ql(e),a=$l(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=dd({defaultLayout:n,disableCursor:r}),T=(0,V.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=zl(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=zl(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=Ql(_),i=$l(_);r&&i&&nu(r,{...i,derivedPanelConstraints:Y(r)})},toggleSeparatorDisabled:(e,t)=>{let n=x.current.separators.find(t=>t.id===e);n&&(n.disabled=t)}}),[C,_,b,u,w]),E=(0,V.useRef)(null);return cd(()=>{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=ad(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=$l(r.id,!0);!o&&s.length>0&&(h(c),g(c));let l=tu(_,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=_u(t.collapsedSize,i[t.panelId]),a=_u(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=ju().state!==`active`;h(i),o&&g(i)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,V.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,H.jsx)(fd.Provider,{value:T,children:(0,H.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})})}md.displayName=`Group`;function hd(){let e=(0,V.useContext)(fd);return X(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function gd(e,t){let{id:n}=hd(),r=(0,V.useRef)({collapse:Lu,expand:Lu,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Lu});(0,V.useImperativeHandle)(t,()=>r.current,[]),cd(()=>{Object.assign(r.current,Cu({groupId:n,panelId:e}))})}function _d({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=sd(c),_=dd({disabled:a}),v=(0,V.useRef)(null),y=ud(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,togglePanelDisabled:w}=hd(),T=d!==null,E=ld((e,t,n)=>{d?.(e,c,n)});cd(()=>{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,V.useEffect)(()=>{w(g,!!a)},[a,g,w]),gd(g,f);let D=(0,V.useSyncExternalStore)(e=>tu(x,e),()=>JSON.stringify(b(x,g)),()=>JSON.stringify(b(x,g)));return(0,H.jsx)(`div`,{...m,"aria-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...vd,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...JSON.parse(D)},children:(0,H.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}_d.displayName=`Panel`;var vd={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function yd({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=Su({layout:bu({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Su({layout:bu({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function Q({children:e,className:t,disabled:n,elementRef:r,id:i,style:a,...o}){let s=sd(i),c=dd({disabled:n}),[l,u]=(0,V.useState)({}),[d,f]=(0,V.useState)(`inactive`),p=(0,V.useRef)(null),m=ud(p,r),{disableCursor:h,id:g,orientation:_,registerSeparator:v,toggleSeparatorDisabled:y}=hd(),b=_===`horizontal`?`vertical`:`horizontal`;cd(()=>{let e=p.current;if(e!==null){let t={disabled:c.disabled,element:e,id:s},n=v(t),r=Mu(e=>{f(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=tu(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(yd({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[g,s,v,c]),(0,V.useEffect)(()=>{y(s,!!n)},[n,s,y]);let x;return n&&!h&&(x=`not-allowed`),(0,H.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})}Q.displayName=`Separator`;function bd(){let e=window.location.pathname.match(/^\/project\/([^/]+)(?:\/tab\/([^/]+))?/);return e?{projectName:e[1]?decodeURIComponent(e[1]):null,tabId:e[2]?decodeURIComponent(e[2]):null}:{projectName:null,tabId:null}}function xd(e,t){if(!e||e===`__global__`)return`/`;let n=`/project/${encodeURIComponent(e)}`;return t&&(n+=`/tab/${encodeURIComponent(t)}`),n}function Sd(){let e=I(e=>e.activeTabId),t=I(e=>e.currentProject),n=(0,V.useRef)(!1);(0,V.useEffect)(()=>{if(n.current){n.current=!1;return}let r=xd(t,e);window.location.pathname!==r&&window.history.pushState(null,``,r)},[e,t]),(0,V.useEffect)(()=>{function e(){let{tabId:e}=bd(),{tabs:t,setActiveTab:r}=I.getState();e&&t.some(t=>t.id===e)&&(n.current=!0,r(e))}return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[])}var Cd=`ppm-custom-order`;function wd(){try{let e=localStorage.getItem(Cd);return e?JSON.parse(e):null}catch{return null}}function Td(e){try{localStorage.setItem(Cd,JSON.stringify(e))}catch{}}function Ed(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 Dd=L((e,t)=>({projects:[],activeProject:null,customOrder:wd(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{let t=await B.get(`/api/projects`);e({projects:t,loading:!1}),e(e=>{if(!e.activeProject&&t.length>0){let{projectName:n}=bd();if(n){let e=t.find(e=>e.name===n);if(e)return{activeProject:e}}return{activeProject:Ed(t,e.customOrder)[0]}}return{}})}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 B.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 B.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:n}),await t().fetchProjects()},moveProject:async(n,r)=>{let{projects:i,customOrder:a}=t(),o=Ed(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]],Td(l),await B.patch(`/api/projects/reorder`,{order:l}),e({customOrder:l})},reorderProjects:async t=>{Td(t),e({customOrder:t}),await B.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,n)=>{await B.patch(`/api/projects/${encodeURIComponent(e)}`,{name:n}),await t().fetchProjects()},deleteProject:async t=>{await B.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&&Td(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}})),Od=`application/ppm-tab`,kd=!1,Ad=new Set;function jd(e){kd!==e&&(kd=e,Ad.forEach(e=>e()))}function Md(){return(0,V.useSyncExternalStore)(e=>(Ad.add(e),()=>Ad.delete(e)),()=>kd)}function $(){jd(!1)}function Nd(e){let[t,n]=(0,V.useState)(null),r=(0,V.useRef)(null);return{dropIndex:t,handleDragStart:(0,V.useCallback)((t,n)=>{let r={tabId:n,panelId:e};t.dataTransfer.setData(Od,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`,requestAnimationFrame(()=>jd(!0))},[e]),handleDragOver:(0,V.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,V.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},[]),handleDrop:(0,V.useCallback)(i=>{i.preventDefault(),jd(!1);let a=i.dataTransfer.getData(Od);if(a){try{let n=JSON.parse(a),r=F.getState();n.panelId===e?t!==null&&r.reorderTab(n.tabId,e,t):r.moveTab(n.tabId,n.panelId,e,t??void 0)}catch{}n(null),r.current=null}},[e,t]),handleDragEnd:(0,V.useCallback)(()=>{jd(!1),n(null),r.current=null},[])}}var Pd=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent),Fd=[{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+Shift+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+Shift+G`},{id:`open-git-status`,label:`Git Status (sidebar)`,category:`tabs`,defaultKey:`Mod+Shift+E`},...Array.from({length:9},(e,t)=>({id:`switch-project-${t+1}`,label:`Switch to Project ${t+1}`,category:`projects`,defaultKey:`Mod+${t+1}`}))],Id=new Map(Fd.map(e=>[e.id,e.defaultKey]));function Ld(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`:Pd?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 Rd(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 zd(e){return e.replace(/Mod/g,Pd?`⌘`:`Ctrl`).replace(/Shift/g,Pd?`⇧`:`Shift`).replace(/Alt/g,Pd?`⌥`:`Alt`).replace(/Meta|Cmd/g,`⌘`).replace(/Ctrl/g,Pd?`⌃`:`Ctrl`)}function Bd(e){if([`Control`,`Meta`,`Alt`,`Shift`].includes(e.key))return null;let t=[];e.ctrlKey&&!e.metaKey&&t.push(Pd?`Ctrl`:`Mod`),e.metaKey&&t.push(Pd?`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 Vd=L((e,t)=>({overrides:{},loaded:!1,getBinding:e=>t().overrides[e]??Id.get(e)??``,matchesEvent:(e,n)=>{let r=t().getBinding(n);return r?Rd(e,Ld(r)):!1},setBinding:(n,r)=>{e({overrides:{...t().overrides,[n]:r}}),B.put(`/api/settings/keybindings`,{[n]:r}).catch(()=>{})},resetBinding:n=>{let r={...t().overrides};delete r[n],e({overrides:r}),B.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&&B.put(`/api/settings/keybindings`,n).catch(()=>{})},loadFromServer:async()=>{try{e({overrides:await B.get(`/api/settings/keybindings`),loaded:!0})}catch{e({loaded:!0})}}}));function Hd(e){window.dispatchEvent(new CustomEvent(`open-command-palette`,{detail:e}))}function Ud(){let[e,t]=(0,V.useState)(!1),[n,r]=(0,V.useState)(``);return(0,V.useEffect)(()=>{let e=0,{matchesEvent:n}=Vd.getState();function i(n){if(n.type===`keyup`&&n.key===`Shift`&&!n.ctrlKey&&!n.metaKey&&!n.altKey){let n=Date.now();if(n-e<400){e=0,r(``),t(!0);return}e=n;return}if(n.type!==`keydown`)return;let{matchesEvent:i}=Vd.getState();if(i(n,`save-prevent`)){n.preventDefault();return}if(i(n,`command-palette`)){n.preventDefault(),r(``),t(!0);return}if(i(n,`toggle-sidebar`)){n.preventDefault(),R.getState().toggleSidebar();return}if(i(n,`next-tab`)||i(n,`prev-tab`)){n.preventDefault();let{tabs:e,activeTabId:t,setActiveTab:r}=I.getState();if(e.length<2)return;let a=e.findIndex(e=>e.id===t);r(e[i(n,`next-tab`)?(a+1)%e.length:(a-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(i(n,e.action)){n.preventDefault();let t=Dd.getState().activeProject;I.getState().openTab({type:e.type,title:e.title,projectId:t?.name??null,metadata:t?{projectName:t.name}:void 0,closable:!0});return}if(i(n,`open-settings`)){n.preventDefault();let e=R.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`settings`);return}if(i(n,`open-git-status`)){n.preventDefault();let e=R.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`git`);return}for(let e=1;e<=9;e++)if(i(n,`switch-project-${e}`)){n.preventDefault();let t=Dd.getState().projects[e-1];t&&(Dd.getState().setActiveProject(t),I.getState().switchProject(t.name));return}}function a(e){let n=e.detail;r(typeof n==`string`?n:``),t(!0)}return window.addEventListener(`keydown`,i),window.addEventListener(`keyup`,i),window.addEventListener(`open-command-palette`,a),()=>{window.removeEventListener(`keydown`,i),window.removeEventListener(`keyup`,i),window.removeEventListener(`open-command-palette`,a)}},[]),{paletteOpen:e,paletteInitialQuery:n,closePalette:(0,V.useCallback)(()=>{t(!1),r(``)},[])}}function Wd(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 Gd(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 Kd(e){let t=Wd(e);return t?Gd(t.r,t.g,t.b)<.4:!1}function qd({tab:e,isActive:t,icon:n,showDropBefore:r,onSelect:i,onClose:a,onDragStart:o,onDragOver:s,onDragEnd:c,tabRef:l,onRename:u}){let[d,f]=(0,V.useState)(!1),[p,m]=(0,V.useState)(e.title),h=(0,V.useRef)(null);(0,V.useEffect)(()=>{d&&(m(e.title),setTimeout(()=>h.current?.select(),0))},[d]);let g=()=>{f(!1);let t=p.trim();t&&t!==e.title&&u&&u(t)},_=e.metadata?.connectionColor,v=_?{backgroundColor:t?_:`${_}33`,color:t&&Kd(_)?`#fff`:void 0}:void 0;return(0,H.jsxs)(`div`,{className:`relative flex items-center`,children:[r&&(0,H.jsx)(`div`,{className:`absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-full z-10`}),(0,H.jsxs)(`button`,{ref:l,"data-tab-item":!0,draggable:!d,onClick:i,onAuxClick:t=>{t.button===1&&e.closable&&(t.preventDefault(),a())},onDragStart:o,onDragOver:s,onDragEnd:c,style:v,className:z(`group flex items-center gap-1 px-3 h-10 whitespace-nowrap text-xs transition-colors`,`border-b-2 -mb-px cursor-grab active:cursor-grabbing`,!v&&(t?`border-primary text-primary`:`border-transparent text-text-secondary hover:text-foreground`),v&&`border-transparent`),children:[(0,H.jsx)(n,{className:`size-4`}),d?(0,H.jsx)(`input`,{ref:h,value:p,onChange:e=>m(e.target.value),onBlur:g,onKeyDown:e=>{e.key===`Enter`&&g(),e.key===`Escape`&&f(!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,H.jsx)(`span`,{className:`max-w-[120px] truncate`,onDoubleClick:e=>{u&&(e.stopPropagation(),f(!0))},children:e.title}),e.closable&&!d&&(0,H.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),a()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),a())},className:`ml-1 opacity-0 group-hover:opacity-100 rounded-sm hover:bg-surface-elevated p-0.5 transition-opacity`,children:(0,H.jsx)(ht,{className:`size-3`})})]})]})}var Jd={terminal:dt,chat:Je,editor:Ae,sqlite:Oe,postgres:Oe,"git-graph":Re,"git-diff":je,settings:st};function Yd({panelId:e}){Dd(e=>e.activeProject);let t=(0,V.useRef)(new Map),n=(0,V.useRef)(null),r=(0,V.useRef)(0),i=F(t=>e?t.panels[e]:t.panels[t.focusedPanelId]),a=i?.tabs??[],o=i?.activeTabId??null,s=i?.id??F.getState().focusedPanelId,{dropIndex:c,handleDragStart:l,handleDragOver:u,handleDragOverBar:d,handleDrop:f,handleDragEnd:p}=Nd(s);(0,V.useEffect)(()=>{if(a.length>r.current&&o){let e=t.current.get(o);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})}r.current=a.length},[a.length,o]);let m=(0,V.useCallback)((e,t)=>{I.getState().updateTab(e.id,{title:t});let n=e.metadata?.projectName,r=e.metadata?.sessionId;n&&r&&B.patch(`${ce(n)}/chat/sessions/${r}`,{title:t}).catch(()=>{})},[]);function h(e){e.target.closest(`[data-tab-item]`)||Hd()}function g(e){e.target.closest(`[data-tab-item]`)||(e.preventDefault(),Hd())}return(0,H.jsx)(`div`,{className:`hidden md:flex items-center h-10 border-b border-border bg-background`,onDragOver:d,onDrop:f,onDoubleClick:h,onContextMenu:g,children:(0,H.jsx)(`div`,{ref:n,className:`flex-1 overflow-x-auto overflow-y-hidden min-w-0 scrollbar-none`,children:(0,H.jsxs)(`div`,{className:`flex items-center h-10`,children:[a.map((e,n)=>(0,H.jsx)(qd,{tab:e,isActive:e.id===o,icon:Jd[e.type],showDropBefore:c===n,onSelect:()=>F.getState().setActiveTab(e.id,s),onClose:()=>F.getState().closeTab(e.id,s),onDragStart:t=>l(t,e.id),onDragOver:t=>u(t,e.id,n),onDragEnd:p,tabRef:n=>{n?t.current.set(e.id,n):t.current.delete(e.id)},onRename:e.type===`chat`?t=>m(e,t):void 0},e.id)),c!==null&&c>=a.length&&(0,H.jsx)(`div`,{className:`w-0.5 h-6 bg-primary rounded-full`}),(0,H.jsx)(`button`,{onClick:()=>Hd(),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,H.jsx)(it,{className:`size-4`})})]})})})}function Xd({panelId:e}){let[t,n]=(0,V.useState)(null),r=Md(),i=F(e=>e.grid),a=F(e=>e.isMobile()),o=re(i,e),s=!a&&i.length<3,c=o?!a&&(i[o.row]?.length??0)<ne(!1):!1,l=(0,V.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&&c?`left`:n>1-i&&c?`right`:r<i&&s?`top`:r>1-i&&s?`bottom`:`center`},[c,s]),u=(0,V.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.stopPropagation(),n(l(e)))},[l]),d=(0,V.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||n(null)},[]),f=(0,V.useCallback)(t=>{t.preventDefault(),t.stopPropagation();let r=l(t);if(n(null),$(),!r)return;let i=t.dataTransfer.getData(Od);if(i)try{let t=JSON.parse(i),n=F.getState();if(r===`center`)t.panelId!==e&&n.moveTab(t.tabId,t.panelId,e);else{let i=r===`top`?`up`:r===`bottom`?`down`:r;n.splitPanel(i,t.tabId,t.panelId,e)}}catch{}},[l,e]);return r?(0,H.jsxs)(`div`,{className:`absolute inset-0 z-20`,onDragOver:u,onDragLeave:d,onDrop:f,children:[t===`left`&&(0,H.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,H.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,H.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,H.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,H.jsx)(`div`,{className:`absolute inset-0 bg-primary/5 border-2 border-dashed border-primary/30 rounded-md`})]}):null}var Zd=`modulepreload`,Qd=function(e){return`/`+e},$d={},ef=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Qd(t,n),t in $d)return;$d[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Zd,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},tf=[{type:`terminal`,label:`Terminal`,icon:dt},{type:`chat`,label:`AI Chat`,icon:Je},{type:`git-graph`,label:`Git Graph`,icon:Re}],nf={terminal:(0,V.lazy)(()=>ef(()=>import(`./terminal-tab-3tDV4RCn.js`).then(e=>({default:e.TerminalTab})),__vite__mapDeps([0,1,2,3,4,5,6]))),chat:(0,V.lazy)(()=>ef(()=>import(`./chat-tab-CDVCDw_H.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([7,1,8,2,3,9,5,10,11,4]))),editor:(0,V.lazy)(()=>ef(()=>import(`./code-editor-wmS73ejX.js`).then(e=>({default:e.CodeEditor})),__vite__mapDeps([12,1,13,4,5,2,3,9,10,11]))),sqlite:(0,V.lazy)(()=>ef(()=>import(`./sqlite-viewer-BRsj8GXc.js`).then(e=>({default:e.SqliteViewer})),__vite__mapDeps([14,1,15,3,11]))),postgres:(0,V.lazy)(()=>ef(()=>import(`./postgres-viewer-V4hKmmzV.js`).then(e=>({default:e.PostgresViewer})),__vite__mapDeps([16,1,15,3,11]))),"git-graph":(0,V.lazy)(()=>ef(()=>import(`./git-graph-BbWb6_Jq.js`).then(e=>({default:e.GitGraph})),__vite__mapDeps([17,1,8,2,3,9,5,11]))),"git-diff":(0,V.lazy)(()=>ef(()=>import(`./diff-viewer-BsYccTx1.js`).then(e=>({default:e.DiffViewer})),__vite__mapDeps([18,1,13,4,5,3,11]))),settings:(0,V.lazy)(()=>ef(()=>import(`./settings-tab-DwsKpk9T.js`).then(e=>({default:e.SettingsTab})),__vite__mapDeps([19,1,8,2,3,11,4,5])))};function rf({panelId:e,projectName:t}){let n=F(t=>t.panels[e]),r=F(t=>t.focusedPanelId===e),i=F(e=>(e.currentProject===t?e.grid:e.projectGrids[t]??[[]]).flat().length);return n?(0,H.jsxs)(`div`,{className:z(`flex flex-col h-full overflow-hidden`,i>1&&`border border-transparent`,i>1&&r&&`border-primary/30`),onMouseDown:()=>{F.getState().focusedPanelId!==e&&F.getState().setFocusedPanel(e)},children:[(0,H.jsx)(Yd,{panelId:e}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-hidden relative`,children:[n.tabs.length===0?(0,H.jsx)(af,{panelId:e}):n.tabs.map(e=>{let t=nf[e.type];return(0,H.jsx)(`div`,{className:e.id===n.activeTabId?`h-full w-full`:`hidden`,children:(0,H.jsx)(V.Suspense,{fallback:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,H.jsx)(Ge,{className:`size-6 animate-spin text-primary`})}),children:(0,H.jsx)(t,{metadata:e.metadata,tabId:e.id})})},e.id)}),(0,H.jsx)(Xd,{panelId:e})]})]}):null}function af({panelId:e}){let t=Dd(e=>e.activeProject);function n(n){let r=n!==`settings`&&t?{projectName:t.name}:void 0;F.getState().openTab({type:n,title:tf.find(e=>e.type===n)?.label??n,metadata:r,projectId:t?.name??null,closable:!0},e)}return(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 text-text-secondary`,children:[(0,H.jsx)(`p`,{className:`text-sm`,children:`Open a tab to get started`}),(0,H.jsx)(`div`,{className:`flex flex-col md:flex-row flex-wrap justify-center gap-2`,children:tf.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:()=>n(e.type),className:`flex items-center gap-2 px-4 py-2 rounded-md border border-border bg-surface hover:bg-surface-elevated text-sm text-foreground transition-colors`,children:[(0,H.jsx)(t,{className:`size-4`}),e.label]},e.type)})})]})}function of({projectName:e}){let t=F(t=>t.currentProject===e?t.grid:t.projectGrids[e]??[[]]);return t.flat().length<=1&&t[0]?.[0]?(0,H.jsx)(rf,{panelId:t[0][0],projectName:e}):(0,H.jsx)(md,{orientation:`vertical`,style:{height:`100%`},children:t.map((n,r)=>(0,H.jsx)(sf,{row:n,rowIdx:r,totalRows:t.length,projectName:e},`row-${r}`))})}function sf({row:e,rowIdx:t,totalRows:n,projectName:r}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(_d,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:e.length===1?(0,H.jsx)(rf,{panelId:e[0],projectName:r}):(0,H.jsx)(md,{orientation:`horizontal`,children:e.map((t,n)=>(0,H.jsx)(cf,{panelId:t,colIdx:n,totalCols:e.length,projectName:r},t))})}),t<n-1&&(0,H.jsx)(lf,{orientation:`horizontal`})]})}function cf({panelId:e,colIdx:t,totalCols:n,projectName:r}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(_d,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:(0,H.jsx)(rf,{panelId:e,projectName:r})}),t<n-1&&(0,H.jsx)(lf,{orientation:`vertical`})]})}function lf({orientation:e}){let t=e===`vertical`;return(0,H.jsx)(Q,{className:`
14
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return V.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Rn=`DialogDescriptionWarning`,zn=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${In(Rn).contentName}}.`;return V.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Bn=dn,Vn=_n,Hn=yn,Un=Cn,Wn=On,Gn=An,Kn=Mn;function qn(e){let t=V.useRef({value:e,previous:e});return V.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Jn=`rovingFocusGroup.onEntryFocus`,Yn={bubbles:!1,cancelable:!0},Xn=`RovingFocusGroup`,[Zn,Qn,$n]=f(Xn),[er,tr]=c(Xn,[$n]),[nr,rr]=er(Xn),ir=V.forwardRef((e,t)=>(0,H.jsx)(Zn.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,H.jsx)(Zn.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,H.jsx)(ar,{...e,ref:t})})}));ir.displayName=Xn;var ar=V.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:o,currentTabStopId:s,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:d,preventScrollOnEntryFocus:f=!1,...p}=e,m=V.useRef(null),h=b(t,m),g=_(o),[v,y]=u({prop:s,defaultProp:c??null,onChange:l,caller:Xn}),[x,C]=V.useState(!1),w=S(d),T=Qn(n),E=V.useRef(!1),[D,O]=V.useState(0);return V.useEffect(()=>{let e=m.current;if(e)return e.addEventListener(Jn,w),()=>e.removeEventListener(Jn,w)},[w]),(0,H.jsx)(nr,{scope:n,orientation:r,dir:g,loop:a,currentTabStopId:v,onItemFocus:V.useCallback(e=>y(e),[y]),onItemShiftTab:V.useCallback(()=>C(!0),[]),onFocusableItemAdd:V.useCallback(()=>O(e=>e+1),[]),onFocusableItemRemove:V.useCallback(()=>O(e=>e-1),[]),children:(0,H.jsx)(i.div,{tabIndex:x||D===0?-1:0,"data-orientation":r,...p,ref:h,style:{outline:`none`,...e.style},onMouseDown:j(e.onMouseDown,()=>{E.current=!0}),onFocus:j(e.onFocus,e=>{let t=!E.current;if(e.target===e.currentTarget&&t&&!x){let t=new CustomEvent(Jn,Yn);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=T().filter(e=>e.focusable);dr([e.find(e=>e.active),e.find(e=>e.id===v),...e].filter(Boolean).map(e=>e.ref.current),f)}}E.current=!1}),onBlur:j(e.onBlur,()=>C(!1))})})}),or=`RovingFocusGroupItem`,sr=V.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:o,children:s,...c}=e,l=g(),u=o||l,d=rr(or,n),f=d.currentTabStopId===u,p=Qn(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:_}=d;return V.useEffect(()=>{if(r)return m(),()=>h()},[r,m,h]),(0,H.jsx)(Zn.ItemSlot,{scope:n,id:u,focusable:r,active:a,children:(0,H.jsx)(i.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:j(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:j(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:j(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=ur(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?fr(n,r+1):n.slice(r+1)}setTimeout(()=>dr(n))}}),children:typeof s==`function`?s({isCurrentTabStop:f,hasTabStop:_!=null}):s})})});sr.displayName=or;var cr={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function lr(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function ur(e,t,n){let r=lr(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return cr[r]}function dr(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function fr(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var pr=ir,mr=sr,hr=[`Enter`,` `],gr=[`ArrowDown`,`PageUp`,`Home`],_r=[`ArrowUp`,`PageDown`,`End`],vr=[...gr,..._r],yr={ltr:[...hr,`ArrowRight`],rtl:[...hr,`ArrowLeft`]},br={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},xr=`Menu`,[Sr,Cr,wr]=f(xr),[Tr,Er]=c(xr,[wr,D,tr]),Dr=D(),Or=tr(),[kr,Ar]=Tr(xr),[jr,Mr]=Tr(xr),Nr=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=Dr(t),[c,l]=V.useState(null),u=V.useRef(!1),d=S(a),f=_(i);return V.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,H.jsx)(w,{...s,children:(0,H.jsx)(kr,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,H.jsx)(jr,{scope:t,onClose:V.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Nr.displayName=xr;var Pr=`MenuAnchor`,Fr=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=Dr(n);return(0,H.jsx)(E,{...i,...r,ref:t})});Fr.displayName=Pr;var Ir=`MenuPortal`,[Lr,Rr]=Tr(Ir,{forceMount:void 0}),zr=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Ar(Ir,t);return(0,H.jsx)(Lr,{scope:t,forceMount:n,children:(0,H.jsx)(tn,{present:n||a.open,children:(0,H.jsx)(m,{asChild:!0,container:i,children:r})})})};zr.displayName=Ir;var Br=`MenuContent`,[Vr,Hr]=Tr(Br),Ur=V.forwardRef((e,t)=>{let n=Rr(Br,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ar(Br,e.__scopeMenu),o=Mr(Br,e.__scopeMenu);return(0,H.jsx)(Sr.Provider,{scope:e.__scopeMenu,children:(0,H.jsx)(tn,{present:r||a.open,children:(0,H.jsx)(Sr.Slot,{scope:e.__scopeMenu,children:o.modal?(0,H.jsx)(Wr,{...i,ref:t}):(0,H.jsx)(Gr,{...i,ref:t})})})})}),Wr=V.forwardRef((e,t)=>{let n=Ar(Br,e.__scopeMenu),r=V.useRef(null),i=b(t,r);return V.useEffect(()=>{let e=r.current;if(e)return p(e)},[]),(0,H.jsx)(qr,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:j(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Gr=V.forwardRef((e,t)=>{let n=Ar(Br,e.__scopeMenu);return(0,H.jsx)(qr,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Kr=o(`MenuContent.ScrollLock`),qr=V.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:f,onInteractOutside:p,onDismiss:m,disableOutsideScroll:g,..._}=e,v=Ar(Br,n),y=Mr(Br,n),S=Dr(n),C=Or(n),w=Cr(n),[E,D]=V.useState(null),O=V.useRef(null),A=b(t,O,v.onContentChange),ee=V.useRef(0),te=V.useRef(``),M=V.useRef(0),N=V.useRef(null),P=V.useRef(`right`),ne=V.useRef(0),F=g?x:V.Fragment,re=g?{as:Kr,allowPinchZoom:!0}:void 0,I=e=>{let t=te.current+e,n=w().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=U(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){te.current=t,window.clearTimeout(ee.current),t!==``&&(ee.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};V.useEffect(()=>()=>window.clearTimeout(ee.current),[]),k();let L=V.useCallback(e=>P.current===N.current?.side&&Mi(e,N.current?.area),[]);return(0,H.jsx)(Vr,{scope:n,searchRef:te,onItemEnter:V.useCallback(e=>{L(e)&&e.preventDefault()},[L]),onItemLeave:V.useCallback(e=>{L(e)||(O.current?.focus(),D(null))},[L]),onTriggerLeave:V.useCallback(e=>{L(e)&&e.preventDefault()},[L]),pointerGraceTimerRef:M,onPointerGraceIntentChange:V.useCallback(e=>{N.current=e},[]),children:(0,H.jsx)(F,{...re,children:(0,H.jsx)(h,{asChild:!0,trapped:i,onMountAutoFocus:j(a,e=>{e.preventDefault(),O.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:f,onInteractOutside:p,onDismiss:m,children:(0,H.jsx)(pr,{asChild:!0,...C,dir:y.dir,orientation:`vertical`,loop:r,currentTabStopId:E,onCurrentTabStopIdChange:D,onEntryFocus:j(c,e=>{y.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,H.jsx)(d,{role:`menu`,"aria-orientation":`vertical`,"data-state":Ei(v.open),"data-radix-menu-content":``,dir:y.dir,...S,..._,ref:A,style:{outline:`none`,..._.style},onKeyDown:j(_.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&&I(e.key));let i=O.current;if(e.target!==i||!vr.includes(e.key))return;e.preventDefault();let a=w().filter(e=>!e.disabled).map(e=>e.ref.current);_r.includes(e.key)&&a.reverse(),ki(a)}),onBlur:j(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(ee.current),te.current=``)}),onPointerMove:j(e.onPointerMove,Ni(e=>{let t=e.target,n=ne.current!==e.clientX;e.currentTarget.contains(t)&&n&&(P.current=e.clientX>ne.current?`right`:`left`,ne.current=e.clientX)}))})})})})})})});Ur.displayName=Br;var Jr=`MenuGroup`,Yr=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,H.jsx)(i.div,{role:`group`,...r,ref:t})});Yr.displayName=Jr;var Xr=`MenuLabel`,Zr=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,H.jsx)(i.div,{...r,ref:t})});Zr.displayName=Xr;var Qr=`MenuItem`,$r=`menu.itemSelect`,ei=V.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=V.useRef(null),o=Mr(Qr,e.__scopeMenu),s=Hr(Qr,e.__scopeMenu),c=b(t,a),l=V.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent($r,{bubbles:!0,cancelable:!0});e.addEventListener($r,e=>r?.(e),{once:!0}),ee(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,H.jsx)(ti,{...i,ref:c,disabled:n,onClick:j(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:j(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:j(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||hr.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});ei.displayName=Qr;var ti=V.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:a,...o}=e,s=Hr(Qr,n),c=Or(n),l=V.useRef(null),u=b(t,l),[d,f]=V.useState(!1),[p,m]=V.useState(``);return V.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[o.children]),(0,H.jsx)(Sr.ItemSlot,{scope:n,disabled:r,textValue:a??p,children:(0,H.jsx)(mr,{asChild:!0,...c,focusable:!r,children:(0,H.jsx)(i.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...o,ref:u,onPointerMove:j(e.onPointerMove,Ni(e=>{r?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:j(e.onPointerLeave,Ni(e=>s.onItemLeave(e))),onFocus:j(e.onFocus,()=>f(!0)),onBlur:j(e.onBlur,()=>f(!1))})})})}),ni=`MenuCheckboxItem`,ri=V.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,H.jsx)(di,{scope:e.__scopeMenu,checked:n,children:(0,H.jsx)(ei,{role:`menuitemcheckbox`,"aria-checked":Di(n)?`mixed`:n,...i,ref:t,"data-state":Oi(n),onSelect:j(i.onSelect,()=>r?.(Di(n)?!0:!n),{checkForDefaultPrevented:!1})})})});ri.displayName=ni;var ii=`MenuRadioGroup`,[ai,oi]=Tr(ii,{value:void 0,onValueChange:()=>{}}),si=V.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=S(r);return(0,H.jsx)(ai,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,H.jsx)(Yr,{...i,ref:t})})});si.displayName=ii;var ci=`MenuRadioItem`,li=V.forwardRef((e,t)=>{let{value:n,...r}=e,i=oi(ci,e.__scopeMenu),a=n===i.value;return(0,H.jsx)(di,{scope:e.__scopeMenu,checked:a,children:(0,H.jsx)(ei,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":Oi(a),onSelect:j(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});li.displayName=ci;var ui=`MenuItemIndicator`,[di,fi]=Tr(ui,{checked:!1}),pi=V.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...a}=e,o=fi(ui,n);return(0,H.jsx)(tn,{present:r||Di(o.checked)||o.checked===!0,children:(0,H.jsx)(i.span,{...a,ref:t,"data-state":Oi(o.checked)})})});pi.displayName=ui;var mi=`MenuSeparator`,hi=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,H.jsx)(i.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});hi.displayName=mi;var gi=`MenuArrow`,_i=V.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=Dr(n);return(0,H.jsx)(v,{...i,...r,ref:t})});_i.displayName=gi;var vi=`MenuSub`,[yi,bi]=Tr(vi),xi=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Ar(vi,t),o=Dr(t),[s,c]=V.useState(null),[l,u]=V.useState(null),d=S(i);return V.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,H.jsx)(w,{...o,children:(0,H.jsx)(kr,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,H.jsx)(yi,{scope:t,contentId:g(),triggerId:g(),trigger:s,onTriggerChange:c,children:n})})})};xi.displayName=vi;var Si=`MenuSubTrigger`,Ci=V.forwardRef((e,t)=>{let n=Ar(Si,e.__scopeMenu),r=Mr(Si,e.__scopeMenu),i=bi(Si,e.__scopeMenu),a=Hr(Si,e.__scopeMenu),o=V.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=a,u={__scopeMenu:e.__scopeMenu},d=V.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return V.useEffect(()=>d,[d]),V.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]),(0,H.jsx)(Fr,{asChild:!0,...u,children:(0,H.jsx)(ti,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":Ei(n.open),...e,ref:s(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:j(e.onPointerMove,Ni(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:j(e.onPointerLeave,Ni(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:j(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||yr[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});Ci.displayName=Si;var wi=`MenuSubContent`,Ti=V.forwardRef((e,t)=>{let n=Rr(Br,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Ar(Br,e.__scopeMenu),o=Mr(Br,e.__scopeMenu),s=bi(wi,e.__scopeMenu),c=V.useRef(null),l=b(t,c);return(0,H.jsx)(Sr.Provider,{scope:e.__scopeMenu,children:(0,H.jsx)(tn,{present:r||a.open,children:(0,H.jsx)(Sr.Slot,{scope:e.__scopeMenu,children:(0,H.jsx)(qr,{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:j(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:j(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:j(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=br[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});Ti.displayName=wi;function Ei(e){return e?`open`:`closed`}function Di(e){return e===`indeterminate`}function Oi(e){return Di(e)?`indeterminate`:e?`checked`:`unchecked`}function ki(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Ai(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function U(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=Ai(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 ji(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 Mi(e,t){return t?ji({x:e.clientX,y:e.clientY},t):!1}function Ni(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Pi=Nr,Fi=Fr,Ii=zr,Li=Ur,Ri=Yr,zi=Zr,Bi=ei,Vi=ri,Hi=si,Ui=li,Wi=pi,Gi=hi,Ki=_i,qi=xi,Ji=Ci,Yi=Ti,Xi=`ContextMenu`,[Zi,Qi]=c(Xi,[Er]),$i=Er(),[ea,ta]=Zi(Xi),na=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:a=!0}=e,[o,s]=V.useState(!1),c=$i(t),l=S(r),u=V.useCallback(e=>{s(e),l(e)},[l]);return(0,H.jsx)(ea,{scope:t,open:o,onOpenChange:u,modal:a,children:(0,H.jsx)(Pi,{...c,dir:i,open:o,onOpenChange:u,modal:a,children:n})})};na.displayName=Xi;var ra=`ContextMenuTrigger`,ia=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,disabled:r=!1,...a}=e,o=ta(ra,n),s=$i(n),c=V.useRef({x:0,y:0}),l=V.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...c.current})}),u=V.useRef(0),d=V.useCallback(()=>window.clearTimeout(u.current),[]),f=e=>{c.current={x:e.clientX,y:e.clientY},o.onOpenChange(!0)};return V.useEffect(()=>d,[d]),V.useEffect(()=>void(r&&d()),[r,d]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Fi,{...s,virtualRef:l}),(0,H.jsx)(i.span,{"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,...a,ref:t,style:{WebkitTouchCallout:`none`,...e.style},onContextMenu:r?e.onContextMenu:j(e.onContextMenu,e=>{d(),f(e),e.preventDefault()}),onPointerDown:r?e.onPointerDown:j(e.onPointerDown,Na(e=>{d(),u.current=window.setTimeout(()=>f(e),700)})),onPointerMove:r?e.onPointerMove:j(e.onPointerMove,Na(d)),onPointerCancel:r?e.onPointerCancel:j(e.onPointerCancel,Na(d)),onPointerUp:r?e.onPointerUp:j(e.onPointerUp,Na(d))})]})});ia.displayName=ra;var aa=`ContextMenuPortal`,oa=e=>{let{__scopeContextMenu:t,...n}=e,r=$i(t);return(0,H.jsx)(Ii,{...r,...n})};oa.displayName=aa;var sa=`ContextMenuContent`,ca=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=ta(sa,n),a=$i(n),o=V.useRef(!1);return(0,H.jsx)(Li,{...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)`}})});ca.displayName=sa;var la=`ContextMenuGroup`,ua=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ri,{...i,...r,ref:t})});ua.displayName=la;var da=`ContextMenuLabel`,fa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(zi,{...i,...r,ref:t})});fa.displayName=da;var pa=`ContextMenuItem`,ma=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Bi,{...i,...r,ref:t})});ma.displayName=pa;var ha=`ContextMenuCheckboxItem`,ga=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Vi,{...i,...r,ref:t})});ga.displayName=ha;var _a=`ContextMenuRadioGroup`,va=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Hi,{...i,...r,ref:t})});va.displayName=_a;var ya=`ContextMenuRadioItem`,ba=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ui,{...i,...r,ref:t})});ba.displayName=ya;var xa=`ContextMenuItemIndicator`,Sa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Wi,{...i,...r,ref:t})});Sa.displayName=xa;var Ca=`ContextMenuSeparator`,wa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Gi,{...i,...r,ref:t})});wa.displayName=Ca;var Ta=`ContextMenuArrow`,Ea=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ki,{...i,...r,ref:t})});Ea.displayName=Ta;var Da=`ContextMenuSub`,Oa=e=>{let{__scopeContextMenu:t,children:n,onOpenChange:r,open:i,defaultOpen:a}=e,o=$i(t),[s,c]=u({prop:i,defaultProp:a??!1,onChange:r,caller:Da});return(0,H.jsx)(qi,{...o,open:s,onOpenChange:c,children:n})};Oa.displayName=Da;var ka=`ContextMenuSubTrigger`,Aa=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Ji,{...i,...r,ref:t})});Aa.displayName=ka;var ja=`ContextMenuSubContent`,Ma=V.forwardRef((e,t)=>{let{__scopeContextMenu:n,...r}=e,i=$i(n);return(0,H.jsx)(Yi,{...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)`}})});Ma.displayName=ja;function Na(e){return t=>t.pointerType===`mouse`?void 0:e(t)}var Pa=na,Fa=ia,Ia=oa,La=ca,Ra=ma,za=wa,Ba=`DropdownMenu`,[Va,Ha]=c(Ba,[Er]),Ua=Er(),[Wa,Ga]=Va(Ba),Ka=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Ua(t),l=V.useRef(null),[d,f]=u({prop:i,defaultProp:a??!1,onChange:o,caller:Ba});return(0,H.jsx)(Wa,{scope:t,triggerId:g(),triggerRef:l,contentId:g(),open:d,onOpenChange:f,onOpenToggle:V.useCallback(()=>f(e=>!e),[f]),modal:s,children:(0,H.jsx)(Pi,{...c,open:d,onOpenChange:f,dir:r,modal:s,children:n})})};Ka.displayName=Ba;var qa=`DropdownMenuTrigger`,Ja=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...a}=e,o=Ga(qa,n),c=Ua(n);return(0,H.jsx)(Fi,{asChild:!0,...c,children:(0,H.jsx)(i.button,{type:`button`,id:o.triggerId,"aria-haspopup":`menu`,"aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...a,ref:s(t,o.triggerRef),onPointerDown:j(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(o.onOpenToggle(),o.open||e.preventDefault())}),onKeyDown:j(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&o.onOpenToggle(),e.key===`ArrowDown`&&o.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});Ja.displayName=qa;var Ya=`DropdownMenuPortal`,Xa=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Ua(t);return(0,H.jsx)(Ii,{...r,...n})};Xa.displayName=Ya;var Za=`DropdownMenuContent`,Qa=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ga(Za,n),a=Ua(n),o=V.useRef(!1);return(0,H.jsx)(Li,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:j(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:j(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)`}})});Qa.displayName=Za;var $a=`DropdownMenuGroup`,eo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ri,{...i,...r,ref:t})});eo.displayName=$a;var to=`DropdownMenuLabel`,no=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(zi,{...i,...r,ref:t})});no.displayName=to;var ro=`DropdownMenuItem`,io=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Bi,{...i,...r,ref:t})});io.displayName=ro;var ao=`DropdownMenuCheckboxItem`,oo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Vi,{...i,...r,ref:t})});oo.displayName=ao;var so=`DropdownMenuRadioGroup`,co=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Hi,{...i,...r,ref:t})});co.displayName=so;var W=`DropdownMenuRadioItem`,G=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ui,{...i,...r,ref:t})});G.displayName=W;var lo=`DropdownMenuItemIndicator`,uo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Wi,{...i,...r,ref:t})});uo.displayName=lo;var fo=`DropdownMenuSeparator`,po=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Gi,{...i,...r,ref:t})});po.displayName=fo;var mo=`DropdownMenuArrow`,ho=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ki,{...i,...r,ref:t})});ho.displayName=mo;var go=`DropdownMenuSubTrigger`,_o=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Ji,{...i,...r,ref:t})});_o.displayName=go;var vo=`DropdownMenuSubContent`,yo=V.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Ua(n);return(0,H.jsx)(Yi,{...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)`}})});yo.displayName=vo;var bo=Ka,xo=Ja,So=Xa,Co=Qa,wo=io,To=`Label`,Eo=V.forwardRef((e,t)=>(0,H.jsx)(i.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));Eo.displayName=To;var Do=Eo;function Oo(e,t){return V.useReducer((e,n)=>t[e][n]??e,e)}var ko=`ScrollArea`,[Ao,jo]=c(ko),[Mo,No]=Ao(ko),Po=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:a,scrollHideDelay:o=600,...s}=e,[c,l]=V.useState(null),[u,d]=V.useState(null),[f,p]=V.useState(null),[m,h]=V.useState(null),[g,v]=V.useState(null),[y,x]=V.useState(0),[S,C]=V.useState(0),[w,T]=V.useState(!1),[E,D]=V.useState(!1),O=b(t,e=>l(e)),k=_(a);return(0,H.jsx)(Mo,{scope:n,type:r,dir:k,scrollHideDelay:o,scrollArea:c,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:w,onScrollbarXEnabledChange:T,scrollbarY:g,onScrollbarYChange:v,scrollbarYEnabled:E,onScrollbarYEnabledChange:D,onCornerWidthChange:x,onCornerHeightChange:C,children:(0,H.jsx)(i.div,{dir:k,...s,ref:O,style:{position:`relative`,"--radix-scroll-area-corner-width":y+`px`,"--radix-scroll-area-corner-height":S+`px`,...e.style}})})});Po.displayName=ko;var Fo=`ScrollAreaViewport`,Io=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:a,...o}=e,s=No(Fo,n),c=b(t,V.useRef(null),s.onViewportChange);return(0,H.jsxs)(H.Fragment,{children:[(0,H.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:a}),(0,H.jsx)(i.div,{"data-radix-scroll-area-viewport":``,...o,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,H.jsx)(`div`,{ref:s.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});Io.displayName=Fo;var Lo=`ScrollAreaScrollbar`,Ro=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=No(Lo,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return V.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,H.jsx)(zo,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,H.jsx)(Bo,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,H.jsx)(Vo,{...r,ref:t,forceMount:n}):i.type===`always`?(0,H.jsx)(Ho,{...r,ref:t}):null});Ro.displayName=Lo;var zo=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=No(Lo,e.__scopeScrollArea),[a,o]=V.useState(!1);return V.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,H.jsx)(tn,{present:n||a,children:(0,H.jsx)(Vo,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),Bo=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=No(Lo,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=cs(()=>c(`SCROLL_END`),100),[s,c]=Oo(`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 V.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),V.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,H.jsx)(tn,{present:n||s!==`hidden`,children:(0,H.jsx)(Ho,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:j(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:j(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),Vo=V.forwardRef((e,t)=>{let n=No(Lo,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=V.useState(!1),s=e.orientation===`horizontal`,c=cs(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return ls(n.viewport,c),ls(n.content,c),(0,H.jsx)(tn,{present:r||a,children:(0,H.jsx)(Ho,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),Ho=V.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=No(Lo,e.__scopeScrollArea),a=V.useRef(null),o=V.useRef(0),[s,c]=V.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ts(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 rs(e,o.current,s,t)}return n===`horizontal`?(0,H.jsx)(Uo,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=is(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,H.jsx)(Wo,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=is(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}),Uo=V.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=No(Lo,e.__scopeScrollArea),[o,s]=V.useState(),c=V.useRef(null),l=b(t,c,a.onScrollbarXChange);return V.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,H.jsx)(qo,{"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":ns(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),os(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:es(o.paddingLeft),paddingEnd:es(o.paddingRight)}})}})}),Wo=V.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,a=No(Lo,e.__scopeScrollArea),[o,s]=V.useState(),c=V.useRef(null),l=b(t,c,a.onScrollbarYChange);return V.useEffect(()=>{c.current&&s(getComputedStyle(c.current))},[c]),(0,H.jsx)(qo,{"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":ns(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),os(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:es(o.paddingTop),paddingEnd:es(o.paddingBottom)}})}})}),[Go,Ko]=Ao(Lo),qo=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:r,hasThumb:a,onThumbChange:o,onThumbPointerUp:s,onThumbPointerDown:c,onThumbPositionChange:l,onDragScroll:u,onWheelScroll:d,onResize:f,...p}=e,m=No(Lo,n),[h,g]=V.useState(null),_=b(t,e=>g(e)),v=V.useRef(null),y=V.useRef(``),x=m.viewport,C=r.content-r.viewport,w=S(d),T=S(l),E=cs(f,10);function D(e){v.current&&u({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return V.useEffect(()=>{let e=e=>{let t=e.target;h?.contains(t)&&w(e,C)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[x,h,C,w]),V.useEffect(T,[r,T]),ls(h,E),ls(m.content,E),(0,H.jsx)(Go,{scope:n,scrollbar:h,hasThumb:a,onThumbChange:S(o),onThumbPointerUp:S(s),onThumbPositionChange:T,onThumbPointerDown:S(c),children:(0,H.jsx)(i.div,{...p,ref:_,style:{position:`absolute`,...p.style},onPointerDown:j(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),v.current=h.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,m.viewport&&(m.viewport.style.scrollBehavior=`auto`),D(e))}),onPointerMove:j(e.onPointerMove,D),onPointerUp:j(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,m.viewport&&(m.viewport.style.scrollBehavior=``),v.current=null})})})}),Jo=`ScrollAreaThumb`,Yo=V.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=Ko(Jo,e.__scopeScrollArea);return(0,H.jsx)(tn,{present:n||i.hasThumb,children:(0,H.jsx)(Xo,{ref:t,...r})})}),Xo=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:r,...a}=e,o=No(Jo,n),s=Ko(Jo,n),{onThumbPositionChange:c}=s,l=b(t,e=>s.onThumbChange(e)),u=V.useRef(void 0),d=cs(()=>{u.current&&=(u.current(),void 0)},100);return V.useEffect(()=>{let e=o.viewport;if(e){let t=()=>{d(),u.current||(u.current=ss(e,c),c())};return c(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[o.viewport,d,c]),(0,H.jsx)(i.div,{"data-state":s.hasThumb?`visible`:`hidden`,...a,ref:l,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...r},onPointerDownCapture:j(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;s.onThumbPointerDown({x:n,y:r})}),onPointerUp:j(e.onPointerUp,s.onThumbPointerUp)})});Yo.displayName=Jo;var Zo=`ScrollAreaCorner`,Qo=V.forwardRef((e,t)=>{let n=No(Zo,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,H.jsx)($o,{...e,ref:t}):null});Qo.displayName=Zo;var $o=V.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,a=No(Zo,n),[o,s]=V.useState(0),[c,l]=V.useState(0),u=!!(o&&c);return ls(a.scrollbarX,()=>{let e=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(e),l(e)}),ls(a.scrollbarY,()=>{let e=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(e),s(e)}),u?(0,H.jsx)(i.div,{...r,ref:t,style:{width:o,height:c,position:`absolute`,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function es(e){return e?parseInt(e,10):0}function ts(e,t){let n=e/t;return isNaN(n)?0:n}function ns(e){let t=ts(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function rs(e,t,n,r=`ltr`){let i=ns(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 as([c,l],d)(e)}function is(e,t,n=`ltr`){let r=ns(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=C(e,n===`ltr`?[0,o]:[o*-1,0]);return as([0,o],[0,s])(c)}function as(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 os(e,t){return e>0&&e<t}var ss=(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 cs(e,t){let n=S(e),r=V.useRef(0);return V.useEffect(()=>()=>window.clearTimeout(r.current),[]),V.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function ls(e,t){let n=S(t);A(()=>{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 us=Po,ds=Io,fs=Qo,ps=[` `,`Enter`,`ArrowUp`,`ArrowDown`],ms=[` `,`Enter`],hs=`Select`,[gs,_s,vs]=f(hs),[ys,bs]=c(hs,[vs,D]),xs=D(),[Ss,Cs]=ys(hs),[ws,Ts]=ys(hs),Es=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:c,dir:l,name:d,autoComplete:f,disabled:p,required:m,form:h}=e,v=xs(t),[y,b]=V.useState(null),[x,S]=V.useState(null),[C,T]=V.useState(!1),E=_(l),[D,O]=u({prop:r,defaultProp:i??!1,onChange:a,caller:hs}),[k,A]=u({prop:o,defaultProp:s,onChange:c,caller:hs}),ee=V.useRef(null),te=y?h||!!y.closest(`form`):!0,[j,M]=V.useState(new Set),N=Array.from(j).map(e=>e.props.value).join(`;`);return(0,H.jsx)(w,{...v,children:(0,H.jsxs)(Ss,{required:m,scope:t,trigger:y,onTriggerChange:b,valueNode:x,onValueNodeChange:S,valueNodeHasChildren:C,onValueNodeHasChildrenChange:T,contentId:g(),value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:ee,disabled:p,children:[(0,H.jsx)(gs.Provider,{scope:t,children:(0,H.jsx)(ws,{scope:e.__scopeSelect,onNativeOptionAdd:V.useCallback(e=>{M(t=>new Set(t).add(e))},[]),onNativeOptionRemove:V.useCallback(e=>{M(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),te?(0,H.jsxs)(xc,{"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:f,value:k,onChange:e=>A(e.target.value),disabled:p,form:h,children:[k===void 0?(0,H.jsx)(`option`,{value:``}):null,Array.from(j)]},N):null]})})};Es.displayName=hs;var Ds=`SelectTrigger`,Os=V.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...a}=e,o=xs(n),s=Cs(Ds,n),c=s.disabled||r,l=b(t,s.onTriggerChange),u=_s(n),d=V.useRef(`touch`),[f,p,m]=Cc(e=>{let t=u().filter(e=>!e.disabled),n=wc(t,e,t.find(e=>e.value===s.value));n!==void 0&&s.onValueChange(n.value)}),h=e=>{c||(s.onOpenChange(!0),m()),e&&(s.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,H.jsx)(E,{asChild:!0,...o,children:(0,H.jsx)(i.button,{type:`button`,role:`combobox`,"aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":`none`,dir:s.dir,"data-state":s.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":Sc(s.value)?``:void 0,...a,ref:l,onClick:j(a.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:j(a.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:j(a.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&ps.includes(e.key)&&(h(),e.preventDefault())})})})});Os.displayName=Ds;var ks=`SelectValue`,As=V.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:a,children:o,placeholder:s=``,...c}=e,l=Cs(ks,n),{onValueNodeHasChildrenChange:u}=l,d=o!==void 0,f=b(t,l.onValueNodeChange);return A(()=>{u(d)},[u,d]),(0,H.jsx)(i.span,{...c,ref:f,style:{pointerEvents:`none`},children:Sc(l.value)?(0,H.jsx)(H.Fragment,{children:s}):o})});As.displayName=ks;var js=`SelectIcon`,Ms=V.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...a}=e;return(0,H.jsx)(i.span,{"aria-hidden":!0,...a,ref:t,children:r||`▼`})});Ms.displayName=js;var Ns=`SelectPortal`,Ps=e=>(0,H.jsx)(m,{asChild:!0,...e});Ps.displayName=Ns;var Fs=`SelectContent`,Is=V.forwardRef((e,t)=>{let n=Cs(Fs,e.__scopeSelect),[r,i]=V.useState();if(A(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?_t.createPortal((0,H.jsx)(Rs,{scope:e.__scopeSelect,children:(0,H.jsx)(gs.Slot,{scope:e.__scopeSelect,children:(0,H.jsx)(`div`,{children:e.children})})}),t):null}return(0,H.jsx)(Hs,{...e,ref:t})});Is.displayName=Fs;var Ls=10,[Rs,zs]=ys(Fs),Bs=`SelectContentImpl`,Vs=o(`SelectContent.RemoveScroll`),Hs=V.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:m,sticky:g,hideWhenDetached:_,avoidCollisions:v,...y}=e,S=Cs(Fs,n),[C,w]=V.useState(null),[E,D]=V.useState(null),O=b(t,e=>w(e)),[A,ee]=V.useState(null),[te,M]=V.useState(null),N=_s(n),[P,ne]=V.useState(!1),F=V.useRef(!1);V.useEffect(()=>{if(C)return p(C)},[C]),k();let re=V.useCallback(e=>{let[t,...n]=N().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&E&&(E.scrollTop=0),n===r&&E&&(E.scrollTop=E.scrollHeight),n?.focus(),document.activeElement!==i))return},[N,E]),I=V.useCallback(()=>re([A,C]),[re,A,C]);V.useEffect(()=>{P&&I()},[P,I]);let{onOpenChange:L,triggerPointerDownPosRef:R}=S;V.useEffect(()=>{if(C){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(R.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(R.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||L(!1),document.removeEventListener(`pointermove`,t),R.current=null};return R.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[C,L,R]),V.useEffect(()=>{let e=()=>L(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[L]);let[ie,ae]=Cc(e=>{let t=N().filter(e=>!e.disabled),n=wc(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),z=V.useCallback((e,t,n)=>{let r=!F.current&&!n;(S.value!==void 0&&S.value===t||r)&&(ee(e),r&&(F.current=!0))},[S.value]),oe=V.useCallback(()=>C?.focus(),[C]),se=V.useCallback((e,t,n)=>{let r=!F.current&&!n;(S.value!==void 0&&S.value===t||r)&&M(e)},[S.value]),ce=r===`popper`?Ks:Ws,le=ce===Ks?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:m,sticky:g,hideWhenDetached:_,avoidCollisions:v}:{};return(0,H.jsx)(Rs,{scope:n,content:C,viewport:E,onViewportChange:D,itemRefCallback:z,selectedItem:A,onItemLeave:oe,itemTextRefCallback:se,focusSelectedItem:I,selectedItemText:te,position:r,isPositioned:P,searchRef:ie,children:(0,H.jsx)(x,{as:Vs,allowPinchZoom:!0,children:(0,H.jsx)(h,{asChild:!0,trapped:S.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:j(i,e=>{S.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>S.onOpenChange(!1),children:(0,H.jsx)(ce,{role:`listbox`,id:S.contentId,"data-state":S.open?`open`:`closed`,dir:S.dir,onContextMenu:e=>e.preventDefault(),...y,...le,onPlaced:()=>ne(!0),ref:O,style:{display:`flex`,flexDirection:`column`,outline:`none`,...y.style},onKeyDown:j(y.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ae(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=N().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()}})})})})})})});Hs.displayName=Bs;var Us=`SelectItemAlignedPosition`,Ws=V.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...a}=e,o=Cs(Fs,n),s=zs(Fs,n),[c,l]=V.useState(null),[u,d]=V.useState(null),f=b(t,e=>d(e)),p=_s(n),m=V.useRef(!1),h=V.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=s,x=V.useCallback(()=>{if(o.trigger&&o.valueNode&&c&&u&&g&&_&&v){let e=o.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=o.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(o.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ls,d=C(a,[Ls,Math.max(Ls,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Ls,d=C(a,[Ls,Math.max(Ls,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let a=p(),s=window.innerHeight-Ls*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),w=window.getComputedStyle(g),T=parseInt(w.paddingTop,10),E=parseInt(w.paddingBottom,10),D=e.top+e.height/2-Ls,O=s-D,k=_.offsetHeight/2,A=_.offsetTop+k,ee=f+h+A,te=x-ee;if(ee<=D){let e=a.length>0&&_===a[a.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=ee+Math.max(O,k+(e?E:0)+t+y);c.style.height=n+`px`}else{let e=a.length>0&&_===a[0].ref.current;c.style.top=`0px`;let t=Math.max(D,f+g.offsetTop+(e?T:0)+k)+te;c.style.height=t+`px`,g.scrollTop=ee-D+g.offsetTop}c.style.margin=`${Ls}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,o.trigger,o.valueNode,c,u,g,_,v,o.dir,r]);A(()=>x(),[x]);let[S,w]=V.useState();return A(()=>{u&&w(window.getComputedStyle(u).zIndex)},[u]),(0,H.jsx)(qs,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:V.useCallback(e=>{e&&h.current===!0&&(x(),y?.(),h.current=!1)},[x,y]),children:(0,H.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:S},children:(0,H.jsx)(i.div,{...a,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...a.style}})})})});Ws.displayName=Us;var Gs=`SelectPopperPosition`,Ks=V.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Ls,...a}=e,o=xs(n);return(0,H.jsx)(d,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});Ks.displayName=Gs;var[qs,Js]=ys(Fs,{}),Ys=`SelectViewport`,Xs=V.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...a}=e,o=zs(Ys,n),s=Js(Ys,n),c=b(t,o.onViewportChange),l=V.useRef(0);return(0,H.jsxs)(H.Fragment,{children:[(0,H.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,H.jsx)(gs.Slot,{scope:n,children:(0,H.jsx)(i.div,{"data-radix-select-viewport":``,role:`presentation`,...a,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...a.style},onScroll:j(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=s;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-Ls*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}l.current=t.scrollTop})})})]})});Xs.displayName=Ys;var Zs=`SelectGroup`,[Qs,$s]=ys(Zs),ec=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,a=g();return(0,H.jsx)(Qs,{scope:n,id:a,children:(0,H.jsx)(i.div,{role:`group`,"aria-labelledby":a,...r,ref:t})})});ec.displayName=Zs;var tc=`SelectLabel`,nc=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,a=$s(tc,n);return(0,H.jsx)(i.div,{id:a.id,...r,ref:t})});nc.displayName=tc;var rc=`SelectItem`,[ic,ac]=ys(rc),oc=V.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:a=!1,textValue:o,...s}=e,c=Cs(rc,n),l=zs(rc,n),u=c.value===r,[d,f]=V.useState(o??``),[p,m]=V.useState(!1),h=b(t,e=>l.itemRefCallback?.(e,r,a)),_=g(),v=V.useRef(`touch`),y=()=>{a||(c.onValueChange(r),c.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,H.jsx)(ic,{scope:n,value:r,disabled:a,textId:_,isSelected:u,onItemTextChange:V.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,H.jsx)(gs.ItemSlot,{scope:n,value:r,disabled:a,textValue:d,children:(0,H.jsx)(i.div,{role:`option`,"aria-labelledby":_,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":a||void 0,"data-disabled":a?``:void 0,tabIndex:a?void 0:-1,...s,ref:h,onFocus:j(s.onFocus,()=>m(!0)),onBlur:j(s.onBlur,()=>m(!1)),onClick:j(s.onClick,()=>{v.current!==`mouse`&&y()}),onPointerUp:j(s.onPointerUp,()=>{v.current===`mouse`&&y()}),onPointerDown:j(s.onPointerDown,e=>{v.current=e.pointerType}),onPointerMove:j(s.onPointerMove,e=>{v.current=e.pointerType,a?l.onItemLeave?.():v.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:j(s.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:j(s.onKeyDown,e=>{l.searchRef?.current!==``&&e.key===` `||(ms.includes(e.key)&&y(),e.key===` `&&e.preventDefault())})})})})});oc.displayName=rc;var sc=`SelectItemText`,cc=V.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:a,...o}=e,s=Cs(sc,n),c=zs(sc,n),l=ac(sc,n),u=Ts(sc,n),[d,f]=V.useState(null),p=b(t,e=>f(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=d?.textContent,h=V.useMemo(()=>(0,H.jsx)(`option`,{value:l.value,disabled:l.disabled,children:m},l.value),[l.disabled,l.value,m]),{onNativeOptionAdd:g,onNativeOptionRemove:_}=u;return A(()=>(g(h),()=>_(h)),[g,_,h]),(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(i.span,{id:l.textId,...o,ref:p}),l.isSelected&&s.valueNode&&!s.valueNodeHasChildren?_t.createPortal(o.children,s.valueNode):null]})});cc.displayName=sc;var lc=`SelectItemIndicator`,uc=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return ac(lc,n).isSelected?(0,H.jsx)(i.span,{"aria-hidden":!0,...r,ref:t}):null});uc.displayName=lc;var dc=`SelectScrollUpButton`,fc=V.forwardRef((e,t)=>{let n=zs(dc,e.__scopeSelect),r=Js(dc,e.__scopeSelect),[i,a]=V.useState(!1),o=b(t,r.onScrollButtonChange);return A(()=>{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,H.jsx)(hc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});fc.displayName=dc;var pc=`SelectScrollDownButton`,mc=V.forwardRef((e,t)=>{let n=zs(pc,e.__scopeSelect),r=Js(pc,e.__scopeSelect),[i,a]=V.useState(!1),o=b(t,r.onScrollButtonChange);return A(()=>{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,H.jsx)(hc,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});mc.displayName=pc;var hc=V.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...a}=e,o=zs(`SelectScrollButton`,n),s=V.useRef(null),c=_s(n),l=V.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return V.useEffect(()=>()=>l(),[l]),A(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,H.jsx)(i.div,{"aria-hidden":!0,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:j(a.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(r,50))}),onPointerMove:j(a.onPointerMove,()=>{o.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(r,50))}),onPointerLeave:j(a.onPointerLeave,()=>{l()})})}),gc=`SelectSeparator`,_c=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,H.jsx)(i.div,{"aria-hidden":!0,...r,ref:t})});_c.displayName=gc;var vc=`SelectArrow`,yc=V.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=xs(n),a=Cs(vc,n),o=zs(vc,n);return a.open&&o.position===`popper`?(0,H.jsx)(v,{...i,...r,ref:t}):null});yc.displayName=vc;var bc=`SelectBubbleInput`,xc=V.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let a=V.useRef(null),o=b(r,a),s=qn(t);return V.useEffect(()=>{let e=a.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(s!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[s,t]),(0,H.jsx)(i.select,{...n,style:{...Xt,...n.style},ref:o,defaultValue:t})});xc.displayName=bc;function Sc(e){return e===``||e===void 0}function Cc(e){let t=S(e),n=V.useRef(``),r=V.useRef(0),i=V.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=V.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return V.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function wc(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=Tc(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 Tc(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Ec=Es,Dc=Os,Oc=As,kc=Ms,Ac=Ps,jc=Is,Mc=Xs,Nc=oc,Pc=cc,Fc=uc,Ic=fc,Lc=mc,Rc=`Separator`,zc=`horizontal`,Bc=[`horizontal`,`vertical`],Vc=V.forwardRef((e,t)=>{let{decorative:n,orientation:r=zc,...a}=e,o=Hc(r)?r:zc,s=o===`vertical`?o:void 0,c=n?{role:`none`}:{"aria-orientation":s,role:`separator`};return(0,H.jsx)(i.div,{"data-orientation":o,...c,...a,ref:t})});Vc.displayName=Rc;function Hc(e){return Bc.includes(e)}var Uc=Vc,[Wc,Gc]=c(`Tooltip`,[D]),Kc=D(),qc=`TooltipProvider`,Jc=700,Yc=`tooltip.open`,[Xc,Zc]=Wc(qc),Qc=e=>{let{__scopeTooltip:t,delayDuration:n=Jc,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=V.useRef(!0),s=V.useRef(!1),c=V.useRef(0);return V.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,H.jsx)(Xc,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:V.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:V.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:V.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Qc.displayName=qc;var $c=`Tooltip`,[el,tl]=Wc($c),nl=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Zc($c,e.__scopeTooltip),l=Kc(t),[d,f]=V.useState(null),p=g(),m=V.useRef(0),h=o??c.disableHoverableContent,_=s??c.delayDuration,v=V.useRef(!1),[y,b]=u({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Yc))):c.onClose(),a?.(e)},caller:$c}),x=V.useMemo(()=>y?v.current?`delayed-open`:`instant-open`:`closed`,[y]),S=V.useCallback(()=>{window.clearTimeout(m.current),m.current=0,v.current=!1,b(!0)},[b]),C=V.useCallback(()=>{window.clearTimeout(m.current),m.current=0,b(!1)},[b]),T=V.useCallback(()=>{window.clearTimeout(m.current),m.current=window.setTimeout(()=>{v.current=!0,b(!0),m.current=0},_)},[_,b]);return V.useEffect(()=>()=>{m.current&&=(window.clearTimeout(m.current),0)},[]),(0,H.jsx)(w,{...l,children:(0,H.jsx)(el,{scope:t,contentId:p,open:y,stateAttribute:x,trigger:d,onTriggerChange:f,onTriggerEnter:V.useCallback(()=>{c.isOpenDelayedRef.current?T():S()},[c.isOpenDelayedRef,T,S]),onTriggerLeave:V.useCallback(()=>{h?C():(window.clearTimeout(m.current),m.current=0)},[C,h]),onOpen:S,onClose:C,disableHoverableContent:h,children:n})})};nl.displayName=$c;var rl=`TooltipTrigger`,il=V.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,a=tl(rl,n),o=Zc(rl,n),s=Kc(n),c=b(t,V.useRef(null),a.onTriggerChange),l=V.useRef(!1),u=V.useRef(!1),d=V.useCallback(()=>l.current=!1,[]);return V.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,H.jsx)(E,{asChild:!0,...s,children:(0,H.jsx)(i.button,{"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute,...r,ref:c,onPointerMove:j(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!o.isPointerInTransitRef.current&&(a.onTriggerEnter(),u.current=!0)}),onPointerLeave:j(e.onPointerLeave,()=>{a.onTriggerLeave(),u.current=!1}),onPointerDown:j(e.onPointerDown,()=>{a.open&&a.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:j(e.onFocus,()=>{l.current||a.onOpen()}),onBlur:j(e.onBlur,a.onClose),onClick:j(e.onClick,a.onClose)})})});il.displayName=rl;var al=`TooltipPortal`,[ol,sl]=Wc(al,{forceMount:void 0}),cl=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=tl(al,t);return(0,H.jsx)(ol,{scope:t,forceMount:n,children:(0,H.jsx)(tn,{present:n||a.open,children:(0,H.jsx)(m,{asChild:!0,container:i,children:r})})})};cl.displayName=al;var ll=`TooltipContent`,ul=V.forwardRef((e,t)=>{let n=sl(ll,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=tl(ll,e.__scopeTooltip);return(0,H.jsx)(tn,{present:r||o.open,children:o.disableHoverableContent?(0,H.jsx)(hl,{side:i,...a,ref:t}):(0,H.jsx)(dl,{side:i,...a,ref:t})})}),dl=V.forwardRef((e,t)=>{let n=tl(ll,e.__scopeTooltip),r=Zc(ll,e.__scopeTooltip),i=V.useRef(null),a=b(t,i),[o,s]=V.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=V.useCallback(()=>{s(null),d(!1)},[d]),p=V.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=yl(r,vl(r,n.getBoundingClientRect())),a=bl(t.getBoundingClientRect());s(Sl([...i,...a])),d(!0)},[d]);return V.useEffect(()=>()=>f(),[f]),V.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]),V.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=!xl(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,H.jsx)(hl,{...e,ref:a})}),[fl,pl]=Wc($c,{isInside:!1}),ml=a(`TooltipContent`),hl=V.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=tl(ll,n),l=Kc(n),{onClose:u}=c;return V.useEffect(()=>(document.addEventListener(Yc,u),()=>document.removeEventListener(Yc,u)),[u]),V.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,H.jsx)(T,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,H.jsxs)(d,{"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,H.jsx)(ml,{children:r}),(0,H.jsx)(fl,{scope:n,isInside:!0,children:(0,H.jsx)($t,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});ul.displayName=ll;var gl=`TooltipArrow`,_l=V.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Kc(n);return pl(gl,n).isInside?null:(0,H.jsx)(v,{...i,...r,ref:t})});_l.displayName=gl;function vl(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 yl(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 bl(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 xl(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 Sl(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),Cl(t)}function Cl(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 wl=Qc,Tl=nl,El=il,Dl=cl,Ol=ul,kl=_l;function Al({delayDuration:e=0,...t}){return(0,H.jsx)(wl,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function jl({...e}){return(0,H.jsx)(Tl,{"data-slot":`tooltip`,...e})}function Ml({...e}){return(0,H.jsx)(El,{"data-slot":`tooltip-trigger`,...e})}function Nl({className:e,sideOffset:t=0,children:n,...r}){return(0,H.jsx)(Dl,{children:(0,H.jsxs)(Ol,{"data-slot":`tooltip-content`,sideOffset:t,className:z(`z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in rounded-md bg-foreground px-3 py-1.5 text-xs text-balance text-background fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95`,e),...r,children:[n,(0,H.jsx)(kl,{className:`z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground`})]})})}function Pl(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function Fl(e,t){let n=getComputedStyle(e.ownerDocument.body);return t*parseFloat(n.fontSize)}function Il(e){return e/100*window.innerHeight}function Ll(e){return e/100*window.innerWidth}function Rl(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 K({groupSize:e,panelElement:t,styleProp:n}){let r,[i,a]=Rl(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=Fl(t,i);break;case`em`:r=Pl(t,i);break;case`vh`:r=Il(i);break;case`vw`:r=Ll(i);break}return r}function q(e){return parseFloat(e.toFixed(3))}function J({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 Y(e){let{panels:t}=e,n=J({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=q(K({groupSize:n,panelElement:t,styleProp:r.collapsedSize})/n*100));let a;r.defaultSize!==void 0&&(a=q(K({groupSize:n,panelElement:t,styleProp:r.defaultSize})/n*100));let o=0;r.minSize!==void 0&&(o=q(K({groupSize:n,panelElement:t,styleProp:r.minSize})/n*100));let s=100;return r.maxSize!==void 0&&(s=q(K({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 zl(e,t){return Array.from(t).sort(e===`horizontal`?Bl:Vl)}function Bl(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function Vl(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function Hl(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function Ul(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 Wl({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}=Ul(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return X(i,`No rect found`),i}var Gl;function Kl(){return Gl===void 0&&(Gl=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),Gl}function ql(e){let{element:t,orientation:n,panels:r,separators:i}=e,a=zl(n,Array.from(t.children).filter(Hl).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,Wl({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=Kl()?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:J({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 Jl=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)}}},Yl=new Map,Xl=new Jl;function Zl(e){Yl=new Map(Yl),Yl.delete(e)}function Ql(e,t){for(let[t]of Yl)if(t.id===e)return t}function $l(e,t){for(let[t,n]of Yl)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function eu(){return Yl}function tu(e,t){return Xl.addListener(`groupChange`,n=>{n.group.id===e&&t(n)})}function nu(e,t){let n=Yl.get(e);Yl=new Map(Yl),Yl.set(e,t),Xl.emit(`groupChange`,{group:e,prev:n,next:t})}function ru(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=Ul(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 iu(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function au(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:du(e),b:du(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:uu(lu(n.a)),b:uu(lu(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 ou=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function su(e){let t=getComputedStyle(fu(e)??e).display;return t===`flex`||t===`inline-flex`}function cu(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||su(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`||ou.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function lu(e){let t=e.length;for(;t--;){let n=e[t];if(X(n,`Missing node`),cu(n))return n}return null}function uu(e){return e&&Number(getComputedStyle(e).zIndex)||0}function du(e){let t=[];for(;e;)t.push(e),e=fu(e);return t}function fu(e){let{parentNode:t}=e;return iu(t)?t.host:t}function pu(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 mu({groupElement:e,hitRegion:t,pointerEventTarget:n}){if(!Hl(n)||n.contains(e)||e.contains(n))return!0;if(au(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(pu(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function hu(e,t){let n=[];return t.forEach((t,r)=>{if(r.disabled)return;let i=ql(r),a=ru(r.orientation,i,{x:e.clientX,y:e.clientY});a&&a.distance.x<=0&&a.distance.y<=0&&mu({groupElement:r.element,hitRegion:a.hitRegion.rect,pointerEventTarget:e.target})&&n.push(a.hitRegion)}),n}function gu(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 _u(e,t,n=0){return Math.abs(q(e)-q(t))<=n}function vu(e,t){return _u(e,t)?0:e>t?1:-1}function yu({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(vu(r,c)<0)if(a){let e=(i+c)/2;r=vu(r,e)<0?i:c}else r=c;return r=Math.min(s,r),r=q(r),r}function bu({delta:e,initialLayout:t,panelConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(_u(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}`),_u(n,i)){let t=o-n;vu(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}`),_u(n,o)){let t=n-i;vu(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&&vu(i,c)<0)if(e>0){let t=c-o,n=t/2;vu(i+e,c)<0&&(e=vu(e,n)<=0?0:t)}else{let t=c-o,n=100-t/2;vu(i-e,c)<0&&(e=vu(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=yu({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=yu({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:i,size:a});if(!_u(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(gu(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=yu({overrideDisabledPanels:o,panelConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!_u(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=yu({overrideDisabledPanels:o,panelConstraints:n[r],prevSize:i,size:a});if(_u(i,s)||(t-=s-i,l[r]=s),_u(t,0))break;e>0?r--:r++}}}if(!_u(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 xu(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||vu(e[n],t[n])!==0)return!1;return!0}function Su({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(!_u(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=yu({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!_u(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=yu({overrideDisabledPanels:!0,panelConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,_u(a,0)))break}let o=Object.keys(e);return r.reduce((e,t,n)=>(e[o[n]]=t,e),{})}function Cu({groupId:e,panelId:t}){let n=()=>{let t=eu();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=Su({layout:bu({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});xu(l,p)||nu(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&&_u(t,n)},resize:e=>{let{group:t}=n(),{element:r}=i(),a=J({group:t});o(q(K({groupSize:a,panelElement:r,styleProp:e})/a*100))}}}function wu(e){e.defaultPrevented||hu(e,eu()).forEach(t=>{if(t.separator){let n=t.panels.find(e=>e.panelConstraints.defaultSize!==void 0);if(n){let r=n.panelConstraints.defaultSize,i=Cu({groupId:t.group.id,panelId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function Tu(e){let t=eu();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 Eu({groupId:e}){let t=()=>{let t=eu();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=Su({layout:e,panelConstraints:r});return n?o:(xu(o,c)||nu(i,{defaultLayoutDeferred:n,derivedPanelConstraints:r,groupSize:a,layout:c,separatorToPanels:s}),c)}}}function Du(e,t){let n=Tu(e),r=$l(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=Eu({groupId:n.id}).getLayout(),c=Su({layout:bu({delta:t,initialLayout:s,panelConstraints:r.derivedPanelConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),panelConstraints:r.derivedPanelConstraints});xu(s,c)||nu(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedPanelConstraints:r.derivedPanelConstraints,groupSize:r.groupSize,layout:c,separatorToPanels:r.separatorToPanels})}function Ou(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=Tu(t);if(!n.disabled)switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&Du(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&Du(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&Du(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&Du(t,-5);break;case`End`:e.preventDefault(),Du(t,100);break;case`Enter`:{e.preventDefault();let n=Tu(t),{derivedPanelConstraints:r,layout:i,separatorToPanels:a}=$l(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];Du(t,(l.collapsedSize===e?n.mutableState.expandedPanelSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let n=Tu(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(),Du(t,-100);break}}var ku={cursorFlags:0,state:`inactive`},Au=new Jl;function ju(){return ku}function Mu(e){return Au.addListener(`change`,e)}function Nu(e){let t=ku,n={...ku};n.cursorFlags=e,ku=n,Au.emit(`change`,{prev:t,next:n})}function Pu(e){let t=ku;ku=e,Au.emit(`change`,{prev:t,next:e})}function Fu(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=eu(),n=hu(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)}),Pu({cursorFlags:0,hitRegions:n,initialLayoutMap:r,pointerDownAtPoint:{x:e.clientX,y:e.clientY},state:`active`}),n.length&&e.preventDefault()}var Iu=e=>e,Lu=()=>{},Ru=1,zu=2,Bu=4,Vu=8,Hu=3,Uu=12,Wu;function Z(){return Wu===void 0&&(Wu=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(Wu=!0)),Wu}function Gu({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&&Z()){let t=(e&Ru)!==0,n=(e&zu)!==0,r=(e&Bu)!==0,i=(e&Vu)!==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 Z()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var Ku=new WeakMap;function qu(e){if(e.defaultView===null||e.defaultView===void 0)return;let{prevStyle:t,styleSheet:n}=Ku.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&e.adoptedStyleSheets.push(n));let r=ju();switch(r.state){case`active`:case`hover`:{let e=Gu({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}Ku.set(e,{prevStyle:t,styleSheet:n})}function Ju({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=bu({delta:d,initialLayout:f,panelConstraints:h,pivotIndices:e.panels.map(e=>l.indexOf(e)),prevLayout:_,trigger:`mouse-or-touch`});if(xu(t,_)){if(d!==0&&!u)switch(c){case`horizontal`:s|=d<0?Ru:zu;break;case`vertical`:s|=d<0?Bu:Vu;break}}else nu(e.group,{defaultLayoutDeferred:m,derivedPanelConstraints:h,groupSize:g,layout:t,separatorToPanels:v})}});let c=0;t.movementX===0?c|=o&Hu:c|=s&Hu,t.movementY===0?c|=o&Uu:c|=s&Uu,Nu(c),qu(e)}function Yu(e){let t=eu(),n=ju();switch(n.state){case`active`:Ju({document:e.currentTarget,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedGroups:t,prevCursorFlags:n.cursorFlags})}}function Xu(e){if(e.defaultPrevented)return;let t=ju(),n=eu();switch(t.state){case`active`:if(e.buttons===0){Pu({cursorFlags:0,state:`inactive`}),t.hitRegions.forEach(e=>{let t=$l(e.group.id,!0);nu(e.group,t)});return}Ju({document:e.currentTarget,event:e,hitRegions:t.hitRegions,initialLayoutMap:t.initialLayoutMap,mountedGroups:n,pointerDownAtPoint:t.pointerDownAtPoint,prevCursorFlags:t.cursorFlags});break;default:{let r=hu(e,n);r.length===0?t.state!==`inactive`&&Pu({cursorFlags:0,state:`inactive`}):Pu({cursorFlags:0,hitRegions:r,state:`hover`}),qu(e.currentTarget);break}}}function Zu(e){if(e.relatedTarget instanceof HTMLIFrameElement)switch(ju().state){case`hover`:Pu({cursorFlags:0,state:`inactive`})}}function Qu(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=ju();switch(t.state){case`active`:Pu({cursorFlags:0,state:`inactive`}),t.hitRegions.length>0&&(qu(e.currentTarget),t.hitRegions.forEach(e=>{let t=$l(e.group.id,!0);nu(e.group,t)}),e.preventDefault())}}function $u(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=q(i.defaultSize);n+=e,r[i.panelId]=e}else r[i.panelId]=void 0;let i=e.length-t;if(i!==0){let t=q((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.panelId]=t)}return r}function ed(e,t,n){if(!n[0])return;let r=e.panels.find(e=>e.element===t);if(!r||!r.onResize)return;let i=J({group:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:q(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function td(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 nd({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=q(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]=q((r[e]??0)/a*l);else{let e=q(l/c.length);for(let t of c)u[t]=e}return u}function rd(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 id=new Map;function ad(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=J({group:e});if(t===0)return;let n=$l(e.id);if(!n)return;let r=Y(e),i=n.defaultLayoutDeferred?$u(r):n.layout,a=Su({layout:nd({group:e,nextGroupSize:t,prevGroupSize:n.groupSize,prevLayout:i}),panelConstraints:r});if(!n.defaultLayoutDeferred&&xu(n.layout,a)&&td(n.derivedPanelConstraints,r)&&n.groupSize===t)return;nu(e,{defaultLayoutDeferred:!1,derivedPanelConstraints:r,groupSize:t,layout:a,separatorToPanels:n.separatorToPanels})}}else ed(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=J({group:e}),s=Y(e),c=e.panels.map(({id:e})=>e).join(`,`),l=e.mutableState.defaultLayout;l&&(rd(e.panels,l)||(l=void 0));let u=Su({layout:e.mutableState.layouts[c]??l??$u(s),panelConstraints:s}),d=e.element.ownerDocument;id.set(d,(id.get(d)??0)+1);let f=new Map;return ql(e).forEach(e=>{e.separator&&f.set(e.separator,e.panels)}),nu(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`,Ou)}),id.get(d)===1&&(d.addEventListener(`dblclick`,wu,!0),d.addEventListener(`pointerdown`,Fu,!0),d.addEventListener(`pointerleave`,Yu),d.addEventListener(`pointermove`,Xu),d.addEventListener(`pointerout`,Zu),d.addEventListener(`pointerup`,Qu,!0)),function(){t=!1,id.set(d,Math.max(0,(id.get(d)??0)-1)),Zl(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,Ou)}),id.get(d)||(d.removeEventListener(`dblclick`,wu,!0),d.removeEventListener(`pointerdown`,Fu,!0),d.removeEventListener(`pointerleave`,Yu),d.removeEventListener(`pointermove`,Xu),d.removeEventListener(`pointerout`,Zu),d.removeEventListener(`pointerup`,Qu,!0)),a.disconnect()}}function od(){let[e,t]=(0,V.useState)({});return[e,(0,V.useCallback)(()=>t({}),[])]}function sd(e){let t=(0,V.useId)();return`${e??t}`}var cd=typeof window<`u`?V.useLayoutEffect:V.useEffect;function ld(e){let t=(0,V.useRef)(e);return cd(()=>{t.current=e},[e]),(0,V.useCallback)((...e)=>t.current?.(...e),[t])}function ud(...e){return ld(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function dd(e){let t=(0,V.useRef)({...e});return cd(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var fd=(0,V.createContext)(null);function pd(e,t){let n=(0,V.useRef)({getLayout:()=>({}),setLayout:Iu});(0,V.useImperativeHandle)(t,()=>n.current,[]),cd(()=>{Object.assign(n.current,Eu({groupId:e}))})}function md({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,V.useRef)({onLayoutChange:{},onLayoutChanged:{}}),h=ld(e=>{xu(m.current.onLayoutChange,e)||(m.current.onLayoutChange=e,c?.(e))}),g=ld(e=>{xu(m.current.onLayoutChanged,e)||(m.current.onLayoutChanged=e,l?.(e))}),_=sd(s),v=(0,V.useRef)(null),[y,b]=od(),x=(0,V.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],resizeTargetMinimumSize:d,separators:[]}),S=ud(v,a);pd(_,o);let C=ld((e,t)=>{let r=ju(),i=Ql(e),a=$l(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=dd({defaultLayout:n,disableCursor:r}),T=(0,V.useMemo)(()=>({get disableCursor(){return!!w.disableCursor},getPanelStyles:C,id:_,orientation:u,registerPanel:e=>{let t=x.current;return t.panels=zl(u,[...t.panels,e]),b(),()=>{t.panels=t.panels.filter(t=>t!==e),b()}},registerSeparator:e=>{let t=x.current;return t.separators=zl(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=Ql(_),i=$l(_);r&&i&&nu(r,{...i,derivedPanelConstraints:Y(r)})},toggleSeparatorDisabled:(e,t)=>{let n=x.current.separators.find(t=>t.id===e);n&&(n.disabled=t)}}),[C,_,b,u,w]),E=(0,V.useRef)(null);return cd(()=>{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=ad(r),{defaultLayoutDeferred:o,derivedPanelConstraints:s,layout:c}=$l(r.id,!0);!o&&s.length>0&&(h(c),g(c));let l=tu(_,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=_u(t.collapsedSize,i[t.panelId]),a=_u(t.collapsedSize,n[t.panelId]);e&&!a&&(r.mutableState.expandedPanelSizes[t.panelId]=n[t.panelId])}}});let o=ju().state!==`active`;h(i),o&&g(i)});return()=>{E.current=null,a(),l()}},[i,_,g,h,u,y,w]),(0,V.useEffect)(()=>{let e=E.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,H.jsx)(fd.Provider,{value:T,children:(0,H.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})})}md.displayName=`Group`;function hd(){let e=(0,V.useContext)(fd);return X(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function gd(e,t){let{id:n}=hd(),r=(0,V.useRef)({collapse:Lu,expand:Lu,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Lu});(0,V.useImperativeHandle)(t,()=>r.current,[]),cd(()=>{Object.assign(r.current,Cu({groupId:n,panelId:e}))})}function _d({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=sd(c),_=dd({disabled:a}),v=(0,V.useRef)(null),y=ud(v,o),{getPanelStyles:b,id:x,orientation:S,registerPanel:C,togglePanelDisabled:w}=hd(),T=d!==null,E=ld((e,t,n)=>{d?.(e,c,n)});cd(()=>{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,V.useEffect)(()=>{w(g,!!a)},[a,g,w]),gd(g,f);let D=(0,V.useSyncExternalStore)(e=>tu(x,e),()=>JSON.stringify(b(x,g)),()=>JSON.stringify(b(x,g)));return(0,H.jsx)(`div`,{...m,"aria-disabled":a||void 0,"data-panel":!0,"data-testid":g,id:g,ref:y,style:{...vd,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...JSON.parse(D)},children:(0,H.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...p,touchAction:S===`horizontal`?`pan-y`:`pan-x`},children:e})})}_d.displayName=`Panel`;var vd={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function yd({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=Su({layout:bu({delta:l-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n],i=Su({layout:bu({delta:c-o,initialLayout:e,panelConstraints:t,pivotIndices:u,prevLayout:e}),panelConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function Q({children:e,className:t,disabled:n,elementRef:r,id:i,style:a,...o}){let s=sd(i),c=dd({disabled:n}),[l,u]=(0,V.useState)({}),[d,f]=(0,V.useState)(`inactive`),p=(0,V.useRef)(null),m=ud(p,r),{disableCursor:h,id:g,orientation:_,registerSeparator:v,toggleSeparatorDisabled:y}=hd(),b=_===`horizontal`?`vertical`:`horizontal`;cd(()=>{let e=p.current;if(e!==null){let t={disabled:c.disabled,element:e,id:s},n=v(t),r=Mu(e=>{f(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===t)?e.next.state:`inactive`)}),i=tu(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(yd({layout:r,panelConstraints:n,panelId:e.id,panelIndex:t}))}});return()=>{r(),i(),n()}}},[g,s,v,c]),(0,V.useEffect)(()=>{y(s,!!n)},[n,s,y]);let x;return n&&!h&&(x=`not-allowed`),(0,H.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})}Q.displayName=`Separator`;function bd(){let e=window.location.pathname.match(/^\/project\/([^/]+)(?:\/tab\/([^/]+))?/);return e?{projectName:e[1]?decodeURIComponent(e[1]):null,tabId:e[2]?decodeURIComponent(e[2]):null}:{projectName:null,tabId:null}}function xd(e,t){if(!e||e===`__global__`)return`/`;let n=`/project/${encodeURIComponent(e)}`;return t&&(n+=`/tab/${encodeURIComponent(t)}`),n}function Sd(){let e=I(e=>e.activeTabId),t=I(e=>e.currentProject),n=(0,V.useRef)(!1);(0,V.useEffect)(()=>{if(n.current){n.current=!1;return}let r=xd(t,e);window.location.pathname!==r&&window.history.pushState(null,``,r)},[e,t]),(0,V.useEffect)(()=>{function e(){let{tabId:e}=bd(),{tabs:t,setActiveTab:r}=I.getState();e&&t.some(t=>t.id===e)&&(n.current=!0,r(e))}return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[])}var Cd=`ppm-custom-order`;function wd(){try{let e=localStorage.getItem(Cd);return e?JSON.parse(e):null}catch{return null}}function Td(e){try{localStorage.setItem(Cd,JSON.stringify(e))}catch{}}function Ed(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 Dd=L((e,t)=>({projects:[],activeProject:null,customOrder:wd(),loading:!1,error:null,fetchProjects:async()=>{e({loading:!0,error:null});try{let t=await B.get(`/api/projects`);e({projects:t,loading:!1}),e(e=>{if(!e.activeProject&&t.length>0){let{projectName:n}=bd();if(n){let e=t.find(e=>e.name===n);if(e)return{activeProject:e}}return{activeProject:Ed(t,e.customOrder)[0]}}return{}})}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 B.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 B.patch(`/api/projects/${encodeURIComponent(e)}/color`,{color:n}),await t().fetchProjects()},moveProject:async(n,r)=>{let{projects:i,customOrder:a}=t(),o=Ed(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]],Td(l),await B.patch(`/api/projects/reorder`,{order:l}),e({customOrder:l})},reorderProjects:async t=>{Td(t),e({customOrder:t}),await B.patch(`/api/projects/reorder`,{order:t}).catch(()=>{})},renameProject:async(e,n)=>{await B.patch(`/api/projects/${encodeURIComponent(e)}`,{name:n}),await t().fetchProjects()},deleteProject:async t=>{await B.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&&Td(r),{projects:n,customOrder:r,activeProject:e.activeProject?.name===t?n[0]??null:e.activeProject}})}})),Od=`application/ppm-tab`,kd=!1,Ad=new Set;function jd(e){kd!==e&&(kd=e,Ad.forEach(e=>e()))}function Md(){return(0,V.useSyncExternalStore)(e=>(Ad.add(e),()=>Ad.delete(e)),()=>kd)}function $(){jd(!1)}function Nd(e){let[t,n]=(0,V.useState)(null),r=(0,V.useRef)(null);return{dropIndex:t,handleDragStart:(0,V.useCallback)((t,n)=>{let r={tabId:n,panelId:e};t.dataTransfer.setData(Od,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`,requestAnimationFrame(()=>jd(!0))},[e]),handleDragOver:(0,V.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,V.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`)},[]),handleDrop:(0,V.useCallback)(i=>{i.preventDefault(),jd(!1);let a=i.dataTransfer.getData(Od);if(a){try{let n=JSON.parse(a),r=F.getState();n.panelId===e?t!==null&&r.reorderTab(n.tabId,e,t):r.moveTab(n.tabId,n.panelId,e,t??void 0)}catch{}n(null),r.current=null}},[e,t]),handleDragEnd:(0,V.useCallback)(()=>{jd(!1),n(null),r.current=null},[])}}var Pd=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.userAgent),Fd=[{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+Shift+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+Shift+G`},{id:`open-git-status`,label:`Git Status (sidebar)`,category:`tabs`,defaultKey:`Mod+Shift+E`},...Array.from({length:9},(e,t)=>({id:`switch-project-${t+1}`,label:`Switch to Project ${t+1}`,category:`projects`,defaultKey:`Mod+${t+1}`}))],Id=new Map(Fd.map(e=>[e.id,e.defaultKey]));function Ld(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`:Pd?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 Rd(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 zd(e){return e.replace(/Mod/g,Pd?`⌘`:`Ctrl`).replace(/Shift/g,Pd?`⇧`:`Shift`).replace(/Alt/g,Pd?`⌥`:`Alt`).replace(/Meta|Cmd/g,`⌘`).replace(/Ctrl/g,Pd?`⌃`:`Ctrl`)}function Bd(e){if([`Control`,`Meta`,`Alt`,`Shift`].includes(e.key))return null;let t=[];e.ctrlKey&&!e.metaKey&&t.push(Pd?`Ctrl`:`Mod`),e.metaKey&&t.push(Pd?`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 Vd=L((e,t)=>({overrides:{},loaded:!1,getBinding:e=>t().overrides[e]??Id.get(e)??``,matchesEvent:(e,n)=>{let r=t().getBinding(n);return r?Rd(e,Ld(r)):!1},setBinding:(n,r)=>{e({overrides:{...t().overrides,[n]:r}}),B.put(`/api/settings/keybindings`,{[n]:r}).catch(()=>{})},resetBinding:n=>{let r={...t().overrides};delete r[n],e({overrides:r}),B.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&&B.put(`/api/settings/keybindings`,n).catch(()=>{})},loadFromServer:async()=>{try{e({overrides:await B.get(`/api/settings/keybindings`),loaded:!0})}catch{e({loaded:!0})}}}));function Hd(e){window.dispatchEvent(new CustomEvent(`open-command-palette`,{detail:e}))}function Ud(){let[e,t]=(0,V.useState)(!1),[n,r]=(0,V.useState)(``);return(0,V.useEffect)(()=>{let e=0,{matchesEvent:n}=Vd.getState();function i(n){if(n.type===`keyup`&&n.key===`Shift`&&!n.ctrlKey&&!n.metaKey&&!n.altKey){let n=Date.now();if(n-e<400){e=0,r(``),t(!0);return}e=n;return}if(n.type!==`keydown`)return;let{matchesEvent:i}=Vd.getState();if(i(n,`save-prevent`)){n.preventDefault();return}if(i(n,`command-palette`)){n.preventDefault(),r(``),t(!0);return}if(i(n,`toggle-sidebar`)){n.preventDefault(),R.getState().toggleSidebar();return}if(i(n,`next-tab`)||i(n,`prev-tab`)){n.preventDefault();let{tabs:e,activeTabId:t,setActiveTab:r}=I.getState();if(e.length<2)return;let a=e.findIndex(e=>e.id===t);r(e[i(n,`next-tab`)?(a+1)%e.length:(a-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(i(n,e.action)){n.preventDefault();let t=Dd.getState().activeProject;I.getState().openTab({type:e.type,title:e.title,projectId:t?.name??null,metadata:t?{projectName:t.name}:void 0,closable:!0});return}if(i(n,`open-settings`)){n.preventDefault();let e=R.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`settings`);return}if(i(n,`open-git-status`)){n.preventDefault();let e=R.getState();e.sidebarCollapsed&&e.toggleSidebar(),e.setSidebarActiveTab(`git`);return}for(let e=1;e<=9;e++)if(i(n,`switch-project-${e}`)){n.preventDefault();let t=Dd.getState().projects[e-1];t&&(Dd.getState().setActiveProject(t),I.getState().switchProject(t.name));return}}function a(e){let n=e.detail;r(typeof n==`string`?n:``),t(!0)}return window.addEventListener(`keydown`,i),window.addEventListener(`keyup`,i),window.addEventListener(`open-command-palette`,a),()=>{window.removeEventListener(`keydown`,i),window.removeEventListener(`keyup`,i),window.removeEventListener(`open-command-palette`,a)}},[]),{paletteOpen:e,paletteInitialQuery:n,closePalette:(0,V.useCallback)(()=>{t(!1),r(``)},[])}}function Wd(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 Gd(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 Kd(e){let t=Wd(e);return t?Gd(t.r,t.g,t.b)<.4:!1}function qd({tab:e,isActive:t,icon:n,showDropBefore:r,onSelect:i,onClose:a,onDragStart:o,onDragOver:s,onDragEnd:c,tabRef:l,onRename:u}){let[d,f]=(0,V.useState)(!1),[p,m]=(0,V.useState)(e.title),h=(0,V.useRef)(null);(0,V.useEffect)(()=>{d&&(m(e.title),setTimeout(()=>h.current?.select(),0))},[d]);let g=()=>{f(!1);let t=p.trim();t&&t!==e.title&&u&&u(t)},_=e.metadata?.connectionColor,v=_?{backgroundColor:t?_:`${_}33`,color:t&&Kd(_)?`#fff`:void 0}:void 0;return(0,H.jsxs)(`div`,{className:`relative flex items-center`,children:[r&&(0,H.jsx)(`div`,{className:`absolute left-0 top-1 bottom-1 w-0.5 bg-primary rounded-full z-10`}),(0,H.jsxs)(`button`,{ref:l,"data-tab-item":!0,draggable:!d,onClick:i,onAuxClick:t=>{t.button===1&&e.closable&&(t.preventDefault(),a())},onDragStart:o,onDragOver:s,onDragEnd:c,style:v,className:z(`group flex items-center gap-1 px-3 h-10 whitespace-nowrap text-xs transition-colors`,`border-b-2 -mb-px cursor-grab active:cursor-grabbing`,!v&&(t?`border-primary text-primary`:`border-transparent text-text-secondary hover:text-foreground`),v&&`border-transparent`),children:[(0,H.jsx)(n,{className:`size-4`}),d?(0,H.jsx)(`input`,{ref:h,value:p,onChange:e=>m(e.target.value),onBlur:g,onKeyDown:e=>{e.key===`Enter`&&g(),e.key===`Escape`&&f(!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,H.jsx)(`span`,{className:`max-w-[120px] truncate`,onDoubleClick:e=>{u&&(e.stopPropagation(),f(!0))},children:e.title}),e.closable&&!d&&(0,H.jsx)(`span`,{role:`button`,tabIndex:0,onClick:e=>{e.stopPropagation(),a()},onKeyDown:e=>{e.key===`Enter`&&(e.stopPropagation(),a())},className:`ml-1 opacity-0 group-hover:opacity-100 rounded-sm hover:bg-surface-elevated p-0.5 transition-opacity`,children:(0,H.jsx)(ht,{className:`size-3`})})]})]})}var Jd={terminal:dt,chat:Je,editor:Ae,database:Oe,sqlite:Oe,postgres:Oe,"git-graph":Re,"git-diff":je,settings:st};function Yd({panelId:e}){Dd(e=>e.activeProject);let t=(0,V.useRef)(new Map),n=(0,V.useRef)(null),r=(0,V.useRef)(0),i=F(t=>e?t.panels[e]:t.panels[t.focusedPanelId]),a=i?.tabs??[],o=i?.activeTabId??null,s=i?.id??F.getState().focusedPanelId,{dropIndex:c,handleDragStart:l,handleDragOver:u,handleDragOverBar:d,handleDrop:f,handleDragEnd:p}=Nd(s);(0,V.useEffect)(()=>{if(a.length>r.current&&o){let e=t.current.get(o);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})}r.current=a.length},[a.length,o]);let m=(0,V.useCallback)((e,t)=>{I.getState().updateTab(e.id,{title:t});let n=e.metadata?.projectName,r=e.metadata?.sessionId;n&&r&&B.patch(`${ce(n)}/chat/sessions/${r}`,{title:t}).catch(()=>{})},[]);function h(e){e.target.closest(`[data-tab-item]`)||Hd()}function g(e){e.target.closest(`[data-tab-item]`)||(e.preventDefault(),Hd())}return(0,H.jsx)(`div`,{className:`hidden md:flex items-center h-10 border-b border-border bg-background`,onDragOver:d,onDrop:f,onDoubleClick:h,onContextMenu:g,children:(0,H.jsx)(`div`,{ref:n,className:`flex-1 overflow-x-auto overflow-y-hidden min-w-0 scrollbar-none`,children:(0,H.jsxs)(`div`,{className:`flex items-center h-10`,children:[a.map((e,n)=>(0,H.jsx)(qd,{tab:e,isActive:e.id===o,icon:Jd[e.type],showDropBefore:c===n,onSelect:()=>F.getState().setActiveTab(e.id,s),onClose:()=>F.getState().closeTab(e.id,s),onDragStart:t=>l(t,e.id),onDragOver:t=>u(t,e.id,n),onDragEnd:p,tabRef:n=>{n?t.current.set(e.id,n):t.current.delete(e.id)},onRename:e.type===`chat`?t=>m(e,t):void 0},e.id)),c!==null&&c>=a.length&&(0,H.jsx)(`div`,{className:`w-0.5 h-6 bg-primary rounded-full`}),(0,H.jsx)(`button`,{onClick:()=>Hd(),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,H.jsx)(it,{className:`size-4`})})]})})})}function Xd({panelId:e}){let[t,n]=(0,V.useState)(null),r=Md(),i=F(e=>e.grid),a=F(e=>e.isMobile()),o=re(i,e),s=!a&&i.length<3,c=o?!a&&(i[o.row]?.length??0)<ne(!1):!1,l=(0,V.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&&c?`left`:n>1-i&&c?`right`:r<i&&s?`top`:r>1-i&&s?`bottom`:`center`},[c,s]),u=(0,V.useCallback)(e=>{e.dataTransfer.types.includes(`application/ppm-tab`)&&(e.preventDefault(),e.stopPropagation(),n(l(e)))},[l]),d=(0,V.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||n(null)},[]),f=(0,V.useCallback)(t=>{t.preventDefault(),t.stopPropagation();let r=l(t);if(n(null),$(),!r)return;let i=t.dataTransfer.getData(Od);if(i)try{let t=JSON.parse(i),n=F.getState();if(r===`center`)t.panelId!==e&&n.moveTab(t.tabId,t.panelId,e);else{let i=r===`top`?`up`:r===`bottom`?`down`:r;n.splitPanel(i,t.tabId,t.panelId,e)}}catch{}},[l,e]);return r?(0,H.jsxs)(`div`,{className:`absolute inset-0 z-20`,onDragOver:u,onDragLeave:d,onDrop:f,children:[t===`left`&&(0,H.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,H.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,H.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,H.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,H.jsx)(`div`,{className:`absolute inset-0 bg-primary/5 border-2 border-dashed border-primary/30 rounded-md`})]}):null}var Zd=`modulepreload`,Qd=function(e){return`/`+e},$d={},ef=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Qd(t,n),t in $d)return;$d[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Zd,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},tf=[{type:`terminal`,label:`Terminal`,icon:dt},{type:`chat`,label:`AI Chat`,icon:Je},{type:`git-graph`,label:`Git Graph`,icon:Re}],nf={terminal:(0,V.lazy)(()=>ef(()=>import(`./terminal-tab-_farMLMO.js`).then(e=>({default:e.TerminalTab})),__vite__mapDeps([0,1,2,3,4,5,6]))),chat:(0,V.lazy)(()=>ef(()=>import(`./chat-tab-dwpaSkQD.js`).then(e=>({default:e.ChatTab})),__vite__mapDeps([7,1,8,2,3,9,5,10,11,4]))),editor:(0,V.lazy)(()=>ef(()=>import(`./code-editor-ZFl5kZ4-.js`).then(e=>({default:e.CodeEditor})),__vite__mapDeps([12,1,13,4,5,2,3,9,10,11]))),database:(0,V.lazy)(()=>ef(()=>import(`./database-viewer-DPpOsMqa.js`).then(e=>({default:e.DatabaseViewer})),__vite__mapDeps([14,1,15,3,11]))),sqlite:(0,V.lazy)(()=>ef(()=>import(`./sqlite-viewer-Cx7tLyT-.js`).then(e=>({default:e.SqliteViewer})),__vite__mapDeps([16,1,15,3,17,11]))),postgres:(0,V.lazy)(()=>ef(()=>import(`./postgres-viewer-DaNYnInA.js`).then(e=>({default:e.PostgresViewer})),__vite__mapDeps([18,1,15,3,17,11]))),"git-graph":(0,V.lazy)(()=>ef(()=>import(`./git-graph-Dju1rygf.js`).then(e=>({default:e.GitGraph})),__vite__mapDeps([19,1,8,2,3,9,5,11]))),"git-diff":(0,V.lazy)(()=>ef(()=>import(`./diff-viewer-CX74l6lV.js`).then(e=>({default:e.DiffViewer})),__vite__mapDeps([20,1,13,4,5,3,11]))),settings:(0,V.lazy)(()=>ef(()=>import(`./settings-tab-DD05d8rM.js`).then(e=>({default:e.SettingsTab})),__vite__mapDeps([21,1,8,2,3,11,4,5])))};function rf({panelId:e,projectName:t}){let n=F(t=>t.panels[e]),r=F(t=>t.focusedPanelId===e),i=F(e=>(e.currentProject===t?e.grid:e.projectGrids[t]??[[]]).flat().length);return n?(0,H.jsxs)(`div`,{className:z(`flex flex-col h-full overflow-hidden`,i>1&&`border border-transparent`,i>1&&r&&`border-primary/30`),onMouseDown:()=>{F.getState().focusedPanelId!==e&&F.getState().setFocusedPanel(e)},children:[(0,H.jsx)(Yd,{panelId:e}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-hidden relative`,children:[n.tabs.length===0?(0,H.jsx)(af,{panelId:e}):n.tabs.map(e=>{let t=nf[e.type];return(0,H.jsx)(`div`,{className:e.id===n.activeTabId?`h-full w-full`:`hidden`,children:(0,H.jsx)(V.Suspense,{fallback:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,H.jsx)(Ge,{className:`size-6 animate-spin text-primary`})}),children:(0,H.jsx)(t,{metadata:e.metadata,tabId:e.id})})},e.id)}),(0,H.jsx)(Xd,{panelId:e})]})]}):null}function af({panelId:e}){let t=Dd(e=>e.activeProject);function n(n){let r=n!==`settings`&&t?{projectName:t.name}:void 0;F.getState().openTab({type:n,title:tf.find(e=>e.type===n)?.label??n,metadata:r,projectId:t?.name??null,closable:!0},e)}return(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 text-text-secondary`,children:[(0,H.jsx)(`p`,{className:`text-sm`,children:`Open a tab to get started`}),(0,H.jsx)(`div`,{className:`flex flex-col md:flex-row flex-wrap justify-center gap-2`,children:tf.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:()=>n(e.type),className:`flex items-center gap-2 px-4 py-2 rounded-md border border-border bg-surface hover:bg-surface-elevated text-sm text-foreground transition-colors`,children:[(0,H.jsx)(t,{className:`size-4`}),e.label]},e.type)})})]})}function of({projectName:e}){let t=F(t=>t.currentProject===e?t.grid:t.projectGrids[e]??[[]]);return t.flat().length<=1&&t[0]?.[0]?(0,H.jsx)(rf,{panelId:t[0][0],projectName:e}):(0,H.jsx)(md,{orientation:`vertical`,style:{height:`100%`},children:t.map((n,r)=>(0,H.jsx)(sf,{row:n,rowIdx:r,totalRows:t.length,projectName:e},`row-${r}`))})}function sf({row:e,rowIdx:t,totalRows:n,projectName:r}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(_d,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:e.length===1?(0,H.jsx)(rf,{panelId:e[0],projectName:r}):(0,H.jsx)(md,{orientation:`horizontal`,children:e.map((t,n)=>(0,H.jsx)(cf,{panelId:t,colIdx:n,totalCols:e.length,projectName:r},t))})}),t<n-1&&(0,H.jsx)(lf,{orientation:`horizontal`})]})}function cf({panelId:e,colIdx:t,totalCols:n,projectName:r}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(_d,{minSize:`15%`,defaultSize:`${Math.round(100/n)}%`,children:(0,H.jsx)(rf,{panelId:e,projectName:r})}),t<n-1&&(0,H.jsx)(lf,{orientation:`vertical`})]})}function lf({orientation:e}){let t=e===`vertical`;return(0,H.jsx)(Q,{className:`
15
15
  group/handle relative flex items-center justify-center
16
16
  ${t?`w-1 cursor-col-resize`:`h-1 cursor-row-resize`}
17
17
  bg-border/30 hover:bg-primary/30 active:bg-primary/50
18
18
  transition-colors duration-150
19
- `,children:(0,H.jsx)(`div`,{className:`absolute opacity-0 group-hover/handle:opacity-70 transition-opacity text-foreground/50`,children:t?(0,H.jsx)(Ve,{className:`size-3`}):(0,H.jsx)(Be,{className:`size-3`})})})}var uf=L((e,t)=>({tree:[],loading:!1,error:null,expandedPaths:new Set,selectedFiles:[],fetchTree:async t=>{e({loading:!0,error:null});try{e({tree:await B.get(`${ce(t)}/files/tree?depth=3`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to load files`,loading:!1})}},toggleExpand:n=>{let r=new Set(t().expandedPaths);r.has(n)?r.delete(n):r.add(n),e({expandedPaths:r})},setExpanded:(n,r)=>{let i=new Set(t().expandedPaths);r?i.add(n):i.delete(n),e({expandedPaths:i})},toggleFileSelect:n=>{let r=t().selectedFiles;r.indexOf(n)>=0?e({selectedFiles:r.filter(e=>e!==n)}):e({selectedFiles:r.length>=2?[r[1],n]:[...r,n]})},clearSelection:()=>e({selectedFiles:[]}),reset:()=>e({tree:[],expandedPaths:new Set,error:null,selectedFiles:[]})}));function df({className:e,children:t,...n}){return(0,H.jsxs)(us,{"data-slot":`scroll-area`,className:z(`relative`,e),...n,children:[(0,H.jsx)(ds,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,H.jsx)(ff,{}),(0,H.jsx)(fs,{})]})}function ff({className:e,orientation:t=`vertical`,...n}){return(0,H.jsx)(Ro,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:z(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-1.5 border-l border-l-transparent`,t===`horizontal`&&`h-1.5 flex-col border-t border-t-transparent`,e),...n,children:(0,H.jsx)(Yo,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function pf({...e}){return(0,H.jsx)(Pa,{"data-slot":`context-menu`,...e})}function mf({...e}){return(0,H.jsx)(Fa,{"data-slot":`context-menu-trigger`,...e})}function hf({className:e,...t}){return(0,H.jsx)(Ia,{children:(0,H.jsx)(La,{"data-slot":`context-menu-content`,className:z(`z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...t})})}function gf({className:e,inset:t,variant:n=`default`,...r}){return(0,H.jsx)(Ra,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function _f({className:e,...t}){return(0,H.jsx)(za,{"data-slot":`context-menu-separator`,className:z(`-mx-1 my-1 h-px bg-border`,e),...t})}var vf=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,yf=ae,bf=((e,t)=>n=>{if(t?.variants==null)return yf(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=vf(t)||vf(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return yf(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)})(`inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,xs:`h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-xs":`size-6 rounded-md [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function xf({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,H.jsx)(r?l:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:z(bf({variant:t,size:n,className:e})),...i})}function Sf({...e}){return(0,H.jsx)(Bn,{"data-slot":`dialog`,...e})}function Cf({...e}){return(0,H.jsx)(Vn,{"data-slot":`dialog-portal`,...e})}function wf({className:e,...t}){return(0,H.jsx)(Hn,{"data-slot":`dialog-overlay`,className:z(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function Tf({className:e,children:t,showCloseButton:n=!0,...r}){return(0,H.jsxs)(Cf,{"data-slot":`dialog-portal`,children:[(0,H.jsx)(wf,{}),(0,H.jsxs)(Un,{"data-slot":`dialog-content`,className:z(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background text-foreground p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg`,e),...r,children:[t,n&&(0,H.jsxs)(Kn,{"data-slot":`dialog-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,H.jsx)(ht,{}),(0,H.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function Ef({className:e,...t}){return(0,H.jsx)(`div`,{"data-slot":`dialog-header`,className:z(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function Df({className:e,showCloseButton:t=!1,children:n,...r}){return(0,H.jsxs)(`div`,{"data-slot":`dialog-footer`,className:z(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...r,children:[n,t&&(0,H.jsx)(Kn,{asChild:!0,children:(0,H.jsx)(xf,{variant:`outline`,children:`Close`})})]})}function Of({className:e,...t}){return(0,H.jsx)(Wn,{"data-slot":`dialog-title`,className:z(`text-lg leading-none font-semibold`,e),...t})}function kf({className:e,...t}){return(0,H.jsx)(Gn,{"data-slot":`dialog-description`,className:z(`text-sm text-muted-foreground`,e),...t})}function Af({action:e,node:t,projectName:n,onClose:r,onRefresh:i}){let[a,o]=(0,V.useState)(``),[s,c]=(0,V.useState)(!1),[l,u]=(0,V.useState)(null),d=(0,V.useRef)(null);(0,V.useEffect)(()=>{o(e===`rename`?t.name:``)},[e,t.name]),(0,V.useEffect)(()=>{let e=setTimeout(()=>d.current?.focus(),100);return()=>clearTimeout(e)},[]);async function f(e){if(a.trim()){c(!0),u(null);try{let o=t.type===`directory`?t.path:t.path.split(`/`).slice(0,-1).join(`/`),s=o?`${o}/${a.trim()}`:a.trim();await B.post(`${ce(n)}/files/create`,{path:s,type:e}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to create`)}finally{c(!1)}}}async function p(){if(!a.trim()||a.trim()===t.name){r();return}c(!0),u(null);try{let e=t.path.split(`/`).slice(0,-1).join(`/`),o=e?`${e}/${a.trim()}`:a.trim();await B.post(`${ce(n)}/files/rename`,{oldPath:t.path,newPath:o}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to rename`)}finally{c(!1)}}async function m(){c(!0),u(null);try{await B.del(`${ce(n)}/files/delete`,{path:t.path}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to delete`)}finally{c(!1)}}function h(t){t.key===`Enter`&&(e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):e===`rename`&&p()),t.key===`Escape`&&r()}if(e===`delete`)return(0,H.jsx)(Sf,{open:!0,onOpenChange:e=>!e&&r(),children:(0,H.jsxs)(Tf,{children:[(0,H.jsxs)(Ef,{children:[(0,H.jsxs)(Of,{children:[`Delete `,t.type===`directory`?`Folder`:`File`]}),(0,H.jsxs)(kf,{children:[`Are you sure you want to delete`,` `,(0,H.jsx)(`span`,{className:`font-mono font-semibold`,children:t.name}),`?`,t.type===`directory`&&` This will delete all contents.`]})]}),l&&(0,H.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(xf,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,H.jsx)(xf,{variant:`destructive`,onClick:m,disabled:s,children:s?`Deleting...`:`Delete`})]})]})});let g=e===`new-file`?`New File`:e===`new-folder`?`New Folder`:`Rename`,_=e===`rename`?t.name:e===`new-file`?`filename.ts`:`folder-name`;return(0,H.jsx)(Sf,{open:!0,onOpenChange:e=>!e&&r(),children:(0,H.jsxs)(Tf,{children:[(0,H.jsxs)(Ef,{children:[(0,H.jsx)(Of,{children:g}),(0,H.jsx)(kf,{children:e===`rename`?`Rename "${t.name}" to:`:`Create in ${t.type===`directory`?t.path||`/`:t.path.split(`/`).slice(0,-1).join(`/`)||`/`}`})]}),(0,H.jsx)(O,{ref:d,value:a,onChange:e=>o(e.target.value),onKeyDown:h,placeholder:_,disabled:s}),l&&(0,H.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(xf,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,H.jsx)(xf,{onClick:()=>{e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):p()},disabled:s||!a.trim(),children:s?`Saving...`:e===`rename`?`Rename`:`Create`})]})]})})}var jf={ts:Ae,tsx:Ae,js:Ae,jsx:Ae,py:Ae,rs:Ae,go:Ae,json:ke,md:Me,txt:Me,yaml:Ne,yml:Ne,html:Ae,css:Ae,scss:Ae};function Mf(e){return jf[e.split(`.`).pop()?.toLowerCase()??``]??Pe}function Nf({node:e,depth:t,projectName:n,onAction:r,onFileOpen:i}){let{expandedPaths:a,toggleExpand:o,selectedFiles:s,toggleFileSelect:c}=uf(),l=I(e=>e.openTab),u=a.has(e.path),d=e.type===`directory`,f=s.includes(e.path);function p(t){if(d){o(e.path);return}if(t.metaKey||t.ctrlKey){c(e.path);return}let r=e.name.split(`.`).pop()?.toLowerCase()??``;l({type:r===`db`||r===`sqlite`||r===`sqlite3`?`sqlite`:`editor`,title:e.name,metadata:{filePath:e.path,projectName:n},projectId:n,closable:!0}),i?.()}let m=d?u?Fe:Le:Mf(e.name),h=e.children?[...e.children].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1):[];return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(pf,{children:[(0,H.jsx)(mf,{asChild:!0,children:(0,H.jsxs)(`button`,{onClick:p,className:z(`flex items-center w-full gap-1.5 px-2 py-1 rounded-sm text-sm`,`min-h-[32px] hover:bg-surface-elevated transition-colors text-left`,`select-none`,f&&`bg-primary/15 ring-1 ring-primary/40`),style:{paddingLeft:`${t*16+8}px`},children:[d?u?(0,H.jsx)(Se,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,H.jsx)(Ce,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,H.jsx)(`span`,{className:`w-3.5 shrink-0`}),(0,H.jsx)(m,{className:z(`size-4 shrink-0`,d?`text-primary`:`text-text-secondary`)}),(0,H.jsx)(`span`,{className:`truncate`,children:e.name})]})}),(0,H.jsxs)(hf,{children:[d&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(gf,{onClick:()=>r(`new-file`,e),children:`New File`}),(0,H.jsx)(gf,{onClick:()=>r(`new-folder`,e),children:`New Folder`}),(0,H.jsx)(_f,{})]}),(0,H.jsx)(gf,{onClick:()=>r(`rename`,e),children:`Rename`}),(0,H.jsx)(gf,{variant:`destructive`,onClick:()=>r(`delete`,e),children:`Delete`}),(0,H.jsx)(_f,{}),(0,H.jsx)(gf,{onClick:()=>r(`copy-path`,e),children:`Copy Path`}),!d&&s.length===2&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(_f,{}),(0,H.jsx)(gf,{onClick:()=>r(`compare-selected`,e),children:`Compare Selected`})]})]})]}),d&&u&&h.map(e=>(0,H.jsx)(Nf,{node:e,depth:t+1,projectName:n,onAction:r,onFileOpen:i},e.path))]})}function Pf({onFileOpen:e}={}){let{tree:t,loading:n,error:r,fetchTree:i,reset:a,selectedFiles:o,clearSelection:s}=uf(),c=Dd(e=>e.activeProject),l=I(e=>e.openTab),[u,d]=(0,V.useState)(null),f=(0,V.useCallback)(()=>{c&&i(c.name)},[c,i]);(0,V.useEffect)(()=>{c&&(a(),f())},[c?.name]),(0,V.useEffect)(()=>{let e=()=>{c&&i(c.name)};return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[c,i]);function p(e,t){if(e===`copy-path`){navigator.clipboard.writeText(t.path).catch(()=>{});return}if(e===`compare-selected`&&o.length===2){let e=o[0],t=o[1];l({type:`git-diff`,title:`Compare ${oe(e)} vs ${oe(t)}`,closable:!0,metadata:{projectName:c.name,file1:e,file2:t},projectId:c.name}),s();return}d({action:e,node:t})}if(!c)return(0,H.jsx)(`div`,{className:`p-3 text-xs text-text-subtle`,children:`Select a project to browse files.`});if(n&&t.length===0)return(0,H.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-xs text-text-secondary`,children:[(0,H.jsx)(Ge,{className:`size-3 animate-spin`}),`Loading files...`]});if(r)return(0,H.jsxs)(`div`,{className:`p-3 text-xs text-error`,children:[r,(0,H.jsx)(`button`,{onClick:f,className:`block mt-1 text-primary underline`,children:`Retry`})]});let m=[...t].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(df,{className:`flex-1`,children:(0,H.jsxs)(`div`,{className:`py-1`,children:[m.map(t=>(0,H.jsx)(Nf,{node:t,depth:0,projectName:c.name,onAction:p,onFileOpen:e},t.path)),m.length===0&&(0,H.jsx)(`p`,{className:`p-3 text-xs text-text-subtle`,children:`Empty project.`})]})}),u&&(0,H.jsx)(Af,{action:u.action,node:u.node,projectName:c.name,onClose:()=>d(null),onRefresh:f})]})}function Ff({...e}){return(0,H.jsx)(bo,{"data-slot":`dropdown-menu`,...e})}function If({...e}){return(0,H.jsx)(xo,{"data-slot":`dropdown-menu-trigger`,...e})}function Lf({className:e,sideOffset:t=4,...n}){return(0,H.jsx)(So,{children:(0,H.jsx)(Co,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:z(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...n})})}function Rf({className:e,inset:t,variant:n=`default`,...r}){return(0,H.jsx)(wo,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}var zf={M:`text-yellow-500`,A:`text-green-500`,D:`text-red-500`,R:`text-blue-500`,C:`text-purple-500`,"?":`text-gray-400`};function Bf(e){let t=[];for(let n of e){let e=n.path.split(`/`),r=t;for(let t=0;t<e.length;t++){let i=e[t],a=e.slice(0,t+1).join(`/`),o=t===e.length-1,s=r.find(e=>e.name===i);s||(s={name:i,fullPath:a,file:o?n:void 0,children:[]},r.push(s)),o&&(s.file=n),r=s.children}}return t}function Vf(e){let t=[];e.file&&t.push(e.file);for(let n of e.children)t.push(...Vf(n));return t}function Hf({metadata:e,tabId:t,onNavigate:n}){let r=e?.projectName,[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!0),[c,l]=(0,V.useState)(null),[u,d]=(0,V.useState)(``),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(null),{openTab:g}=I(),_=R(e=>e.gitStatusViewMode),v=R(e=>e.setGitStatusViewMode),y=(0,V.useCallback)(async()=>{if(r)try{s(!0),a(await B.get(`${ce(r)}/git/status`)),l(null)}catch(e){l(e instanceof Error?e.message:`Failed to fetch status`)}finally{s(!1)}},[r]);(0,V.useEffect)(()=>{y();let e=setInterval(y,5e3);return()=>clearInterval(e)},[y]);let b=async e=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/stage`,{files:e}),await y()}catch(e){l(e instanceof Error?e.message:`Stage failed`)}finally{p(!1)}}},x=async e=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/unstage`,{files:e}),await y()}catch(e){l(e instanceof Error?e.message:`Unstage failed`)}finally{p(!1)}}},S=async e=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/discard`,{files:e}),await y()}catch(e){l(e instanceof Error?e.message:`Discard failed`)}finally{p(!1)}}},C=async()=>{m&&(await S(m.files),h(null))},w=async()=>{if(!(!r||!u.trim()||!i?.staged.length)){p(!0);try{await B.post(`${ce(r)}/git/commit`,{message:u.trim()}),d(``),await y()}catch(e){l(e instanceof Error?e.message:`Commit failed`)}finally{p(!1)}}},T=async()=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/push`,{}),await y()}catch(e){l(e instanceof Error?e.message:`Push failed`)}finally{p(!1)}}},E=async()=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/pull`,{}),await y()}catch(e){l(e instanceof Error?e.message:`Pull failed`)}finally{p(!1)}}},D=e=>{g({type:`git-diff`,title:oe(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},O=e=>{g({type:`editor`,title:oe(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},k=(0,V.useMemo)(()=>[...i?.unstaged??[],...i?.untracked.map(e=>({path:e,status:`?`}))??[]],[i]);return r?o&&!i?(0,H.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-muted-foreground`,children:[(0,H.jsx)(Ge,{className:`size-5 animate-spin`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`Loading git status...`})]}):c&&!i?(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-2 text-destructive text-sm`,children:[(0,H.jsx)(`p`,{children:c}),(0,H.jsx)(xf,{variant:`outline`,size:`sm`,onClick:y,children:`Retry`})]}):(0,H.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:i?.current?`On: ${i.current}`:`Git Status`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(xf,{variant:_===`flat`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`flat`),title:`Flat view`,children:(0,H.jsx)(We,{className:`size-3.5`})}),(0,H.jsx)(xf,{variant:_===`tree`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`tree`),title:`Tree view`,children:(0,H.jsx)(Ie,{className:`size-3.5`})}),(0,H.jsx)(xf,{variant:`ghost`,size:`icon-xs`,onClick:y,disabled:f,children:(0,H.jsx)(at,{className:o?`animate-spin`:``})})]})]}),c&&(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-destructive bg-destructive/10 shrink-0`,children:c}),(0,H.jsx)(df,{className:`flex-1 overflow-hidden`,children:(0,H.jsxs)(`div`,{className:`p-1.5 space-y-2 overflow-hidden`,children:[(0,H.jsx)(Wf,{title:`Staged Changes`,count:i?.staged.length??0,files:i?.staged??[],viewMode:_,actionIcon:(0,H.jsx)(Ye,{className:`size-3`}),actionAllIcon:(0,H.jsx)(Ye,{className:`size-3`}),actionTitle:`Unstage`,onAction:e=>x([e.path]),onActionAll:i?.staged.length?()=>x(i.staged.map(e=>e.path)):void 0,actionAllLabel:`Unstage All`,onFolderAction:e=>x(e.map(e=>e.path)),onClickFile:D,onOpenFile:O,disabled:f}),(0,H.jsx)(Wf,{title:`Changes`,count:k.length,files:k,viewMode:_,actionIcon:(0,H.jsx)(it,{className:`size-3`}),actionAllIcon:(0,H.jsx)(it,{className:`size-3`}),actionTitle:`Stage`,onAction:e=>b([e.path]),onActionAll:k.length?()=>b(k.map(e=>e.path)):void 0,actionAllLabel:`Stage All`,onFolderAction:e=>b(e.map(e=>e.path)),onClickFile:D,onOpenFile:O,disabled:f,showRevert:!0,onRevert:e=>h({label:e.path,files:[e.path]}),onFolderRevert:(e,t)=>h({label:`${t}/ (${e.length} files)`,files:e.map(e=>e.path)})})]})}),(0,H.jsxs)(`div`,{className:`border-t p-2 space-y-2 shrink-0`,children:[(0,H.jsx)(`textarea`,{className:`w-full h-16 px-3 py-2 text-base md:text-sm text-foreground bg-surface border border-border rounded-lg resize-none focus:outline-none focus:border-ring placeholder:text-muted-foreground`,placeholder:`Commit message...`,value:u,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&w()}}),(0,H.jsx)(xf,{size:`sm`,className:`w-full`,disabled:f||!u.trim()||!i?.staged.length,onClick:w,children:f?(0,H.jsx)(Ge,{className:`size-3 animate-spin`}):`Commit (${i?.staged.length??0})`}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsxs)(xf,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:T,children:[(0,H.jsx)(_e,{className:`size-3`}),`Push`]}),(0,H.jsxs)(xf,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:E,children:[(0,H.jsx)(me,{className:`size-3`}),`Pull`]})]})]}),(0,H.jsx)(Sf,{open:!!m,onOpenChange:e=>!e&&h(null),children:(0,H.jsxs)(Tf,{showCloseButton:!1,children:[(0,H.jsxs)(Ef,{children:[(0,H.jsx)(Of,{children:`Discard Changes`}),(0,H.jsxs)(kf,{children:[`Are you sure you want to discard all changes to`,` `,(0,H.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-muted text-sm font-mono`,children:m?.label}),`? This action cannot be undone.`]})]}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(xf,{variant:`outline`,onClick:()=>h(null),children:`Cancel`}),(0,H.jsx)(xf,{variant:`destructive`,onClick:C,disabled:f,children:f?(0,H.jsx)(Ge,{className:`size-3 animate-spin`}):`Discard`})]})]})})]}):(0,H.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:`No project selected.`})}function Uf({showRevert:e,onRevert:t,onAction:n,onOpenFile:r,actionIcon:i,actionTitle:a,disabled:o}){return(0,H.jsxs)(`div`,{className:`hidden md:flex absolute right-0 top-0 bottom-0 items-center gap-0.5 pl-6 pr-1 bg-gradient-to-l from-background from-70% to-transparent opacity-0 group-hover:opacity-100 transition-opacity`,children:[r&&(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-primary active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),r()},disabled:o,title:`Open file`,children:(0,H.jsx)(Me,{className:`size-3`})}),e&&t&&(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-destructive active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),t()},disabled:o,title:`Discard changes`,children:(0,H.jsx)(mt,{className:`size-3`})}),(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),n()},disabled:o,title:a,children:i})]})}function Wf({title:e,count:t,files:n,viewMode:r,actionIcon:i,actionAllIcon:a,actionTitle:o,onAction:s,onActionAll:c,actionAllLabel:l,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g}){return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between mb-0.5`,children:[(0,H.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:[e,` (`,t,`)`]}),c&&t>0&&(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:c,disabled:p,title:l,children:a})]}),n.length===0?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground px-1`,children:`No changes`}):r===`flat`?(0,H.jsx)(`div`,{className:`w-full overflow-hidden`,children:n.map(e=>(0,H.jsx)(Gf,{file:e,actionIcon:i,actionTitle:o,onAction:s,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h},e.path))}):(0,H.jsx)(Kf,{files:n,actionIcon:i,actionTitle:o,onAction:s,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g})]})}function Gf({file:e,actionIcon:t,actionTitle:n,onAction:r,onClickFile:i,onOpenFile:a,disabled:o,showRevert:s,onRevert:c,displayName:l}){let u=(0,H.jsxs)(`div`,{className:`group relative flex items-center gap-1 hover:bg-muted/50 rounded pl-1 py-px w-full min-w-0`,children:[(0,H.jsx)(`span`,{className:`text-xs font-mono w-4 text-center shrink-0 ${zf[e.status]??``}`,children:e.status}),(0,H.jsx)(`button`,{type:`button`,className:`hidden md:block flex-1 text-left text-xs font-mono truncate hover:underline min-w-0`,onClick:()=>i(e),title:e.path,children:l??e.path}),(0,H.jsx)(`span`,{className:`md:hidden flex-1 text-left text-xs font-mono truncate min-w-0`,children:l??e.path}),(0,H.jsx)(Uf,{showRevert:s,onRevert:c?()=>c(e):void 0,onOpenFile:a?()=>a(e):void 0,onAction:()=>r(e),actionIcon:t,actionTitle:n,disabled:o})]});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`hidden md:block`,children:u}),(0,H.jsx)(`div`,{className:`md:hidden`,children:(0,H.jsxs)(Ff,{children:[(0,H.jsx)(If,{asChild:!0,children:u}),(0,H.jsxs)(Lf,{align:`start`,className:`min-w-40`,children:[(0,H.jsx)(Rf,{onClick:()=>i(e),children:`View Diff`}),a&&(0,H.jsx)(Rf,{onClick:()=>a(e),children:`Open File`}),(0,H.jsx)(Rf,{onClick:()=>r(e),disabled:o,children:n}),s&&c&&(0,H.jsx)(Rf,{className:`text-destructive focus:text-destructive`,onClick:()=>c(e),disabled:o,children:`Discard Changes`})]})]})})]})}function Kf({files:e,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u}){let d=(0,V.useMemo)(()=>Bf(e),[e]);return(0,H.jsx)(`div`,{children:d.map((e,f)=>(0,H.jsx)(qf,{node:e,depth:0,isLast:f===d.length-1,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u},e.fullPath))})}function qf({node:e,depth:t,isLast:n,actionIcon:r,actionTitle:i,onAction:a,onFolderAction:o,onClickFile:s,onOpenFile:c,disabled:l,showRevert:u,onRevert:d,onFolderRevert:f}){let[p,m]=(0,V.useState)(!0),h=e.children.length>0&&!e.file,g=t*12-6,_=`absolute border-dashed border-border`;if(e.file)return(0,H.jsxs)(`div`,{className:`relative`,style:{paddingLeft:t*12},children:[t>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`${_} border-l`,style:{left:g,top:0,bottom:n?`50%`:0}}),(0,H.jsx)(`div`,{className:`${_} border-t`,style:{left:g,top:`50%`,width:6}})]}),(0,H.jsx)(Gf,{file:e.file,displayName:e.name,actionIcon:r,actionTitle:i,onAction:a,onClickFile:s,onOpenFile:c,disabled:l,showRevert:u,onRevert:d})]});if(h){let h=Vf(e);return(0,H.jsxs)(`div`,{className:`relative`,children:[t>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`${_} border-l`,style:{left:g,top:0,...n?{height:13}:{bottom:0}}}),(0,H.jsx)(`div`,{className:`${_} border-t`,style:{left:g,top:13,width:8}})]}),(()=>{let n=(0,H.jsxs)(`div`,{className:`group relative flex items-center hover:bg-muted/50 rounded py-0.5`,style:{paddingLeft:t*12+2},children:[(0,H.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 flex-1 min-w-0 text-xs font-mono text-muted-foreground`,onClick:()=>m(!p),children:[p?(0,H.jsx)(Se,{className:`size-3.5 shrink-0`}):(0,H.jsx)(Ce,{className:`size-3.5 shrink-0`}),(0,H.jsx)(`span`,{className:`truncate font-semibold`,children:e.name}),(0,H.jsxs)(`span`,{className:`text-[10px] opacity-60 shrink-0`,children:[`(`,h.length,`)`]})]}),(0,H.jsx)(Uf,{showRevert:u,onRevert:f?()=>f(h,e.fullPath):void 0,onAction:()=>o?.(h),actionIcon:r,actionTitle:`${i} ${e.name}/`,disabled:l})]});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`hidden md:block`,children:n}),(0,H.jsx)(`div`,{className:`md:hidden`,children:(0,H.jsxs)(Ff,{children:[(0,H.jsx)(If,{asChild:!0,children:n}),(0,H.jsxs)(Lf,{align:`start`,className:`min-w-40`,children:[(0,H.jsxs)(Rf,{onClick:()=>o?.(h),disabled:l,children:[i,` `,e.name,`/`]}),f&&(0,H.jsx)(Rf,{className:`text-destructive focus:text-destructive`,onClick:()=>f(h,e.fullPath),disabled:l,children:`Discard Changes`})]})]})})]})})(),p&&(0,H.jsx)(`div`,{children:e.children.map((n,p)=>(0,H.jsx)(qf,{node:n,depth:t+1,isLast:p===e.children.length-1,actionIcon:r,actionTitle:i,onAction:a,onFolderAction:o,onClickFile:s,onOpenFile:c,disabled:l,showRevert:u,onRevert:d,onFolderRevert:f},n.fullPath))})]})}return null}function Jf({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,H.jsx)(Uc,{"data-slot":`separator`,decorative:n,orientation:t,className:z(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}function Yf({className:e,...t}){return(0,H.jsx)(Do,{"data-slot":`label`,className:z(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Xf({...e}){return(0,H.jsx)(Ec,{"data-slot":`select`,...e})}function Zf({...e}){return(0,H.jsx)(Oc,{"data-slot":`select-value`,...e})}function Qf({className:e,size:t=`default`,children:n,...r}){return(0,H.jsxs)(Dc,{"data-slot":`select-trigger`,"data-size":t,className:z(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,H.jsx)(kc,{asChild:!0,children:(0,H.jsx)(Se,{className:`size-4 opacity-50`})})]})}function $f({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,H.jsx)(Ac,{children:(0,H.jsxs)(jc,{"data-slot":`select-content`,className:z(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,H.jsx)(tp,{}),(0,H.jsx)(Mc,{className:z(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,H.jsx)(np,{})]})})}function ep({className:e,children:t,...n}){return(0,H.jsxs)(Nc,{"data-slot":`select-item`,className:z(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,H.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,H.jsx)(Fc,{children:(0,H.jsx)(xe,{className:`size-4`})})}),(0,H.jsx)(Pc,{children:t})]})}function tp({className:e,...t}){return(0,H.jsx)(Ic,{"data-slot":`select-scroll-up-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,H.jsx)(we,{className:`size-4`})})}function np({className:e,...t}){return(0,H.jsx)(Lc,{"data-slot":`select-scroll-down-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,H.jsx)(Se,{className:`size-4`})})}function rp(){return B.get(`/api/settings/ai`)}function ip(e){return B.put(`/api/settings/ai`,e)}var ap=[{value:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`},{value:`claude-opus-4-6`,label:`Claude Opus 4.6`},{value:`claude-haiku-4-5`,label:`Claude Haiku 4.5`}],op=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`},{value:`max`,label:`Max`}];function sp({compact:e}={}){let[t,n]=(0,V.useState)(null),[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(null),[s,c]=(0,V.useState)(0);(0,V.useEffect)(()=>{rp().then(n).catch(e=>o(e.message))},[]);let l=t?.default_provider??`claude`,u=t?.providers[l],d=async(e,r)=>{if(t){i(!0),o(null);try{n(await ip({providers:{[l]:{[e]:r}}})),c(e=>e+1)}catch(e){o(e.message)}finally{i(!1)}}},f=e?`text-[11px]`:`text-sm`,p=e?`text-xs`:`text-sm`,m=e?`space-y-2`:`space-y-4`,h=e?`space-y-1.5`:`space-y-3`,g=e?`space-y-1`:`space-y-1.5`;return t?(0,H.jsxs)(`div`,{className:m,children:[(0,H.jsx)(`h3`,{className:`${p} font-medium text-text-secondary`,children:`AI Provider`}),(0,H.jsxs)(`div`,{className:h,children:[(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-model`,className:e?f:void 0,children:`Model`}),(0,H.jsxs)(Xf,{value:u?.model??`claude-sonnet-4-6`,onValueChange:e=>d(`model`,e),children:[(0,H.jsx)(Qf,{id:`ai-model`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,H.jsx)(Zf,{})}),(0,H.jsx)($f,{children:ap.map(e=>(0,H.jsx)(ep,{value:e.value,children:e.label},e.value))})]})]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-effort`,className:e?f:void 0,children:`Effort`}),(0,H.jsxs)(Xf,{value:u?.effort??`high`,onValueChange:e=>d(`effort`,e),children:[(0,H.jsx)(Qf,{id:`ai-effort`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,H.jsx)(Zf,{})}),(0,H.jsx)($f,{children:op.map(e=>(0,H.jsx)(ep,{value:e.value,children:e.label},e.value))})]})]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-max-turns`,className:e?f:void 0,children:`Max Turns (1-500)`}),(0,H.jsx)(O,{id:`ai-max-turns`,type:`number`,min:1,max:500,defaultValue:u?.max_turns??100,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);isNaN(t)||d(`max_turns`,t)}},`turns-${s}`)]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-budget`,className:e?f:void 0,children:`Max Budget (USD)`}),(0,H.jsx)(O,{id:`ai-budget`,type:`number`,step:.1,min:.01,max:50,defaultValue:u?.max_budget_usd??``,placeholder:`No limit`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseFloat(e.target.value);d(`max_budget_usd`,isNaN(t)?void 0:t)}},`budget-${s}`)]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-thinking`,className:e?f:void 0,children:`Thinking Budget (tokens)`}),(0,H.jsx)(O,{id:`ai-thinking`,type:`number`,min:0,defaultValue:u?.thinking_budget_tokens??``,placeholder:`Disabled`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);d(`thinking_budget_tokens`,isNaN(t)?void 0:t)}},`thinking-${s}`)]})]}),r&&(0,H.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Saving...`}),a&&(0,H.jsx)(`p`,{className:`text-xs text-red-500`,children:a})]}):(0,H.jsxs)(`div`,{className:h,children:[(0,H.jsx)(`h3`,{className:`${p} font-medium text-text-secondary`,children:`AI Provider`}),(0,H.jsx)(`p`,{className:`${f} text-text-subtle`,children:a?`Error: ${a}`:`Loading...`})]})}var cp=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],lp=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function up({actionId:e,combo:t,locked:n}){let[r,i]=(0,V.useState)(!1),a=Vd(e=>e.setBinding),o=(0,V.useRef)(null),s=(0,V.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){i(!1);return}let n=Bd(t);n&&(a(e,n),i(!1))},[e,a]);return(0,V.useEffect)(()=>{if(r)return document.addEventListener(`keydown`,s,!0),()=>document.removeEventListener(`keydown`,s,!0)},[r,s]),(0,V.useEffect)(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&i(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),n?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-border bg-muted px-2 py-0.5 text-[11px] font-mono text-muted-foreground`,children:[(0,H.jsx)(Ke,{className:`size-2.5`}),zd(t)]}):r?(0,H.jsx)(`button`,{ref:o,className:`inline-flex items-center rounded border-2 border-primary bg-primary/10 px-2 py-0.5 text-[11px] font-mono text-primary animate-pulse`,children:`Press keys...`}):(0,H.jsx)(`button`,{ref:o,onClick:()=>i(!0),className:`inline-flex items-center rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-mono text-foreground hover:border-primary hover:bg-primary/5 transition-colors cursor-pointer`,title:`Click to change shortcut`,children:zd(t)})}function dp(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:i}=Vd();return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(i).length>0&&(0,H.jsxs)(xf,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,H.jsx)(r,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,H.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-2.5 py-2`,children:[(0,H.jsx)(pt,{className:`size-3.5 text-amber-500 shrink-0 mt-0.5`}),(0,H.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,lp.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),cp.map(n=>{let a=Fd.filter(e=>e.category===n.key);return a.length===0?null:(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,H.jsx)(`div`,{className:`space-y-0.5`,children:a.map(n=>{let a=e(n.id),o=n.id in i;return(0,H.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,H.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,H.jsx)(up,{actionId:n.id,combo:a,locked:n.locked}),o&&!n.locked&&(0,H.jsx)(`button`,{onClick:()=>t(n.id),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,H.jsx)(r,{className:`size-3`})})]})]},n.id)})})]},n.key)})]})}function fp(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 pp(){let[e,t]=(0,V.useState)(`default`),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(!1),[o,s]=(0,V.useState)(null);return(0,V.useEffect)(()=>{`Notification`in window&&t(Notification.permission),r(localStorage.getItem(`ppm-push-subscribed`)===`true`)},[]),{permission:e,isSubscribed:n,loading:i,error:o,subscribe:(0,V.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=le();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:fp(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,V.useCallback)(async()=>{a(!0);try{let e=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(e){let t={"Content-Type":`application/json`},n=le();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 mp=[{value:`light`,label:`Light`,icon:ut},{value:`dark`,label:`Dark`,icon:Ze},{value:`system`,label:`System`,icon:Xe}],hp=`PushManager`in window&&`serviceWorker`in navigator,gp=/iPhone|iPad/.test(navigator.userAgent)&&!window.matchMedia(`(display-mode: standalone)`).matches;function _p(){let{theme:e,setTheme:t}=R(),{permission:n,isSubscribed:r,loading:i,error:a,subscribe:o,unsubscribe:s}=pp();return(0,H.jsx)(`div`,{className:`h-full w-full overflow-auto`,children:(0,H.jsxs)(`div`,{className:`p-3 space-y-4`,children:[(0,H.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Theme`}),(0,H.jsx)(`div`,{className:`flex gap-1.5`,children:mp.map(n=>{let r=n.icon;return(0,H.jsxs)(xf,{variant:e===n.value?`default`:`outline`,size:`sm`,onClick:()=>t(n.value),className:z(`flex-1 gap-1.5 text-xs h-8`,e===n.value&&`ring-2 ring-primary`),children:[(0,H.jsx)(r,{className:`size-3.5`}),n.label]},n.value)})})]}),(0,H.jsx)(Jf,{}),(0,H.jsx)(sp,{}),(0,H.jsx)(Jf,{}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Notifications`}),hp?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r?(0,H.jsx)(ye,{className:`size-3.5`}):(0,H.jsx)(ve,{className:`size-3.5`}),(0,H.jsx)(`span`,{className:`text-xs`,children:`Push notifications`})]}),(0,H.jsx)(xf,{variant:r?`default`:`outline`,size:`sm`,className:`h-7 text-xs`,disabled:i||n===`denied`,onClick:()=>r?s():o(),children:i?`...`:r?`On`:`Off`})]}),r&&(0,H.jsx)(xf,{variant:`outline`,size:`sm`,className:`h-7 text-xs w-full`,onClick:()=>{new Notification(`PPM Test`,{body:`Push notifications are working!`})},children:`Test notification`}),a&&(0,H.jsx)(`p`,{className:`text-[11px] text-destructive`,children:a}),n===`denied`&&(0,H.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Notifications blocked. Enable in browser settings.`}),gp&&(0,H.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`On iOS, install PPM to Home Screen for push notifications.`})]}):(0,H.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Push notifications not supported in this browser.`})]}),(0,H.jsx)(Jf,{}),(0,H.jsx)(dp,{}),(0,H.jsx)(Jf,{}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`About`}),(0,H.jsx)(`p`,{className:`text-xs text-text-secondary`,children:`PPM — Personal Project Manager`}),(0,H.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`A mobile-first web IDE for managing your projects.`})]})]})})}var vp=10;function yp({connections:e,cachedTables:t,onOpenConnection:n,onOpenTable:r,onRefreshTables:i,onEdit:a,onDelete:o}){let[s,c]=(0,V.useState)(new Set),[l,u]=(0,V.useState)(new Set([`__ungrouped__`])),[d,f]=(0,V.useState)(new Set),[p,m]=(0,V.useState)(new Set),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 i(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,H.jsxs)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:[`No connections yet.`,(0,H.jsx)(`br`,{}),`Click + to add one.`]}):(0,H.jsx)(`div`,{className:`py-1`,children:y.map(e=>{let i=l.has(e),c=e===`__ungrouped__`?`Ungrouped`:e,u=v[e];return(0,H.jsxs)(`div`,{children:[(y.length>1||e!==`__ungrouped__`)&&(0,H.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:[i?(0,H.jsx)(Se,{className:`size-3`}):(0,H.jsx)(Ce,{className:`size-3`}),c]}),i&&u.map(e=>{let i=s.has(e.id),c=t.get(e.id)??[],l=d.has(e.id),u=p.has(e.id),f=u?c:c.slice(0,vp);return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:`group flex items-center gap-1 px-2 py-1 hover:bg-surface-elevated transition-colors`,children:[(0,H.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:i?(0,H.jsx)(Se,{className:`size-3`}):(0,H.jsx)(Ce,{className:`size-3`})}),(0,H.jsx)(`span`,{className:`shrink-0 size-2 rounded-full border border-border`,style:{backgroundColor:e.color??`transparent`}}),(0,H.jsx)(`button`,{className:`flex-1 text-left text-xs truncate hover:text-primary transition-colors`,onClick:()=>n(e),children:e.name}),(0,H.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,H.jsx)(`span`,{title:`Readonly`,children:(0,H.jsx)(Ke,{className:`shrink-0 size-2.5 text-text-subtle`,"aria-label":`Readonly`})}),(0,H.jsxs)(`div`,{className:`hidden group-hover:flex items-center gap-0.5 shrink-0`,children:[(0,H.jsx)(`button`,{onClick:()=>_(e.id),disabled:l,className:`p-0.5 text-text-subtle hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,H.jsx)(at,{className:z(`size-3`,l&&`animate-spin`)})}),(0,H.jsx)(`button`,{onClick:()=>a(e),className:`p-0.5 text-text-subtle hover:text-foreground transition-colors`,title:`Edit`,children:(0,H.jsx)(rt,{className:`size-3`})}),(0,H.jsx)(`button`,{onClick:()=>o(e.id),className:`p-0.5 text-text-subtle hover:text-red-500 transition-colors`,title:`Delete`,children:(0,H.jsx)(ft,{className:`size-3`})})]})]}),i&&(0,H.jsxs)(`div`,{className:`pl-6`,children:[l&&c.length===0&&(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`Loading…`}),!l&&c.length===0&&(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`No tables cached`}),f.map(t=>(0,H.jsxs)(`button`,{onClick:()=>r(e,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,H.jsx)(Oe,{className:`size-2.5 shrink-0 text-text-subtle`}),(0,H.jsx)(`span`,{className:`truncate`,children:t.tableName})]},`${t.schemaName}.${t.tableName}`)),c.length>vp&&!u&&(0,H.jsxs)(`button`,{onClick:()=>m(t=>new Set(t).add(e.id)),className:`w-full text-left px-2 py-0.5 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[`+`,c.length-vp,` more…`]})]})]},e.id)})]},e)})})}var bp=[`#ef4444`,`#f97316`,`#eab308`,`#22c55e`,`#06b6d4`,`#3b82f6`,`#8b5cf6`,`#ec4899`,`#6b7280`,`#000000`];function xp({value:e,onChange:t}){return(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>t(null),className:z(`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,H.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center text-[8px] text-text-subtle`,children:`×`})}),bp.map(n=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:z(`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,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`div`,{className:`size-6 rounded-full border border-border shrink-0`,style:{backgroundColor:e??`transparent`}}),(0,H.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 Sp({open:e,onClose:t,connection:n,onSave:r,onUpdate:i,onTest:a}){let o=!!n,[s,c]=(0,V.useState)({name:``,type:`postgres`,path:``,connectionString:``,groupName:``,color:null,readonly:!0}),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)(null),[p,m]=(0,V.useState)(!1),[h,g]=(0,V.useState)(null);(0,V.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,H.jsx)(Sf,{open:e,onOpenChange:e=>{e||t()},children:(0,H.jsxs)(Tf,{className:`max-w-md`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:o?`Edit Connection`:`Add Connection`})}),(0,H.jsxs)(`div`,{className:`space-y-3 py-1`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Name *`}),(0,H.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Type`}),(0,H.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,H.jsx)(`option`,{value:`postgres`,children:`PostgreSQL`}),(0,H.jsx)(`option`,{value:`sqlite`,children:`SQLite`})]})]}),s.type===`postgres`?(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Connection String *`}),(0,H.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`File Path *`}),(0,H.jsx)(`input`,{value:s.path,onChange:e=>_(`path`,e.target.value),placeholder:`/path/to/database.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Group`}),(0,H.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Tab Color`}),(0,H.jsx)(xp,{value:s.color,onChange:e=>_(`color`,e)})]}),o&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between py-1`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:`Readonly`}),(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`Block non-SELECT queries (AI protection)`})]}),(0,H.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,H.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,H.jsx)(`p`,{className:`text-xs ${d.ok?`text-green-500`:`text-red-500`}`,children:d.ok?`✓ Connection successful`:`✗ ${d.error}`}),h&&(0,H.jsx)(`p`,{className:`text-xs text-red-500`,children:h})]}),(0,H.jsxs)(Df,{children:[o&&(0,H.jsx)(xf,{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,H.jsx)(xf,{variant:`outline`,size:`sm`,onClick:t,children:`Cancel`}),(0,H.jsx)(xf,{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`})]})]})})}async function Cp(e,t){let n=await(await fetch(e,t)).json();if(!n.ok)throw Error(n.error??`Request failed`);return n.data}function wp(){let[e,t]=(0,V.useState)([]),[n,r]=(0,V.useState)(!0),[i,a]=(0,V.useState)(new Map),o=(0,V.useCallback)(async()=>{try{t(await Cp(`/api/db/connections`))}catch{}finally{r(!1)}},[]);return(0,V.useEffect)(()=>{o()},[o]),{connections:e,loading:n,cachedTables:i,createConnection:(0,V.useCallback)(async e=>{let n=await Cp(`/api/db/connections`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});return t(e=>[...e,n]),n},[]),updateConnection:(0,V.useCallback)(async(e,n)=>{let r=await Cp(`/api/db/connections/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});t(t=>t.map(t=>t.id===e?r:t))},[]),deleteConnection:(0,V.useCallback)(async e=>{await Cp(`/api/db/connections/${e}`,{method:`DELETE`}),t(t=>t.filter(t=>t.id!==e)),a(t=>{let n=new Map(t);return n.delete(e),n})},[]),testConnection:(0,V.useCallback)(async e=>Cp(`/api/db/connections/${e}/test`,{method:`POST`}),[]),refreshTables:(0,V.useCallback)(async e=>{let t=await Cp(`/api/db/connections/${e}/tables`);a(n=>new Map(n).set(e,t))},[])}}function Tp(){let{connections:e,loading:t,cachedTables:n,createConnection:r,updateConnection:i,deleteConnection:a,testConnection:o,refreshTables:s}=wp(),c=I(e=>e.openTab),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)(null);return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-semibold text-text-subtle uppercase tracking-wider`,children:`Database`}),(0,H.jsx)(`button`,{onClick:()=>u(!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,H.jsx)(it,{className:`size-3.5`})})]}),(0,H.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:t?(0,H.jsx)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:`Loading…`}):(0,H.jsx)(yp,{connections:e,cachedTables:n,onOpenConnection:e=>{c({type:e.type===`postgres`?`postgres`:`sqlite`,title:e.name,projectId:null,closable:!0,metadata:{connectionId:e.id,connectionColor:e.color}})},onOpenTable:(e,t,n)=>{c({type:e.type===`postgres`?`postgres`:`sqlite`,title:`${e.name} · ${t}`,projectId:null,closable:!0,metadata:{connectionId:e.id,tableName:t,schemaName:n,connectionColor:e.color}})},onRefreshTables:s,onEdit:f,onDelete:async e=>{confirm(`Delete this connection?`)&&await a(e)}})}),(0,H.jsx)(Sp,{open:l,onClose:()=>u(!1),onSave:async e=>{let t=await r(e);t&&s(t.id).catch(()=>{})},onTest:()=>Promise.resolve({ok:!1,error:`Save connection first`})}),d&&(0,H.jsx)(Sp,{open:!!d,onClose:()=>f(null),connection:d,onUpdate:async(e,t)=>{await i(e,t)},onTest:e=>o(e)})]})}var Ep=[{id:`explorer`,label:`Explorer`,icon:Fe},{id:`git`,label:`Git`,icon:Re},{id:`database`,label:`Database`,icon:Oe},{id:`settings`,label:`Settings`,icon:st}];function Dp({onResize:e}){let t=(0,V.useRef)(!1);return(0,H.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,V.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,V.useCallback)(n=>{t.current&&e(n.clientX-48)},[e]),onPointerUp:(0,V.useCallback)(e=>{t.current=!1,e.currentTarget.releasePointerCapture(e.pointerId),document.body.style.cursor=``,document.body.style.userSelect=``},[])})}function Op(){let{activeProject:e}=Dd(),t=R(e=>e.sidebarCollapsed),n=R(e=>e.sidebarWidth),r=R(e=>e.toggleSidebar),i=R(e=>e.setSidebarWidth),a=R(e=>e.sidebarActiveTab),o=R(e=>e.setSidebarActiveTab);return t?(0,H.jsx)(`aside`,{className:`hidden md:flex flex-col w-10 min-w-10 bg-background border-r border-border`,children:(0,H.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,H.jsx)(nt,{className:`size-4`})})}):(0,H.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,H.jsxs)(`div`,{className:`flex items-center h-[41px] border-b border-border shrink-0`,children:[Ep.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:()=>o(e.id),className:z(`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,H.jsx)(t,{className:`size-3.5`}),n>=240&&(0,H.jsx)(`span`,{children:e.label})]},e.id)}),(0,H.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,H.jsx)(tt,{className:`size-3.5`})})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(e?(0,H.jsx)(Pf,{}):(0,H.jsx)(`div`,{className:`flex items-center justify-center h-24 p-4`,children:(0,H.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Select a project to browse files`})})),a===`git`&&(0,H.jsx)(Hf,{metadata:{projectName:e?.name}}),a===`database`&&(0,H.jsx)(Tp,{}),a===`settings`&&(0,H.jsx)(_p,{})]}),(0,H.jsx)(Dp,{onResize:i})]})}var kp=Object.defineProperty,Ap=Object.getOwnPropertySymbols,jp=Object.prototype.hasOwnProperty,Mp=Object.prototype.propertyIsEnumerable,Np=(e,t,n)=>t in e?kp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pp=(e,t)=>{for(var n in t||={})jp.call(t,n)&&Np(e,n,t[n]);if(Ap)for(var n of Ap(t))Mp.call(t,n)&&Np(e,n,t[n]);return e},Fp=(e,t)=>{var n={};for(var r in e)jp.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ap)for(var r of Ap(e))t.indexOf(r)<0&&Mp.call(e,r)&&(n[r]=e[r]);return n},Ip;(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})(Ip||={}),(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||={})})(Ip||={}),(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||={})})(Ip||={});var Lp=Ip,Rp={L:Lp.QrCode.Ecc.LOW,M:Lp.QrCode.Ecc.MEDIUM,Q:Lp.QrCode.Ecc.QUARTILE,H:Lp.QrCode.Ecc.HIGH},zp=128,Bp=`L`,Vp=`#FFFFFF`,Hp=`#000000`,Up=!1,Wp=1,Gp=4,Kp=0,qp=.1;function Jp(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 Yp(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 Xp(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*qp),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 Zp(e,t){return t==null?e?Gp:Kp:Math.max(Math.floor(t),0)}function Qp({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=V.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...Lp.QrSegment.makeSegments(t)),e),[]);return Lp.QrCode.encodeSegments(r,Rp[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=V.useMemo(()=>{let e=c.getModules(),t=Zp(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:Xp(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var $p=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),em=V.forwardRef(function(e,t){let n=e,{value:r,size:i=zp,level:a=Bp,bgColor:o=Vp,fgColor:s=Hp,includeMargin:c=Up,minVersion:l=Wp,boostLevel:u,marginSize:d,imageSettings:f}=n,p=Fp(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=Fp(p,[`style`]),g=f?.src,_=V.useRef(null),v=V.useRef(null),y=V.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=V.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=Qp({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});V.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=Yp(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,$p?t.fill(new Path2D(Jp(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)}}),V.useEffect(()=>{x(!1)},[g]);let E=Pp({height:i,width:i},m),D=null;return g!=null&&(D=V.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),V.createElement(V.Fragment,null,V.createElement(`canvas`,Pp({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});em.displayName=`QRCodeCanvas`;var tm=V.forwardRef(function(e,t){let n=e,{value:r,size:i=zp,level:a=Bp,bgColor:o=Vp,fgColor:s=Hp,includeMargin:c=Up,minVersion:l=Wp,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=Fp(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=Qp({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=Yp(g,v.excavation)),b=V.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=Jp(y,h);return V.createElement(`svg`,Pp({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&V.createElement(`title`,null,d),V.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),V.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});tm.displayName=`QRCodeSVG`;var nm=`hienlh/ppm`;async function rm(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 B.get(`${ce(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(`
20
- `)}function im(e){let t=`https://github.com/${nm}/issues/new?title=bug%3A%20&body=${encodeURIComponent(e)}`;window.open(t,`_blank`)}async function am(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function om(e,t){rm(e,t).then(e=>{window.dispatchEvent(new CustomEvent(`open-bug-report`,{detail:e}))})}var sm=[`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 cm(e,t){return e??sm[t%sm.length]}function lm(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 um({onSuccess:e,onCancel:t,footerClassName:n}){let{addProject:r}=Dd(),[i,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)([]),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(!1),[g,_]=(0,V.useState)(``),v=(0,V.useRef)(null),y=(0,V.useRef)(null);(0,V.useEffect)(()=>{if(v.current&&clearTimeout(v.current),!i.trim()){l([]),d(!1);return}v.current=setTimeout(async()=>{p(!0);try{l(await B.get(`/api/projects/suggest-dirs?q=${encodeURIComponent(i)}`)??[]),d(!0)}catch{l([])}finally{p(!1)}},250)},[i]),(0,V.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,H.jsxs)(`form`,{onSubmit:x,className:`flex flex-col gap-3`,children:[(0,H.jsxs)(`div`,{ref:y,className:`relative`,children:[(0,H.jsx)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:`Project path`}),(0,H.jsxs)(`div`,{className:`relative flex items-center`,children:[(0,H.jsx)(Fe,{className:`absolute left-2.5 size-3.5 text-text-subtle pointer-events-none`}),(0,H.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,H.jsx)(Ge,{className:`absolute right-2.5 size-3.5 text-text-subtle animate-spin`})]}),u&&c.length>0&&(0,H.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,H.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,H.jsx)(`span`,{className:`text-sm font-medium truncate w-full`,children:e.name}),(0,H.jsx)(`span`,{className:`text-xs text-text-subtle truncate w-full`,children:e.path})]},e.path))})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:[`Display name `,(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`(optional)`})]}),(0,H.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,H.jsx)(`p`,{className:`text-xs text-destructive`,children:g}),(0,H.jsxs)(`div`,{className:z(`flex justify-end gap-2 pt-1`,n),children:[(0,H.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,H.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 dm({name:e,color:t,active:n,allNames:r}){let i=lm(e,r);return(0,H.jsx)(`div`,{className:z(`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})}function fm({current:e,onChange:t}){return(0,H.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:sm.map(n=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:z(`size-8 rounded-full border-2 transition-all`,e===n?`border-primary scale-110`:`border-transparent hover:scale-105`),style:{background:n}},n))})}function pm(){let{projects:e,activeProject:t,setActiveProject:n,setProjectColor:r,reorderProjects:i,renameProject:a,deleteProject:o,customOrder:s}=Dd();I(e=>e.openTab);let c=R(e=>e.version),l=(0,V.useCallback)(()=>om(c),[c]),[u,d]=(0,V.useState)(null),[f,p]=(0,V.useState)(null),m=Ed(e,s),h=m.map(e=>e.name),[g,_]=(0,V.useState)(!1),[v,y]=(0,V.useState)(``),[b,x]=(0,V.useState)(``),[S,C]=(0,V.useState)(!1),[w,T]=(0,V.useState)(``),[E,D]=(0,V.useState)(!1),[O,k]=(0,V.useState)(!1),[A,ee]=(0,V.useState)(``),[te,j]=(0,V.useState)(``),[M,N]=(0,V.useState)(!1),P=(0,V.useCallback)(e=>{y(e),x(e),_(!0)},[]),ne=(0,V.useCallback)(e=>{T(e),C(!0)},[]),F=(0,V.useCallback)((e,t)=>{ee(e),j(t),k(!0)},[]);async function re(){if(!b.trim()||b===v){_(!1);return}try{await a(v,b.trim())}catch{}_(!1)}async function L(){try{await o(w)}catch{}C(!1)}async function ie(){N(!0);try{await r(A,te),k(!1)}catch(e){console.error(`Failed to save color:`,e)}finally{N(!1)}}function ae(){D(!0)}let[oe,se]=(0,V.useState)(!1),[ce,le]=(0,V.useState)(null),[ue,de]=(0,V.useState)(null),[fe,pe]=(0,V.useState)(!1),[me,he]=(0,V.useState)(!1),[ge,_e]=(0,V.useState)(null),[ve,ye]=(0,V.useState)(null),Se=(0,V.useRef)(null),[Ce,we]=(0,V.useState)(null);(0,V.useEffect)(()=>{if(!oe||!Se.current){we(null);return}let e=Se.current.getBoundingClientRect();we({left:e.right+6,bottom:window.innerHeight-e.bottom})},[oe]);let Te=(0,V.useCallback)(async()=>{if(oe){se(!1);return}se(!0),_e(null),le(null),de(null),he(!0);try{let e=await B.get(`/api/tunnel`);e.active&&e.url&&le(e.url),e.localUrl&&de(e.localUrl)}catch{}he(!1)},[oe]),Ee=(0,V.useCallback)(async()=>{pe(!0),_e(null);try{le((await B.post(`/api/tunnel/start`,{})).url)}catch(e){_e(e instanceof Error?e.message:`Failed to start tunnel`)}finally{pe(!1)}},[]),Oe=(0,V.useCallback)(e=>{navigator.clipboard.writeText(e),ye(e),setTimeout(()=>ye(null),2e3)},[]);function ke(){let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=R.getState();e&&t(),n(`settings`)}return(0,H.jsxs)(`aside`,{className:`hidden md:flex flex-col w-[52px] min-w-[52px] bg-background border-r border-border overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center justify-center h-[41px] border-b border-border gap-0.5`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-bold text-primary leading-none`,children:`PPM`}),c&&(0,H.jsxs)(`span`,{className:`text-[8px] text-text-subtle leading-none`,children:[`v`,c]})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-2 flex flex-col items-center gap-2 min-h-0`,children:[m.map((e,r)=>{let a=cm(e.color,r),o=t?.name===e.name;return(0,H.jsxs)(pf,{children:[(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(mf,{asChild:!0,children:(0,H.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=m.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,H.jsx)(dm,{name:e.name,color:a,active:o,allNames:h})})})}),(0,H.jsxs)(Nl,{side:`right`,className:`max-w-[200px]`,children:[(0,H.jsx)(`p`,{className:`font-medium`,children:e.name}),(0,H.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]})]}),(0,H.jsxs)(hf,{children:[(0,H.jsxs)(gf,{onClick:()=>P(e.name),children:[(0,H.jsx)(rt,{className:`size-3.5 mr-2`}),` Rename`]}),(0,H.jsxs)(gf,{onClick:()=>F(e.name,a),children:[(0,H.jsx)(et,{className:`size-3.5 mr-2`}),` Change Color`]}),(0,H.jsx)(_f,{}),(0,H.jsxs)(gf,{className:`text-destructive focus:text-destructive`,onClick:()=>ne(e.name),children:[(0,H.jsx)(ft,{className:`size-3.5 mr-2`}),` Delete`]})]})]},e.name)}),(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(`button`,{onClick:ae,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,H.jsx)(it,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Add Project`})]})]}),(0,H.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center gap-1 py-2 border-t border-border`,children:[(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(`button`,{ref:Se,onClick:Te,className:z(`flex items-center justify-center size-8 rounded-md transition-colors`,oe?`text-primary bg-primary/10`:`text-text-subtle hover:text-foreground hover:bg-surface-elevated`),children:(0,H.jsx)(ct,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Share`})]}),oe&&Ce&&(0,_t.createPortal)((0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:()=>se(!1)}),(0,H.jsxs)(`div`,{className:`fixed z-50 w-64 bg-background border border-border rounded-lg shadow-lg p-3 space-y-3`,style:{left:Ce.left,bottom:Ce.bottom},children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:`Share`}),(0,H.jsx)(`button`,{onClick:()=>se(!1),className:`text-text-subtle hover:text-foreground`,children:(0,H.jsx)(ht,{className:`size-3.5`})})]}),me&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground text-xs`,children:[(0,H.jsx)(Ge,{className:`size-4 animate-spin`}),(0,H.jsx)(`span`,{children:`Checking...`})]}),!me&&ue&&(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Local Network`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`input`,{readOnly:!0,value:ue,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,H.jsx)(`button`,{onClick:()=>Oe(ue),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:ve===ue?(0,H.jsx)(xe,{className:`size-3.5 text-primary`}):(0,H.jsx)(De,{className:`size-3.5`})})]})]}),!me&&!ce&&!fe&&!ge&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Create a public link so others can access this PPM instance from anywhere.`}),(0,H.jsxs)(`button`,{onClick:Ee,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,H.jsx)(ct,{className:`size-3.5`}),`Start Sharing`]})]}),fe&&(0,H.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-2`,children:[(0,H.jsx)(Ge,{className:`size-5 animate-spin text-primary`}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Starting tunnel... this may take a moment`})]}),ge&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`p`,{className:`text-xs text-destructive`,children:ge}),(0,H.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,H.jsx)(`button`,{onClick:Ee,className:`flex-1 px-3 py-1.5 text-xs font-medium rounded-md border border-border hover:bg-muted transition-colors`,children:`Retry`}),(0,H.jsxs)(`button`,{onClick:()=>{se(!1),l()},className:`flex items-center gap-1 px-3 py-1.5 text-xs font-medium rounded-md border border-border text-destructive hover:bg-destructive/10 transition-colors`,children:[(0,H.jsx)(be,{className:`size-3`}),`Report`]})]})]}),ce&&(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Public (Cloudflare)`}),(0,H.jsx)(`div`,{className:`flex justify-center`,children:(0,H.jsx)(tm,{value:ce,size:160})}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`input`,{readOnly:!0,value:ce,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,H.jsx)(`button`,{onClick:()=>Oe(ce),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:ve===ce?(0,H.jsx)(xe,{className:`size-3.5 text-primary`}):(0,H.jsx)(De,{className:`size-3.5`})})]})]})]})]}),document.body),(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.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,H.jsx)(be,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Report Bug`})]}),(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(`button`,{onClick:ke,className:`flex items-center justify-center size-8 rounded-md text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(st,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Settings`})]})]}),(0,H.jsx)(Sf,{open:E,onOpenChange:D,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Add Project`})}),(0,H.jsx)(um,{onSuccess:()=>D(!1),onCancel:()=>D(!1)})]})}),(0,H.jsx)(Sf,{open:g,onOpenChange:_,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Rename Project`})}),(0,H.jsx)(`input`,{type:`text`,value:b,onChange:e=>x(e.target.value),onKeyDown:e=>{e.key===`Enter`&&re()},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,H.jsxs)(Df,{children:[(0,H.jsx)(`button`,{onClick:()=>_(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:re,className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors`,children:`Rename`})]})]})}),(0,H.jsx)(Sf,{open:S,onOpenChange:C,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Delete Project`})}),(0,H.jsxs)(`p`,{className:`text-sm text-text-secondary`,children:[`Remove `,(0,H.jsx)(`strong`,{className:`text-foreground`,children:w}),` from PPM? The files on disk won't be deleted.`]}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(`button`,{onClick:()=>C(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:L,className:`px-3 py-1.5 text-sm bg-destructive text-white rounded-md hover:bg-destructive/90 transition-colors`,children:`Delete`})]})]})}),(0,H.jsx)(Sf,{open:O,onOpenChange:k,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Change Color`})}),(0,H.jsx)(fm,{current:te,onChange:j}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(`button`,{onClick:()=>k(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:ie,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 mm=[{type:`terminal`,label:`Terminal`},{type:`chat`,label:`AI Chat`},{type:`git-graph`,label:`Git Graph`},{type:`settings`,label:`Settings`}],hm=Object.fromEntries(mm.map(e=>[e.type,e.label])),gm={terminal:dt,chat:Je,editor:Ae,sqlite:Oe,postgres:Oe,"git-graph":Re,"git-diff":je,settings:st};function _m({onMenuPress:e,onProjectsPress:t}){let n=F(e=>e.focusedPanelId),r=F(e=>e.panels[e.focusedPanelId]);F(e=>Object.keys(e.panels).length);let i=F(e=>e.grid),a=r?.tabs??[],o=r?.activeTabId??null,s=(0,V.useRef)(new Map),c=(0,V.useRef)(a.length),[l,u]=(0,V.useState)(null),[d,f]=(0,V.useState)(!1),p=(0,V.useRef)(null);(0,V.useEffect)(()=>{a.length>c.current&&o&&s.current.get(o)?.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`}),c.current=a.length},[a.length,o]);let m=(0,V.useCallback)(e=>{p.current=setTimeout(()=>u(e),400)},[]),h=(0,V.useCallback)(()=>{p.current&&=(clearTimeout(p.current),null)},[]),g=re(i,n)?i.length<3:!1,_=Object.keys(F.getState().panels).filter(e=>e!==n);function v(e){let t=a.findIndex(t=>t.id===e);t>0&&F.getState().reorderTab(e,n,t-1)}function y(e){let t=a.findIndex(t=>t.id===e);t<a.length-1&&F.getState().reorderTab(e,n,t+1)}function b(e){F.getState().splitPanel(`down`,e,n)}function x(e,t){F.getState().moveTab(e,n,t)}let S=l?a.find(e=>e.id===l):null,C=l?a.findIndex(e=>e.id===l):-1,{activeProject:w}=Dd.getState();function T(e){let t=e===`git-graph`||e===`git-diff`||e===`terminal`||e===`chat`?{projectName:w?.name}:void 0;F.getState().openTab({type:e,title:hm[e]??e,metadata:t,projectId:w?.name??null,closable:!0},n),f(!1)}let{activeProject:E,projects:D,customOrder:O}=Dd(),k=Ed(D,O??null),A=k.map(e=>e.name),ee=k.findIndex(e=>e.name===E?.name),te=E?cm(E.color,ee>=0?ee:0):`#4f86c6`,j=E?lm(E.name,A):null;return(0,H.jsxs)(`nav`,{className:`fixed bottom-0 left-0 right-0 md:hidden bg-background border-t border-border z-40 select-none`,children:[(0,H.jsxs)(`div`,{className:`flex items-center h-12`,children:[(0,H.jsx)(`button`,{onClick:e,className:`flex items-center justify-center size-12 shrink-0 text-text-secondary border-r border-border`,children:(0,H.jsx)(qe,{className:`size-5`})}),(0,H.jsx)(`div`,{className:`flex-1 flex items-center h-12 overflow-x-auto`,children:a.map(e=>{let t=gm[e.type];return(0,H.jsxs)(`button`,{ref:t=>{t?s.current.set(e.id,t):s.current.delete(e.id)},onClick:()=>F.getState().setActiveTab(e.id),onTouchStart:()=>m(e.id),onTouchEnd:h,onTouchMove:h,onContextMenu:e=>e.preventDefault(),className:z(`flex items-center gap-1 px-3 h-12 whitespace-nowrap text-xs shrink-0 border-t-2 transition-colors`,e.id===o?`border-primary bg-surface text-primary`:`border-transparent text-text-secondary`),children:[(0,H.jsx)(t,{className:`size-4`}),(0,H.jsx)(`span`,{className:`max-w-[80px] truncate`,children:e.title}),e.closable&&(0,H.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>{t.stopPropagation(),F.getState().closeTab(e.id)},className:`ml-0.5 p-0.5 rounded hover:bg-surface-elevated`,children:(0,H.jsx)(ht,{className:`size-3`})})]},e.id)})}),(0,H.jsx)(`button`,{onClick:()=>Hd(),className:`flex items-center justify-center size-12 shrink-0 border-t-2 border-transparent text-text-secondary`,children:(0,H.jsx)(it,{className:`size-4`})}),(0,H.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:j?(0,H.jsx)(`div`,{className:`size-7 rounded-full flex items-center justify-center text-[10px] font-bold text-white`,style:{background:te},children:j}):(0,H.jsx)(Ue,{className:`size-5`})})]}),d&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>f(!1)}),(0,H.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,H.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border`,children:`New Tab`}),mm.map(e=>{let t=gm[e.type];return(0,H.jsxs)(`button`,{onClick:()=>T(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,H.jsx)(t,{className:`size-4`}),` `,e.label]},e.type)})]})]}),S&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>u(null)}),(0,H.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,H.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border truncate`,children:S.title}),C>0&&(0,H.jsxs)(`button`,{onClick:()=>{v(l),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(he,{className:`size-4`}),` Move Left`]}),C<a.length-1&&(0,H.jsxs)(`button`,{onClick:()=>{y(l),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(ge,{className:`size-4`}),` Move Right`]}),g&&a.length>1&&(0,H.jsxs)(`button`,{onClick:()=>{b(l),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(lt,{className:`size-4`}),` Split to Bottom`]}),_.map((e,t)=>(0,H.jsxs)(`button`,{onClick:()=>{x(l,e),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(Qe,{className:`size-4`}),` Move to Panel `,t+1===1?`Top`:`Bottom`]},e))]})]})]})}var vm=[{id:`explorer`,label:`Explorer`,icon:Fe},{id:`git`,label:`Git`,icon:Re},{id:`database`,label:`Database`,icon:Oe},{id:`settings`,label:`Settings`,icon:st}];function ym({isOpen:e,onClose:t,initialTab:n}){let{activeProject:r}=Dd(),i=R(e=>e.version),[a,o]=(0,V.useState)(n??`explorer`);(0,V.useEffect)(()=>{n&&o(n)},[n]);let s=(0,V.useCallback)(()=>om(i),[i]);return(0,H.jsxs)(`div`,{className:z(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),children:[(0,H.jsx)(`div`,{className:`absolute inset-0 bg-black/50`,onClick:t,"aria-label":`Close drawer`}),(0,H.jsxs)(`div`,{className:z(`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,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-border shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-sm font-bold text-primary tracking-tight`,children:r?.name??`PPM`}),(0,H.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-8 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(ht,{className:`size-4`})})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(r?(0,H.jsx)(Pf,{onFileOpen:t}):(0,H.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,H.jsx)(Hf,{metadata:{projectName:r?.name},onNavigate:t}),a===`database`&&(0,H.jsx)(Tp,{}),a===`settings`&&(0,H.jsx)(_p,{})]}),(0,H.jsxs)(`div`,{className:`shrink-0 border-t border-border`,children:[(0,H.jsx)(`div`,{className:`flex items-center`,children:vm.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:()=>o(e.id),className:z(`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,H.jsx)(t,{className:`size-4`}),(0,H.jsx)(`span`,{children:e.label})]},e.id)})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-t border-border`,children:[i&&(0,H.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[`v`,i]}),(0,H.jsxs)(`button`,{onClick:s,className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,H.jsx)(be,{className:`size-3`}),(0,H.jsx)(`span`,{children:`Report Bug`})]})]})]})]})]})}function bm({name:e,color:t,allNames:n}){let r=lm(e,n);return(0,H.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 xm({isOpen:e,onClose:t}){let{projects:n,activeProject:r,setActiveProject:i,setProjectColor:a,reorderProjects:o,renameProject:s,deleteProject:c,customOrder:l}=Dd();I(e=>e.openTab);let u=R(e=>e.version),d=Ed(n,l),f=d.map(e=>e.name),[p,m]=(0,V.useState)(`list`),[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(``),[y,b]=(0,V.useState)(!1),x=(0,V.useRef)(null),[S,C]=(0,V.useState)(null),[w,T]=(0,V.useState)(``),E=(0,V.useCallback)(e=>{x.current=setTimeout(()=>g(e),400)},[]),D=(0,V.useCallback)(()=>{x.current&&=(clearTimeout(x.current),null)},[]);function O(){m(`list`),t()}function k(e){let t=n.find(t=>t.name===e);t&&(i(t),O())}function A(){m(`add`)}function ee(){if(O(),window.innerWidth<768){window.dispatchEvent(new Event(`open-mobile-settings`));return}let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=R.getState();e&&t(),n(`settings`)}async function te(){if(!S||!w.trim()||w===S){C(null);return}try{await s(S,w.trim())}catch{}C(null)}async function j(e){g(null);try{await c(e)}catch{}}async function M(e,t){try{await a(e,t),b(!1),g(null)}catch(e){console.error(`Failed to save color:`,e)}}h&&d.find(e=>e.name===h);let N=h?d.findIndex(e=>e.name===h):-1,P=h?[{label:`Rename`,icon:rt,onClick:()=>{T(h),C(h),g(null)}},{label:`Change Color`,icon:et,onClick:()=>{let e=d.findIndex(e=>e.name===h),t=d[e];v(cm(t?.color,e)),b(!0)}},...N>0?[{label:`Move Up`,icon:we,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N-1,0,t),o(e),g(null)}}]:[],...N<d.length-1?[{label:`Move Down`,icon:Se,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N+1,0,t),o(e),g(null)}}]:[],{label:`Delete`,icon:ft,destructive:!0,onClick:()=>j(h)}]:[];return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:z(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),onClick:O,style:{backgroundColor:`rgba(0,0,0,0.5)`}}),(0,H.jsxs)(`div`,{className:z(`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,H.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,H.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`add`&&(0,H.jsx)(`button`,{onClick:()=>m(`list`),className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(he,{className:`size-4`})}),(0,H.jsx)(`span`,{className:`text-sm font-semibold`,children:p===`add`?`Add Project`:`Projects`})]}),(0,H.jsx)(`button`,{onClick:O,className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(ht,{className:`size-4`})})]}),p===`add`&&(0,H.jsx)(`div`,{className:`px-4 py-4`,children:(0,H.jsx)(um,{onSuccess:()=>{m(`list`),t()},onCancel:()=>m(`list`),footerClassName:`pt-2`})}),(0,H.jsx)(`div`,{className:p===`add`?`hidden`:`max-h-[60vh] overflow-y-auto`,children:d.map((e,t)=>{let n=cm(e.color,t),i=r?.name===e.name,a=S===e.name;return(0,H.jsxs)(`div`,{className:z(`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:()=>E(e.name),onTouchEnd:D,onTouchMove:D,children:[(0,H.jsx)(bm,{name:e.name,color:n,allNames:f}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[a?(0,H.jsx)(`input`,{type:`text`,value:w,onChange:e=>T(e.target.value),onKeyDown:e=>{e.key===`Enter`&&te(),e.key===`Escape`&&C(null)},onBlur:te,onClick:e=>e.stopPropagation(),className:`w-full bg-transparent border-b border-primary text-sm outline-none`,autoFocus:!0}):(0,H.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.name}),(0,H.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]}),i&&(0,H.jsx)(xe,{className:`size-4 text-primary shrink-0`})]},e.name)})}),(0,H.jsx)(`div`,{className:`border-t border-border`,children:(0,H.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,H.jsx)(it,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`Add Project`})]})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-t border-border`,children:[(0,H.jsxs)(`button`,{onClick:ee,className:`flex items-center gap-2 text-text-secondary hover:text-foreground transition-colors`,children:[(0,H.jsx)(st,{className:`size-4`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`Settings`})]}),u&&(0,H.jsxs)(`span`,{className:`text-xs text-text-subtle`,children:[`v`,u]})]})]}),h&&!y&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>g(null)}),(0,H.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,H.jsx)(`div`,{className:`px-4 py-2 border-b border-border`,children:(0,H.jsx)(`p`,{className:`text-xs font-medium text-text-secondary`,children:h})}),P.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:e.onClick,className:z(`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,H.jsx)(t,{className:`size-4 shrink-0`}),e.label]},e.label)})]})]}),y&&h&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>{b(!1),g(null)}}),(0,H.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,H.jsx)(`p`,{className:`text-sm font-medium`,children:`Change Color`}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:sm.map(e=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>v(e),className:z(`size-9 rounded-full border-2 transition-all`,_===e?`border-primary scale-110`:`border-transparent`),style:{background:e}},e))}),(0,H.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,H.jsx)(`button`,{onClick:()=>{b(!1),g(null)},className:`flex-1 py-2 text-sm text-text-secondary border border-border rounded-md`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:()=>M(h,_),className:`flex-1 py-2 text-sm bg-primary text-white rounded-md`,children:`Save`})]})]})]})]})}function Sm({onSuccess:e}){let[t,n]=(0,V.useState)(``),r=R(e=>e.deviceName),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1);async function c(n){if(n.preventDefault(),t.trim()){s(!0),a(null);try{se(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,H.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background p-4`,children:(0,H.jsxs)(`div`,{className:`w-full max-w-sm bg-surface rounded-lg border border-border p-6 space-y-6`,children:[(0,H.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,H.jsx)(`div`,{className:`flex items-center justify-center size-12 mx-auto rounded-full bg-surface-elevated`,children:(0,H.jsx)(Ke,{className:`size-6 text-primary`})}),(0,H.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`PPM`}),r&&(0,H.jsx)(`p`,{className:`text-xs text-text-subtle bg-surface-elevated inline-block px-2 py-0.5 rounded-full`,children:r}),(0,H.jsx)(`p`,{className:`text-sm text-text-secondary`,children:`Enter your access password to unlock`})]}),(0,H.jsxs)(`form`,{onSubmit:c,className:`space-y-4`,children:[(0,H.jsx)(`div`,{children:(0,H.jsx)(O,{type:`password`,placeholder:`Auth token`,value:t,onChange:e=>n(e.target.value),className:`h-11 bg-background border-border`,autoFocus:!0})}),i&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-error text-sm`,children:[(0,H.jsx)(Te,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{children:i})]}),(0,H.jsx)(xf,{type:`submit`,disabled:o||!t.trim(),className:`w-full h-11`,children:o?`Checking...`:`Unlock`})]})]})})}var Cm=5e3,wm=`/api/health`,Tm=`/api/logs/recent`,Em=`hienlh/ppm`;async function Dm(){try{let e=await(await fetch(Tm,{signal:AbortSignal.timeout(3e3)})).json();return e.ok?e.data.logs:`(failed to fetch logs)`}catch{return`(server logs unavailable)`}}async function Om(){let e=await Dm(),t=encodeURIComponent([`## Environment`,`- URL: ${window.location.href}`,`- UserAgent: ${navigator.userAgent}`,`- Time: ${new Date().toISOString()}`,``,`## Description`,`The PPM server went down and restarted unexpectedly.`,``,`## Steps to Reproduce`,`1. `,``,`## Recent Server Logs`,"```",e,"```"].join(`
21
- `));window.open(`https://github.com/${Em}/issues/new?title=bug%3A%20server%20crashed%20unexpectedly&body=${t}`,`_blank`)}function km(){let e=(0,V.useRef)(!1),t=(0,V.useRef)(!0);(0,V.useEffect)(()=>{let n;async function r(){try{(await fetch(wm,{signal:AbortSignal.timeout(3e3)})).ok?(e.current&&!t.current&&(Nt.warning(`Server was restarted`,{description:`PPM server went down and recovered. If unexpected, please report it.`,duration:15e3,action:{label:`Report Bug`,onClick:()=>Om()}}),e.current=!1),t.current=!1):e.current=!0}catch{!e.current&&!t.current&&Nt.error(`Server unreachable`,{description:`PPM server is not responding. It may have crashed.`,duration:1e4}),e.current=!0}}let i=setTimeout(()=>{r(),n=setInterval(r,Cm)},Cm);return()=>{clearTimeout(i),clearInterval(n)}},[])}function Am(e){let t=[];for(let n of e)n.type===`file`&&t.push({name:n.name,path:n.path}),n.children&&t.push(...Am(n.children));return t}function jm(e){return e?e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`~\\`)||/^[A-Za-z]:[/\\]/.test(e):!1}function Mm(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 Nm=new Map;function Pm({open:e,onClose:t,initialQuery:n=``}){let[r,i]=(0,V.useState)(``),[a,o]=(0,V.useState)(0),[s,c]=(0,V.useState)([]),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)([]),p=(0,V.useRef)(null),m=(0,V.useRef)(null),h=I(e=>e.openTab),g=Dd(e=>e.activeProject),_=uf(e=>e.tree),v=R(e=>e.setSidebarActiveTab),y=R(e=>e.sidebarCollapsed),b=R(e=>e.toggleSidebar),x=(0,V.useCallback)(async e=>{if(Nm.has(e)){c(Nm.get(e));return}u(!0);try{let t=await B.get(`/api/fs/list?dir=${encodeURIComponent(e)}`);Nm.set(e,t),c(t)}catch{c([])}finally{u(!1)}},[]);(0,V.useEffect)(()=>{if(!jm(r)){c([]);return}x(Mm(r))},[r,x]),(0,V.useEffect)(()=>{if(jm(r)||r.trim().length<2){f([]);return}let e=setTimeout(async()=>{try{let e=await(await fetch(`/api/db/search?q=${encodeURIComponent(r.trim())}`)).json();f(e.ok?e.data??[]:[])}catch{f([])}},300);return()=>clearTimeout(e)},[r]);let S=(0,V.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0,r=(r,i)=>()=>{h({type:r,title:i,projectId:e,metadata:n,closable:!0}),t()};return[{id:`terminal`,label:`New Terminal`,icon:dt,action:r(`terminal`,`Terminal`),keywords:`bash shell console`,group:`action`},{id:`chat`,label:`New AI Chat`,icon:Je,action:r(`chat`,`AI Chat`),keywords:`ai assistant claude`,group:`action`},{id:`git-graph`,label:`Git Graph`,icon:Re,action:r(`git-graph`,`Git Graph`),keywords:`branch history log`,group:`action`},{id:`postgres`,label:`PostgreSQL`,icon:Oe,action:r(`postgres`,`PostgreSQL`),keywords:`database pg sql query`,group:`action`},{id:`git-status`,label:`Git Status`,icon:ze,action:()=>{v(`git`),t()},keywords:`changes diff staged`,group:`action`},{id:`settings`,label:`Settings`,icon:st,action:()=>{y&&b(),v(`settings`),t()},keywords:`config preferences theme`,group:`action`}]},[g,h,t,v,y,b]),C=(0,V.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return Am(_).map(r=>({id:`file:${r.path}`,label:r.name,hint:r.path,icon:Ae,group:`file`,keywords:r.path,action:()=>{h({type:`editor`,title:r.name,projectId:e,metadata:{...n,filePath:r.path},closable:!0}),t()}}))},[_,g,h,t]),w=(0,V.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return s.map(r=>{let i=oe(r);return{id:`fs:${r}`,label:i,hint:r,icon:Fe,group:`fs`,keywords:r,action:()=>{h({type:`editor`,title:i,projectId:e,metadata:{...n,filePath:r},closable:!0}),t()}}})},[s,g,h,t]),T=(0,V.useMemo)(()=>d.map(e=>({id:`db:${e.connectionId}:${e.schemaName}.${e.tableName}`,label:e.tableName,hint:`${e.connectionName} (${e.connectionType===`postgres`?`PG`:`SQLite`})`,icon:Oe,group:`db`,connectionColor:e.connectionColor,action:()=>{h({type:e.connectionType===`postgres`?`postgres`:`sqlite`,title:`${e.connectionName} · ${e.tableName}`,projectId:null,closable:!0,metadata:{connectionId:e.connectionId,tableName:e.tableName,schemaName:e.schemaName,connectionColor:e.connectionColor}}),t()}})),[d,h,t]),E=(0,V.useMemo)(()=>[...S,...C],[S,C]),D=(0,V.useMemo)(()=>{if(jm(r)){let e=r.lastIndexOf(`/`),t=e>=0?r.slice(e+1).toLowerCase():``;return t?w.filter(e=>{let n=e.label.toLowerCase(),r=(e.keywords??``).toLowerCase();return n.includes(t)||r.includes(t)}).slice(0,50):w.slice(0,50)}if(!r.trim())return S;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=E.filter(e=>t(e.label.toLowerCase())||e.keywords&&t(e.keywords.toLowerCase()));return r.trim().length>=2?[...T,...n]:n},[E,S,w,T,r]);(0,V.useEffect)(()=>{e&&(i(n||``),o(0),c([]),f([]),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,V.useEffect)(()=>{o(e=>Math.min(e,Math.max(D.length-1,0)))},[D.length]),(0,V.useEffect)(()=>{let e=m.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let O=(0,V.useCallback)(()=>{r.trim()&&(h({type:`chat`,title:`AI Chat`,projectId:g?.name??null,metadata:{projectName:g?.name,pendingMessage:r.trim()},closable:!0}),t())},[r,g,h,t]);function k(e){let n=D.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?D[a]?.action():r.trim()&&O();break;case`Escape`:e.preventDefault(),t();break}}if(!e)return null;let A=jm(r);return(0,H.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:t,children:[(0,H.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,H.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:k,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,H.jsx)(ot,{className:`size-4 text-text-subtle shrink-0`}),(0,H.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,H.jsx)(Ge,{className:`size-3.5 animate-spin text-text-subtle shrink-0`}),(0,H.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`})]}),A&&!l&&s.length===0&&r.length<4&&(0,H.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,H.jsx)(`div`,{ref:m,className:`max-h-72 overflow-y-auto py-1`,children:D.length===0?l?(0,H.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`Searching...`}):r.trim()?(0,H.jsxs)(`button`,{onClick:O,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,H.jsx)(Je,{className:`size-4 shrink-0 text-accent`}),(0,H.jsxs)(`span`,{children:[`Ask AI: `,(0,H.jsx)(`span`,{className:`text-text-primary font-medium`,children:r.trim().slice(0,60)})]})]}):(0,H.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`No results`}):D.map((e,t)=>{let n=e.icon;return(0,H.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,H.jsx)(n,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`truncate`,children:e.label}),e.hint&&(0,H.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-xs text-text-subtle truncate max-w-[200px]`,children:[e.connectionColor&&(0,H.jsx)(`span`,{className:`shrink-0 size-2 rounded-full`,style:{backgroundColor:e.connectionColor}}),e.hint]})]},e.id)})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 border-t border-border px-3 py-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`Press`}),(0,H.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,H.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,H.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`to open this palette`})]})]})]})}function Fm(){let[e,t]=(0,V.useState)(null),[n,r]=(0,V.useState)(!1);(0,V.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,V.useCallback)(()=>t(null),[]);return e?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:i}),(0,H.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,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:`Bug Report`}),(0,H.jsx)(`button`,{onClick:i,className:`p-1 rounded hover:bg-surface-elevated`,children:(0,H.jsx)(ht,{className:`size-4`})})]}),(0,H.jsx)(`pre`,{className:`flex-1 overflow-auto px-4 py-2 text-xs font-mono whitespace-pre-wrap break-all`,children:e}),(0,H.jsxs)(`div`,{className:`flex gap-2 p-3 border-t border-border`,children:[(0,H.jsxs)(`button`,{onClick:async()=>{await am(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,H.jsx)(xe,{className:`size-3`}):(0,H.jsx)(De,{className:`size-3`}),n?`Copied`:`Copy`]}),(0,H.jsxs)(`button`,{onClick:()=>{im(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,H.jsx)(P,{className:`size-3`}),`Open GitHub Issue`]})]})]})]}):null}function Im(){let[e,t]=(0,V.useState)(`checking`),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(),[o,s]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let e=()=>{a(`settings`),r(!0)};return window.addEventListener(`open-mobile-settings`,e),()=>window.removeEventListener(`open-mobile-settings`,e)},[]);let[c,l]=(0,V.useState)(()=>new Set([`__global__`])),u=R(e=>e.theme),d=R(e=>e.deviceName),f=Dd(e=>e.fetchProjects),p=R(e=>e.fetchServerInfo),m=Dd(e=>e.activeProject);(0,V.useEffect)(()=>{if(ie(u),u===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>ie(`system`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)}},[u]),(0,V.useEffect)(()=>{p()},[p]),(0,V.useEffect)(()=>{async function e(){let e=le();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()},[]),Sd();let{paletteOpen:h,paletteInitialQuery:g,closePalette:_}=Ud();km(),(0,V.useEffect)(()=>{e===`authenticated`&&ef(async()=>{let{useKeybindingsStore:e}=await import(`./keybindings-store-BqgrTQAC.js`);return{useKeybindingsStore:e}},__vite__mapDeps([20,1,11])).then(({useKeybindingsStore:e})=>{e.getState().loadFromServer()})},[e]),(0,V.useEffect)(()=>{e===`authenticated`&&f().then(()=>{let{projectName:e,tabId:t}=bd(),n=Dd.getState().projects;if(e){let r=n.find(t=>t.name===e);if(r){Dd.getState().setActiveProject(r),t&&queueMicrotask(()=>{let{tabs:e}=I.getState();e.some(e=>e.id===t)&&I.getState().setActiveTab(t)});return}}})},[e,f]),(0,V.useEffect)(()=>{let e=m?.name??`__global__`;I.getState().switchProject(e)},[m?.name]),(0,V.useEffect)(()=>{let e=m?.name??`__global__`;l(t=>t.has(e)?t:new Set([...t,e]))},[m?.name]),(0,V.useEffect)(()=>{e===`authenticated`&&!m&&I.getState().switchProject(`__global__`)},[e,m]);let v=(0,V.useCallback)(()=>{t(`authenticated`)},[]);if(e===`checking`)return(0,H.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background`,children:(0,H.jsx)(`div`,{className:`animate-pulse text-text-secondary text-sm`,children:`Loading...`})});if(e===`unauthenticated`)return(0,H.jsx)(Sm,{onSuccess:v});let y=m?.name??`__global__`;return(0,H.jsx)(Al,{children:(0,H.jsxs)(`div`,{className:`h-dvh flex flex-col bg-background text-foreground overflow-hidden relative`,children:[d&&(0,H.jsx)(`div`,{className:`md:hidden fixed top-0 left-0 z-50 px-2 py-0.5 bg-primary/80 text-primary-foreground text-[10px] font-medium rounded-br`,children:d}),(0,H.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,H.jsx)(pm,{}),(0,H.jsx)(Op,{}),[...c].map(e=>(0,H.jsx)(`div`,{className:z(`flex-1 overflow-hidden pb-12 md:pb-0`,y!==e&&`hidden`),children:(0,H.jsx)(of,{projectName:e})},e))]}),(0,H.jsx)(_m,{onMenuPress:()=>r(!0),onProjectsPress:()=>s(!0)}),(0,H.jsx)(ym,{isOpen:n,onClose:()=>{r(!1),a(void 0)},initialTab:i}),(0,H.jsx)(xm,{isOpen:o,onClose:()=>s(!1)}),(0,H.jsx)(Pm,{open:h,onClose:_,initialQuery:g}),(0,H.jsx)(Fm,{}),(0,H.jsx)(Yt,{position:`bottom-left`,closeButton:!0,toastOptions:{className:`bg-surface border-border text-foreground`}})]})})}(0,gt.createRoot)(document.getElementById(`root`)).render((0,H.jsx)(V.StrictMode,{children:(0,H.jsx)(Im,{})}));export{Ve as A,Ce as B,ft as C,rt as D,at as E,Ae as F,xe as H,Oe as I,De as L,Le as M,Pe as N,Je as O,Me as P,Ee as R,ht as S,ot as T,_e as U,Se as V,Hd as _,Tf as a,zd as b,Of as c,hf as d,gf as f,ef as g,uf as h,Sf as i,Re as j,Ge as k,xf as l,mf as m,_p as n,Df as o,_f as p,sp as r,Ef as s,om as t,pf as u,Fd as v,dt as w,Vd as x,Bd as y,Te as z};
19
+ `,children:(0,H.jsx)(`div`,{className:`absolute opacity-0 group-hover/handle:opacity-70 transition-opacity text-foreground/50`,children:t?(0,H.jsx)(Ve,{className:`size-3`}):(0,H.jsx)(Be,{className:`size-3`})})})}var uf=L((e,t)=>({tree:[],loading:!1,error:null,expandedPaths:new Set,selectedFiles:[],fetchTree:async t=>{e({loading:!0,error:null});try{e({tree:await B.get(`${ce(t)}/files/tree?depth=3`),loading:!1})}catch(t){e({error:t instanceof Error?t.message:`Failed to load files`,loading:!1})}},toggleExpand:n=>{let r=new Set(t().expandedPaths);r.has(n)?r.delete(n):r.add(n),e({expandedPaths:r})},setExpanded:(n,r)=>{let i=new Set(t().expandedPaths);r?i.add(n):i.delete(n),e({expandedPaths:i})},toggleFileSelect:n=>{let r=t().selectedFiles;r.indexOf(n)>=0?e({selectedFiles:r.filter(e=>e!==n)}):e({selectedFiles:r.length>=2?[r[1],n]:[...r,n]})},clearSelection:()=>e({selectedFiles:[]}),reset:()=>e({tree:[],expandedPaths:new Set,error:null,selectedFiles:[]})}));function df({className:e,children:t,...n}){return(0,H.jsxs)(us,{"data-slot":`scroll-area`,className:z(`relative`,e),...n,children:[(0,H.jsx)(ds,{"data-slot":`scroll-area-viewport`,className:`size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:!block`,children:t}),(0,H.jsx)(ff,{}),(0,H.jsx)(fs,{})]})}function ff({className:e,orientation:t=`vertical`,...n}){return(0,H.jsx)(Ro,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:z(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-1.5 border-l border-l-transparent`,t===`horizontal`&&`h-1.5 flex-col border-t border-t-transparent`,e),...n,children:(0,H.jsx)(Yo,{"data-slot":`scroll-area-thumb`,className:`relative flex-1 rounded-full bg-border`})})}function pf({...e}){return(0,H.jsx)(Pa,{"data-slot":`context-menu`,...e})}function mf({...e}){return(0,H.jsx)(Fa,{"data-slot":`context-menu-trigger`,...e})}function hf({className:e,...t}){return(0,H.jsx)(Ia,{children:(0,H.jsx)(La,{"data-slot":`context-menu-content`,className:z(`z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...t})})}function gf({className:e,inset:t,variant:n=`default`,...r}){return(0,H.jsx)(Ra,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}function _f({className:e,...t}){return(0,H.jsx)(za,{"data-slot":`context-menu-separator`,className:z(`-mx-1 my-1 h-px bg-border`,e),...t})}var vf=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,yf=ae,bf=((e,t)=>n=>{if(t?.variants==null)return yf(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=vf(t)||vf(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return yf(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)})(`inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,xs:`h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-xs":`size-6 rounded-md [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function xf({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,H.jsx)(r?l:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:z(bf({variant:t,size:n,className:e})),...i})}function Sf({...e}){return(0,H.jsx)(Bn,{"data-slot":`dialog`,...e})}function Cf({...e}){return(0,H.jsx)(Vn,{"data-slot":`dialog-portal`,...e})}function wf({className:e,...t}){return(0,H.jsx)(Hn,{"data-slot":`dialog-overlay`,className:z(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function Tf({className:e,children:t,showCloseButton:n=!0,...r}){return(0,H.jsxs)(Cf,{"data-slot":`dialog-portal`,children:[(0,H.jsx)(wf,{}),(0,H.jsxs)(Un,{"data-slot":`dialog-content`,className:z(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background text-foreground p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg`,e),...r,children:[t,n&&(0,H.jsxs)(Kn,{"data-slot":`dialog-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,H.jsx)(ht,{}),(0,H.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function Ef({className:e,...t}){return(0,H.jsx)(`div`,{"data-slot":`dialog-header`,className:z(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function Df({className:e,showCloseButton:t=!1,children:n,...r}){return(0,H.jsxs)(`div`,{"data-slot":`dialog-footer`,className:z(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...r,children:[n,t&&(0,H.jsx)(Kn,{asChild:!0,children:(0,H.jsx)(xf,{variant:`outline`,children:`Close`})})]})}function Of({className:e,...t}){return(0,H.jsx)(Wn,{"data-slot":`dialog-title`,className:z(`text-lg leading-none font-semibold`,e),...t})}function kf({className:e,...t}){return(0,H.jsx)(Gn,{"data-slot":`dialog-description`,className:z(`text-sm text-muted-foreground`,e),...t})}function Af({action:e,node:t,projectName:n,onClose:r,onRefresh:i}){let[a,o]=(0,V.useState)(``),[s,c]=(0,V.useState)(!1),[l,u]=(0,V.useState)(null),d=(0,V.useRef)(null);(0,V.useEffect)(()=>{o(e===`rename`?t.name:``)},[e,t.name]),(0,V.useEffect)(()=>{let e=setTimeout(()=>d.current?.focus(),100);return()=>clearTimeout(e)},[]);async function f(e){if(a.trim()){c(!0),u(null);try{let o=t.type===`directory`?t.path:t.path.split(`/`).slice(0,-1).join(`/`),s=o?`${o}/${a.trim()}`:a.trim();await B.post(`${ce(n)}/files/create`,{path:s,type:e}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to create`)}finally{c(!1)}}}async function p(){if(!a.trim()||a.trim()===t.name){r();return}c(!0),u(null);try{let e=t.path.split(`/`).slice(0,-1).join(`/`),o=e?`${e}/${a.trim()}`:a.trim();await B.post(`${ce(n)}/files/rename`,{oldPath:t.path,newPath:o}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to rename`)}finally{c(!1)}}async function m(){c(!0),u(null);try{await B.del(`${ce(n)}/files/delete`,{path:t.path}),i(),r()}catch(e){u(e instanceof Error?e.message:`Failed to delete`)}finally{c(!1)}}function h(t){t.key===`Enter`&&(e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):e===`rename`&&p()),t.key===`Escape`&&r()}if(e===`delete`)return(0,H.jsx)(Sf,{open:!0,onOpenChange:e=>!e&&r(),children:(0,H.jsxs)(Tf,{children:[(0,H.jsxs)(Ef,{children:[(0,H.jsxs)(Of,{children:[`Delete `,t.type===`directory`?`Folder`:`File`]}),(0,H.jsxs)(kf,{children:[`Are you sure you want to delete`,` `,(0,H.jsx)(`span`,{className:`font-mono font-semibold`,children:t.name}),`?`,t.type===`directory`&&` This will delete all contents.`]})]}),l&&(0,H.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(xf,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,H.jsx)(xf,{variant:`destructive`,onClick:m,disabled:s,children:s?`Deleting...`:`Delete`})]})]})});let g=e===`new-file`?`New File`:e===`new-folder`?`New Folder`:`Rename`,_=e===`rename`?t.name:e===`new-file`?`filename.ts`:`folder-name`;return(0,H.jsx)(Sf,{open:!0,onOpenChange:e=>!e&&r(),children:(0,H.jsxs)(Tf,{children:[(0,H.jsxs)(Ef,{children:[(0,H.jsx)(Of,{children:g}),(0,H.jsx)(kf,{children:e===`rename`?`Rename "${t.name}" to:`:`Create in ${t.type===`directory`?t.path||`/`:t.path.split(`/`).slice(0,-1).join(`/`)||`/`}`})]}),(0,H.jsx)(O,{ref:d,value:a,onChange:e=>o(e.target.value),onKeyDown:h,placeholder:_,disabled:s}),l&&(0,H.jsx)(`p`,{className:`text-sm text-error`,children:l}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(xf,{variant:`outline`,onClick:r,disabled:s,children:`Cancel`}),(0,H.jsx)(xf,{onClick:()=>{e===`new-file`?f(`file`):e===`new-folder`?f(`directory`):p()},disabled:s||!a.trim(),children:s?`Saving...`:e===`rename`?`Rename`:`Create`})]})]})})}var jf={ts:Ae,tsx:Ae,js:Ae,jsx:Ae,py:Ae,rs:Ae,go:Ae,json:ke,md:Me,txt:Me,yaml:Ne,yml:Ne,html:Ae,css:Ae,scss:Ae};function Mf(e){return jf[e.split(`.`).pop()?.toLowerCase()??``]??Pe}function Nf({node:e,depth:t,projectName:n,onAction:r,onFileOpen:i}){let{expandedPaths:a,toggleExpand:o,selectedFiles:s,toggleFileSelect:c}=uf(),l=I(e=>e.openTab),u=a.has(e.path),d=e.type===`directory`,f=s.includes(e.path);function p(t){if(d){o(e.path);return}if(t.metaKey||t.ctrlKey){c(e.path);return}let r=e.name.split(`.`).pop()?.toLowerCase()??``;l({type:r===`db`||r===`sqlite`||r===`sqlite3`?`sqlite`:`editor`,title:e.name,metadata:{filePath:e.path,projectName:n},projectId:n,closable:!0}),i?.()}let m=d?u?Fe:Le:Mf(e.name),h=e.children?[...e.children].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1):[];return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(pf,{children:[(0,H.jsx)(mf,{asChild:!0,children:(0,H.jsxs)(`button`,{onClick:p,className:z(`flex items-center w-full gap-1.5 px-2 py-1 rounded-sm text-sm`,`min-h-[32px] hover:bg-surface-elevated transition-colors text-left`,`select-none`,f&&`bg-primary/15 ring-1 ring-primary/40`),style:{paddingLeft:`${t*16+8}px`},children:[d?u?(0,H.jsx)(Se,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,H.jsx)(Ce,{className:`size-3.5 shrink-0 text-text-subtle`}):(0,H.jsx)(`span`,{className:`w-3.5 shrink-0`}),(0,H.jsx)(m,{className:z(`size-4 shrink-0`,d?`text-primary`:`text-text-secondary`)}),(0,H.jsx)(`span`,{className:`truncate`,children:e.name})]})}),(0,H.jsxs)(hf,{children:[d&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(gf,{onClick:()=>r(`new-file`,e),children:`New File`}),(0,H.jsx)(gf,{onClick:()=>r(`new-folder`,e),children:`New Folder`}),(0,H.jsx)(_f,{})]}),(0,H.jsx)(gf,{onClick:()=>r(`rename`,e),children:`Rename`}),(0,H.jsx)(gf,{variant:`destructive`,onClick:()=>r(`delete`,e),children:`Delete`}),(0,H.jsx)(_f,{}),(0,H.jsx)(gf,{onClick:()=>r(`copy-path`,e),children:`Copy Path`}),!d&&s.length===2&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(_f,{}),(0,H.jsx)(gf,{onClick:()=>r(`compare-selected`,e),children:`Compare Selected`})]})]})]}),d&&u&&h.map(e=>(0,H.jsx)(Nf,{node:e,depth:t+1,projectName:n,onAction:r,onFileOpen:i},e.path))]})}function Pf({onFileOpen:e}={}){let{tree:t,loading:n,error:r,fetchTree:i,reset:a,selectedFiles:o,clearSelection:s}=uf(),c=Dd(e=>e.activeProject),l=I(e=>e.openTab),[u,d]=(0,V.useState)(null),f=(0,V.useCallback)(()=>{c&&i(c.name)},[c,i]);(0,V.useEffect)(()=>{c&&(a(),f())},[c?.name]),(0,V.useEffect)(()=>{let e=()=>{c&&i(c.name)};return window.addEventListener(`focus`,e),()=>window.removeEventListener(`focus`,e)},[c,i]);function p(e,t){if(e===`copy-path`){navigator.clipboard.writeText(t.path).catch(()=>{});return}if(e===`compare-selected`&&o.length===2){let e=o[0],t=o[1];l({type:`git-diff`,title:`Compare ${oe(e)} vs ${oe(t)}`,closable:!0,metadata:{projectName:c.name,file1:e,file2:t},projectId:c.name}),s();return}d({action:e,node:t})}if(!c)return(0,H.jsx)(`div`,{className:`p-3 text-xs text-text-subtle`,children:`Select a project to browse files.`});if(n&&t.length===0)return(0,H.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-xs text-text-secondary`,children:[(0,H.jsx)(Ge,{className:`size-3 animate-spin`}),`Loading files...`]});if(r)return(0,H.jsxs)(`div`,{className:`p-3 text-xs text-error`,children:[r,(0,H.jsx)(`button`,{onClick:f,className:`block mt-1 text-primary underline`,children:`Retry`})]});let m=[...t].sort((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(df,{className:`flex-1`,children:(0,H.jsxs)(`div`,{className:`py-1`,children:[m.map(t=>(0,H.jsx)(Nf,{node:t,depth:0,projectName:c.name,onAction:p,onFileOpen:e},t.path)),m.length===0&&(0,H.jsx)(`p`,{className:`p-3 text-xs text-text-subtle`,children:`Empty project.`})]})}),u&&(0,H.jsx)(Af,{action:u.action,node:u.node,projectName:c.name,onClose:()=>d(null),onRefresh:f})]})}function Ff({...e}){return(0,H.jsx)(bo,{"data-slot":`dropdown-menu`,...e})}function If({...e}){return(0,H.jsx)(xo,{"data-slot":`dropdown-menu-trigger`,...e})}function Lf({className:e,sideOffset:t=4,...n}){return(0,H.jsx)(So,{children:(0,H.jsx)(Co,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:z(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...n})})}function Rf({className:e,inset:t,variant:n=`default`,...r}){return(0,H.jsx)(wo,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:z(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...r})}var zf={M:`text-yellow-500`,A:`text-green-500`,D:`text-red-500`,R:`text-blue-500`,C:`text-purple-500`,"?":`text-gray-400`};function Bf(e){let t=[];for(let n of e){let e=n.path.split(`/`),r=t;for(let t=0;t<e.length;t++){let i=e[t],a=e.slice(0,t+1).join(`/`),o=t===e.length-1,s=r.find(e=>e.name===i);s||(s={name:i,fullPath:a,file:o?n:void 0,children:[]},r.push(s)),o&&(s.file=n),r=s.children}}return t}function Vf(e){let t=[];e.file&&t.push(e.file);for(let n of e.children)t.push(...Vf(n));return t}function Hf({metadata:e,tabId:t,onNavigate:n}){let r=e?.projectName,[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!0),[c,l]=(0,V.useState)(null),[u,d]=(0,V.useState)(``),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(null),{openTab:g}=I(),_=R(e=>e.gitStatusViewMode),v=R(e=>e.setGitStatusViewMode),y=(0,V.useCallback)(async()=>{if(r)try{s(!0),a(await B.get(`${ce(r)}/git/status`)),l(null)}catch(e){l(e instanceof Error?e.message:`Failed to fetch status`)}finally{s(!1)}},[r]);(0,V.useEffect)(()=>{y();let e=setInterval(y,5e3);return()=>clearInterval(e)},[y]);let b=async e=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/stage`,{files:e}),await y()}catch(e){l(e instanceof Error?e.message:`Stage failed`)}finally{p(!1)}}},x=async e=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/unstage`,{files:e}),await y()}catch(e){l(e instanceof Error?e.message:`Unstage failed`)}finally{p(!1)}}},S=async e=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/discard`,{files:e}),await y()}catch(e){l(e instanceof Error?e.message:`Discard failed`)}finally{p(!1)}}},C=async()=>{m&&(await S(m.files),h(null))},w=async()=>{if(!(!r||!u.trim()||!i?.staged.length)){p(!0);try{await B.post(`${ce(r)}/git/commit`,{message:u.trim()}),d(``),await y()}catch(e){l(e instanceof Error?e.message:`Commit failed`)}finally{p(!1)}}},T=async()=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/push`,{}),await y()}catch(e){l(e instanceof Error?e.message:`Push failed`)}finally{p(!1)}}},E=async()=>{if(r){p(!0);try{await B.post(`${ce(r)}/git/pull`,{}),await y()}catch(e){l(e instanceof Error?e.message:`Pull failed`)}finally{p(!1)}}},D=e=>{g({type:`git-diff`,title:oe(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},O=e=>{g({type:`editor`,title:oe(e.path),closable:!0,metadata:{projectName:r,filePath:e.path},projectId:r??null}),n?.()},k=(0,V.useMemo)(()=>[...i?.unstaged??[],...i?.untracked.map(e=>({path:e,status:`?`}))??[]],[i]);return r?o&&!i?(0,H.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-muted-foreground`,children:[(0,H.jsx)(Ge,{className:`size-5 animate-spin`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`Loading git status...`})]}):c&&!i?(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-2 text-destructive text-sm`,children:[(0,H.jsx)(`p`,{children:c}),(0,H.jsx)(xf,{variant:`outline`,size:`sm`,onClick:y,children:`Retry`})]}):(0,H.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:i?.current?`On: ${i.current}`:`Git Status`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(xf,{variant:_===`flat`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`flat`),title:`Flat view`,children:(0,H.jsx)(We,{className:`size-3.5`})}),(0,H.jsx)(xf,{variant:_===`tree`?`secondary`:`ghost`,size:`icon-xs`,onClick:()=>v(`tree`),title:`Tree view`,children:(0,H.jsx)(Ie,{className:`size-3.5`})}),(0,H.jsx)(xf,{variant:`ghost`,size:`icon-xs`,onClick:y,disabled:f,children:(0,H.jsx)(at,{className:o?`animate-spin`:``})})]})]}),c&&(0,H.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-destructive bg-destructive/10 shrink-0`,children:c}),(0,H.jsx)(df,{className:`flex-1 overflow-hidden`,children:(0,H.jsxs)(`div`,{className:`p-1.5 space-y-2 overflow-hidden`,children:[(0,H.jsx)(Wf,{title:`Staged Changes`,count:i?.staged.length??0,files:i?.staged??[],viewMode:_,actionIcon:(0,H.jsx)(Ye,{className:`size-3`}),actionAllIcon:(0,H.jsx)(Ye,{className:`size-3`}),actionTitle:`Unstage`,onAction:e=>x([e.path]),onActionAll:i?.staged.length?()=>x(i.staged.map(e=>e.path)):void 0,actionAllLabel:`Unstage All`,onFolderAction:e=>x(e.map(e=>e.path)),onClickFile:D,onOpenFile:O,disabled:f}),(0,H.jsx)(Wf,{title:`Changes`,count:k.length,files:k,viewMode:_,actionIcon:(0,H.jsx)(it,{className:`size-3`}),actionAllIcon:(0,H.jsx)(it,{className:`size-3`}),actionTitle:`Stage`,onAction:e=>b([e.path]),onActionAll:k.length?()=>b(k.map(e=>e.path)):void 0,actionAllLabel:`Stage All`,onFolderAction:e=>b(e.map(e=>e.path)),onClickFile:D,onOpenFile:O,disabled:f,showRevert:!0,onRevert:e=>h({label:e.path,files:[e.path]}),onFolderRevert:(e,t)=>h({label:`${t}/ (${e.length} files)`,files:e.map(e=>e.path)})})]})}),(0,H.jsxs)(`div`,{className:`border-t p-2 space-y-2 shrink-0`,children:[(0,H.jsx)(`textarea`,{className:`w-full h-16 px-3 py-2 text-base md:text-sm text-foreground bg-surface border border-border rounded-lg resize-none focus:outline-none focus:border-ring placeholder:text-muted-foreground`,placeholder:`Commit message...`,value:u,onChange:e=>d(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&w()}}),(0,H.jsx)(xf,{size:`sm`,className:`w-full`,disabled:f||!u.trim()||!i?.staged.length,onClick:w,children:f?(0,H.jsx)(Ge,{className:`size-3 animate-spin`}):`Commit (${i?.staged.length??0})`}),(0,H.jsxs)(`div`,{className:`flex gap-2`,children:[(0,H.jsxs)(xf,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:T,children:[(0,H.jsx)(_e,{className:`size-3`}),`Push`]}),(0,H.jsxs)(xf,{variant:`outline`,size:`sm`,className:`flex-1`,disabled:f,onClick:E,children:[(0,H.jsx)(me,{className:`size-3`}),`Pull`]})]})]}),(0,H.jsx)(Sf,{open:!!m,onOpenChange:e=>!e&&h(null),children:(0,H.jsxs)(Tf,{showCloseButton:!1,children:[(0,H.jsxs)(Ef,{children:[(0,H.jsx)(Of,{children:`Discard Changes`}),(0,H.jsxs)(kf,{children:[`Are you sure you want to discard all changes to`,` `,(0,H.jsx)(`code`,{className:`px-1 py-0.5 rounded bg-muted text-sm font-mono`,children:m?.label}),`? This action cannot be undone.`]})]}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(xf,{variant:`outline`,onClick:()=>h(null),children:`Cancel`}),(0,H.jsx)(xf,{variant:`destructive`,onClick:C,disabled:f,children:f?(0,H.jsx)(Ge,{className:`size-3 animate-spin`}):`Discard`})]})]})})]}):(0,H.jsx)(`div`,{className:`flex items-center justify-center h-full text-muted-foreground text-sm`,children:`No project selected.`})}function Uf({showRevert:e,onRevert:t,onAction:n,onOpenFile:r,actionIcon:i,actionTitle:a,disabled:o}){return(0,H.jsxs)(`div`,{className:`hidden md:flex absolute right-0 top-0 bottom-0 items-center gap-0.5 pl-6 pr-1 bg-gradient-to-l from-background from-70% to-transparent opacity-0 group-hover:opacity-100 transition-opacity`,children:[r&&(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-primary active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),r()},disabled:o,title:`Open file`,children:(0,H.jsx)(Me,{className:`size-3`})}),e&&t&&(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-destructive active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),t()},disabled:o,title:`Discard changes`,children:(0,H.jsx)(mt,{className:`size-3`})}),(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:e=>{e.stopPropagation(),n()},disabled:o,title:a,children:i})]})}function Wf({title:e,count:t,files:n,viewMode:r,actionIcon:i,actionAllIcon:a,actionTitle:o,onAction:s,onActionAll:c,actionAllLabel:l,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g}){return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between mb-0.5`,children:[(0,H.jsxs)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase`,children:[e,` (`,t,`)`]}),c&&t>0&&(0,H.jsx)(`button`,{type:`button`,className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-accent-foreground active:scale-95 transition-colors`,onClick:c,disabled:p,title:l,children:a})]}),n.length===0?(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground px-1`,children:`No changes`}):r===`flat`?(0,H.jsx)(`div`,{className:`w-full overflow-hidden`,children:n.map(e=>(0,H.jsx)(Gf,{file:e,actionIcon:i,actionTitle:o,onAction:s,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h},e.path))}):(0,H.jsx)(Kf,{files:n,actionIcon:i,actionTitle:o,onAction:s,onFolderAction:u,onClickFile:d,onOpenFile:f,disabled:p,showRevert:m,onRevert:h,onFolderRevert:g})]})}function Gf({file:e,actionIcon:t,actionTitle:n,onAction:r,onClickFile:i,onOpenFile:a,disabled:o,showRevert:s,onRevert:c,displayName:l}){let u=(0,H.jsxs)(`div`,{className:`group relative flex items-center gap-1 hover:bg-muted/50 rounded pl-1 py-px w-full min-w-0`,children:[(0,H.jsx)(`span`,{className:`text-xs font-mono w-4 text-center shrink-0 ${zf[e.status]??``}`,children:e.status}),(0,H.jsx)(`button`,{type:`button`,className:`hidden md:block flex-1 text-left text-xs font-mono truncate hover:underline min-w-0`,onClick:()=>i(e),title:e.path,children:l??e.path}),(0,H.jsx)(`span`,{className:`md:hidden flex-1 text-left text-xs font-mono truncate min-w-0`,children:l??e.path}),(0,H.jsx)(Uf,{showRevert:s,onRevert:c?()=>c(e):void 0,onOpenFile:a?()=>a(e):void 0,onAction:()=>r(e),actionIcon:t,actionTitle:n,disabled:o})]});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`hidden md:block`,children:u}),(0,H.jsx)(`div`,{className:`md:hidden`,children:(0,H.jsxs)(Ff,{children:[(0,H.jsx)(If,{asChild:!0,children:u}),(0,H.jsxs)(Lf,{align:`start`,className:`min-w-40`,children:[(0,H.jsx)(Rf,{onClick:()=>i(e),children:`View Diff`}),a&&(0,H.jsx)(Rf,{onClick:()=>a(e),children:`Open File`}),(0,H.jsx)(Rf,{onClick:()=>r(e),disabled:o,children:n}),s&&c&&(0,H.jsx)(Rf,{className:`text-destructive focus:text-destructive`,onClick:()=>c(e),disabled:o,children:`Discard Changes`})]})]})})]})}function Kf({files:e,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u}){let d=(0,V.useMemo)(()=>Bf(e),[e]);return(0,H.jsx)(`div`,{children:d.map((e,f)=>(0,H.jsx)(qf,{node:e,depth:0,isLast:f===d.length-1,actionIcon:t,actionTitle:n,onAction:r,onFolderAction:i,onClickFile:a,onOpenFile:o,disabled:s,showRevert:c,onRevert:l,onFolderRevert:u},e.fullPath))})}function qf({node:e,depth:t,isLast:n,actionIcon:r,actionTitle:i,onAction:a,onFolderAction:o,onClickFile:s,onOpenFile:c,disabled:l,showRevert:u,onRevert:d,onFolderRevert:f}){let[p,m]=(0,V.useState)(!0),h=e.children.length>0&&!e.file,g=t*12-6,_=`absolute border-dashed border-border`;if(e.file)return(0,H.jsxs)(`div`,{className:`relative`,style:{paddingLeft:t*12},children:[t>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`${_} border-l`,style:{left:g,top:0,bottom:n?`50%`:0}}),(0,H.jsx)(`div`,{className:`${_} border-t`,style:{left:g,top:`50%`,width:6}})]}),(0,H.jsx)(Gf,{file:e.file,displayName:e.name,actionIcon:r,actionTitle:i,onAction:a,onClickFile:s,onOpenFile:c,disabled:l,showRevert:u,onRevert:d})]});if(h){let h=Vf(e);return(0,H.jsxs)(`div`,{className:`relative`,children:[t>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`${_} border-l`,style:{left:g,top:0,...n?{height:13}:{bottom:0}}}),(0,H.jsx)(`div`,{className:`${_} border-t`,style:{left:g,top:13,width:8}})]}),(()=>{let n=(0,H.jsxs)(`div`,{className:`group relative flex items-center hover:bg-muted/50 rounded py-0.5`,style:{paddingLeft:t*12+2},children:[(0,H.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 flex-1 min-w-0 text-xs font-mono text-muted-foreground`,onClick:()=>m(!p),children:[p?(0,H.jsx)(Se,{className:`size-3.5 shrink-0`}):(0,H.jsx)(Ce,{className:`size-3.5 shrink-0`}),(0,H.jsx)(`span`,{className:`truncate font-semibold`,children:e.name}),(0,H.jsxs)(`span`,{className:`text-[10px] opacity-60 shrink-0`,children:[`(`,h.length,`)`]})]}),(0,H.jsx)(Uf,{showRevert:u,onRevert:f?()=>f(h,e.fullPath):void 0,onAction:()=>o?.(h),actionIcon:r,actionTitle:`${i} ${e.name}/`,disabled:l})]});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`hidden md:block`,children:n}),(0,H.jsx)(`div`,{className:`md:hidden`,children:(0,H.jsxs)(Ff,{children:[(0,H.jsx)(If,{asChild:!0,children:n}),(0,H.jsxs)(Lf,{align:`start`,className:`min-w-40`,children:[(0,H.jsxs)(Rf,{onClick:()=>o?.(h),disabled:l,children:[i,` `,e.name,`/`]}),f&&(0,H.jsx)(Rf,{className:`text-destructive focus:text-destructive`,onClick:()=>f(h,e.fullPath),disabled:l,children:`Discard Changes`})]})]})})]})})(),p&&(0,H.jsx)(`div`,{children:e.children.map((n,p)=>(0,H.jsx)(qf,{node:n,depth:t+1,isLast:p===e.children.length-1,actionIcon:r,actionTitle:i,onAction:a,onFolderAction:o,onClickFile:s,onOpenFile:c,disabled:l,showRevert:u,onRevert:d,onFolderRevert:f},n.fullPath))})]})}return null}function Jf({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,H.jsx)(Uc,{"data-slot":`separator`,decorative:n,orientation:t,className:z(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}function Yf({className:e,...t}){return(0,H.jsx)(Do,{"data-slot":`label`,className:z(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Xf({...e}){return(0,H.jsx)(Ec,{"data-slot":`select`,...e})}function Zf({...e}){return(0,H.jsx)(Oc,{"data-slot":`select-value`,...e})}function Qf({className:e,size:t=`default`,children:n,...r}){return(0,H.jsxs)(Dc,{"data-slot":`select-trigger`,"data-size":t,className:z(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,H.jsx)(kc,{asChild:!0,children:(0,H.jsx)(Se,{className:`size-4 opacity-50`})})]})}function $f({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,H.jsx)(Ac,{children:(0,H.jsxs)(jc,{"data-slot":`select-content`,className:z(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,H.jsx)(tp,{}),(0,H.jsx)(Mc,{className:z(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,H.jsx)(np,{})]})})}function ep({className:e,children:t,...n}){return(0,H.jsxs)(Nc,{"data-slot":`select-item`,className:z(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,H.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,H.jsx)(Fc,{children:(0,H.jsx)(xe,{className:`size-4`})})}),(0,H.jsx)(Pc,{children:t})]})}function tp({className:e,...t}){return(0,H.jsx)(Ic,{"data-slot":`select-scroll-up-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,H.jsx)(we,{className:`size-4`})})}function np({className:e,...t}){return(0,H.jsx)(Lc,{"data-slot":`select-scroll-down-button`,className:z(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,H.jsx)(Se,{className:`size-4`})})}function rp(){return B.get(`/api/settings/ai`)}function ip(e){return B.put(`/api/settings/ai`,e)}var ap=[{value:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`},{value:`claude-opus-4-6`,label:`Claude Opus 4.6`},{value:`claude-haiku-4-5`,label:`Claude Haiku 4.5`}],op=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`}];function sp({compact:e}={}){let[t,n]=(0,V.useState)(null),[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(null),[s,c]=(0,V.useState)(0);(0,V.useEffect)(()=>{rp().then(n).catch(e=>o(e.message))},[]);let l=t?.default_provider??`claude`,u=t?.providers[l],d=async(e,r)=>{if(t){i(!0),o(null);try{n(await ip({providers:{[l]:{[e]:r}}})),c(e=>e+1)}catch(e){o(e.message)}finally{i(!1)}}},f=e?`text-[11px]`:`text-sm`,p=e?`text-xs`:`text-sm`,m=e?`space-y-2`:`space-y-4`,h=e?`space-y-1.5`:`space-y-3`,g=e?`space-y-1`:`space-y-1.5`;return t?(0,H.jsxs)(`div`,{className:m,children:[(0,H.jsx)(`h3`,{className:`${p} font-medium text-text-secondary`,children:`AI Provider`}),(0,H.jsxs)(`div`,{className:h,children:[(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-model`,className:e?f:void 0,children:`Model`}),(0,H.jsxs)(Xf,{value:u?.model??`claude-sonnet-4-6`,onValueChange:e=>d(`model`,e),children:[(0,H.jsx)(Qf,{id:`ai-model`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,H.jsx)(Zf,{})}),(0,H.jsx)($f,{children:ap.map(e=>(0,H.jsx)(ep,{value:e.value,children:e.label},e.value))})]})]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-effort`,className:e?f:void 0,children:`Effort`}),(0,H.jsxs)(Xf,{value:u?.effort??`high`,onValueChange:e=>d(`effort`,e),children:[(0,H.jsx)(Qf,{id:`ai-effort`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,H.jsx)(Zf,{})}),(0,H.jsx)($f,{children:op.map(e=>(0,H.jsx)(ep,{value:e.value,children:e.label},e.value))})]})]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-max-turns`,className:e?f:void 0,children:`Max Turns (1-500)`}),(0,H.jsx)(O,{id:`ai-max-turns`,type:`number`,min:1,max:500,defaultValue:u?.max_turns??100,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);isNaN(t)||d(`max_turns`,t)}},`turns-${s}`)]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-budget`,className:e?f:void 0,children:`Max Budget (USD)`}),(0,H.jsx)(O,{id:`ai-budget`,type:`number`,step:.1,min:.01,max:50,defaultValue:u?.max_budget_usd??``,placeholder:`No limit`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseFloat(e.target.value);d(`max_budget_usd`,isNaN(t)?void 0:t)}},`budget-${s}`)]}),(0,H.jsxs)(`div`,{className:g,children:[(0,H.jsx)(Yf,{htmlFor:`ai-thinking`,className:e?f:void 0,children:`Thinking Budget (tokens)`}),(0,H.jsx)(O,{id:`ai-thinking`,type:`number`,min:0,defaultValue:u?.thinking_budget_tokens??``,placeholder:`Disabled`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);d(`thinking_budget_tokens`,isNaN(t)?void 0:t)}},`thinking-${s}`)]})]}),r&&(0,H.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Saving...`}),a&&(0,H.jsx)(`p`,{className:`text-xs text-red-500`,children:a})]}):(0,H.jsxs)(`div`,{className:h,children:[(0,H.jsx)(`h3`,{className:`${p} font-medium text-text-secondary`,children:`AI Provider`}),(0,H.jsx)(`p`,{className:`${f} text-text-subtle`,children:a?`Error: ${a}`:`Loading...`})]})}var cp=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],lp=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function up({actionId:e,combo:t,locked:n}){let[r,i]=(0,V.useState)(!1),a=Vd(e=>e.setBinding),o=(0,V.useRef)(null),s=(0,V.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){i(!1);return}let n=Bd(t);n&&(a(e,n),i(!1))},[e,a]);return(0,V.useEffect)(()=>{if(r)return document.addEventListener(`keydown`,s,!0),()=>document.removeEventListener(`keydown`,s,!0)},[r,s]),(0,V.useEffect)(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&i(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),n?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-border bg-muted px-2 py-0.5 text-[11px] font-mono text-muted-foreground`,children:[(0,H.jsx)(Ke,{className:`size-2.5`}),zd(t)]}):r?(0,H.jsx)(`button`,{ref:o,className:`inline-flex items-center rounded border-2 border-primary bg-primary/10 px-2 py-0.5 text-[11px] font-mono text-primary animate-pulse`,children:`Press keys...`}):(0,H.jsx)(`button`,{ref:o,onClick:()=>i(!0),className:`inline-flex items-center rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-mono text-foreground hover:border-primary hover:bg-primary/5 transition-colors cursor-pointer`,title:`Click to change shortcut`,children:zd(t)})}function dp(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:i}=Vd();return(0,H.jsxs)(`div`,{className:`space-y-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(i).length>0&&(0,H.jsxs)(xf,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,H.jsx)(r,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,H.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 px-2.5 py-2`,children:[(0,H.jsx)(pt,{className:`size-3.5 text-amber-500 shrink-0 mt-0.5`}),(0,H.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,lp.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),cp.map(n=>{let a=Fd.filter(e=>e.category===n.key);return a.length===0?null:(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,H.jsx)(`div`,{className:`space-y-0.5`,children:a.map(n=>{let a=e(n.id),o=n.id in i;return(0,H.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,H.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,H.jsx)(up,{actionId:n.id,combo:a,locked:n.locked}),o&&!n.locked&&(0,H.jsx)(`button`,{onClick:()=>t(n.id),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,H.jsx)(r,{className:`size-3`})})]})]},n.id)})})]},n.key)})]})}function fp(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 pp(){let[e,t]=(0,V.useState)(`default`),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(!1),[o,s]=(0,V.useState)(null);return(0,V.useEffect)(()=>{`Notification`in window&&t(Notification.permission),r(localStorage.getItem(`ppm-push-subscribed`)===`true`)},[]),{permission:e,isSubscribed:n,loading:i,error:o,subscribe:(0,V.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=le();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:fp(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,V.useCallback)(async()=>{a(!0);try{let e=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(e){let t={"Content-Type":`application/json`},n=le();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 mp=[{value:`light`,label:`Light`,icon:ut},{value:`dark`,label:`Dark`,icon:Ze},{value:`system`,label:`System`,icon:Xe}],hp=`PushManager`in window&&`serviceWorker`in navigator,gp=/iPhone|iPad/.test(navigator.userAgent)&&!window.matchMedia(`(display-mode: standalone)`).matches;function _p(){let{theme:e,setTheme:t}=R(),{permission:n,isSubscribed:r,loading:i,error:a,subscribe:o,unsubscribe:s}=pp();return(0,H.jsx)(`div`,{className:`h-full w-full overflow-auto`,children:(0,H.jsxs)(`div`,{className:`p-3 space-y-4`,children:[(0,H.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Theme`}),(0,H.jsx)(`div`,{className:`flex gap-1.5`,children:mp.map(n=>{let r=n.icon;return(0,H.jsxs)(xf,{variant:e===n.value?`default`:`outline`,size:`sm`,onClick:()=>t(n.value),className:z(`flex-1 gap-1.5 text-xs h-8`,e===n.value&&`ring-2 ring-primary`),children:[(0,H.jsx)(r,{className:`size-3.5`}),n.label]},n.value)})})]}),(0,H.jsx)(Jf,{}),(0,H.jsx)(sp,{}),(0,H.jsx)(Jf,{}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Notifications`}),hp?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r?(0,H.jsx)(ye,{className:`size-3.5`}):(0,H.jsx)(ve,{className:`size-3.5`}),(0,H.jsx)(`span`,{className:`text-xs`,children:`Push notifications`})]}),(0,H.jsx)(xf,{variant:r?`default`:`outline`,size:`sm`,className:`h-7 text-xs`,disabled:i||n===`denied`,onClick:()=>r?s():o(),children:i?`...`:r?`On`:`Off`})]}),r&&(0,H.jsx)(xf,{variant:`outline`,size:`sm`,className:`h-7 text-xs w-full`,onClick:()=>{new Notification(`PPM Test`,{body:`Push notifications are working!`})},children:`Test notification`}),a&&(0,H.jsx)(`p`,{className:`text-[11px] text-destructive`,children:a}),n===`denied`&&(0,H.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Notifications blocked. Enable in browser settings.`}),gp&&(0,H.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`On iOS, install PPM to Home Screen for push notifications.`})]}):(0,H.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Push notifications not supported in this browser.`})]}),(0,H.jsx)(Jf,{}),(0,H.jsx)(dp,{}),(0,H.jsx)(Jf,{}),(0,H.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,H.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`About`}),(0,H.jsx)(`p`,{className:`text-xs text-text-secondary`,children:`PPM — Personal Project Manager`}),(0,H.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`A mobile-first web IDE for managing your projects.`})]})]})})}function vp({connections:e,cachedTables:t,onOpenTable:n,onRefreshTables:r,onEdit:i,onDelete:a}){let[o,s]=(0,V.useState)(new Set),[c,l]=(0,V.useState)(new Set([`__ungrouped__`])),[u,d]=(0,V.useState)(new Set),[f,p]=(0,V.useState)(new Map),m=e=>{s(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},h=e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},g=async e=>{d(t=>new Set(t).add(e));try{await r(e)}finally{d(t=>{let n=new Set(t);return n.delete(e),n})}},_={};for(let t of e){let e=t.group_name??`__ungrouped__`;(_[e]??=[]).push(t)}let v=Object.keys(_).sort((e,t)=>e===`__ungrouped__`?1:t===`__ungrouped__`?-1:e.localeCompare(t));return e.length===0?(0,H.jsxs)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:[`No connections yet.`,(0,H.jsx)(`br`,{}),`Click + to add one.`]}):(0,H.jsx)(`div`,{className:`py-1`,children:v.map(e=>{let r=c.has(e),s=e===`__ungrouped__`?`Ungrouped`:e,l=_[e],d=v.length>1||e!==`__ungrouped__`;return(0,H.jsxs)(`div`,{children:[d&&(0,H.jsxs)(`button`,{onClick:()=>h(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,H.jsx)(Se,{className:`size-3`}):(0,H.jsx)(Ce,{className:`size-3`}),s]}),r&&(0,H.jsx)(`div`,{className:d?`ml-[11px] border-l border-dashed border-border`:``,children:l.map(e=>{let r=o.has(e.id),s=t.get(e.id)??[],c=u.has(e.id);return(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:z(`group flex items-center gap-1 py-1 hover:bg-surface-elevated transition-colors`,d?`pl-3 pr-2`:`px-2`),children:[(0,H.jsx)(`button`,{onClick:()=>{m(e.id),!o.has(e.id)&&s.length===0&&g(e.id)},className:`shrink-0 text-text-subtle hover:text-foreground transition-colors`,children:r?(0,H.jsx)(Se,{className:`size-3`}):(0,H.jsx)(Ce,{className:`size-3`})}),(0,H.jsx)(`span`,{className:`shrink-0 size-2 rounded-full border border-border`,style:{backgroundColor:e.color??`transparent`}}),(0,H.jsx)(`button`,{className:`flex-1 text-left text-xs truncate hover:text-primary transition-colors`,onClick:()=>{m(e.id),!o.has(e.id)&&s.length===0&&g(e.id)},children:e.name}),(0,H.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,H.jsx)(`span`,{title:`Readonly`,children:(0,H.jsx)(Ke,{className:`shrink-0 size-2.5 text-text-subtle`,"aria-label":`Readonly`})}),(0,H.jsxs)(`div`,{className:`hidden group-hover:flex items-center gap-0.5 shrink-0`,children:[(0,H.jsx)(`button`,{onClick:()=>g(e.id),disabled:c,className:`p-0.5 text-text-subtle hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,H.jsx)(at,{className:z(`size-3`,c&&`animate-spin`)})}),(0,H.jsx)(`button`,{onClick:()=>i(e),className:`p-0.5 text-text-subtle hover:text-foreground transition-colors`,title:`Edit`,children:(0,H.jsx)(rt,{className:`size-3`})}),(0,H.jsx)(`button`,{onClick:()=>a(e.id),className:`p-0.5 text-text-subtle hover:text-red-500 transition-colors`,title:`Delete`,children:(0,H.jsx)(ft,{className:`size-3`})})]})]}),r&&(0,H.jsxs)(`div`,{className:`ml-[11px] border-l border-dashed border-border pl-3`,children:[c&&s.length===0&&(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`Loading…`}),!c&&s.length===0&&(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`No tables cached`}),s.length>0&&(0,H.jsx)(bp,{connId:e.id,tables:s,filter:f.get(e.id)??``,onFilterChange:t=>p(n=>new Map(n).set(e.id,t)),onOpenTable:(t,r)=>n(e,t,r)})]})]},e.id)})})]},e)})})}var yp=200;function bp({connId:e,tables:t,filter:n,onFilterChange:r,onOpenTable:i}){let a=(0,V.useMemo)(()=>{if(!n)return t;let e=n.toLowerCase();return t.filter(t=>t.tableName.toLowerCase().includes(e))},[t,n]);return(0,H.jsxs)(`div`,{children:[t.length>5&&(0,H.jsxs)(`div`,{className:`flex items-center gap-1 px-1 py-0.5`,children:[(0,H.jsx)(ot,{className:`size-2.5 text-text-subtle shrink-0`}),(0,H.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,H.jsxs)(`div`,{className:`overflow-y-auto`,style:{maxHeight:yp},children:[a.map(t=>(0,H.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,H.jsx)(Oe,{className:`size-2.5 shrink-0 text-text-subtle`}),(0,H.jsx)(`span`,{className:`truncate`,children:t.tableName})]},`${e}-${t.schemaName}.${t.tableName}`)),n&&a.length===0&&(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle px-2 py-1`,children:`No match`})]})]})}var xp=[`#ef4444`,`#f97316`,`#eab308`,`#22c55e`,`#06b6d4`,`#3b82f6`,`#8b5cf6`,`#ec4899`,`#6b7280`,`#000000`];function Sp({value:e,onChange:t}){return(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>t(null),className:z(`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,H.jsx)(`span`,{className:`absolute inset-0 flex items-center justify-center text-[8px] text-text-subtle`,children:`×`})}),xp.map(n=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:z(`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,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`div`,{className:`size-6 rounded-full border border-border shrink-0`,style:{backgroundColor:e??`transparent`}}),(0,H.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 Cp({open:e,onClose:t,connection:n,onSave:r,onUpdate:i,onTest:a}){let o=!!n,[s,c]=(0,V.useState)({name:``,type:`postgres`,path:``,connectionString:``,groupName:``,color:null,readonly:!0}),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)(null),[p,m]=(0,V.useState)(!1),[h,g]=(0,V.useState)(null);(0,V.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,H.jsx)(Sf,{open:e,onOpenChange:e=>{e||t()},children:(0,H.jsxs)(Tf,{className:`max-w-md`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:o?`Edit Connection`:`Add Connection`})}),(0,H.jsxs)(`div`,{className:`space-y-3 py-1`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Name *`}),(0,H.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Type`}),(0,H.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,H.jsx)(`option`,{value:`postgres`,children:`PostgreSQL`}),(0,H.jsx)(`option`,{value:`sqlite`,children:`SQLite`})]})]}),s.type===`postgres`?(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Connection String *`}),(0,H.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`File Path *`}),(0,H.jsx)(`input`,{value:s.path,onChange:e=>_(`path`,e.target.value),placeholder:`/path/to/database.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Group`}),(0,H.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,H.jsxs)(`div`,{children:[(0,H.jsx)(`label`,{className:`text-xs font-medium text-text-secondary mb-1 block`,children:`Tab Color`}),(0,H.jsx)(Sp,{value:s.color,onChange:e=>_(`color`,e)})]}),o&&(0,H.jsxs)(`div`,{className:`flex items-center justify-between py-1`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`text-xs font-medium`,children:`Readonly`}),(0,H.jsx)(`p`,{className:`text-[10px] text-text-subtle`,children:`Block non-SELECT queries (AI protection)`})]}),(0,H.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,H.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,H.jsx)(`p`,{className:`text-xs ${d.ok?`text-green-500`:`text-red-500`}`,children:d.ok?`✓ Connection successful`:`✗ ${d.error}`}),h&&(0,H.jsx)(`p`,{className:`text-xs text-red-500`,children:h})]}),(0,H.jsxs)(Df,{children:[o&&(0,H.jsx)(xf,{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,H.jsx)(xf,{variant:`outline`,size:`sm`,onClick:t,children:`Cancel`}),(0,H.jsx)(xf,{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 wp(){let[e,t]=(0,V.useState)([]),[n,r]=(0,V.useState)(!0),[i,a]=(0,V.useState)(new Map),o=(0,V.useCallback)(async()=>{try{t(await B.get(`/api/db/connections`))}catch{}finally{r(!1)}},[]);return(0,V.useEffect)(()=>{o()},[o]),{connections:e,loading:n,cachedTables:i,createConnection:(0,V.useCallback)(async e=>{let n=await B.post(`/api/db/connections`,e);return t(e=>[...e,n]),n},[]),updateConnection:(0,V.useCallback)(async(e,n)=>{let r=await B.put(`/api/db/connections/${e}`,n);t(t=>t.map(t=>t.id===e?r:t))},[]),deleteConnection:(0,V.useCallback)(async e=>{await B.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,V.useCallback)(async e=>B.post(`/api/db/connections/${e}/test`),[]),refreshTables:(0,V.useCallback)(async e=>{let t=(await B.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))},[])}}function Tp(){let{connections:e,loading:t,cachedTables:n,createConnection:r,updateConnection:i,deleteConnection:a,testConnection:o,refreshTables:s}=wp(),c=I(e=>e.openTab),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)(null);return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-semibold text-text-subtle uppercase tracking-wider`,children:`Database`}),(0,H.jsx)(`button`,{onClick:()=>u(!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,H.jsx)(it,{className:`size-3.5`})})]}),(0,H.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:t?(0,H.jsx)(`p`,{className:`px-4 py-6 text-xs text-text-subtle text-center`,children:`Loading…`}):(0,H.jsx)(vp,{connections:e,cachedTables:n,onOpenTable:(e,t,n)=>{c({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:f,onDelete:async e=>{confirm(`Delete this connection?`)&&await a(e)}})}),(0,H.jsx)(Cp,{open:l,onClose:()=>u(!1),onSave:async e=>{let t=await r(e);t&&s(t.id).catch(()=>{})},onTest:()=>Promise.resolve({ok:!1,error:`Save connection first`})}),d&&(0,H.jsx)(Cp,{open:!!d,onClose:()=>f(null),connection:d,onUpdate:async(e,t)=>{await i(e,t)},onTest:e=>o(e)})]})}var Ep=[{id:`explorer`,label:`Explorer`,icon:Fe},{id:`git`,label:`Git`,icon:Re},{id:`database`,label:`Database`,icon:Oe},{id:`settings`,label:`Settings`,icon:st}];function Dp({onResize:e}){let t=(0,V.useRef)(!1);return(0,H.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,V.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,V.useCallback)(n=>{t.current&&e(n.clientX-48)},[e]),onPointerUp:(0,V.useCallback)(e=>{t.current=!1,e.currentTarget.releasePointerCapture(e.pointerId),document.body.style.cursor=``,document.body.style.userSelect=``},[])})}function Op(){let{activeProject:e}=Dd(),t=R(e=>e.sidebarCollapsed),n=R(e=>e.sidebarWidth),r=R(e=>e.toggleSidebar),i=R(e=>e.setSidebarWidth),a=R(e=>e.sidebarActiveTab),o=R(e=>e.setSidebarActiveTab);return t?(0,H.jsx)(`aside`,{className:`hidden md:flex flex-col w-10 min-w-10 bg-background border-r border-border`,children:(0,H.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,H.jsx)(nt,{className:`size-4`})})}):(0,H.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,H.jsxs)(`div`,{className:`flex items-center h-[41px] border-b border-border shrink-0`,children:[Ep.map(e=>{let t=e.icon;return(0,H.jsx)(`button`,{onClick:()=>o(e.id),className:z(`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,H.jsx)(t,{className:`size-3.5`,title:e.label})},e.id)}),(0,H.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,H.jsx)(tt,{className:`size-3.5`})})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(e?(0,H.jsx)(Pf,{}):(0,H.jsx)(`div`,{className:`flex items-center justify-center h-24 p-4`,children:(0,H.jsx)(`p`,{className:`text-xs text-text-subtle text-center`,children:`Select a project to browse files`})})),a===`git`&&(0,H.jsx)(Hf,{metadata:{projectName:e?.name}}),a===`database`&&(0,H.jsx)(Tp,{}),a===`settings`&&(0,H.jsx)(_p,{})]}),(0,H.jsx)(Dp,{onResize:i})]})}var kp=Object.defineProperty,Ap=Object.getOwnPropertySymbols,jp=Object.prototype.hasOwnProperty,Mp=Object.prototype.propertyIsEnumerable,Np=(e,t,n)=>t in e?kp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pp=(e,t)=>{for(var n in t||={})jp.call(t,n)&&Np(e,n,t[n]);if(Ap)for(var n of Ap(t))Mp.call(t,n)&&Np(e,n,t[n]);return e},Fp=(e,t)=>{var n={};for(var r in e)jp.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ap)for(var r of Ap(e))t.indexOf(r)<0&&Mp.call(e,r)&&(n[r]=e[r]);return n},Ip;(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})(Ip||={}),(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||={})})(Ip||={}),(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||={})})(Ip||={});var Lp=Ip,Rp={L:Lp.QrCode.Ecc.LOW,M:Lp.QrCode.Ecc.MEDIUM,Q:Lp.QrCode.Ecc.QUARTILE,H:Lp.QrCode.Ecc.HIGH},zp=128,Bp=`L`,Vp=`#FFFFFF`,Hp=`#000000`,Up=!1,Wp=1,Gp=4,Kp=0,qp=.1;function Jp(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 Yp(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 Xp(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*qp),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 Zp(e,t){return t==null?e?Gp:Kp:Math.max(Math.floor(t),0)}function Qp({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=V.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...Lp.QrSegment.makeSegments(t)),e),[]);return Lp.QrCode.encodeSegments(r,Rp[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=V.useMemo(()=>{let e=c.getModules(),t=Zp(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:Xp(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var $p=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),em=V.forwardRef(function(e,t){let n=e,{value:r,size:i=zp,level:a=Bp,bgColor:o=Vp,fgColor:s=Hp,includeMargin:c=Up,minVersion:l=Wp,boostLevel:u,marginSize:d,imageSettings:f}=n,p=Fp(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=Fp(p,[`style`]),g=f?.src,_=V.useRef(null),v=V.useRef(null),y=V.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=V.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=Qp({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});V.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=Yp(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,$p?t.fill(new Path2D(Jp(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)}}),V.useEffect(()=>{x(!1)},[g]);let E=Pp({height:i,width:i},m),D=null;return g!=null&&(D=V.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),V.createElement(V.Fragment,null,V.createElement(`canvas`,Pp({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});em.displayName=`QRCodeCanvas`;var tm=V.forwardRef(function(e,t){let n=e,{value:r,size:i=zp,level:a=Bp,bgColor:o=Vp,fgColor:s=Hp,includeMargin:c=Up,minVersion:l=Wp,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=Fp(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=Qp({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=Yp(g,v.excavation)),b=V.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=Jp(y,h);return V.createElement(`svg`,Pp({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&V.createElement(`title`,null,d),V.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),V.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});tm.displayName=`QRCodeSVG`;var nm=`hienlh/ppm`;async function rm(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 B.get(`${ce(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(`
20
+ `)}function im(e){let t=`https://github.com/${nm}/issues/new?title=bug%3A%20&body=${encodeURIComponent(e)}`;window.open(t,`_blank`)}async function am(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function om(e,t){rm(e,t).then(e=>{window.dispatchEvent(new CustomEvent(`open-bug-report`,{detail:e}))})}var sm=[`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 cm(e,t){return e??sm[t%sm.length]}function lm(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 um({onSuccess:e,onCancel:t,footerClassName:n}){let{addProject:r}=Dd(),[i,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)([]),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(!1),[g,_]=(0,V.useState)(``),v=(0,V.useRef)(null),y=(0,V.useRef)(null);(0,V.useEffect)(()=>{if(v.current&&clearTimeout(v.current),!i.trim()){l([]),d(!1);return}v.current=setTimeout(async()=>{p(!0);try{l(await B.get(`/api/projects/suggest-dirs?q=${encodeURIComponent(i)}`)??[]),d(!0)}catch{l([])}finally{p(!1)}},250)},[i]),(0,V.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,H.jsxs)(`form`,{onSubmit:x,className:`flex flex-col gap-3`,children:[(0,H.jsxs)(`div`,{ref:y,className:`relative`,children:[(0,H.jsx)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:`Project path`}),(0,H.jsxs)(`div`,{className:`relative flex items-center`,children:[(0,H.jsx)(Fe,{className:`absolute left-2.5 size-3.5 text-text-subtle pointer-events-none`}),(0,H.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,H.jsx)(Ge,{className:`absolute right-2.5 size-3.5 text-text-subtle animate-spin`})]}),u&&c.length>0&&(0,H.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,H.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,H.jsx)(`span`,{className:`text-sm font-medium truncate w-full`,children:e.name}),(0,H.jsx)(`span`,{className:`text-xs text-text-subtle truncate w-full`,children:e.path})]},e.path))})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`label`,{className:`block text-xs font-medium text-foreground mb-1`,children:[`Display name `,(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`(optional)`})]}),(0,H.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,H.jsx)(`p`,{className:`text-xs text-destructive`,children:g}),(0,H.jsxs)(`div`,{className:z(`flex justify-end gap-2 pt-1`,n),children:[(0,H.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,H.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 dm({name:e,color:t,active:n,allNames:r}){let i=lm(e,r);return(0,H.jsx)(`div`,{className:z(`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})}function fm({current:e,onChange:t}){return(0,H.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:sm.map(n=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>t(n),className:z(`size-8 rounded-full border-2 transition-all`,e===n?`border-primary scale-110`:`border-transparent hover:scale-105`),style:{background:n}},n))})}function pm(){let{projects:e,activeProject:t,setActiveProject:n,setProjectColor:r,reorderProjects:i,renameProject:a,deleteProject:o,customOrder:s}=Dd();I(e=>e.openTab);let c=R(e=>e.version),l=(0,V.useCallback)(()=>om(c),[c]),[u,d]=(0,V.useState)(null),[f,p]=(0,V.useState)(null),m=Ed(e,s),h=m.map(e=>e.name),[g,_]=(0,V.useState)(!1),[v,y]=(0,V.useState)(``),[b,x]=(0,V.useState)(``),[S,C]=(0,V.useState)(!1),[w,T]=(0,V.useState)(``),[E,D]=(0,V.useState)(!1),[O,k]=(0,V.useState)(!1),[A,ee]=(0,V.useState)(``),[te,j]=(0,V.useState)(``),[M,N]=(0,V.useState)(!1),P=(0,V.useCallback)(e=>{y(e),x(e),_(!0)},[]),ne=(0,V.useCallback)(e=>{T(e),C(!0)},[]),F=(0,V.useCallback)((e,t)=>{ee(e),j(t),k(!0)},[]);async function re(){if(!b.trim()||b===v){_(!1);return}try{await a(v,b.trim())}catch{}_(!1)}async function L(){try{await o(w)}catch{}C(!1)}async function ie(){N(!0);try{await r(A,te),k(!1)}catch(e){console.error(`Failed to save color:`,e)}finally{N(!1)}}function ae(){D(!0)}let[oe,se]=(0,V.useState)(!1),[ce,le]=(0,V.useState)(null),[ue,de]=(0,V.useState)(null),[fe,pe]=(0,V.useState)(!1),[me,he]=(0,V.useState)(!1),[ge,_e]=(0,V.useState)(null),[ve,ye]=(0,V.useState)(null),Se=(0,V.useRef)(null),[Ce,we]=(0,V.useState)(null);(0,V.useEffect)(()=>{if(!oe||!Se.current){we(null);return}let e=Se.current.getBoundingClientRect();we({left:e.right+6,bottom:window.innerHeight-e.bottom})},[oe]);let Te=(0,V.useCallback)(async()=>{if(oe){se(!1);return}se(!0),_e(null),le(null),de(null),he(!0);try{let e=await B.get(`/api/tunnel`);e.active&&e.url&&le(e.url),e.localUrl&&de(e.localUrl)}catch{}he(!1)},[oe]),Ee=(0,V.useCallback)(async()=>{pe(!0),_e(null);try{le((await B.post(`/api/tunnel/start`,{})).url)}catch(e){_e(e instanceof Error?e.message:`Failed to start tunnel`)}finally{pe(!1)}},[]),Oe=(0,V.useCallback)(e=>{navigator.clipboard.writeText(e),ye(e),setTimeout(()=>ye(null),2e3)},[]);function ke(){let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=R.getState();e&&t(),n(`settings`)}return(0,H.jsxs)(`aside`,{className:`hidden md:flex flex-col w-[52px] min-w-[52px] bg-background border-r border-border overflow-hidden`,children:[(0,H.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center justify-center h-[41px] border-b border-border gap-0.5`,children:[(0,H.jsx)(`span`,{className:`text-[11px] font-bold text-primary leading-none`,children:`PPM`}),c&&(0,H.jsxs)(`span`,{className:`text-[8px] text-text-subtle leading-none`,children:[`v`,c]})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-2 flex flex-col items-center gap-2 min-h-0`,children:[m.map((e,r)=>{let a=cm(e.color,r),o=t?.name===e.name;return(0,H.jsxs)(pf,{children:[(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(mf,{asChild:!0,children:(0,H.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=m.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,H.jsx)(dm,{name:e.name,color:a,active:o,allNames:h})})})}),(0,H.jsxs)(Nl,{side:`right`,className:`max-w-[200px]`,children:[(0,H.jsx)(`p`,{className:`font-medium`,children:e.name}),(0,H.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]})]}),(0,H.jsxs)(hf,{children:[(0,H.jsxs)(gf,{onClick:()=>P(e.name),children:[(0,H.jsx)(rt,{className:`size-3.5 mr-2`}),` Rename`]}),(0,H.jsxs)(gf,{onClick:()=>F(e.name,a),children:[(0,H.jsx)(et,{className:`size-3.5 mr-2`}),` Change Color`]}),(0,H.jsx)(_f,{}),(0,H.jsxs)(gf,{className:`text-destructive focus:text-destructive`,onClick:()=>ne(e.name),children:[(0,H.jsx)(ft,{className:`size-3.5 mr-2`}),` Delete`]})]})]},e.name)}),(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(`button`,{onClick:ae,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,H.jsx)(it,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Add Project`})]})]}),(0,H.jsxs)(`div`,{className:`shrink-0 flex flex-col items-center gap-1 py-2 border-t border-border`,children:[(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(`button`,{ref:Se,onClick:Te,className:z(`flex items-center justify-center size-8 rounded-md transition-colors`,oe?`text-primary bg-primary/10`:`text-text-subtle hover:text-foreground hover:bg-surface-elevated`),children:(0,H.jsx)(ct,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Share`})]}),oe&&Ce&&(0,_t.createPortal)((0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:()=>se(!1)}),(0,H.jsxs)(`div`,{className:`fixed z-50 w-64 bg-background border border-border rounded-lg shadow-lg p-3 space-y-3`,style:{left:Ce.left,bottom:Ce.bottom},children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:`Share`}),(0,H.jsx)(`button`,{onClick:()=>se(!1),className:`text-text-subtle hover:text-foreground`,children:(0,H.jsx)(ht,{className:`size-3.5`})})]}),me&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-muted-foreground text-xs`,children:[(0,H.jsx)(Ge,{className:`size-4 animate-spin`}),(0,H.jsx)(`span`,{children:`Checking...`})]}),!me&&ue&&(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Local Network`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`input`,{readOnly:!0,value:ue,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,H.jsx)(`button`,{onClick:()=>Oe(ue),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:ve===ue?(0,H.jsx)(xe,{className:`size-3.5 text-primary`}):(0,H.jsx)(De,{className:`size-3.5`})})]})]}),!me&&!ce&&!fe&&!ge&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Create a public link so others can access this PPM instance from anywhere.`}),(0,H.jsxs)(`button`,{onClick:Ee,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,H.jsx)(ct,{className:`size-3.5`}),`Start Sharing`]})]}),fe&&(0,H.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-2`,children:[(0,H.jsx)(Ge,{className:`size-5 animate-spin text-primary`}),(0,H.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Starting tunnel... this may take a moment`})]}),ge&&(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`p`,{className:`text-xs text-destructive`,children:ge}),(0,H.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,H.jsx)(`button`,{onClick:Ee,className:`flex-1 px-3 py-1.5 text-xs font-medium rounded-md border border-border hover:bg-muted transition-colors`,children:`Retry`}),(0,H.jsxs)(`button`,{onClick:()=>{se(!1),l()},className:`flex items-center gap-1 px-3 py-1.5 text-xs font-medium rounded-md border border-border text-destructive hover:bg-destructive/10 transition-colors`,children:[(0,H.jsx)(be,{className:`size-3`}),`Report`]})]})]}),ce&&(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Public (Cloudflare)`}),(0,H.jsx)(`div`,{className:`flex justify-center`,children:(0,H.jsx)(tm,{value:ce,size:160})}),(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`input`,{readOnly:!0,value:ce,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,H.jsx)(`button`,{onClick:()=>Oe(ce),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:ve===ce?(0,H.jsx)(xe,{className:`size-3.5 text-primary`}):(0,H.jsx)(De,{className:`size-3.5`})})]})]})]})]}),document.body),(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.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,H.jsx)(be,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Report Bug`})]}),(0,H.jsxs)(jl,{children:[(0,H.jsx)(Ml,{asChild:!0,children:(0,H.jsx)(`button`,{onClick:ke,className:`flex items-center justify-center size-8 rounded-md text-text-subtle hover:text-foreground hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(st,{className:`size-4`})})}),(0,H.jsx)(Nl,{side:`right`,children:`Settings`})]})]}),(0,H.jsx)(Sf,{open:E,onOpenChange:D,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Add Project`})}),(0,H.jsx)(um,{onSuccess:()=>D(!1),onCancel:()=>D(!1)})]})}),(0,H.jsx)(Sf,{open:g,onOpenChange:_,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Rename Project`})}),(0,H.jsx)(`input`,{type:`text`,value:b,onChange:e=>x(e.target.value),onKeyDown:e=>{e.key===`Enter`&&re()},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,H.jsxs)(Df,{children:[(0,H.jsx)(`button`,{onClick:()=>_(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:re,className:`px-3 py-1.5 text-sm bg-primary text-white rounded-md hover:bg-primary/90 transition-colors`,children:`Rename`})]})]})}),(0,H.jsx)(Sf,{open:S,onOpenChange:C,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Delete Project`})}),(0,H.jsxs)(`p`,{className:`text-sm text-text-secondary`,children:[`Remove `,(0,H.jsx)(`strong`,{className:`text-foreground`,children:w}),` from PPM? The files on disk won't be deleted.`]}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(`button`,{onClick:()=>C(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:L,className:`px-3 py-1.5 text-sm bg-destructive text-white rounded-md hover:bg-destructive/90 transition-colors`,children:`Delete`})]})]})}),(0,H.jsx)(Sf,{open:O,onOpenChange:k,children:(0,H.jsxs)(Tf,{className:`sm:max-w-sm`,children:[(0,H.jsx)(Ef,{children:(0,H.jsx)(Of,{children:`Change Color`})}),(0,H.jsx)(fm,{current:te,onChange:j}),(0,H.jsxs)(Df,{children:[(0,H.jsx)(`button`,{onClick:()=>k(!1),className:`px-3 py-1.5 text-sm text-text-secondary hover:text-foreground transition-colors`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:ie,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 mm=[{type:`terminal`,label:`Terminal`},{type:`chat`,label:`AI Chat`},{type:`git-graph`,label:`Git Graph`},{type:`settings`,label:`Settings`}],hm=Object.fromEntries(mm.map(e=>[e.type,e.label])),gm={terminal:dt,chat:Je,editor:Ae,database:Oe,sqlite:Oe,postgres:Oe,"git-graph":Re,"git-diff":je,settings:st};function _m({onMenuPress:e,onProjectsPress:t}){let n=F(e=>e.focusedPanelId),r=F(e=>e.panels[e.focusedPanelId]);F(e=>Object.keys(e.panels).length);let i=F(e=>e.grid),a=r?.tabs??[],o=r?.activeTabId??null,s=(0,V.useRef)(new Map),c=(0,V.useRef)(a.length),[l,u]=(0,V.useState)(null),[d,f]=(0,V.useState)(!1),p=(0,V.useRef)(null);(0,V.useEffect)(()=>{a.length>c.current&&o&&s.current.get(o)?.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`}),c.current=a.length},[a.length,o]);let m=(0,V.useCallback)(e=>{p.current=setTimeout(()=>u(e),400)},[]),h=(0,V.useCallback)(()=>{p.current&&=(clearTimeout(p.current),null)},[]),g=re(i,n)?i.length<3:!1,_=Object.keys(F.getState().panels).filter(e=>e!==n);function v(e){let t=a.findIndex(t=>t.id===e);t>0&&F.getState().reorderTab(e,n,t-1)}function y(e){let t=a.findIndex(t=>t.id===e);t<a.length-1&&F.getState().reorderTab(e,n,t+1)}function b(e){F.getState().splitPanel(`down`,e,n)}function x(e,t){F.getState().moveTab(e,n,t)}let S=l?a.find(e=>e.id===l):null,C=l?a.findIndex(e=>e.id===l):-1,{activeProject:w}=Dd.getState();function T(e){let t=e===`git-graph`||e===`git-diff`||e===`terminal`||e===`chat`?{projectName:w?.name}:void 0;F.getState().openTab({type:e,title:hm[e]??e,metadata:t,projectId:w?.name??null,closable:!0},n),f(!1)}let{activeProject:E,projects:D,customOrder:O}=Dd(),k=Ed(D,O??null),A=k.map(e=>e.name),ee=k.findIndex(e=>e.name===E?.name),te=E?cm(E.color,ee>=0?ee:0):`#4f86c6`,j=E?lm(E.name,A):null;return(0,H.jsxs)(`nav`,{className:`fixed bottom-0 left-0 right-0 md:hidden bg-background border-t border-border z-40 select-none`,children:[(0,H.jsxs)(`div`,{className:`flex items-center h-12`,children:[(0,H.jsx)(`button`,{onClick:e,className:`flex items-center justify-center size-12 shrink-0 text-text-secondary border-r border-border`,children:(0,H.jsx)(qe,{className:`size-5`})}),(0,H.jsx)(`div`,{className:`flex-1 flex items-center h-12 overflow-x-auto`,children:a.map(e=>{let t=gm[e.type];return(0,H.jsxs)(`button`,{ref:t=>{t?s.current.set(e.id,t):s.current.delete(e.id)},onClick:()=>F.getState().setActiveTab(e.id),onTouchStart:()=>m(e.id),onTouchEnd:h,onTouchMove:h,onContextMenu:e=>e.preventDefault(),className:z(`flex items-center gap-1 px-3 h-12 whitespace-nowrap text-xs shrink-0 border-t-2 transition-colors`,e.id===o?`border-primary bg-surface text-primary`:`border-transparent text-text-secondary`),children:[(0,H.jsx)(t,{className:`size-4`}),(0,H.jsx)(`span`,{className:`max-w-[80px] truncate`,children:e.title}),e.closable&&(0,H.jsx)(`span`,{role:`button`,tabIndex:0,onClick:t=>{t.stopPropagation(),F.getState().closeTab(e.id)},className:`ml-0.5 p-0.5 rounded hover:bg-surface-elevated`,children:(0,H.jsx)(ht,{className:`size-3`})})]},e.id)})}),(0,H.jsx)(`button`,{onClick:()=>Hd(),className:`flex items-center justify-center size-12 shrink-0 border-t-2 border-transparent text-text-secondary`,children:(0,H.jsx)(it,{className:`size-4`})}),(0,H.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:j?(0,H.jsx)(`div`,{className:`size-7 rounded-full flex items-center justify-center text-[10px] font-bold text-white`,style:{background:te},children:j}):(0,H.jsx)(Ue,{className:`size-5`})})]}),d&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>f(!1)}),(0,H.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,H.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border`,children:`New Tab`}),mm.map(e=>{let t=gm[e.type];return(0,H.jsxs)(`button`,{onClick:()=>T(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,H.jsx)(t,{className:`size-4`}),` `,e.label]},e.type)})]})]}),S&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-50`,onClick:()=>u(null)}),(0,H.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,H.jsx)(`div`,{className:`px-3 py-2 text-xs text-text-secondary border-b border-border truncate`,children:S.title}),C>0&&(0,H.jsxs)(`button`,{onClick:()=>{v(l),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(he,{className:`size-4`}),` Move Left`]}),C<a.length-1&&(0,H.jsxs)(`button`,{onClick:()=>{y(l),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(ge,{className:`size-4`}),` Move Right`]}),g&&a.length>1&&(0,H.jsxs)(`button`,{onClick:()=>{b(l),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(lt,{className:`size-4`}),` Split to Bottom`]}),_.map((e,t)=>(0,H.jsxs)(`button`,{onClick:()=>{x(l,e),u(null)},className:`flex items-center gap-2 w-full px-3 py-2.5 text-sm text-foreground active:bg-surface-elevated`,children:[(0,H.jsx)(Qe,{className:`size-4`}),` Move to Panel `,t+1===1?`Top`:`Bottom`]},e))]})]})]})}var vm=[{id:`explorer`,label:`Explorer`,icon:Fe},{id:`git`,label:`Git`,icon:Re},{id:`database`,label:`Database`,icon:Oe},{id:`settings`,label:`Settings`,icon:st}];function ym({isOpen:e,onClose:t,initialTab:n}){let{activeProject:r}=Dd(),i=R(e=>e.version),[a,o]=(0,V.useState)(n??`explorer`);(0,V.useEffect)(()=>{n&&o(n)},[n]);let s=(0,V.useCallback)(()=>om(i),[i]);return(0,H.jsxs)(`div`,{className:z(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),children:[(0,H.jsx)(`div`,{className:`absolute inset-0 bg-black/50`,onClick:t,"aria-label":`Close drawer`}),(0,H.jsxs)(`div`,{className:z(`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,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-border shrink-0`,children:[(0,H.jsx)(`span`,{className:`text-sm font-bold text-primary tracking-tight`,children:r?.name??`PPM`}),(0,H.jsx)(`button`,{onClick:t,className:`flex items-center justify-center size-8 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(ht,{className:`size-4`})})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:[a===`explorer`&&(r?(0,H.jsx)(Pf,{onFileOpen:t}):(0,H.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,H.jsx)(Hf,{metadata:{projectName:r?.name},onNavigate:t}),a===`database`&&(0,H.jsx)(Tp,{}),a===`settings`&&(0,H.jsx)(_p,{})]}),(0,H.jsxs)(`div`,{className:`shrink-0 border-t border-border`,children:[(0,H.jsx)(`div`,{className:`flex items-center`,children:vm.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:()=>o(e.id),className:z(`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,H.jsx)(t,{className:`size-4`}),(0,H.jsx)(`span`,{children:e.label})]},e.id)})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-t border-border`,children:[i&&(0,H.jsxs)(`span`,{className:`text-[10px] text-text-subtle`,children:[`v`,i]}),(0,H.jsxs)(`button`,{onClick:s,className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,H.jsx)(be,{className:`size-3`}),(0,H.jsx)(`span`,{children:`Report Bug`})]})]})]})]})]})}function bm({name:e,color:t,allNames:n}){let r=lm(e,n);return(0,H.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 xm({isOpen:e,onClose:t}){let{projects:n,activeProject:r,setActiveProject:i,setProjectColor:a,reorderProjects:o,renameProject:s,deleteProject:c,customOrder:l}=Dd();I(e=>e.openTab);let u=R(e=>e.version),d=Ed(n,l),f=d.map(e=>e.name),[p,m]=(0,V.useState)(`list`),[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(``),[y,b]=(0,V.useState)(!1),x=(0,V.useRef)(null),[S,C]=(0,V.useState)(null),[w,T]=(0,V.useState)(``),E=(0,V.useCallback)(e=>{x.current=setTimeout(()=>g(e),400)},[]),D=(0,V.useCallback)(()=>{x.current&&=(clearTimeout(x.current),null)},[]);function O(){m(`list`),t()}function k(e){let t=n.find(t=>t.name===e);t&&(i(t),O())}function A(){m(`add`)}function ee(){if(O(),window.innerWidth<768){window.dispatchEvent(new Event(`open-mobile-settings`));return}let{sidebarCollapsed:e,toggleSidebar:t,setSidebarActiveTab:n}=R.getState();e&&t(),n(`settings`)}async function te(){if(!S||!w.trim()||w===S){C(null);return}try{await s(S,w.trim())}catch{}C(null)}async function j(e){g(null);try{await c(e)}catch{}}async function M(e,t){try{await a(e,t),b(!1),g(null)}catch(e){console.error(`Failed to save color:`,e)}}h&&d.find(e=>e.name===h);let N=h?d.findIndex(e=>e.name===h):-1,P=h?[{label:`Rename`,icon:rt,onClick:()=>{T(h),C(h),g(null)}},{label:`Change Color`,icon:et,onClick:()=>{let e=d.findIndex(e=>e.name===h),t=d[e];v(cm(t?.color,e)),b(!0)}},...N>0?[{label:`Move Up`,icon:we,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N-1,0,t),o(e),g(null)}}]:[],...N<d.length-1?[{label:`Move Down`,icon:Se,onClick:()=>{let e=d.map(e=>e.name),[t]=e.splice(N,1);e.splice(N+1,0,t),o(e),g(null)}}]:[],{label:`Delete`,icon:ft,destructive:!0,onClick:()=>j(h)}]:[];return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:z(`fixed inset-0 z-50 md:hidden transition-opacity duration-200`,e?`opacity-100`:`opacity-0 pointer-events-none`),onClick:O,style:{backgroundColor:`rgba(0,0,0,0.5)`}}),(0,H.jsxs)(`div`,{className:z(`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,H.jsx)(`div`,{className:`flex justify-center pt-3 pb-1`,children:(0,H.jsx)(`div`,{className:`w-10 h-1 rounded-full bg-border`})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p===`add`&&(0,H.jsx)(`button`,{onClick:()=>m(`list`),className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(he,{className:`size-4`})}),(0,H.jsx)(`span`,{className:`text-sm font-semibold`,children:p===`add`?`Add Project`:`Projects`})]}),(0,H.jsx)(`button`,{onClick:O,className:`flex items-center justify-center size-7 rounded-md hover:bg-surface-elevated transition-colors`,children:(0,H.jsx)(ht,{className:`size-4`})})]}),p===`add`&&(0,H.jsx)(`div`,{className:`px-4 py-4`,children:(0,H.jsx)(um,{onSuccess:()=>{m(`list`),t()},onCancel:()=>m(`list`),footerClassName:`pt-2`})}),(0,H.jsx)(`div`,{className:p===`add`?`hidden`:`max-h-[60vh] overflow-y-auto`,children:d.map((e,t)=>{let n=cm(e.color,t),i=r?.name===e.name,a=S===e.name;return(0,H.jsxs)(`div`,{className:z(`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:()=>E(e.name),onTouchEnd:D,onTouchMove:D,children:[(0,H.jsx)(bm,{name:e.name,color:n,allNames:f}),(0,H.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[a?(0,H.jsx)(`input`,{type:`text`,value:w,onChange:e=>T(e.target.value),onKeyDown:e=>{e.key===`Enter`&&te(),e.key===`Escape`&&C(null)},onBlur:te,onClick:e=>e.stopPropagation(),className:`w-full bg-transparent border-b border-primary text-sm outline-none`,autoFocus:!0}):(0,H.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.name}),(0,H.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,children:e.path})]}),i&&(0,H.jsx)(xe,{className:`size-4 text-primary shrink-0`})]},e.name)})}),(0,H.jsx)(`div`,{className:`border-t border-border`,children:(0,H.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,H.jsx)(it,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`Add Project`})]})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-t border-border`,children:[(0,H.jsxs)(`button`,{onClick:ee,className:`flex items-center gap-2 text-text-secondary hover:text-foreground transition-colors`,children:[(0,H.jsx)(st,{className:`size-4`}),(0,H.jsx)(`span`,{className:`text-sm`,children:`Settings`})]}),u&&(0,H.jsxs)(`span`,{className:`text-xs text-text-subtle`,children:[`v`,u]})]})]}),h&&!y&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>g(null)}),(0,H.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,H.jsx)(`div`,{className:`px-4 py-2 border-b border-border`,children:(0,H.jsx)(`p`,{className:`text-xs font-medium text-text-secondary`,children:h})}),P.map(e=>{let t=e.icon;return(0,H.jsxs)(`button`,{onClick:e.onClick,className:z(`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,H.jsx)(t,{className:`size-4 shrink-0`}),e.label]},e.label)})]})]}),y&&h&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-[60] md:hidden`,onClick:()=>{b(!1),g(null)}}),(0,H.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,H.jsx)(`p`,{className:`text-sm font-medium`,children:`Change Color`}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:sm.map(e=>(0,H.jsx)(`button`,{type:`button`,onClick:()=>v(e),className:z(`size-9 rounded-full border-2 transition-all`,_===e?`border-primary scale-110`:`border-transparent`),style:{background:e}},e))}),(0,H.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,H.jsx)(`button`,{onClick:()=>{b(!1),g(null)},className:`flex-1 py-2 text-sm text-text-secondary border border-border rounded-md`,children:`Cancel`}),(0,H.jsx)(`button`,{onClick:()=>M(h,_),className:`flex-1 py-2 text-sm bg-primary text-white rounded-md`,children:`Save`})]})]})]})]})}function Sm({onSuccess:e}){let[t,n]=(0,V.useState)(``),r=R(e=>e.deviceName),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1);async function c(n){if(n.preventDefault(),t.trim()){s(!0),a(null);try{se(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,H.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background p-4`,children:(0,H.jsxs)(`div`,{className:`w-full max-w-sm bg-surface rounded-lg border border-border p-6 space-y-6`,children:[(0,H.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,H.jsx)(`div`,{className:`flex items-center justify-center size-12 mx-auto rounded-full bg-surface-elevated`,children:(0,H.jsx)(Ke,{className:`size-6 text-primary`})}),(0,H.jsx)(`h1`,{className:`text-xl font-semibold text-foreground`,children:`PPM`}),r&&(0,H.jsx)(`p`,{className:`text-xs text-text-subtle bg-surface-elevated inline-block px-2 py-0.5 rounded-full`,children:r}),(0,H.jsx)(`p`,{className:`text-sm text-text-secondary`,children:`Enter your access password to unlock`})]}),(0,H.jsxs)(`form`,{onSubmit:c,className:`space-y-4`,children:[(0,H.jsx)(`div`,{children:(0,H.jsx)(O,{type:`password`,placeholder:`Auth token`,value:t,onChange:e=>n(e.target.value),className:`h-11 bg-background border-border`,autoFocus:!0})}),i&&(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-error text-sm`,children:[(0,H.jsx)(Te,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{children:i})]}),(0,H.jsx)(xf,{type:`submit`,disabled:o||!t.trim(),className:`w-full h-11`,children:o?`Checking...`:`Unlock`})]})]})})}var Cm=5e3,wm=`/api/health`,Tm=`/api/logs/recent`,Em=`hienlh/ppm`;async function Dm(){try{let e=await(await fetch(Tm,{signal:AbortSignal.timeout(3e3)})).json();return e.ok?e.data.logs:`(failed to fetch logs)`}catch{return`(server logs unavailable)`}}async function Om(){let e=await Dm(),t=encodeURIComponent([`## Environment`,`- URL: ${window.location.href}`,`- UserAgent: ${navigator.userAgent}`,`- Time: ${new Date().toISOString()}`,``,`## Description`,`The PPM server went down and restarted unexpectedly.`,``,`## Steps to Reproduce`,`1. `,``,`## Recent Server Logs`,"```",e,"```"].join(`
21
+ `));window.open(`https://github.com/${Em}/issues/new?title=bug%3A%20server%20crashed%20unexpectedly&body=${t}`,`_blank`)}function km(){let e=(0,V.useRef)(!1),t=(0,V.useRef)(!0);(0,V.useEffect)(()=>{let n;async function r(){try{(await fetch(wm,{signal:AbortSignal.timeout(3e3)})).ok?(e.current&&!t.current&&(Nt.warning(`Server was restarted`,{description:`PPM server went down and recovered. If unexpected, please report it.`,duration:15e3,action:{label:`Report Bug`,onClick:()=>Om()}}),e.current=!1),t.current=!1):e.current=!0}catch{!e.current&&!t.current&&Nt.error(`Server unreachable`,{description:`PPM server is not responding. It may have crashed.`,duration:1e4}),e.current=!0}}let i=setTimeout(()=>{r(),n=setInterval(r,Cm)},Cm);return()=>{clearTimeout(i),clearInterval(n)}},[])}function Am(e){let t=[];for(let n of e)n.type===`file`&&t.push({name:n.name,path:n.path}),n.children&&t.push(...Am(n.children));return t}function jm(e){return e?e.startsWith(`/`)||e.startsWith(`~/`)||e.startsWith(`~\\`)||/^[A-Za-z]:[/\\]/.test(e):!1}function Mm(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 Nm=new Map;function Pm({open:e,onClose:t,initialQuery:n=``}){let[r,i]=(0,V.useState)(``),[a,o]=(0,V.useState)(0),[s,c]=(0,V.useState)([]),[l,u]=(0,V.useState)(!1),[d,f]=(0,V.useState)([]),p=(0,V.useRef)(null),m=(0,V.useRef)(null),h=I(e=>e.openTab),g=Dd(e=>e.activeProject),_=uf(e=>e.tree),v=R(e=>e.setSidebarActiveTab),y=R(e=>e.sidebarCollapsed),b=R(e=>e.toggleSidebar),x=(0,V.useCallback)(async e=>{if(Nm.has(e)){c(Nm.get(e));return}u(!0);try{let t=await B.get(`/api/fs/list?dir=${encodeURIComponent(e)}`);Nm.set(e,t),c(t)}catch{c([])}finally{u(!1)}},[]);(0,V.useEffect)(()=>{if(!jm(r)){c([]);return}x(Mm(r))},[r,x]),(0,V.useEffect)(()=>{if(jm(r)||r.trim().length<2){f([]);return}let e=setTimeout(async()=>{try{f(await B.get(`/api/db/search?q=${encodeURIComponent(r.trim())}`)??[])}catch{f([])}},300);return()=>clearTimeout(e)},[r]);let S=(0,V.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0,r=(r,i)=>()=>{h({type:r,title:i,projectId:e,metadata:n,closable:!0}),t()};return[{id:`terminal`,label:`New Terminal`,icon:dt,action:r(`terminal`,`Terminal`),keywords:`bash shell console`,group:`action`},{id:`chat`,label:`New AI Chat`,icon:Je,action:r(`chat`,`AI Chat`),keywords:`ai assistant claude`,group:`action`},{id:`git-graph`,label:`Git Graph`,icon:Re,action:r(`git-graph`,`Git Graph`),keywords:`branch history log`,group:`action`},{id:`postgres`,label:`PostgreSQL`,icon:Oe,action:r(`postgres`,`PostgreSQL`),keywords:`database pg sql query`,group:`action`},{id:`git-status`,label:`Git Status`,icon:ze,action:()=>{v(`git`),t()},keywords:`changes diff staged`,group:`action`},{id:`settings`,label:`Settings`,icon:st,action:()=>{y&&b(),v(`settings`),t()},keywords:`config preferences theme`,group:`action`}]},[g,h,t,v,y,b]),C=(0,V.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return Am(_).map(r=>({id:`file:${r.path}`,label:r.name,hint:r.path,icon:Ae,group:`file`,keywords:r.path,action:()=>{h({type:`editor`,title:r.name,projectId:e,metadata:{...n,filePath:r.path},closable:!0}),t()}}))},[_,g,h,t]),w=(0,V.useMemo)(()=>{let e=g?.name??null,n=g?{projectName:g.name}:void 0;return s.map(r=>{let i=oe(r);return{id:`fs:${r}`,label:i,hint:r,icon:Fe,group:`fs`,keywords:r,action:()=>{h({type:`editor`,title:i,projectId:e,metadata:{...n,filePath:r},closable:!0}),t()}}})},[s,g,h,t]),T=(0,V.useMemo)(()=>d.map(e=>({id:`db:${e.connectionId}:${e.schemaName}.${e.tableName}`,label:e.tableName,hint:`${e.connectionName} (${e.connectionType===`postgres`?`PG`:`SQLite`})`,icon:Oe,group:`db`,connectionColor:e.connectionColor,action:()=>{h({type:`database`,title:`${e.connectionName} · ${e.tableName}`,projectId:null,closable:!0,metadata:{connectionId:e.connectionId,connectionName:e.connectionName,dbType:e.connectionType,tableName:e.tableName,schemaName:e.schemaName,connectionColor:e.connectionColor}}),t()}})),[d,h,t]),E=(0,V.useMemo)(()=>[...S,...C],[S,C]),D=(0,V.useMemo)(()=>{if(jm(r)){let e=r.lastIndexOf(`/`),t=e>=0?r.slice(e+1).toLowerCase():``;return t?w.filter(e=>{let n=e.label.toLowerCase(),r=(e.keywords??``).toLowerCase();return n.includes(t)||r.includes(t)}).slice(0,50):w.slice(0,50)}if(!r.trim())return S;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=E.filter(e=>t(e.label.toLowerCase())||e.keywords&&t(e.keywords.toLowerCase()));return r.trim().length>=2?[...T,...n]:n},[E,S,w,T,r]);(0,V.useEffect)(()=>{e&&(i(n||``),o(0),c([]),f([]),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,V.useEffect)(()=>{o(e=>Math.min(e,Math.max(D.length-1,0)))},[D.length]),(0,V.useEffect)(()=>{let e=m.current;e&&e.children[a]?.scrollIntoView({block:`nearest`})},[a]);let O=(0,V.useCallback)(()=>{r.trim()&&(h({type:`chat`,title:`AI Chat`,projectId:g?.name??null,metadata:{projectName:g?.name,pendingMessage:r.trim()},closable:!0}),t())},[r,g,h,t]);function k(e){let n=D.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?D[a]?.action():r.trim()&&O();break;case`Escape`:e.preventDefault(),t();break}}if(!e)return null;let A=jm(r);return(0,H.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-end md:items-start justify-center md:pt-[20vh]`,onClick:t,children:[(0,H.jsx)(`div`,{className:`fixed inset-0 bg-black/50`}),(0,H.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:k,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2.5`,children:[(0,H.jsx)(ot,{className:`size-4 text-text-subtle shrink-0`}),(0,H.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,H.jsx)(Ge,{className:`size-3.5 animate-spin text-text-subtle shrink-0`}),(0,H.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`})]}),A&&!l&&s.length===0&&r.length<4&&(0,H.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,H.jsx)(`div`,{ref:m,className:`max-h-72 overflow-y-auto py-1`,children:D.length===0?l?(0,H.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`Searching...`}):r.trim()?(0,H.jsxs)(`button`,{onClick:O,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,H.jsx)(Je,{className:`size-4 shrink-0 text-accent`}),(0,H.jsxs)(`span`,{children:[`Ask AI: `,(0,H.jsx)(`span`,{className:`text-text-primary font-medium`,children:r.trim().slice(0,60)})]})]}):(0,H.jsx)(`p`,{className:`px-3 py-4 text-sm text-text-subtle text-center`,children:`No results`}):D.map((e,t)=>{let n=e.icon;return(0,H.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,H.jsx)(n,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`truncate`,children:e.label}),e.hint&&(0,H.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-xs text-text-subtle truncate max-w-[200px]`,children:[e.connectionColor&&(0,H.jsx)(`span`,{className:`shrink-0 size-2 rounded-full`,style:{backgroundColor:e.connectionColor}}),e.hint]})]},e.id)})}),(0,H.jsxs)(`div`,{className:`flex items-center justify-center gap-1.5 border-t border-border px-3 py-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`Press`}),(0,H.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,H.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,H.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:`to open this palette`})]})]})]})}function Fm(){let[e,t]=(0,V.useState)(null),[n,r]=(0,V.useState)(!1);(0,V.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,V.useCallback)(()=>t(null),[]);return e?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/50`,onClick:i}),(0,H.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,H.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-border`,children:[(0,H.jsx)(`span`,{className:`text-sm font-medium`,children:`Bug Report`}),(0,H.jsx)(`button`,{onClick:i,className:`p-1 rounded hover:bg-surface-elevated`,children:(0,H.jsx)(ht,{className:`size-4`})})]}),(0,H.jsx)(`pre`,{className:`flex-1 overflow-auto px-4 py-2 text-xs font-mono whitespace-pre-wrap break-all`,children:e}),(0,H.jsxs)(`div`,{className:`flex gap-2 p-3 border-t border-border`,children:[(0,H.jsxs)(`button`,{onClick:async()=>{await am(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,H.jsx)(xe,{className:`size-3`}):(0,H.jsx)(De,{className:`size-3`}),n?`Copied`:`Copy`]}),(0,H.jsxs)(`button`,{onClick:()=>{im(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,H.jsx)(P,{className:`size-3`}),`Open GitHub Issue`]})]})]})]}):null}function Im(){let[e,t]=(0,V.useState)(`checking`),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(),[o,s]=(0,V.useState)(!1);(0,V.useEffect)(()=>{let e=()=>{a(`settings`),r(!0)};return window.addEventListener(`open-mobile-settings`,e),()=>window.removeEventListener(`open-mobile-settings`,e)},[]);let[c,l]=(0,V.useState)(()=>new Set([`__global__`])),u=R(e=>e.theme),d=R(e=>e.deviceName),f=Dd(e=>e.fetchProjects),p=R(e=>e.fetchServerInfo),m=Dd(e=>e.activeProject);(0,V.useEffect)(()=>{if(ie(u),u===`system`){let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=()=>ie(`system`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)}},[u]),(0,V.useEffect)(()=>{p()},[p]),(0,V.useEffect)(()=>{async function e(){let e=le();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()},[]),Sd();let{paletteOpen:h,paletteInitialQuery:g,closePalette:_}=Ud();km(),(0,V.useEffect)(()=>{e===`authenticated`&&ef(async()=>{let{useKeybindingsStore:e}=await import(`./keybindings-store-VhiJwp77.js`);return{useKeybindingsStore:e}},__vite__mapDeps([22,1,11])).then(({useKeybindingsStore:e})=>{e.getState().loadFromServer()})},[e]),(0,V.useEffect)(()=>{e===`authenticated`&&f().then(()=>{let{projectName:e,tabId:t}=bd(),n=Dd.getState().projects;if(e){let r=n.find(t=>t.name===e);if(r){Dd.getState().setActiveProject(r),t&&queueMicrotask(()=>{let{tabs:e}=I.getState();e.some(e=>e.id===t)&&I.getState().setActiveTab(t)});return}}})},[e,f]),(0,V.useEffect)(()=>{let e=m?.name??`__global__`;I.getState().switchProject(e)},[m?.name]),(0,V.useEffect)(()=>{let e=m?.name??`__global__`;l(t=>t.has(e)?t:new Set([...t,e]))},[m?.name]),(0,V.useEffect)(()=>{e===`authenticated`&&!m&&I.getState().switchProject(`__global__`)},[e,m]);let v=(0,V.useCallback)(()=>{t(`authenticated`)},[]);if(e===`checking`)return(0,H.jsx)(`div`,{className:`min-h-dvh flex items-center justify-center bg-background`,children:(0,H.jsx)(`div`,{className:`animate-pulse text-text-secondary text-sm`,children:`Loading...`})});if(e===`unauthenticated`)return(0,H.jsx)(Sm,{onSuccess:v});let y=m?.name??`__global__`;return(0,H.jsx)(Al,{children:(0,H.jsxs)(`div`,{className:`h-dvh flex flex-col bg-background text-foreground overflow-hidden relative`,children:[d&&(0,H.jsx)(`div`,{className:`md:hidden fixed top-0 left-0 z-50 px-2 py-0.5 bg-primary/80 text-primary-foreground text-[10px] font-medium rounded-br`,children:d}),(0,H.jsxs)(`div`,{className:`flex flex-1 overflow-hidden`,children:[(0,H.jsx)(pm,{}),(0,H.jsx)(Op,{}),[...c].map(e=>(0,H.jsx)(`div`,{className:z(`flex-1 overflow-hidden pb-12 md:pb-0`,y!==e&&`hidden`),children:(0,H.jsx)(of,{projectName:e})},e))]}),(0,H.jsx)(_m,{onMenuPress:()=>r(!0),onProjectsPress:()=>s(!0)}),(0,H.jsx)(ym,{isOpen:n,onClose:()=>{r(!1),a(void 0)},initialTab:i}),(0,H.jsx)(xm,{isOpen:o,onClose:()=>s(!1)}),(0,H.jsx)(Pm,{open:h,onClose:_,initialQuery:g}),(0,H.jsx)(Fm,{}),(0,H.jsx)(Yt,{position:`bottom-left`,closeButton:!0,toastOptions:{className:`bg-surface border-border text-foreground`}})]})})}(0,gt.createRoot)(document.getElementById(`root`)).render((0,H.jsx)(V.StrictMode,{children:(0,H.jsx)(Im,{})}));export{Ve as A,Ce as B,ft as C,rt as D,at as E,Ae as F,xe as H,Oe as I,De as L,Le as M,Pe as N,Je as O,Me as P,Ee as R,ht as S,ot as T,_e as U,Se as V,Hd as _,Tf as a,zd as b,Of as c,hf as d,gf as f,ef as g,uf as h,Sf as i,Re as j,Ge as k,xf as l,mf as m,_p as n,Df as o,_f as p,sp as r,Ef as s,om as t,pf as u,Fd as v,dt as w,Vd as x,Bd as y,Te as z};