groove-dev 0.27.61 → 0.27.62

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.
@@ -28,7 +28,7 @@ Error generating stack: `+h.message+`
28
28
 
29
29
  `:" ";M[M.length-1]={...$,text:$.text+L+w,timestamp:Date.now()}}else M.push({from:"agent",text:w,timestamp:Date.now()});S[x]=M.slice(-100),t({chatHistory:S}),oa("groove:chatHistory",S)}const P=a().conversations.find(L=>L.agentId===x);if(P){const L={...a().conversationMessages};L[P.id]||(L[P.id]=[]);const A=[...L[P.id]],z=A[A.length-1],Y=z&&z.from==="assistant"&&Date.now()-z.timestamp<8e3;if(!(Y&&(z.text===w||z.text.endsWith(w)))){if(Y){const se=g.subtype==="assistant"?`
30
30
 
31
- `:" ";A[A.length-1]={...z,text:z.text+se+w,timestamp:Date.now()}}else A.push({from:"assistant",text:w,timestamp:Date.now()});L[P.id]=A.slice(-200),t({conversationMessages:L,streamingConversationId:P.id}),oa("groove:conversationMessages",L)}}}if(k&&k.trim()){const w={...a().activityLog};w[x]||(w[x]=[]),w[x]=[...w[x].slice(-200),{timestamp:Date.now(),text:k.trim(),type:g.type,subtype:"tool"}],t({activityLog:w}),oa("groove:activityLog",w)}break}case"agent:exit":{const x=a().agents.find(w=>w.id===r.agentId),g=(x==null?void 0:x.name)||r.agentId,y=r.status==="killed"||r.code===143||r.code===137,k=r.status==="completed"?`${g} completed`:y?`${g} stopped`:`${g} crashed (exit ${r.code})`,b=r.status==="completed"?"success":y?"info":"warning";a().addToast(b,k,r.error?r.error.slice(0,200):void 0),a().thinkingAgents.has(r.agentId)&&t(w=>{const S=new Set(w.thinkingAgents);return S.delete(r.agentId),{thinkingAgents:S}});const j=a().conversations.find(w=>w.agentId===r.agentId);j&&a().streamingConversationId===j.id&&t({sendingMessage:!1,streamingConversationId:null}),r.error&&r.agentId&&a().addChatMessage(r.agentId,"system",`Crashed: ${r.error}`),(x==null?void 0:x.role)==="planner"&&r.status==="completed"&&setTimeout(()=>a().checkRecommendedTeam(),1e3);break}case"phase2:spawned":a().addToast("info",`QC agent ${r.name} auto-spawned`,"Auditing phase 1 work");break;case"preview:ready":a().addToast("success","Project ready to preview",r.url,{label:"View Site",url:r.url},{persistent:!0});break;case"preview:failed":a().addToast("warning","Preview could not launch",r.reason?String(r.reason).slice(0,200):"Unknown error");break;case"preview:stopped":break;case"agent:stalled":{const x=r.agentName||r.agentId,g=Math.round((r.silentMs||0)/1e3);a().addToast("warning",`${x} may be stalled`,`No output for ${g}s — API stream may be hung`);break}case"knock:denied":{const x=r.agentName||r.agentId;a().addToast("warning",`${x} blocked`,`${r.toolName} on ${r.target} — ${r.reason||"scope conflict"}`);break}case"phase2:failed":a().addToast("error","QC agent failed to spawn",r.error||"Unknown error");break;case"agent:message_queued":a().addChatMessage(r.agentId,"system","Agent is working — message will be delivered when it finishes.");break;case"rotation:start":break;case"rotation:complete":{const x=r.agentId,g=r.oldAgentId;if(!x||!g)break;t(y=>{var C,_,P;const k={...y.chatHistory},b={...y.tokenTimeline},j={...y.activityLog},w={...y.chatInputs};(C=k[g])!=null&&C.length&&(k[x]=[...k[g]],delete k[g]),(_=b[g])!=null&&_.length&&(b[x]=[...b[g]],delete b[g]),(P=j[g])!=null&&P.length&&(j[x]=[...j[g]],delete j[g]),w[g]&&(w[x]=w[g],delete w[g]);const S=y.detailPanel;let M=S,$=y.teamDetailPanels;if((S==null?void 0:S.type)==="agent"&&S.agentId===g){const L={type:"agent",agentId:x};M=L;const A=a().activeTeamId;$={...y.teamDetailPanels,[A]:L}}try{localStorage.setItem("groove:chatHistory",JSON.stringify(k))}catch{}return{chatHistory:k,tokenTimeline:b,activityLog:j,chatInputs:w,detailPanel:M,teamDetailPanels:$}});break}case"rotation:failed":a().addToast("error","Rotation failed",r.error);break;case"file:changed":{const x=a().editorRecentSaves[r.path];if(x&&Date.now()-x<2e3)break;t(g=>({editorChangedFiles:{...g.editorChangedFiles,[r.path]:r.timestamp}}));break}case"team:created":case"team:deleted":case"team:updated":a().fetchTeams();break;case"approval:request":t(x=>({pendingApprovals:[...x.pendingApprovals,r.data]}));break;case"approval:resolved":{const x=r.data;t(g=>({pendingApprovals:g.pendingApprovals.filter(y=>y.id!==x.id),resolvedApprovals:[x,...g.resolvedApprovals].slice(0,200)}));break}case"conflict:detected":a().addToast("error",`Scope conflict: ${r.agentName||"agent"}`,r.filePath?`File: ${r.filePath}`:void 0);break;case"qc:activated":a().addToast("info","QC agent activated",`${r.agentCount||"4+"} agents running`);break;case"journalist:cycle":t({journalistStatus:r.data||null});break;case"schedule:execute":a().addToast("info",`Scheduled agent spawned: ${r.name||r.role||"agent"}`);break;case"gateway:status":t({gateways:r.data||[]});break;case"federation:whitelist":t(x=>({federation:{...x.federation,whitelist:r.data||[]}}));break;case"federation:connection":t(x=>{const g=[...x.federation.connections],y=g.findIndex(k=>{var b;return k.ip===((b=r.data)==null?void 0:b.ip)});return y>=0?g[y]={...g[y],...r.data}:g.push(r.data),{federation:{...x.federation,connections:g}}});break;case"federation:pouch":case"federation:pouch-log":t(x=>({federation:{...x.federation,pouchLog:[...x.federation.pouchLog,r.data].slice(-200)}}));break;case"project-dir:changed":t({projectDir:(l=r.data)==null?void 0:l.projectDir,showProjectPicker:!1});break;case"tunnel.connected":t({activeTunnelId:((u=r.data)==null?void 0:u.id)||null}),a().fetchTunnels();break;case"tunnel.disconnected":t({activeTunnelId:null}),a().fetchTunnels();break;case"tunnel.health":{const x=a().savedTunnels.map(g=>{var y;return g.id===((y=r.data)==null?void 0:y.id)?{...g,latencyMs:r.data.latencyMs,healthy:r.data.healthy}:g});t({savedTunnels:x});break}case"subscription:updated":{const x={subscription:r.data};((p=r.data)==null?void 0:p.active)===!0&&!a().marketplaceAuthenticated&&(x.marketplaceAuthenticated=!0),t(x),X.get("/edition").then(g=>{t({edition:g.edition||"community",subscription:{plan:g.plan||"community",status:g.status||(g.subscriptionActive?"active":"none"),active:g.subscriptionActive===!0,features:g.features||[],seats:g.seats||1,periodEnd:g.periodEnd||null,cancelAtPeriodEnd:g.cancelAtPeriodEnd||!1}})}).catch(()=>{}),a().fetchTunnels();break}case"auth:expired":t({marketplaceAuthenticated:!1,marketplaceUser:null}),a().addToast("warning","Session expired","Please sign in again");break;case"network:node:status":{const{__proto__:x,constructor:g,prototype:y,...k}=r.data||{};t({networkNode:{...a().networkNode,...k}});break}case"network:node:event":{const x=r.data||{};t(g=>({networkEvents:[...g.networkEvents,{...x,timestamp:x.timestamp||Date.now()}].slice(-100)}));break}case"signal_connected":{const x=r.data||{};t(g=>({networkEvents:[...g.networkEvents,{level:"connected",msg:String(x.msg||x.message||"Connected to signal").slice(0,500),detail:x.detail||x.url||void 0,timestamp:x.timestamp||Date.now()}].slice(-100)}));break}case"matched":{const x=r.data||{};t(g=>({networkEvents:[...g.networkEvents,{level:"session",msg:String(x.msg||x.message||"Session matched").slice(0,500),detail:x.detail||x.peer||x.nodeId||void 0,timestamp:x.timestamp||Date.now()}].slice(-100)}));break}case"network:status":{const x=r.data||{},g={networkStatus:{...a().networkStatus,...x}};if(x.compute){const M=x.compute;g.networkCompute={totalRamMb:M.totalRamMb??M.total_ram_mb??0,totalVramMb:M.totalVramMb??M.total_vram_mb??0,totalCpuCores:M.totalCpuCores??M.total_cpu_cores??0,totalBandwidthMbps:M.totalBandwidthMbps??M.total_bandwidth_mbps??0,activeNodes:M.activeNodes??M.active_nodes??0,totalNodes:M.totalNodes??M.total_nodes??0,avgLoad:M.avgLoad??M.avg_load??0}}else if(Array.isArray(x.nodes)&&x.nodes.length>0){const M=x.nodes,$=M.filter(C=>C.status==="active");g.networkCompute={totalRamMb:M.reduce((C,_)=>C+(_.ram_mb||0),0),totalVramMb:M.reduce((C,_)=>C+(_.vram_mb||0),0),totalCpuCores:M.reduce((C,_)=>C+(_.cpu_cores||0),0),totalBandwidthMbps:M.reduce((C,_)=>C+(_.bandwidth_mbps||0),0),activeNodes:$.length,totalNodes:M.length,avgLoad:$.length>0?$.reduce((C,_)=>C+(_.load||0),0)/$.length:0}}t(g);const y=x.nodes||[],k=a().networkNode.nodeId,b=k?y.find(M=>(M.node_id||M.nodeId)===k):null,j=y.filter(M=>M.status==="active"),w={t:Date.now(),globalSessions:x.activeSessions||0,mySessions:(b==null?void 0:b.active_sessions)??(b==null?void 0:b.sessions)??0,nodeCount:j.length,avgLoad:j.length>0?j.reduce((M,$)=>M+($.load||0),0)/j.length:0,myLoad:(b==null?void 0:b.load)??0};let S=[...a().networkSnapshots,w];S.length>100&&(S=S.slice(-100)),t({networkSnapshots:S});break}case"network:install:progress":{const{step:x,message:g,percent:y}=r.data||{};x==="done"?(t({networkInstalled:!0,networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),a().addToast("success","Network package installed")):t(x==="error"?{networkInstallProgress:{installing:!1,step:"error",message:g||"Install failed",percent:0,error:g||"Install failed"}}:{networkInstallProgress:{installing:!0,step:x||"progress",message:g||"",percent:Number.isFinite(y)?Math.max(0,Math.min(100,y)):a().networkInstallProgress.percent,error:null}});break}case"network:update:available":{const{installed:x,latest:g,updateAvailable:y}=r.data||{};t({networkVersion:{installed:x??a().networkVersion.installed,latest:g??a().networkVersion.latest,updateAvailable:!!y}});break}case"network:update:progress":{const{step:x,message:g,percent:y,version:k,error:b}=r.data||{};x==="done"?(t({networkUpdateProgress:{updating:!1,step:null,message:null,percent:0,error:null},networkVersion:{...a().networkVersion,installed:k||a().networkVersion.latest||a().networkVersion.installed,updateAvailable:!1}}),a().addToast("success","Network package updated")):x==="error"?(t({networkUpdateProgress:{updating:!1,step:"error",message:g||b||"Update failed",percent:0,error:g||b||"Update failed"}}),a().addToast("error","Network update failed",g||b)):t({networkUpdateProgress:{updating:!0,step:x||"progress",message:g||"",percent:Number.isFinite(y)?Math.max(0,Math.min(100,y)):a().networkUpdateProgress.percent,error:null}});break}case"config:updated":a().fetchBetaStatus(),a().fetchNetworkInstallStatus();break;case"conversation:created":{const x=r.data;x&&t(g=>({conversations:[x,...g.conversations.filter(y=>y.id!==x.id)]}));break}case"conversation:updated":{const x=r.data;x&&t(g=>({conversations:g.conversations.map(y=>y.id===x.id?{...y,...x}:y)}));break}case"conversation:deleted":{const x=((f=r.data)==null?void 0:f.id)||r.id;x&&t(g=>{const y=g.conversations.filter(j=>j.id!==x),k={...g.conversationMessages};delete k[x];const b=g.activeConversationId===x?null:g.activeConversationId;return b!==g.activeConversationId&&localStorage.setItem("groove:activeConversationId",""),{conversations:y,conversationMessages:k,activeConversationId:b}});break}case"conversation:chunk":{const{conversationId:x,text:g}=r.data||r;if(!x||!g)break;t(y=>{const k={...y.conversationMessages};k[x]||(k[x]=[]);const b=[...k[x]],j=b[b.length-1];return j&&j.from==="assistant"&&Date.now()-j.timestamp<3e4?b[b.length-1]={...j,text:j.text+g,timestamp:Date.now()}:b.push({from:"assistant",text:g,timestamp:Date.now()}),k[x]=b.slice(-200),{conversationMessages:k,streamingConversationId:x}});break}case"conversation:complete":{const{conversationId:x}=r.data||r;x&&a().streamingConversationId===x&&t({sendingMessage:!1,streamingConversationId:null}),x&&oa("groove:conversationMessages",a().conversationMessages);break}case"conversation:error":{const{conversationId:x,error:g}=r.data||r;x&&t(y=>{const k={...y.conversationMessages};k[x]||(k[x]=[]),k[x]=[...k[x],{from:"system",text:`Error: ${g||"Unknown error"}`,timestamp:Date.now()}],oa("groove:conversationMessages",k);const b=y.streamingConversationId===x;return{conversationMessages:k,sendingMessage:b?!1:y.sendingMessage,streamingConversationId:b?null:y.streamingConversationId}});break}}},s.onclose=()=>{En&&(clearInterval(En),En=null),t({connected:!1,hydrated:!1,ws:null,daemonHost:null,tunneled:!1}),setTimeout(()=>a().connect(),2e3)},s.onerror=()=>s.close()},setActiveView(s){t({activeView:s})},async fetchTeams(){try{const s=await X.get("/teams");let c=s.teams||[];const r=s.defaultTeamId;try{const f=JSON.parse(localStorage.getItem("groove:teamOrder")||"[]");if(f.length){const x=Object.fromEntries(c.map(k=>[k.id,k])),g=f.filter(k=>x[k]).map(k=>x[k]),y=c.filter(k=>!f.includes(k.id));c=[...g,...y]}}catch{}const{activeTeamId:l}=a(),p=c.map(f=>f.id).includes(l)?l:r;t({teams:c,activeTeamId:p}),p&&localStorage.setItem("groove:activeTeamId",p)}catch{}},switchTeam(s){const{activeTeamId:c,detailPanel:r,teamDetailPanels:l}=a(),u={...l};c&&(u[c]=r);const p=u[s]||null;t({activeTeamId:s,detailPanel:p,teamDetailPanels:u}),localStorage.setItem("groove:activeTeamId",s)},async createTeam(s,c){try{const r={name:s};c&&(r.workingDir=c);const l=await X.post("/teams",r);return t({activeTeamId:l.id}),localStorage.setItem("groove:activeTeamId",l.id),a().addToast("success",`Team "${s}" created`),l}catch(r){throw a().addToast("error","Failed to create team",r.message),r}},async deleteTeam(s){const c=a().teams.find(r=>r.id===s);try{await X.delete(`/teams/${encodeURIComponent(s)}`);const r=c!=null&&c.isDefault?"wiped":"deleted";a().addToast("info",`Team "${c==null?void 0:c.name}" ${r}`)}catch(r){a().addToast("error","Failed to delete team",r.message)}},reorderTeams(s,c){const r=[...a().teams],[l]=r.splice(s,1);r.splice(c,0,l),t({teams:r});try{localStorage.setItem("groove:teamOrder",JSON.stringify(r.map(u=>u.id)))}catch{}},async cloneTeam(s){const c=a().teams.find(l=>l.id===s);if(!c)return;const r=a().agents.filter(l=>l.teamId===s);try{const l=await X.post("/teams",{name:`${c.name} (copy)`});t({activeTeamId:l.id}),localStorage.setItem("groove:activeTeamId",l.id);for(const u of r)await X.post("/agents",{role:u.role,name:u.name,provider:u.provider,model:u.model,scope:u.scope,teamId:l.id});return a().addToast("success",`Cloned "${c.name}" with ${r.length} agent${r.length!==1?"s":""}`),l}catch(l){a().addToast("error","Failed to clone team",l.message)}},async renameTeam(s,c){try{const r=await X.patch(`/teams/${encodeURIComponent(s)}`,{name:c});return t(l=>({teams:l.teams.map(u=>u.id===s?r:u)})),r}catch(r){throw a().addToast("error","Failed to rename team",r.message),r}},openDetail(s){const c=a().activeTeamId;t(r=>({detailPanel:s,teamDetailPanels:{...r.teamDetailPanels,[c]:s}}))},closeDetail(){const s=a().activeTeamId;t(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},selectAgent(s){const c=a().activeTeamId,r={type:"agent",agentId:s};t(l=>({detailPanel:r,teamDetailPanels:{...l.teamDetailPanels,[c]:r}}))},clearSelection(){const s=a().activeTeamId;t(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},toggleCommandPalette(){t(s=>({commandPaletteOpen:!s.commandPaletteOpen}))},toggleQuickConnect(){t(s=>({quickConnectOpen:!s.quickConnectOpen}))},setUpgradeModalOpen:s=>t({upgradeModalOpen:s}),setDetailPanelWidth(s){t({detailPanelWidth:s}),localStorage.setItem("groove:detailWidth",String(s))},setTerminalVisible(s){t({terminalVisible:s}),localStorage.setItem("groove:terminalVisible",String(s))},setTerminalHeight(s){t({terminalHeight:s}),localStorage.setItem("groove:terminalHeight",String(s))},setTerminalFullHeight(s){t({terminalFullHeight:s})},toggleNodeExpanded(s){const c={...a().expandedNodes};c[s]=!c[s],c[s]||delete c[s],t({expandedNodes:c}),oa("groove:expandedNodes",c)},addToast(s,c,r,l,u={}){const p=++SY,f=!!u.persistent,x=u.duration;t(g=>({toasts:[...g.toasts,{id:p,type:s,message:c,detail:r,action:l,persistent:f,duration:x}]}))},removeToast(s){t(c=>({toasts:c.toasts.filter(r=>r.id!==s)}))},installUpdate(){var s,c;(c=(s=window.groove)==null?void 0:s.update)==null||c.installUpdate()},setUpdateModalOpen(s){t({updateModalOpen:s})},checkForUpdate(){var s,c;(c=(s=window.groove)==null?void 0:s.update)==null||c.checkForUpdate()},async checkMarketplaceAuth(){try{const s=await X.get("/auth/status");t({marketplaceAuthenticated:s.authenticated||!1,marketplaceUser:s.user||null});try{const c=await X.get("/edition");t({edition:c.edition||"community",subscription:{plan:c.plan||"community",status:c.status||(c.subscriptionActive?"active":"none"),active:c.subscriptionActive===!0,features:c.features||[],seats:c.seats||1,periodEnd:c.periodEnd||null,cancelAtPeriodEnd:c.cancelAtPeriodEnd||!1}})}catch{}}catch{t({marketplaceAuthenticated:!1,marketplaceUser:null})}},async marketplaceLogin(){try{const s=await X.get("/auth/login-url");s.url&&window.open(s.url,"_blank");const c=setInterval(async()=>{var r,l;try{const u=await X.get("/auth/status");if(u.authenticated){clearInterval(c),t({marketplaceAuthenticated:!0,marketplaceUser:u.user}),a().addToast("success",`Signed in as ${((r=u.user)==null?void 0:r.displayName)||((l=u.user)==null?void 0:l.id)||"user"}`);try{const p=await X.get("/edition");t({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}setTimeout(async()=>{try{const p=await X.get("/edition");t({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}},2e3)}}catch{}},2e3);setTimeout(()=>clearInterval(c),3e5)}catch(s){a().addToast("error","Login failed",s.message)}},async marketplaceLogout(){try{await X.post("/auth/logout"),t({marketplaceAuthenticated:!1,marketplaceUser:null}),a().addToast("info","Signed out of marketplace")}catch(s){a().addToast("error","Logout failed",s.message)}},async marketplaceCheckout(s){try{const c=await X.post("/auth/checkout",{skillId:s});return c.url&&window.open(c.url,"_blank"),c}catch(c){throw a().addToast("error","Checkout failed",c.message),c}},async fetchSubscriptionPlans(){return X.get("/subscription/plans")},async startCheckout(s){var c,r;try{const l=await X.post("/subscription/checkout",{priceId:s});return l.url&&((c=window.groove)!=null&&c.openExternal?window.groove.openExternal(l.url):window.open(l.url,"_blank")),l}catch(l){throw l.status===401||(r=l.message)!=null&&r.includes("Not authenticated")?(a().addToast("info","Please sign in to subscribe"),a().marketplaceLogin()):l.status===409?a().addToast("info","Already subscribed","Use Manage Subscription to switch plans"):a().addToast("error","Checkout failed",l.message),l}},async openPortal(){var s;try{const c=await X.post("/subscription/portal");return c.url&&((s=window.groove)!=null&&s.openExternal?window.groove.openExternal(c.url):window.open(c.url,"_blank")),c}catch(c){throw a().addToast("error","Portal failed",c.message),c}},async updateSeats(s){try{const c=await X.patch("/subscription",{seats:s});return t({subscription:{...a().subscription,...c}}),a().addToast("success",`Updated to ${s} seat${s!==1?"s":""}`),c}catch(c){throw a().addToast("error","Seat update failed",c.message),c}},async fetchApprovals(){try{const s=await X.get("/approvals");t({pendingApprovals:s.pending||[],resolvedApprovals:s.resolved||[]})}catch{}},async approveRequest(s){try{await X.post(`/approvals/${encodeURIComponent(s)}/approve`),t(c=>({pendingApprovals:c.pendingApprovals.filter(r=>r.id!==s)})),a().addToast("success","Approved")}catch(c){a().addToast("error","Approve failed",c.message)}},async rejectRequest(s,c=""){try{await X.post(`/approvals/${encodeURIComponent(s)}/reject`,{reason:c}),t(r=>({pendingApprovals:r.pendingApprovals.filter(l=>l.id!==s)})),a().addToast("info","Rejected")}catch(r){a().addToast("error","Reject failed",r.message)}},async checkRecommendedTeam(){var s;try{const c=await X.get("/recommended-team");if(!c||!((s=c.agents)!=null&&s.length)){t({recommendedTeam:null});return}const r=c.teamId||null;if(r){const l=a().agents.filter(f=>f.teamId===r&&f.role!=="planner"),u=c.agents.filter(f=>!f.phase||f.phase===1).map(f=>f.role);if(u.every(f=>l.some(x=>x.role===f))&&u.length>0){if(a()._delegatingTeamIds.has(r))return;t(f=>({recommendedTeam:null,_delegatingTeamIds:new Set([...f._delegatingTeamIds,r])}));try{const x=(await X.post("/recommended-team/launch",{teamId:r})).agents||[],g=x.map(y=>y.name).join(", ")||"";a().addToast("success","Planner delegated work",g?`→ ${g}`:void 0),x.length>0&&t(y=>({thinkingAgents:new Set([...y.thinkingAgents,...x.map(k=>k.id)])}))}finally{t(f=>{const x=new Set(f._delegatingTeamIds);return x.delete(r),{_delegatingTeamIds:x}})}return}}t({recommendedTeam:{...c,teamId:c.teamId||null}})}catch{t({recommendedTeam:null})}},async launchRecommendedTeam(s){var c;try{const r=((c=a().recommendedTeam)==null?void 0:c.teamId)||null;t({recommendedTeam:null}),a().addToast("info","Launching team...");const l={...s&&{agents:s},...r&&{teamId:r}},u=await X.post("/recommended-team/launch",l),p=[u.phase2Pending?`${u.phase2Pending} QC queued`:"",u.projectDir?`→ ${u.projectDir}/`:""].filter(Boolean).join(" · ");a().addToast("success",`Launched ${(u.launched||0)+(u.reused||0)} agents`,p||void 0);const f=u.agents||[];f.length>0&&t(g=>({thinkingAgents:new Set([...g.thinkingAgents,...f.map(y=>y.id)])}));const x=(l==null?void 0:l.teamId)||(u==null?void 0:u.teamId)||null;return x&&X.post("/cleanup",{teamId:x}).catch(()=>{}),u}catch(r){throw a().addToast("error","Launch failed",r.message),r}},async fetchImportedRepos(){try{const s=await X.get("/repos/imported");t({importedRepos:s})}catch{}},async previewRepo(s){return X.post("/repos/preview",{repoUrl:s})},async importRepo(s,c,r,l){t({importInProgress:!0});try{const u=await X.post("/repos/import",{repoUrl:s,targetPath:c,createTeam:r,teamName:l});return a().fetchImportedRepos(),u}finally{t({importInProgress:!1})}},async softRemoveRepo(s){await X.delete(`/repos/${encodeURIComponent(s)}/remove`),a().fetchImportedRepos()},async hardNukeRepo(s,c=!0){await X.delete(`/repos/${encodeURIComponent(s)}/nuke?deleteFiles=${c}`),a().fetchImportedRepos()},async fetchProjectDir(){try{const s=await X.get("/project-dir"),c=/^\/home\/[^/]+$/.test(s.projectDir)||s.projectDir==="/root";t({projectDir:s.projectDir,recentProjects:s.recentProjects||[],showProjectPicker:c||(s.recentProjects||[]).length===0})}catch{}},async setProjectDir(s){const c=await X.post("/project-dir",{path:s});t({projectDir:c.projectDir,recentProjects:c.recentProjects||[],showProjectPicker:!1})},toggleProjectPicker(){t(s=>({showProjectPicker:!s.showProjectPicker}))},async fetchTunnels(){try{const s=await X.get("/tunnels");t({savedTunnels:Array.isArray(s)?s:[]})}catch{}},async saveTunnel(s){const c=await X.post("/tunnels",s);return a().fetchTunnels(),c},async updateTunnel(s,c){const r=await X.patch(`/tunnels/${encodeURIComponent(s)}`,c);return a().fetchTunnels(),r},async deleteTunnel(s){await X.delete(`/tunnels/${encodeURIComponent(s)}`),a().fetchTunnels()},async testTunnel(s){return X.post(`/tunnels/${encodeURIComponent(s)}/test`)},async connectTunnel(s){var r,l;const c=await X.post(`/tunnels/${encodeURIComponent(s)}/connect`);return t({activeTunnelId:s}),a().fetchTunnels(),c.localPort&&c.name&&((l=(r=window.groove)==null?void 0:r.remote)!=null&&l.openWindow?window.groove.remote.openWindow(c.localPort,c.name):window.open(`http://localhost:${c.localPort}?instance=${encodeURIComponent(c.name)}`,"_blank")),c},async disconnectTunnel(s){var r,l;const c=a().savedTunnels.find(u=>u.id===s);await X.post(`/tunnels/${encodeURIComponent(s)}/disconnect`),t({activeTunnelId:null}),a().fetchTunnels(),c!=null&&c.localPort&&((l=(r=window.groove)==null?void 0:r.remote)!=null&&l.closeByPort)&&window.groove.remote.closeByPort(c.localPort)},async installTunnel(s){return X.post(`/tunnels/${encodeURIComponent(s)}/install`)},async startTunnel(s){return X.post(`/tunnels/${encodeURIComponent(s)}/start`)},async fetchJournalist(){try{const s=await X.get("/journalist");return t({journalistStatus:s}),s}catch{return null}},async triggerJournalistCycle(){try{const s=await X.post("/journalist/cycle");return a().addToast("success","Synthesis cycle triggered"),t({journalistStatus:s}),s}catch(s){throw a().addToast("error","Synthesis failed",s.message),s}},async spawnAgent(s){try{const c=a().activeTeamId,r=await X.post("/agents",{...s,teamId:c});return a().addToast("success",`Spawned ${r.name}`),r}catch(c){throw a().addToast("error","Spawn failed",c.message),c}},async killAgent(s,c=!1){try{await X.delete(`/agents/${encodeURIComponent(s)}?purge=${c}`),c&&t(r=>{const l={...r.chatHistory},u={...r.activityLog},p={...r.tokenTimeline};return delete l[s],delete u[s],delete p[s],oa("groove:chatHistory",l),oa("groove:activityLog",u),{chatHistory:l,activityLog:u,tokenTimeline:p}})}catch(r){a().addToast("error","Kill failed",r.message)}},async rotateAgent(s){try{return await X.post(`/agents/${encodeURIComponent(s)}/rotate`)}catch(c){throw a().addToast("error","Rotation failed",c.message),c}},async fetchProviders(){return X.get("/providers")},async fetchOnboardingStatus(){try{const s=await X.get("/onboarding/status");return s!=null&&s.complete&&(t({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true")),s}catch{return null}},dismissOnboarding(){t({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true"),X.post("/onboarding/dismiss").catch(()=>{})},async installProvider(s){try{const c=await X.post("/onboarding/install-provider",{provider:s});return a().addToast("success",`${s} installed`),c}catch(c){throw a().addToast("error",`Install failed: ${s}`,c.message),c}},async setDefaultProvider(s,c){try{await X.post("/onboarding/set-default",{provider:s,model:c}),a().addToast("success",`Default set to ${s} (${c})`)}catch(r){throw a().addToast("error","Failed to set default",r.message),r}},addChatMessage(s,c,r,l=!1){t(u=>{const p={...u.chatHistory};return p[s]||(p[s]=[]),p[s]=[...p[s].slice(-100),{from:c,text:r,timestamp:Date.now(),isQuery:l}],oa("groove:chatHistory",p),{chatHistory:p}})},thinkingAgents:new Set,async stopAgent(s){try{await X.post(`/agents/${encodeURIComponent(s)}/stop`),t(c=>{const r=new Set(c.thinkingAgents);return r.delete(s),{thinkingAgents:r}}),a().addToast("info","Stopped agent")}catch(c){a().addToast("error","Stop failed",c.message)}},async instructAgent(s,c){var l,u,p;a().addChatMessage(s,"user",c,!1),t(f=>({thinkingAgents:new Set([...f.thinkingAgents,s])}));const r={chatHistory:[...a().chatHistory[s]||[]],activityLog:[...a().activityLog[s]||[]],tokenTimeline:[...a().tokenTimeline[s]||[]]};try{const f=await X.post(`/agents/${encodeURIComponent(s)}/instruct`,{message:c});if(f.status==="message_sent")return f;if(f.status==="message_queued")return t(g=>{const y=new Set(g.thinkingAgents);return y.delete(s),{thinkingAgents:y}}),f;const x=f;for(const g of["chatHistory","activityLog","tokenTimeline"])(l=r[g])!=null&&l.length&&t(y=>({[g]:{...y[g],[x.id]:[...r[g]]}}));return t(g=>{const y=new Set(g.thinkingAgents);return y.delete(s),y.add(x.id),{thinkingAgents:y}}),(u=a().chatHistory[x.id])!=null&&u.length&&oa("groove:chatHistory",a().chatHistory),(p=a().activityLog[x.id])!=null&&p.length&&oa("groove:activityLog",a().activityLog),a().selectAgent(x.id),x}catch(f){throw t(x=>{const g=new Set(x.thinkingAgents);return g.delete(s),{thinkingAgents:g}}),a().addChatMessage(s,"system",`failed: ${f.message}`),f}},async queryAgent(s,c){a().addChatMessage(s,"user",c,!0);try{const r=await X.post(`/agents/${encodeURIComponent(s)}/query`,{message:c});return a().addChatMessage(s,"agent",r.response),r}catch(r){throw a().addChatMessage(s,"system",`query failed: ${r.message}`),r}},async fetchConversations(){try{const s=await X.get("/conversations");t({conversations:s.conversations||s||[]})}catch{}},async createConversation(s,c,r="api"){try{const l=await X.post("/conversations",{provider:s,model:c,mode:r});return t(u=>({conversations:[l,...u.conversations.filter(p=>p.id!==l.id)],activeConversationId:l.id})),localStorage.setItem("groove:activeConversationId",l.id),l}catch(l){throw a().addToast("error","Failed to create conversation",l.message),l}},async setConversationMode(s,c){try{const r=await X.patch(`/conversations/${encodeURIComponent(s)}`,{mode:c});t(l=>({conversations:l.conversations.map(u=>u.id===s?{...u,...r}:u)}))}catch(r){a().addToast("error","Mode change failed",r.message)}},async setConversationModel(s,c,r){try{const l=await X.patch(`/conversations/${encodeURIComponent(s)}`,{provider:c,model:r});t(u=>({conversations:u.conversations.map(p=>p.id===s?{...p,...l}:p)}))}catch(l){a().addToast("error","Model change failed",l.message)}},async stopChatStreaming(s){try{await X.post(`/conversations/${encodeURIComponent(s)}/stop`),t({sendingMessage:!1,streamingConversationId:null})}catch{}},async deleteConversation(s){try{await X.delete(`/conversations/${encodeURIComponent(s)}`),t(c=>{var p;const r=c.conversations.filter(f=>f.id!==s),l={...c.conversationMessages};delete l[s],oa("groove:conversationMessages",l);const u=c.activeConversationId===s?((p=r[0])==null?void 0:p.id)||null:c.activeConversationId;return localStorage.setItem("groove:activeConversationId",u||""),{conversations:r,conversationMessages:l,activeConversationId:u}})}catch(c){a().addToast("error","Delete failed",c.message)}},async renameConversation(s,c){try{const r=await X.patch(`/conversations/${encodeURIComponent(s)}`,{title:c});t(l=>({conversations:l.conversations.map(u=>u.id===s?{...u,...r}:u)}))}catch(r){a().addToast("error","Rename failed",r.message)}},async pinConversation(s,c){try{const r=await X.patch(`/conversations/${encodeURIComponent(s)}`,{pinned:c});t(l=>({conversations:l.conversations.map(u=>u.id===s?{...u,...r}:u)}))}catch(r){a().addToast("error","Pin failed",r.message)}},setActiveConversation(s){t({activeConversationId:s}),localStorage.setItem("groove:activeConversationId",s||"")},async sendChatMessage(s,c){const r=a().conversations.find(l=>l.id===s);if(r){t(l=>{const u={...l.conversationMessages};return u[s]||(u[s]=[]),u[s]=[...u[s],{from:"user",text:c,timestamp:Date.now()}],oa("groove:conversationMessages",u),{conversationMessages:u,sendingMessage:!0,streamingConversationId:s}});try{const l={message:c};if(r.mode==="api"||!r.mode){const u=a().conversationMessages[s]||[];l.history=u.slice(0,-1)}await X.post(`/conversations/${encodeURIComponent(s)}/message`,l)}catch(l){t(u=>{const p={...u.conversationMessages};return p[s]||(p[s]=[]),p[s]=[...p[s],{from:"system",text:`Failed: ${l.message}`,timestamp:Date.now()}],oa("groove:conversationMessages",p),{conversationMessages:p,sendingMessage:!1,streamingConversationId:null}}),a().addToast("error","Message failed",l.message)}}},async openFile(s){var l;if(a().editorFiles[s]||a().editorOpenTabs.includes(s)){t(u=>({editorActiveFile:s,editorOpenTabs:u.editorOpenTabs.includes(s)?u.editorOpenTabs:[...u.editorOpenTabs,s]}));return}const c=(l=s.split(".").pop())==null?void 0:l.toLowerCase();if(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif","mp4","webm","mov","avi","mkv","ogv"].includes(c)){t(u=>({editorActiveFile:s,editorOpenTabs:[...u.editorOpenTabs,s]}));return}try{const u=await X.get(`/files/read?path=${encodeURIComponent(s)}`);if(u.binary){a().addToast("warning","Binary file — cannot open");return}t(f=>({editorFiles:{...f.editorFiles,[s]:{content:u.content,originalContent:u.content,language:u.language,loadedAt:Date.now()}},editorActiveFile:s,editorOpenTabs:f.editorOpenTabs.includes(s)?f.editorOpenTabs:[...f.editorOpenTabs,s]}));const p=a().ws;(p==null?void 0:p.readyState)===1&&p.send(JSON.stringify({type:"editor:watch",path:s}))}catch(u){a().addToast("error","Failed to open file",u.message)}},closeFile(s){t(r=>{const l=r.editorOpenTabs.filter(x=>x!==s),u={...r.editorFiles};delete u[s];const p={...r.editorChangedFiles};delete p[s];let f=r.editorActiveFile;if(f===s){const x=r.editorOpenTabs.indexOf(s);f=l[Math.min(x,l.length-1)]||null}return{editorOpenTabs:l,editorFiles:u,editorChangedFiles:p,editorActiveFile:f}});const c=a().ws;(c==null?void 0:c.readyState)===1&&c.send(JSON.stringify({type:"editor:unwatch",path:s}))},setActiveFile(s){t({editorActiveFile:s})},setEditorSidebarWidth(s){t({editorSidebarWidth:s}),localStorage.setItem("groove:editorSidebarWidth",String(s))},updateFileContent(s,c){t(r=>({editorFiles:{...r.editorFiles,[s]:{...r.editorFiles[s],content:c}}}))},async saveFile(s){const c=a().editorFiles[s];if(c)try{await X.post("/files/write",{path:s,content:c.content}),t(r=>({editorFiles:{...r.editorFiles,[s]:{...r.editorFiles[s],originalContent:c.content}},editorChangedFiles:(()=>{const l={...r.editorChangedFiles};return delete l[s],l})(),editorRecentSaves:{...r.editorRecentSaves,[s]:Date.now()}})),a().addToast("success","File saved")}catch(r){a().addToast("error","Save failed",r.message)}},async reloadFile(s){try{const c=await X.get(`/files/read?path=${encodeURIComponent(s)}`);if(c.binary)return;t(r=>({editorFiles:{...r.editorFiles,[s]:{content:c.content,originalContent:c.content,language:c.language,loadedAt:Date.now()}},editorChangedFiles:(()=>{const l={...r.editorChangedFiles};return delete l[s],l})()}))}catch{}},dismissFileChange(s){t(c=>{const r={...c.editorChangedFiles};return delete r[s],{editorChangedFiles:r}})},async fetchTreeDir(s){try{const c=await X.get(`/files/tree?path=${encodeURIComponent(s)}`);t(r=>({editorTreeCache:{...r.editorTreeCache,[s]:c.entries}}))}catch{}},async createFile(s){try{await X.post("/files/create",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(c),a().addToast("success","File created"),!0}catch(c){return a().addToast("error","Create failed",c.message),!1}},async createDir(s){try{await X.post("/files/mkdir",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(c),a().addToast("success","Folder created"),!0}catch(c){return a().addToast("error","Create failed",c.message),!1}},async deleteFile(s){try{await X.delete(`/files/delete?path=${encodeURIComponent(s)}`),a().editorOpenTabs.includes(s)&&a().closeFile(s);const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(c),t(r=>{const l={...r.editorTreeCache};return delete l[s],{editorTreeCache:l}}),a().addToast("success","Deleted"),!0}catch(c){return a().addToast("error","Delete failed",c.message),!1}},async fetchFederationStatus(){try{const s=await X.get("/federation");return t(c=>{var r;return{federation:{...c.federation,peers:s.peers||[],whitelist:s.whitelist||[],connections:s.connections||[],ambassadors:((r=s.ambassadors)==null?void 0:r.ambassadors)||s.ambassadors||[]}}}),s}catch{return null}},async addToWhitelist(s,c=31415,r){try{await X.post("/federation/whitelist",{ip:s,port:c,...r&&{name:r}}),a().addToast("success",`Added ${s} to whitelist`),a().fetchFederationStatus()}catch(l){throw a().addToast("error","Whitelist failed",l.message),l}},async removeFromWhitelist(s){try{await X.delete(`/federation/whitelist/${encodeURIComponent(s)}`),a().addToast("info",`Removed ${s}`),a().fetchFederationStatus()}catch(c){a().addToast("error","Remove failed",c.message)}},setSelectedPeer(s){t(c=>({federation:{...c.federation,selectedPeerId:s}}))},async fetchPouchLog(s){try{const c=await X.get(`/federation/pouch/log${s?`?peerId=${encodeURIComponent(s)}`:""}`);t(r=>({federation:{...r.federation,pouchLog:c||[]}}))}catch{}},async sendPouch(s,c){try{const r=await X.post("/federation/pouch/send",{peerId:s,contract:c});return a().addToast("success","Pouch sent"),r}catch(r){throw a().addToast("error","Pouch send failed",r.message),r}},async fetchBetaStatus(){try{const s=await X.get("/beta/status");t({networkUnlocked:!!(s!=null&&s.unlocked)})}catch{}},async activateBeta(s){const c=await X.post("/beta/activate",{code:s});if(!(c!=null&&c.unlocked))throw new Error((c==null?void 0:c.message)||"Invalid invite code");return t({networkUnlocked:!0}),c},async deactivateBeta(){try{await X.post("/beta/deactivate"),t({networkUnlocked:!1,activeView:a().activeView==="network"?"agents":a().activeView})}catch(s){throw a().addToast("error","Deactivate failed",s.message),s}},async fetchNetworkNodeStatus(){try{const s=await X.get("/network/node/status"),c={networkNode:{...a().networkNode,...s||{}}};return s&&typeof s.installed=="boolean"&&(c.networkInstalled=s.installed),t(c),s}catch{return null}},async fetchNetworkInstallStatus(){try{const s=await X.get("/network/install/status");return s&&typeof s.installed=="boolean"&&t({networkInstalled:s.installed}),s}catch{return null}},async installNetworkPackage(){t({networkInstallProgress:{installing:!0,step:"starting",message:"Starting install…",percent:0,error:null}});try{await X.post("/network/install")}catch(s){t({networkInstallProgress:{installing:!1,step:"error",message:s.message,percent:0,error:s.message}}),a().addToast("error","Install failed",s.message)}},async uninstallNetworkPackage(){try{await X.post("/network/uninstall"),t({networkInstalled:!1,networkNode:{active:!1,status:"disconnected",nodeId:null,layers:null,model:null,sessions:0,hardware:null},networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),a().addToast("success","Network package uninstalled")}catch(s){throw a().addToast("error","Uninstall failed",s.message),s}},async fetchNetworkStatus(){try{const s=await X.get("/network/status"),c={networkStatus:{...a().networkStatus,...s||{}},networkStatusReachable:!0};if(s!=null&&s.compute){const r=s.compute;c.networkCompute={totalRamMb:r.totalRamMb??r.total_ram_mb??0,totalVramMb:r.totalVramMb??r.total_vram_mb??0,totalCpuCores:r.totalCpuCores??r.total_cpu_cores??0,totalBandwidthMbps:r.totalBandwidthMbps??r.total_bandwidth_mbps??0,activeNodes:r.activeNodes??r.active_nodes??0,totalNodes:r.totalNodes??r.total_nodes??0,avgLoad:r.avgLoad??r.avg_load??0}}else if(Array.isArray(s==null?void 0:s.nodes)&&s.nodes.length>0){const r=s.nodes,l=r.filter(u=>u.status==="active");c.networkCompute={totalRamMb:r.reduce((u,p)=>u+(p.ram_mb||0),0),totalVramMb:r.reduce((u,p)=>u+(p.vram_mb||0),0),totalCpuCores:r.reduce((u,p)=>u+(p.cpu_cores||0),0),totalBandwidthMbps:r.reduce((u,p)=>u+(p.bandwidth_mbps||0),0),activeNodes:l.length,totalNodes:r.length,avgLoad:l.length>0?l.reduce((u,p)=>u+(p.load||0),0)/l.length:0}}if(t(c),s){const r=a().networkNode.nodeId,l=s.nodes||[],u=r?l.find(g=>(g.node_id||g.nodeId)===r):null,p=l.filter(g=>g.status==="active"),f={t:Date.now(),globalSessions:s.activeSessions||0,mySessions:(u==null?void 0:u.active_sessions)??(u==null?void 0:u.sessions)??0,nodeCount:p.length,avgLoad:p.length>0?p.reduce((g,y)=>g+(y.load||0),0)/p.length:0,myLoad:(u==null?void 0:u.load)??0};let x=[...a().networkSnapshots,f];x.length>100&&(x=x.slice(-100)),t({networkSnapshots:x})}return s}catch{return t({networkStatusReachable:!1}),null}},async checkNetworkUpdate(){try{const s=await X.get("/network/update/check");return s?(t({networkVersion:{installed:s.installed??null,latest:s.latest??null,updateAvailable:!!s.updateAvailable}}),s):null}catch{return null}},async updateNetworkPackage(){t({networkUpdateProgress:{updating:!0,step:"starting",message:"Starting update…",percent:0,error:null}});try{await X.post("/network/update")}catch(s){t({networkUpdateProgress:{updating:!1,step:"error",message:s.message,percent:0,error:s.message}}),a().addToast("error","Update failed",s.message)}},async startNetworkNode(){t({networkNode:{...a().networkNode,status:"connecting"}});try{const s=await X.post("/network/node/start");return t({networkNode:{...a().networkNode,active:!0,...s||{}}}),a().addToast("success","Node started","Connecting to the Groove network"),s}catch(s){throw t({networkNode:{...a().networkNode,status:"disconnected",active:!1}}),a().addToast("error","Node start failed",s.message),s}},async stopNetworkNode(){try{await X.post("/network/node/stop"),t({networkNode:{...a().networkNode,active:!1,status:"disconnected"}}),a().addToast("info","Node stopped")}catch(s){throw a().addToast("error","Node stop failed",s.message),s}},async renameFile(s,c){try{await X.post("/files/rename",{oldPath:s,newPath:c}),t(u=>{const p=u.editorOpenTabs.map(g=>g===s?c:g),f={...u.editorFiles};f[s]&&(f[c]=f[s],delete f[s]);const x=u.editorActiveFile===s?c:u.editorActiveFile;return{editorOpenTabs:p,editorFiles:f,editorActiveFile:x}});const r=s.includes("/")?s.split("/").slice(0,-1).join("/"):"",l=c.includes("/")?c.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(r),l!==r&&await a().fetchTreeDir(l),a().addToast("success","Renamed"),!0}catch(r){return a().addToast("error","Rename failed",r.message),!1}}}));function qX(t){O.useEffect(()=>{function a(s){for(const c of t){const r=c.meta?s.metaKey||s.ctrlKey:!0,l=c.shift?s.shiftKey:!s.shiftKey;if(s.key.toLowerCase()===c.key.toLowerCase()&&r&&l){s.preventDefault(),c.handler();return}}}return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[t])}function Go(){return!!(window.groove||navigator.userAgent.includes("Electron"))}function IX(){var t;return((t=window.groove)==null?void 0:t.platform)||"browser"}function sQ(t){window.groove?window.groove.openExternal(t):window.open(t,"_blank")}async function NY(t={}){var a,s;return(s=(a=window.groove)==null?void 0:a.folders)!=null&&s.select?window.groove.folders.select(t):null}async function RX(t){var a,s;if((s=(a=window.groove)==null?void 0:a.integrations)!=null&&s.oauthStart)return window.groove.integrations.oauthStart(t);window.open(t,"_blank","noopener")}function VX(t){var a,s,c="";if(typeof t=="string"||typeof t=="number")c+=t;else if(typeof t=="object")if(Array.isArray(t)){var r=t.length;for(a=0;a<r;a++)t[a]&&(s=VX(t[a]))&&(c&&(c+=" "),c+=s)}else for(s in t)t[s]&&(c&&(c+=" "),c+=s);return c}function _Y(){for(var t,a,s=0,c="",r=arguments.length;s<r;s++)(t=arguments[s])&&(a=VX(t))&&(c&&(c+=" "),c+=a);return c}const $Y=(t,a)=>{const s=new Array(t.length+a.length);for(let c=0;c<t.length;c++)s[c]=t[c];for(let c=0;c<a.length;c++)s[t.length+c]=a[c];return s},CY=(t,a)=>({classGroupId:t,validator:a}),EX=(t=new Map,a=null,s)=>({nextPart:t,validators:a,classGroupId:s}),oQ="-",LV=[],QY="arbitrary..",LY=t=>{const a=TY(t),{conflictingClassGroups:s,conflictingClassGroupModifiers:c}=t;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return zY(u);const p=u.split(oQ),f=p[0]===""&&p.length>1?1:0;return XX(p,f,a)},getConflictingClassGroupIds:(u,p)=>{if(p){const f=c[u],x=s[u];return f?x?$Y(x,f):f:x||LV}return s[u]||LV}}},XX=(t,a,s)=>{if(t.length-a===0)return s.classGroupId;const r=t[a],l=s.nextPart.get(r);if(l){const x=XX(t,a+1,l);if(x)return x}const u=s.validators;if(u===null)return;const p=a===0?t.join(oQ):t.slice(a).join(oQ),f=u.length;for(let x=0;x<f;x++){const g=u[x];if(g.validator(p))return g.classGroupId}},zY=t=>t.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=t.slice(1,-1),s=a.indexOf(":"),c=a.slice(0,s);return c?QY+c:void 0})(),TY=t=>{const{theme:a,classGroups:s}=t;return PY(s,a)},PY=(t,a)=>{const s=EX();for(const c in t){const r=t[c];$P(r,s,c,a)}return s},$P=(t,a,s,c)=>{const r=t.length;for(let l=0;l<r;l++){const u=t[l];AY(u,a,s,c)}},AY=(t,a,s,c)=>{if(typeof t=="string"){qY(t,a,s);return}if(typeof t=="function"){IY(t,a,s,c);return}RY(t,a,s,c)},qY=(t,a,s)=>{const c=t===""?a:ZX(a,t);c.classGroupId=s},IY=(t,a,s,c)=>{if(VY(t)){$P(t(c),a,s,c);return}a.validators===null&&(a.validators=[]),a.validators.push(CY(s,t))},RY=(t,a,s,c)=>{const r=Object.entries(t),l=r.length;for(let u=0;u<l;u++){const[p,f]=r[u];$P(f,ZX(a,p),s,c)}},ZX=(t,a)=>{let s=t;const c=a.split(oQ),r=c.length;for(let l=0;l<r;l++){const u=c[l];let p=s.nextPart.get(u);p||(p=EX(),s.nextPart.set(u,p)),s=p}return s},VY=t=>"isThemeGetter"in t&&t.isThemeGetter===!0,EY=t=>{if(t<1)return{get:()=>{},set:()=>{}};let a=0,s=Object.create(null),c=Object.create(null);const r=(l,u)=>{s[l]=u,a++,a>t&&(a=0,c=s,s=Object.create(null))};return{get(l){let u=s[l];if(u!==void 0)return u;if((u=c[l])!==void 0)return r(l,u),u},set(l,u){l in s?s[l]=u:r(l,u)}}},nP="!",zV=":",XY=[],TV=(t,a,s,c,r)=>({modifiers:t,hasImportantModifier:a,baseClassName:s,maybePostfixModifierPosition:c,isExternal:r}),ZY=t=>{const{prefix:a,experimentalParseClassName:s}=t;let c=r=>{const l=[];let u=0,p=0,f=0,x;const g=r.length;for(let w=0;w<g;w++){const S=r[w];if(u===0&&p===0){if(S===zV){l.push(r.slice(f,w)),f=w+1;continue}if(S==="/"){x=w;continue}}S==="["?u++:S==="]"?u--:S==="("?p++:S===")"&&p--}const y=l.length===0?r:r.slice(f);let k=y,b=!1;y.endsWith(nP)?(k=y.slice(0,-1),b=!0):y.startsWith(nP)&&(k=y.slice(1),b=!0);const j=x&&x>f?x-f:void 0;return TV(l,b,k,j)};if(a){const r=a+zV,l=c;c=u=>u.startsWith(r)?l(u.slice(r.length)):TV(XY,!1,u,void 0,!0)}if(s){const r=c;c=l=>s({className:l,parseClassName:r})}return c},DY=t=>{const a=new Map;return t.orderSensitiveModifiers.forEach((s,c)=>{a.set(s,1e6+c)}),s=>{const c=[];let r=[];for(let l=0;l<s.length;l++){const u=s[l],p=u[0]==="[",f=a.has(u);p||f?(r.length>0&&(r.sort(),c.push(...r),r=[]),c.push(u)):r.push(u)}return r.length>0&&(r.sort(),c.push(...r)),c}},UY=t=>({cache:EY(t.cacheSize),parseClassName:ZY(t),sortModifiers:DY(t),...LY(t)}),HY=/\s+/,BY=(t,a)=>{const{parseClassName:s,getClassGroupId:c,getConflictingClassGroupIds:r,sortModifiers:l}=a,u=[],p=t.trim().split(HY);let f="";for(let x=p.length-1;x>=0;x-=1){const g=p[x],{isExternal:y,modifiers:k,hasImportantModifier:b,baseClassName:j,maybePostfixModifierPosition:w}=s(g);if(y){f=g+(f.length>0?" "+f:f);continue}let S=!!w,M=c(S?j.substring(0,w):j);if(!M){if(!S){f=g+(f.length>0?" "+f:f);continue}if(M=c(j),!M){f=g+(f.length>0?" "+f:f);continue}S=!1}const $=k.length===0?"":k.length===1?k[0]:l(k).join(":"),C=b?$+nP:$,_=C+M;if(u.indexOf(_)>-1)continue;u.push(_);const P=r(M,S);for(let L=0;L<P.length;++L){const A=P[L];u.push(C+A)}f=g+(f.length>0?" "+f:f)}return f},GY=(...t)=>{let a=0,s,c,r="";for(;a<t.length;)(s=t[a++])&&(c=DX(s))&&(r&&(r+=" "),r+=c);return r},DX=t=>{if(typeof t=="string")return t;let a,s="";for(let c=0;c<t.length;c++)t[c]&&(a=DX(t[c]))&&(s&&(s+=" "),s+=a);return s},WY=(t,...a)=>{let s,c,r,l;const u=f=>{const x=a.reduce((g,y)=>y(g),t());return s=UY(x),c=s.cache.get,r=s.cache.set,l=p,p(f)},p=f=>{const x=c(f);if(x)return x;const g=BY(f,s);return r(f,g),g};return l=u,(...f)=>l(GY(...f))},YY=[],Qt=t=>{const a=s=>s[t]||YY;return a.isThemeGetter=!0,a},UX=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,HX=/^\((?:(\w[\w-]*):)?(.+)\)$/i,FY=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,KY=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,JY=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,eF=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,tF=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,aF=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jo=t=>FY.test(t),qe=t=>!!t&&!Number.isNaN(Number(t)),So=t=>!!t&&Number.isInteger(Number(t)),xT=t=>t.endsWith("%")&&qe(t.slice(0,-1)),Ss=t=>KY.test(t),BX=()=>!0,nF=t=>JY.test(t)&&!eF.test(t),CP=()=>!1,sF=t=>tF.test(t),oF=t=>aF.test(t),cF=t=>!we(t)&&!Me(t),rF=t=>Ko(t,YX,CP),we=t=>UX.test(t),yc=t=>Ko(t,FX,nF),PV=t=>Ko(t,xF,qe),iF=t=>Ko(t,JX,BX),lF=t=>Ko(t,KX,CP),AV=t=>Ko(t,GX,CP),dF=t=>Ko(t,WX,oF),bh=t=>Ko(t,eZ,sF),Me=t=>HX.test(t),e2=t=>T1(t,FX),uF=t=>T1(t,KX),qV=t=>T1(t,GX),hF=t=>T1(t,YX),pF=t=>T1(t,WX),wh=t=>T1(t,eZ,!0),fF=t=>T1(t,JX,!0),Ko=(t,a,s)=>{const c=UX.exec(t);return c?c[1]?a(c[1]):s(c[2]):!1},T1=(t,a,s=!1)=>{const c=HX.exec(t);return c?c[1]?a(c[1]):s:!1},GX=t=>t==="position"||t==="percentage",WX=t=>t==="image"||t==="url",YX=t=>t==="length"||t==="size"||t==="bg-size",FX=t=>t==="length",xF=t=>t==="number",KX=t=>t==="family-name",JX=t=>t==="number"||t==="weight",eZ=t=>t==="shadow",mF=()=>{const t=Qt("color"),a=Qt("font"),s=Qt("text"),c=Qt("font-weight"),r=Qt("tracking"),l=Qt("leading"),u=Qt("breakpoint"),p=Qt("container"),f=Qt("spacing"),x=Qt("radius"),g=Qt("shadow"),y=Qt("inset-shadow"),k=Qt("text-shadow"),b=Qt("drop-shadow"),j=Qt("blur"),w=Qt("perspective"),S=Qt("aspect"),M=Qt("ease"),$=Qt("animate"),C=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[..._(),Me,we],L=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],z=()=>[Me,we,f],Y=()=>[jo,"full","auto",...z()],V=()=>[So,"none","subgrid",Me,we],se=()=>["auto",{span:["full",So,Me,we]},So,Me,we],ne=()=>[So,"auto",Me,we],oe=()=>["auto","min","max","fr",Me,we],R=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],I=()=>["start","end","center","stretch","center-safe","end-safe"],T=()=>["auto",...z()],Z=()=>[jo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],J=()=>[jo,"screen","full","dvw","lvw","svw","min","max","fit",...z()],W=()=>[jo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],U=()=>[t,Me,we],xe=()=>[..._(),qV,AV,{position:[Me,we]}],pe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],fe=()=>["auto","cover","contain",hF,rF,{size:[Me,we]}],Oe=()=>[xT,e2,yc],Se=()=>["","none","full",x,Me,we],ue=()=>["",qe,e2,yc],ve=()=>["solid","dashed","dotted","double"],it=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Le=()=>[qe,xT,qV,AV],Mt=()=>["","none",j,Me,we],lt=()=>["none",qe,Me,we],pt=()=>["none",qe,Me,we],jt=()=>[qe,Me,we],Ke=()=>[jo,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ss],breakpoint:[Ss],color:[BX],container:[Ss],"drop-shadow":[Ss],ease:["in","out","in-out"],font:[cF],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ss],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ss],shadow:[Ss],spacing:["px",qe],text:[Ss],"text-shadow":[Ss],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",jo,we,Me,S]}],container:["container"],columns:[{columns:[qe,we,Me,p]}],"break-after":[{"break-after":C()}],"break-before":[{"break-before":C()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:P()}],overflow:[{overflow:L()}],"overflow-x":[{"overflow-x":L()}],"overflow-y":[{"overflow-y":L()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Y()}],"inset-x":[{"inset-x":Y()}],"inset-y":[{"inset-y":Y()}],start:[{"inset-s":Y(),start:Y()}],end:[{"inset-e":Y(),end:Y()}],"inset-bs":[{"inset-bs":Y()}],"inset-be":[{"inset-be":Y()}],top:[{top:Y()}],right:[{right:Y()}],bottom:[{bottom:Y()}],left:[{left:Y()}],visibility:["visible","invisible","collapse"],z:[{z:[So,"auto",Me,we]}],basis:[{basis:[jo,"full","auto",p,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,jo,"auto","initial","none",we]}],grow:[{grow:["",qe,Me,we]}],shrink:[{shrink:["",qe,Me,we]}],order:[{order:[So,"first","last","none",Me,we]}],"grid-cols":[{"grid-cols":V()}],"col-start-end":[{col:se()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":V()}],"row-start-end":[{row:se()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":oe()}],"auto-rows":[{"auto-rows":oe()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...R(),"normal"]}],"justify-items":[{"justify-items":[...I(),"normal"]}],"justify-self":[{"justify-self":["auto",...I()]}],"align-content":[{content:["normal",...R()]}],"align-items":[{items:[...I(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...I(),{baseline:["","last"]}]}],"place-content":[{"place-content":R()}],"place-items":[{"place-items":[...I(),"baseline"]}],"place-self":[{"place-self":["auto",...I()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:T()}],mx:[{mx:T()}],my:[{my:T()}],ms:[{ms:T()}],me:[{me:T()}],mbs:[{mbs:T()}],mbe:[{mbe:T()}],mt:[{mt:T()}],mr:[{mr:T()}],mb:[{mb:T()}],ml:[{ml:T()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:Z()}],"inline-size":[{inline:["auto",...J()]}],"min-inline-size":[{"min-inline":["auto",...J()]}],"max-inline-size":[{"max-inline":["none",...J()]}],"block-size":[{block:["auto",...W()]}],"min-block-size":[{"min-block":["auto",...W()]}],"max-block-size":[{"max-block":["none",...W()]}],w:[{w:[p,"screen",...Z()]}],"min-w":[{"min-w":[p,"screen","none",...Z()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[u]},...Z()]}],h:[{h:["screen","lh",...Z()]}],"min-h":[{"min-h":["screen","lh","none",...Z()]}],"max-h":[{"max-h":["screen","lh",...Z()]}],"font-size":[{text:["base",s,e2,yc]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[c,fF,iF]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",xT,we]}],"font-family":[{font:[uF,lF,a]}],"font-features":[{"font-features":[we]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,Me,we]}],"line-clamp":[{"line-clamp":[qe,"none",Me,PV]}],leading:[{leading:[l,...z()]}],"list-image":[{"list-image":["none",Me,we]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Me,we]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ve(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Me,yc]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[qe,"auto",Me,we]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Me,we]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Me,we]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:xe()}],"bg-repeat":[{bg:pe()}],"bg-size":[{bg:fe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},So,Me,we],radial:["",Me,we],conic:[So,Me,we]},pF,dF]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:Oe()}],"gradient-via-pos":[{via:Oe()}],"gradient-to-pos":[{to:Oe()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:Se()}],"rounded-s":[{"rounded-s":Se()}],"rounded-e":[{"rounded-e":Se()}],"rounded-t":[{"rounded-t":Se()}],"rounded-r":[{"rounded-r":Se()}],"rounded-b":[{"rounded-b":Se()}],"rounded-l":[{"rounded-l":Se()}],"rounded-ss":[{"rounded-ss":Se()}],"rounded-se":[{"rounded-se":Se()}],"rounded-ee":[{"rounded-ee":Se()}],"rounded-es":[{"rounded-es":Se()}],"rounded-tl":[{"rounded-tl":Se()}],"rounded-tr":[{"rounded-tr":Se()}],"rounded-br":[{"rounded-br":Se()}],"rounded-bl":[{"rounded-bl":Se()}],"border-w":[{border:ue()}],"border-w-x":[{"border-x":ue()}],"border-w-y":[{"border-y":ue()}],"border-w-s":[{"border-s":ue()}],"border-w-e":[{"border-e":ue()}],"border-w-bs":[{"border-bs":ue()}],"border-w-be":[{"border-be":ue()}],"border-w-t":[{"border-t":ue()}],"border-w-r":[{"border-r":ue()}],"border-w-b":[{"border-b":ue()}],"border-w-l":[{"border-l":ue()}],"divide-x":[{"divide-x":ue()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ue()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ve(),"hidden","none"]}],"divide-style":[{divide:[...ve(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-bs":[{"border-bs":U()}],"border-color-be":[{"border-be":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...ve(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Me,we]}],"outline-w":[{outline:["",qe,e2,yc]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",g,wh,bh]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",y,wh,bh]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:ue()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[qe,yc]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":ue()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",k,wh,bh]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[qe,Me,we]}],"mix-blend":[{"mix-blend":[...it(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":it()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Le()}],"mask-image-linear-to-pos":[{"mask-linear-to":Le()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":Le()}],"mask-image-t-to-pos":[{"mask-t-to":Le()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":Le()}],"mask-image-r-to-pos":[{"mask-r-to":Le()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":Le()}],"mask-image-b-to-pos":[{"mask-b-to":Le()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":Le()}],"mask-image-l-to-pos":[{"mask-l-to":Le()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":Le()}],"mask-image-x-to-pos":[{"mask-x-to":Le()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":Le()}],"mask-image-y-to-pos":[{"mask-y-to":Le()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[Me,we]}],"mask-image-radial-from-pos":[{"mask-radial-from":Le()}],"mask-image-radial-to-pos":[{"mask-radial-to":Le()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Le()}],"mask-image-conic-to-pos":[{"mask-conic-to":Le()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:xe()}],"mask-repeat":[{mask:pe()}],"mask-size":[{mask:fe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Me,we]}],filter:[{filter:["","none",Me,we]}],blur:[{blur:Mt()}],brightness:[{brightness:[qe,Me,we]}],contrast:[{contrast:[qe,Me,we]}],"drop-shadow":[{"drop-shadow":["","none",b,wh,bh]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",qe,Me,we]}],"hue-rotate":[{"hue-rotate":[qe,Me,we]}],invert:[{invert:["",qe,Me,we]}],saturate:[{saturate:[qe,Me,we]}],sepia:[{sepia:["",qe,Me,we]}],"backdrop-filter":[{"backdrop-filter":["","none",Me,we]}],"backdrop-blur":[{"backdrop-blur":Mt()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Me,we]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Me,we]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Me,we]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Me,we]}],"backdrop-invert":[{"backdrop-invert":["",qe,Me,we]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Me,we]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Me,we]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Me,we]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Me,we]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Me,we]}],ease:[{ease:["linear","initial",M,Me,we]}],delay:[{delay:[qe,Me,we]}],animate:[{animate:["none",$,Me,we]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Me,we]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:lt()}],"rotate-x":[{"rotate-x":lt()}],"rotate-y":[{"rotate-y":lt()}],"rotate-z":[{"rotate-z":lt()}],scale:[{scale:pt()}],"scale-x":[{"scale-x":pt()}],"scale-y":[{"scale-y":pt()}],"scale-z":[{"scale-z":pt()}],"scale-3d":["scale-3d"],skew:[{skew:jt()}],"skew-x":[{"skew-x":jt()}],"skew-y":[{"skew-y":jt()}],transform:[{transform:[Me,we,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ke()}],"translate-x":[{"translate-x":Ke()}],"translate-y":[{"translate-y":Ke()}],"translate-z":[{"translate-z":Ke()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Me,we]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Me,we]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[qe,e2,yc,PV]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},yF=WY(mF);function K(...t){return yF(_Y(t))}function $e(t,a,{checkForDefaultPrevented:s=!0}={}){return function(r){if(t==null||t(r),s===!1||!r.defaultPrevented)return a==null?void 0:a(r)}}function IV(t,a){if(typeof t=="function")return t(a);t!=null&&(t.current=a)}function QP(...t){return a=>{let s=!1;const c=t.map(r=>{const l=IV(r,a);return!s&&typeof l=="function"&&(s=!0),l});if(s)return()=>{for(let r=0;r<c.length;r++){const l=c[r];typeof l=="function"?l():IV(t[r],null)}}}}function ht(...t){return O.useCallback(QP(...t),t)}function gF(t,a){const s=O.createContext(a),c=l=>{const{children:u,...p}=l,f=O.useMemo(()=>p,Object.values(p));return e.jsx(s.Provider,{value:f,children:u})};c.displayName=t+"Provider";function r(l){const u=O.useContext(s);if(u)return u;if(a!==void 0)return a;throw new Error(`\`${l}\` must be used within \`${t}\``)}return[c,r]}function Ys(t,a=[]){let s=[];function c(l,u){const p=O.createContext(u),f=s.length;s=[...s,u];const x=y=>{var M;const{scope:k,children:b,...j}=y,w=((M=k==null?void 0:k[t])==null?void 0:M[f])||p,S=O.useMemo(()=>j,Object.values(j));return e.jsx(w.Provider,{value:S,children:b})};x.displayName=l+"Provider";function g(y,k){var w;const b=((w=k==null?void 0:k[t])==null?void 0:w[f])||p,j=O.useContext(b);if(j)return j;if(u!==void 0)return u;throw new Error(`\`${y}\` must be used within \`${l}\``)}return[x,g]}const r=()=>{const l=s.map(u=>O.createContext(u));return function(p){const f=(p==null?void 0:p[t])||l;return O.useMemo(()=>({[`__scope${t}`]:{...p,[t]:f}}),[p,f])}};return r.scopeName=t,[c,OF(r,...a)]}function OF(...t){const a=t[0];if(t.length===1)return a;const s=()=>{const c=t.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(l){const u=c.reduce((p,{useScope:f,scopeName:x})=>{const y=f(l)[`__scope${x}`];return{...p,...y}},{});return O.useMemo(()=>({[`__scope${a.scopeName}`]:u}),[u])}};return s.scopeName=a.scopeName,s}function D2(t){const a=kF(t),s=O.forwardRef((c,r)=>{const{children:l,...u}=c,p=O.Children.toArray(l),f=p.find(bF);if(f){const x=f.props.children,g=p.map(y=>y===f?O.Children.count(x)>1?O.Children.only(null):O.isValidElement(x)?x.props.children:null:y);return e.jsx(a,{...u,ref:r,children:O.isValidElement(x)?O.cloneElement(x,void 0,g):null})}return e.jsx(a,{...u,ref:r,children:l})});return s.displayName=`${t}.Slot`,s}function kF(t){const a=O.forwardRef((s,c)=>{const{children:r,...l}=s;if(O.isValidElement(r)){const u=MF(r),p=wF(l,r.props);return r.type!==O.Fragment&&(p.ref=c?QP(c,u):u),O.cloneElement(r,p)}return O.Children.count(r)>1?O.Children.only(null):null});return a.displayName=`${t}.SlotClone`,a}var tZ=Symbol("radix.slottable");function vF(t){const a=({children:s})=>e.jsx(e.Fragment,{children:s});return a.displayName=`${t}.Slottable`,a.__radixId=tZ,a}function bF(t){return O.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===tZ}function wF(t,a){const s={...a};for(const c in a){const r=t[c],l=a[c];/^on[A-Z]/.test(c)?r&&l?s[c]=(...p)=>{const f=l(...p);return r(...p),f}:r&&(s[c]=r):c==="style"?s[c]={...r,...l}:c==="className"&&(s[c]=[r,l].filter(Boolean).join(" "))}return{...t,...s}}function MF(t){var c,r;let a=(c=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:c.get,s=a&&"isReactWarning"in a&&a.isReactWarning;return s?t.ref:(a=(r=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:r.get,s=a&&"isReactWarning"in a&&a.isReactWarning,s?t.props.ref:t.props.ref||t.ref)}var jF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ye=jF.reduce((t,a)=>{const s=D2(`Primitive.${a}`),c=O.forwardRef((r,l)=>{const{asChild:u,...p}=r,f=u?s:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(f,{...p,ref:l})});return c.displayName=`Primitive.${a}`,{...t,[a]:c}},{});function aZ(t,a){t&&$X.flushSync(()=>t.dispatchEvent(a))}function Yt(t){const a=O.useRef(t);return O.useEffect(()=>{a.current=t}),O.useMemo(()=>(...s)=>{var c;return(c=a.current)==null?void 0:c.call(a,...s)},[])}function SF(t,a=globalThis==null?void 0:globalThis.document){const s=Yt(t);O.useEffect(()=>{const c=r=>{r.key==="Escape"&&s(r)};return a.addEventListener("keydown",c,{capture:!0}),()=>a.removeEventListener("keydown",c,{capture:!0})},[s,a])}var NF="DismissableLayer",sP="dismissableLayer.update",_F="dismissableLayer.pointerDownOutside",$F="dismissableLayer.focusOutside",RV,nZ=O.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),CQ=O.forwardRef((t,a)=>{const{disableOutsidePointerEvents:s=!1,onEscapeKeyDown:c,onPointerDownOutside:r,onFocusOutside:l,onInteractOutside:u,onDismiss:p,...f}=t,x=O.useContext(nZ),[g,y]=O.useState(null),k=(g==null?void 0:g.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=O.useState({}),j=ht(a,A=>y(A)),w=Array.from(x.layers),[S]=[...x.layersWithOutsidePointerEventsDisabled].slice(-1),M=w.indexOf(S),$=g?w.indexOf(g):-1,C=x.layersWithOutsidePointerEventsDisabled.size>0,_=$>=M,P=LF(A=>{const z=A.target,Y=[...x.branches].some(V=>V.contains(z));!_||Y||(r==null||r(A),u==null||u(A),A.defaultPrevented||p==null||p())},k),L=zF(A=>{const z=A.target;[...x.branches].some(V=>V.contains(z))||(l==null||l(A),u==null||u(A),A.defaultPrevented||p==null||p())},k);return SF(A=>{$===x.layers.size-1&&(c==null||c(A),!A.defaultPrevented&&p&&(A.preventDefault(),p()))},k),O.useEffect(()=>{if(g)return s&&(x.layersWithOutsidePointerEventsDisabled.size===0&&(RV=k.body.style.pointerEvents,k.body.style.pointerEvents="none"),x.layersWithOutsidePointerEventsDisabled.add(g)),x.layers.add(g),VV(),()=>{s&&x.layersWithOutsidePointerEventsDisabled.size===1&&(k.body.style.pointerEvents=RV)}},[g,k,s,x]),O.useEffect(()=>()=>{g&&(x.layers.delete(g),x.layersWithOutsidePointerEventsDisabled.delete(g),VV())},[g,x]),O.useEffect(()=>{const A=()=>b({});return document.addEventListener(sP,A),()=>document.removeEventListener(sP,A)},[]),e.jsx(Ye.div,{...f,ref:j,style:{pointerEvents:C?_?"auto":"none":void 0,...t.style},onFocusCapture:$e(t.onFocusCapture,L.onFocusCapture),onBlurCapture:$e(t.onBlurCapture,L.onBlurCapture),onPointerDownCapture:$e(t.onPointerDownCapture,P.onPointerDownCapture)})});CQ.displayName=NF;var CF="DismissableLayerBranch",QF=O.forwardRef((t,a)=>{const s=O.useContext(nZ),c=O.useRef(null),r=ht(a,c);return O.useEffect(()=>{const l=c.current;if(l)return s.branches.add(l),()=>{s.branches.delete(l)}},[s.branches]),e.jsx(Ye.div,{...t,ref:r})});QF.displayName=CF;function LF(t,a=globalThis==null?void 0:globalThis.document){const s=Yt(t),c=O.useRef(!1),r=O.useRef(()=>{});return O.useEffect(()=>{const l=p=>{if(p.target&&!c.current){let f=function(){sZ(_F,s,x,{discrete:!0})};const x={originalEvent:p};p.pointerType==="touch"?(a.removeEventListener("click",r.current),r.current=f,a.addEventListener("click",r.current,{once:!0})):f()}else a.removeEventListener("click",r.current);c.current=!1},u=window.setTimeout(()=>{a.addEventListener("pointerdown",l)},0);return()=>{window.clearTimeout(u),a.removeEventListener("pointerdown",l),a.removeEventListener("click",r.current)}},[a,s]),{onPointerDownCapture:()=>c.current=!0}}function zF(t,a=globalThis==null?void 0:globalThis.document){const s=Yt(t),c=O.useRef(!1);return O.useEffect(()=>{const r=l=>{l.target&&!c.current&&sZ($F,s,{originalEvent:l},{discrete:!1})};return a.addEventListener("focusin",r),()=>a.removeEventListener("focusin",r)},[a,s]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function VV(){const t=new CustomEvent(sP);document.dispatchEvent(t)}function sZ(t,a,s,{discrete:c}){const r=s.originalEvent.target,l=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:s});a&&r.addEventListener(t,a,{once:!0}),c?aZ(r,l):r.dispatchEvent(l)}var Bs=globalThis!=null&&globalThis.document?O.useLayoutEffect:()=>{},TF=_X[" useId ".trim().toString()]||(()=>{}),PF=0;function $d(t){const[a,s]=O.useState(TF());return Bs(()=>{s(c=>c??String(PF++))},[t]),a?`radix-${a}`:""}const AF=["top","right","bottom","left"],Wo=Math.min,Pa=Math.max,cQ=Math.round,Mh=Math.floor,Kn=t=>({x:t,y:t}),qF={left:"right",right:"left",bottom:"top",top:"bottom"};function oP(t,a,s){return Pa(t,Wo(a,s))}function Gs(t,a){return typeof t=="function"?t(a):t}function Ws(t){return t.split("-")[0]}function o0(t){return t.split("-")[1]}function LP(t){return t==="x"?"y":"x"}function zP(t){return t==="y"?"height":"width"}function Fn(t){const a=t[0];return a==="t"||a==="b"?"y":"x"}function TP(t){return LP(Fn(t))}function IF(t,a,s){s===void 0&&(s=!1);const c=o0(t),r=TP(t),l=zP(r);let u=r==="x"?c===(s?"end":"start")?"right":"left":c==="start"?"bottom":"top";return a.reference[l]>a.floating[l]&&(u=rQ(u)),[u,rQ(u)]}function RF(t){const a=rQ(t);return[cP(t),a,cP(a)]}function cP(t){return t.includes("start")?t.replace("start","end"):t.replace("end","start")}const EV=["left","right"],XV=["right","left"],VF=["top","bottom"],EF=["bottom","top"];function XF(t,a,s){switch(t){case"top":case"bottom":return s?a?XV:EV:a?EV:XV;case"left":case"right":return a?VF:EF;default:return[]}}function ZF(t,a,s,c){const r=o0(t);let l=XF(Ws(t),s==="start",c);return r&&(l=l.map(u=>u+"-"+r),a&&(l=l.concat(l.map(cP)))),l}function rQ(t){const a=Ws(t);return qF[a]+t.slice(a.length)}function DF(t){return{top:0,right:0,bottom:0,left:0,...t}}function oZ(t){return typeof t!="number"?DF(t):{top:t,right:t,bottom:t,left:t}}function iQ(t){const{x:a,y:s,width:c,height:r}=t;return{width:c,height:r,top:s,left:a,right:a+c,bottom:s+r,x:a,y:s}}function ZV(t,a,s){let{reference:c,floating:r}=t;const l=Fn(a),u=TP(a),p=zP(u),f=Ws(a),x=l==="y",g=c.x+c.width/2-r.width/2,y=c.y+c.height/2-r.height/2,k=c[p]/2-r[p]/2;let b;switch(f){case"top":b={x:g,y:c.y-r.height};break;case"bottom":b={x:g,y:c.y+c.height};break;case"right":b={x:c.x+c.width,y};break;case"left":b={x:c.x-r.width,y};break;default:b={x:c.x,y:c.y}}switch(o0(a)){case"start":b[u]-=k*(s&&x?-1:1);break;case"end":b[u]+=k*(s&&x?-1:1);break}return b}async function UF(t,a){var s;a===void 0&&(a={});const{x:c,y:r,platform:l,rects:u,elements:p,strategy:f}=t,{boundary:x="clippingAncestors",rootBoundary:g="viewport",elementContext:y="floating",altBoundary:k=!1,padding:b=0}=Gs(a,t),j=oZ(b),S=p[k?y==="floating"?"reference":"floating":y],M=iQ(await l.getClippingRect({element:(s=await(l.isElement==null?void 0:l.isElement(S)))==null||s?S:S.contextElement||await(l.getDocumentElement==null?void 0:l.getDocumentElement(p.floating)),boundary:x,rootBoundary:g,strategy:f})),$=y==="floating"?{x:c,y:r,width:u.floating.width,height:u.floating.height}:u.reference,C=await(l.getOffsetParent==null?void 0:l.getOffsetParent(p.floating)),_=await(l.isElement==null?void 0:l.isElement(C))?await(l.getScale==null?void 0:l.getScale(C))||{x:1,y:1}:{x:1,y:1},P=iQ(l.convertOffsetParentRelativeRectToViewportRelativeRect?await l.convertOffsetParentRelativeRectToViewportRelativeRect({elements:p,rect:$,offsetParent:C,strategy:f}):$);return{top:(M.top-P.top+j.top)/_.y,bottom:(P.bottom-M.bottom+j.bottom)/_.y,left:(M.left-P.left+j.left)/_.x,right:(P.right-M.right+j.right)/_.x}}const HF=50,BF=async(t,a,s)=>{const{placement:c="bottom",strategy:r="absolute",middleware:l=[],platform:u}=s,p=u.detectOverflow?u:{...u,detectOverflow:UF},f=await(u.isRTL==null?void 0:u.isRTL(a));let x=await u.getElementRects({reference:t,floating:a,strategy:r}),{x:g,y}=ZV(x,c,f),k=c,b=0;const j={};for(let w=0;w<l.length;w++){const S=l[w];if(!S)continue;const{name:M,fn:$}=S,{x:C,y:_,data:P,reset:L}=await $({x:g,y,initialPlacement:c,placement:k,strategy:r,middlewareData:j,rects:x,platform:p,elements:{reference:t,floating:a}});g=C??g,y=_??y,j[M]={...j[M],...P},L&&b<HF&&(b++,typeof L=="object"&&(L.placement&&(k=L.placement),L.rects&&(x=L.rects===!0?await u.getElementRects({reference:t,floating:a,strategy:r}):L.rects),{x:g,y}=ZV(x,k,f)),w=-1)}return{x:g,y,placement:k,strategy:r,middlewareData:j}},GF=t=>({name:"arrow",options:t,async fn(a){const{x:s,y:c,placement:r,rects:l,platform:u,elements:p,middlewareData:f}=a,{element:x,padding:g=0}=Gs(t,a)||{};if(x==null)return{};const y=oZ(g),k={x:s,y:c},b=TP(r),j=zP(b),w=await u.getDimensions(x),S=b==="y",M=S?"top":"left",$=S?"bottom":"right",C=S?"clientHeight":"clientWidth",_=l.reference[j]+l.reference[b]-k[b]-l.floating[j],P=k[b]-l.reference[b],L=await(u.getOffsetParent==null?void 0:u.getOffsetParent(x));let A=L?L[C]:0;(!A||!await(u.isElement==null?void 0:u.isElement(L)))&&(A=p.floating[C]||l.floating[j]);const z=_/2-P/2,Y=A/2-w[j]/2-1,V=Wo(y[M],Y),se=Wo(y[$],Y),ne=V,oe=A-w[j]-se,R=A/2-w[j]/2+z,I=oP(ne,R,oe),T=!f.arrow&&o0(r)!=null&&R!==I&&l.reference[j]/2-(R<ne?V:se)-w[j]/2<0,Z=T?R<ne?R-ne:R-oe:0;return{[b]:k[b]+Z,data:{[b]:I,centerOffset:R-I-Z,...T&&{alignmentOffset:Z}},reset:T}}}),WF=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(a){var s,c;const{placement:r,middlewareData:l,rects:u,initialPlacement:p,platform:f,elements:x}=a,{mainAxis:g=!0,crossAxis:y=!0,fallbackPlacements:k,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:j="none",flipAlignment:w=!0,...S}=Gs(t,a);if((s=l.arrow)!=null&&s.alignmentOffset)return{};const M=Ws(r),$=Fn(p),C=Ws(p)===p,_=await(f.isRTL==null?void 0:f.isRTL(x.floating)),P=k||(C||!w?[rQ(p)]:RF(p)),L=j!=="none";!k&&L&&P.push(...ZF(p,w,j,_));const A=[p,...P],z=await f.detectOverflow(a,S),Y=[];let V=((c=l.flip)==null?void 0:c.overflows)||[];if(g&&Y.push(z[M]),y){const R=IF(r,u,_);Y.push(z[R[0]],z[R[1]])}if(V=[...V,{placement:r,overflows:Y}],!Y.every(R=>R<=0)){var se,ne;const R=(((se=l.flip)==null?void 0:se.index)||0)+1,I=A[R];if(I&&(!(y==="alignment"?$!==Fn(I):!1)||V.every(J=>Fn(J.placement)===$?J.overflows[0]>0:!0)))return{data:{index:R,overflows:V},reset:{placement:I}};let T=(ne=V.filter(Z=>Z.overflows[0]<=0).sort((Z,J)=>Z.overflows[1]-J.overflows[1])[0])==null?void 0:ne.placement;if(!T)switch(b){case"bestFit":{var oe;const Z=(oe=V.filter(J=>{if(L){const W=Fn(J.placement);return W===$||W==="y"}return!0}).map(J=>[J.placement,J.overflows.filter(W=>W>0).reduce((W,U)=>W+U,0)]).sort((J,W)=>J[1]-W[1])[0])==null?void 0:oe[0];Z&&(T=Z);break}case"initialPlacement":T=p;break}if(r!==T)return{reset:{placement:T}}}return{}}}};function DV(t,a){return{top:t.top-a.height,right:t.right-a.width,bottom:t.bottom-a.height,left:t.left-a.width}}function UV(t){return AF.some(a=>t[a]>=0)}const YF=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(a){const{rects:s,platform:c}=a,{strategy:r="referenceHidden",...l}=Gs(t,a);switch(r){case"referenceHidden":{const u=await c.detectOverflow(a,{...l,elementContext:"reference"}),p=DV(u,s.reference);return{data:{referenceHiddenOffsets:p,referenceHidden:UV(p)}}}case"escaped":{const u=await c.detectOverflow(a,{...l,altBoundary:!0}),p=DV(u,s.floating);return{data:{escapedOffsets:p,escaped:UV(p)}}}default:return{}}}}},cZ=new Set(["left","top"]);async function FF(t,a){const{placement:s,platform:c,elements:r}=t,l=await(c.isRTL==null?void 0:c.isRTL(r.floating)),u=Ws(s),p=o0(s),f=Fn(s)==="y",x=cZ.has(u)?-1:1,g=l&&f?-1:1,y=Gs(a,t);let{mainAxis:k,crossAxis:b,alignmentAxis:j}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return p&&typeof j=="number"&&(b=p==="end"?j*-1:j),f?{x:b*g,y:k*x}:{x:k*x,y:b*g}}const KF=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(a){var s,c;const{x:r,y:l,placement:u,middlewareData:p}=a,f=await FF(a,t);return u===((s=p.offset)==null?void 0:s.placement)&&(c=p.arrow)!=null&&c.alignmentOffset?{}:{x:r+f.x,y:l+f.y,data:{...f,placement:u}}}}},JF=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(a){const{x:s,y:c,placement:r,platform:l}=a,{mainAxis:u=!0,crossAxis:p=!1,limiter:f={fn:M=>{let{x:$,y:C}=M;return{x:$,y:C}}},...x}=Gs(t,a),g={x:s,y:c},y=await l.detectOverflow(a,x),k=Fn(Ws(r)),b=LP(k);let j=g[b],w=g[k];if(u){const M=b==="y"?"top":"left",$=b==="y"?"bottom":"right",C=j+y[M],_=j-y[$];j=oP(C,j,_)}if(p){const M=k==="y"?"top":"left",$=k==="y"?"bottom":"right",C=w+y[M],_=w-y[$];w=oP(C,w,_)}const S=f.fn({...a,[b]:j,[k]:w});return{...S,data:{x:S.x-s,y:S.y-c,enabled:{[b]:u,[k]:p}}}}}},eK=function(t){return t===void 0&&(t={}),{options:t,fn(a){const{x:s,y:c,placement:r,rects:l,middlewareData:u}=a,{offset:p=0,mainAxis:f=!0,crossAxis:x=!0}=Gs(t,a),g={x:s,y:c},y=Fn(r),k=LP(y);let b=g[k],j=g[y];const w=Gs(p,a),S=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(f){const C=k==="y"?"height":"width",_=l.reference[k]-l.floating[C]+S.mainAxis,P=l.reference[k]+l.reference[C]-S.mainAxis;b<_?b=_:b>P&&(b=P)}if(x){var M,$;const C=k==="y"?"width":"height",_=cZ.has(Ws(r)),P=l.reference[y]-l.floating[C]+(_&&((M=u.offset)==null?void 0:M[y])||0)+(_?0:S.crossAxis),L=l.reference[y]+l.reference[C]+(_?0:(($=u.offset)==null?void 0:$[y])||0)-(_?S.crossAxis:0);j<P?j=P:j>L&&(j=L)}return{[k]:b,[y]:j}}}},tK=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(a){var s,c;const{placement:r,rects:l,platform:u,elements:p}=a,{apply:f=()=>{},...x}=Gs(t,a),g=await u.detectOverflow(a,x),y=Ws(r),k=o0(r),b=Fn(r)==="y",{width:j,height:w}=l.floating;let S,M;y==="top"||y==="bottom"?(S=y,M=k===(await(u.isRTL==null?void 0:u.isRTL(p.floating))?"start":"end")?"left":"right"):(M=y,S=k==="end"?"top":"bottom");const $=w-g.top-g.bottom,C=j-g.left-g.right,_=Wo(w-g[S],$),P=Wo(j-g[M],C),L=!a.middlewareData.shift;let A=_,z=P;if((s=a.middlewareData.shift)!=null&&s.enabled.x&&(z=C),(c=a.middlewareData.shift)!=null&&c.enabled.y&&(A=$),L&&!k){const V=Pa(g.left,0),se=Pa(g.right,0),ne=Pa(g.top,0),oe=Pa(g.bottom,0);b?z=j-2*(V!==0||se!==0?V+se:Pa(g.left,g.right)):A=w-2*(ne!==0||oe!==0?ne+oe:Pa(g.top,g.bottom))}await f({...a,availableWidth:z,availableHeight:A});const Y=await u.getDimensions(p.floating);return j!==Y.width||w!==Y.height?{reset:{rects:!0}}:{}}}};function QQ(){return typeof window<"u"}function c0(t){return rZ(t)?(t.nodeName||"").toLowerCase():"#document"}function Ra(t){var a;return(t==null||(a=t.ownerDocument)==null?void 0:a.defaultView)||window}function ss(t){var a;return(a=(rZ(t)?t.ownerDocument:t.document)||window.document)==null?void 0:a.documentElement}function rZ(t){return QQ()?t instanceof Node||t instanceof Ra(t).Node:!1}function _n(t){return QQ()?t instanceof Element||t instanceof Ra(t).Element:!1}function Fs(t){return QQ()?t instanceof HTMLElement||t instanceof Ra(t).HTMLElement:!1}function HV(t){return!QQ()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Ra(t).ShadowRoot}function au(t){const{overflow:a,overflowX:s,overflowY:c,display:r}=$n(t);return/auto|scroll|overlay|hidden|clip/.test(a+c+s)&&r!=="inline"&&r!=="contents"}function aK(t){return/^(table|td|th)$/.test(c0(t))}function LQ(t){try{if(t.matches(":popover-open"))return!0}catch{}try{return t.matches(":modal")}catch{return!1}}const nK=/transform|translate|scale|rotate|perspective|filter/,sK=/paint|layout|strict|content/,gc=t=>!!t&&t!=="none";let mT;function PP(t){const a=_n(t)?$n(t):t;return gc(a.transform)||gc(a.translate)||gc(a.scale)||gc(a.rotate)||gc(a.perspective)||!AP()&&(gc(a.backdropFilter)||gc(a.filter))||nK.test(a.willChange||"")||sK.test(a.contain||"")}function oK(t){let a=Yo(t);for(;Fs(a)&&!Fd(a);){if(PP(a))return a;if(LQ(a))return null;a=Yo(a)}return null}function AP(){return mT==null&&(mT=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),mT}function Fd(t){return/^(html|body|#document)$/.test(c0(t))}function $n(t){return Ra(t).getComputedStyle(t)}function zQ(t){return _n(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Yo(t){if(c0(t)==="html")return t;const a=t.assignedSlot||t.parentNode||HV(t)&&t.host||ss(t);return HV(a)?a.host:a}function iZ(t){const a=Yo(t);return Fd(a)?t.ownerDocument?t.ownerDocument.body:t.body:Fs(a)&&au(a)?a:iZ(a)}function U2(t,a,s){var c;a===void 0&&(a=[]),s===void 0&&(s=!0);const r=iZ(t),l=r===((c=t.ownerDocument)==null?void 0:c.body),u=Ra(r);if(l){const p=rP(u);return a.concat(u,u.visualViewport||[],au(r)?r:[],p&&s?U2(p):[])}else return a.concat(r,U2(r,[],s))}function rP(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function lZ(t){const a=$n(t);let s=parseFloat(a.width)||0,c=parseFloat(a.height)||0;const r=Fs(t),l=r?t.offsetWidth:s,u=r?t.offsetHeight:c,p=cQ(s)!==l||cQ(c)!==u;return p&&(s=l,c=u),{width:s,height:c,$:p}}function qP(t){return _n(t)?t:t.contextElement}function Cd(t){const a=qP(t);if(!Fs(a))return Kn(1);const s=a.getBoundingClientRect(),{width:c,height:r,$:l}=lZ(a);let u=(l?cQ(s.width):s.width)/c,p=(l?cQ(s.height):s.height)/r;return(!u||!Number.isFinite(u))&&(u=1),(!p||!Number.isFinite(p))&&(p=1),{x:u,y:p}}const cK=Kn(0);function dZ(t){const a=Ra(t);return!AP()||!a.visualViewport?cK:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function rK(t,a,s){return a===void 0&&(a=!1),!s||a&&s!==Ra(t)?!1:a}function _1(t,a,s,c){a===void 0&&(a=!1),s===void 0&&(s=!1);const r=t.getBoundingClientRect(),l=qP(t);let u=Kn(1);a&&(c?_n(c)&&(u=Cd(c)):u=Cd(t));const p=rK(l,s,c)?dZ(l):Kn(0);let f=(r.left+p.x)/u.x,x=(r.top+p.y)/u.y,g=r.width/u.x,y=r.height/u.y;if(l){const k=Ra(l),b=c&&_n(c)?Ra(c):c;let j=k,w=rP(j);for(;w&&c&&b!==j;){const S=Cd(w),M=w.getBoundingClientRect(),$=$n(w),C=M.left+(w.clientLeft+parseFloat($.paddingLeft))*S.x,_=M.top+(w.clientTop+parseFloat($.paddingTop))*S.y;f*=S.x,x*=S.y,g*=S.x,y*=S.y,f+=C,x+=_,j=Ra(w),w=rP(j)}}return iQ({width:g,height:y,x:f,y:x})}function TQ(t,a){const s=zQ(t).scrollLeft;return a?a.left+s:_1(ss(t)).left+s}function uZ(t,a){const s=t.getBoundingClientRect(),c=s.left+a.scrollLeft-TQ(t,s),r=s.top+a.scrollTop;return{x:c,y:r}}function iK(t){let{elements:a,rect:s,offsetParent:c,strategy:r}=t;const l=r==="fixed",u=ss(c),p=a?LQ(a.floating):!1;if(c===u||p&&l)return s;let f={scrollLeft:0,scrollTop:0},x=Kn(1);const g=Kn(0),y=Fs(c);if((y||!y&&!l)&&((c0(c)!=="body"||au(u))&&(f=zQ(c)),y)){const b=_1(c);x=Cd(c),g.x=b.x+c.clientLeft,g.y=b.y+c.clientTop}const k=u&&!y&&!l?uZ(u,f):Kn(0);return{width:s.width*x.x,height:s.height*x.y,x:s.x*x.x-f.scrollLeft*x.x+g.x+k.x,y:s.y*x.y-f.scrollTop*x.y+g.y+k.y}}function lK(t){return Array.from(t.getClientRects())}function dK(t){const a=ss(t),s=zQ(t),c=t.ownerDocument.body,r=Pa(a.scrollWidth,a.clientWidth,c.scrollWidth,c.clientWidth),l=Pa(a.scrollHeight,a.clientHeight,c.scrollHeight,c.clientHeight);let u=-s.scrollLeft+TQ(t);const p=-s.scrollTop;return $n(c).direction==="rtl"&&(u+=Pa(a.clientWidth,c.clientWidth)-r),{width:r,height:l,x:u,y:p}}const BV=25;function uK(t,a){const s=Ra(t),c=ss(t),r=s.visualViewport;let l=c.clientWidth,u=c.clientHeight,p=0,f=0;if(r){l=r.width,u=r.height;const g=AP();(!g||g&&a==="fixed")&&(p=r.offsetLeft,f=r.offsetTop)}const x=TQ(c);if(x<=0){const g=c.ownerDocument,y=g.body,k=getComputedStyle(y),b=g.compatMode==="CSS1Compat"&&parseFloat(k.marginLeft)+parseFloat(k.marginRight)||0,j=Math.abs(c.clientWidth-y.clientWidth-b);j<=BV&&(l-=j)}else x<=BV&&(l+=x);return{width:l,height:u,x:p,y:f}}function hK(t,a){const s=_1(t,!0,a==="fixed"),c=s.top+t.clientTop,r=s.left+t.clientLeft,l=Fs(t)?Cd(t):Kn(1),u=t.clientWidth*l.x,p=t.clientHeight*l.y,f=r*l.x,x=c*l.y;return{width:u,height:p,x:f,y:x}}function GV(t,a,s){let c;if(a==="viewport")c=uK(t,s);else if(a==="document")c=dK(ss(t));else if(_n(a))c=hK(a,s);else{const r=dZ(t);c={x:a.x-r.x,y:a.y-r.y,width:a.width,height:a.height}}return iQ(c)}function hZ(t,a){const s=Yo(t);return s===a||!_n(s)||Fd(s)?!1:$n(s).position==="fixed"||hZ(s,a)}function pK(t,a){const s=a.get(t);if(s)return s;let c=U2(t,[],!1).filter(p=>_n(p)&&c0(p)!=="body"),r=null;const l=$n(t).position==="fixed";let u=l?Yo(t):t;for(;_n(u)&&!Fd(u);){const p=$n(u),f=PP(u);!f&&p.position==="fixed"&&(r=null),(l?!f&&!r:!f&&p.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||au(u)&&!f&&hZ(t,u))?c=c.filter(g=>g!==u):r=p,u=Yo(u)}return a.set(t,c),c}function fK(t){let{element:a,boundary:s,rootBoundary:c,strategy:r}=t;const u=[...s==="clippingAncestors"?LQ(a)?[]:pK(a,this._c):[].concat(s),c],p=GV(a,u[0],r);let f=p.top,x=p.right,g=p.bottom,y=p.left;for(let k=1;k<u.length;k++){const b=GV(a,u[k],r);f=Pa(b.top,f),x=Wo(b.right,x),g=Wo(b.bottom,g),y=Pa(b.left,y)}return{width:x-y,height:g-f,x:y,y:f}}function xK(t){const{width:a,height:s}=lZ(t);return{width:a,height:s}}function mK(t,a,s){const c=Fs(a),r=ss(a),l=s==="fixed",u=_1(t,!0,l,a);let p={scrollLeft:0,scrollTop:0};const f=Kn(0);function x(){f.x=TQ(r)}if(c||!c&&!l)if((c0(a)!=="body"||au(r))&&(p=zQ(a)),c){const b=_1(a,!0,l,a);f.x=b.x+a.clientLeft,f.y=b.y+a.clientTop}else r&&x();l&&!c&&r&&x();const g=r&&!c&&!l?uZ(r,p):Kn(0),y=u.left+p.scrollLeft-f.x-g.x,k=u.top+p.scrollTop-f.y-g.y;return{x:y,y:k,width:u.width,height:u.height}}function yT(t){return $n(t).position==="static"}function WV(t,a){if(!Fs(t)||$n(t).position==="fixed")return null;if(a)return a(t);let s=t.offsetParent;return ss(t)===s&&(s=s.ownerDocument.body),s}function pZ(t,a){const s=Ra(t);if(LQ(t))return s;if(!Fs(t)){let r=Yo(t);for(;r&&!Fd(r);){if(_n(r)&&!yT(r))return r;r=Yo(r)}return s}let c=WV(t,a);for(;c&&aK(c)&&yT(c);)c=WV(c,a);return c&&Fd(c)&&yT(c)&&!PP(c)?s:c||oK(t)||s}const yK=async function(t){const a=this.getOffsetParent||pZ,s=this.getDimensions,c=await s(t.floating);return{reference:mK(t.reference,await a(t.floating),t.strategy),floating:{x:0,y:0,width:c.width,height:c.height}}};function gK(t){return $n(t).direction==="rtl"}const OK={convertOffsetParentRelativeRectToViewportRelativeRect:iK,getDocumentElement:ss,getClippingRect:fK,getOffsetParent:pZ,getElementRects:yK,getClientRects:lK,getDimensions:xK,getScale:Cd,isElement:_n,isRTL:gK};function fZ(t,a){return t.x===a.x&&t.y===a.y&&t.width===a.width&&t.height===a.height}function kK(t,a){let s=null,c;const r=ss(t);function l(){var p;clearTimeout(c),(p=s)==null||p.disconnect(),s=null}function u(p,f){p===void 0&&(p=!1),f===void 0&&(f=1),l();const x=t.getBoundingClientRect(),{left:g,top:y,width:k,height:b}=x;if(p||a(),!k||!b)return;const j=Mh(y),w=Mh(r.clientWidth-(g+k)),S=Mh(r.clientHeight-(y+b)),M=Mh(g),C={rootMargin:-j+"px "+-w+"px "+-S+"px "+-M+"px",threshold:Pa(0,Wo(1,f))||1};let _=!0;function P(L){const A=L[0].intersectionRatio;if(A!==f){if(!_)return u();A?u(!1,A):c=setTimeout(()=>{u(!1,1e-7)},1e3)}A===1&&!fZ(x,t.getBoundingClientRect())&&u(),_=!1}try{s=new IntersectionObserver(P,{...C,root:r.ownerDocument})}catch{s=new IntersectionObserver(P,C)}s.observe(t)}return u(!0),l}function vK(t,a,s,c){c===void 0&&(c={});const{ancestorScroll:r=!0,ancestorResize:l=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:p=typeof IntersectionObserver=="function",animationFrame:f=!1}=c,x=qP(t),g=r||l?[...x?U2(x):[],...a?U2(a):[]]:[];g.forEach(M=>{r&&M.addEventListener("scroll",s,{passive:!0}),l&&M.addEventListener("resize",s)});const y=x&&p?kK(x,s):null;let k=-1,b=null;u&&(b=new ResizeObserver(M=>{let[$]=M;$&&$.target===x&&b&&a&&(b.unobserve(a),cancelAnimationFrame(k),k=requestAnimationFrame(()=>{var C;(C=b)==null||C.observe(a)})),s()}),x&&!f&&b.observe(x),a&&b.observe(a));let j,w=f?_1(t):null;f&&S();function S(){const M=_1(t);w&&!fZ(w,M)&&s(),w=M,j=requestAnimationFrame(S)}return s(),()=>{var M;g.forEach($=>{r&&$.removeEventListener("scroll",s),l&&$.removeEventListener("resize",s)}),y==null||y(),(M=b)==null||M.disconnect(),b=null,f&&cancelAnimationFrame(j)}}const bK=KF,wK=JF,MK=WF,jK=tK,SK=YF,YV=GF,NK=eK,_K=(t,a,s)=>{const c=new Map,r={platform:OK,...s},l={...r.platform,_c:c};return BF(t,a,{...r,platform:l})};var $K=typeof document<"u",CK=function(){},Uh=$K?O.useLayoutEffect:CK;function lQ(t,a){if(t===a)return!0;if(typeof t!=typeof a)return!1;if(typeof t=="function"&&t.toString()===a.toString())return!0;let s,c,r;if(t&&a&&typeof t=="object"){if(Array.isArray(t)){if(s=t.length,s!==a.length)return!1;for(c=s;c--!==0;)if(!lQ(t[c],a[c]))return!1;return!0}if(r=Object.keys(t),s=r.length,s!==Object.keys(a).length)return!1;for(c=s;c--!==0;)if(!{}.hasOwnProperty.call(a,r[c]))return!1;for(c=s;c--!==0;){const l=r[c];if(!(l==="_owner"&&t.$$typeof)&&!lQ(t[l],a[l]))return!1}return!0}return t!==t&&a!==a}function xZ(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function FV(t,a){const s=xZ(t);return Math.round(a*s)/s}function gT(t){const a=O.useRef(t);return Uh(()=>{a.current=t}),a}function QK(t){t===void 0&&(t={});const{placement:a="bottom",strategy:s="absolute",middleware:c=[],platform:r,elements:{reference:l,floating:u}={},transform:p=!0,whileElementsMounted:f,open:x}=t,[g,y]=O.useState({x:0,y:0,strategy:s,placement:a,middlewareData:{},isPositioned:!1}),[k,b]=O.useState(c);lQ(k,c)||b(c);const[j,w]=O.useState(null),[S,M]=O.useState(null),$=O.useCallback(J=>{J!==L.current&&(L.current=J,w(J))},[]),C=O.useCallback(J=>{J!==A.current&&(A.current=J,M(J))},[]),_=l||j,P=u||S,L=O.useRef(null),A=O.useRef(null),z=O.useRef(g),Y=f!=null,V=gT(f),se=gT(r),ne=gT(x),oe=O.useCallback(()=>{if(!L.current||!A.current)return;const J={placement:a,strategy:s,middleware:k};se.current&&(J.platform=se.current),_K(L.current,A.current,J).then(W=>{const U={...W,isPositioned:ne.current!==!1};R.current&&!lQ(z.current,U)&&(z.current=U,$X.flushSync(()=>{y(U)}))})},[k,a,s,se,ne]);Uh(()=>{x===!1&&z.current.isPositioned&&(z.current.isPositioned=!1,y(J=>({...J,isPositioned:!1})))},[x]);const R=O.useRef(!1);Uh(()=>(R.current=!0,()=>{R.current=!1}),[]),Uh(()=>{if(_&&(L.current=_),P&&(A.current=P),_&&P){if(V.current)return V.current(_,P,oe);oe()}},[_,P,oe,V,Y]);const I=O.useMemo(()=>({reference:L,floating:A,setReference:$,setFloating:C}),[$,C]),T=O.useMemo(()=>({reference:_,floating:P}),[_,P]),Z=O.useMemo(()=>{const J={position:s,left:0,top:0};if(!T.floating)return J;const W=FV(T.floating,g.x),U=FV(T.floating,g.y);return p?{...J,transform:"translate("+W+"px, "+U+"px)",...xZ(T.floating)>=1.5&&{willChange:"transform"}}:{position:s,left:W,top:U}},[s,p,T.floating,g.x,g.y]);return O.useMemo(()=>({...g,update:oe,refs:I,elements:T,floatingStyles:Z}),[g,oe,I,T,Z])}const LK=t=>{function a(s){return{}.hasOwnProperty.call(s,"current")}return{name:"arrow",options:t,fn(s){const{element:c,padding:r}=typeof t=="function"?t(s):t;return c&&a(c)?c.current!=null?YV({element:c.current,padding:r}).fn(s):{}:c?YV({element:c,padding:r}).fn(s):{}}}},zK=(t,a)=>{const s=bK(t);return{name:s.name,fn:s.fn,options:[t,a]}},TK=(t,a)=>{const s=wK(t);return{name:s.name,fn:s.fn,options:[t,a]}},PK=(t,a)=>({fn:NK(t).fn,options:[t,a]}),AK=(t,a)=>{const s=MK(t);return{name:s.name,fn:s.fn,options:[t,a]}},qK=(t,a)=>{const s=jK(t);return{name:s.name,fn:s.fn,options:[t,a]}},IK=(t,a)=>{const s=SK(t);return{name:s.name,fn:s.fn,options:[t,a]}},RK=(t,a)=>{const s=LK(t);return{name:s.name,fn:s.fn,options:[t,a]}};var VK="Arrow",mZ=O.forwardRef((t,a)=>{const{children:s,width:c=10,height:r=5,...l}=t;return e.jsx(Ye.svg,{...l,ref:a,width:c,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?s:e.jsx("polygon",{points:"0,0 30,0 15,10"})})});mZ.displayName=VK;var EK=mZ;function XK(t){const[a,s]=O.useState(void 0);return Bs(()=>{if(t){s({width:t.offsetWidth,height:t.offsetHeight});const c=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const l=r[0];let u,p;if("borderBoxSize"in l){const f=l.borderBoxSize,x=Array.isArray(f)?f[0]:f;u=x.inlineSize,p=x.blockSize}else u=t.offsetWidth,p=t.offsetHeight;s({width:u,height:p})});return c.observe(t,{box:"border-box"}),()=>c.unobserve(t)}else s(void 0)},[t]),a}var IP="Popper",[yZ,PQ]=Ys(IP),[ZK,gZ]=yZ(IP),OZ=t=>{const{__scopePopper:a,children:s}=t,[c,r]=O.useState(null);return e.jsx(ZK,{scope:a,anchor:c,onAnchorChange:r,children:s})};OZ.displayName=IP;var kZ="PopperAnchor",vZ=O.forwardRef((t,a)=>{const{__scopePopper:s,virtualRef:c,...r}=t,l=gZ(kZ,s),u=O.useRef(null),p=ht(a,u),f=O.useRef(null);return O.useEffect(()=>{const x=f.current;f.current=(c==null?void 0:c.current)||u.current,x!==f.current&&l.onAnchorChange(f.current)}),c?null:e.jsx(Ye.div,{...r,ref:p})});vZ.displayName=kZ;var RP="PopperContent",[DK,UK]=yZ(RP),bZ=O.forwardRef((t,a)=>{var ve,it,Le,Mt,lt,pt;const{__scopePopper:s,side:c="bottom",sideOffset:r=0,align:l="center",alignOffset:u=0,arrowPadding:p=0,avoidCollisions:f=!0,collisionBoundary:x=[],collisionPadding:g=0,sticky:y="partial",hideWhenDetached:k=!1,updatePositionStrategy:b="optimized",onPlaced:j,...w}=t,S=gZ(RP,s),[M,$]=O.useState(null),C=ht(a,jt=>$(jt)),[_,P]=O.useState(null),L=XK(_),A=(L==null?void 0:L.width)??0,z=(L==null?void 0:L.height)??0,Y=c+(l!=="center"?"-"+l:""),V=typeof g=="number"?g:{top:0,right:0,bottom:0,left:0,...g},se=Array.isArray(x)?x:[x],ne=se.length>0,oe={padding:V,boundary:se.filter(BK),altBoundary:ne},{refs:R,floatingStyles:I,placement:T,isPositioned:Z,middlewareData:J}=QK({strategy:"fixed",placement:Y,whileElementsMounted:(...jt)=>vK(...jt,{animationFrame:b==="always"}),elements:{reference:S.anchor},middleware:[zK({mainAxis:r+z,alignmentAxis:u}),f&&TK({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?PK():void 0,...oe}),f&&AK({...oe}),qK({...oe,apply:({elements:jt,rects:Ke,availableWidth:dn,availableHeight:Ln})=>{const{width:cs,height:zn}=Ke.reference,ba=jt.floating.style;ba.setProperty("--radix-popper-available-width",`${dn}px`),ba.setProperty("--radix-popper-available-height",`${Ln}px`),ba.setProperty("--radix-popper-anchor-width",`${cs}px`),ba.setProperty("--radix-popper-anchor-height",`${zn}px`)}}),_&&RK({element:_,padding:p}),GK({arrowWidth:A,arrowHeight:z}),k&&IK({strategy:"referenceHidden",...oe})]}),[W,U]=jZ(T),xe=Yt(j);Bs(()=>{Z&&(xe==null||xe())},[Z,xe]);const pe=(ve=J.arrow)==null?void 0:ve.x,fe=(it=J.arrow)==null?void 0:it.y,Oe=((Le=J.arrow)==null?void 0:Le.centerOffset)!==0,[Se,ue]=O.useState();return Bs(()=>{M&&ue(window.getComputedStyle(M).zIndex)},[M]),e.jsx("div",{ref:R.setFloating,"data-radix-popper-content-wrapper":"",style:{...I,transform:Z?I.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Se,"--radix-popper-transform-origin":[(Mt=J.transformOrigin)==null?void 0:Mt.x,(lt=J.transformOrigin)==null?void 0:lt.y].join(" "),...((pt=J.hide)==null?void 0:pt.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:e.jsx(DK,{scope:s,placedSide:W,onArrowChange:P,arrowX:pe,arrowY:fe,shouldHideArrow:Oe,children:e.jsx(Ye.div,{"data-side":W,"data-align":U,...w,ref:C,style:{...w.style,animation:Z?void 0:"none"}})})})});bZ.displayName=RP;var wZ="PopperArrow",HK={top:"bottom",right:"left",bottom:"top",left:"right"},MZ=O.forwardRef(function(a,s){const{__scopePopper:c,...r}=a,l=UK(wZ,c),u=HK[l.placedSide];return e.jsx("span",{ref:l.onArrowChange,style:{position:"absolute",left:l.arrowX,top:l.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[l.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[l.placedSide],visibility:l.shouldHideArrow?"hidden":void 0},children:e.jsx(EK,{...r,ref:s,style:{...r.style,display:"block"}})})});MZ.displayName=wZ;function BK(t){return t!==null}var GK=t=>({name:"transformOrigin",options:t,fn(a){var S,M,$;const{placement:s,rects:c,middlewareData:r}=a,u=((S=r.arrow)==null?void 0:S.centerOffset)!==0,p=u?0:t.arrowWidth,f=u?0:t.arrowHeight,[x,g]=jZ(s),y={start:"0%",center:"50%",end:"100%"}[g],k=(((M=r.arrow)==null?void 0:M.x)??0)+p/2,b=((($=r.arrow)==null?void 0:$.y)??0)+f/2;let j="",w="";return x==="bottom"?(j=u?y:`${k}px`,w=`${-f}px`):x==="top"?(j=u?y:`${k}px`,w=`${c.floating.height+f}px`):x==="right"?(j=`${-f}px`,w=u?y:`${b}px`):x==="left"&&(j=`${c.floating.width+f}px`,w=u?y:`${b}px`),{data:{x:j,y:w}}}});function jZ(t){const[a,s="center"]=t.split("-");return[a,s]}var SZ=OZ,NZ=vZ,_Z=bZ,$Z=MZ,WK="Portal",AQ=O.forwardRef((t,a)=>{var p;const{container:s,...c}=t,[r,l]=O.useState(!1);Bs(()=>l(!0),[]);const u=s||r&&((p=globalThis==null?void 0:globalThis.document)==null?void 0:p.body);return u?RW.createPortal(e.jsx(Ye.div,{...c,ref:a}),u):null});AQ.displayName=WK;function YK(t,a){return O.useReducer((s,c)=>a[s][c]??s,t)}var la=t=>{const{present:a,children:s}=t,c=FK(a),r=typeof s=="function"?s({present:c.isPresent}):O.Children.only(s),l=ht(c.ref,KK(r));return typeof s=="function"||c.isPresent?O.cloneElement(r,{ref:l}):null};la.displayName="Presence";function FK(t){const[a,s]=O.useState(),c=O.useRef(null),r=O.useRef(t),l=O.useRef("none"),u=t?"mounted":"unmounted",[p,f]=YK(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return O.useEffect(()=>{const x=jh(c.current);l.current=p==="mounted"?x:"none"},[p]),Bs(()=>{const x=c.current,g=r.current;if(g!==t){const k=l.current,b=jh(x);t?f("MOUNT"):b==="none"||(x==null?void 0:x.display)==="none"?f("UNMOUNT"):f(g&&k!==b?"ANIMATION_OUT":"UNMOUNT"),r.current=t}},[t,f]),Bs(()=>{if(a){let x;const g=a.ownerDocument.defaultView??window,y=b=>{const w=jh(c.current).includes(CSS.escape(b.animationName));if(b.target===a&&w&&(f("ANIMATION_END"),!r.current)){const S=a.style.animationFillMode;a.style.animationFillMode="forwards",x=g.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=S)})}},k=b=>{b.target===a&&(l.current=jh(c.current))};return a.addEventListener("animationstart",k),a.addEventListener("animationcancel",y),a.addEventListener("animationend",y),()=>{g.clearTimeout(x),a.removeEventListener("animationstart",k),a.removeEventListener("animationcancel",y),a.removeEventListener("animationend",y)}}else f("ANIMATION_END")},[a,f]),{isPresent:["mounted","unmountSuspended"].includes(p),ref:O.useCallback(x=>{c.current=x?getComputedStyle(x):null,s(x)},[])}}function jh(t){return(t==null?void 0:t.animationName)||"none"}function KK(t){var c,r;let a=(c=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:c.get,s=a&&"isReactWarning"in a&&a.isReactWarning;return s?t.ref:(a=(r=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:r.get,s=a&&"isReactWarning"in a&&a.isReactWarning,s?t.props.ref:t.props.ref||t.ref)}var JK=_X[" useInsertionEffect ".trim().toString()]||Bs;function qQ({prop:t,defaultProp:a,onChange:s=()=>{},caller:c}){const[r,l,u]=eJ({defaultProp:a,onChange:s}),p=t!==void 0,f=p?t:r;{const g=O.useRef(t!==void 0);O.useEffect(()=>{const y=g.current;y!==p&&console.warn(`${c} is changing from ${y?"controlled":"uncontrolled"} to ${p?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),g.current=p},[p,c])}const x=O.useCallback(g=>{var y;if(p){const k=tJ(g)?g(t):g;k!==t&&((y=u.current)==null||y.call(u,k))}else l(g)},[p,t,l,u]);return[f,x]}function eJ({defaultProp:t,onChange:a}){const[s,c]=O.useState(t),r=O.useRef(s),l=O.useRef(a);return JK(()=>{l.current=a},[a]),O.useEffect(()=>{var u;r.current!==s&&((u=l.current)==null||u.call(l,s),r.current=s)},[s,r]),[s,c,l]}function tJ(t){return typeof t=="function"}var aJ=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),nJ="VisuallyHidden",CZ=O.forwardRef((t,a)=>e.jsx(Ye.span,{...t,ref:a,style:{...aJ,...t.style}}));CZ.displayName=nJ;var sJ=CZ,[IQ]=Ys("Tooltip",[PQ]),RQ=PQ(),QZ="TooltipProvider",oJ=700,iP="tooltip.open",[cJ,VP]=IQ(QZ),LZ=t=>{const{__scopeTooltip:a,delayDuration:s=oJ,skipDelayDuration:c=300,disableHoverableContent:r=!1,children:l}=t,u=O.useRef(!0),p=O.useRef(!1),f=O.useRef(0);return O.useEffect(()=>{const x=f.current;return()=>window.clearTimeout(x)},[]),e.jsx(cJ,{scope:a,isOpenDelayedRef:u,delayDuration:s,onOpen:O.useCallback(()=>{window.clearTimeout(f.current),u.current=!1},[]),onClose:O.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>u.current=!0,c)},[c]),isPointerInTransitRef:p,onPointerInTransitChange:O.useCallback(x=>{p.current=x},[]),disableHoverableContent:r,children:l})};LZ.displayName=QZ;var H2="Tooltip",[rJ,nu]=IQ(H2),zZ=t=>{const{__scopeTooltip:a,children:s,open:c,defaultOpen:r,onOpenChange:l,disableHoverableContent:u,delayDuration:p}=t,f=VP(H2,t.__scopeTooltip),x=RQ(a),[g,y]=O.useState(null),k=$d(),b=O.useRef(0),j=u??f.disableHoverableContent,w=p??f.delayDuration,S=O.useRef(!1),[M,$]=qQ({prop:c,defaultProp:r??!1,onChange:A=>{A?(f.onOpen(),document.dispatchEvent(new CustomEvent(iP))):f.onClose(),l==null||l(A)},caller:H2}),C=O.useMemo(()=>M?S.current?"delayed-open":"instant-open":"closed",[M]),_=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,S.current=!1,$(!0)},[$]),P=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,$(!1)},[$]),L=O.useCallback(()=>{window.clearTimeout(b.current),b.current=window.setTimeout(()=>{S.current=!0,$(!0),b.current=0},w)},[w,$]);return O.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=0)},[]),e.jsx(SZ,{...x,children:e.jsx(rJ,{scope:a,contentId:k,open:M,stateAttribute:C,trigger:g,onTriggerChange:y,onTriggerEnter:O.useCallback(()=>{f.isOpenDelayedRef.current?L():_()},[f.isOpenDelayedRef,L,_]),onTriggerLeave:O.useCallback(()=>{j?P():(window.clearTimeout(b.current),b.current=0)},[P,j]),onOpen:_,onClose:P,disableHoverableContent:j,children:s})})};zZ.displayName=H2;var lP="TooltipTrigger",TZ=O.forwardRef((t,a)=>{const{__scopeTooltip:s,...c}=t,r=nu(lP,s),l=VP(lP,s),u=RQ(s),p=O.useRef(null),f=ht(a,p,r.onTriggerChange),x=O.useRef(!1),g=O.useRef(!1),y=O.useCallback(()=>x.current=!1,[]);return O.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),e.jsx(NZ,{asChild:!0,...u,children:e.jsx(Ye.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...c,ref:f,onPointerMove:$e(t.onPointerMove,k=>{k.pointerType!=="touch"&&!g.current&&!l.isPointerInTransitRef.current&&(r.onTriggerEnter(),g.current=!0)}),onPointerLeave:$e(t.onPointerLeave,()=>{r.onTriggerLeave(),g.current=!1}),onPointerDown:$e(t.onPointerDown,()=>{r.open&&r.onClose(),x.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:$e(t.onFocus,()=>{x.current||r.onOpen()}),onBlur:$e(t.onBlur,r.onClose),onClick:$e(t.onClick,r.onClose)})})});TZ.displayName=lP;var EP="TooltipPortal",[iJ,lJ]=IQ(EP,{forceMount:void 0}),PZ=t=>{const{__scopeTooltip:a,forceMount:s,children:c,container:r}=t,l=nu(EP,a);return e.jsx(iJ,{scope:a,forceMount:s,children:e.jsx(la,{present:s||l.open,children:e.jsx(AQ,{asChild:!0,container:r,children:c})})})};PZ.displayName=EP;var Kd="TooltipContent",AZ=O.forwardRef((t,a)=>{const s=lJ(Kd,t.__scopeTooltip),{forceMount:c=s.forceMount,side:r="top",...l}=t,u=nu(Kd,t.__scopeTooltip);return e.jsx(la,{present:c||u.open,children:u.disableHoverableContent?e.jsx(qZ,{side:r,...l,ref:a}):e.jsx(dJ,{side:r,...l,ref:a})})}),dJ=O.forwardRef((t,a)=>{const s=nu(Kd,t.__scopeTooltip),c=VP(Kd,t.__scopeTooltip),r=O.useRef(null),l=ht(a,r),[u,p]=O.useState(null),{trigger:f,onClose:x}=s,g=r.current,{onPointerInTransitChange:y}=c,k=O.useCallback(()=>{p(null),y(!1)},[y]),b=O.useCallback((j,w)=>{const S=j.currentTarget,M={x:j.clientX,y:j.clientY},$=fJ(M,S.getBoundingClientRect()),C=xJ(M,$),_=mJ(w.getBoundingClientRect()),P=gJ([...C,..._]);p(P),y(!0)},[y]);return O.useEffect(()=>()=>k(),[k]),O.useEffect(()=>{if(f&&g){const j=S=>b(S,g),w=S=>b(S,f);return f.addEventListener("pointerleave",j),g.addEventListener("pointerleave",w),()=>{f.removeEventListener("pointerleave",j),g.removeEventListener("pointerleave",w)}}},[f,g,b,k]),O.useEffect(()=>{if(u){const j=w=>{const S=w.target,M={x:w.clientX,y:w.clientY},$=(f==null?void 0:f.contains(S))||(g==null?void 0:g.contains(S)),C=!yJ(M,u);$?k():C&&(k(),x())};return document.addEventListener("pointermove",j),()=>document.removeEventListener("pointermove",j)}},[f,g,u,x,k]),e.jsx(qZ,{...t,ref:l})}),[uJ,hJ]=IQ(H2,{isInside:!1}),pJ=vF("TooltipContent"),qZ=O.forwardRef((t,a)=>{const{__scopeTooltip:s,children:c,"aria-label":r,onEscapeKeyDown:l,onPointerDownOutside:u,...p}=t,f=nu(Kd,s),x=RQ(s),{onClose:g}=f;return O.useEffect(()=>(document.addEventListener(iP,g),()=>document.removeEventListener(iP,g)),[g]),O.useEffect(()=>{if(f.trigger){const y=k=>{const b=k.target;b!=null&&b.contains(f.trigger)&&g()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[f.trigger,g]),e.jsx(CQ,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:y=>y.preventDefault(),onDismiss:g,children:e.jsxs(_Z,{"data-state":f.stateAttribute,...x,...p,ref:a,style:{...p.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:[e.jsx(pJ,{children:c}),e.jsx(uJ,{scope:s,isInside:!0,children:e.jsx(sJ,{id:f.contentId,role:"tooltip",children:r||c})})]})})});AZ.displayName=Kd;var IZ="TooltipArrow",RZ=O.forwardRef((t,a)=>{const{__scopeTooltip:s,...c}=t,r=RQ(s);return hJ(IZ,s).isInside?null:e.jsx($Z,{...r,...c,ref:a})});RZ.displayName=IZ;function fJ(t,a){const s=Math.abs(a.top-t.y),c=Math.abs(a.bottom-t.y),r=Math.abs(a.right-t.x),l=Math.abs(a.left-t.x);switch(Math.min(s,c,r,l)){case l:return"left";case r:return"right";case s:return"top";case c:return"bottom";default:throw new Error("unreachable")}}function xJ(t,a,s=5){const c=[];switch(a){case"top":c.push({x:t.x-s,y:t.y+s},{x:t.x+s,y:t.y+s});break;case"bottom":c.push({x:t.x-s,y:t.y-s},{x:t.x+s,y:t.y-s});break;case"left":c.push({x:t.x+s,y:t.y-s},{x:t.x+s,y:t.y+s});break;case"right":c.push({x:t.x-s,y:t.y-s},{x:t.x-s,y:t.y+s});break}return c}function mJ(t){const{top:a,right:s,bottom:c,left:r}=t;return[{x:r,y:a},{x:s,y:a},{x:s,y:c},{x:r,y:c}]}function yJ(t,a){const{x:s,y:c}=t;let r=!1;for(let l=0,u=a.length-1;l<a.length;u=l++){const p=a[l],f=a[u],x=p.x,g=p.y,y=f.x,k=f.y;g>c!=k>c&&s<(y-x)*(c-g)/(k-g)+x&&(r=!r)}return r}function gJ(t){const a=t.slice();return a.sort((s,c)=>s.x<c.x?-1:s.x>c.x?1:s.y<c.y?-1:s.y>c.y?1:0),OJ(a)}function OJ(t){if(t.length<=1)return t.slice();const a=[];for(let c=0;c<t.length;c++){const r=t[c];for(;a.length>=2;){const l=a[a.length-1],u=a[a.length-2];if((l.x-u.x)*(r.y-u.y)>=(l.y-u.y)*(r.x-u.x))a.pop();else break}a.push(r)}a.pop();const s=[];for(let c=t.length-1;c>=0;c--){const r=t[c];for(;s.length>=2;){const l=s[s.length-1],u=s[s.length-2];if((l.x-u.x)*(r.y-u.y)>=(l.y-u.y)*(r.x-u.x))s.pop();else break}s.push(r)}return s.pop(),a.length===1&&s.length===1&&a[0].x===s[0].x&&a[0].y===s[0].y?a:a.concat(s)}var kJ=LZ,vJ=zZ,bJ=TZ,wJ=PZ,MJ=AZ,jJ=RZ;function SJ({children:t}){return e.jsx(kJ,{delayDuration:300,children:t})}function $1({children:t,content:a,side:s="top",className:c}){return a?e.jsxs(vJ,{children:[e.jsx(bJ,{asChild:!0,children:t}),e.jsx(wJ,{children:e.jsxs(MJ,{side:s,sideOffset:6,className:K("z-50 px-2.5 py-1.5 text-xs font-sans","bg-surface-4 text-text-0 border border-border rounded-md shadow-lg","animate-in fade-in-0 zoom-in-95",c),children:[a,e.jsx(jJ,{className:"fill-surface-4"})]})})]}):t}/**
31
+ `:" ";A[A.length-1]={...z,text:z.text+se+w,timestamp:Date.now()}}else A.push({from:"assistant",text:w,timestamp:Date.now()});L[P.id]=A.slice(-200),t({conversationMessages:L,streamingConversationId:P.id}),oa("groove:conversationMessages",L)}}}if(k&&k.trim()){const w={...a().activityLog};w[x]||(w[x]=[]),w[x]=[...w[x].slice(-200),{timestamp:Date.now(),text:k.trim(),type:g.type,subtype:"tool"}],t({activityLog:w}),oa("groove:activityLog",w)}break}case"agent:exit":{const x=a().agents.find(w=>w.id===r.agentId),g=(x==null?void 0:x.name)||r.agentId,y=r.status==="killed"||r.code===143||r.code===137,k=r.status==="completed"?`${g} completed`:y?`${g} stopped`:`${g} crashed (exit ${r.code})`,b=r.status==="completed"?"success":y?"info":"warning";a().addToast(b,k,r.error?r.error.slice(0,200):void 0),a().thinkingAgents.has(r.agentId)&&t(w=>{const S=new Set(w.thinkingAgents);return S.delete(r.agentId),{thinkingAgents:S}});const j=a().conversations.find(w=>w.agentId===r.agentId);j&&a().streamingConversationId===j.id&&t({sendingMessage:!1,streamingConversationId:null}),r.error&&r.agentId&&a().addChatMessage(r.agentId,"system",`Crashed: ${r.error}`),(x==null?void 0:x.role)==="planner"&&r.status==="completed"&&setTimeout(()=>a().checkRecommendedTeam(),1e3);break}case"phase2:spawned":a().addToast("info",`QC agent ${r.name} auto-spawned`,"Auditing phase 1 work");break;case"preview:ready":a().addToast("success","Project ready to preview",r.url,{label:"View Site",url:r.url},{persistent:!0});break;case"preview:failed":a().addToast("warning","Preview could not launch",r.reason?String(r.reason).slice(0,200):"Unknown error");break;case"preview:stopped":break;case"agent:stalled":{const x=r.agentName||r.agentId,g=Math.round((r.silentMs||0)/1e3);a().addToast("warning",`${x} may be stalled`,`No output for ${g}s — API stream may be hung`);break}case"knock:denied":{const x=r.agentName||r.agentId;a().addToast("warning",`${x} blocked`,`${r.toolName} on ${r.target} — ${r.reason||"scope conflict"}`);break}case"phase2:failed":a().addToast("error","QC agent failed to spawn",r.error||"Unknown error");break;case"agent:message_queued":a().addChatMessage(r.agentId,"system","Agent is working — message will be delivered when it finishes.");break;case"rotation:start":break;case"rotation:complete":{const x=r.agentId,g=r.oldAgentId;if(!x||!g)break;t(y=>{var C,_,P;const k={...y.chatHistory},b={...y.tokenTimeline},j={...y.activityLog},w={...y.chatInputs};(C=k[g])!=null&&C.length&&(k[x]=[...k[g]],delete k[g]),(_=b[g])!=null&&_.length&&(b[x]=[...b[g]],delete b[g]),(P=j[g])!=null&&P.length&&(j[x]=[...j[g]],delete j[g]),w[g]&&(w[x]=w[g],delete w[g]);const S=y.detailPanel;let M=S,$=y.teamDetailPanels;if((S==null?void 0:S.type)==="agent"&&S.agentId===g){const L={type:"agent",agentId:x};M=L;const A=a().activeTeamId;$={...y.teamDetailPanels,[A]:L}}try{localStorage.setItem("groove:chatHistory",JSON.stringify(k))}catch{}return{chatHistory:k,tokenTimeline:b,activityLog:j,chatInputs:w,detailPanel:M,teamDetailPanels:$}});break}case"rotation:failed":a().addToast("error","Rotation failed",r.error);break;case"file:changed":{const x=a().editorRecentSaves[r.path];if(x&&Date.now()-x<2e3)break;t(g=>({editorChangedFiles:{...g.editorChangedFiles,[r.path]:r.timestamp}}));break}case"team:created":case"team:deleted":case"team:updated":a().fetchTeams();break;case"approval:request":t(x=>({pendingApprovals:[...x.pendingApprovals,r.data]}));break;case"approval:resolved":{const x=r.data;t(g=>({pendingApprovals:g.pendingApprovals.filter(y=>y.id!==x.id),resolvedApprovals:[x,...g.resolvedApprovals].slice(0,200)}));break}case"conflict:detected":a().addToast("error",`Scope conflict: ${r.agentName||"agent"}`,r.filePath?`File: ${r.filePath}`:void 0);break;case"qc:activated":a().addToast("info","QC agent activated",`${r.agentCount||"4+"} agents running`);break;case"journalist:cycle":t({journalistStatus:r.data||null});break;case"schedule:execute":a().addToast("info",`Scheduled agent spawned: ${r.name||r.role||"agent"}`);break;case"gateway:status":t({gateways:r.data||[]});break;case"federation:whitelist":t(x=>({federation:{...x.federation,whitelist:r.data||[]}}));break;case"federation:connection":t(x=>{const g=[...x.federation.connections],y=g.findIndex(k=>{var b;return k.ip===((b=r.data)==null?void 0:b.ip)});return y>=0?g[y]={...g[y],...r.data}:g.push(r.data),{federation:{...x.federation,connections:g}}});break;case"federation:pouch":case"federation:pouch-log":t(x=>({federation:{...x.federation,pouchLog:[...x.federation.pouchLog,r.data].slice(-200)}}));break;case"project-dir:changed":t({projectDir:(l=r.data)==null?void 0:l.projectDir,showProjectPicker:!1});break;case"tunnel.connected":t({activeTunnelId:((u=r.data)==null?void 0:u.id)||null}),a().fetchTunnels();break;case"tunnel.disconnected":t({activeTunnelId:null}),a().fetchTunnels();break;case"tunnel.health":{const x=a().savedTunnels.map(g=>{var y;return g.id===((y=r.data)==null?void 0:y.id)?{...g,latencyMs:r.data.latencyMs,healthy:r.data.healthy}:g});t({savedTunnels:x});break}case"subscription:updated":{const x={subscription:r.data};((p=r.data)==null?void 0:p.active)===!0&&!a().marketplaceAuthenticated&&(x.marketplaceAuthenticated=!0),t(x),X.get("/edition").then(g=>{t({edition:g.edition||"community",subscription:{plan:g.plan||"community",status:g.status||(g.subscriptionActive?"active":"none"),active:g.subscriptionActive===!0,features:g.features||[],seats:g.seats||1,periodEnd:g.periodEnd||null,cancelAtPeriodEnd:g.cancelAtPeriodEnd||!1}})}).catch(()=>{}),a().fetchTunnels();break}case"auth:expired":t({marketplaceAuthenticated:!1,marketplaceUser:null}),a().addToast("warning","Session expired","Please sign in again");break;case"network:node:status":{const{__proto__:x,constructor:g,prototype:y,...k}=r.data||{};t({networkNode:{...a().networkNode,...k}});break}case"network:node:event":{const x=r.data||{};t(g=>({networkEvents:[...g.networkEvents,{...x,timestamp:x.timestamp||Date.now()}].slice(-100)}));break}case"signal_connected":{const x=r.data||{};t(g=>({networkEvents:[...g.networkEvents,{level:"connected",msg:String(x.msg||x.message||"Connected to signal").slice(0,500),detail:x.detail||x.url||void 0,timestamp:x.timestamp||Date.now()}].slice(-100)}));break}case"matched":{const x=r.data||{};t(g=>({networkEvents:[...g.networkEvents,{level:"session",msg:String(x.msg||x.message||"Session matched").slice(0,500),detail:x.detail||x.peer||x.nodeId||void 0,timestamp:x.timestamp||Date.now()}].slice(-100)}));break}case"network:status":{const x=r.data||{},g={networkStatus:{...a().networkStatus,...x}};if(x.compute){const M=x.compute;g.networkCompute={totalRamMb:M.totalRamMb??M.total_ram_mb??0,totalVramMb:M.totalVramMb??M.total_vram_mb??0,totalCpuCores:M.totalCpuCores??M.total_cpu_cores??0,totalBandwidthMbps:M.totalBandwidthMbps??M.total_bandwidth_mbps??0,activeNodes:M.activeNodes??M.active_nodes??0,totalNodes:M.totalNodes??M.total_nodes??0,avgLoad:M.avgLoad??M.avg_load??0}}else if(Array.isArray(x.nodes)&&x.nodes.length>0){const M=x.nodes,$=M.filter(C=>C.status==="active");g.networkCompute={totalRamMb:M.reduce((C,_)=>C+(_.ram_mb||0),0),totalVramMb:M.reduce((C,_)=>C+(_.vram_mb||0),0),totalCpuCores:M.reduce((C,_)=>C+(_.cpu_cores||0),0),totalBandwidthMbps:M.reduce((C,_)=>C+(_.bandwidth_mbps||0),0),activeNodes:$.length,totalNodes:M.length,avgLoad:$.length>0?$.reduce((C,_)=>C+(_.load||0),0)/$.length:0}}t(g);const y=x.nodes||[],k=a().networkNode.nodeId,b=k?y.find(M=>(M.node_id||M.nodeId)===k):null,j=y.filter(M=>M.status==="active"),w={t:Date.now(),globalSessions:x.activeSessions||0,mySessions:(b==null?void 0:b.active_sessions)??(b==null?void 0:b.sessions)??0,nodeCount:j.length,avgLoad:j.length>0?j.reduce((M,$)=>M+($.load||0),0)/j.length:0,myLoad:(b==null?void 0:b.load)??0};let S=[...a().networkSnapshots,w];S.length>100&&(S=S.slice(-100)),t({networkSnapshots:S});break}case"network:install:progress":{const{step:x,message:g,percent:y}=r.data||{};x==="done"?(t({networkInstalled:!0,networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),a().addToast("success","Network package installed")):t(x==="error"?{networkInstallProgress:{installing:!1,step:"error",message:g||"Install failed",percent:0,error:g||"Install failed"}}:{networkInstallProgress:{installing:!0,step:x||"progress",message:g||"",percent:Number.isFinite(y)?Math.max(0,Math.min(100,y)):a().networkInstallProgress.percent,error:null}});break}case"network:update:available":{const{installed:x,latest:g,updateAvailable:y}=r.data||{};t({networkVersion:{installed:x??a().networkVersion.installed,latest:g??a().networkVersion.latest,updateAvailable:!!y}});break}case"network:update:progress":{const{step:x,message:g,percent:y,version:k,error:b}=r.data||{};x==="done"?(t({networkUpdateProgress:{updating:!1,step:null,message:null,percent:0,error:null},networkVersion:{...a().networkVersion,installed:k||a().networkVersion.latest||a().networkVersion.installed,updateAvailable:!1}}),a().addToast("success","Network package updated")):x==="error"?(t({networkUpdateProgress:{updating:!1,step:"error",message:g||b||"Update failed",percent:0,error:g||b||"Update failed"}}),a().addToast("error","Network update failed",g||b)):t({networkUpdateProgress:{updating:!0,step:x||"progress",message:g||"",percent:Number.isFinite(y)?Math.max(0,Math.min(100,y)):a().networkUpdateProgress.percent,error:null}});break}case"config:updated":a().fetchBetaStatus(),a().fetchNetworkInstallStatus();break;case"conversation:created":{const x=r.data;x&&t(g=>({conversations:[x,...g.conversations.filter(y=>y.id!==x.id)]}));break}case"conversation:updated":{const x=r.data;x&&t(g=>({conversations:g.conversations.map(y=>y.id===x.id?{...y,...x}:y)}));break}case"conversation:deleted":{const x=((f=r.data)==null?void 0:f.id)||r.id;x&&t(g=>{const y=g.conversations.filter(j=>j.id!==x),k={...g.conversationMessages};delete k[x];const b=g.activeConversationId===x?null:g.activeConversationId;return b!==g.activeConversationId&&localStorage.setItem("groove:activeConversationId",""),{conversations:y,conversationMessages:k,activeConversationId:b}});break}case"conversation:chunk":{const{conversationId:x,text:g}=r.data||r;if(!x||!g)break;t(y=>{const k={...y.conversationMessages};k[x]||(k[x]=[]);const b=[...k[x]],j=b[b.length-1];return j&&j.from==="assistant"&&Date.now()-j.timestamp<3e4?b[b.length-1]={...j,text:j.text+g,timestamp:Date.now()}:b.push({from:"assistant",text:g,timestamp:Date.now()}),k[x]=b.slice(-200),{conversationMessages:k,streamingConversationId:x}});break}case"conversation:complete":{const{conversationId:x}=r.data||r;x&&a().streamingConversationId===x&&t({sendingMessage:!1,streamingConversationId:null}),x&&oa("groove:conversationMessages",a().conversationMessages);break}case"conversation:error":{const{conversationId:x,error:g}=r.data||r;x&&t(y=>{const k={...y.conversationMessages};k[x]||(k[x]=[]),k[x]=[...k[x],{from:"system",text:`Error: ${g||"Unknown error"}`,timestamp:Date.now()}],oa("groove:conversationMessages",k);const b=y.streamingConversationId===x;return{conversationMessages:k,sendingMessage:b?!1:y.sendingMessage,streamingConversationId:b?null:y.streamingConversationId}});break}}},s.onclose=()=>{En&&(clearInterval(En),En=null),t({connected:!1,hydrated:!1,ws:null,daemonHost:null,tunneled:!1}),setTimeout(()=>a().connect(),2e3)},s.onerror=()=>s.close()},setActiveView(s){t({activeView:s})},async fetchTeams(){try{const s=await X.get("/teams");let c=s.teams||[];const r=s.defaultTeamId;try{const f=JSON.parse(localStorage.getItem("groove:teamOrder")||"[]");if(f.length){const x=Object.fromEntries(c.map(k=>[k.id,k])),g=f.filter(k=>x[k]).map(k=>x[k]),y=c.filter(k=>!f.includes(k.id));c=[...g,...y]}}catch{}const{activeTeamId:l}=a(),p=c.map(f=>f.id).includes(l)?l:r;t({teams:c,activeTeamId:p}),p&&localStorage.setItem("groove:activeTeamId",p)}catch{}},switchTeam(s){const{activeTeamId:c,detailPanel:r,teamDetailPanels:l}=a(),u={...l};c&&(u[c]=r);const p=u[s]||null;t({activeTeamId:s,detailPanel:p,teamDetailPanels:u}),localStorage.setItem("groove:activeTeamId",s)},async createTeam(s,c){try{const r={name:s};c&&(r.workingDir=c);const l=await X.post("/teams",r);return t({activeTeamId:l.id}),localStorage.setItem("groove:activeTeamId",l.id),a().addToast("success",`Team "${s}" created`),l}catch(r){throw a().addToast("error","Failed to create team",r.message),r}},async deleteTeam(s){const c=a().teams.find(r=>r.id===s);try{await X.delete(`/teams/${encodeURIComponent(s)}`);const r=c!=null&&c.isDefault?"wiped":"deleted";a().addToast("info",`Team "${c==null?void 0:c.name}" ${r}`)}catch(r){a().addToast("error","Failed to delete team",r.message)}},reorderTeams(s,c){const r=[...a().teams],[l]=r.splice(s,1);r.splice(c,0,l),t({teams:r});try{localStorage.setItem("groove:teamOrder",JSON.stringify(r.map(u=>u.id)))}catch{}},async cloneTeam(s){const c=a().teams.find(l=>l.id===s);if(!c)return;const r=a().agents.filter(l=>l.teamId===s);try{const l=await X.post("/teams",{name:`${c.name} (copy)`});t({activeTeamId:l.id}),localStorage.setItem("groove:activeTeamId",l.id);for(const u of r)await X.post("/agents",{role:u.role,name:u.name,provider:u.provider,model:u.model,scope:u.scope,teamId:l.id});return a().addToast("success",`Cloned "${c.name}" with ${r.length} agent${r.length!==1?"s":""}`),l}catch(l){a().addToast("error","Failed to clone team",l.message)}},async renameTeam(s,c){try{const r=await X.patch(`/teams/${encodeURIComponent(s)}`,{name:c});return t(l=>({teams:l.teams.map(u=>u.id===s?r:u)})),r}catch(r){throw a().addToast("error","Failed to rename team",r.message),r}},openDetail(s){const c=a().activeTeamId;t(r=>({detailPanel:s,teamDetailPanels:{...r.teamDetailPanels,[c]:s}}))},closeDetail(){const s=a().activeTeamId;t(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},selectAgent(s){const c=a().activeTeamId,r={type:"agent",agentId:s};t(l=>({detailPanel:r,teamDetailPanels:{...l.teamDetailPanels,[c]:r}}))},clearSelection(){const s=a().activeTeamId;t(c=>({detailPanel:null,teamDetailPanels:{...c.teamDetailPanels,[s]:null}}))},toggleCommandPalette(){t(s=>({commandPaletteOpen:!s.commandPaletteOpen}))},toggleQuickConnect(){t(s=>({quickConnectOpen:!s.quickConnectOpen}))},setUpgradeModalOpen:s=>t({upgradeModalOpen:s}),setDetailPanelWidth(s){t({detailPanelWidth:s}),localStorage.setItem("groove:detailWidth",String(s))},setTerminalVisible(s){t({terminalVisible:s}),localStorage.setItem("groove:terminalVisible",String(s))},setTerminalHeight(s){t({terminalHeight:s}),localStorage.setItem("groove:terminalHeight",String(s))},setTerminalFullHeight(s){t({terminalFullHeight:s})},toggleNodeExpanded(s){const c={...a().expandedNodes};c[s]=!c[s],c[s]||delete c[s],t({expandedNodes:c}),oa("groove:expandedNodes",c)},addToast(s,c,r,l,u={}){const p=++SY,f=!!u.persistent,x=u.duration;t(g=>({toasts:[...g.toasts,{id:p,type:s,message:c,detail:r,action:l,persistent:f,duration:x}]}))},removeToast(s){t(c=>({toasts:c.toasts.filter(r=>r.id!==s)}))},installUpdate(){var s,c;(c=(s=window.groove)==null?void 0:s.update)==null||c.installUpdate()},setUpdateModalOpen(s){t({updateModalOpen:s})},checkForUpdate(){var s,c;(c=(s=window.groove)==null?void 0:s.update)==null||c.checkForUpdate()},async checkMarketplaceAuth(){try{const s=await X.get("/auth/status");t({marketplaceAuthenticated:s.authenticated||!1,marketplaceUser:s.user||null});try{const c=await X.get("/edition");t({edition:c.edition||"community",subscription:{plan:c.plan||"community",status:c.status||(c.subscriptionActive?"active":"none"),active:c.subscriptionActive===!0,features:c.features||[],seats:c.seats||1,periodEnd:c.periodEnd||null,cancelAtPeriodEnd:c.cancelAtPeriodEnd||!1}})}catch{}}catch{t({marketplaceAuthenticated:!1,marketplaceUser:null})}},async marketplaceLogin(){try{const s=await X.get("/auth/login-url");s.url&&window.open(s.url,"_blank");const c=setInterval(async()=>{var r,l;try{const u=await X.get("/auth/status");if(u.authenticated){clearInterval(c),t({marketplaceAuthenticated:!0,marketplaceUser:u.user}),a().addToast("success",`Signed in as ${((r=u.user)==null?void 0:r.displayName)||((l=u.user)==null?void 0:l.id)||"user"}`);try{const p=await X.get("/edition");t({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}setTimeout(async()=>{try{const p=await X.get("/edition");t({edition:p.edition||"community",subscription:{plan:p.plan||"community",status:p.status||(p.subscriptionActive?"active":"none"),active:p.subscriptionActive===!0,features:p.features||[],seats:p.seats||1,periodEnd:p.periodEnd||null,cancelAtPeriodEnd:p.cancelAtPeriodEnd||!1}})}catch{}},2e3)}}catch{}},2e3);setTimeout(()=>clearInterval(c),3e5)}catch(s){a().addToast("error","Login failed",s.message)}},async marketplaceLogout(){try{await X.post("/auth/logout"),t({marketplaceAuthenticated:!1,marketplaceUser:null}),a().addToast("info","Signed out of marketplace")}catch(s){a().addToast("error","Logout failed",s.message)}},async marketplaceCheckout(s){try{const c=await X.post("/auth/checkout",{skillId:s});return c.url&&window.open(c.url,"_blank"),c}catch(c){throw a().addToast("error","Checkout failed",c.message),c}},async fetchSubscriptionPlans(){return X.get("/subscription/plans")},async startCheckout(s){var c,r;try{const l=await X.post("/subscription/checkout",{priceId:s});return l.url&&((c=window.groove)!=null&&c.openExternal?window.groove.openExternal(l.url):window.open(l.url,"_blank")),l}catch(l){throw l.status===401||(r=l.message)!=null&&r.includes("Not authenticated")?(a().addToast("info","Please sign in to subscribe"),a().marketplaceLogin()):l.status===409?a().addToast("info","Already subscribed","Use Manage Subscription to switch plans"):a().addToast("error","Checkout failed",l.message),l}},async openPortal(){var s;try{const c=await X.post("/subscription/portal");return c.url&&((s=window.groove)!=null&&s.openExternal?window.groove.openExternal(c.url):window.open(c.url,"_blank")),c}catch(c){throw a().addToast("error","Portal failed",c.message),c}},async updateSeats(s){try{const c=await X.patch("/subscription",{seats:s});return t({subscription:{...a().subscription,...c}}),a().addToast("success",`Updated to ${s} seat${s!==1?"s":""}`),c}catch(c){throw a().addToast("error","Seat update failed",c.message),c}},async fetchApprovals(){try{const s=await X.get("/approvals");t({pendingApprovals:s.pending||[],resolvedApprovals:s.resolved||[]})}catch{}},async approveRequest(s){try{await X.post(`/approvals/${encodeURIComponent(s)}/approve`),t(c=>({pendingApprovals:c.pendingApprovals.filter(r=>r.id!==s)})),a().addToast("success","Approved")}catch(c){a().addToast("error","Approve failed",c.message)}},async rejectRequest(s,c=""){try{await X.post(`/approvals/${encodeURIComponent(s)}/reject`,{reason:c}),t(r=>({pendingApprovals:r.pendingApprovals.filter(l=>l.id!==s)})),a().addToast("info","Rejected")}catch(r){a().addToast("error","Reject failed",r.message)}},async checkRecommendedTeam(){var s;try{const c=await X.get("/recommended-team");if(!c||!((s=c.agents)!=null&&s.length)){t({recommendedTeam:null});return}const r=c.teamId||null;if(r){const l=a().agents.filter(f=>f.teamId===r&&f.role!=="planner"),u=c.agents.filter(f=>!f.phase||f.phase===1).map(f=>f.role);if(u.every(f=>l.some(x=>x.role===f))&&u.length>0){if(a()._delegatingTeamIds.has(r))return;t(f=>({recommendedTeam:null,_delegatingTeamIds:new Set([...f._delegatingTeamIds,r])}));try{const f=await X.post("/recommended-team/launch",{teamId:r}),x=f.agents||[],g=f.failed||[],y=x.map(k=>k.name).join(", ")||"";x.length===0&&g.length>0?a().addToast("error","Delegation failed",g.map(k=>k.role+": "+k.error).join(", ")):(a().addToast("success","Planner delegated work",y?`→ ${y}`:void 0),g.length>0&&a().addToast("warning",`${g.length} agent(s) failed to spawn`,g.map(k=>k.role+": "+k.error).join(", "))),x.length>0&&t(k=>({thinkingAgents:new Set([...k.thinkingAgents,...x.map(b=>b.id)])}))}finally{t(f=>{const x=new Set(f._delegatingTeamIds);return x.delete(r),{_delegatingTeamIds:x}})}return}}t({recommendedTeam:{...c,teamId:c.teamId||null}})}catch{t({recommendedTeam:null})}},async launchRecommendedTeam(s){var c;try{const r=((c=a().recommendedTeam)==null?void 0:c.teamId)||null;t({recommendedTeam:null}),a().addToast("info","Launching team...");const l={...s&&{agents:s},...r&&{teamId:r}},u=await X.post("/recommended-team/launch",l),p=(u.launched||0)+(u.reused||0),f=u.failed||[];if(p===0&&f.length>0)a().addToast("error","Team launch failed",f.map(y=>y.role+": "+y.error).join(", "));else{const y=[u.phase2Pending?`${u.phase2Pending} QC queued`:"",u.projectDir?`→ ${u.projectDir}/`:""].filter(Boolean).join(" · ");a().addToast("success",`Launched ${p} agents`,y||void 0),f.length>0&&a().addToast("warning",`${f.length} agent(s) failed to spawn`,f.map(k=>k.role+": "+k.error).join(", "))}const x=u.agents||[];x.length>0&&t(y=>({thinkingAgents:new Set([...y.thinkingAgents,...x.map(k=>k.id)])}));const g=(l==null?void 0:l.teamId)||(u==null?void 0:u.teamId)||null;return g&&X.post("/cleanup",{teamId:g}).catch(()=>{}),u}catch(r){throw a().addToast("error","Launch failed",r.message),r}},async fetchImportedRepos(){try{const s=await X.get("/repos/imported");t({importedRepos:s})}catch{}},async previewRepo(s){return X.post("/repos/preview",{repoUrl:s})},async importRepo(s,c,r,l){t({importInProgress:!0});try{const u=await X.post("/repos/import",{repoUrl:s,targetPath:c,createTeam:r,teamName:l});return a().fetchImportedRepos(),u}finally{t({importInProgress:!1})}},async softRemoveRepo(s){await X.delete(`/repos/${encodeURIComponent(s)}/remove`),a().fetchImportedRepos()},async hardNukeRepo(s,c=!0){await X.delete(`/repos/${encodeURIComponent(s)}/nuke?deleteFiles=${c}`),a().fetchImportedRepos()},async fetchProjectDir(){try{const s=await X.get("/project-dir"),c=/^\/home\/[^/]+$/.test(s.projectDir)||s.projectDir==="/root";t({projectDir:s.projectDir,recentProjects:s.recentProjects||[],showProjectPicker:c||(s.recentProjects||[]).length===0})}catch{}},async setProjectDir(s){const c=await X.post("/project-dir",{path:s});t({projectDir:c.projectDir,recentProjects:c.recentProjects||[],showProjectPicker:!1})},toggleProjectPicker(){t(s=>({showProjectPicker:!s.showProjectPicker}))},async fetchTunnels(){try{const s=await X.get("/tunnels");t({savedTunnels:Array.isArray(s)?s:[]})}catch{}},async saveTunnel(s){const c=await X.post("/tunnels",s);return a().fetchTunnels(),c},async updateTunnel(s,c){const r=await X.patch(`/tunnels/${encodeURIComponent(s)}`,c);return a().fetchTunnels(),r},async deleteTunnel(s){await X.delete(`/tunnels/${encodeURIComponent(s)}`),a().fetchTunnels()},async testTunnel(s){return X.post(`/tunnels/${encodeURIComponent(s)}/test`)},async connectTunnel(s){var r,l;const c=await X.post(`/tunnels/${encodeURIComponent(s)}/connect`);return t({activeTunnelId:s}),a().fetchTunnels(),c.localPort&&c.name&&((l=(r=window.groove)==null?void 0:r.remote)!=null&&l.openWindow?window.groove.remote.openWindow(c.localPort,c.name):window.open(`http://localhost:${c.localPort}?instance=${encodeURIComponent(c.name)}`,"_blank")),c},async disconnectTunnel(s){var r,l;const c=a().savedTunnels.find(u=>u.id===s);await X.post(`/tunnels/${encodeURIComponent(s)}/disconnect`),t({activeTunnelId:null}),a().fetchTunnels(),c!=null&&c.localPort&&((l=(r=window.groove)==null?void 0:r.remote)!=null&&l.closeByPort)&&window.groove.remote.closeByPort(c.localPort)},async installTunnel(s){return X.post(`/tunnels/${encodeURIComponent(s)}/install`)},async startTunnel(s){return X.post(`/tunnels/${encodeURIComponent(s)}/start`)},async fetchJournalist(){try{const s=await X.get("/journalist");return t({journalistStatus:s}),s}catch{return null}},async triggerJournalistCycle(){try{const s=await X.post("/journalist/cycle");return a().addToast("success","Synthesis cycle triggered"),t({journalistStatus:s}),s}catch(s){throw a().addToast("error","Synthesis failed",s.message),s}},async spawnAgent(s){try{const c=a().activeTeamId,r=await X.post("/agents",{...s,teamId:c});return a().addToast("success",`Spawned ${r.name}`),r}catch(c){throw a().addToast("error","Spawn failed",c.message),c}},async killAgent(s,c=!1){try{await X.delete(`/agents/${encodeURIComponent(s)}?purge=${c}`),c&&t(r=>{const l={...r.chatHistory},u={...r.activityLog},p={...r.tokenTimeline};return delete l[s],delete u[s],delete p[s],oa("groove:chatHistory",l),oa("groove:activityLog",u),{chatHistory:l,activityLog:u,tokenTimeline:p}})}catch(r){a().addToast("error","Kill failed",r.message)}},async rotateAgent(s){try{return await X.post(`/agents/${encodeURIComponent(s)}/rotate`)}catch(c){throw a().addToast("error","Rotation failed",c.message),c}},async fetchProviders(){return X.get("/providers")},async fetchOnboardingStatus(){try{const s=await X.get("/onboarding/status");return s!=null&&s.complete&&(t({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true")),s}catch{return null}},dismissOnboarding(){t({onboardingComplete:!0}),localStorage.setItem("groove:onboardingComplete","true"),X.post("/onboarding/dismiss").catch(()=>{})},async installProvider(s){try{const c=await X.post("/onboarding/install-provider",{provider:s});return a().addToast("success",`${s} installed`),c}catch(c){throw a().addToast("error",`Install failed: ${s}`,c.message),c}},async setDefaultProvider(s,c){try{await X.post("/onboarding/set-default",{provider:s,model:c}),a().addToast("success",`Default set to ${s} (${c})`)}catch(r){throw a().addToast("error","Failed to set default",r.message),r}},addChatMessage(s,c,r,l=!1){t(u=>{const p={...u.chatHistory};return p[s]||(p[s]=[]),p[s]=[...p[s].slice(-100),{from:c,text:r,timestamp:Date.now(),isQuery:l}],oa("groove:chatHistory",p),{chatHistory:p}})},thinkingAgents:new Set,async stopAgent(s){try{await X.post(`/agents/${encodeURIComponent(s)}/stop`),t(c=>{const r=new Set(c.thinkingAgents);return r.delete(s),{thinkingAgents:r}}),a().addToast("info","Stopped agent")}catch(c){a().addToast("error","Stop failed",c.message)}},async instructAgent(s,c){var l,u,p;a().addChatMessage(s,"user",c,!1),t(f=>({thinkingAgents:new Set([...f.thinkingAgents,s])}));const r={chatHistory:[...a().chatHistory[s]||[]],activityLog:[...a().activityLog[s]||[]],tokenTimeline:[...a().tokenTimeline[s]||[]]};try{const f=await X.post(`/agents/${encodeURIComponent(s)}/instruct`,{message:c});if(f.status==="message_sent")return f;if(f.status==="message_queued")return t(g=>{const y=new Set(g.thinkingAgents);return y.delete(s),{thinkingAgents:y}}),f;const x=f;for(const g of["chatHistory","activityLog","tokenTimeline"])(l=r[g])!=null&&l.length&&t(y=>({[g]:{...y[g],[x.id]:[...r[g]]}}));return t(g=>{const y=new Set(g.thinkingAgents);return y.delete(s),y.add(x.id),{thinkingAgents:y}}),(u=a().chatHistory[x.id])!=null&&u.length&&oa("groove:chatHistory",a().chatHistory),(p=a().activityLog[x.id])!=null&&p.length&&oa("groove:activityLog",a().activityLog),a().selectAgent(x.id),x}catch(f){throw t(x=>{const g=new Set(x.thinkingAgents);return g.delete(s),{thinkingAgents:g}}),a().addChatMessage(s,"system",`failed: ${f.message}`),f}},async queryAgent(s,c){a().addChatMessage(s,"user",c,!0);try{const r=await X.post(`/agents/${encodeURIComponent(s)}/query`,{message:c});return a().addChatMessage(s,"agent",r.response),r}catch(r){throw a().addChatMessage(s,"system",`query failed: ${r.message}`),r}},async fetchConversations(){try{const s=await X.get("/conversations");t({conversations:s.conversations||s||[]})}catch{}},async createConversation(s,c,r="api"){try{const l=await X.post("/conversations",{provider:s,model:c,mode:r});return t(u=>({conversations:[l,...u.conversations.filter(p=>p.id!==l.id)],activeConversationId:l.id})),localStorage.setItem("groove:activeConversationId",l.id),l}catch(l){throw a().addToast("error","Failed to create conversation",l.message),l}},async setConversationMode(s,c){try{const r=await X.patch(`/conversations/${encodeURIComponent(s)}`,{mode:c});t(l=>({conversations:l.conversations.map(u=>u.id===s?{...u,...r}:u)}))}catch(r){a().addToast("error","Mode change failed",r.message)}},async setConversationModel(s,c,r){try{const l=await X.patch(`/conversations/${encodeURIComponent(s)}`,{provider:c,model:r});t(u=>({conversations:u.conversations.map(p=>p.id===s?{...p,...l}:p)}))}catch(l){a().addToast("error","Model change failed",l.message)}},async stopChatStreaming(s){try{await X.post(`/conversations/${encodeURIComponent(s)}/stop`),t({sendingMessage:!1,streamingConversationId:null})}catch{}},async deleteConversation(s){try{await X.delete(`/conversations/${encodeURIComponent(s)}`),t(c=>{var p;const r=c.conversations.filter(f=>f.id!==s),l={...c.conversationMessages};delete l[s],oa("groove:conversationMessages",l);const u=c.activeConversationId===s?((p=r[0])==null?void 0:p.id)||null:c.activeConversationId;return localStorage.setItem("groove:activeConversationId",u||""),{conversations:r,conversationMessages:l,activeConversationId:u}})}catch(c){a().addToast("error","Delete failed",c.message)}},async renameConversation(s,c){try{const r=await X.patch(`/conversations/${encodeURIComponent(s)}`,{title:c});t(l=>({conversations:l.conversations.map(u=>u.id===s?{...u,...r}:u)}))}catch(r){a().addToast("error","Rename failed",r.message)}},async pinConversation(s,c){try{const r=await X.patch(`/conversations/${encodeURIComponent(s)}`,{pinned:c});t(l=>({conversations:l.conversations.map(u=>u.id===s?{...u,...r}:u)}))}catch(r){a().addToast("error","Pin failed",r.message)}},setActiveConversation(s){t({activeConversationId:s}),localStorage.setItem("groove:activeConversationId",s||"")},async sendChatMessage(s,c){const r=a().conversations.find(l=>l.id===s);if(r){t(l=>{const u={...l.conversationMessages};return u[s]||(u[s]=[]),u[s]=[...u[s],{from:"user",text:c,timestamp:Date.now()}],oa("groove:conversationMessages",u),{conversationMessages:u,sendingMessage:!0,streamingConversationId:s}});try{const l={message:c};if(r.mode==="api"||!r.mode){const u=a().conversationMessages[s]||[];l.history=u.slice(0,-1)}await X.post(`/conversations/${encodeURIComponent(s)}/message`,l)}catch(l){t(u=>{const p={...u.conversationMessages};return p[s]||(p[s]=[]),p[s]=[...p[s],{from:"system",text:`Failed: ${l.message}`,timestamp:Date.now()}],oa("groove:conversationMessages",p),{conversationMessages:p,sendingMessage:!1,streamingConversationId:null}}),a().addToast("error","Message failed",l.message)}}},async openFile(s){var l;if(a().editorFiles[s]||a().editorOpenTabs.includes(s)){t(u=>({editorActiveFile:s,editorOpenTabs:u.editorOpenTabs.includes(s)?u.editorOpenTabs:[...u.editorOpenTabs,s]}));return}const c=(l=s.split(".").pop())==null?void 0:l.toLowerCase();if(["png","jpg","jpeg","gif","svg","webp","ico","bmp","avif","mp4","webm","mov","avi","mkv","ogv"].includes(c)){t(u=>({editorActiveFile:s,editorOpenTabs:[...u.editorOpenTabs,s]}));return}try{const u=await X.get(`/files/read?path=${encodeURIComponent(s)}`);if(u.binary){a().addToast("warning","Binary file — cannot open");return}t(f=>({editorFiles:{...f.editorFiles,[s]:{content:u.content,originalContent:u.content,language:u.language,loadedAt:Date.now()}},editorActiveFile:s,editorOpenTabs:f.editorOpenTabs.includes(s)?f.editorOpenTabs:[...f.editorOpenTabs,s]}));const p=a().ws;(p==null?void 0:p.readyState)===1&&p.send(JSON.stringify({type:"editor:watch",path:s}))}catch(u){a().addToast("error","Failed to open file",u.message)}},closeFile(s){t(r=>{const l=r.editorOpenTabs.filter(x=>x!==s),u={...r.editorFiles};delete u[s];const p={...r.editorChangedFiles};delete p[s];let f=r.editorActiveFile;if(f===s){const x=r.editorOpenTabs.indexOf(s);f=l[Math.min(x,l.length-1)]||null}return{editorOpenTabs:l,editorFiles:u,editorChangedFiles:p,editorActiveFile:f}});const c=a().ws;(c==null?void 0:c.readyState)===1&&c.send(JSON.stringify({type:"editor:unwatch",path:s}))},setActiveFile(s){t({editorActiveFile:s})},setEditorSidebarWidth(s){t({editorSidebarWidth:s}),localStorage.setItem("groove:editorSidebarWidth",String(s))},updateFileContent(s,c){t(r=>({editorFiles:{...r.editorFiles,[s]:{...r.editorFiles[s],content:c}}}))},async saveFile(s){const c=a().editorFiles[s];if(c)try{await X.post("/files/write",{path:s,content:c.content}),t(r=>({editorFiles:{...r.editorFiles,[s]:{...r.editorFiles[s],originalContent:c.content}},editorChangedFiles:(()=>{const l={...r.editorChangedFiles};return delete l[s],l})(),editorRecentSaves:{...r.editorRecentSaves,[s]:Date.now()}})),a().addToast("success","File saved")}catch(r){a().addToast("error","Save failed",r.message)}},async reloadFile(s){try{const c=await X.get(`/files/read?path=${encodeURIComponent(s)}`);if(c.binary)return;t(r=>({editorFiles:{...r.editorFiles,[s]:{content:c.content,originalContent:c.content,language:c.language,loadedAt:Date.now()}},editorChangedFiles:(()=>{const l={...r.editorChangedFiles};return delete l[s],l})()}))}catch{}},dismissFileChange(s){t(c=>{const r={...c.editorChangedFiles};return delete r[s],{editorChangedFiles:r}})},async fetchTreeDir(s){try{const c=await X.get(`/files/tree?path=${encodeURIComponent(s)}`);t(r=>({editorTreeCache:{...r.editorTreeCache,[s]:c.entries}}))}catch{}},async createFile(s){try{await X.post("/files/create",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(c),a().addToast("success","File created"),!0}catch(c){return a().addToast("error","Create failed",c.message),!1}},async createDir(s){try{await X.post("/files/mkdir",{path:s});const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(c),a().addToast("success","Folder created"),!0}catch(c){return a().addToast("error","Create failed",c.message),!1}},async deleteFile(s){try{await X.delete(`/files/delete?path=${encodeURIComponent(s)}`),a().editorOpenTabs.includes(s)&&a().closeFile(s);const c=s.includes("/")?s.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(c),t(r=>{const l={...r.editorTreeCache};return delete l[s],{editorTreeCache:l}}),a().addToast("success","Deleted"),!0}catch(c){return a().addToast("error","Delete failed",c.message),!1}},async fetchFederationStatus(){try{const s=await X.get("/federation");return t(c=>{var r;return{federation:{...c.federation,peers:s.peers||[],whitelist:s.whitelist||[],connections:s.connections||[],ambassadors:((r=s.ambassadors)==null?void 0:r.ambassadors)||s.ambassadors||[]}}}),s}catch{return null}},async addToWhitelist(s,c=31415,r){try{await X.post("/federation/whitelist",{ip:s,port:c,...r&&{name:r}}),a().addToast("success",`Added ${s} to whitelist`),a().fetchFederationStatus()}catch(l){throw a().addToast("error","Whitelist failed",l.message),l}},async removeFromWhitelist(s){try{await X.delete(`/federation/whitelist/${encodeURIComponent(s)}`),a().addToast("info",`Removed ${s}`),a().fetchFederationStatus()}catch(c){a().addToast("error","Remove failed",c.message)}},setSelectedPeer(s){t(c=>({federation:{...c.federation,selectedPeerId:s}}))},async fetchPouchLog(s){try{const c=await X.get(`/federation/pouch/log${s?`?peerId=${encodeURIComponent(s)}`:""}`);t(r=>({federation:{...r.federation,pouchLog:c||[]}}))}catch{}},async sendPouch(s,c){try{const r=await X.post("/federation/pouch/send",{peerId:s,contract:c});return a().addToast("success","Pouch sent"),r}catch(r){throw a().addToast("error","Pouch send failed",r.message),r}},async fetchBetaStatus(){try{const s=await X.get("/beta/status");t({networkUnlocked:!!(s!=null&&s.unlocked)})}catch{}},async activateBeta(s){const c=await X.post("/beta/activate",{code:s});if(!(c!=null&&c.unlocked))throw new Error((c==null?void 0:c.message)||"Invalid invite code");return t({networkUnlocked:!0}),c},async deactivateBeta(){try{await X.post("/beta/deactivate"),t({networkUnlocked:!1,activeView:a().activeView==="network"?"agents":a().activeView})}catch(s){throw a().addToast("error","Deactivate failed",s.message),s}},async fetchNetworkNodeStatus(){try{const s=await X.get("/network/node/status"),c={networkNode:{...a().networkNode,...s||{}}};return s&&typeof s.installed=="boolean"&&(c.networkInstalled=s.installed),t(c),s}catch{return null}},async fetchNetworkInstallStatus(){try{const s=await X.get("/network/install/status");return s&&typeof s.installed=="boolean"&&t({networkInstalled:s.installed}),s}catch{return null}},async installNetworkPackage(){t({networkInstallProgress:{installing:!0,step:"starting",message:"Starting install…",percent:0,error:null}});try{await X.post("/network/install")}catch(s){t({networkInstallProgress:{installing:!1,step:"error",message:s.message,percent:0,error:s.message}}),a().addToast("error","Install failed",s.message)}},async uninstallNetworkPackage(){try{await X.post("/network/uninstall"),t({networkInstalled:!1,networkNode:{active:!1,status:"disconnected",nodeId:null,layers:null,model:null,sessions:0,hardware:null},networkInstallProgress:{installing:!1,step:null,message:null,percent:0,error:null}}),a().addToast("success","Network package uninstalled")}catch(s){throw a().addToast("error","Uninstall failed",s.message),s}},async fetchNetworkStatus(){try{const s=await X.get("/network/status"),c={networkStatus:{...a().networkStatus,...s||{}},networkStatusReachable:!0};if(s!=null&&s.compute){const r=s.compute;c.networkCompute={totalRamMb:r.totalRamMb??r.total_ram_mb??0,totalVramMb:r.totalVramMb??r.total_vram_mb??0,totalCpuCores:r.totalCpuCores??r.total_cpu_cores??0,totalBandwidthMbps:r.totalBandwidthMbps??r.total_bandwidth_mbps??0,activeNodes:r.activeNodes??r.active_nodes??0,totalNodes:r.totalNodes??r.total_nodes??0,avgLoad:r.avgLoad??r.avg_load??0}}else if(Array.isArray(s==null?void 0:s.nodes)&&s.nodes.length>0){const r=s.nodes,l=r.filter(u=>u.status==="active");c.networkCompute={totalRamMb:r.reduce((u,p)=>u+(p.ram_mb||0),0),totalVramMb:r.reduce((u,p)=>u+(p.vram_mb||0),0),totalCpuCores:r.reduce((u,p)=>u+(p.cpu_cores||0),0),totalBandwidthMbps:r.reduce((u,p)=>u+(p.bandwidth_mbps||0),0),activeNodes:l.length,totalNodes:r.length,avgLoad:l.length>0?l.reduce((u,p)=>u+(p.load||0),0)/l.length:0}}if(t(c),s){const r=a().networkNode.nodeId,l=s.nodes||[],u=r?l.find(g=>(g.node_id||g.nodeId)===r):null,p=l.filter(g=>g.status==="active"),f={t:Date.now(),globalSessions:s.activeSessions||0,mySessions:(u==null?void 0:u.active_sessions)??(u==null?void 0:u.sessions)??0,nodeCount:p.length,avgLoad:p.length>0?p.reduce((g,y)=>g+(y.load||0),0)/p.length:0,myLoad:(u==null?void 0:u.load)??0};let x=[...a().networkSnapshots,f];x.length>100&&(x=x.slice(-100)),t({networkSnapshots:x})}return s}catch{return t({networkStatusReachable:!1}),null}},async checkNetworkUpdate(){try{const s=await X.get("/network/update/check");return s?(t({networkVersion:{installed:s.installed??null,latest:s.latest??null,updateAvailable:!!s.updateAvailable}}),s):null}catch{return null}},async updateNetworkPackage(){t({networkUpdateProgress:{updating:!0,step:"starting",message:"Starting update…",percent:0,error:null}});try{await X.post("/network/update")}catch(s){t({networkUpdateProgress:{updating:!1,step:"error",message:s.message,percent:0,error:s.message}}),a().addToast("error","Update failed",s.message)}},async startNetworkNode(){t({networkNode:{...a().networkNode,status:"connecting"}});try{const s=await X.post("/network/node/start");return t({networkNode:{...a().networkNode,active:!0,...s||{}}}),a().addToast("success","Node started","Connecting to the Groove network"),s}catch(s){throw t({networkNode:{...a().networkNode,status:"disconnected",active:!1}}),a().addToast("error","Node start failed",s.message),s}},async stopNetworkNode(){try{await X.post("/network/node/stop"),t({networkNode:{...a().networkNode,active:!1,status:"disconnected"}}),a().addToast("info","Node stopped")}catch(s){throw a().addToast("error","Node stop failed",s.message),s}},async renameFile(s,c){try{await X.post("/files/rename",{oldPath:s,newPath:c}),t(u=>{const p=u.editorOpenTabs.map(g=>g===s?c:g),f={...u.editorFiles};f[s]&&(f[c]=f[s],delete f[s]);const x=u.editorActiveFile===s?c:u.editorActiveFile;return{editorOpenTabs:p,editorFiles:f,editorActiveFile:x}});const r=s.includes("/")?s.split("/").slice(0,-1).join("/"):"",l=c.includes("/")?c.split("/").slice(0,-1).join("/"):"";return await a().fetchTreeDir(r),l!==r&&await a().fetchTreeDir(l),a().addToast("success","Renamed"),!0}catch(r){return a().addToast("error","Rename failed",r.message),!1}}}));function qX(t){O.useEffect(()=>{function a(s){for(const c of t){const r=c.meta?s.metaKey||s.ctrlKey:!0,l=c.shift?s.shiftKey:!s.shiftKey;if(s.key.toLowerCase()===c.key.toLowerCase()&&r&&l){s.preventDefault(),c.handler();return}}}return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[t])}function Go(){return!!(window.groove||navigator.userAgent.includes("Electron"))}function IX(){var t;return((t=window.groove)==null?void 0:t.platform)||"browser"}function sQ(t){window.groove?window.groove.openExternal(t):window.open(t,"_blank")}async function NY(t={}){var a,s;return(s=(a=window.groove)==null?void 0:a.folders)!=null&&s.select?window.groove.folders.select(t):null}async function RX(t){var a,s;if((s=(a=window.groove)==null?void 0:a.integrations)!=null&&s.oauthStart)return window.groove.integrations.oauthStart(t);window.open(t,"_blank","noopener")}function VX(t){var a,s,c="";if(typeof t=="string"||typeof t=="number")c+=t;else if(typeof t=="object")if(Array.isArray(t)){var r=t.length;for(a=0;a<r;a++)t[a]&&(s=VX(t[a]))&&(c&&(c+=" "),c+=s)}else for(s in t)t[s]&&(c&&(c+=" "),c+=s);return c}function _Y(){for(var t,a,s=0,c="",r=arguments.length;s<r;s++)(t=arguments[s])&&(a=VX(t))&&(c&&(c+=" "),c+=a);return c}const $Y=(t,a)=>{const s=new Array(t.length+a.length);for(let c=0;c<t.length;c++)s[c]=t[c];for(let c=0;c<a.length;c++)s[t.length+c]=a[c];return s},CY=(t,a)=>({classGroupId:t,validator:a}),EX=(t=new Map,a=null,s)=>({nextPart:t,validators:a,classGroupId:s}),oQ="-",LV=[],QY="arbitrary..",LY=t=>{const a=TY(t),{conflictingClassGroups:s,conflictingClassGroupModifiers:c}=t;return{getClassGroupId:u=>{if(u.startsWith("[")&&u.endsWith("]"))return zY(u);const p=u.split(oQ),f=p[0]===""&&p.length>1?1:0;return XX(p,f,a)},getConflictingClassGroupIds:(u,p)=>{if(p){const f=c[u],x=s[u];return f?x?$Y(x,f):f:x||LV}return s[u]||LV}}},XX=(t,a,s)=>{if(t.length-a===0)return s.classGroupId;const r=t[a],l=s.nextPart.get(r);if(l){const x=XX(t,a+1,l);if(x)return x}const u=s.validators;if(u===null)return;const p=a===0?t.join(oQ):t.slice(a).join(oQ),f=u.length;for(let x=0;x<f;x++){const g=u[x];if(g.validator(p))return g.classGroupId}},zY=t=>t.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const a=t.slice(1,-1),s=a.indexOf(":"),c=a.slice(0,s);return c?QY+c:void 0})(),TY=t=>{const{theme:a,classGroups:s}=t;return PY(s,a)},PY=(t,a)=>{const s=EX();for(const c in t){const r=t[c];$P(r,s,c,a)}return s},$P=(t,a,s,c)=>{const r=t.length;for(let l=0;l<r;l++){const u=t[l];AY(u,a,s,c)}},AY=(t,a,s,c)=>{if(typeof t=="string"){qY(t,a,s);return}if(typeof t=="function"){IY(t,a,s,c);return}RY(t,a,s,c)},qY=(t,a,s)=>{const c=t===""?a:ZX(a,t);c.classGroupId=s},IY=(t,a,s,c)=>{if(VY(t)){$P(t(c),a,s,c);return}a.validators===null&&(a.validators=[]),a.validators.push(CY(s,t))},RY=(t,a,s,c)=>{const r=Object.entries(t),l=r.length;for(let u=0;u<l;u++){const[p,f]=r[u];$P(f,ZX(a,p),s,c)}},ZX=(t,a)=>{let s=t;const c=a.split(oQ),r=c.length;for(let l=0;l<r;l++){const u=c[l];let p=s.nextPart.get(u);p||(p=EX(),s.nextPart.set(u,p)),s=p}return s},VY=t=>"isThemeGetter"in t&&t.isThemeGetter===!0,EY=t=>{if(t<1)return{get:()=>{},set:()=>{}};let a=0,s=Object.create(null),c=Object.create(null);const r=(l,u)=>{s[l]=u,a++,a>t&&(a=0,c=s,s=Object.create(null))};return{get(l){let u=s[l];if(u!==void 0)return u;if((u=c[l])!==void 0)return r(l,u),u},set(l,u){l in s?s[l]=u:r(l,u)}}},nP="!",zV=":",XY=[],TV=(t,a,s,c,r)=>({modifiers:t,hasImportantModifier:a,baseClassName:s,maybePostfixModifierPosition:c,isExternal:r}),ZY=t=>{const{prefix:a,experimentalParseClassName:s}=t;let c=r=>{const l=[];let u=0,p=0,f=0,x;const g=r.length;for(let w=0;w<g;w++){const S=r[w];if(u===0&&p===0){if(S===zV){l.push(r.slice(f,w)),f=w+1;continue}if(S==="/"){x=w;continue}}S==="["?u++:S==="]"?u--:S==="("?p++:S===")"&&p--}const y=l.length===0?r:r.slice(f);let k=y,b=!1;y.endsWith(nP)?(k=y.slice(0,-1),b=!0):y.startsWith(nP)&&(k=y.slice(1),b=!0);const j=x&&x>f?x-f:void 0;return TV(l,b,k,j)};if(a){const r=a+zV,l=c;c=u=>u.startsWith(r)?l(u.slice(r.length)):TV(XY,!1,u,void 0,!0)}if(s){const r=c;c=l=>s({className:l,parseClassName:r})}return c},DY=t=>{const a=new Map;return t.orderSensitiveModifiers.forEach((s,c)=>{a.set(s,1e6+c)}),s=>{const c=[];let r=[];for(let l=0;l<s.length;l++){const u=s[l],p=u[0]==="[",f=a.has(u);p||f?(r.length>0&&(r.sort(),c.push(...r),r=[]),c.push(u)):r.push(u)}return r.length>0&&(r.sort(),c.push(...r)),c}},UY=t=>({cache:EY(t.cacheSize),parseClassName:ZY(t),sortModifiers:DY(t),...LY(t)}),HY=/\s+/,BY=(t,a)=>{const{parseClassName:s,getClassGroupId:c,getConflictingClassGroupIds:r,sortModifiers:l}=a,u=[],p=t.trim().split(HY);let f="";for(let x=p.length-1;x>=0;x-=1){const g=p[x],{isExternal:y,modifiers:k,hasImportantModifier:b,baseClassName:j,maybePostfixModifierPosition:w}=s(g);if(y){f=g+(f.length>0?" "+f:f);continue}let S=!!w,M=c(S?j.substring(0,w):j);if(!M){if(!S){f=g+(f.length>0?" "+f:f);continue}if(M=c(j),!M){f=g+(f.length>0?" "+f:f);continue}S=!1}const $=k.length===0?"":k.length===1?k[0]:l(k).join(":"),C=b?$+nP:$,_=C+M;if(u.indexOf(_)>-1)continue;u.push(_);const P=r(M,S);for(let L=0;L<P.length;++L){const A=P[L];u.push(C+A)}f=g+(f.length>0?" "+f:f)}return f},GY=(...t)=>{let a=0,s,c,r="";for(;a<t.length;)(s=t[a++])&&(c=DX(s))&&(r&&(r+=" "),r+=c);return r},DX=t=>{if(typeof t=="string")return t;let a,s="";for(let c=0;c<t.length;c++)t[c]&&(a=DX(t[c]))&&(s&&(s+=" "),s+=a);return s},WY=(t,...a)=>{let s,c,r,l;const u=f=>{const x=a.reduce((g,y)=>y(g),t());return s=UY(x),c=s.cache.get,r=s.cache.set,l=p,p(f)},p=f=>{const x=c(f);if(x)return x;const g=BY(f,s);return r(f,g),g};return l=u,(...f)=>l(GY(...f))},YY=[],Qt=t=>{const a=s=>s[t]||YY;return a.isThemeGetter=!0,a},UX=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,HX=/^\((?:(\w[\w-]*):)?(.+)\)$/i,FY=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,KY=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,JY=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,eF=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,tF=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,aF=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jo=t=>FY.test(t),qe=t=>!!t&&!Number.isNaN(Number(t)),So=t=>!!t&&Number.isInteger(Number(t)),xT=t=>t.endsWith("%")&&qe(t.slice(0,-1)),Ss=t=>KY.test(t),BX=()=>!0,nF=t=>JY.test(t)&&!eF.test(t),CP=()=>!1,sF=t=>tF.test(t),oF=t=>aF.test(t),cF=t=>!we(t)&&!Me(t),rF=t=>Ko(t,YX,CP),we=t=>UX.test(t),yc=t=>Ko(t,FX,nF),PV=t=>Ko(t,xF,qe),iF=t=>Ko(t,JX,BX),lF=t=>Ko(t,KX,CP),AV=t=>Ko(t,GX,CP),dF=t=>Ko(t,WX,oF),bh=t=>Ko(t,eZ,sF),Me=t=>HX.test(t),e2=t=>T1(t,FX),uF=t=>T1(t,KX),qV=t=>T1(t,GX),hF=t=>T1(t,YX),pF=t=>T1(t,WX),wh=t=>T1(t,eZ,!0),fF=t=>T1(t,JX,!0),Ko=(t,a,s)=>{const c=UX.exec(t);return c?c[1]?a(c[1]):s(c[2]):!1},T1=(t,a,s=!1)=>{const c=HX.exec(t);return c?c[1]?a(c[1]):s:!1},GX=t=>t==="position"||t==="percentage",WX=t=>t==="image"||t==="url",YX=t=>t==="length"||t==="size"||t==="bg-size",FX=t=>t==="length",xF=t=>t==="number",KX=t=>t==="family-name",JX=t=>t==="number"||t==="weight",eZ=t=>t==="shadow",mF=()=>{const t=Qt("color"),a=Qt("font"),s=Qt("text"),c=Qt("font-weight"),r=Qt("tracking"),l=Qt("leading"),u=Qt("breakpoint"),p=Qt("container"),f=Qt("spacing"),x=Qt("radius"),g=Qt("shadow"),y=Qt("inset-shadow"),k=Qt("text-shadow"),b=Qt("drop-shadow"),j=Qt("blur"),w=Qt("perspective"),S=Qt("aspect"),M=Qt("ease"),$=Qt("animate"),C=()=>["auto","avoid","all","avoid-page","page","left","right","column"],_=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[..._(),Me,we],L=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],z=()=>[Me,we,f],Y=()=>[jo,"full","auto",...z()],V=()=>[So,"none","subgrid",Me,we],se=()=>["auto",{span:["full",So,Me,we]},So,Me,we],ne=()=>[So,"auto",Me,we],oe=()=>["auto","min","max","fr",Me,we],R=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],I=()=>["start","end","center","stretch","center-safe","end-safe"],T=()=>["auto",...z()],Z=()=>[jo,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],J=()=>[jo,"screen","full","dvw","lvw","svw","min","max","fit",...z()],W=()=>[jo,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],U=()=>[t,Me,we],xe=()=>[..._(),qV,AV,{position:[Me,we]}],pe=()=>["no-repeat",{repeat:["","x","y","space","round"]}],fe=()=>["auto","cover","contain",hF,rF,{size:[Me,we]}],Oe=()=>[xT,e2,yc],Se=()=>["","none","full",x,Me,we],ue=()=>["",qe,e2,yc],ve=()=>["solid","dashed","dotted","double"],it=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],Le=()=>[qe,xT,qV,AV],Mt=()=>["","none",j,Me,we],lt=()=>["none",qe,Me,we],pt=()=>["none",qe,Me,we],jt=()=>[qe,Me,we],Ke=()=>[jo,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Ss],breakpoint:[Ss],color:[BX],container:[Ss],"drop-shadow":[Ss],ease:["in","out","in-out"],font:[cF],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Ss],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Ss],shadow:[Ss],spacing:["px",qe],text:[Ss],"text-shadow":[Ss],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",jo,we,Me,S]}],container:["container"],columns:[{columns:[qe,we,Me,p]}],"break-after":[{"break-after":C()}],"break-before":[{"break-before":C()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:P()}],overflow:[{overflow:L()}],"overflow-x":[{"overflow-x":L()}],"overflow-y":[{"overflow-y":L()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Y()}],"inset-x":[{"inset-x":Y()}],"inset-y":[{"inset-y":Y()}],start:[{"inset-s":Y(),start:Y()}],end:[{"inset-e":Y(),end:Y()}],"inset-bs":[{"inset-bs":Y()}],"inset-be":[{"inset-be":Y()}],top:[{top:Y()}],right:[{right:Y()}],bottom:[{bottom:Y()}],left:[{left:Y()}],visibility:["visible","invisible","collapse"],z:[{z:[So,"auto",Me,we]}],basis:[{basis:[jo,"full","auto",p,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[qe,jo,"auto","initial","none",we]}],grow:[{grow:["",qe,Me,we]}],shrink:[{shrink:["",qe,Me,we]}],order:[{order:[So,"first","last","none",Me,we]}],"grid-cols":[{"grid-cols":V()}],"col-start-end":[{col:se()}],"col-start":[{"col-start":ne()}],"col-end":[{"col-end":ne()}],"grid-rows":[{"grid-rows":V()}],"row-start-end":[{row:se()}],"row-start":[{"row-start":ne()}],"row-end":[{"row-end":ne()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":oe()}],"auto-rows":[{"auto-rows":oe()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...R(),"normal"]}],"justify-items":[{"justify-items":[...I(),"normal"]}],"justify-self":[{"justify-self":["auto",...I()]}],"align-content":[{content:["normal",...R()]}],"align-items":[{items:[...I(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...I(),{baseline:["","last"]}]}],"place-content":[{"place-content":R()}],"place-items":[{"place-items":[...I(),"baseline"]}],"place-self":[{"place-self":["auto",...I()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:T()}],mx:[{mx:T()}],my:[{my:T()}],ms:[{ms:T()}],me:[{me:T()}],mbs:[{mbs:T()}],mbe:[{mbe:T()}],mt:[{mt:T()}],mr:[{mr:T()}],mb:[{mb:T()}],ml:[{ml:T()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:Z()}],"inline-size":[{inline:["auto",...J()]}],"min-inline-size":[{"min-inline":["auto",...J()]}],"max-inline-size":[{"max-inline":["none",...J()]}],"block-size":[{block:["auto",...W()]}],"min-block-size":[{"min-block":["auto",...W()]}],"max-block-size":[{"max-block":["none",...W()]}],w:[{w:[p,"screen",...Z()]}],"min-w":[{"min-w":[p,"screen","none",...Z()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[u]},...Z()]}],h:[{h:["screen","lh",...Z()]}],"min-h":[{"min-h":["screen","lh","none",...Z()]}],"max-h":[{"max-h":["screen","lh",...Z()]}],"font-size":[{text:["base",s,e2,yc]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[c,fF,iF]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",xT,we]}],"font-family":[{font:[uF,lF,a]}],"font-features":[{"font-features":[we]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,Me,we]}],"line-clamp":[{"line-clamp":[qe,"none",Me,PV]}],leading:[{leading:[l,...z()]}],"list-image":[{"list-image":["none",Me,we]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Me,we]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:U()}],"text-color":[{text:U()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ve(),"wavy"]}],"text-decoration-thickness":[{decoration:[qe,"from-font","auto",Me,yc]}],"text-decoration-color":[{decoration:U()}],"underline-offset":[{"underline-offset":[qe,"auto",Me,we]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Me,we]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Me,we]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:xe()}],"bg-repeat":[{bg:pe()}],"bg-size":[{bg:fe()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},So,Me,we],radial:["",Me,we],conic:[So,Me,we]},pF,dF]}],"bg-color":[{bg:U()}],"gradient-from-pos":[{from:Oe()}],"gradient-via-pos":[{via:Oe()}],"gradient-to-pos":[{to:Oe()}],"gradient-from":[{from:U()}],"gradient-via":[{via:U()}],"gradient-to":[{to:U()}],rounded:[{rounded:Se()}],"rounded-s":[{"rounded-s":Se()}],"rounded-e":[{"rounded-e":Se()}],"rounded-t":[{"rounded-t":Se()}],"rounded-r":[{"rounded-r":Se()}],"rounded-b":[{"rounded-b":Se()}],"rounded-l":[{"rounded-l":Se()}],"rounded-ss":[{"rounded-ss":Se()}],"rounded-se":[{"rounded-se":Se()}],"rounded-ee":[{"rounded-ee":Se()}],"rounded-es":[{"rounded-es":Se()}],"rounded-tl":[{"rounded-tl":Se()}],"rounded-tr":[{"rounded-tr":Se()}],"rounded-br":[{"rounded-br":Se()}],"rounded-bl":[{"rounded-bl":Se()}],"border-w":[{border:ue()}],"border-w-x":[{"border-x":ue()}],"border-w-y":[{"border-y":ue()}],"border-w-s":[{"border-s":ue()}],"border-w-e":[{"border-e":ue()}],"border-w-bs":[{"border-bs":ue()}],"border-w-be":[{"border-be":ue()}],"border-w-t":[{"border-t":ue()}],"border-w-r":[{"border-r":ue()}],"border-w-b":[{"border-b":ue()}],"border-w-l":[{"border-l":ue()}],"divide-x":[{"divide-x":ue()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ue()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ve(),"hidden","none"]}],"divide-style":[{divide:[...ve(),"hidden","none"]}],"border-color":[{border:U()}],"border-color-x":[{"border-x":U()}],"border-color-y":[{"border-y":U()}],"border-color-s":[{"border-s":U()}],"border-color-e":[{"border-e":U()}],"border-color-bs":[{"border-bs":U()}],"border-color-be":[{"border-be":U()}],"border-color-t":[{"border-t":U()}],"border-color-r":[{"border-r":U()}],"border-color-b":[{"border-b":U()}],"border-color-l":[{"border-l":U()}],"divide-color":[{divide:U()}],"outline-style":[{outline:[...ve(),"none","hidden"]}],"outline-offset":[{"outline-offset":[qe,Me,we]}],"outline-w":[{outline:["",qe,e2,yc]}],"outline-color":[{outline:U()}],shadow:[{shadow:["","none",g,wh,bh]}],"shadow-color":[{shadow:U()}],"inset-shadow":[{"inset-shadow":["none",y,wh,bh]}],"inset-shadow-color":[{"inset-shadow":U()}],"ring-w":[{ring:ue()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:U()}],"ring-offset-w":[{"ring-offset":[qe,yc]}],"ring-offset-color":[{"ring-offset":U()}],"inset-ring-w":[{"inset-ring":ue()}],"inset-ring-color":[{"inset-ring":U()}],"text-shadow":[{"text-shadow":["none",k,wh,bh]}],"text-shadow-color":[{"text-shadow":U()}],opacity:[{opacity:[qe,Me,we]}],"mix-blend":[{"mix-blend":[...it(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":it()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[qe]}],"mask-image-linear-from-pos":[{"mask-linear-from":Le()}],"mask-image-linear-to-pos":[{"mask-linear-to":Le()}],"mask-image-linear-from-color":[{"mask-linear-from":U()}],"mask-image-linear-to-color":[{"mask-linear-to":U()}],"mask-image-t-from-pos":[{"mask-t-from":Le()}],"mask-image-t-to-pos":[{"mask-t-to":Le()}],"mask-image-t-from-color":[{"mask-t-from":U()}],"mask-image-t-to-color":[{"mask-t-to":U()}],"mask-image-r-from-pos":[{"mask-r-from":Le()}],"mask-image-r-to-pos":[{"mask-r-to":Le()}],"mask-image-r-from-color":[{"mask-r-from":U()}],"mask-image-r-to-color":[{"mask-r-to":U()}],"mask-image-b-from-pos":[{"mask-b-from":Le()}],"mask-image-b-to-pos":[{"mask-b-to":Le()}],"mask-image-b-from-color":[{"mask-b-from":U()}],"mask-image-b-to-color":[{"mask-b-to":U()}],"mask-image-l-from-pos":[{"mask-l-from":Le()}],"mask-image-l-to-pos":[{"mask-l-to":Le()}],"mask-image-l-from-color":[{"mask-l-from":U()}],"mask-image-l-to-color":[{"mask-l-to":U()}],"mask-image-x-from-pos":[{"mask-x-from":Le()}],"mask-image-x-to-pos":[{"mask-x-to":Le()}],"mask-image-x-from-color":[{"mask-x-from":U()}],"mask-image-x-to-color":[{"mask-x-to":U()}],"mask-image-y-from-pos":[{"mask-y-from":Le()}],"mask-image-y-to-pos":[{"mask-y-to":Le()}],"mask-image-y-from-color":[{"mask-y-from":U()}],"mask-image-y-to-color":[{"mask-y-to":U()}],"mask-image-radial":[{"mask-radial":[Me,we]}],"mask-image-radial-from-pos":[{"mask-radial-from":Le()}],"mask-image-radial-to-pos":[{"mask-radial-to":Le()}],"mask-image-radial-from-color":[{"mask-radial-from":U()}],"mask-image-radial-to-color":[{"mask-radial-to":U()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[qe]}],"mask-image-conic-from-pos":[{"mask-conic-from":Le()}],"mask-image-conic-to-pos":[{"mask-conic-to":Le()}],"mask-image-conic-from-color":[{"mask-conic-from":U()}],"mask-image-conic-to-color":[{"mask-conic-to":U()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:xe()}],"mask-repeat":[{mask:pe()}],"mask-size":[{mask:fe()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Me,we]}],filter:[{filter:["","none",Me,we]}],blur:[{blur:Mt()}],brightness:[{brightness:[qe,Me,we]}],contrast:[{contrast:[qe,Me,we]}],"drop-shadow":[{"drop-shadow":["","none",b,wh,bh]}],"drop-shadow-color":[{"drop-shadow":U()}],grayscale:[{grayscale:["",qe,Me,we]}],"hue-rotate":[{"hue-rotate":[qe,Me,we]}],invert:[{invert:["",qe,Me,we]}],saturate:[{saturate:[qe,Me,we]}],sepia:[{sepia:["",qe,Me,we]}],"backdrop-filter":[{"backdrop-filter":["","none",Me,we]}],"backdrop-blur":[{"backdrop-blur":Mt()}],"backdrop-brightness":[{"backdrop-brightness":[qe,Me,we]}],"backdrop-contrast":[{"backdrop-contrast":[qe,Me,we]}],"backdrop-grayscale":[{"backdrop-grayscale":["",qe,Me,we]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[qe,Me,we]}],"backdrop-invert":[{"backdrop-invert":["",qe,Me,we]}],"backdrop-opacity":[{"backdrop-opacity":[qe,Me,we]}],"backdrop-saturate":[{"backdrop-saturate":[qe,Me,we]}],"backdrop-sepia":[{"backdrop-sepia":["",qe,Me,we]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Me,we]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[qe,"initial",Me,we]}],ease:[{ease:["linear","initial",M,Me,we]}],delay:[{delay:[qe,Me,we]}],animate:[{animate:["none",$,Me,we]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,Me,we]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:lt()}],"rotate-x":[{"rotate-x":lt()}],"rotate-y":[{"rotate-y":lt()}],"rotate-z":[{"rotate-z":lt()}],scale:[{scale:pt()}],"scale-x":[{"scale-x":pt()}],"scale-y":[{"scale-y":pt()}],"scale-z":[{"scale-z":pt()}],"scale-3d":["scale-3d"],skew:[{skew:jt()}],"skew-x":[{"skew-x":jt()}],"skew-y":[{"skew-y":jt()}],transform:[{transform:[Me,we,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ke()}],"translate-x":[{"translate-x":Ke()}],"translate-y":[{"translate-y":Ke()}],"translate-z":[{"translate-z":Ke()}],"translate-none":["translate-none"],accent:[{accent:U()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:U()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Me,we]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Me,we]}],fill:[{fill:["none",...U()]}],"stroke-w":[{stroke:[qe,e2,yc,PV]}],stroke:[{stroke:["none",...U()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},yF=WY(mF);function K(...t){return yF(_Y(t))}function $e(t,a,{checkForDefaultPrevented:s=!0}={}){return function(r){if(t==null||t(r),s===!1||!r.defaultPrevented)return a==null?void 0:a(r)}}function IV(t,a){if(typeof t=="function")return t(a);t!=null&&(t.current=a)}function QP(...t){return a=>{let s=!1;const c=t.map(r=>{const l=IV(r,a);return!s&&typeof l=="function"&&(s=!0),l});if(s)return()=>{for(let r=0;r<c.length;r++){const l=c[r];typeof l=="function"?l():IV(t[r],null)}}}}function ht(...t){return O.useCallback(QP(...t),t)}function gF(t,a){const s=O.createContext(a),c=l=>{const{children:u,...p}=l,f=O.useMemo(()=>p,Object.values(p));return e.jsx(s.Provider,{value:f,children:u})};c.displayName=t+"Provider";function r(l){const u=O.useContext(s);if(u)return u;if(a!==void 0)return a;throw new Error(`\`${l}\` must be used within \`${t}\``)}return[c,r]}function Ys(t,a=[]){let s=[];function c(l,u){const p=O.createContext(u),f=s.length;s=[...s,u];const x=y=>{var M;const{scope:k,children:b,...j}=y,w=((M=k==null?void 0:k[t])==null?void 0:M[f])||p,S=O.useMemo(()=>j,Object.values(j));return e.jsx(w.Provider,{value:S,children:b})};x.displayName=l+"Provider";function g(y,k){var w;const b=((w=k==null?void 0:k[t])==null?void 0:w[f])||p,j=O.useContext(b);if(j)return j;if(u!==void 0)return u;throw new Error(`\`${y}\` must be used within \`${l}\``)}return[x,g]}const r=()=>{const l=s.map(u=>O.createContext(u));return function(p){const f=(p==null?void 0:p[t])||l;return O.useMemo(()=>({[`__scope${t}`]:{...p,[t]:f}}),[p,f])}};return r.scopeName=t,[c,OF(r,...a)]}function OF(...t){const a=t[0];if(t.length===1)return a;const s=()=>{const c=t.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(l){const u=c.reduce((p,{useScope:f,scopeName:x})=>{const y=f(l)[`__scope${x}`];return{...p,...y}},{});return O.useMemo(()=>({[`__scope${a.scopeName}`]:u}),[u])}};return s.scopeName=a.scopeName,s}function D2(t){const a=kF(t),s=O.forwardRef((c,r)=>{const{children:l,...u}=c,p=O.Children.toArray(l),f=p.find(bF);if(f){const x=f.props.children,g=p.map(y=>y===f?O.Children.count(x)>1?O.Children.only(null):O.isValidElement(x)?x.props.children:null:y);return e.jsx(a,{...u,ref:r,children:O.isValidElement(x)?O.cloneElement(x,void 0,g):null})}return e.jsx(a,{...u,ref:r,children:l})});return s.displayName=`${t}.Slot`,s}function kF(t){const a=O.forwardRef((s,c)=>{const{children:r,...l}=s;if(O.isValidElement(r)){const u=MF(r),p=wF(l,r.props);return r.type!==O.Fragment&&(p.ref=c?QP(c,u):u),O.cloneElement(r,p)}return O.Children.count(r)>1?O.Children.only(null):null});return a.displayName=`${t}.SlotClone`,a}var tZ=Symbol("radix.slottable");function vF(t){const a=({children:s})=>e.jsx(e.Fragment,{children:s});return a.displayName=`${t}.Slottable`,a.__radixId=tZ,a}function bF(t){return O.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===tZ}function wF(t,a){const s={...a};for(const c in a){const r=t[c],l=a[c];/^on[A-Z]/.test(c)?r&&l?s[c]=(...p)=>{const f=l(...p);return r(...p),f}:r&&(s[c]=r):c==="style"?s[c]={...r,...l}:c==="className"&&(s[c]=[r,l].filter(Boolean).join(" "))}return{...t,...s}}function MF(t){var c,r;let a=(c=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:c.get,s=a&&"isReactWarning"in a&&a.isReactWarning;return s?t.ref:(a=(r=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:r.get,s=a&&"isReactWarning"in a&&a.isReactWarning,s?t.props.ref:t.props.ref||t.ref)}var jF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ye=jF.reduce((t,a)=>{const s=D2(`Primitive.${a}`),c=O.forwardRef((r,l)=>{const{asChild:u,...p}=r,f=u?s:a;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),e.jsx(f,{...p,ref:l})});return c.displayName=`Primitive.${a}`,{...t,[a]:c}},{});function aZ(t,a){t&&$X.flushSync(()=>t.dispatchEvent(a))}function Yt(t){const a=O.useRef(t);return O.useEffect(()=>{a.current=t}),O.useMemo(()=>(...s)=>{var c;return(c=a.current)==null?void 0:c.call(a,...s)},[])}function SF(t,a=globalThis==null?void 0:globalThis.document){const s=Yt(t);O.useEffect(()=>{const c=r=>{r.key==="Escape"&&s(r)};return a.addEventListener("keydown",c,{capture:!0}),()=>a.removeEventListener("keydown",c,{capture:!0})},[s,a])}var NF="DismissableLayer",sP="dismissableLayer.update",_F="dismissableLayer.pointerDownOutside",$F="dismissableLayer.focusOutside",RV,nZ=O.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),CQ=O.forwardRef((t,a)=>{const{disableOutsidePointerEvents:s=!1,onEscapeKeyDown:c,onPointerDownOutside:r,onFocusOutside:l,onInteractOutside:u,onDismiss:p,...f}=t,x=O.useContext(nZ),[g,y]=O.useState(null),k=(g==null?void 0:g.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,b]=O.useState({}),j=ht(a,A=>y(A)),w=Array.from(x.layers),[S]=[...x.layersWithOutsidePointerEventsDisabled].slice(-1),M=w.indexOf(S),$=g?w.indexOf(g):-1,C=x.layersWithOutsidePointerEventsDisabled.size>0,_=$>=M,P=LF(A=>{const z=A.target,Y=[...x.branches].some(V=>V.contains(z));!_||Y||(r==null||r(A),u==null||u(A),A.defaultPrevented||p==null||p())},k),L=zF(A=>{const z=A.target;[...x.branches].some(V=>V.contains(z))||(l==null||l(A),u==null||u(A),A.defaultPrevented||p==null||p())},k);return SF(A=>{$===x.layers.size-1&&(c==null||c(A),!A.defaultPrevented&&p&&(A.preventDefault(),p()))},k),O.useEffect(()=>{if(g)return s&&(x.layersWithOutsidePointerEventsDisabled.size===0&&(RV=k.body.style.pointerEvents,k.body.style.pointerEvents="none"),x.layersWithOutsidePointerEventsDisabled.add(g)),x.layers.add(g),VV(),()=>{s&&x.layersWithOutsidePointerEventsDisabled.size===1&&(k.body.style.pointerEvents=RV)}},[g,k,s,x]),O.useEffect(()=>()=>{g&&(x.layers.delete(g),x.layersWithOutsidePointerEventsDisabled.delete(g),VV())},[g,x]),O.useEffect(()=>{const A=()=>b({});return document.addEventListener(sP,A),()=>document.removeEventListener(sP,A)},[]),e.jsx(Ye.div,{...f,ref:j,style:{pointerEvents:C?_?"auto":"none":void 0,...t.style},onFocusCapture:$e(t.onFocusCapture,L.onFocusCapture),onBlurCapture:$e(t.onBlurCapture,L.onBlurCapture),onPointerDownCapture:$e(t.onPointerDownCapture,P.onPointerDownCapture)})});CQ.displayName=NF;var CF="DismissableLayerBranch",QF=O.forwardRef((t,a)=>{const s=O.useContext(nZ),c=O.useRef(null),r=ht(a,c);return O.useEffect(()=>{const l=c.current;if(l)return s.branches.add(l),()=>{s.branches.delete(l)}},[s.branches]),e.jsx(Ye.div,{...t,ref:r})});QF.displayName=CF;function LF(t,a=globalThis==null?void 0:globalThis.document){const s=Yt(t),c=O.useRef(!1),r=O.useRef(()=>{});return O.useEffect(()=>{const l=p=>{if(p.target&&!c.current){let f=function(){sZ(_F,s,x,{discrete:!0})};const x={originalEvent:p};p.pointerType==="touch"?(a.removeEventListener("click",r.current),r.current=f,a.addEventListener("click",r.current,{once:!0})):f()}else a.removeEventListener("click",r.current);c.current=!1},u=window.setTimeout(()=>{a.addEventListener("pointerdown",l)},0);return()=>{window.clearTimeout(u),a.removeEventListener("pointerdown",l),a.removeEventListener("click",r.current)}},[a,s]),{onPointerDownCapture:()=>c.current=!0}}function zF(t,a=globalThis==null?void 0:globalThis.document){const s=Yt(t),c=O.useRef(!1);return O.useEffect(()=>{const r=l=>{l.target&&!c.current&&sZ($F,s,{originalEvent:l},{discrete:!1})};return a.addEventListener("focusin",r),()=>a.removeEventListener("focusin",r)},[a,s]),{onFocusCapture:()=>c.current=!0,onBlurCapture:()=>c.current=!1}}function VV(){const t=new CustomEvent(sP);document.dispatchEvent(t)}function sZ(t,a,s,{discrete:c}){const r=s.originalEvent.target,l=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:s});a&&r.addEventListener(t,a,{once:!0}),c?aZ(r,l):r.dispatchEvent(l)}var Bs=globalThis!=null&&globalThis.document?O.useLayoutEffect:()=>{},TF=_X[" useId ".trim().toString()]||(()=>{}),PF=0;function $d(t){const[a,s]=O.useState(TF());return Bs(()=>{s(c=>c??String(PF++))},[t]),a?`radix-${a}`:""}const AF=["top","right","bottom","left"],Wo=Math.min,Pa=Math.max,cQ=Math.round,Mh=Math.floor,Kn=t=>({x:t,y:t}),qF={left:"right",right:"left",bottom:"top",top:"bottom"};function oP(t,a,s){return Pa(t,Wo(a,s))}function Gs(t,a){return typeof t=="function"?t(a):t}function Ws(t){return t.split("-")[0]}function o0(t){return t.split("-")[1]}function LP(t){return t==="x"?"y":"x"}function zP(t){return t==="y"?"height":"width"}function Fn(t){const a=t[0];return a==="t"||a==="b"?"y":"x"}function TP(t){return LP(Fn(t))}function IF(t,a,s){s===void 0&&(s=!1);const c=o0(t),r=TP(t),l=zP(r);let u=r==="x"?c===(s?"end":"start")?"right":"left":c==="start"?"bottom":"top";return a.reference[l]>a.floating[l]&&(u=rQ(u)),[u,rQ(u)]}function RF(t){const a=rQ(t);return[cP(t),a,cP(a)]}function cP(t){return t.includes("start")?t.replace("start","end"):t.replace("end","start")}const EV=["left","right"],XV=["right","left"],VF=["top","bottom"],EF=["bottom","top"];function XF(t,a,s){switch(t){case"top":case"bottom":return s?a?XV:EV:a?EV:XV;case"left":case"right":return a?VF:EF;default:return[]}}function ZF(t,a,s,c){const r=o0(t);let l=XF(Ws(t),s==="start",c);return r&&(l=l.map(u=>u+"-"+r),a&&(l=l.concat(l.map(cP)))),l}function rQ(t){const a=Ws(t);return qF[a]+t.slice(a.length)}function DF(t){return{top:0,right:0,bottom:0,left:0,...t}}function oZ(t){return typeof t!="number"?DF(t):{top:t,right:t,bottom:t,left:t}}function iQ(t){const{x:a,y:s,width:c,height:r}=t;return{width:c,height:r,top:s,left:a,right:a+c,bottom:s+r,x:a,y:s}}function ZV(t,a,s){let{reference:c,floating:r}=t;const l=Fn(a),u=TP(a),p=zP(u),f=Ws(a),x=l==="y",g=c.x+c.width/2-r.width/2,y=c.y+c.height/2-r.height/2,k=c[p]/2-r[p]/2;let b;switch(f){case"top":b={x:g,y:c.y-r.height};break;case"bottom":b={x:g,y:c.y+c.height};break;case"right":b={x:c.x+c.width,y};break;case"left":b={x:c.x-r.width,y};break;default:b={x:c.x,y:c.y}}switch(o0(a)){case"start":b[u]-=k*(s&&x?-1:1);break;case"end":b[u]+=k*(s&&x?-1:1);break}return b}async function UF(t,a){var s;a===void 0&&(a={});const{x:c,y:r,platform:l,rects:u,elements:p,strategy:f}=t,{boundary:x="clippingAncestors",rootBoundary:g="viewport",elementContext:y="floating",altBoundary:k=!1,padding:b=0}=Gs(a,t),j=oZ(b),S=p[k?y==="floating"?"reference":"floating":y],M=iQ(await l.getClippingRect({element:(s=await(l.isElement==null?void 0:l.isElement(S)))==null||s?S:S.contextElement||await(l.getDocumentElement==null?void 0:l.getDocumentElement(p.floating)),boundary:x,rootBoundary:g,strategy:f})),$=y==="floating"?{x:c,y:r,width:u.floating.width,height:u.floating.height}:u.reference,C=await(l.getOffsetParent==null?void 0:l.getOffsetParent(p.floating)),_=await(l.isElement==null?void 0:l.isElement(C))?await(l.getScale==null?void 0:l.getScale(C))||{x:1,y:1}:{x:1,y:1},P=iQ(l.convertOffsetParentRelativeRectToViewportRelativeRect?await l.convertOffsetParentRelativeRectToViewportRelativeRect({elements:p,rect:$,offsetParent:C,strategy:f}):$);return{top:(M.top-P.top+j.top)/_.y,bottom:(P.bottom-M.bottom+j.bottom)/_.y,left:(M.left-P.left+j.left)/_.x,right:(P.right-M.right+j.right)/_.x}}const HF=50,BF=async(t,a,s)=>{const{placement:c="bottom",strategy:r="absolute",middleware:l=[],platform:u}=s,p=u.detectOverflow?u:{...u,detectOverflow:UF},f=await(u.isRTL==null?void 0:u.isRTL(a));let x=await u.getElementRects({reference:t,floating:a,strategy:r}),{x:g,y}=ZV(x,c,f),k=c,b=0;const j={};for(let w=0;w<l.length;w++){const S=l[w];if(!S)continue;const{name:M,fn:$}=S,{x:C,y:_,data:P,reset:L}=await $({x:g,y,initialPlacement:c,placement:k,strategy:r,middlewareData:j,rects:x,platform:p,elements:{reference:t,floating:a}});g=C??g,y=_??y,j[M]={...j[M],...P},L&&b<HF&&(b++,typeof L=="object"&&(L.placement&&(k=L.placement),L.rects&&(x=L.rects===!0?await u.getElementRects({reference:t,floating:a,strategy:r}):L.rects),{x:g,y}=ZV(x,k,f)),w=-1)}return{x:g,y,placement:k,strategy:r,middlewareData:j}},GF=t=>({name:"arrow",options:t,async fn(a){const{x:s,y:c,placement:r,rects:l,platform:u,elements:p,middlewareData:f}=a,{element:x,padding:g=0}=Gs(t,a)||{};if(x==null)return{};const y=oZ(g),k={x:s,y:c},b=TP(r),j=zP(b),w=await u.getDimensions(x),S=b==="y",M=S?"top":"left",$=S?"bottom":"right",C=S?"clientHeight":"clientWidth",_=l.reference[j]+l.reference[b]-k[b]-l.floating[j],P=k[b]-l.reference[b],L=await(u.getOffsetParent==null?void 0:u.getOffsetParent(x));let A=L?L[C]:0;(!A||!await(u.isElement==null?void 0:u.isElement(L)))&&(A=p.floating[C]||l.floating[j]);const z=_/2-P/2,Y=A/2-w[j]/2-1,V=Wo(y[M],Y),se=Wo(y[$],Y),ne=V,oe=A-w[j]-se,R=A/2-w[j]/2+z,I=oP(ne,R,oe),T=!f.arrow&&o0(r)!=null&&R!==I&&l.reference[j]/2-(R<ne?V:se)-w[j]/2<0,Z=T?R<ne?R-ne:R-oe:0;return{[b]:k[b]+Z,data:{[b]:I,centerOffset:R-I-Z,...T&&{alignmentOffset:Z}},reset:T}}}),WF=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(a){var s,c;const{placement:r,middlewareData:l,rects:u,initialPlacement:p,platform:f,elements:x}=a,{mainAxis:g=!0,crossAxis:y=!0,fallbackPlacements:k,fallbackStrategy:b="bestFit",fallbackAxisSideDirection:j="none",flipAlignment:w=!0,...S}=Gs(t,a);if((s=l.arrow)!=null&&s.alignmentOffset)return{};const M=Ws(r),$=Fn(p),C=Ws(p)===p,_=await(f.isRTL==null?void 0:f.isRTL(x.floating)),P=k||(C||!w?[rQ(p)]:RF(p)),L=j!=="none";!k&&L&&P.push(...ZF(p,w,j,_));const A=[p,...P],z=await f.detectOverflow(a,S),Y=[];let V=((c=l.flip)==null?void 0:c.overflows)||[];if(g&&Y.push(z[M]),y){const R=IF(r,u,_);Y.push(z[R[0]],z[R[1]])}if(V=[...V,{placement:r,overflows:Y}],!Y.every(R=>R<=0)){var se,ne;const R=(((se=l.flip)==null?void 0:se.index)||0)+1,I=A[R];if(I&&(!(y==="alignment"?$!==Fn(I):!1)||V.every(J=>Fn(J.placement)===$?J.overflows[0]>0:!0)))return{data:{index:R,overflows:V},reset:{placement:I}};let T=(ne=V.filter(Z=>Z.overflows[0]<=0).sort((Z,J)=>Z.overflows[1]-J.overflows[1])[0])==null?void 0:ne.placement;if(!T)switch(b){case"bestFit":{var oe;const Z=(oe=V.filter(J=>{if(L){const W=Fn(J.placement);return W===$||W==="y"}return!0}).map(J=>[J.placement,J.overflows.filter(W=>W>0).reduce((W,U)=>W+U,0)]).sort((J,W)=>J[1]-W[1])[0])==null?void 0:oe[0];Z&&(T=Z);break}case"initialPlacement":T=p;break}if(r!==T)return{reset:{placement:T}}}return{}}}};function DV(t,a){return{top:t.top-a.height,right:t.right-a.width,bottom:t.bottom-a.height,left:t.left-a.width}}function UV(t){return AF.some(a=>t[a]>=0)}const YF=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(a){const{rects:s,platform:c}=a,{strategy:r="referenceHidden",...l}=Gs(t,a);switch(r){case"referenceHidden":{const u=await c.detectOverflow(a,{...l,elementContext:"reference"}),p=DV(u,s.reference);return{data:{referenceHiddenOffsets:p,referenceHidden:UV(p)}}}case"escaped":{const u=await c.detectOverflow(a,{...l,altBoundary:!0}),p=DV(u,s.floating);return{data:{escapedOffsets:p,escaped:UV(p)}}}default:return{}}}}},cZ=new Set(["left","top"]);async function FF(t,a){const{placement:s,platform:c,elements:r}=t,l=await(c.isRTL==null?void 0:c.isRTL(r.floating)),u=Ws(s),p=o0(s),f=Fn(s)==="y",x=cZ.has(u)?-1:1,g=l&&f?-1:1,y=Gs(a,t);let{mainAxis:k,crossAxis:b,alignmentAxis:j}=typeof y=="number"?{mainAxis:y,crossAxis:0,alignmentAxis:null}:{mainAxis:y.mainAxis||0,crossAxis:y.crossAxis||0,alignmentAxis:y.alignmentAxis};return p&&typeof j=="number"&&(b=p==="end"?j*-1:j),f?{x:b*g,y:k*x}:{x:k*x,y:b*g}}const KF=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(a){var s,c;const{x:r,y:l,placement:u,middlewareData:p}=a,f=await FF(a,t);return u===((s=p.offset)==null?void 0:s.placement)&&(c=p.arrow)!=null&&c.alignmentOffset?{}:{x:r+f.x,y:l+f.y,data:{...f,placement:u}}}}},JF=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(a){const{x:s,y:c,placement:r,platform:l}=a,{mainAxis:u=!0,crossAxis:p=!1,limiter:f={fn:M=>{let{x:$,y:C}=M;return{x:$,y:C}}},...x}=Gs(t,a),g={x:s,y:c},y=await l.detectOverflow(a,x),k=Fn(Ws(r)),b=LP(k);let j=g[b],w=g[k];if(u){const M=b==="y"?"top":"left",$=b==="y"?"bottom":"right",C=j+y[M],_=j-y[$];j=oP(C,j,_)}if(p){const M=k==="y"?"top":"left",$=k==="y"?"bottom":"right",C=w+y[M],_=w-y[$];w=oP(C,w,_)}const S=f.fn({...a,[b]:j,[k]:w});return{...S,data:{x:S.x-s,y:S.y-c,enabled:{[b]:u,[k]:p}}}}}},eK=function(t){return t===void 0&&(t={}),{options:t,fn(a){const{x:s,y:c,placement:r,rects:l,middlewareData:u}=a,{offset:p=0,mainAxis:f=!0,crossAxis:x=!0}=Gs(t,a),g={x:s,y:c},y=Fn(r),k=LP(y);let b=g[k],j=g[y];const w=Gs(p,a),S=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(f){const C=k==="y"?"height":"width",_=l.reference[k]-l.floating[C]+S.mainAxis,P=l.reference[k]+l.reference[C]-S.mainAxis;b<_?b=_:b>P&&(b=P)}if(x){var M,$;const C=k==="y"?"width":"height",_=cZ.has(Ws(r)),P=l.reference[y]-l.floating[C]+(_&&((M=u.offset)==null?void 0:M[y])||0)+(_?0:S.crossAxis),L=l.reference[y]+l.reference[C]+(_?0:(($=u.offset)==null?void 0:$[y])||0)-(_?S.crossAxis:0);j<P?j=P:j>L&&(j=L)}return{[k]:b,[y]:j}}}},tK=function(t){return t===void 0&&(t={}),{name:"size",options:t,async fn(a){var s,c;const{placement:r,rects:l,platform:u,elements:p}=a,{apply:f=()=>{},...x}=Gs(t,a),g=await u.detectOverflow(a,x),y=Ws(r),k=o0(r),b=Fn(r)==="y",{width:j,height:w}=l.floating;let S,M;y==="top"||y==="bottom"?(S=y,M=k===(await(u.isRTL==null?void 0:u.isRTL(p.floating))?"start":"end")?"left":"right"):(M=y,S=k==="end"?"top":"bottom");const $=w-g.top-g.bottom,C=j-g.left-g.right,_=Wo(w-g[S],$),P=Wo(j-g[M],C),L=!a.middlewareData.shift;let A=_,z=P;if((s=a.middlewareData.shift)!=null&&s.enabled.x&&(z=C),(c=a.middlewareData.shift)!=null&&c.enabled.y&&(A=$),L&&!k){const V=Pa(g.left,0),se=Pa(g.right,0),ne=Pa(g.top,0),oe=Pa(g.bottom,0);b?z=j-2*(V!==0||se!==0?V+se:Pa(g.left,g.right)):A=w-2*(ne!==0||oe!==0?ne+oe:Pa(g.top,g.bottom))}await f({...a,availableWidth:z,availableHeight:A});const Y=await u.getDimensions(p.floating);return j!==Y.width||w!==Y.height?{reset:{rects:!0}}:{}}}};function QQ(){return typeof window<"u"}function c0(t){return rZ(t)?(t.nodeName||"").toLowerCase():"#document"}function Ra(t){var a;return(t==null||(a=t.ownerDocument)==null?void 0:a.defaultView)||window}function ss(t){var a;return(a=(rZ(t)?t.ownerDocument:t.document)||window.document)==null?void 0:a.documentElement}function rZ(t){return QQ()?t instanceof Node||t instanceof Ra(t).Node:!1}function _n(t){return QQ()?t instanceof Element||t instanceof Ra(t).Element:!1}function Fs(t){return QQ()?t instanceof HTMLElement||t instanceof Ra(t).HTMLElement:!1}function HV(t){return!QQ()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof Ra(t).ShadowRoot}function au(t){const{overflow:a,overflowX:s,overflowY:c,display:r}=$n(t);return/auto|scroll|overlay|hidden|clip/.test(a+c+s)&&r!=="inline"&&r!=="contents"}function aK(t){return/^(table|td|th)$/.test(c0(t))}function LQ(t){try{if(t.matches(":popover-open"))return!0}catch{}try{return t.matches(":modal")}catch{return!1}}const nK=/transform|translate|scale|rotate|perspective|filter/,sK=/paint|layout|strict|content/,gc=t=>!!t&&t!=="none";let mT;function PP(t){const a=_n(t)?$n(t):t;return gc(a.transform)||gc(a.translate)||gc(a.scale)||gc(a.rotate)||gc(a.perspective)||!AP()&&(gc(a.backdropFilter)||gc(a.filter))||nK.test(a.willChange||"")||sK.test(a.contain||"")}function oK(t){let a=Yo(t);for(;Fs(a)&&!Fd(a);){if(PP(a))return a;if(LQ(a))return null;a=Yo(a)}return null}function AP(){return mT==null&&(mT=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),mT}function Fd(t){return/^(html|body|#document)$/.test(c0(t))}function $n(t){return Ra(t).getComputedStyle(t)}function zQ(t){return _n(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Yo(t){if(c0(t)==="html")return t;const a=t.assignedSlot||t.parentNode||HV(t)&&t.host||ss(t);return HV(a)?a.host:a}function iZ(t){const a=Yo(t);return Fd(a)?t.ownerDocument?t.ownerDocument.body:t.body:Fs(a)&&au(a)?a:iZ(a)}function U2(t,a,s){var c;a===void 0&&(a=[]),s===void 0&&(s=!0);const r=iZ(t),l=r===((c=t.ownerDocument)==null?void 0:c.body),u=Ra(r);if(l){const p=rP(u);return a.concat(u,u.visualViewport||[],au(r)?r:[],p&&s?U2(p):[])}else return a.concat(r,U2(r,[],s))}function rP(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function lZ(t){const a=$n(t);let s=parseFloat(a.width)||0,c=parseFloat(a.height)||0;const r=Fs(t),l=r?t.offsetWidth:s,u=r?t.offsetHeight:c,p=cQ(s)!==l||cQ(c)!==u;return p&&(s=l,c=u),{width:s,height:c,$:p}}function qP(t){return _n(t)?t:t.contextElement}function Cd(t){const a=qP(t);if(!Fs(a))return Kn(1);const s=a.getBoundingClientRect(),{width:c,height:r,$:l}=lZ(a);let u=(l?cQ(s.width):s.width)/c,p=(l?cQ(s.height):s.height)/r;return(!u||!Number.isFinite(u))&&(u=1),(!p||!Number.isFinite(p))&&(p=1),{x:u,y:p}}const cK=Kn(0);function dZ(t){const a=Ra(t);return!AP()||!a.visualViewport?cK:{x:a.visualViewport.offsetLeft,y:a.visualViewport.offsetTop}}function rK(t,a,s){return a===void 0&&(a=!1),!s||a&&s!==Ra(t)?!1:a}function _1(t,a,s,c){a===void 0&&(a=!1),s===void 0&&(s=!1);const r=t.getBoundingClientRect(),l=qP(t);let u=Kn(1);a&&(c?_n(c)&&(u=Cd(c)):u=Cd(t));const p=rK(l,s,c)?dZ(l):Kn(0);let f=(r.left+p.x)/u.x,x=(r.top+p.y)/u.y,g=r.width/u.x,y=r.height/u.y;if(l){const k=Ra(l),b=c&&_n(c)?Ra(c):c;let j=k,w=rP(j);for(;w&&c&&b!==j;){const S=Cd(w),M=w.getBoundingClientRect(),$=$n(w),C=M.left+(w.clientLeft+parseFloat($.paddingLeft))*S.x,_=M.top+(w.clientTop+parseFloat($.paddingTop))*S.y;f*=S.x,x*=S.y,g*=S.x,y*=S.y,f+=C,x+=_,j=Ra(w),w=rP(j)}}return iQ({width:g,height:y,x:f,y:x})}function TQ(t,a){const s=zQ(t).scrollLeft;return a?a.left+s:_1(ss(t)).left+s}function uZ(t,a){const s=t.getBoundingClientRect(),c=s.left+a.scrollLeft-TQ(t,s),r=s.top+a.scrollTop;return{x:c,y:r}}function iK(t){let{elements:a,rect:s,offsetParent:c,strategy:r}=t;const l=r==="fixed",u=ss(c),p=a?LQ(a.floating):!1;if(c===u||p&&l)return s;let f={scrollLeft:0,scrollTop:0},x=Kn(1);const g=Kn(0),y=Fs(c);if((y||!y&&!l)&&((c0(c)!=="body"||au(u))&&(f=zQ(c)),y)){const b=_1(c);x=Cd(c),g.x=b.x+c.clientLeft,g.y=b.y+c.clientTop}const k=u&&!y&&!l?uZ(u,f):Kn(0);return{width:s.width*x.x,height:s.height*x.y,x:s.x*x.x-f.scrollLeft*x.x+g.x+k.x,y:s.y*x.y-f.scrollTop*x.y+g.y+k.y}}function lK(t){return Array.from(t.getClientRects())}function dK(t){const a=ss(t),s=zQ(t),c=t.ownerDocument.body,r=Pa(a.scrollWidth,a.clientWidth,c.scrollWidth,c.clientWidth),l=Pa(a.scrollHeight,a.clientHeight,c.scrollHeight,c.clientHeight);let u=-s.scrollLeft+TQ(t);const p=-s.scrollTop;return $n(c).direction==="rtl"&&(u+=Pa(a.clientWidth,c.clientWidth)-r),{width:r,height:l,x:u,y:p}}const BV=25;function uK(t,a){const s=Ra(t),c=ss(t),r=s.visualViewport;let l=c.clientWidth,u=c.clientHeight,p=0,f=0;if(r){l=r.width,u=r.height;const g=AP();(!g||g&&a==="fixed")&&(p=r.offsetLeft,f=r.offsetTop)}const x=TQ(c);if(x<=0){const g=c.ownerDocument,y=g.body,k=getComputedStyle(y),b=g.compatMode==="CSS1Compat"&&parseFloat(k.marginLeft)+parseFloat(k.marginRight)||0,j=Math.abs(c.clientWidth-y.clientWidth-b);j<=BV&&(l-=j)}else x<=BV&&(l+=x);return{width:l,height:u,x:p,y:f}}function hK(t,a){const s=_1(t,!0,a==="fixed"),c=s.top+t.clientTop,r=s.left+t.clientLeft,l=Fs(t)?Cd(t):Kn(1),u=t.clientWidth*l.x,p=t.clientHeight*l.y,f=r*l.x,x=c*l.y;return{width:u,height:p,x:f,y:x}}function GV(t,a,s){let c;if(a==="viewport")c=uK(t,s);else if(a==="document")c=dK(ss(t));else if(_n(a))c=hK(a,s);else{const r=dZ(t);c={x:a.x-r.x,y:a.y-r.y,width:a.width,height:a.height}}return iQ(c)}function hZ(t,a){const s=Yo(t);return s===a||!_n(s)||Fd(s)?!1:$n(s).position==="fixed"||hZ(s,a)}function pK(t,a){const s=a.get(t);if(s)return s;let c=U2(t,[],!1).filter(p=>_n(p)&&c0(p)!=="body"),r=null;const l=$n(t).position==="fixed";let u=l?Yo(t):t;for(;_n(u)&&!Fd(u);){const p=$n(u),f=PP(u);!f&&p.position==="fixed"&&(r=null),(l?!f&&!r:!f&&p.position==="static"&&!!r&&(r.position==="absolute"||r.position==="fixed")||au(u)&&!f&&hZ(t,u))?c=c.filter(g=>g!==u):r=p,u=Yo(u)}return a.set(t,c),c}function fK(t){let{element:a,boundary:s,rootBoundary:c,strategy:r}=t;const u=[...s==="clippingAncestors"?LQ(a)?[]:pK(a,this._c):[].concat(s),c],p=GV(a,u[0],r);let f=p.top,x=p.right,g=p.bottom,y=p.left;for(let k=1;k<u.length;k++){const b=GV(a,u[k],r);f=Pa(b.top,f),x=Wo(b.right,x),g=Wo(b.bottom,g),y=Pa(b.left,y)}return{width:x-y,height:g-f,x:y,y:f}}function xK(t){const{width:a,height:s}=lZ(t);return{width:a,height:s}}function mK(t,a,s){const c=Fs(a),r=ss(a),l=s==="fixed",u=_1(t,!0,l,a);let p={scrollLeft:0,scrollTop:0};const f=Kn(0);function x(){f.x=TQ(r)}if(c||!c&&!l)if((c0(a)!=="body"||au(r))&&(p=zQ(a)),c){const b=_1(a,!0,l,a);f.x=b.x+a.clientLeft,f.y=b.y+a.clientTop}else r&&x();l&&!c&&r&&x();const g=r&&!c&&!l?uZ(r,p):Kn(0),y=u.left+p.scrollLeft-f.x-g.x,k=u.top+p.scrollTop-f.y-g.y;return{x:y,y:k,width:u.width,height:u.height}}function yT(t){return $n(t).position==="static"}function WV(t,a){if(!Fs(t)||$n(t).position==="fixed")return null;if(a)return a(t);let s=t.offsetParent;return ss(t)===s&&(s=s.ownerDocument.body),s}function pZ(t,a){const s=Ra(t);if(LQ(t))return s;if(!Fs(t)){let r=Yo(t);for(;r&&!Fd(r);){if(_n(r)&&!yT(r))return r;r=Yo(r)}return s}let c=WV(t,a);for(;c&&aK(c)&&yT(c);)c=WV(c,a);return c&&Fd(c)&&yT(c)&&!PP(c)?s:c||oK(t)||s}const yK=async function(t){const a=this.getOffsetParent||pZ,s=this.getDimensions,c=await s(t.floating);return{reference:mK(t.reference,await a(t.floating),t.strategy),floating:{x:0,y:0,width:c.width,height:c.height}}};function gK(t){return $n(t).direction==="rtl"}const OK={convertOffsetParentRelativeRectToViewportRelativeRect:iK,getDocumentElement:ss,getClippingRect:fK,getOffsetParent:pZ,getElementRects:yK,getClientRects:lK,getDimensions:xK,getScale:Cd,isElement:_n,isRTL:gK};function fZ(t,a){return t.x===a.x&&t.y===a.y&&t.width===a.width&&t.height===a.height}function kK(t,a){let s=null,c;const r=ss(t);function l(){var p;clearTimeout(c),(p=s)==null||p.disconnect(),s=null}function u(p,f){p===void 0&&(p=!1),f===void 0&&(f=1),l();const x=t.getBoundingClientRect(),{left:g,top:y,width:k,height:b}=x;if(p||a(),!k||!b)return;const j=Mh(y),w=Mh(r.clientWidth-(g+k)),S=Mh(r.clientHeight-(y+b)),M=Mh(g),C={rootMargin:-j+"px "+-w+"px "+-S+"px "+-M+"px",threshold:Pa(0,Wo(1,f))||1};let _=!0;function P(L){const A=L[0].intersectionRatio;if(A!==f){if(!_)return u();A?u(!1,A):c=setTimeout(()=>{u(!1,1e-7)},1e3)}A===1&&!fZ(x,t.getBoundingClientRect())&&u(),_=!1}try{s=new IntersectionObserver(P,{...C,root:r.ownerDocument})}catch{s=new IntersectionObserver(P,C)}s.observe(t)}return u(!0),l}function vK(t,a,s,c){c===void 0&&(c={});const{ancestorScroll:r=!0,ancestorResize:l=!0,elementResize:u=typeof ResizeObserver=="function",layoutShift:p=typeof IntersectionObserver=="function",animationFrame:f=!1}=c,x=qP(t),g=r||l?[...x?U2(x):[],...a?U2(a):[]]:[];g.forEach(M=>{r&&M.addEventListener("scroll",s,{passive:!0}),l&&M.addEventListener("resize",s)});const y=x&&p?kK(x,s):null;let k=-1,b=null;u&&(b=new ResizeObserver(M=>{let[$]=M;$&&$.target===x&&b&&a&&(b.unobserve(a),cancelAnimationFrame(k),k=requestAnimationFrame(()=>{var C;(C=b)==null||C.observe(a)})),s()}),x&&!f&&b.observe(x),a&&b.observe(a));let j,w=f?_1(t):null;f&&S();function S(){const M=_1(t);w&&!fZ(w,M)&&s(),w=M,j=requestAnimationFrame(S)}return s(),()=>{var M;g.forEach($=>{r&&$.removeEventListener("scroll",s),l&&$.removeEventListener("resize",s)}),y==null||y(),(M=b)==null||M.disconnect(),b=null,f&&cancelAnimationFrame(j)}}const bK=KF,wK=JF,MK=WF,jK=tK,SK=YF,YV=GF,NK=eK,_K=(t,a,s)=>{const c=new Map,r={platform:OK,...s},l={...r.platform,_c:c};return BF(t,a,{...r,platform:l})};var $K=typeof document<"u",CK=function(){},Uh=$K?O.useLayoutEffect:CK;function lQ(t,a){if(t===a)return!0;if(typeof t!=typeof a)return!1;if(typeof t=="function"&&t.toString()===a.toString())return!0;let s,c,r;if(t&&a&&typeof t=="object"){if(Array.isArray(t)){if(s=t.length,s!==a.length)return!1;for(c=s;c--!==0;)if(!lQ(t[c],a[c]))return!1;return!0}if(r=Object.keys(t),s=r.length,s!==Object.keys(a).length)return!1;for(c=s;c--!==0;)if(!{}.hasOwnProperty.call(a,r[c]))return!1;for(c=s;c--!==0;){const l=r[c];if(!(l==="_owner"&&t.$$typeof)&&!lQ(t[l],a[l]))return!1}return!0}return t!==t&&a!==a}function xZ(t){return typeof window>"u"?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function FV(t,a){const s=xZ(t);return Math.round(a*s)/s}function gT(t){const a=O.useRef(t);return Uh(()=>{a.current=t}),a}function QK(t){t===void 0&&(t={});const{placement:a="bottom",strategy:s="absolute",middleware:c=[],platform:r,elements:{reference:l,floating:u}={},transform:p=!0,whileElementsMounted:f,open:x}=t,[g,y]=O.useState({x:0,y:0,strategy:s,placement:a,middlewareData:{},isPositioned:!1}),[k,b]=O.useState(c);lQ(k,c)||b(c);const[j,w]=O.useState(null),[S,M]=O.useState(null),$=O.useCallback(J=>{J!==L.current&&(L.current=J,w(J))},[]),C=O.useCallback(J=>{J!==A.current&&(A.current=J,M(J))},[]),_=l||j,P=u||S,L=O.useRef(null),A=O.useRef(null),z=O.useRef(g),Y=f!=null,V=gT(f),se=gT(r),ne=gT(x),oe=O.useCallback(()=>{if(!L.current||!A.current)return;const J={placement:a,strategy:s,middleware:k};se.current&&(J.platform=se.current),_K(L.current,A.current,J).then(W=>{const U={...W,isPositioned:ne.current!==!1};R.current&&!lQ(z.current,U)&&(z.current=U,$X.flushSync(()=>{y(U)}))})},[k,a,s,se,ne]);Uh(()=>{x===!1&&z.current.isPositioned&&(z.current.isPositioned=!1,y(J=>({...J,isPositioned:!1})))},[x]);const R=O.useRef(!1);Uh(()=>(R.current=!0,()=>{R.current=!1}),[]),Uh(()=>{if(_&&(L.current=_),P&&(A.current=P),_&&P){if(V.current)return V.current(_,P,oe);oe()}},[_,P,oe,V,Y]);const I=O.useMemo(()=>({reference:L,floating:A,setReference:$,setFloating:C}),[$,C]),T=O.useMemo(()=>({reference:_,floating:P}),[_,P]),Z=O.useMemo(()=>{const J={position:s,left:0,top:0};if(!T.floating)return J;const W=FV(T.floating,g.x),U=FV(T.floating,g.y);return p?{...J,transform:"translate("+W+"px, "+U+"px)",...xZ(T.floating)>=1.5&&{willChange:"transform"}}:{position:s,left:W,top:U}},[s,p,T.floating,g.x,g.y]);return O.useMemo(()=>({...g,update:oe,refs:I,elements:T,floatingStyles:Z}),[g,oe,I,T,Z])}const LK=t=>{function a(s){return{}.hasOwnProperty.call(s,"current")}return{name:"arrow",options:t,fn(s){const{element:c,padding:r}=typeof t=="function"?t(s):t;return c&&a(c)?c.current!=null?YV({element:c.current,padding:r}).fn(s):{}:c?YV({element:c,padding:r}).fn(s):{}}}},zK=(t,a)=>{const s=bK(t);return{name:s.name,fn:s.fn,options:[t,a]}},TK=(t,a)=>{const s=wK(t);return{name:s.name,fn:s.fn,options:[t,a]}},PK=(t,a)=>({fn:NK(t).fn,options:[t,a]}),AK=(t,a)=>{const s=MK(t);return{name:s.name,fn:s.fn,options:[t,a]}},qK=(t,a)=>{const s=jK(t);return{name:s.name,fn:s.fn,options:[t,a]}},IK=(t,a)=>{const s=SK(t);return{name:s.name,fn:s.fn,options:[t,a]}},RK=(t,a)=>{const s=LK(t);return{name:s.name,fn:s.fn,options:[t,a]}};var VK="Arrow",mZ=O.forwardRef((t,a)=>{const{children:s,width:c=10,height:r=5,...l}=t;return e.jsx(Ye.svg,{...l,ref:a,width:c,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?s:e.jsx("polygon",{points:"0,0 30,0 15,10"})})});mZ.displayName=VK;var EK=mZ;function XK(t){const[a,s]=O.useState(void 0);return Bs(()=>{if(t){s({width:t.offsetWidth,height:t.offsetHeight});const c=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const l=r[0];let u,p;if("borderBoxSize"in l){const f=l.borderBoxSize,x=Array.isArray(f)?f[0]:f;u=x.inlineSize,p=x.blockSize}else u=t.offsetWidth,p=t.offsetHeight;s({width:u,height:p})});return c.observe(t,{box:"border-box"}),()=>c.unobserve(t)}else s(void 0)},[t]),a}var IP="Popper",[yZ,PQ]=Ys(IP),[ZK,gZ]=yZ(IP),OZ=t=>{const{__scopePopper:a,children:s}=t,[c,r]=O.useState(null);return e.jsx(ZK,{scope:a,anchor:c,onAnchorChange:r,children:s})};OZ.displayName=IP;var kZ="PopperAnchor",vZ=O.forwardRef((t,a)=>{const{__scopePopper:s,virtualRef:c,...r}=t,l=gZ(kZ,s),u=O.useRef(null),p=ht(a,u),f=O.useRef(null);return O.useEffect(()=>{const x=f.current;f.current=(c==null?void 0:c.current)||u.current,x!==f.current&&l.onAnchorChange(f.current)}),c?null:e.jsx(Ye.div,{...r,ref:p})});vZ.displayName=kZ;var RP="PopperContent",[DK,UK]=yZ(RP),bZ=O.forwardRef((t,a)=>{var ve,it,Le,Mt,lt,pt;const{__scopePopper:s,side:c="bottom",sideOffset:r=0,align:l="center",alignOffset:u=0,arrowPadding:p=0,avoidCollisions:f=!0,collisionBoundary:x=[],collisionPadding:g=0,sticky:y="partial",hideWhenDetached:k=!1,updatePositionStrategy:b="optimized",onPlaced:j,...w}=t,S=gZ(RP,s),[M,$]=O.useState(null),C=ht(a,jt=>$(jt)),[_,P]=O.useState(null),L=XK(_),A=(L==null?void 0:L.width)??0,z=(L==null?void 0:L.height)??0,Y=c+(l!=="center"?"-"+l:""),V=typeof g=="number"?g:{top:0,right:0,bottom:0,left:0,...g},se=Array.isArray(x)?x:[x],ne=se.length>0,oe={padding:V,boundary:se.filter(BK),altBoundary:ne},{refs:R,floatingStyles:I,placement:T,isPositioned:Z,middlewareData:J}=QK({strategy:"fixed",placement:Y,whileElementsMounted:(...jt)=>vK(...jt,{animationFrame:b==="always"}),elements:{reference:S.anchor},middleware:[zK({mainAxis:r+z,alignmentAxis:u}),f&&TK({mainAxis:!0,crossAxis:!1,limiter:y==="partial"?PK():void 0,...oe}),f&&AK({...oe}),qK({...oe,apply:({elements:jt,rects:Ke,availableWidth:dn,availableHeight:Ln})=>{const{width:cs,height:zn}=Ke.reference,ba=jt.floating.style;ba.setProperty("--radix-popper-available-width",`${dn}px`),ba.setProperty("--radix-popper-available-height",`${Ln}px`),ba.setProperty("--radix-popper-anchor-width",`${cs}px`),ba.setProperty("--radix-popper-anchor-height",`${zn}px`)}}),_&&RK({element:_,padding:p}),GK({arrowWidth:A,arrowHeight:z}),k&&IK({strategy:"referenceHidden",...oe})]}),[W,U]=jZ(T),xe=Yt(j);Bs(()=>{Z&&(xe==null||xe())},[Z,xe]);const pe=(ve=J.arrow)==null?void 0:ve.x,fe=(it=J.arrow)==null?void 0:it.y,Oe=((Le=J.arrow)==null?void 0:Le.centerOffset)!==0,[Se,ue]=O.useState();return Bs(()=>{M&&ue(window.getComputedStyle(M).zIndex)},[M]),e.jsx("div",{ref:R.setFloating,"data-radix-popper-content-wrapper":"",style:{...I,transform:Z?I.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Se,"--radix-popper-transform-origin":[(Mt=J.transformOrigin)==null?void 0:Mt.x,(lt=J.transformOrigin)==null?void 0:lt.y].join(" "),...((pt=J.hide)==null?void 0:pt.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:e.jsx(DK,{scope:s,placedSide:W,onArrowChange:P,arrowX:pe,arrowY:fe,shouldHideArrow:Oe,children:e.jsx(Ye.div,{"data-side":W,"data-align":U,...w,ref:C,style:{...w.style,animation:Z?void 0:"none"}})})})});bZ.displayName=RP;var wZ="PopperArrow",HK={top:"bottom",right:"left",bottom:"top",left:"right"},MZ=O.forwardRef(function(a,s){const{__scopePopper:c,...r}=a,l=UK(wZ,c),u=HK[l.placedSide];return e.jsx("span",{ref:l.onArrowChange,style:{position:"absolute",left:l.arrowX,top:l.arrowY,[u]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[l.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[l.placedSide],visibility:l.shouldHideArrow?"hidden":void 0},children:e.jsx(EK,{...r,ref:s,style:{...r.style,display:"block"}})})});MZ.displayName=wZ;function BK(t){return t!==null}var GK=t=>({name:"transformOrigin",options:t,fn(a){var S,M,$;const{placement:s,rects:c,middlewareData:r}=a,u=((S=r.arrow)==null?void 0:S.centerOffset)!==0,p=u?0:t.arrowWidth,f=u?0:t.arrowHeight,[x,g]=jZ(s),y={start:"0%",center:"50%",end:"100%"}[g],k=(((M=r.arrow)==null?void 0:M.x)??0)+p/2,b=((($=r.arrow)==null?void 0:$.y)??0)+f/2;let j="",w="";return x==="bottom"?(j=u?y:`${k}px`,w=`${-f}px`):x==="top"?(j=u?y:`${k}px`,w=`${c.floating.height+f}px`):x==="right"?(j=`${-f}px`,w=u?y:`${b}px`):x==="left"&&(j=`${c.floating.width+f}px`,w=u?y:`${b}px`),{data:{x:j,y:w}}}});function jZ(t){const[a,s="center"]=t.split("-");return[a,s]}var SZ=OZ,NZ=vZ,_Z=bZ,$Z=MZ,WK="Portal",AQ=O.forwardRef((t,a)=>{var p;const{container:s,...c}=t,[r,l]=O.useState(!1);Bs(()=>l(!0),[]);const u=s||r&&((p=globalThis==null?void 0:globalThis.document)==null?void 0:p.body);return u?RW.createPortal(e.jsx(Ye.div,{...c,ref:a}),u):null});AQ.displayName=WK;function YK(t,a){return O.useReducer((s,c)=>a[s][c]??s,t)}var la=t=>{const{present:a,children:s}=t,c=FK(a),r=typeof s=="function"?s({present:c.isPresent}):O.Children.only(s),l=ht(c.ref,KK(r));return typeof s=="function"||c.isPresent?O.cloneElement(r,{ref:l}):null};la.displayName="Presence";function FK(t){const[a,s]=O.useState(),c=O.useRef(null),r=O.useRef(t),l=O.useRef("none"),u=t?"mounted":"unmounted",[p,f]=YK(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return O.useEffect(()=>{const x=jh(c.current);l.current=p==="mounted"?x:"none"},[p]),Bs(()=>{const x=c.current,g=r.current;if(g!==t){const k=l.current,b=jh(x);t?f("MOUNT"):b==="none"||(x==null?void 0:x.display)==="none"?f("UNMOUNT"):f(g&&k!==b?"ANIMATION_OUT":"UNMOUNT"),r.current=t}},[t,f]),Bs(()=>{if(a){let x;const g=a.ownerDocument.defaultView??window,y=b=>{const w=jh(c.current).includes(CSS.escape(b.animationName));if(b.target===a&&w&&(f("ANIMATION_END"),!r.current)){const S=a.style.animationFillMode;a.style.animationFillMode="forwards",x=g.setTimeout(()=>{a.style.animationFillMode==="forwards"&&(a.style.animationFillMode=S)})}},k=b=>{b.target===a&&(l.current=jh(c.current))};return a.addEventListener("animationstart",k),a.addEventListener("animationcancel",y),a.addEventListener("animationend",y),()=>{g.clearTimeout(x),a.removeEventListener("animationstart",k),a.removeEventListener("animationcancel",y),a.removeEventListener("animationend",y)}}else f("ANIMATION_END")},[a,f]),{isPresent:["mounted","unmountSuspended"].includes(p),ref:O.useCallback(x=>{c.current=x?getComputedStyle(x):null,s(x)},[])}}function jh(t){return(t==null?void 0:t.animationName)||"none"}function KK(t){var c,r;let a=(c=Object.getOwnPropertyDescriptor(t.props,"ref"))==null?void 0:c.get,s=a&&"isReactWarning"in a&&a.isReactWarning;return s?t.ref:(a=(r=Object.getOwnPropertyDescriptor(t,"ref"))==null?void 0:r.get,s=a&&"isReactWarning"in a&&a.isReactWarning,s?t.props.ref:t.props.ref||t.ref)}var JK=_X[" useInsertionEffect ".trim().toString()]||Bs;function qQ({prop:t,defaultProp:a,onChange:s=()=>{},caller:c}){const[r,l,u]=eJ({defaultProp:a,onChange:s}),p=t!==void 0,f=p?t:r;{const g=O.useRef(t!==void 0);O.useEffect(()=>{const y=g.current;y!==p&&console.warn(`${c} is changing from ${y?"controlled":"uncontrolled"} to ${p?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),g.current=p},[p,c])}const x=O.useCallback(g=>{var y;if(p){const k=tJ(g)?g(t):g;k!==t&&((y=u.current)==null||y.call(u,k))}else l(g)},[p,t,l,u]);return[f,x]}function eJ({defaultProp:t,onChange:a}){const[s,c]=O.useState(t),r=O.useRef(s),l=O.useRef(a);return JK(()=>{l.current=a},[a]),O.useEffect(()=>{var u;r.current!==s&&((u=l.current)==null||u.call(l,s),r.current=s)},[s,r]),[s,c,l]}function tJ(t){return typeof t=="function"}var aJ=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),nJ="VisuallyHidden",CZ=O.forwardRef((t,a)=>e.jsx(Ye.span,{...t,ref:a,style:{...aJ,...t.style}}));CZ.displayName=nJ;var sJ=CZ,[IQ]=Ys("Tooltip",[PQ]),RQ=PQ(),QZ="TooltipProvider",oJ=700,iP="tooltip.open",[cJ,VP]=IQ(QZ),LZ=t=>{const{__scopeTooltip:a,delayDuration:s=oJ,skipDelayDuration:c=300,disableHoverableContent:r=!1,children:l}=t,u=O.useRef(!0),p=O.useRef(!1),f=O.useRef(0);return O.useEffect(()=>{const x=f.current;return()=>window.clearTimeout(x)},[]),e.jsx(cJ,{scope:a,isOpenDelayedRef:u,delayDuration:s,onOpen:O.useCallback(()=>{window.clearTimeout(f.current),u.current=!1},[]),onClose:O.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>u.current=!0,c)},[c]),isPointerInTransitRef:p,onPointerInTransitChange:O.useCallback(x=>{p.current=x},[]),disableHoverableContent:r,children:l})};LZ.displayName=QZ;var H2="Tooltip",[rJ,nu]=IQ(H2),zZ=t=>{const{__scopeTooltip:a,children:s,open:c,defaultOpen:r,onOpenChange:l,disableHoverableContent:u,delayDuration:p}=t,f=VP(H2,t.__scopeTooltip),x=RQ(a),[g,y]=O.useState(null),k=$d(),b=O.useRef(0),j=u??f.disableHoverableContent,w=p??f.delayDuration,S=O.useRef(!1),[M,$]=qQ({prop:c,defaultProp:r??!1,onChange:A=>{A?(f.onOpen(),document.dispatchEvent(new CustomEvent(iP))):f.onClose(),l==null||l(A)},caller:H2}),C=O.useMemo(()=>M?S.current?"delayed-open":"instant-open":"closed",[M]),_=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,S.current=!1,$(!0)},[$]),P=O.useCallback(()=>{window.clearTimeout(b.current),b.current=0,$(!1)},[$]),L=O.useCallback(()=>{window.clearTimeout(b.current),b.current=window.setTimeout(()=>{S.current=!0,$(!0),b.current=0},w)},[w,$]);return O.useEffect(()=>()=>{b.current&&(window.clearTimeout(b.current),b.current=0)},[]),e.jsx(SZ,{...x,children:e.jsx(rJ,{scope:a,contentId:k,open:M,stateAttribute:C,trigger:g,onTriggerChange:y,onTriggerEnter:O.useCallback(()=>{f.isOpenDelayedRef.current?L():_()},[f.isOpenDelayedRef,L,_]),onTriggerLeave:O.useCallback(()=>{j?P():(window.clearTimeout(b.current),b.current=0)},[P,j]),onOpen:_,onClose:P,disableHoverableContent:j,children:s})})};zZ.displayName=H2;var lP="TooltipTrigger",TZ=O.forwardRef((t,a)=>{const{__scopeTooltip:s,...c}=t,r=nu(lP,s),l=VP(lP,s),u=RQ(s),p=O.useRef(null),f=ht(a,p,r.onTriggerChange),x=O.useRef(!1),g=O.useRef(!1),y=O.useCallback(()=>x.current=!1,[]);return O.useEffect(()=>()=>document.removeEventListener("pointerup",y),[y]),e.jsx(NZ,{asChild:!0,...u,children:e.jsx(Ye.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...c,ref:f,onPointerMove:$e(t.onPointerMove,k=>{k.pointerType!=="touch"&&!g.current&&!l.isPointerInTransitRef.current&&(r.onTriggerEnter(),g.current=!0)}),onPointerLeave:$e(t.onPointerLeave,()=>{r.onTriggerLeave(),g.current=!1}),onPointerDown:$e(t.onPointerDown,()=>{r.open&&r.onClose(),x.current=!0,document.addEventListener("pointerup",y,{once:!0})}),onFocus:$e(t.onFocus,()=>{x.current||r.onOpen()}),onBlur:$e(t.onBlur,r.onClose),onClick:$e(t.onClick,r.onClose)})})});TZ.displayName=lP;var EP="TooltipPortal",[iJ,lJ]=IQ(EP,{forceMount:void 0}),PZ=t=>{const{__scopeTooltip:a,forceMount:s,children:c,container:r}=t,l=nu(EP,a);return e.jsx(iJ,{scope:a,forceMount:s,children:e.jsx(la,{present:s||l.open,children:e.jsx(AQ,{asChild:!0,container:r,children:c})})})};PZ.displayName=EP;var Kd="TooltipContent",AZ=O.forwardRef((t,a)=>{const s=lJ(Kd,t.__scopeTooltip),{forceMount:c=s.forceMount,side:r="top",...l}=t,u=nu(Kd,t.__scopeTooltip);return e.jsx(la,{present:c||u.open,children:u.disableHoverableContent?e.jsx(qZ,{side:r,...l,ref:a}):e.jsx(dJ,{side:r,...l,ref:a})})}),dJ=O.forwardRef((t,a)=>{const s=nu(Kd,t.__scopeTooltip),c=VP(Kd,t.__scopeTooltip),r=O.useRef(null),l=ht(a,r),[u,p]=O.useState(null),{trigger:f,onClose:x}=s,g=r.current,{onPointerInTransitChange:y}=c,k=O.useCallback(()=>{p(null),y(!1)},[y]),b=O.useCallback((j,w)=>{const S=j.currentTarget,M={x:j.clientX,y:j.clientY},$=fJ(M,S.getBoundingClientRect()),C=xJ(M,$),_=mJ(w.getBoundingClientRect()),P=gJ([...C,..._]);p(P),y(!0)},[y]);return O.useEffect(()=>()=>k(),[k]),O.useEffect(()=>{if(f&&g){const j=S=>b(S,g),w=S=>b(S,f);return f.addEventListener("pointerleave",j),g.addEventListener("pointerleave",w),()=>{f.removeEventListener("pointerleave",j),g.removeEventListener("pointerleave",w)}}},[f,g,b,k]),O.useEffect(()=>{if(u){const j=w=>{const S=w.target,M={x:w.clientX,y:w.clientY},$=(f==null?void 0:f.contains(S))||(g==null?void 0:g.contains(S)),C=!yJ(M,u);$?k():C&&(k(),x())};return document.addEventListener("pointermove",j),()=>document.removeEventListener("pointermove",j)}},[f,g,u,x,k]),e.jsx(qZ,{...t,ref:l})}),[uJ,hJ]=IQ(H2,{isInside:!1}),pJ=vF("TooltipContent"),qZ=O.forwardRef((t,a)=>{const{__scopeTooltip:s,children:c,"aria-label":r,onEscapeKeyDown:l,onPointerDownOutside:u,...p}=t,f=nu(Kd,s),x=RQ(s),{onClose:g}=f;return O.useEffect(()=>(document.addEventListener(iP,g),()=>document.removeEventListener(iP,g)),[g]),O.useEffect(()=>{if(f.trigger){const y=k=>{const b=k.target;b!=null&&b.contains(f.trigger)&&g()};return window.addEventListener("scroll",y,{capture:!0}),()=>window.removeEventListener("scroll",y,{capture:!0})}},[f.trigger,g]),e.jsx(CQ,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:y=>y.preventDefault(),onDismiss:g,children:e.jsxs(_Z,{"data-state":f.stateAttribute,...x,...p,ref:a,style:{...p.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:[e.jsx(pJ,{children:c}),e.jsx(uJ,{scope:s,isInside:!0,children:e.jsx(sJ,{id:f.contentId,role:"tooltip",children:r||c})})]})})});AZ.displayName=Kd;var IZ="TooltipArrow",RZ=O.forwardRef((t,a)=>{const{__scopeTooltip:s,...c}=t,r=RQ(s);return hJ(IZ,s).isInside?null:e.jsx($Z,{...r,...c,ref:a})});RZ.displayName=IZ;function fJ(t,a){const s=Math.abs(a.top-t.y),c=Math.abs(a.bottom-t.y),r=Math.abs(a.right-t.x),l=Math.abs(a.left-t.x);switch(Math.min(s,c,r,l)){case l:return"left";case r:return"right";case s:return"top";case c:return"bottom";default:throw new Error("unreachable")}}function xJ(t,a,s=5){const c=[];switch(a){case"top":c.push({x:t.x-s,y:t.y+s},{x:t.x+s,y:t.y+s});break;case"bottom":c.push({x:t.x-s,y:t.y-s},{x:t.x+s,y:t.y-s});break;case"left":c.push({x:t.x+s,y:t.y-s},{x:t.x+s,y:t.y+s});break;case"right":c.push({x:t.x-s,y:t.y-s},{x:t.x-s,y:t.y+s});break}return c}function mJ(t){const{top:a,right:s,bottom:c,left:r}=t;return[{x:r,y:a},{x:s,y:a},{x:s,y:c},{x:r,y:c}]}function yJ(t,a){const{x:s,y:c}=t;let r=!1;for(let l=0,u=a.length-1;l<a.length;u=l++){const p=a[l],f=a[u],x=p.x,g=p.y,y=f.x,k=f.y;g>c!=k>c&&s<(y-x)*(c-g)/(k-g)+x&&(r=!r)}return r}function gJ(t){const a=t.slice();return a.sort((s,c)=>s.x<c.x?-1:s.x>c.x?1:s.y<c.y?-1:s.y>c.y?1:0),OJ(a)}function OJ(t){if(t.length<=1)return t.slice();const a=[];for(let c=0;c<t.length;c++){const r=t[c];for(;a.length>=2;){const l=a[a.length-1],u=a[a.length-2];if((l.x-u.x)*(r.y-u.y)>=(l.y-u.y)*(r.x-u.x))a.pop();else break}a.push(r)}a.pop();const s=[];for(let c=t.length-1;c>=0;c--){const r=t[c];for(;s.length>=2;){const l=s[s.length-1],u=s[s.length-2];if((l.x-u.x)*(r.y-u.y)>=(l.y-u.y)*(r.x-u.x))s.pop();else break}s.push(r)}return s.pop(),a.length===1&&s.length===1&&a[0].x===s[0].x&&a[0].y===s[0].y?a:a.concat(s)}var kJ=LZ,vJ=zZ,bJ=TZ,wJ=PZ,MJ=AZ,jJ=RZ;function SJ({children:t}){return e.jsx(kJ,{delayDuration:300,children:t})}function $1({children:t,content:a,side:s="top",className:c}){return a?e.jsxs(vJ,{children:[e.jsx(bJ,{asChild:!0,children:t}),e.jsx(wJ,{children:e.jsxs(MJ,{side:s,sideOffset:6,className:K("z-50 px-2.5 py-1.5 text-xs font-sans","bg-surface-4 text-text-0 border border-border rounded-md shadow-lg","animate-in fade-in-0 zoom-in-95",c),children:[a,e.jsx(jJ,{className:"fill-surface-4"})]})})]}):t}/**
32
32
  * @license lucide-react v1.7.0 - ISC
33
33
  *
34
34
  * This source code is licensed under the ISC license.