diff --git a/frontend/index.html b/frontend/index.html index b530e959..80ddde45 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -5,6 +5,9 @@ Mosswart Overlord v2 + + +
diff --git a/frontend/public/sw.js b/frontend/public/sw.js new file mode 100644 index 00000000..71839ee5 --- /dev/null +++ b/frontend/public/sw.js @@ -0,0 +1,72 @@ +// Service worker for MosswartOverlord v2 — caches static assets for instant repeat loads +const CACHE_NAME = 'mo-v2-cache-v1'; +const STATIC_ASSETS = [ + '/dereth.png', + '/dereth_highres.png', + '/prismatic-taper-icon.png', + '/icons/0600127E.png', + '/icons/06000133.png', + '/icons/06001080.png', +]; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then(cache => cache.addAll(STATIC_ASSETS)) + ); + self.skipWaiting(); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil( + caches.keys().then(keys => + Promise.all(keys.filter(k => k !== CACHE_NAME).map(k => caches.delete(k))) + ) + ); + self.clients.claim(); +}); + +self.addEventListener('fetch', (event) => { + const url = new URL(event.request.url); + + // Cache icon images on first fetch + if (url.pathname.startsWith('/icons/') && event.request.method === 'GET') { + event.respondWith( + caches.match(event.request).then(cached => { + if (cached) return cached; + return fetch(event.request).then(response => { + if (response.ok) { + const clone = response.clone(); + caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone)); + } + return response; + }); + }) + ); + return; + } + + // Cache dungeon_tiles.json (large, rarely changes) + if (url.pathname === '/dungeon_tiles.json') { + event.respondWith( + caches.match(event.request).then(cached => { + if (cached) return cached; + return fetch(event.request).then(response => { + if (response.ok) { + const clone = response.clone(); + caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone)); + } + return response; + }); + }) + ); + return; + } + + // Cache static assets (map images etc) + if (STATIC_ASSETS.some(a => url.pathname === a)) { + event.respondWith( + caches.match(event.request).then(cached => cached || fetch(event.request)) + ); + return; + } +}); diff --git a/frontend/src/components/map/MapView.tsx b/frontend/src/components/map/MapView.tsx index e938a2a1..8b9978b7 100644 --- a/frontend/src/components/map/MapView.tsx +++ b/frontend/src/components/map/MapView.tsx @@ -24,7 +24,7 @@ export const MapView: React.FC = ({ players, getColor, onSelectPlayer, sh const groupRef = useRef(null); const [imgSize, setImgSize] = useState({ w: 0, h: 0 }); const [tooltip, setTooltip] = useState<{ x: number; y: number; player: TelemetrySnapshot } | null>(null); - const [worldCoord, setWorldCoord] = useState<{ ns: number; ew: number } | null>(null); + const coordRef = useRef(null); // Transform stored in ref, applied directly to DOM — no React re-render on pan/zoom const txRef = useRef({ scale: 1, offX: 0, offY: 0 }); @@ -83,12 +83,12 @@ export const MapView: React.FC = ({ players, getColor, onSelectPlayer, sh txRef.current.offY = d.startOffY + (e.clientY - d.sy); applyTransform(); } - // Coordinate display (throttled by React's batching) - if (containerRef.current && imgSize.w > 0) { + // Coordinate display — direct DOM write, no React state + if (containerRef.current && imgSize.w > 0 && coordRef.current) { const rect = containerRef.current.getBoundingClientRect(); const tx = txRef.current; const coord = pxToWorld(e.clientX - rect.left, e.clientY - rect.top, tx.scale, tx.offX, tx.offY, imgSize.w, imgSize.h); - setWorldCoord(coord); + coordRef.current.textContent = formatCoord(coord.ns, coord.ew); } }; const onMouseUp = () => { dragRef.current.dragging = false; }; @@ -155,9 +155,7 @@ export const MapView: React.FC = ({ players, getColor, onSelectPlayer, sh )} - {worldCoord && ( -
{formatCoord(worldCoord.ns, worldCoord.ew)}
- )} +
); }; diff --git a/frontend/src/components/map/Sidebar.tsx b/frontend/src/components/map/Sidebar.tsx index 798eb5a2..0b22dd06 100644 --- a/frontend/src/components/map/Sidebar.tsx +++ b/frontend/src/components/map/Sidebar.tsx @@ -33,8 +33,9 @@ export const Sidebar: React.FC = ({ const isOnline = serverHealth?.status?.toLowerCase() === 'online' || serverHealth?.status?.toLowerCase() === 'up'; - // Defer player list rendering — kill counters don't need 30fps updates + // Defer player list rendering — sidebar stats don't need real-time updates const deferredPlayers = useDeferredValue(players); + const deferredVitals = useDeferredValue(vitals); const sorted = useMemo(() => { let list = [...deferredPlayers]; @@ -110,7 +111,7 @@ export const Sidebar: React.FC = ({ diff --git a/frontend/src/components/windows/WindowRenderer.tsx b/frontend/src/components/windows/WindowRenderer.tsx index 35b5d061..af9e7e67 100644 --- a/frontend/src/components/windows/WindowRenderer.tsx +++ b/frontend/src/components/windows/WindowRenderer.tsx @@ -1,14 +1,14 @@ -import React, { useMemo } from 'react'; +import React, { useMemo, lazy, Suspense } from 'react'; import { useWindowManager } from '../../contexts/WindowManagerContext'; -import { ChatWindow } from './ChatWindow'; -import { StatsWindow } from './StatsWindow'; -import { CharacterWindow } from './CharacterWindow'; -import { InventoryWindow } from './InventoryWindow'; -import { RadarWindow } from './RadarWindow'; -import { CombatStatsWindow } from './CombatStatsWindow'; -import { CombatPickerWindow } from './CombatPickerWindow'; -import { IssuesWindow } from './IssuesWindow'; -import { VitalSharingWindow } from './VitalSharingWindow'; +import { ChatWindow } from './ChatWindow'; // Chat is always fast — keep eager +const StatsWindow = lazy(() => import('./StatsWindow').then(m => ({ default: m.StatsWindow }))); +const CharacterWindow = lazy(() => import('./CharacterWindow').then(m => ({ default: m.CharacterWindow }))); +const InventoryWindow = lazy(() => import('./InventoryWindow').then(m => ({ default: m.InventoryWindow }))); +const RadarWindow = lazy(() => import('./RadarWindow').then(m => ({ default: m.RadarWindow }))); +const CombatStatsWindow = lazy(() => import('./CombatStatsWindow').then(m => ({ default: m.CombatStatsWindow }))); +const CombatPickerWindow = lazy(() => import('./CombatPickerWindow').then(m => ({ default: m.CombatPickerWindow }))); +const IssuesWindow = lazy(() => import('./IssuesWindow').then(m => ({ default: m.IssuesWindow }))); +const VitalSharingWindow = lazy(() => import('./VitalSharingWindow').then(m => ({ default: m.VitalSharingWindow }))); import type { CharacterState } from '../../types'; interface Props { @@ -18,11 +18,11 @@ interface Props { socket: WebSocket | null; } -export const WindowRenderer: React.FC = ({ characters, chatMessages, nearbyObjects, socket }) => { +export const WindowRenderer: React.FC = React.memo(({ characters, chatMessages, nearbyObjects, socket }) => { const { windows } = useWindowManager(); return ( - <> + {windows.map(w => { const charName = w.charName ?? ''; const prefix = w.id.split('-')[0]; @@ -53,6 +53,8 @@ export const WindowRenderer: React.FC = ({ characters, chatMessages, near return null; } })} - + ); -}; +}); + +WindowRenderer.displayName = 'WindowRenderer'; diff --git a/frontend/src/hooks/useLiveData.ts b/frontend/src/hooks/useLiveData.ts index 0e89c864..0e517188 100644 --- a/frontend/src/hooks/useLiveData.ts +++ b/frontend/src/hooks/useLiveData.ts @@ -1,4 +1,4 @@ -import { useState, useCallback, useEffect, useRef } from 'react'; +import { useState, useCallback, useEffect, useRef, useMemo } from 'react'; import { useWebSocket } from './useWebSocket'; import { getLive, getCombatStats, getServerHealth, getTotalRares, getTotalKills } from '../api/endpoints'; import type { @@ -23,7 +23,10 @@ export function useLiveData(): DashboardState { const [totalRares, setTotalRares] = useState(0); const [totalKills, setTotalKills] = useState(0); const [recentRares, setRecentRares] = useState([]); - const [chatMessages, setChatMessages] = useState>>(new Map()); + // Chat messages stored in ref to avoid re-renders on every message. + // A counter state triggers re-render only when needed. + const chatMessagesRef = useRef(new Map>()); + const [chatVersion, setChatVersion] = useState(0); const [nearbyObjects, setNearbyObjects] = useState>(new Map()); const charsRef = useRef(characters); charsRef.current = characters; @@ -77,13 +80,12 @@ export function useLiveData(): DashboardState { } } else if (msg.type === 'chat') { const m = msg as unknown as { character_name: string; text: string; color?: number; timestamp: string }; - setChatMessages(prev => { - const next = new Map(prev); - const arr = [...(next.get(m.character_name) ?? []), { text: m.text, color: m.color, timestamp: m.timestamp }]; - if (arr.length > 1000) arr.splice(0, arr.length - 1000); - next.set(m.character_name, arr); - return next; - }); + const arr = chatMessagesRef.current.get(m.character_name) ?? []; + arr.push({ text: m.text, color: m.color, timestamp: m.timestamp }); + if (arr.length > 1000) arr.splice(0, arr.length - 1000); + chatMessagesRef.current.set(m.character_name, arr); + // Bump version to notify open chat windows (batched by React) + setChatVersion(v => v + 1); } }, [updateChar]); @@ -164,5 +166,8 @@ export function useLiveData(): DashboardState { return () => clearInterval(id); }, []); + // eslint-disable-next-line react-hooks/exhaustive-deps + const chatMessages = useMemo(() => chatMessagesRef.current, [chatVersion]); + return { characters, serverHealth, totalRares, totalKills, recentRares, chatMessages, nearbyObjects, socketRef }; } diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index d9736adc..8f571bbd 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -7,3 +7,8 @@ createRoot(document.getElementById('root')!).render( , ); + +// Register service worker for asset caching +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register('/v2/sw.js').catch(() => {}); +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 720de40c..ff2d7fbf 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -7,6 +7,14 @@ export default defineConfig({ build: { outDir: '../static/v2', emptyOutDir: true, + chunkSizeWarningLimit: 300, + rollupOptions: { + output: { + manualChunks: { + react: ['react', 'react-dom'], + }, + }, + }, }, server: { port: 5173, diff --git a/static/v2/assets/CharacterWindow-C26CdTBY.js b/static/v2/assets/CharacterWindow-C26CdTBY.js new file mode 100644 index 00000000..077d9add --- /dev/null +++ b/static/v2/assets/CharacterWindow-C26CdTBY.js @@ -0,0 +1 @@ +import{r as f,a as Y,j as e,D as X}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const B={218:"Reinforcement of the Lugians",219:"Bleeargh's Fortitude",220:"Oswald's Enhancement",221:"Siraluun's Blessing",222:"Enduring Calm",223:"Steadfast Will",224:"Ciandra's Essence",225:"Yoshi's Essence",226:"Jibril's Essence",227:"Celdiseth's Essence",228:"Koga's Essence",229:"Shadow of the Seventh Mule",230:"Might of the Seventh Mule",231:"Clutch of the Miser",232:"Enduring Enchantment",233:"Critical Protection",234:"Quick Learner",235:"Ciandra's Fortune",236:"Charmed Smith",237:"Innate Renewal",238:"Archmage's Endurance",239:"Enhancement of the Blade Turner",240:"Enhancement of the Arrow Turner",241:"Enhancement of the Mace Turner",242:"Caustic Enhancement",243:"Fierce Impaler",244:"Iron Skin of the Invincible",245:"Eye of the Remorseless",246:"Hand of the Remorseless",294:"Master of the Steel Circle",295:"Master of the Focused Eye",296:"Master of the Five Fold Path",297:"Frenzy of the Slayer",298:"Iron Skin of the Invincible",299:"Jack of All Trades",300:"Infused Void Magic",301:"Infused War Magic",302:"Infused Life Magic",309:"Infused Item Magic",310:"Infused Creature Magic",326:"Clutch of the Miser",328:"Enduring Enchantment"},F={333:"Valor / Destruction",334:"Protection",335:"Glory / Retribution",336:"Temperance / Hardening",338:"Aetheric Vision",339:"Mana Flow",340:"Mana Infusion",342:"Purity",343:"Craftsman",344:"Specialization",365:"World"},$={370:"Damage",371:"Damage Resistance",372:"Critical",373:"Critical Resistance",374:"Critical Damage",375:"Critical Damage Resistance",376:"Healing Boost",379:"Vitality"},W={287:"Celestial Hand",288:"Eldrytch Web",289:"Radiant Blood"},U={354:"Melee",355:"Ranged",362:"Summoning"},J={1:"Unarmed",2:"Swords",3:"Axes",4:"Maces",5:"Spears",6:"Daggers",7:"Staves",8:"Bows",9:"Crossbows",10:"Thrown",11:"Two-Handed",12:"Void",13:"War",14:"Life"},D={181:"Chess Rank",192:"Fishing Skill",199:"Total Augmentations",322:"Aetheria Slots",390:"Enlightenment"};function K(c){return c>=1001?"Master":c>=301?"Lord":c>=151?"Knight":c>=31?"Adept":"Initiate"}const d="#af7a30",u="#000022",Z=({id:c,charName:g,zIndex:L,vitals:s})=>{var _,N;const[n,O]=f.useState(null),[j,H]=f.useState(0),[m,P]=f.useState(0);f.useEffect(()=>{Y(`/character-stats/${encodeURIComponent(g)}`).then(O).catch(()=>{})},[g]);const a=t=>t!=null?Number(t).toLocaleString():"—",o=(n==null?void 0:n.stats_data)||n||{},C=o.attributes||{},A=o.skills||{},V=o.vitals||{},E=o.titles||[],h=o.properties||{},T=Object.entries(A).filter(([,t])=>(t==null?void 0:t.training)==="Specialized").sort(([t],[l])=>t.localeCompare(l)),I=Object.entries(A).filter(([,t])=>(t==null?void 0:t.training)==="Trained").sort(([t],[l])=>t.localeCompare(l)),S=Object.entries(h).filter(([t,l])=>B[parseInt(t)]&&Number(l)>0).map(([t,l])=>({name:B[parseInt(t)],uses:Number(l)})),w=Object.entries(h).filter(([t,l])=>F[parseInt(t)]&&Number(l)>0).map(([t,l])=>({name:F[parseInt(t)],uses:Number(l)})),z=Object.entries(h).filter(([t,l])=>$[parseInt(t)]&&Number(l)>0).map(([t,l])=>({name:$[parseInt(t)],value:Number(l)})),x=[];n!=null&&n.birth&&x.push({name:"Birth",value:n.birth}),(n==null?void 0:n.deaths)!=null&&x.push({name:"Deaths",value:a(n.deaths)}),Object.entries(h).forEach(([t,l])=>{const i=parseInt(t);D[i]&&x.push({name:D[i],value:l})});const y=[];Object.entries(h).forEach(([t,l])=>{const i=parseInt(t);U[i]&&y.push({name:U[i],value:J[Number(l)]||`Unknown (${l})`})});const b=[];Object.entries(h).forEach(([t,l])=>{const i=parseInt(t);W[i]&&Number(l)>0&&b.push({name:W[i],rank:K(Number(l)),value:Number(l)})});const R=t=>({padding:"5px 8px",fontSize:12,fontWeight:"bold",color:"#fff",cursor:"pointer",userSelect:"none",borderTop:`2px solid ${t?d:u}`,borderLeft:`2px solid ${t?d:u}`,borderRight:`2px solid ${t?d:u}`,background:t?"rgba(0,100,0,0.4)":"transparent"}),M={background:"#000",border:`2px solid ${d}`,maxHeight:400,overflowY:"auto",overflowX:"hidden"},r={background:"#222",fontWeight:"bold",fontSize:12,padding:"2px 6px"},k={padding:"2px 6px",background:"rgba(0,100,0,0.4)",whiteSpace:"nowrap"},p={padding:"2px 6px",background:"rgba(0,0,100,0.4)",textAlign:"right",whiteSpace:"nowrap"},G={padding:"2px 6px",color:"#ccc"};return e.jsx(X,{id:c,title:`Character: ${g}`,zIndex:L,width:740,height:600,children:e.jsxs("div",{style:{background:u,color:"#fff",font:'14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif',overflowY:"auto",padding:"10px 15px 15px",flex:1},children:[e.jsxs("div",{style:{marginBottom:10},children:[e.jsxs("h1",{style:{margin:"0 0 2px",fontSize:28,fontWeight:"bold"},children:[g,e.jsx("span",{style:{fontSize:"200%",color:"#fff27f",float:"right"},children:(n==null?void 0:n.level)||""})]}),e.jsx("div",{style:{fontSize:"85%",color:"gold"},children:[n==null?void 0:n.gender,n==null?void 0:n.race].filter(Boolean).join(" ")||"Awaiting character data..."})]}),e.jsxs("div",{style:{fontSize:"85%",margin:"6px 0 10px",display:"grid",gridTemplateColumns:"1fr 1fr",gap:"0 20px"},children:[e.jsxs("div",{children:["Total XP: ",a(n==null?void 0:n.total_xp)]}),e.jsxs("div",{style:{textAlign:"right"},children:["Unassigned XP: ",a(n==null?void 0:n.unassigned_xp)]}),e.jsxs("div",{children:["Luminance: ",(n==null?void 0:n.luminance_earned)!=null?`${a(n.luminance_earned)} / ${a(n.luminance_total)}`:"—"]}),e.jsxs("div",{style:{textAlign:"right"},children:["Deaths: ",a(n==null?void 0:n.deaths)]})]}),e.jsxs("div",{style:{display:"flex",gap:13,flexWrap:"wrap"},children:[e.jsxs("div",{style:{width:320},children:[e.jsx("div",{style:{height:30,display:"flex"},children:["Attributes","Skills","Titles"].map((t,l)=>e.jsx("div",{style:R(j===l),onClick:()=>H(l),children:t},t))}),e.jsxs("div",{style:M,children:[j===0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{padding:"6px 8px",display:"flex",flexDirection:"column",gap:8,borderBottom:`2px solid ${d}`},children:[{label:"Health",pct:(s==null?void 0:s.health_percentage)??0,cur:s==null?void 0:s.health_current,max:s==null?void 0:s.health_max,bg:"#cc3333"},{label:"Stamina",pct:(s==null?void 0:s.stamina_percentage)??0,cur:s==null?void 0:s.stamina_current,max:s==null?void 0:s.stamina_max,bg:"#ccaa33"},{label:"Mana",pct:(s==null?void 0:s.mana_percentage)??0,cur:s==null?void 0:s.mana_current,max:s==null?void 0:s.mana_max,bg:"#3366cc"}].map(t=>e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[e.jsx("span",{style:{width:55,fontSize:12,color:"#ccc"},children:t.label}),e.jsx("div",{style:{flex:1,height:14,overflow:"hidden",position:"relative",border:`1px solid ${d}`},children:e.jsx("div",{style:{height:"100%",width:`${t.pct}%`,background:t.bg,transition:"width 0.5s ease"}})}),e.jsxs("span",{style:{width:80,textAlign:"right",fontSize:12,color:"#ccc"},children:[t.cur??"—"," / ",t.max??"—"]})]},t.label))}),e.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("td",{style:r,children:"Attribute"}),e.jsx("td",{style:r,children:"Creation"}),e.jsx("td",{style:r,children:"Base"})]})}),e.jsx("tbody",{children:["strength","endurance","coordination","quickness","focus","self"].map(t=>{var l,i;return e.jsxs("tr",{children:[e.jsx("td",{style:k,children:t.charAt(0).toUpperCase()+t.slice(1)}),e.jsx("td",{style:G,children:((l=C[t])==null?void 0:l.creation)??"—"}),e.jsx("td",{style:p,children:((i=C[t])==null?void 0:i.base)??"—"})]},t)})})]}),e.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("td",{style:r,children:"Vital"}),e.jsx("td",{style:r,children:"Base"})]})}),e.jsx("tbody",{children:["health","stamina","mana"].map(t=>{var l;return e.jsxs("tr",{children:[e.jsx("td",{style:k,children:t.charAt(0).toUpperCase()+t.slice(1)}),e.jsx("td",{style:p,children:((l=V[t])==null?void 0:l.base)??"—"})]},t)})})]}),e.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:e.jsx("tbody",{children:e.jsxs("tr",{children:[e.jsx("td",{style:k,children:"Skill Credits"}),e.jsx("td",{style:p,children:a(o.skill_credits)})]})})})]}),j===1&&e.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("td",{style:r,children:"Skill"}),e.jsx("td",{style:r,children:"Level"})]})}),e.jsxs("tbody",{children:[T.map(([t,l])=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",background:"linear-gradient(to right, #392067, #392067, black)"},children:t.replace(/_/g," ").replace(/\b\w/g,i=>i.toUpperCase())}),e.jsx("td",{style:{...p,background:"linear-gradient(to right, #392067, #392067, black)"},children:l.base})]},t)),I.map(([t,l])=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",background:"linear-gradient(to right, #0f3c3e, #0f3c3e, black)"},children:t.replace(/_/g," ").replace(/\b\w/g,i=>i.toUpperCase())}),e.jsx("td",{style:{...p,background:"linear-gradient(to right, #0f3c3e, #0f3c3e, black)"},children:l.base})]},t)),T.length===0&&I.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:2,style:{padding:10,color:"#666",fontStyle:"italic",textAlign:"center"},children:"No skill data"})})]})]}),j===2&&e.jsx("div",{style:{padding:"6px 10px",fontSize:13},children:E.length>0?E.map((t,l)=>e.jsx("div",{style:{padding:"1px 0"},children:t},l)):e.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No titles"})})]})]}),e.jsxs("div",{style:{width:320},children:[e.jsx("div",{style:{height:30,display:"flex"},children:["Augmentations","Ratings","Other"].map((t,l)=>e.jsx("div",{style:R(m===l),onClick:()=>P(l),children:t},t))}),e.jsxs("div",{style:M,children:[m===0&&(S.length||w.length?e.jsxs(e.Fragment,{children:[S.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${d}`},children:"Augmentations"}),e.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("td",{style:r,children:"Name"}),e.jsx("td",{style:r,children:"Uses"})]})}),e.jsx("tbody",{children:S.map(t=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px"},children:t.name}),e.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:t.uses})]},t.name))})]})]}),w.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${d}`},children:"Auras"}),e.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("td",{style:r,children:"Name"}),e.jsx("td",{style:r,children:"Uses"})]})}),e.jsx("tbody",{children:w.map(t=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px"},children:t.name}),e.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:t.uses})]},t.name))})]})]})]}):e.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No augmentation data"})),m===1&&(z.length>0?e.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("td",{style:r,children:"Rating"}),e.jsx("td",{style:r,children:"Value"})]})}),e.jsx("tbody",{children:z.map(t=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px"},children:t.name}),e.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:t.value})]},t.name))})]}):e.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No rating data"})),m===2&&e.jsxs("div",{children:[x.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${d}`},children:"General"}),e.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:e.jsx("tbody",{children:x.map(t=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px"},children:t.name}),e.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:t.value})]},t.name))})})]}),y.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${d}`},children:"Masteries"}),e.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:e.jsx("tbody",{children:y.map(t=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px"},children:t.name}),e.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:t.value})]},t.name))})})]}),b.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${d}`},children:"Society"}),e.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:e.jsx("tbody",{children:b.map(t=>e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px"},children:t.name}),e.jsxs("td",{style:{padding:"2px 6px",textAlign:"right"},children:[t.rank," (",t.value,")"]})]},t.name))})})]}),x.length===0&&y.length===0&&b.length===0&&e.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No additional data"})]})]})]})]}),(n==null?void 0:n.allegiance)&&e.jsxs("div",{style:{marginTop:5,border:`2px solid ${d}`,background:"#000"},children:[e.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${d}`},children:"Allegiance"}),e.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:e.jsxs("tbody",{children:[n.allegiance.name&&e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",color:"#ccc",width:100},children:"Name"}),e.jsx("td",{style:{padding:"2px 6px"},children:n.allegiance.name})]}),((_=n.allegiance.monarch)==null?void 0:_.name)&&e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Monarch"}),e.jsx("td",{style:{padding:"2px 6px"},children:n.allegiance.monarch.name})]}),((N=n.allegiance.patron)==null?void 0:N.name)&&e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Patron"}),e.jsx("td",{style:{padding:"2px 6px"},children:n.allegiance.patron.name})]}),n.allegiance.rank!=null&&e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Rank"}),e.jsx("td",{style:{padding:"2px 6px"},children:n.allegiance.rank})]}),n.allegiance.followers!=null&&e.jsxs("tr",{children:[e.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Followers"}),e.jsx("td",{style:{padding:"2px 6px"},children:n.allegiance.followers})]})]})})]})]})})};export{Z as CharacterWindow}; diff --git a/static/v2/assets/CombatPickerWindow-BOlAFaCG.js b/static/v2/assets/CombatPickerWindow-BOlAFaCG.js new file mode 100644 index 00000000..1afc1b4f --- /dev/null +++ b/static/v2/assets/CombatPickerWindow-BOlAFaCG.js @@ -0,0 +1 @@ +import{u as c,j as r,D as d}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const p=({id:n,zIndex:i,characters:a})=>{const{openWindow:s}=c(),e=Array.from(a.keys()).sort();return r.jsx(d,{id:n,title:"Combat Stats — Select Character",zIndex:i,width:300,height:400,children:r.jsx("div",{style:{flex:1,overflowY:"auto",padding:6},children:e.length===0?r.jsx("div",{style:{padding:12,color:"#666",textAlign:"center",fontSize:"0.8rem"},children:"No characters online"}):e.map(o=>r.jsx("div",{style:{padding:"5px 8px",cursor:"pointer",borderBottom:"1px solid #222",color:"#ccc",fontSize:"0.82rem"},onMouseEnter:t=>t.currentTarget.style.background="#2a2a2a",onMouseLeave:t=>t.currentTarget.style.background="",onClick:()=>s(`combat-${o}`,`Combat: ${o}`,o),children:o},o))})})};export{p as CombatPickerWindow}; diff --git a/static/v2/assets/CombatStatsWindow-Ct0adxan.js b/static/v2/assets/CombatStatsWindow-Ct0adxan.js new file mode 100644 index 00000000..d9e6b99d --- /dev/null +++ b/static/v2/assets/CombatStatsWindow-Ct0adxan.js @@ -0,0 +1 @@ +import{r as A,a as B,j as t,D as L}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const w=["Typeless","Slash","Pierce","Bludgeon","Fire","Cold","Acid","Electric"];function f(n,a,x){var c,h,u,k;return(((h=(c=n==null?void 0:n[a])==null?void 0:c[x])==null?void 0:h.total_normal_damage)??0)+(((k=(u=n==null?void 0:n[a])==null?void 0:u[x])==null?void 0:k.total_crit_damage)??0)}function G(n){let a={attacks:0,failed:0,crits:0,normalDmg:0,maxNormal:0,critDmg:0,maxCrit:0};if(!n)return a;for(const x of Object.values(n))for(const c of Object.values(x))a.attacks+=c.total_attacks??0,a.failed+=c.failed_attacks??0,a.crits+=c.crits??0,a.normalDmg+=c.total_normal_damage??0,a.maxNormal=Math.max(a.maxNormal,c.max_normal_damage??0),a.critDmg+=c.total_crit_damage??0,a.maxCrit=Math.max(a.maxCrit,c.max_crit_damage??0);return a}function F(n,a){let x={attacks:0,failed:0};const c=n==null?void 0:n[a];if(!c)return x;for(const h of Object.values(c))x.attacks+=h.total_attacks??0,x.failed+=h.failed_attacks??0;return x}const Y=({id:n,charName:a,zIndex:x})=>{const[c,h]=A.useState(null),[u,k]=A.useState("session"),[p,O]=A.useState(null);A.useEffect(()=>{B(`/combat-stats/${encodeURIComponent(a)}`).then(h).catch(()=>{});const e=setInterval(()=>{B(`/combat-stats/${encodeURIComponent(a)}`).then(h).catch(()=>{})},1e4);return()=>clearInterval(e)},[a]);const m=c==null?void 0:c[u],_=(m==null?void 0:m.monsters)??{},S=Object.keys(_).filter(e=>e!=="__cloak_surges__").sort(),r=A.useMemo(()=>{let e={},l={},v=0,$=0;const T=p?[_[p]].filter(Boolean):S.map(j=>_[j]);for(const j of T)if(j){for(const[g,D]of Object.entries(j.offense??{})){e[g]||(e[g]={});for(const[y,E]of Object.entries(D)){e[g][y]||(e[g][y]={total_attacks:0,failed_attacks:0,crits:0,total_normal_damage:0,max_normal_damage:0,total_crit_damage:0,max_crit_damage:0});const i=e[g][y],d=E;i.total_attacks+=d.total_attacks??0,i.failed_attacks+=d.failed_attacks??0,i.crits+=d.crits??0,i.total_normal_damage+=d.total_normal_damage??0,i.max_normal_damage=Math.max(i.max_normal_damage,d.max_normal_damage??0),i.total_crit_damage+=d.total_crit_damage??0,i.max_crit_damage=Math.max(i.max_crit_damage,d.max_crit_damage??0)}}for(const[g,D]of Object.entries(j.defense??{})){l[g]||(l[g]={});for(const[y,E]of Object.entries(D)){l[g][y]||(l[g][y]={total_attacks:0,failed_attacks:0,crits:0,total_normal_damage:0,max_normal_damage:0,total_crit_damage:0,max_crit_damage:0});const i=l[g][y],d=E;i.total_attacks+=d.total_attacks??0,i.failed_attacks+=d.failed_attacks??0,i.total_normal_damage+=d.total_normal_damage??0,i.max_normal_damage=Math.max(i.max_normal_damage,d.max_normal_damage??0),i.total_crit_damage+=d.total_crit_damage??0,i.max_crit_damage=Math.max(i.max_crit_damage,d.max_crit_damage??0)}}v+=j.aetheria_surges??0,$+=j.cloak_surges??0}return _.__cloak_surges__&&!p&&($+=_.__cloak_surges__.cloak_surges??0),{offense:e,defense:l,aeth:v,cloak:$}},[_,S,p]),o=G(r.offense),M=F(r.defense,"MeleeMissile"),b=F(r.defense,"Magic");o.attacks>0&&((o.attacks-o.failed)/o.attacks*100).toFixed(0);const N=M.attacks>0?(M.failed/M.attacks*100).toFixed(0):"0",W=b.attacks>0?(b.failed/b.attacks*100).toFixed(0):"0",C=o.attacks-o.failed,R=C-o.crits,z=R>0?Math.round(o.normalDmg/R):0;o.crits>0&&Math.round(o.critDmg/o.crits);const I=C>0?(o.crits/C*100).toFixed(1):"0",s=e=>e===0?"":e.toLocaleString();return t.jsxs(L,{id:n,title:`Combat: ${a}`,zIndex:x,width:640,height:520,children:[t.jsxs("div",{style:{display:"flex",gap:4,padding:"4px 8px",borderBottom:"1px solid #333"},children:[t.jsx("button",{className:`ml-stats-range-btn ${u==="session"?"active":""}`,onClick:()=>k("session"),children:"Session"}),t.jsx("button",{className:`ml-stats-range-btn ${u==="lifetime"?"active":""}`,onClick:()=>k("lifetime"),children:"Lifetime"})]}),t.jsxs("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[t.jsxs("div",{style:{width:240,borderRight:"1px solid #333",overflowY:"auto",fontSize:"0.72rem"},children:[t.jsxs("div",{style:{display:"flex",padding:"3px 6px",borderBottom:"1px solid #333",color:"#777",fontSize:"0.65rem",fontWeight:600},children:[t.jsx("span",{style:{width:14}}),t.jsx("span",{style:{flex:1},children:"Monster"}),t.jsx("span",{style:{width:40,textAlign:"right"},children:"Kills"}),t.jsx("span",{style:{width:55,textAlign:"right"},children:"Dmg"})]}),t.jsxs("div",{style:{display:"flex",padding:"3px 6px",cursor:"pointer",background:p===null?"#2a3a4a":"",borderBottom:"1px solid #222",color:"#ddd"},onClick:()=>O(null),children:[t.jsx("span",{style:{width:14,color:"#888"},children:p===null?"*":""}),t.jsx("span",{style:{flex:1},children:"All"}),t.jsx("span",{style:{width:40,textAlign:"right"},children:s((m==null?void 0:m.total_kills)??0)}),t.jsx("span",{style:{width:55,textAlign:"right"},children:s((m==null?void 0:m.total_damage_given)??0)})]}),S.map(e=>{const l=_[e];return t.jsxs("div",{style:{display:"flex",padding:"2px 6px",cursor:"pointer",background:p===e?"#2a3a4a":"",borderBottom:"1px solid #1a1a1a",color:"#ccc"},onClick:()=>O(e),children:[t.jsx("span",{style:{width:14,color:"#888"},children:p===e?"*":""}),t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),t.jsx("span",{style:{width:40,textAlign:"right"},children:s(l.kill_count)}),t.jsx("span",{style:{width:55,textAlign:"right"},children:s(l.damage_given)})]},e)})]}),t.jsx("div",{style:{flex:1,overflowY:"auto",padding:6,fontSize:"0.72rem"},children:t.jsxs("table",{style:{width:"100%",borderCollapse:"collapse"},children:[t.jsx("thead",{children:t.jsxs("tr",{style:{color:"#777",fontSize:"0.65rem"},children:[t.jsx("th",{style:{textAlign:"left",padding:"1px 4px"}}),t.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Given M/M"}),t.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Given Mag"}),t.jsx("th",{style:{width:4}}),t.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Recv M/M"}),t.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Recv Mag"}),t.jsx("th",{style:{width:4}}),t.jsx("th",{style:{textAlign:"left",padding:"1px 3px"},children:"Stats"}),t.jsx("th",{style:{textAlign:"right",padding:"1px 3px"}})]})}),t.jsxs("tbody",{children:[w.map((e,l)=>{const v=[["Evades",M.attacks>0?`${s(M.attacks)} (${N}%)`:""],["Resists",b.attacks>0?`${s(b.attacks)} (${W}%)`:""],["A.Surges",r.aeth>0?`${s(r.aeth)}`:""],["C.Surges",r.cloak>0?`${s(r.cloak)}`:""],["",""],["",""],["Av/Mx",z>0?`${s(z)} / ${s(o.maxNormal)}`:""],["Crits",o.crits>0?`${s(o.crits)} (${I}%)`:""]][l]??["",""];return t.jsxs("tr",{children:[t.jsx("td",{style:{padding:"1px 4px",color:"#888"},children:e}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(f(r.offense,"MeleeMissile",e))}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(f(r.offense,"Magic",e))}),t.jsx("td",{}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(f(r.defense,"MeleeMissile",e))}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(f(r.defense,"Magic",e))}),t.jsx("td",{}),t.jsx("td",{style:{padding:"1px 3px",color:"#777",fontWeight:600,fontSize:"0.65rem"},children:v[0]}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:v[1]})]},e)}),t.jsx("tr",{children:t.jsx("td",{colSpan:9,style:{height:4}})}),t.jsxs("tr",{children:[t.jsx("td",{style:{padding:"1px 4px",color:"#888",fontWeight:600},children:"Total"}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(w.reduce((e,l)=>e+f(r.offense,"MeleeMissile",l),0))}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(w.reduce((e,l)=>e+f(r.offense,"Magic",l),0))}),t.jsx("td",{}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(w.reduce((e,l)=>e+f(r.defense,"MeleeMissile",l),0))}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(w.reduce((e,l)=>e+f(r.defense,"Magic",l),0))}),t.jsx("td",{}),t.jsx("td",{style:{padding:"1px 3px",color:"#777",fontWeight:600,fontSize:"0.65rem"},children:"Total"}),t.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:s(o.normalDmg+o.critDmg)})]})]})]})})]})]})};export{Y as CombatStatsWindow}; diff --git a/static/v2/assets/DashboardView-DZePFekV.js b/static/v2/assets/DashboardView-ReNIceoO.js similarity index 96% rename from static/v2/assets/DashboardView-DZePFekV.js rename to static/v2/assets/DashboardView-ReNIceoO.js index ff7684b2..abc2ab72 100644 --- a/static/v2/assets/DashboardView-DZePFekV.js +++ b/static/v2/assets/DashboardView-ReNIceoO.js @@ -1,4 +1,4 @@ -import{j as E,R as A,r as N,c as hi,g as ue,a as eO}from"./index-DaZ3M_iW.js";const tO=({children:e})=>E.jsxs("div",{className:"dashboard",children:[E.jsx("header",{className:"dashboard-header",children:E.jsx("h1",{className:"dashboard-title",children:"Mosswart Overlord"})}),E.jsx("main",{className:"dashboard-main",children:e})]}),rO=({activeChars:e,totalKills:t,totalRares:r,serverHealth:n})=>{var o;const i=((o=n==null?void 0:n.status)==null?void 0:o.toLowerCase())??"unknown",a=i==="online"||i==="up";return E.jsxs("div",{className:"global-stats",children:[E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:"global-value",children:e}),E.jsx("span",{className:"global-label",children:"Active Characters"})]}),E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:"global-value",children:t.toLocaleString()}),E.jsx("span",{className:"global-label",children:"Total Kills"})]}),E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:"global-value",children:r}),E.jsx("span",{className:"global-label",children:"Total Rares"})]}),E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:`server-dot ${a?"online":"offline"}`}),E.jsxs("span",{className:"global-value",children:[(n==null?void 0:n.latency_ms)??"--","ms"]}),E.jsx("span",{className:"global-label",children:"Coldeve"})]})]})},Pi=A.memo(({label:e,current:t,max:r,color:n,bgColor:i})=>{const a=r>0?Math.min(100,Math.max(0,t/r*100)):0;return E.jsxs("div",{className:"vital-bar",children:[E.jsx("span",{className:"vital-label",children:e}),E.jsx("div",{className:"vital-track",style:{backgroundColor:i},children:E.jsx("div",{className:"vital-fill",style:{width:`${a}%`,background:n}})}),E.jsxs("span",{className:"vital-text",children:[t,"/",r]})]})});Pi.displayName="VitalBar";const nO=e=>{const t=(e||"idle").toLowerCase();return t==="combat"||t==="hunt"?{label:t==="combat"?"Combat":"Hunt",cls:"badge-combat"}:t==="nav"||t==="navigation"?{label:"Nav",cls:"badge-nav"}:t==="default"||t==="idle"||t===""?{label:"Idle",cls:"badge-idle"}:{label:e,cls:"badge-nav"}},Nb=A.memo(({character:e})=>{var u,s,c,f,l,h;const[t,r]=N.useState(!1),{telemetry:n,vitals:i,combat:a}=e,o=nO((n==null?void 0:n.vt_state)??"");return E.jsxs("div",{className:"char-card",onClick:()=>r(!t),children:[E.jsxs("div",{className:"char-header",children:[E.jsx("span",{className:"char-name",children:e.name}),E.jsx("span",{className:`char-badge ${o.cls}`,children:o.label})]}),i?E.jsxs("div",{className:"char-vitals",children:[E.jsx(Pi,{label:"HP",current:i.health_current,max:i.health_max,color:"linear-gradient(90deg, #ff4444, #ff6666)",bgColor:"#330000"}),E.jsx(Pi,{label:"ST",current:i.stamina_current,max:i.stamina_max,color:"linear-gradient(90deg, #ffaa00, #ffcc44)",bgColor:"#331a00"}),E.jsx(Pi,{label:"MN",current:i.mana_current,max:i.mana_max,color:"linear-gradient(90deg, #4488ff, #66aaff)",bgColor:"#001433"})]}):E.jsx("div",{className:"char-vitals-placeholder",children:"Awaiting vitals..."}),E.jsxs("div",{className:"char-stats-row",children:[E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:(n==null?void 0:n.kills_per_hour)??"--"}),E.jsx("span",{className:"stat-label",children:"kills/hr"})]}),E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:((u=n==null?void 0:n.kills)==null?void 0:u.toLocaleString())??"--"}),E.jsx("span",{className:"stat-label",children:"kills"})]}),E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:(n==null?void 0:n.deaths)??"0"}),E.jsx("span",{className:"stat-label",children:"deaths"})]}),E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:((s=n==null?void 0:n.onlinetime)==null?void 0:s.replace(/^00\./,""))??"--"}),E.jsx("span",{className:"stat-label",children:"uptime"})]})]}),n&&E.jsxs("div",{className:"char-location",children:[(c=n.ns)==null?void 0:c.toFixed(1),"N, ",(f=n.ew)==null?void 0:f.toFixed(1),"E"]}),t&&E.jsxs("div",{className:"char-expanded",children:[i!=null&&i.vitae?E.jsxs("div",{className:"vitae-warn",children:["Vitae: ",i.vitae,"%"]}):null,E.jsxs("div",{className:"expanded-row",children:[E.jsxs("span",{children:["Prismatics: ",(n==null?void 0:n.prismatic_taper_count)??"--"]}),E.jsxs("span",{children:["Total Deaths: ",(n==null?void 0:n.total_deaths)??"--"]})]}),(a==null?void 0:a.session)&&E.jsxs("div",{className:"expanded-row",children:[E.jsxs("span",{children:["Session Dmg: ",(l=a.session.total_damage_given)==null?void 0:l.toLocaleString()]}),E.jsxs("span",{children:["Session Kills: ",a.session.total_kills]})]}),E.jsxs("div",{className:"expanded-row",children:[E.jsxs("span",{children:["RAM: ",n!=null&&n.mem_mb?(n.mem_mb/1048576).toFixed(0)+" MB":"--"]}),E.jsxs("span",{children:["CPU: ",((h=n==null?void 0:n.cpu_pct)==null?void 0:h.toFixed(1))??"--","%"]})]})]})]})});Nb.displayName="CharacterCard";const iO=({characters:e})=>{const t=N.useMemo(()=>Array.from(e.values()).sort((r,n)=>r.name.localeCompare(n.name)),[e]);return t.length===0?E.jsx("div",{className:"grid-empty",children:"No active characters"}):E.jsx("div",{className:"char-grid",children:t.map(r=>E.jsx(Nb,{character:r},r.name))})},aO=({tabs:e})=>{var n,i;const[t,r]=N.useState(((n=e[0])==null?void 0:n.id)??"");return E.jsxs("div",{className:"tab-container",children:[E.jsx("div",{className:"tab-bar",children:e.map(a=>E.jsx("button",{className:`tab-btn ${t===a.id?"active":""}`,onClick:()=>r(a.id),children:a.label},a.id))}),E.jsx("div",{className:"tab-content",children:(i=e.find(a=>a.id===t))==null?void 0:i.content})]})};function Rb(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t-1}return Wo=t,Wo}var Ho,wd;function OO(){if(wd)return Ho;wd=1;var e=Ea();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return Ho=t,Ho}var Ko,Od;function Ma(){if(Od)return Ko;Od=1;var e=gO(),t=bO(),r=xO(),n=wO(),i=OO();function a(o){var u=-1,s=o==null?0:o.length;for(this.clear();++uE.jsxs("div",{className:"dashboard",children:[E.jsx("header",{className:"dashboard-header",children:E.jsx("h1",{className:"dashboard-title",children:"Mosswart Overlord"})}),E.jsx("main",{className:"dashboard-main",children:e})]}),rO=({activeChars:e,totalKills:t,totalRares:r,serverHealth:n})=>{var o;const i=((o=n==null?void 0:n.status)==null?void 0:o.toLowerCase())??"unknown",a=i==="online"||i==="up";return E.jsxs("div",{className:"global-stats",children:[E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:"global-value",children:e}),E.jsx("span",{className:"global-label",children:"Active Characters"})]}),E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:"global-value",children:t.toLocaleString()}),E.jsx("span",{className:"global-label",children:"Total Kills"})]}),E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:"global-value",children:r}),E.jsx("span",{className:"global-label",children:"Total Rares"})]}),E.jsxs("div",{className:"global-stat",children:[E.jsx("span",{className:`server-dot ${a?"online":"offline"}`}),E.jsxs("span",{className:"global-value",children:[(n==null?void 0:n.latency_ms)??"--","ms"]}),E.jsx("span",{className:"global-label",children:"Coldeve"})]})]})},Pi=A.memo(({label:e,current:t,max:r,color:n,bgColor:i})=>{const a=r>0?Math.min(100,Math.max(0,t/r*100)):0;return E.jsxs("div",{className:"vital-bar",children:[E.jsx("span",{className:"vital-label",children:e}),E.jsx("div",{className:"vital-track",style:{backgroundColor:i},children:E.jsx("div",{className:"vital-fill",style:{width:`${a}%`,background:n}})}),E.jsxs("span",{className:"vital-text",children:[t,"/",r]})]})});Pi.displayName="VitalBar";const nO=e=>{const t=(e||"idle").toLowerCase();return t==="combat"||t==="hunt"?{label:t==="combat"?"Combat":"Hunt",cls:"badge-combat"}:t==="nav"||t==="navigation"?{label:"Nav",cls:"badge-nav"}:t==="default"||t==="idle"||t===""?{label:"Idle",cls:"badge-idle"}:{label:e,cls:"badge-nav"}},Nb=A.memo(({character:e})=>{var u,s,c,f,l,h;const[t,r]=N.useState(!1),{telemetry:n,vitals:i,combat:a}=e,o=nO((n==null?void 0:n.vt_state)??"");return E.jsxs("div",{className:"char-card",onClick:()=>r(!t),children:[E.jsxs("div",{className:"char-header",children:[E.jsx("span",{className:"char-name",children:e.name}),E.jsx("span",{className:`char-badge ${o.cls}`,children:o.label})]}),i?E.jsxs("div",{className:"char-vitals",children:[E.jsx(Pi,{label:"HP",current:i.health_current,max:i.health_max,color:"linear-gradient(90deg, #ff4444, #ff6666)",bgColor:"#330000"}),E.jsx(Pi,{label:"ST",current:i.stamina_current,max:i.stamina_max,color:"linear-gradient(90deg, #ffaa00, #ffcc44)",bgColor:"#331a00"}),E.jsx(Pi,{label:"MN",current:i.mana_current,max:i.mana_max,color:"linear-gradient(90deg, #4488ff, #66aaff)",bgColor:"#001433"})]}):E.jsx("div",{className:"char-vitals-placeholder",children:"Awaiting vitals..."}),E.jsxs("div",{className:"char-stats-row",children:[E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:(n==null?void 0:n.kills_per_hour)??"--"}),E.jsx("span",{className:"stat-label",children:"kills/hr"})]}),E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:((u=n==null?void 0:n.kills)==null?void 0:u.toLocaleString())??"--"}),E.jsx("span",{className:"stat-label",children:"kills"})]}),E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:(n==null?void 0:n.deaths)??"0"}),E.jsx("span",{className:"stat-label",children:"deaths"})]}),E.jsxs("div",{className:"stat",children:[E.jsx("span",{className:"stat-value",children:((s=n==null?void 0:n.onlinetime)==null?void 0:s.replace(/^00\./,""))??"--"}),E.jsx("span",{className:"stat-label",children:"uptime"})]})]}),n&&E.jsxs("div",{className:"char-location",children:[(c=n.ns)==null?void 0:c.toFixed(1),"N, ",(f=n.ew)==null?void 0:f.toFixed(1),"E"]}),t&&E.jsxs("div",{className:"char-expanded",children:[i!=null&&i.vitae?E.jsxs("div",{className:"vitae-warn",children:["Vitae: ",i.vitae,"%"]}):null,E.jsxs("div",{className:"expanded-row",children:[E.jsxs("span",{children:["Prismatics: ",(n==null?void 0:n.prismatic_taper_count)??"--"]}),E.jsxs("span",{children:["Total Deaths: ",(n==null?void 0:n.total_deaths)??"--"]})]}),(a==null?void 0:a.session)&&E.jsxs("div",{className:"expanded-row",children:[E.jsxs("span",{children:["Session Dmg: ",(l=a.session.total_damage_given)==null?void 0:l.toLocaleString()]}),E.jsxs("span",{children:["Session Kills: ",a.session.total_kills]})]}),E.jsxs("div",{className:"expanded-row",children:[E.jsxs("span",{children:["RAM: ",n!=null&&n.mem_mb?(n.mem_mb/1048576).toFixed(0)+" MB":"--"]}),E.jsxs("span",{children:["CPU: ",((h=n==null?void 0:n.cpu_pct)==null?void 0:h.toFixed(1))??"--","%"]})]})]})]})});Nb.displayName="CharacterCard";const iO=({characters:e})=>{const t=N.useMemo(()=>Array.from(e.values()).sort((r,n)=>r.name.localeCompare(n.name)),[e]);return t.length===0?E.jsx("div",{className:"grid-empty",children:"No active characters"}):E.jsx("div",{className:"char-grid",children:t.map(r=>E.jsx(Nb,{character:r},r.name))})},aO=({tabs:e})=>{var n,i;const[t,r]=N.useState(((n=e[0])==null?void 0:n.id)??"");return E.jsxs("div",{className:"tab-container",children:[E.jsx("div",{className:"tab-bar",children:e.map(a=>E.jsx("button",{className:`tab-btn ${t===a.id?"active":""}`,onClick:()=>r(a.id),children:a.label},a.id))}),E.jsx("div",{className:"tab-content",children:(i=e.find(a=>a.id===t))==null?void 0:i.content})]})};function Rb(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t-1}return Wo=t,Wo}var Ho,wd;function OO(){if(wd)return Ho;wd=1;var e=Ea();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return Ho=t,Ho}var Ko,Od;function Ma(){if(Od)return Ko;Od=1;var e=gO(),t=bO(),r=xO(),n=wO(),i=OO();function a(o){var u=-1,s=o==null?0:o.length;for(this.clear();++ue.length)&&(t=e.length);for(var r=0,n=new Array(t);re*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function LR(e,t){return Rw(e,t+1)}function BR(e,t,r,n,i){for(var a=(n||[]).slice(),o=t.start,u=t.end,s=0,c=1,f=o,l=function(){var y=n==null?void 0:n[s];if(y===void 0)return{v:Rw(n,c)};var v=s,d,g=function(){return d===void 0&&(d=r(y,v)),d},x=y.coordinate,w=s===0||wa(e,x,g,f,u);w||(s=0,f=o,c+=1),w&&(f=x+e*(g()/2+i),s+=c)},h;c<=a.length;)if(h=l(),h)return h.v;return[]}function ei(e){"@babel/helpers - typeof";return ei=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ei(e)}function wb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Me(e){for(var t=1;t0?p.coordinate-d*e:p.coordinate})}else a[h]=p=Me(Me({},p),{},{tickCoord:p.coordinate});var g=wa(e,p.tickCoord,v,u,s);g&&(s=p.tickCoord-e*(v()/2+i),a[h]=Me(Me({},p),{},{isShow:!0}))},f=o-1;f>=0;f--)c(f);return a}function HR(e,t,r,n,i,a){var o=(n||[]).slice(),u=o.length,s=t.start,c=t.end;if(a){var f=n[u-1],l=r(f,u-1),h=e*(f.coordinate+e*l/2-c);o[u-1]=f=Me(Me({},f),{},{tickCoord:h>0?f.coordinate-h*e:f.coordinate});var p=wa(e,f.tickCoord,function(){return l},s,c);p&&(c=f.tickCoord-e*(l/2+i),o[u-1]=Me(Me({},f),{},{isShow:!0}))}for(var y=a?u-1:u,v=function(x){var w=o[x],O,m=function(){return O===void 0&&(O=r(w,x)),O};if(x===0){var b=e*(w.coordinate-e*m()/2-s);o[x]=w=Me(Me({},w),{},{tickCoord:b<0?w.coordinate-b*e:w.coordinate})}else o[x]=w=Me(Me({},w),{},{tickCoord:w.coordinate});var _=wa(e,w.tickCoord,m,s,c);_&&(s=w.tickCoord+e*(m()/2+i),o[x]=Me(Me({},w),{},{isShow:!0}))},d=0;d=2?Ie(i[1].coordinate-i[0].coordinate):1,g=qR(a,d,p);return s==="equidistantPreserveStart"?BR(d,g,v,i,o):(s==="preserveStart"||s==="preserveStartEnd"?h=HR(d,g,v,i,o,s==="preserveStartEnd"):h=WR(d,g,v,i,o),h.filter(function(x){return x.isShow}))}var KR=["viewBox"],GR=["viewBox"],VR=["ticks"];function zr(e){"@babel/helpers - typeof";return zr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},zr(e)}function gr(){return gr=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function XR(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function YR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _b(e,t){for(var r=0;r0?s(this.props):s(p)),o<=0||u<=0||!y||!y.length?null:A.createElement(ae,{className:Q("recharts-cartesian-axis",c),ref:function(d){n.layerReference=d}},a&&this.renderAxisLine(),this.renderTicks(y,this.state.fontSize,this.state.letterSpacing),Te.renderCallByParent(this.props))}}],[{key:"renderTickItem",value:function(n,i,a){var o,u=Q(i.className,"recharts-cartesian-axis-tick-value");return A.isValidElement(n)?o=A.cloneElement(n,Oe(Oe({},i),{},{className:u})):Y(n)?o=n(Oe(Oe({},i),{},{className:u})):o=A.createElement(rr,gr({},i,{className:"recharts-cartesian-axis-tick-value"}),a),o}}])})(N.Component);Fh(rn,"displayName","CartesianAxis");Fh(rn,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"});var nD=["x1","y1","x2","y2","key"],iD=["offset"];function ar(e){"@babel/helpers - typeof";return ar=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ar(e)}function Sb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function $e(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function sD(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var cD=function(t){var r=t.fill;if(!r||r==="none")return null;var n=t.fillOpacity,i=t.x,a=t.y,o=t.width,u=t.height,s=t.ry;return A.createElement("rect",{x:i,y:a,ry:s,width:o,height:u,stroke:"none",fill:r,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function Lw(e,t){var r;if(A.isValidElement(e))r=A.cloneElement(e,t);else if(Y(e))r=e(t);else{var n=t.x1,i=t.y1,a=t.x2,o=t.y2,u=t.key,s=Ab(t,nD),c=X(s,!1);c.offset;var f=Ab(c,iD);r=A.createElement("line",Yt({},f,{x1:n,y1:i,x2:a,y2:o,fill:"none",key:u}))}return r}function lD(e){var t=e.x,r=e.width,n=e.horizontal,i=n===void 0?!0:n,a=e.horizontalPoints;if(!i||!a||!a.length)return null;var o=a.map(function(u,s){var c=$e($e({},e),{},{x1:t,y1:u,x2:t+r,y2:u,key:"line-".concat(s),index:s});return Lw(i,c)});return A.createElement("g",{className:"recharts-cartesian-grid-horizontal"},o)}function fD(e){var t=e.y,r=e.height,n=e.vertical,i=n===void 0?!0:n,a=e.verticalPoints;if(!i||!a||!a.length)return null;var o=a.map(function(u,s){var c=$e($e({},e),{},{x1:u,y1:t,x2:u,y2:t+r,key:"line-".concat(s),index:s});return Lw(i,c)});return A.createElement("g",{className:"recharts-cartesian-grid-vertical"},o)}function hD(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,i=e.y,a=e.width,o=e.height,u=e.horizontalPoints,s=e.horizontal,c=s===void 0?!0:s;if(!c||!t||!t.length)return null;var f=u.map(function(h){return Math.round(h+i-i)}).sort(function(h,p){return h-p});i!==f[0]&&f.unshift(0);var l=f.map(function(h,p){var y=!f[p+1],v=y?i+o-h:f[p+1]-h;if(v<=0)return null;var d=p%t.length;return A.createElement("rect",{key:"react-".concat(p),y:h,x:n,height:v,width:a,stroke:"none",fill:t[d],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return A.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},l)}function dD(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,i=e.fillOpacity,a=e.x,o=e.y,u=e.width,s=e.height,c=e.verticalPoints;if(!r||!n||!n.length)return null;var f=c.map(function(h){return Math.round(h+a-a)}).sort(function(h,p){return h-p});a!==f[0]&&f.unshift(0);var l=f.map(function(h,p){var y=!f[p+1],v=y?a+u-h:f[p+1]-h;if(v<=0)return null;var d=p%n.length;return A.createElement("rect",{key:"react-".concat(p),x:h,y:o,width:v,height:s,stroke:"none",fill:n[d],fillOpacity:i,className:"recharts-cartesian-grid-bg"})});return A.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},l)}var pD=function(t,r){var n=t.xAxis,i=t.width,a=t.height,o=t.offset;return Bx(Bh($e($e($e({},rn.defaultProps),n),{},{ticks:vt(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),o.left,o.left+o.width,r)},vD=function(t,r){var n=t.yAxis,i=t.width,a=t.height,o=t.offset;return Bx(Bh($e($e($e({},rn.defaultProps),n),{},{ticks:vt(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),o.top,o.top+o.height,r)},dr={horizontal:!0,vertical:!0,stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[]};function _a(e){var t,r,n,i,a,o,u=Rh(),s=Dh(),c=rR(),f=$e($e({},e),{},{stroke:(t=e.stroke)!==null&&t!==void 0?t:dr.stroke,fill:(r=e.fill)!==null&&r!==void 0?r:dr.fill,horizontal:(n=e.horizontal)!==null&&n!==void 0?n:dr.horizontal,horizontalFill:(i=e.horizontalFill)!==null&&i!==void 0?i:dr.horizontalFill,vertical:(a=e.vertical)!==null&&a!==void 0?a:dr.vertical,verticalFill:(o=e.verticalFill)!==null&&o!==void 0?o:dr.verticalFill,x:L(e.x)?e.x:c.left,y:L(e.y)?e.y:c.top,width:L(e.width)?e.width:c.width,height:L(e.height)?e.height:c.height}),l=f.x,h=f.y,p=f.width,y=f.height,v=f.syncWithTicks,d=f.horizontalValues,g=f.verticalValues,x=QN(),w=eR();if(!L(p)||p<=0||!L(y)||y<=0||!L(l)||l!==+l||!L(h)||h!==+h)return null;var O=f.verticalCoordinatesGenerator||pD,m=f.horizontalCoordinatesGenerator||vD,b=f.horizontalPoints,_=f.verticalPoints;if((!b||!b.length)&&Y(m)){var S=d&&d.length,P=m({yAxis:w?$e($e({},w),{},{ticks:S?d:w.ticks}):void 0,width:u,height:s,offset:c},S?!0:v);nt(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(ar(P),"]")),Array.isArray(P)&&(b=P)}if((!_||!_.length)&&Y(O)){var $=g&&g.length,j=O({xAxis:x?$e($e({},x),{},{ticks:$?g:x.ticks}):void 0,width:u,height:s,offset:c},$?!0:v);nt(Array.isArray(j),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(ar(j),"]")),Array.isArray(j)&&(_=j)}return A.createElement("g",{className:"recharts-cartesian-grid"},A.createElement(cD,{fill:f.fill,fillOpacity:f.fillOpacity,x:f.x,y:f.y,width:f.width,height:f.height,ry:f.ry}),A.createElement(lD,Yt({},f,{offset:c,horizontalPoints:b,xAxis:x,yAxis:w})),A.createElement(fD,Yt({},f,{offset:c,verticalPoints:_,xAxis:x,yAxis:w})),A.createElement(hD,Yt({},f,{horizontalPoints:b})),A.createElement(dD,Yt({},f,{verticalPoints:_})))}_a.displayName="CartesianGrid";function Ur(e){"@babel/helpers - typeof";return Ur=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ur(e)}function yD(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function mD(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function i2(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function a2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o2(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?o:t&&t.length&&L(i)&&L(a)?t.slice(i,a+1):[]};function Jw(e){return e==="number"?[0,"auto"]:void 0}var Rf=function(t,r,n,i){var a=t.graphicalItems,o=t.tooltipAxis,u=fo(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(s,c){var f,l=(f=c.props.data)!==null&&f!==void 0?f:r;l&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(l=l.slice(t.dataStartIndex,t.dataEndIndex+1));var h;if(o.dataKey&&!o.allowDuplicatedCategory){var p=l===void 0?u:l;h=yl(p,o.dataKey,i)}else h=l&&l[n]||u[n];return h?[].concat(Vr(s),[Hx(c,h)]):s},[])},Cb=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},o=g2(a,n),u=t.orderedTooltipTicks,s=t.tooltipAxis,c=t.tooltipTicks,f=eM(o,u,c,s);if(f>=0&&c){var l=c[f]&&c[f].value,h=Rf(t,r,f,l),p=b2(n,u,f,a);return{activeTooltipIndex:f,activeLabel:l,activePayload:h,activeCoordinate:p}}return null},x2=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,s=r.dataStartIndex,c=r.dataEndIndex,f=t.layout,l=t.children,h=t.stackOffset,p=Lx(f,a);return n.reduce(function(y,v){var d,g=v.type.defaultProps!==void 0?k(k({},v.type.defaultProps),v.props):v.props,x=g.type,w=g.dataKey,O=g.allowDataOverflow,m=g.allowDuplicatedCategory,b=g.scale,_=g.ticks,S=g.includeHidden,P=g[o];if(y[P])return y;var $=fo(t.data,{graphicalItems:i.filter(function(U){var V,he=o in U.props?U.props[o]:(V=U.type.defaultProps)===null||V===void 0?void 0:V[o];return he===P}),dataStartIndex:s,dataEndIndex:c}),j=$.length,T,M,I;KD(g.domain,O,x)&&(T=Yl(g.domain,null,O),p&&(x==="number"||b!=="auto")&&(I=gn($,w,"category")));var C=Jw(x);if(!T||T.length===0){var R,D=(R=g.domain)!==null&&R!==void 0?R:C;if(w){if(T=gn($,w,x),x==="category"&&p){var B=VO(T);m&&B?(M=T,T=da(0,j)):m||(T=Dm(D,T,v).reduce(function(U,V){return U.indexOf(V)>=0?U:[].concat(Vr(U),[V])},[]))}else if(x==="category")m?T=T.filter(function(U){return U!==""&&!ee(U)}):T=Dm(D,T,v).reduce(function(U,V){return U.indexOf(V)>=0||V===""||ee(V)?U:[].concat(Vr(U),[V])},[]);else if(x==="number"){var F=aM($,i.filter(function(U){var V,he,me=o in U.props?U.props[o]:(V=U.type.defaultProps)===null||V===void 0?void 0:V[o],Be="hide"in U.props?U.props.hide:(he=U.type.defaultProps)===null||he===void 0?void 0:he.hide;return me===P&&(S||!Be)}),w,a,f);F&&(T=F)}p&&(x==="number"||b!=="auto")&&(I=gn($,w,"category"))}else p?T=da(0,j):u&&u[P]&&u[P].hasStack&&x==="number"?T=h==="expand"?[0,1]:Wx(u[P].stackGroups,s,c):T=qx($,i.filter(function(U){var V=o in U.props?U.props[o]:U.type.defaultProps[o],he="hide"in U.props?U.props.hide:U.type.defaultProps.hide;return V===P&&(S||!he)}),x,f,!0);if(x==="number")T=If(l,T,P,a,_),D&&(T=Yl(D,T,O));else if(x==="category"&&D){var H=D,G=T.every(function(U){return H.indexOf(U)>=0});G&&(T=H)}}return k(k({},y),{},K({},P,k(k({},g),{},{axisType:a,domain:T,categoricalDomain:I,duplicateDomain:M,originalDomain:(d=g.domain)!==null&&d!==void 0?d:C,isCategorical:p,layout:f})))},{})},w2=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,s=r.dataStartIndex,c=r.dataEndIndex,f=t.layout,l=t.children,h=fo(t.data,{graphicalItems:n,dataStartIndex:s,dataEndIndex:c}),p=h.length,y=Lx(f,a),v=-1;return n.reduce(function(d,g){var x=g.type.defaultProps!==void 0?k(k({},g.type.defaultProps),g.props):g.props,w=x[o],O=Jw("number");if(!d[w]){v++;var m;return y?m=da(0,p):u&&u[w]&&u[w].hasStack?(m=Wx(u[w].stackGroups,s,c),m=If(l,m,w,a)):(m=Yl(O,qx(h,n.filter(function(b){var _,S,P=o in b.props?b.props[o]:(_=b.type.defaultProps)===null||_===void 0?void 0:_[o],$="hide"in b.props?b.props.hide:(S=b.type.defaultProps)===null||S===void 0?void 0:S.hide;return P===w&&!$}),"number",f),i.defaultProps.allowDataOverflow),m=If(l,m,w,a)),k(k({},d),{},K({},w,k(k({axisType:a},i.defaultProps),{},{hide:!0,orientation:He(y2,"".concat(a,".").concat(v%2),null),domain:m,originalDomain:O,isCategorical:y,layout:f})))}return d},{})},O2=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,o=r.graphicalItems,u=r.stackGroups,s=r.dataStartIndex,c=r.dataEndIndex,f=t.children,l="".concat(i,"Id"),h=Ze(f,a),p={};return h&&h.length?p=x2(t,{axes:h,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:s,dataEndIndex:c}):o&&o.length&&(p=w2(t,{Axis:a,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:s,dataEndIndex:c})),p},_2=function(t){var r=Mt(t),n=vt(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:ih(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:ea(r,n)}},Ib=function(t){var r=t.children,n=t.defaultShowTooltip,i=ze(r,Dr),a=0,o=0;return t.data&&t.data.length!==0&&(o=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(o=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:o,activeTooltipIndex:-1,isTooltipActive:!!n}},S2=function(t){return!t||!t.length?!1:t.some(function(r){var n=yt(r&&r.type);return n&&n.indexOf("Bar")>=0})},kb=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},A2=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,o=a===void 0?{}:a,u=t.yAxisMap,s=u===void 0?{}:u,c=n.width,f=n.height,l=n.children,h=n.margin||{},p=ze(l,Dr),y=ze(l,Zt),v=Object.keys(s).reduce(function(m,b){var _=s[b],S=_.orientation;return!_.mirror&&!_.hide?k(k({},m),{},K({},S,m[S]+_.width)):m},{left:h.left||0,right:h.right||0}),d=Object.keys(o).reduce(function(m,b){var _=o[b],S=_.orientation;return!_.mirror&&!_.hide?k(k({},m),{},K({},S,He(m,"".concat(S))+_.height)):m},{top:h.top||0,bottom:h.bottom||0}),g=k(k({},d),v),x=g.bottom;p&&(g.bottom+=p.props.height||Dr.defaultProps.height),y&&r&&(g=nM(g,i,n,r));var w=c-g.left-g.right,O=f-g.top-g.bottom;return k(k({brushBottom:x},g),{},{width:Math.max(w,0),height:Math.max(O,0)})},P2=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},Qw=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,o=t.validateTooltipEventTypes,u=o===void 0?["axis"]:o,s=t.axisComponents,c=t.legendContent,f=t.formatAxisMap,l=t.defaultProps,h=function(g,x){var w=x.graphicalItems,O=x.stackGroups,m=x.offset,b=x.updateId,_=x.dataStartIndex,S=x.dataEndIndex,P=g.barSize,$=g.layout,j=g.barGap,T=g.barCategoryGap,M=g.maxBarSize,I=kb($),C=I.numericAxisName,R=I.cateAxisName,D=S2(w),B=[];return w.forEach(function(F,H){var G=fo(g.data,{graphicalItems:[F],dataStartIndex:_,dataEndIndex:S}),U=F.type.defaultProps!==void 0?k(k({},F.type.defaultProps),F.props):F.props,V=U.dataKey,he=U.maxBarSize,me=U["".concat(C,"Id")],Be=U["".concat(R,"Id")],qt={},Re=s.reduce(function(Lt,Bt){var ho=x["".concat(Bt.axisType,"Map")],zh=U["".concat(Bt.axisType,"Id")];ho&&ho[zh]||Bt.axisType==="zAxis"||ir();var Uh=ho[zh];return k(k({},Lt),{},K(K({},Bt.axisType,Uh),"".concat(Bt.axisType,"Ticks"),vt(Uh)))},qt),z=Re[R],Z=Re["".concat(R,"Ticks")],J=O&&O[me]&&O[me].hasStack&&pM(F,O[me].stackGroups),q=yt(F.type).indexOf("Bar")>=0,ve=ea(z,Z),te=[],xe=D&&tM({barSize:P,stackGroups:O,totalSize:P2(Re,R)});if(q){var we,De,Tt=ee(he)?M:he,lr=(we=(De=ea(z,Z,!0))!==null&&De!==void 0?De:Tt)!==null&&we!==void 0?we:0;te=rM({barGap:j,barCategoryGap:T,bandSize:lr!==ve?lr:ve,sizeList:xe[Be],maxBarSize:Tt}),lr!==ve&&(te=te.map(function(Lt){return k(k({},Lt),{},{position:k(k({},Lt.position),{},{offset:Lt.position.offset-lr/2})})}))}var fi=F&&F.type&&F.type.getComposedData;fi&&B.push({props:k(k({},fi(k(k({},Re),{},{displayedData:G,props:g,dataKey:V,item:F,bandSize:ve,barPosition:te,offset:m,stackedData:J,layout:$,dataStartIndex:_,dataEndIndex:S}))),{},K(K(K({key:F.key||"item-".concat(H)},C,Re[C]),R,Re[R]),"animationId",b)),childIndex:o_(F,g.children),item:F})}),B},p=function(g,x){var w=g.props,O=g.dataStartIndex,m=g.dataEndIndex,b=g.updateId;if(!Jd({props:w}))return null;var _=w.children,S=w.layout,P=w.stackOffset,$=w.data,j=w.reverseStackOrder,T=kb(S),M=T.numericAxisName,I=T.cateAxisName,C=Ze(_,n),R=hM($,C,"".concat(M,"Id"),"".concat(I,"Id"),P,j),D=s.reduce(function(U,V){var he="".concat(V.axisType,"Map");return k(k({},U),{},K({},he,O2(w,k(k({},V),{},{graphicalItems:C,stackGroups:V.axisType===M&&R,dataStartIndex:O,dataEndIndex:m}))))},{}),B=A2(k(k({},D),{},{props:w,graphicalItems:C}),x==null?void 0:x.legendBBox);Object.keys(D).forEach(function(U){D[U]=f(w,D[U],B,U.replace("Map",""),r)});var F=D["".concat(I,"Map")],H=_2(F),G=h(w,k(k({},D),{},{dataStartIndex:O,dataEndIndex:m,updateId:b,graphicalItems:C,stackGroups:R,offset:B}));return k(k({formattedGraphicalItems:G,graphicalItems:C,offset:B,stackGroups:R},H),D)},y=(function(d){function g(x){var w,O,m;return a2(this,g),m=s2(this,g,[x]),K(m,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),K(m,"accessibilityManager",new HD),K(m,"handleLegendBBoxUpdate",function(b){if(b){var _=m.state,S=_.dataStartIndex,P=_.dataEndIndex,$=_.updateId;m.setState(k({legendBBox:b},p({props:m.props,dataStartIndex:S,dataEndIndex:P,updateId:$},k(k({},m.state),{},{legendBBox:b}))))}}),K(m,"handleReceiveSyncEvent",function(b,_,S){if(m.props.syncId===b){if(S===m.eventEmitterSymbol&&typeof m.props.syncMethod!="function")return;m.applySyncEvent(_)}}),K(m,"handleBrushChange",function(b){var _=b.startIndex,S=b.endIndex;if(_!==m.state.dataStartIndex||S!==m.state.dataEndIndex){var P=m.state.updateId;m.setState(function(){return k({dataStartIndex:_,dataEndIndex:S},p({props:m.props,dataStartIndex:_,dataEndIndex:S,updateId:P},m.state))}),m.triggerSyncEvent({dataStartIndex:_,dataEndIndex:S})}}),K(m,"handleMouseEnter",function(b){var _=m.getMouseInfo(b);if(_){var S=k(k({},_),{},{isTooltipActive:!0});m.setState(S),m.triggerSyncEvent(S);var P=m.props.onMouseEnter;Y(P)&&P(S,b)}}),K(m,"triggeredAfterMouseMove",function(b){var _=m.getMouseInfo(b),S=_?k(k({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};m.setState(S),m.triggerSyncEvent(S);var P=m.props.onMouseMove;Y(P)&&P(S,b)}),K(m,"handleItemMouseEnter",function(b){m.setState(function(){return{isTooltipActive:!0,activeItem:b,activePayload:b.tooltipPayload,activeCoordinate:b.tooltipPosition||{x:b.cx,y:b.cy}}})}),K(m,"handleItemMouseLeave",function(){m.setState(function(){return{isTooltipActive:!1}})}),K(m,"handleMouseMove",function(b){b.persist(),m.throttleTriggeredAfterMouseMove(b)}),K(m,"handleMouseLeave",function(b){m.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};m.setState(_),m.triggerSyncEvent(_);var S=m.props.onMouseLeave;Y(S)&&S(_,b)}),K(m,"handleOuterEvent",function(b){var _=a_(b),S=He(m.props,"".concat(_));if(_&&Y(S)){var P,$;/.*touch.*/i.test(_)?$=m.getMouseInfo(b.changedTouches[0]):$=m.getMouseInfo(b),S((P=$)!==null&&P!==void 0?P:{},b)}}),K(m,"handleClick",function(b){var _=m.getMouseInfo(b);if(_){var S=k(k({},_),{},{isTooltipActive:!0});m.setState(S),m.triggerSyncEvent(S);var P=m.props.onClick;Y(P)&&P(S,b)}}),K(m,"handleMouseDown",function(b){var _=m.props.onMouseDown;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"handleMouseUp",function(b){var _=m.props.onMouseUp;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"handleTouchMove",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&m.throttleTriggeredAfterMouseMove(b.changedTouches[0])}),K(m,"handleTouchStart",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&m.handleMouseDown(b.changedTouches[0])}),K(m,"handleTouchEnd",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&m.handleMouseUp(b.changedTouches[0])}),K(m,"handleDoubleClick",function(b){var _=m.props.onDoubleClick;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"handleContextMenu",function(b){var _=m.props.onContextMenu;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"triggerSyncEvent",function(b){m.props.syncId!==void 0&&dl.emit(pl,m.props.syncId,b,m.eventEmitterSymbol)}),K(m,"applySyncEvent",function(b){var _=m.props,S=_.layout,P=_.syncMethod,$=m.state.updateId,j=b.dataStartIndex,T=b.dataEndIndex;if(b.dataStartIndex!==void 0||b.dataEndIndex!==void 0)m.setState(k({dataStartIndex:j,dataEndIndex:T},p({props:m.props,dataStartIndex:j,dataEndIndex:T,updateId:$},m.state)));else if(b.activeTooltipIndex!==void 0){var M=b.chartX,I=b.chartY,C=b.activeTooltipIndex,R=m.state,D=R.offset,B=R.tooltipTicks;if(!D)return;if(typeof P=="function")C=P(B,b);else if(P==="value"){C=-1;for(var F=0;F=0){var J,q;if(M.dataKey&&!M.allowDuplicatedCategory){var ve=typeof M.dataKey=="function"?Z:"payload.".concat(M.dataKey.toString());J=yl(F,ve,C),q=H&&G&&yl(G,ve,C)}else J=F==null?void 0:F[I],q=H&&G&&G[I];if(Be||me){var te=b.props.activeIndex!==void 0?b.props.activeIndex:I;return[N.cloneElement(b,k(k(k({},P.props),Re),{},{activeIndex:te})),null,null]}if(!ee(J))return[z].concat(Vr(m.renderActivePoints({item:P,activePoint:J,basePoint:q,childIndex:I,isRange:H})))}else{var xe,we=(xe=m.getItemByXY(m.state.activeCoordinate))!==null&&xe!==void 0?xe:{graphicalItem:z},De=we.graphicalItem,Tt=De.item,lr=Tt===void 0?b:Tt,fi=De.childIndex,Lt=k(k(k({},P.props),Re),{},{activeIndex:fi});return[N.cloneElement(lr,Lt),null,null]}return H?[z,null,null]:[z,null]}),K(m,"renderCustomized",function(b,_,S){return N.cloneElement(b,k(k({key:"recharts-customized-".concat(S)},m.props),m.state))}),K(m,"renderMap",{CartesianGrid:{handler:Ai,once:!0},ReferenceArea:{handler:m.renderReferenceElement},ReferenceLine:{handler:Ai},ReferenceDot:{handler:m.renderReferenceElement},XAxis:{handler:Ai},YAxis:{handler:Ai},Brush:{handler:m.renderBrush,once:!0},Bar:{handler:m.renderGraphicChild},Line:{handler:m.renderGraphicChild},Area:{handler:m.renderGraphicChild},Radar:{handler:m.renderGraphicChild},RadialBar:{handler:m.renderGraphicChild},Scatter:{handler:m.renderGraphicChild},Pie:{handler:m.renderGraphicChild},Funnel:{handler:m.renderGraphicChild},Tooltip:{handler:m.renderCursor,once:!0},PolarGrid:{handler:m.renderPolarGrid,once:!0},PolarAngleAxis:{handler:m.renderPolarAxis},PolarRadiusAxis:{handler:m.renderPolarAxis},Customized:{handler:m.renderCustomized}}),m.clipPathId="".concat((w=x.id)!==null&&w!==void 0?w:ai("recharts"),"-clip"),m.throttleTriggeredAfterMouseMove=R0(m.triggeredAfterMouseMove,(O=x.throttleDelay)!==null&&O!==void 0?O:1e3/60),m.state={},m}return f2(g,d),u2(g,[{key:"componentDidMount",value:function(){var w,O;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(w=this.props.margin.left)!==null&&w!==void 0?w:0,top:(O=this.props.margin.top)!==null&&O!==void 0?O:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var w=this.props,O=w.children,m=w.data,b=w.height,_=w.layout,S=ze(O,Ue);if(S){var P=S.props.defaultIndex;if(!(typeof P!="number"||P<0||P>this.state.tooltipTicks.length-1)){var $=this.state.tooltipTicks[P]&&this.state.tooltipTicks[P].value,j=Rf(this.state,m,P,$),T=this.state.tooltipTicks[P].coordinate,M=(this.state.offset.top+b)/2,I=_==="horizontal",C=I?{x:T,y:M}:{y:T,x:M},R=this.state.formattedGraphicalItems.find(function(B){var F=B.item;return F.type.name==="Scatter"});R&&(C=k(k({},C),R.props.points[P].tooltipPosition),j=R.props.points[P].tooltipPayload);var D={activeTooltipIndex:P,isTooltipActive:!0,activeLabel:$,activePayload:j,activeCoordinate:C};this.setState(D),this.renderCursor(S),this.accessibilityManager.setIndex(P)}}}},{key:"getSnapshotBeforeUpdate",value:function(w,O){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==O.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==w.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==w.margin){var m,b;this.accessibilityManager.setDetails({offset:{left:(m=this.props.margin.left)!==null&&m!==void 0?m:0,top:(b=this.props.margin.top)!==null&&b!==void 0?b:0}})}return null}},{key:"componentDidUpdate",value:function(w){gl([ze(w.children,Ue)],[ze(this.props.children,Ue)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var w=ze(this.props.children,Ue);if(w&&typeof w.props.shared=="boolean"){var O=w.props.shared?"axis":"item";return u.indexOf(O)>=0?O:a}return a}},{key:"getMouseInfo",value:function(w){if(!this.container)return null;var O=this.container,m=O.getBoundingClientRect(),b=KA(m),_={chartX:Math.round(w.pageX-b.left),chartY:Math.round(w.pageY-b.top)},S=m.width/O.offsetWidth||1,P=this.inRange(_.chartX,_.chartY,S);if(!P)return null;var $=this.state,j=$.xAxisMap,T=$.yAxisMap,M=this.getTooltipEventType(),I=Cb(this.state,this.props.data,this.props.layout,P);if(M!=="axis"&&j&&T){var C=Mt(j).scale,R=Mt(T).scale,D=C&&C.invert?C.invert(_.chartX):null,B=R&&R.invert?R.invert(_.chartY):null;return k(k({},_),{},{xValue:D,yValue:B},I)}return I?k(k({},_),I):null}},{key:"inRange",value:function(w,O){var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,b=this.props.layout,_=w/m,S=O/m;if(b==="horizontal"||b==="vertical"){var P=this.state.offset,$=_>=P.left&&_<=P.left+P.width&&S>=P.top&&S<=P.top+P.height;return $?{x:_,y:S}:null}var j=this.state,T=j.angleAxisMap,M=j.radiusAxisMap;if(T&&M){var I=Mt(T);return Bm({x:_,y:S},I)}return null}},{key:"parseEventsOfWrapper",value:function(){var w=this.props.children,O=this.getTooltipEventType(),m=ze(w,Ue),b={};m&&O==="axis"&&(m.props.trigger==="click"?b={onClick:this.handleClick}:b={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Ei(this.props,this.handleOuterEvent);return k(k({},_),b)}},{key:"addListener",value:function(){dl.on(pl,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){dl.removeListener(pl,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(w,O,m){for(var b=this.state.formattedGraphicalItems,_=0,S=b.length;_{const t=N.useMemo(()=>Array.from(e.values()).filter(i=>i.telemetry).map(i=>({name:i.name.length>18?i.name.slice(0,16)+"..":i.name,fullName:i.name,killsPerHour:parseInt(i.telemetry.kills_per_hour)||0,totalKills:i.telemetry.kills||0})).sort((i,a)=>a.killsPerHour-i.killsPerHour).slice(0,30),[e]),r=N.useMemo(()=>Array.from(e.values()).filter(i=>{var a;return(a=i.combat)==null?void 0:a.session}).map(i=>({name:i.name.length>18?i.name.slice(0,16)+"..":i.name,fullName:i.name,damage:i.combat.session.total_damage_given})).sort((i,a)=>a.damage-i.damage).slice(0,30),[e]),n=N.useMemo(()=>{var a;const i={};for(const o of e.values()){const u=(a=o.combat)==null?void 0:a.session;if(u!=null&&u.monsters){for(const s of Object.values(u.monsters))if(s.offense)for(const c of Object.values(s.offense))for(const[f,l]of Object.entries(c))f==="None"||f==="Unknown"||(i[f]=(i[f]||0)+(l.damage||0))}}return Object.entries(i).map(([o,u])=>({name:o,value:u})).filter(o=>o.value>0).sort((o,u)=>u.value-o.value)},[e]);return E.jsxs("div",{className:"combat-tab",children:[E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Kills per Hour"}),E.jsx(Ti,{width:"100%",height:Math.max(200,t.length*28),children:E.jsxs(Df,{data:t,layout:"vertical",margin:{left:10,right:20,top:5,bottom:5},children:[E.jsx(_a,{strokeDasharray:"3 3",stroke:"#333"}),E.jsx(Wr,{type:"number",stroke:"#888",fontSize:11}),E.jsx(Kr,{type:"category",dataKey:"name",width:130,stroke:"#888",fontSize:11}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:i=>[i.toLocaleString(),"Kills/hr"],labelFormatter:(i,a)=>{var o,u;return((u=(o=a==null?void 0:a[0])==null?void 0:o.payload)==null?void 0:u.fullName)||i}}),E.jsx(Ot,{dataKey:"killsPerHour",fill:"#44cc44",radius:[0,3,3,0]})]})})]}),r.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Total Damage (Session)"}),E.jsx(Ti,{width:"100%",height:Math.max(200,r.length*28),children:E.jsxs(Df,{data:r,layout:"vertical",margin:{left:10,right:20,top:5,bottom:5},children:[E.jsx(_a,{strokeDasharray:"3 3",stroke:"#333"}),E.jsx(Wr,{type:"number",stroke:"#888",fontSize:11}),E.jsx(Kr,{type:"category",dataKey:"name",width:130,stroke:"#888",fontSize:11}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:i=>[i.toLocaleString(),"Damage"],labelFormatter:(i,a)=>{var o,u;return((u=(o=a==null?void 0:a[0])==null?void 0:o.payload)==null?void 0:u.fullName)||i}}),E.jsx(Ot,{dataKey:"damage",fill:"#ff6644",radius:[0,3,3,0]})]})})]}),n.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Damage by Element (All Characters)"}),E.jsx(Ti,{width:"100%",height:300,children:E.jsxs(T2,{children:[E.jsx(Pt,{data:n,dataKey:"value",nameKey:"name",cx:"50%",cy:"50%",outerRadius:100,label:({name:i,percent:a})=>`${i} ${(a*100).toFixed(0)}%`,labelLine:!0,fontSize:12,children:n.map(i=>E.jsx(Ba,{fill:j2[i.name]||"#888"},i.name))}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:i=>i.toLocaleString()}),E.jsx(Zt,{wrapperStyle:{fontSize:12,color:"#aaa"}})]})})]})]})},M2=({characters:e,totalRares:t,totalKills:r,recentRares:n})=>{const i=N.useMemo(()=>Array.from(e.values()).filter(o=>o.telemetry&&(o.telemetry.total_rares??0)>0).map(o=>({name:o.name.length>18?o.name.slice(0,16)+"..":o.name,fullName:o.name,rares:o.telemetry.total_rares??0})).sort((o,u)=>u.rares-o.rares),[e]),a=t>0?Math.round(r/t):0;return E.jsxs("div",{className:"rares-tab",children:[E.jsxs("div",{className:"rares-summary",children:[E.jsxs("div",{className:"rare-stat-card",children:[E.jsx("span",{className:"rare-stat-value",children:t}),E.jsx("span",{className:"rare-stat-label",children:"Total Rares Found"})]}),E.jsxs("div",{className:"rare-stat-card",children:[E.jsx("span",{className:"rare-stat-value",children:r.toLocaleString()}),E.jsx("span",{className:"rare-stat-label",children:"Total Kills"})]}),E.jsxs("div",{className:"rare-stat-card",children:[E.jsx("span",{className:"rare-stat-value",children:a>0?`1 in ${a.toLocaleString()}`:"--"}),E.jsx("span",{className:"rare-stat-label",children:"Drop Rate"})]})]}),n.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Recent Rare Drops (This Session)"}),E.jsx("div",{className:"rare-timeline",children:n.map((o,u)=>E.jsxs("div",{className:"rare-event",children:[E.jsx("span",{className:"rare-time",children:new Date(o.timestamp).toLocaleTimeString()}),E.jsx("span",{className:"rare-char",children:o.character_name}),E.jsx("span",{className:"rare-name",children:o.name})]},u))})]}),i.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Rares per Character (Lifetime)"}),E.jsx(Ti,{width:"100%",height:Math.max(200,i.length*28),children:E.jsxs(Df,{data:i,layout:"vertical",margin:{left:10,right:20,top:5,bottom:5},children:[E.jsx(_a,{strokeDasharray:"3 3",stroke:"#333"}),E.jsx(Wr,{type:"number",stroke:"#888",fontSize:11}),E.jsx(Kr,{type:"category",dataKey:"name",width:130,stroke:"#888",fontSize:11}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:o=>[o,"Rares"],labelFormatter:(o,u)=>{var s,c;return((c=(s=u==null?void 0:u[0])==null?void 0:s.payload)==null?void 0:c.fullName)||o}}),E.jsx(Ot,{dataKey:"rares",fill:"#ffcc00",radius:[0,3,3,0]})]})})]})]})},pr={west:-102.1,east:102.1,north:102.1,south:-102.1},Ta=800;function $2(e,t){const r=(e-pr.west)/(pr.east-pr.west)*Ta,n=(pr.north-t)/(pr.north-pr.south)*Ta;return{x:r,y:n}}const C2=({characters:e})=>{const t=N.useRef(null),[r,n]=N.useState(null),i=N.useMemo(()=>Array.from(e.values()).filter(o=>o.telemetry&&o.telemetry.ew!==void 0).map(o=>{const u=o.telemetry,{x:s,y:c}=$2(u.ew,u.ns),f=(u.vt_state||"").toLowerCase()==="combat"||(u.vt_state||"").toLowerCase()==="hunt";return{name:o.name,x:s,y:c,isHunting:f,ns:u.ns,ew:u.ew}}),[e]),a=N.useCallback(o=>n(o),[]);return E.jsxs("div",{className:"map-tab",children:[E.jsxs("div",{className:"map-container",ref:t,children:[E.jsx("img",{src:"/dereth_highres.png",alt:"Dereth Map",className:"map-image",draggable:!1}),E.jsx("svg",{className:"map-overlay",viewBox:`0 0 ${Ta} ${Ta}`,children:i.map(o=>{var u,s;return E.jsxs("g",{children:[E.jsx("circle",{cx:o.x,cy:o.y,r:r===o.name?6:4,fill:o.isHunting?"#44cc44":"#ffaa00",stroke:"#000",strokeWidth:1,opacity:.9,onMouseEnter:()=>a(o.name),onMouseLeave:()=>a(null),style:{cursor:"pointer"}}),r===o.name&&E.jsxs("text",{x:o.x+8,y:o.y+4,fill:"#fff",fontSize:11,stroke:"#000",strokeWidth:.3,paintOrder:"stroke",children:[o.name," (",(u=o.ns)==null?void 0:u.toFixed(1),"N, ",(s=o.ew)==null?void 0:s.toFixed(1),"E)"]})]},o.name)})})]}),E.jsxs("div",{className:"map-legend",children:[E.jsxs("span",{children:[E.jsx("span",{className:"legend-dot hunting"})," Hunting/Combat"]}),E.jsxs("span",{children:[E.jsx("span",{className:"legend-dot other"})," Other state"]}),E.jsxs("span",{className:"map-count",children:[i.length," characters on map"]})]})]})},I2=()=>{const[e,t]=N.useState(""),[r,n]=N.useState([]),[i,a]=N.useState(0),[o,u]=N.useState(!1),s=N.useRef(0),c=N.useCallback(async l=>{if(l.length<2){n([]),a(0);return}u(!0);try{const h=await eO(`/search/items?q=${encodeURIComponent(l)}&limit=100`);n(h.results??[]),a(h.total??0)}catch{n([])}u(!1)},[]),f=N.useCallback(l=>{const h=l.target.value;t(h),clearTimeout(s.current),s.current=window.setTimeout(()=>c(h),400)},[c]);return E.jsxs("div",{className:"inventory-tab",children:[E.jsxs("div",{className:"search-bar",children:[E.jsx("input",{type:"text",value:e,onChange:f,placeholder:"Search items across all characters...",className:"search-input"}),o&&E.jsx("span",{className:"search-spinner",children:"Searching..."})]}),i>0&&E.jsxs("div",{className:"search-count",children:[i.toLocaleString()," results"]}),E.jsxs("div",{className:"search-results",children:[r.length===0&&e.length>=2&&!o&&E.jsx("div",{className:"search-empty",children:"No items found"}),E.jsxs("table",{className:"results-table",children:[E.jsx("thead",{children:E.jsxs("tr",{children:[E.jsx("th",{children:"Character"}),E.jsx("th",{children:"Item"}),E.jsx("th",{children:"Type"}),E.jsx("th",{children:"Material"}),E.jsx("th",{children:"Set"}),E.jsx("th",{children:"Work"})]})}),E.jsx("tbody",{children:r.map((l,h)=>E.jsxs("tr",{children:[E.jsx("td",{children:l.character_name}),E.jsx("td",{className:"item-name",children:l.item_name}),E.jsx("td",{children:l.type||""}),E.jsx("td",{children:l.material||""}),E.jsx("td",{children:l.set_name||""}),E.jsx("td",{children:l.workmanship||""})]},h))})]})]})]})};function N2({data:e,onViewToggle:t}){const r=[{id:"combat",label:"Combat",content:E.jsx(E2,{characters:e.characters})},{id:"rares",label:"Rares",content:E.jsx(M2,{characters:e.characters,totalRares:e.totalRares,totalKills:e.totalKills,recentRares:e.recentRares})},{id:"map",label:"Map",content:E.jsx(C2,{characters:e.characters})},{id:"inventory",label:"Inventory",content:E.jsx(I2,{})}];return E.jsxs(tO,{children:[E.jsx("div",{style:{display:"flex",justifyContent:"flex-start",marginBottom:8},children:E.jsx("button",{onClick:t,className:"tab-btn",children:"Map View"})}),E.jsx(rO,{activeChars:e.characters.size,totalKills:e.totalKills,totalRares:e.totalRares,serverHealth:e.serverHealth}),E.jsx(iO,{characters:e.characters}),E.jsx(aO,{tabs:r})]})}export{N2 as default}; +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Xw(e,t){if(e){if(typeof e=="string")return Nf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Nf(e,t)}}function d2(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function p2(e){if(Array.isArray(e))return Nf(e)}function Nf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?o:t&&t.length&&L(i)&&L(a)?t.slice(i,a+1):[]};function Jw(e){return e==="number"?[0,"auto"]:void 0}var Rf=function(t,r,n,i){var a=t.graphicalItems,o=t.tooltipAxis,u=fo(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(s,c){var f,l=(f=c.props.data)!==null&&f!==void 0?f:r;l&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(l=l.slice(t.dataStartIndex,t.dataEndIndex+1));var h;if(o.dataKey&&!o.allowDuplicatedCategory){var p=l===void 0?u:l;h=yl(p,o.dataKey,i)}else h=l&&l[n]||u[n];return h?[].concat(Vr(s),[Hx(c,h)]):s},[])},Cb=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},o=g2(a,n),u=t.orderedTooltipTicks,s=t.tooltipAxis,c=t.tooltipTicks,f=eM(o,u,c,s);if(f>=0&&c){var l=c[f]&&c[f].value,h=Rf(t,r,f,l),p=b2(n,u,f,a);return{activeTooltipIndex:f,activeLabel:l,activePayload:h,activeCoordinate:p}}return null},x2=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,s=r.dataStartIndex,c=r.dataEndIndex,f=t.layout,l=t.children,h=t.stackOffset,p=Lx(f,a);return n.reduce(function(y,v){var d,g=v.type.defaultProps!==void 0?k(k({},v.type.defaultProps),v.props):v.props,x=g.type,w=g.dataKey,O=g.allowDataOverflow,m=g.allowDuplicatedCategory,b=g.scale,_=g.ticks,S=g.includeHidden,P=g[o];if(y[P])return y;var $=fo(t.data,{graphicalItems:i.filter(function(U){var V,he=o in U.props?U.props[o]:(V=U.type.defaultProps)===null||V===void 0?void 0:V[o];return he===P}),dataStartIndex:s,dataEndIndex:c}),j=$.length,T,M,I;KD(g.domain,O,x)&&(T=Yl(g.domain,null,O),p&&(x==="number"||b!=="auto")&&(I=gn($,w,"category")));var C=Jw(x);if(!T||T.length===0){var R,D=(R=g.domain)!==null&&R!==void 0?R:C;if(w){if(T=gn($,w,x),x==="category"&&p){var B=VO(T);m&&B?(M=T,T=da(0,j)):m||(T=Dm(D,T,v).reduce(function(U,V){return U.indexOf(V)>=0?U:[].concat(Vr(U),[V])},[]))}else if(x==="category")m?T=T.filter(function(U){return U!==""&&!ee(U)}):T=Dm(D,T,v).reduce(function(U,V){return U.indexOf(V)>=0||V===""||ee(V)?U:[].concat(Vr(U),[V])},[]);else if(x==="number"){var F=aM($,i.filter(function(U){var V,he,me=o in U.props?U.props[o]:(V=U.type.defaultProps)===null||V===void 0?void 0:V[o],Be="hide"in U.props?U.props.hide:(he=U.type.defaultProps)===null||he===void 0?void 0:he.hide;return me===P&&(S||!Be)}),w,a,f);F&&(T=F)}p&&(x==="number"||b!=="auto")&&(I=gn($,w,"category"))}else p?T=da(0,j):u&&u[P]&&u[P].hasStack&&x==="number"?T=h==="expand"?[0,1]:Wx(u[P].stackGroups,s,c):T=qx($,i.filter(function(U){var V=o in U.props?U.props[o]:U.type.defaultProps[o],he="hide"in U.props?U.props.hide:U.type.defaultProps.hide;return V===P&&(S||!he)}),x,f,!0);if(x==="number")T=If(l,T,P,a,_),D&&(T=Yl(D,T,O));else if(x==="category"&&D){var H=D,G=T.every(function(U){return H.indexOf(U)>=0});G&&(T=H)}}return k(k({},y),{},K({},P,k(k({},g),{},{axisType:a,domain:T,categoricalDomain:I,duplicateDomain:M,originalDomain:(d=g.domain)!==null&&d!==void 0?d:C,isCategorical:p,layout:f})))},{})},w2=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,s=r.dataStartIndex,c=r.dataEndIndex,f=t.layout,l=t.children,h=fo(t.data,{graphicalItems:n,dataStartIndex:s,dataEndIndex:c}),p=h.length,y=Lx(f,a),v=-1;return n.reduce(function(d,g){var x=g.type.defaultProps!==void 0?k(k({},g.type.defaultProps),g.props):g.props,w=x[o],O=Jw("number");if(!d[w]){v++;var m;return y?m=da(0,p):u&&u[w]&&u[w].hasStack?(m=Wx(u[w].stackGroups,s,c),m=If(l,m,w,a)):(m=Yl(O,qx(h,n.filter(function(b){var _,S,P=o in b.props?b.props[o]:(_=b.type.defaultProps)===null||_===void 0?void 0:_[o],$="hide"in b.props?b.props.hide:(S=b.type.defaultProps)===null||S===void 0?void 0:S.hide;return P===w&&!$}),"number",f),i.defaultProps.allowDataOverflow),m=If(l,m,w,a)),k(k({},d),{},K({},w,k(k({axisType:a},i.defaultProps),{},{hide:!0,orientation:He(y2,"".concat(a,".").concat(v%2),null),domain:m,originalDomain:O,isCategorical:y,layout:f})))}return d},{})},O2=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,o=r.graphicalItems,u=r.stackGroups,s=r.dataStartIndex,c=r.dataEndIndex,f=t.children,l="".concat(i,"Id"),h=Ze(f,a),p={};return h&&h.length?p=x2(t,{axes:h,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:s,dataEndIndex:c}):o&&o.length&&(p=w2(t,{Axis:a,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:s,dataEndIndex:c})),p},_2=function(t){var r=Mt(t),n=vt(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:ih(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:ea(r,n)}},Ib=function(t){var r=t.children,n=t.defaultShowTooltip,i=ze(r,Dr),a=0,o=0;return t.data&&t.data.length!==0&&(o=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(o=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:o,activeTooltipIndex:-1,isTooltipActive:!!n}},S2=function(t){return!t||!t.length?!1:t.some(function(r){var n=yt(r&&r.type);return n&&n.indexOf("Bar")>=0})},kb=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},A2=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,o=a===void 0?{}:a,u=t.yAxisMap,s=u===void 0?{}:u,c=n.width,f=n.height,l=n.children,h=n.margin||{},p=ze(l,Dr),y=ze(l,Zt),v=Object.keys(s).reduce(function(m,b){var _=s[b],S=_.orientation;return!_.mirror&&!_.hide?k(k({},m),{},K({},S,m[S]+_.width)):m},{left:h.left||0,right:h.right||0}),d=Object.keys(o).reduce(function(m,b){var _=o[b],S=_.orientation;return!_.mirror&&!_.hide?k(k({},m),{},K({},S,He(m,"".concat(S))+_.height)):m},{top:h.top||0,bottom:h.bottom||0}),g=k(k({},d),v),x=g.bottom;p&&(g.bottom+=p.props.height||Dr.defaultProps.height),y&&r&&(g=nM(g,i,n,r));var w=c-g.left-g.right,O=f-g.top-g.bottom;return k(k({brushBottom:x},g),{},{width:Math.max(w,0),height:Math.max(O,0)})},P2=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},Qw=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,o=t.validateTooltipEventTypes,u=o===void 0?["axis"]:o,s=t.axisComponents,c=t.legendContent,f=t.formatAxisMap,l=t.defaultProps,h=function(g,x){var w=x.graphicalItems,O=x.stackGroups,m=x.offset,b=x.updateId,_=x.dataStartIndex,S=x.dataEndIndex,P=g.barSize,$=g.layout,j=g.barGap,T=g.barCategoryGap,M=g.maxBarSize,I=kb($),C=I.numericAxisName,R=I.cateAxisName,D=S2(w),B=[];return w.forEach(function(F,H){var G=fo(g.data,{graphicalItems:[F],dataStartIndex:_,dataEndIndex:S}),U=F.type.defaultProps!==void 0?k(k({},F.type.defaultProps),F.props):F.props,V=U.dataKey,he=U.maxBarSize,me=U["".concat(C,"Id")],Be=U["".concat(R,"Id")],qt={},Re=s.reduce(function(Lt,Bt){var ho=x["".concat(Bt.axisType,"Map")],zh=U["".concat(Bt.axisType,"Id")];ho&&ho[zh]||Bt.axisType==="zAxis"||ir();var Uh=ho[zh];return k(k({},Lt),{},K(K({},Bt.axisType,Uh),"".concat(Bt.axisType,"Ticks"),vt(Uh)))},qt),z=Re[R],Z=Re["".concat(R,"Ticks")],J=O&&O[me]&&O[me].hasStack&&pM(F,O[me].stackGroups),q=yt(F.type).indexOf("Bar")>=0,ve=ea(z,Z),te=[],xe=D&&tM({barSize:P,stackGroups:O,totalSize:P2(Re,R)});if(q){var we,De,Tt=ee(he)?M:he,lr=(we=(De=ea(z,Z,!0))!==null&&De!==void 0?De:Tt)!==null&&we!==void 0?we:0;te=rM({barGap:j,barCategoryGap:T,bandSize:lr!==ve?lr:ve,sizeList:xe[Be],maxBarSize:Tt}),lr!==ve&&(te=te.map(function(Lt){return k(k({},Lt),{},{position:k(k({},Lt.position),{},{offset:Lt.position.offset-lr/2})})}))}var fi=F&&F.type&&F.type.getComposedData;fi&&B.push({props:k(k({},fi(k(k({},Re),{},{displayedData:G,props:g,dataKey:V,item:F,bandSize:ve,barPosition:te,offset:m,stackedData:J,layout:$,dataStartIndex:_,dataEndIndex:S}))),{},K(K(K({key:F.key||"item-".concat(H)},C,Re[C]),R,Re[R]),"animationId",b)),childIndex:o_(F,g.children),item:F})}),B},p=function(g,x){var w=g.props,O=g.dataStartIndex,m=g.dataEndIndex,b=g.updateId;if(!Jd({props:w}))return null;var _=w.children,S=w.layout,P=w.stackOffset,$=w.data,j=w.reverseStackOrder,T=kb(S),M=T.numericAxisName,I=T.cateAxisName,C=Ze(_,n),R=hM($,C,"".concat(M,"Id"),"".concat(I,"Id"),P,j),D=s.reduce(function(U,V){var he="".concat(V.axisType,"Map");return k(k({},U),{},K({},he,O2(w,k(k({},V),{},{graphicalItems:C,stackGroups:V.axisType===M&&R,dataStartIndex:O,dataEndIndex:m}))))},{}),B=A2(k(k({},D),{},{props:w,graphicalItems:C}),x==null?void 0:x.legendBBox);Object.keys(D).forEach(function(U){D[U]=f(w,D[U],B,U.replace("Map",""),r)});var F=D["".concat(I,"Map")],H=_2(F),G=h(w,k(k({},D),{},{dataStartIndex:O,dataEndIndex:m,updateId:b,graphicalItems:C,stackGroups:R,offset:B}));return k(k({formattedGraphicalItems:G,graphicalItems:C,offset:B,stackGroups:R},H),D)},y=(function(d){function g(x){var w,O,m;return a2(this,g),m=s2(this,g,[x]),K(m,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),K(m,"accessibilityManager",new HD),K(m,"handleLegendBBoxUpdate",function(b){if(b){var _=m.state,S=_.dataStartIndex,P=_.dataEndIndex,$=_.updateId;m.setState(k({legendBBox:b},p({props:m.props,dataStartIndex:S,dataEndIndex:P,updateId:$},k(k({},m.state),{},{legendBBox:b}))))}}),K(m,"handleReceiveSyncEvent",function(b,_,S){if(m.props.syncId===b){if(S===m.eventEmitterSymbol&&typeof m.props.syncMethod!="function")return;m.applySyncEvent(_)}}),K(m,"handleBrushChange",function(b){var _=b.startIndex,S=b.endIndex;if(_!==m.state.dataStartIndex||S!==m.state.dataEndIndex){var P=m.state.updateId;m.setState(function(){return k({dataStartIndex:_,dataEndIndex:S},p({props:m.props,dataStartIndex:_,dataEndIndex:S,updateId:P},m.state))}),m.triggerSyncEvent({dataStartIndex:_,dataEndIndex:S})}}),K(m,"handleMouseEnter",function(b){var _=m.getMouseInfo(b);if(_){var S=k(k({},_),{},{isTooltipActive:!0});m.setState(S),m.triggerSyncEvent(S);var P=m.props.onMouseEnter;Y(P)&&P(S,b)}}),K(m,"triggeredAfterMouseMove",function(b){var _=m.getMouseInfo(b),S=_?k(k({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};m.setState(S),m.triggerSyncEvent(S);var P=m.props.onMouseMove;Y(P)&&P(S,b)}),K(m,"handleItemMouseEnter",function(b){m.setState(function(){return{isTooltipActive:!0,activeItem:b,activePayload:b.tooltipPayload,activeCoordinate:b.tooltipPosition||{x:b.cx,y:b.cy}}})}),K(m,"handleItemMouseLeave",function(){m.setState(function(){return{isTooltipActive:!1}})}),K(m,"handleMouseMove",function(b){b.persist(),m.throttleTriggeredAfterMouseMove(b)}),K(m,"handleMouseLeave",function(b){m.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};m.setState(_),m.triggerSyncEvent(_);var S=m.props.onMouseLeave;Y(S)&&S(_,b)}),K(m,"handleOuterEvent",function(b){var _=a_(b),S=He(m.props,"".concat(_));if(_&&Y(S)){var P,$;/.*touch.*/i.test(_)?$=m.getMouseInfo(b.changedTouches[0]):$=m.getMouseInfo(b),S((P=$)!==null&&P!==void 0?P:{},b)}}),K(m,"handleClick",function(b){var _=m.getMouseInfo(b);if(_){var S=k(k({},_),{},{isTooltipActive:!0});m.setState(S),m.triggerSyncEvent(S);var P=m.props.onClick;Y(P)&&P(S,b)}}),K(m,"handleMouseDown",function(b){var _=m.props.onMouseDown;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"handleMouseUp",function(b){var _=m.props.onMouseUp;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"handleTouchMove",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&m.throttleTriggeredAfterMouseMove(b.changedTouches[0])}),K(m,"handleTouchStart",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&m.handleMouseDown(b.changedTouches[0])}),K(m,"handleTouchEnd",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&m.handleMouseUp(b.changedTouches[0])}),K(m,"handleDoubleClick",function(b){var _=m.props.onDoubleClick;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"handleContextMenu",function(b){var _=m.props.onContextMenu;if(Y(_)){var S=m.getMouseInfo(b);_(S,b)}}),K(m,"triggerSyncEvent",function(b){m.props.syncId!==void 0&&dl.emit(pl,m.props.syncId,b,m.eventEmitterSymbol)}),K(m,"applySyncEvent",function(b){var _=m.props,S=_.layout,P=_.syncMethod,$=m.state.updateId,j=b.dataStartIndex,T=b.dataEndIndex;if(b.dataStartIndex!==void 0||b.dataEndIndex!==void 0)m.setState(k({dataStartIndex:j,dataEndIndex:T},p({props:m.props,dataStartIndex:j,dataEndIndex:T,updateId:$},m.state)));else if(b.activeTooltipIndex!==void 0){var M=b.chartX,I=b.chartY,C=b.activeTooltipIndex,R=m.state,D=R.offset,B=R.tooltipTicks;if(!D)return;if(typeof P=="function")C=P(B,b);else if(P==="value"){C=-1;for(var F=0;F=0){var J,q;if(M.dataKey&&!M.allowDuplicatedCategory){var ve=typeof M.dataKey=="function"?Z:"payload.".concat(M.dataKey.toString());J=yl(F,ve,C),q=H&&G&&yl(G,ve,C)}else J=F==null?void 0:F[I],q=H&&G&&G[I];if(Be||me){var te=b.props.activeIndex!==void 0?b.props.activeIndex:I;return[N.cloneElement(b,k(k(k({},P.props),Re),{},{activeIndex:te})),null,null]}if(!ee(J))return[z].concat(Vr(m.renderActivePoints({item:P,activePoint:J,basePoint:q,childIndex:I,isRange:H})))}else{var xe,we=(xe=m.getItemByXY(m.state.activeCoordinate))!==null&&xe!==void 0?xe:{graphicalItem:z},De=we.graphicalItem,Tt=De.item,lr=Tt===void 0?b:Tt,fi=De.childIndex,Lt=k(k(k({},P.props),Re),{},{activeIndex:fi});return[N.cloneElement(lr,Lt),null,null]}return H?[z,null,null]:[z,null]}),K(m,"renderCustomized",function(b,_,S){return N.cloneElement(b,k(k({key:"recharts-customized-".concat(S)},m.props),m.state))}),K(m,"renderMap",{CartesianGrid:{handler:Ai,once:!0},ReferenceArea:{handler:m.renderReferenceElement},ReferenceLine:{handler:Ai},ReferenceDot:{handler:m.renderReferenceElement},XAxis:{handler:Ai},YAxis:{handler:Ai},Brush:{handler:m.renderBrush,once:!0},Bar:{handler:m.renderGraphicChild},Line:{handler:m.renderGraphicChild},Area:{handler:m.renderGraphicChild},Radar:{handler:m.renderGraphicChild},RadialBar:{handler:m.renderGraphicChild},Scatter:{handler:m.renderGraphicChild},Pie:{handler:m.renderGraphicChild},Funnel:{handler:m.renderGraphicChild},Tooltip:{handler:m.renderCursor,once:!0},PolarGrid:{handler:m.renderPolarGrid,once:!0},PolarAngleAxis:{handler:m.renderPolarAxis},PolarRadiusAxis:{handler:m.renderPolarAxis},Customized:{handler:m.renderCustomized}}),m.clipPathId="".concat((w=x.id)!==null&&w!==void 0?w:ai("recharts"),"-clip"),m.throttleTriggeredAfterMouseMove=R0(m.triggeredAfterMouseMove,(O=x.throttleDelay)!==null&&O!==void 0?O:1e3/60),m.state={},m}return f2(g,d),u2(g,[{key:"componentDidMount",value:function(){var w,O;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(w=this.props.margin.left)!==null&&w!==void 0?w:0,top:(O=this.props.margin.top)!==null&&O!==void 0?O:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var w=this.props,O=w.children,m=w.data,b=w.height,_=w.layout,S=ze(O,Ue);if(S){var P=S.props.defaultIndex;if(!(typeof P!="number"||P<0||P>this.state.tooltipTicks.length-1)){var $=this.state.tooltipTicks[P]&&this.state.tooltipTicks[P].value,j=Rf(this.state,m,P,$),T=this.state.tooltipTicks[P].coordinate,M=(this.state.offset.top+b)/2,I=_==="horizontal",C=I?{x:T,y:M}:{y:T,x:M},R=this.state.formattedGraphicalItems.find(function(B){var F=B.item;return F.type.name==="Scatter"});R&&(C=k(k({},C),R.props.points[P].tooltipPosition),j=R.props.points[P].tooltipPayload);var D={activeTooltipIndex:P,isTooltipActive:!0,activeLabel:$,activePayload:j,activeCoordinate:C};this.setState(D),this.renderCursor(S),this.accessibilityManager.setIndex(P)}}}},{key:"getSnapshotBeforeUpdate",value:function(w,O){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==O.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==w.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==w.margin){var m,b;this.accessibilityManager.setDetails({offset:{left:(m=this.props.margin.left)!==null&&m!==void 0?m:0,top:(b=this.props.margin.top)!==null&&b!==void 0?b:0}})}return null}},{key:"componentDidUpdate",value:function(w){gl([ze(w.children,Ue)],[ze(this.props.children,Ue)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var w=ze(this.props.children,Ue);if(w&&typeof w.props.shared=="boolean"){var O=w.props.shared?"axis":"item";return u.indexOf(O)>=0?O:a}return a}},{key:"getMouseInfo",value:function(w){if(!this.container)return null;var O=this.container,m=O.getBoundingClientRect(),b=KA(m),_={chartX:Math.round(w.pageX-b.left),chartY:Math.round(w.pageY-b.top)},S=m.width/O.offsetWidth||1,P=this.inRange(_.chartX,_.chartY,S);if(!P)return null;var $=this.state,j=$.xAxisMap,T=$.yAxisMap,M=this.getTooltipEventType(),I=Cb(this.state,this.props.data,this.props.layout,P);if(M!=="axis"&&j&&T){var C=Mt(j).scale,R=Mt(T).scale,D=C&&C.invert?C.invert(_.chartX):null,B=R&&R.invert?R.invert(_.chartY):null;return k(k({},_),{},{xValue:D,yValue:B},I)}return I?k(k({},_),I):null}},{key:"inRange",value:function(w,O){var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,b=this.props.layout,_=w/m,S=O/m;if(b==="horizontal"||b==="vertical"){var P=this.state.offset,$=_>=P.left&&_<=P.left+P.width&&S>=P.top&&S<=P.top+P.height;return $?{x:_,y:S}:null}var j=this.state,T=j.angleAxisMap,M=j.radiusAxisMap;if(T&&M){var I=Mt(T);return Bm({x:_,y:S},I)}return null}},{key:"parseEventsOfWrapper",value:function(){var w=this.props.children,O=this.getTooltipEventType(),m=ze(w,Ue),b={};m&&O==="axis"&&(m.props.trigger==="click"?b={onClick:this.handleClick}:b={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Ei(this.props,this.handleOuterEvent);return k(k({},_),b)}},{key:"addListener",value:function(){dl.on(pl,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){dl.removeListener(pl,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(w,O,m){for(var b=this.state.formattedGraphicalItems,_=0,S=b.length;_{const t=N.useMemo(()=>Array.from(e.values()).filter(i=>i.telemetry).map(i=>({name:i.name.length>18?i.name.slice(0,16)+"..":i.name,fullName:i.name,killsPerHour:parseInt(i.telemetry.kills_per_hour)||0,totalKills:i.telemetry.kills||0})).sort((i,a)=>a.killsPerHour-i.killsPerHour).slice(0,30),[e]),r=N.useMemo(()=>Array.from(e.values()).filter(i=>{var a;return(a=i.combat)==null?void 0:a.session}).map(i=>({name:i.name.length>18?i.name.slice(0,16)+"..":i.name,fullName:i.name,damage:i.combat.session.total_damage_given})).sort((i,a)=>a.damage-i.damage).slice(0,30),[e]),n=N.useMemo(()=>{var a;const i={};for(const o of e.values()){const u=(a=o.combat)==null?void 0:a.session;if(u!=null&&u.monsters){for(const s of Object.values(u.monsters))if(s.offense)for(const c of Object.values(s.offense))for(const[f,l]of Object.entries(c))f==="None"||f==="Unknown"||(i[f]=(i[f]||0)+(l.damage||0))}}return Object.entries(i).map(([o,u])=>({name:o,value:u})).filter(o=>o.value>0).sort((o,u)=>u.value-o.value)},[e]);return E.jsxs("div",{className:"combat-tab",children:[E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Kills per Hour"}),E.jsx(Ti,{width:"100%",height:Math.max(200,t.length*28),children:E.jsxs(Df,{data:t,layout:"vertical",margin:{left:10,right:20,top:5,bottom:5},children:[E.jsx(_a,{strokeDasharray:"3 3",stroke:"#333"}),E.jsx(Wr,{type:"number",stroke:"#888",fontSize:11}),E.jsx(Kr,{type:"category",dataKey:"name",width:130,stroke:"#888",fontSize:11}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:i=>[i.toLocaleString(),"Kills/hr"],labelFormatter:(i,a)=>{var o,u;return((u=(o=a==null?void 0:a[0])==null?void 0:o.payload)==null?void 0:u.fullName)||i}}),E.jsx(Ot,{dataKey:"killsPerHour",fill:"#44cc44",radius:[0,3,3,0]})]})})]}),r.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Total Damage (Session)"}),E.jsx(Ti,{width:"100%",height:Math.max(200,r.length*28),children:E.jsxs(Df,{data:r,layout:"vertical",margin:{left:10,right:20,top:5,bottom:5},children:[E.jsx(_a,{strokeDasharray:"3 3",stroke:"#333"}),E.jsx(Wr,{type:"number",stroke:"#888",fontSize:11}),E.jsx(Kr,{type:"category",dataKey:"name",width:130,stroke:"#888",fontSize:11}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:i=>[i.toLocaleString(),"Damage"],labelFormatter:(i,a)=>{var o,u;return((u=(o=a==null?void 0:a[0])==null?void 0:o.payload)==null?void 0:u.fullName)||i}}),E.jsx(Ot,{dataKey:"damage",fill:"#ff6644",radius:[0,3,3,0]})]})})]}),n.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Damage by Element (All Characters)"}),E.jsx(Ti,{width:"100%",height:300,children:E.jsxs(T2,{children:[E.jsx(Pt,{data:n,dataKey:"value",nameKey:"name",cx:"50%",cy:"50%",outerRadius:100,label:({name:i,percent:a})=>`${i} ${(a*100).toFixed(0)}%`,labelLine:!0,fontSize:12,children:n.map(i=>E.jsx(Ba,{fill:j2[i.name]||"#888"},i.name))}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:i=>i.toLocaleString()}),E.jsx(Zt,{wrapperStyle:{fontSize:12,color:"#aaa"}})]})})]})]})},M2=({characters:e,totalRares:t,totalKills:r,recentRares:n})=>{const i=N.useMemo(()=>Array.from(e.values()).filter(o=>o.telemetry&&(o.telemetry.total_rares??0)>0).map(o=>({name:o.name.length>18?o.name.slice(0,16)+"..":o.name,fullName:o.name,rares:o.telemetry.total_rares??0})).sort((o,u)=>u.rares-o.rares),[e]),a=t>0?Math.round(r/t):0;return E.jsxs("div",{className:"rares-tab",children:[E.jsxs("div",{className:"rares-summary",children:[E.jsxs("div",{className:"rare-stat-card",children:[E.jsx("span",{className:"rare-stat-value",children:t}),E.jsx("span",{className:"rare-stat-label",children:"Total Rares Found"})]}),E.jsxs("div",{className:"rare-stat-card",children:[E.jsx("span",{className:"rare-stat-value",children:r.toLocaleString()}),E.jsx("span",{className:"rare-stat-label",children:"Total Kills"})]}),E.jsxs("div",{className:"rare-stat-card",children:[E.jsx("span",{className:"rare-stat-value",children:a>0?`1 in ${a.toLocaleString()}`:"--"}),E.jsx("span",{className:"rare-stat-label",children:"Drop Rate"})]})]}),n.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Recent Rare Drops (This Session)"}),E.jsx("div",{className:"rare-timeline",children:n.map((o,u)=>E.jsxs("div",{className:"rare-event",children:[E.jsx("span",{className:"rare-time",children:new Date(o.timestamp).toLocaleTimeString()}),E.jsx("span",{className:"rare-char",children:o.character_name}),E.jsx("span",{className:"rare-name",children:o.name})]},u))})]}),i.length>0&&E.jsxs("div",{className:"chart-section",children:[E.jsx("h3",{className:"chart-title",children:"Rares per Character (Lifetime)"}),E.jsx(Ti,{width:"100%",height:Math.max(200,i.length*28),children:E.jsxs(Df,{data:i,layout:"vertical",margin:{left:10,right:20,top:5,bottom:5},children:[E.jsx(_a,{strokeDasharray:"3 3",stroke:"#333"}),E.jsx(Wr,{type:"number",stroke:"#888",fontSize:11}),E.jsx(Kr,{type:"category",dataKey:"name",width:130,stroke:"#888",fontSize:11}),E.jsx(Ue,{contentStyle:{background:"#1a1a1a",border:"1px solid #444",fontSize:12},formatter:o=>[o,"Rares"],labelFormatter:(o,u)=>{var s,c;return((c=(s=u==null?void 0:u[0])==null?void 0:s.payload)==null?void 0:c.fullName)||o}}),E.jsx(Ot,{dataKey:"rares",fill:"#ffcc00",radius:[0,3,3,0]})]})})]})]})},pr={west:-102.1,east:102.1,north:102.1,south:-102.1},Ta=800;function $2(e,t){const r=(e-pr.west)/(pr.east-pr.west)*Ta,n=(pr.north-t)/(pr.north-pr.south)*Ta;return{x:r,y:n}}const C2=({characters:e})=>{const t=N.useRef(null),[r,n]=N.useState(null),i=N.useMemo(()=>Array.from(e.values()).filter(o=>o.telemetry&&o.telemetry.ew!==void 0).map(o=>{const u=o.telemetry,{x:s,y:c}=$2(u.ew,u.ns),f=(u.vt_state||"").toLowerCase()==="combat"||(u.vt_state||"").toLowerCase()==="hunt";return{name:o.name,x:s,y:c,isHunting:f,ns:u.ns,ew:u.ew}}),[e]),a=N.useCallback(o=>n(o),[]);return E.jsxs("div",{className:"map-tab",children:[E.jsxs("div",{className:"map-container",ref:t,children:[E.jsx("img",{src:"/dereth_highres.png",alt:"Dereth Map",className:"map-image",draggable:!1}),E.jsx("svg",{className:"map-overlay",viewBox:`0 0 ${Ta} ${Ta}`,children:i.map(o=>{var u,s;return E.jsxs("g",{children:[E.jsx("circle",{cx:o.x,cy:o.y,r:r===o.name?6:4,fill:o.isHunting?"#44cc44":"#ffaa00",stroke:"#000",strokeWidth:1,opacity:.9,onMouseEnter:()=>a(o.name),onMouseLeave:()=>a(null),style:{cursor:"pointer"}}),r===o.name&&E.jsxs("text",{x:o.x+8,y:o.y+4,fill:"#fff",fontSize:11,stroke:"#000",strokeWidth:.3,paintOrder:"stroke",children:[o.name," (",(u=o.ns)==null?void 0:u.toFixed(1),"N, ",(s=o.ew)==null?void 0:s.toFixed(1),"E)"]})]},o.name)})})]}),E.jsxs("div",{className:"map-legend",children:[E.jsxs("span",{children:[E.jsx("span",{className:"legend-dot hunting"})," Hunting/Combat"]}),E.jsxs("span",{children:[E.jsx("span",{className:"legend-dot other"})," Other state"]}),E.jsxs("span",{className:"map-count",children:[i.length," characters on map"]})]})]})},I2=()=>{const[e,t]=N.useState(""),[r,n]=N.useState([]),[i,a]=N.useState(0),[o,u]=N.useState(!1),s=N.useRef(0),c=N.useCallback(async l=>{if(l.length<2){n([]),a(0);return}u(!0);try{const h=await eO(`/search/items?q=${encodeURIComponent(l)}&limit=100`);n(h.results??[]),a(h.total??0)}catch{n([])}u(!1)},[]),f=N.useCallback(l=>{const h=l.target.value;t(h),clearTimeout(s.current),s.current=window.setTimeout(()=>c(h),400)},[c]);return E.jsxs("div",{className:"inventory-tab",children:[E.jsxs("div",{className:"search-bar",children:[E.jsx("input",{type:"text",value:e,onChange:f,placeholder:"Search items across all characters...",className:"search-input"}),o&&E.jsx("span",{className:"search-spinner",children:"Searching..."})]}),i>0&&E.jsxs("div",{className:"search-count",children:[i.toLocaleString()," results"]}),E.jsxs("div",{className:"search-results",children:[r.length===0&&e.length>=2&&!o&&E.jsx("div",{className:"search-empty",children:"No items found"}),E.jsxs("table",{className:"results-table",children:[E.jsx("thead",{children:E.jsxs("tr",{children:[E.jsx("th",{children:"Character"}),E.jsx("th",{children:"Item"}),E.jsx("th",{children:"Type"}),E.jsx("th",{children:"Material"}),E.jsx("th",{children:"Set"}),E.jsx("th",{children:"Work"})]})}),E.jsx("tbody",{children:r.map((l,h)=>E.jsxs("tr",{children:[E.jsx("td",{children:l.character_name}),E.jsx("td",{className:"item-name",children:l.item_name}),E.jsx("td",{children:l.type||""}),E.jsx("td",{children:l.material||""}),E.jsx("td",{children:l.set_name||""}),E.jsx("td",{children:l.workmanship||""})]},h))})]})]})]})};function R2({data:e,onViewToggle:t}){const r=[{id:"combat",label:"Combat",content:E.jsx(E2,{characters:e.characters})},{id:"rares",label:"Rares",content:E.jsx(M2,{characters:e.characters,totalRares:e.totalRares,totalKills:e.totalKills,recentRares:e.recentRares})},{id:"map",label:"Map",content:E.jsx(C2,{characters:e.characters})},{id:"inventory",label:"Inventory",content:E.jsx(I2,{})}];return E.jsxs(tO,{children:[E.jsx("div",{style:{display:"flex",justifyContent:"flex-start",marginBottom:8},children:E.jsx("button",{onClick:t,className:"tab-btn",children:"Map View"})}),E.jsx(rO,{activeChars:e.characters.size,totalKills:e.totalKills,totalRares:e.totalRares,serverHealth:e.serverHealth}),E.jsx(iO,{characters:e.characters}),E.jsx(aO,{tabs:r})]})}export{R2 as default}; diff --git a/static/v2/assets/InventoryWindow-DLq3agcE.js b/static/v2/assets/InventoryWindow-DLq3agcE.js new file mode 100644 index 00000000..68734bad --- /dev/null +++ b/static/v2/assets/InventoryWindow-DLq3agcE.js @@ -0,0 +1 @@ +import{r as g,a as F,j as n,D as P}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";function X(e){var l,d;if(!e)return e;const t=c=>c!=null&&c!==-1&&c!==-1?c:void 0,s=e.IntValues||{};return{item_id:e.item_id??e.Id??0,name:e.name??e.Name??((l=e.StringValues)==null?void 0:l["1"])??"Unknown",icon:e.icon??e.Icon??0,object_class:e.object_class??e.ObjectClass??0,current_wielded_location:e.current_wielded_location??t(e.CurrentWieldedLocation)??t(Number(s[10]))??0,container_id:e.container_id??e.ContainerId??0,items_capacity:e.items_capacity??t(e.ItemsCapacity)??t(Number(s[6]))??((d=e.enhanced_properties)==null?void 0:d.ItemSlots_Decal)??void 0,value:e.value??t(e.Value)??t(Number(s[19]))??0,burden:e.burden??t(e.Burden)??t(Number(s[5]))??0,armor_level:e.armor_level??t(e.ArmorLevel),max_damage:e.max_damage??t(e.MaxDamage),material:e.material??e.material_name??e.Material??void 0,item_set:e.item_set??e.ItemSet??void 0,imbue:e.imbue??e.Imbue??void 0,tinks:e.tinks??t(e.Tinks),workmanship:e.workmanship??t(e.Workmanship),equip_skill:e.equip_skill??e.equip_skill_name??e.EquipSkill??void 0,wield_level:e.wield_level??t(e.WieldLevel),skill_level:e.skill_level??t(e.SkillLevel),lore_requirement:e.lore_requirement??t(e.LoreRequirement),attack_bonus:e.attack_bonus??t(e.AttackBonus),melee_defense_bonus:e.melee_defense_bonus??t(e.MeleeDefenseBonus),magic_defense_bonus:e.magic_defense_bonus??t(e.MagicDBonus),damage_bonus:e.damage_bonus??t(e.DamageBonus),damage_rating:e.damage_rating??t(e.DamRating),crit_rating:e.crit_rating??t(e.CritRating),heal_boost_rating:e.heal_boost_rating??t(e.HealBoostRating),current_mana:e.current_mana??t(Number(s[218103815]))??void 0,max_mana:e.max_mana??t(Number(s[218103814]))??void 0,spellcraft:e.spellcraft??void 0,damage_range:e.damage_range??void 0,damage_type:e.damage_type??void 0,speed_text:e.speed_text??void 0,mana_display:e.mana_display??void 0,spells:e.spells??void 0,icon_overlay_id:e.icon_overlay_id??t(Number(s[218103849]))??void 0,icon_underlay_id:e.icon_underlay_id??t(Number(s[218103850]))??void 0,_raw:e}}function E(e){return!e||e<=0?"06000133":(e+100663296).toString(16).toUpperCase().padStart(8,"0")}const I={32768:{name:"Neck",row:1,col:1},1:{name:"Head",row:1,col:3},268435456:{name:"Sigil",row:1,col:5},536870912:{name:"Sigil",row:1,col:6},1073741824:{name:"Sigil",row:1,col:7},67108864:{name:"Trinket",row:2,col:1},2048:{name:"U.Arm",row:2,col:2},512:{name:"Chest",row:2,col:3},134217728:{name:"Cloak",row:2,col:7},65536:{name:"Brace L",row:3,col:1},4096:{name:"L.Arm",row:3,col:2},1024:{name:"Abdomen",row:3,col:3},8192:{name:"U.Leg",row:3,col:4},131072:{name:"Brace R",row:3,col:5},2:{name:"Shirt",row:3,col:7},262144:{name:"Ring L",row:4,col:1},32:{name:"Hands",row:4,col:2},16384:{name:"L.Leg",row:4,col:4},524288:{name:"Ring R",row:4,col:5},4:{name:"Pants",row:4,col:7},256:{name:"Feet",row:5,col:4},2097152:{name:"Shield",row:6,col:1},1048576:{name:"Melee",row:6,col:3},4194304:{name:"Missile",row:6,col:3},16777216:{name:"Held",row:6,col:3},33554432:{name:"2H",row:6,col:3},8388608:{name:"Ammo",row:6,col:7}},M={},G=[32768,67108864,65536,131072,262144,524288],J=[1,512,2048,1024,4096,8192,16384,32,256],Z=[2,4,134217728,268435456,536870912,1073741824],ee=[2097152,1048576,4194304,16777216,33554432,8388608];(()=>{const e=new Set;Object.entries(I).forEach(([t,s])=>{const l=`${s.row}-${s.col}`,d=parseInt(t);e.has(l)||(e.add(l),G.includes(d)?M[l]="#3a2555":J.includes(d)?M[l]="#1e2e55":Z.includes(d)?M[l]="#1e3e3e":ee.includes(d)?M[l]="#142040":M[l]="#2a2a2a")})})();const $="#af7a30";function z({item:e,size:t=36}){const s={position:"absolute",top:0,left:0,width:t,height:t,border:"none",background:"transparent",imageRendering:"pixelated"},l=e.icon_underlay_id&&e.icon_underlay_id>100?`/icons/${E(e.icon_underlay_id)}.png`:null,d=e.icon_overlay_id&&e.icon_overlay_id>100?`/icons/${E(e.icon_overlay_id)}.png`:null;return n.jsxs("div",{style:{width:t,height:t,position:"relative"},children:[l&&n.jsx("img",{src:l,alt:"",style:{...s,zIndex:1},onError:c=>{c.target.style.display="none"}}),n.jsx("img",{src:`/icons/${E(e.icon)}.png`,alt:e.name,style:{...s,zIndex:2},onError:c=>{c.target.src="/icons/06000133.png"}}),d&&n.jsx("img",{src:d,alt:"",style:{...s,zIndex:3},onError:c=>{c.target.style.display="none"}})]})}function ne({item:e,x:t,y:s}){var b,f;const l=p=>p!=null&&p!==-1&&p!==-1,d=p=>p.toLocaleString(),c=p=>`${((p-1)*100).toFixed(1)}%`;return n.jsxs("div",{style:{position:"fixed",left:t+14,top:s+14,background:"rgba(0,0,0,0.96)",border:"1px solid #555",borderRadius:4,padding:"8px 12px",zIndex:99999,minWidth:200,maxWidth:340,fontSize:13,color:"#ddd",pointerEvents:"none",lineHeight:1.6,fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif'},children:[n.jsx("div",{style:{color:"#ffcc00",fontWeight:"bold",fontSize:14,marginBottom:4},children:e.name}),n.jsxs("div",{style:{color:"#aaa"},children:["Value: ",d(e.value)," · Burden: ",e.burden]}),e.workmanship&&n.jsxs("div",{style:{color:"#aaa"},children:["Workmanship: ",e.workmanship]}),e.material&&n.jsxs("div",{style:{color:"#88ff88"},children:["Material: ",e.material]}),l(e.armor_level)&&n.jsxs("div",{style:{color:"#88ff88"},children:["Armor Level: ",e.armor_level]}),l(e.max_damage)&&n.jsxs("div",{style:{color:"#88ff88"},children:["Max Damage: ",e.max_damage]}),e.damage_range&&n.jsxs("div",{style:{color:"#88ff88"},children:["Damage: ",e.damage_range,e.damage_type?`, ${e.damage_type}`:""]}),l(e.attack_bonus)&&e.attack_bonus!==1&&n.jsxs("div",{style:{color:"#88ff88"},children:["Attack: +",c(e.attack_bonus)]}),l(e.melee_defense_bonus)&&e.melee_defense_bonus!==1&&n.jsxs("div",{style:{color:"#88ff88"},children:["Melee Def: +",c(e.melee_defense_bonus)]}),l(e.magic_defense_bonus)&&e.magic_defense_bonus!==1&&n.jsxs("div",{style:{color:"#88ff88"},children:["Magic Def: +",c(e.magic_defense_bonus)]}),e.equip_skill&&n.jsxs("div",{style:{color:"#ddd"},children:["Skill: ",e.equip_skill]}),l(e.wield_level)&&n.jsxs("div",{style:{color:"#ffaa00"},children:["Wield Level: ",e.wield_level]}),l(e.lore_requirement)&&n.jsxs("div",{style:{color:"#ffaa00"},children:["Lore: ",e.lore_requirement]}),e.imbue&&n.jsxs("div",{style:{color:"#88ff88"},children:["Imbue: ",e.imbue]}),e.item_set&&n.jsxs("div",{style:{color:"#88ff88"},children:["Set: ",e.item_set]}),l(e.tinks)&&n.jsxs("div",{style:{color:"#88ff88"},children:["Tinks: ",e.tinks]}),l(e.damage_rating)&&n.jsxs("div",{children:["Damage Rating: ",e.damage_rating]}),l(e.crit_rating)&&n.jsxs("div",{children:["Crit Rating: ",e.crit_rating]}),l(e.heal_boost_rating)&&n.jsxs("div",{children:["Heal Boost: ",e.heal_boost_rating]}),e.spellcraft&&n.jsxs("div",{style:{color:"#dda0dd"},children:["Spellcraft: ",e.spellcraft]}),l(e.current_mana)&&l(e.max_mana)&&n.jsxs("div",{style:{color:"#98d7ff"},children:["Mana: ",e.current_mana," / ",e.max_mana]}),((f=(b=e.spells)==null?void 0:b.spells)==null?void 0:f.length)>0&&n.jsxs("div",{style:{color:"#4a90e2",marginTop:4,fontSize:12},children:["Spells: ",e.spells.spells.map(p=>p.name).join(", ")]})]})}function V({iconSrc:e,isActive:t,fillPct:s,label:l,onClick:d}){const c=s>90?"#b7432c":s>70?"#d8a431":"#00ff00";return n.jsxs("div",{onClick:d,title:l,style:{display:"flex",alignItems:"flex-start",gap:2,cursor:"pointer",flexShrink:0,marginTop:3,position:"relative"},children:[t&&n.jsx("span",{style:{position:"absolute",left:-11,top:8,color:$,fontSize:10},children:"▶"}),n.jsx("div",{style:{width:30,height:30,border:t?"1px solid #00ff00":"1px solid #333",boxShadow:t?"0 0 4px #00ff00":"none",background:"#000",display:"flex",alignItems:"center",justifyContent:"center"},children:n.jsx("img",{src:e,alt:"",style:{width:26,height:26,objectFit:"contain",imageRendering:"pixelated"},onError:b=>{b.target.src="/icons/06001080.png"}})}),n.jsx("div",{style:{width:7,height:30,background:"#222",border:"1px solid #666",position:"relative",overflow:"hidden",borderRadius:2},title:`${Math.round(s)}% full`,children:n.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:`${s}%`,background:c,minHeight:s>0?2:0}})})]})}const ae=({id:e,charName:t,zIndex:s})=>{var T,O,U;const[l,d]=g.useState([]),[c,b]=g.useState(!0),[f,p]=g.useState(null),[L,D]=g.useState(null),[m,Y]=g.useState(null),[te,ie]=g.useState(null);g.useEffect(()=>{b(!0),Promise.all([F(`/inventory/${encodeURIComponent(t)}?limit=1000`).catch(()=>({items:[]})),F(`/character-stats/${encodeURIComponent(t)}`).catch(()=>null)]).then(([o,i])=>{const a=o.items??[];d(a.map(X)),Y(i)}).finally(()=>b(!1))},[t]);const h=g.useCallback((o,i)=>{D(o&&i?{item:o,x:i.clientX,y:i.clientY}:null)},[]),K=g.useMemo(()=>{const o=new Set,i=[];return Object.entries(I).forEach(([a,u])=>{const _=`${u.row}-${u.col}`;o.has(_)||(o.add(_),i.push({key:_,...u,mask:parseInt(a)}))}),i},[]),{equippedMap:A,containers:w,packItems:B}=g.useMemo(()=>{const o=new Map,i=[],a=new Set,u=new Map;l.forEach(r=>{r.object_class===10&&(i.push(r),a.add(r.item_id))}),i.sort((r,v)=>(r.item_id>>>0)-(v.item_id>>>0));let _=null;return l.forEach(r=>{r.current_wielded_location>0&&r.container_id&&!a.has(r.container_id)&&(_=r.container_id)}),l.forEach(r=>{if(a.has(r.item_id))return;const v=r.current_wielded_location;if(v>0)if(r.object_class===2)Object.entries(I).forEach(([S,x])=>{if((v&parseInt(S))===parseInt(S)){const y=`${x.row}-${x.col}`;o.has(y)||o.set(y,r)}});else{let S=!1;if(I[v]){const x=I[v],y=`${x.row}-${x.col}`;o.has(y)||(o.set(y,r),S=!0)}if(!S){for(const[x,y]of Object.entries(I))if((v&parseInt(x))===parseInt(x)){const N=`${y.row}-${y.col}`;if(!o.has(N)){o.set(N,r),S=!0;break}}}}else{let k=r.container_id||0;_&&k===_&&(k=0),u.has(k)||u.set(k,[]),u.get(k).push(r)}}),{equippedMap:o,containers:i,packItems:u}},[l]);let j=B.get(0)??[],q=0;if(j.length===0){let o=0;for(const[i,a]of B.entries())!w.some(u=>u.item_id===i)&&a.length>o&&(o=a.length,q=i);j=B.get(q)??[]}const W=f!==null?B.get(f)??[]:j,H=(m==null?void 0:m.burden_units)??((T=m==null?void 0:m.stats_data)==null?void 0:T.burden_units)??0,C=(m==null?void 0:m.encumbrance_capacity)??((O=m==null?void 0:m.stats_data)==null?void 0:O.encumbrance_capacity)??0,R=C>0?Math.min(200,H/C*100):0,Q=R>150?"#b7432c":R>100?"#d8a431":"#2e8b57";return c?n.jsx(P,{id:e,title:`Inventory: ${t}`,zIndex:s,width:572,height:720,children:n.jsx("div",{style:{padding:20,color:"#666",fontStyle:"italic"},children:"Loading inventory..."})}):n.jsxs(P,{id:e,title:`Inventory: ${t}`,zIndex:s,width:572,height:720,children:[n.jsxs("div",{style:{display:"flex",flex:1,overflow:"hidden",background:"rgba(14,14,14,0.96)",fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif',fontSize:13},children:[n.jsxs("div",{style:{width:316,display:"flex",flexDirection:"column",overflow:"hidden"},children:[n.jsx("div",{style:{position:"relative",height:270,minHeight:270,background:"#0a0a0a",borderBottom:`1px solid ${$}`},children:K.map(o=>{const i=A.get(o.key),a=M[o.key]??"#2a2a2a";return n.jsx("div",{style:{position:"absolute",left:(o.col-1)*44+4,top:(o.row-1)*44+4,width:36,height:36,background:i?"#5a5a62":a,border:i?"2px solid #00ffff":"2px outset #6a6a72",boxShadow:i?"0 0 5px #00ffff, inset 0 0 5px rgba(0,255,255,0.2)":"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:i?"pointer":"default"},onMouseEnter:u=>i&&h(i,u),onMouseMove:u=>i&&h(i,u),onMouseLeave:()=>h(null),children:i?n.jsx(z,{item:i,size:32}):n.jsx("img",{src:"/icons/06000133.png",alt:"",style:{width:28,height:28,opacity:.15,filter:"grayscale(100%)",imageRendering:"pixelated"}})},o.key)})}),n.jsxs("div",{style:{padding:"3px 6px",fontSize:11,color:"#ccc",background:"#111",borderBottom:`1px solid ${$}`},children:["Contents of ",f!==null?((U=w.find(o=>o.item_id===f))==null?void 0:U.name)??"Pack":"Backpack"]}),n.jsxs("div",{style:{flex:1,overflowY:"auto",display:"grid",gridTemplateColumns:"repeat(6, 36px)",gridAutoRows:36,gap:2,padding:4,alignContent:"start"},children:[W.map((o,i)=>n.jsx("div",{style:{width:36,height:36,background:"linear-gradient(135deg, #3d007a 0%, #1a0033 100%)",border:"1px solid #4a148c",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer"},onMouseEnter:a=>h(o,a),onMouseMove:a=>h(o,a),onMouseLeave:()=>h(null),children:n.jsx(z,{item:o,size:32})},o.item_id??i)),Array.from({length:Math.max(0,24-W.length)}).map((o,i)=>n.jsx("div",{style:{width:36,height:36,background:"#0a0a0a",border:"1px solid #1a1a1a"}},`e${i}`))]})]}),n.jsxs("div",{style:{width:42,display:"flex",flexDirection:"column",alignItems:"center",padding:"4px 2px",borderLeft:`1px solid ${$}`,borderRight:`1px solid ${$}`},children:[n.jsx("div",{style:{textAlign:"center",fontSize:8,color:"#ccc",marginBottom:2},children:C>0?`${Math.floor(R)}%`:"Burden"}),n.jsx("div",{style:{width:14,height:40,background:"#111",border:"1px solid #555",position:"relative",overflow:"hidden",marginBottom:6,flexShrink:0},title:C>0?`${H.toLocaleString()} / ${C.toLocaleString()}`:`Burden: ${l.reduce((o,i)=>o+(i.burden??0),0).toLocaleString()}`,children:n.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:`${R/2}%`,background:Q,transition:"height 0.3s"}})}),n.jsx(V,{iconSrc:"/icons/0600127E.png",isActive:f===null,fillPct:j.length>0?Math.min(100,j.length/102*100):0,label:`Backpack (${j.length}/102)`,onClick:()=>p(null)}),w.map(o=>{const i=o.item_id,a=l.filter(r=>r.container_id===i&&r.item_id!==i).length,u=o.items_capacity||24,_=u>0?Math.min(100,a/u*100):0;return n.jsx(V,{iconSrc:`/icons/${E(o.icon)}.png`,isActive:f===i,fillPct:_,label:`${o.name} (${a}/${u})`,onClick:()=>p(i)},i)})]}),n.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:160},children:[n.jsx("div",{style:{padding:"4px 8px",fontSize:"0.72rem",fontWeight:600,color:"#aaa",background:"#111",borderBottom:`1px solid ${$}`},children:"Mana"}),n.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"2px 0"},children:[Array.from(A.values()).filter(o=>o.current_mana>0||o.max_mana>0).sort((o,i)=>(o.current_mana??999999)-(i.current_mana??999999)).map((o,i)=>n.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"2px 4px",borderBottom:"1px solid #1a1a1a",cursor:"pointer"},onMouseEnter:a=>h(o,a),onMouseMove:a=>h(o,a),onMouseLeave:()=>h(null),children:[n.jsx("div",{style:{width:20,height:20,flexShrink:0},children:n.jsx(z,{item:o,size:20})}),n.jsx("div",{style:{width:8,height:8,borderRadius:"50%",background:o.current_mana>0?"#4c4":"#c44",flexShrink:0}}),n.jsx("div",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"0.68rem",color:"#ccc"},children:o.name}),n.jsxs("div",{style:{fontSize:"0.65rem",color:"#88bbff",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},children:[o.current_mana??0,"/",o.max_mana??0]}),n.jsx("div",{style:{fontSize:"0.63rem",color:"#9c9",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums",minWidth:42,textAlign:"right"},children:o.max_mana>0?oe(o.current_mana??0,o.max_mana??0):""})]},i)),Array.from(A.values()).filter(o=>o.current_mana>0||o.max_mana>0).length===0&&n.jsx("div",{style:{padding:12,color:"#555",textAlign:"center",fontSize:"0.7rem"},children:"No mana items equipped"})]})]})]}),L&&n.jsx(ne,{item:L.item,x:L.x,y:L.y})]})};function oe(e,t){if(t<=0||e<=0)return"0h00m";const s=e*20,l=Math.floor(s/3600),d=Math.floor(s%3600/60);return`~${l}h${String(d).padStart(2,"0")}m`}export{ae as InventoryWindow}; diff --git a/static/v2/assets/IssuesWindow-CSupRDWU.js b/static/v2/assets/IssuesWindow-CSupRDWU.js new file mode 100644 index 00000000..0f905c02 --- /dev/null +++ b/static/v2/assets/IssuesWindow-CSupRDWU.js @@ -0,0 +1 @@ +import{r as n,a as W,j as e,D as L}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const O={plugin:{label:"Plugin",color:"#8844cc"},overlord:{label:"Overlord",color:"#4488cc"},nav:{label:"Nav",color:"#44aa44"},macro:{label:"Macro",color:"#cc8844"},other:{label:"Other",color:"#888888"}},i={padding:"3px 6px",fontSize:"0.8rem",border:"1px solid #555",background:"#2a2a2a",color:"#ddd",borderRadius:0},N={...i,fontSize:"0.75rem"},g={padding:"4px 12px",background:"#4a80c0",color:"#fff",border:"1px solid #336699",cursor:"pointer",fontSize:"0.75rem"},a={padding:"3px 8px",background:"#444",color:"#ccc",border:"1px solid #555",cursor:"pointer",fontSize:"0.7rem"},F=({id:P,zIndex:A})=>{const[h,R]=n.useState([]),[c,m]=n.useState(""),[y,u]=n.useState(""),[f,$]=n.useState("plugin"),[v,d]=n.useState(null),[p,j]=n.useState(""),[b,S]=n.useState(""),[C,z]=n.useState(""),[T,k]=n.useState({}),x=n.useCallback(async()=>{try{const t=await W("/issues");R((t.issues??[]).sort((r,s)=>(r.resolved?1:0)-(s.resolved?1:0)))}catch{}},[]);n.useEffect(()=>{x()},[x]);const l=async(t,r)=>{await fetch(`/api${t}`,{...r,credentials:"include",headers:{"Content-Type":"application/json",...r.headers}}),x()},E=async()=>{c.trim()&&(await l("/issues",{method:"POST",body:JSON.stringify({title:c.trim(),description:y.trim(),category:f})}),m(""),u(""))},B=t=>{if(v===t.id){d(null);return}d(t.id),j(t.title),S(t.description||""),z(t.category||"other")},I=async t=>{p.trim()&&(await l(`/issues/${t}`,{method:"PATCH",body:JSON.stringify({title:p.trim(),description:b.trim(),category:C})}),d(null))},w=async t=>{const r=(T[t]||"").trim();r&&(await l(`/issues/${t}/comments`,{method:"POST",body:JSON.stringify({text:r})}),k(s=>({...s,[t]:""})))};return e.jsxs(L,{id:P,title:"Issues Board",zIndex:A,width:540,height:520,children:[e.jsxs("div",{style:{flex:1,overflowY:"auto",padding:6,fontSize:"0.8rem"},children:[h.length===0&&e.jsx("div",{style:{padding:10,color:"#888",textAlign:"center"},children:"No open issues"}),h.map(t=>{const r=O[t.category]||O.other,s=t.created?new Date(t.created).toLocaleDateString("sv-SE"):"",D=t.comments||[];return e.jsxs("div",{style:{padding:"6px 8px",marginBottom:4,background:"#1f1f1f",borderRadius:3,border:"1px solid #333",opacity:t.resolved?.55:1},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[e.jsx("span",{style:{fontSize:"0.65rem",padding:"1px 6px",borderRadius:3,background:r.color,color:"#fff",fontWeight:600},children:r.label}),e.jsx("strong",{style:{fontSize:"0.8rem",flex:1},children:t.title}),e.jsxs("span",{style:{fontSize:"0.65rem",color:"#888"},children:["by ",t.author||"User"]}),e.jsx("span",{style:{color:"#666",fontSize:"0.65rem"},children:s})]}),t.description&&e.jsx("div",{style:{color:"#999",marginTop:3,fontSize:"0.75rem"},children:t.description}),e.jsxs("div",{style:{display:"flex",gap:4,marginTop:4},children:[t.resolved?e.jsxs(e.Fragment,{children:[e.jsx("button",{style:{...a,fontSize:"0.65rem"},onClick:()=>l(`/issues/${t.id}`,{method:"PATCH",body:JSON.stringify({resolved:!1})}),children:"↻ Reopen"}),e.jsx("button",{style:{...a,fontSize:"0.65rem",color:"#c66"},onClick:()=>{confirm(`Delete issue "${t.title}"?`)&&l(`/issues/${t.id}`,{method:"DELETE"})},children:"🗑 Delete"})]}):e.jsx("button",{style:{...a,fontSize:"0.65rem",background:"rgba(68,204,68,0.15)",color:"#4c4",border:"1px solid rgba(68,204,68,0.3)"},onClick:()=>l(`/issues/${t.id}`,{method:"PATCH",body:JSON.stringify({resolved:!0})}),children:"✓ Resolve"}),e.jsx("button",{style:{...a,fontSize:"0.65rem"},onClick:()=>B(t),children:"✎ Edit"})]}),v===t.id&&e.jsxs("div",{style:{marginTop:4,padding:4,background:"#222",borderRadius:3},children:[e.jsxs("div",{style:{display:"flex",gap:4,marginBottom:4},children:[e.jsx("input",{value:p,onChange:o=>j(o.target.value),style:{...i,flex:1}}),e.jsxs("select",{value:C,onChange:o=>z(o.target.value),style:N,children:[e.jsx("option",{value:"plugin",children:"Plugin"}),e.jsx("option",{value:"overlord",children:"Overlord"}),e.jsx("option",{value:"nav",children:"Nav"}),e.jsx("option",{value:"macro",children:"Macro"}),e.jsx("option",{value:"other",children:"Other"})]})]}),e.jsxs("div",{style:{display:"flex",gap:4},children:[e.jsx("textarea",{value:b,onChange:o=>S(o.target.value),rows:2,style:{...i,flex:1,fontSize:"0.75rem",resize:"vertical"}}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[e.jsx("button",{style:{...g,fontSize:"0.7rem",padding:"3px 8px"},onClick:()=>I(t.id),children:"Save"}),e.jsx("button",{style:{...a},onClick:()=>d(null),children:"Cancel"})]})]})]}),e.jsxs("div",{style:{marginTop:4,paddingTop:4,borderTop:"1px solid #2a2a2a"},children:[D.length===0?e.jsx("div",{style:{color:"#555",fontSize:"0.7rem",padding:"2px 0"},children:"No comments yet"}):D.map(o=>e.jsxs("div",{style:{marginBottom:3,fontSize:"0.72rem"},children:[e.jsx("span",{style:{color:"#8ac",fontWeight:500},children:o.author||"Anonymous"}),e.jsx("span",{style:{color:"#555",marginLeft:6,fontSize:"0.6rem"},children:o.created?new Date(o.created).toLocaleDateString("sv-SE"):""}),e.jsx("div",{style:{color:"#bbb",marginTop:1},children:o.text})]},o.id)),e.jsxs("div",{style:{display:"flex",gap:4,marginTop:3},children:[e.jsx("input",{value:T[t.id]||"",onChange:o=>k(J=>({...J,[t.id]:o.target.value})),placeholder:"Add a comment...",style:{...i,flex:1,fontSize:"0.75rem"},onKeyDown:o=>{o.key==="Enter"&&w(t.id)}}),e.jsx("button",{style:{...g,fontSize:"0.7rem",padding:"3px 8px"},onClick:()=>w(t.id),children:"Post"})]})]})]},t.id)})]}),e.jsxs("div",{style:{padding:6,borderTop:"1px solid #333"},children:[e.jsxs("div",{style:{display:"flex",gap:4,marginBottom:4},children:[e.jsx("input",{value:c,onChange:t=>m(t.target.value),placeholder:"Issue title...",style:{...i,flex:1},onKeyDown:t=>{t.key==="Enter"&&E()}}),e.jsxs("select",{value:f,onChange:t=>$(t.target.value),style:N,children:[e.jsx("option",{value:"plugin",children:"Plugin"}),e.jsx("option",{value:"overlord",children:"Overlord"}),e.jsx("option",{value:"nav",children:"Nav"}),e.jsx("option",{value:"macro",children:"Macro"}),e.jsx("option",{value:"other",children:"Other"})]})]}),e.jsxs("div",{style:{display:"flex",gap:4},children:[e.jsx("textarea",{value:y,onChange:t=>u(t.target.value),placeholder:"Description (optional)...",rows:2,style:{...i,flex:1,fontSize:"0.75rem",resize:"vertical"}}),e.jsx("button",{style:{...g,alignSelf:"flex-end"},onClick:E,children:"Add"})]})]})]})};export{F as IssuesWindow}; diff --git a/static/v2/assets/RadarWindow-T2z8FzRN.js b/static/v2/assets/RadarWindow-T2z8FzRN.js new file mode 100644 index 00000000..c5144804 --- /dev/null +++ b/static/v2/assets/RadarWindow-T2z8FzRN.js @@ -0,0 +1 @@ +import{r as x,j as c,D as ne}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const q=300,H=.5,se={walls:{r:0,g:0,b:255},innerWalls:{r:127,g:127,b:255},rampedWalls:{r:77,g:255,b:255},floors:{r:0,g:127,b:255},stairs:{r:0,g:63,b:255}},le={walls:{r:140,g:140,b:180},innerWalls:{r:100,g:100,b:140},rampedWalls:{r:120,g:160,b:120},floors:{r:60,g:80,b:60},stairs:{r:180,g:160,b:80}};function oe(d){const g=document.createElement("canvas");g.width=10,g.height=10;const w=g.getContext("2d");w.drawImage(d,0,0,10,10);const a=w.getImageData(0,0,10,10),t=a.data;for(let p=0;p240&&R>240&&k>240){t[p+3]=0;continue}let E=!1;for(const[L,I]of Object.entries(se))if(Math.abs(_-I.r)<15&&Math.abs(R-I.g)<15&&Math.abs(k-I.b)<15){const W=le[L];t[p]=W.r,t[p+1]=W.g,t[p+2]=W.b,E=!0;break}!E&&_<15&&R<15&&k<15&&(t[p+3]=100)}return w.putImageData(a,0,0),g}function ie(d){return d===1?Math.PI:d<-.7&&d>-.8?Math.PI/2:d>.7&&d<.8?-Math.PI/2:0}let A=null;function ce(){A||(A={},fetch("/dungeon_tiles.json").then(d=>d.json()).then(d=>{Object.entries(d).forEach(([g,w])=>{const a=new Image;a.onload=()=>{A[g]=oe(a)},a.src=w})}).catch(()=>{}))}const K={Monster:"#ff4444",Player:"#4488ff",NPC:"#44cc44",Vendor:"#44cc44",Portal:"#aa44ff",Corpse:"#ff8800",Container:"#cccc44",Door:"#888888"};function re(d){const g=(d%360+360)%360;return["N","NE","E","SE","S","SW","W","NW"][Math.round(g/45)%8]}const fe=({id:d,charName:g,zIndex:w,socket:a,radarData:t})=>{const p=x.useRef(null),_=x.useRef(H),[R,k]=x.useState(H),[E,L]=x.useState(null),I=x.useRef(null),W=x.useRef([]);x.useEffect(()=>{const n=new Image;n.src="/dereth.png",n.onload=()=>{I.current=n},ce()},[]),x.useEffect(()=>((a==null?void 0:a.readyState)===WebSocket.OPEN&&a.send(JSON.stringify({player_name:g,command:"start_radar"})),()=>{(a==null?void 0:a.readyState)===WebSocket.OPEN&&a.send(JSON.stringify({player_name:g,command:"stop_radar"}))}),[g,a]);const Q=x.useCallback(n=>{n.preventDefault();const e=n.deltaY>0?1.25:.8;_.current=Math.max(.02,Math.min(5,_.current*e)),k(_.current)},[]),D=x.useCallback(n=>{const e=p.current;if(!e)return;const o=e.getBoundingClientRect(),s=(n.clientX-o.left)*(e.width/o.width),r=(n.clientY-o.top)*(e.height/o.height);let M=null,u=20;W.current.forEach(f=>{if(f._px===void 0)return;const S=Math.sqrt((s-f._px)**2+(r-f._py)**2);S{var G;const n=p.current;if(!n||!t)return;const e=n.getContext("2d");if(!e)return;const o=q,s=o/2,r=o/2,M=t.objects??[],u=t.player_ew??0,f=t.player_ns??0,S=t.player_heading??0,b=t.is_dungeon??!1,V=t.player_x??0,Z=t.player_y??0,Y=_.current,z=b?o/2/(Y*240):o/2/Y,j=S*Math.PI/180;e.clearRect(0,0,o,o),e.fillStyle="#111",e.beginPath(),e.arc(s,r,s,0,Math.PI*2),e.fill(),e.save(),e.beginPath(),e.arc(s,r,s-1,0,Math.PI*2),e.clip();const B=t.landblock??null,te=t.player_raw_z??0;if(b&&B&&((G=window.__dungeonMapCache)!=null&&G[B])){const l=window.__dungeonMapCache[B],h=Math.floor((te+3)/6)*6;e.translate(s,r),e.rotate(-(S-180)*Math.PI/180);const i=10*z,O=A&&Object.keys(A).length>0;(l.z_levels||[]).slice().sort((y,m)=>(y.z===h?1:0)-(m.z===h?1:0)).forEach(y=>{const m=y.z===h;e.globalAlpha=m?.85:.12,(y.cells||[]).forEach(T=>{const P=-(T.x-V)*z,N=(T.y-Z)*z,C=O?A[String(T.env_id)]:null;C?(e.save(),e.translate(P,N),e.rotate(ie(T.rotation)),e.drawImage(C,-i/2,-i/2,i,i),e.restore()):(e.fillStyle=m?"#3a5a3a":"#1a2a1a",e.fillRect(P-i/2,N-i/2,i,i))})}),e.globalAlpha=1,e.setTransform(1,0,0,1,0,0)}else if(!b&&I.current){const l=I.current,h=l.naturalWidth/204.2,i=(u+102.1)*h,O=(102.1-f)*h;e.globalAlpha=.4,e.save(),e.translate(s,r),e.rotate(-j);const v=Y*h*2;e.drawImage(l,i-v/2,O-v/2,v,v,-s,-r,o,o),e.restore(),e.globalAlpha=1}e.restore(),e.strokeStyle="#333",e.lineWidth=1;for(let l=1;l<=4;l++)e.beginPath(),e.arc(s,r,s/4*l,0,Math.PI*2),e.stroke();e.beginPath(),e.moveTo(s,0),e.lineTo(s,o),e.moveTo(0,r),e.lineTo(o,r),e.stroke(),e.font="bold 12px monospace",e.textAlign="center",e.textBaseline="middle",[{l:"N",a:0},{l:"E",a:Math.PI/2},{l:"S",a:Math.PI},{l:"W",a:-Math.PI/2}].forEach(({l,a:h})=>{const i=h-j;e.fillStyle=l==="N"?"#cc4444":"#888",e.fillText(l,s+Math.sin(i)*(s-12),r-Math.cos(i)*(s-12))}),e.strokeStyle="#666",e.lineWidth=1,e.beginPath(),e.moveTo(s,r),e.lineTo(s,r-s*.85),e.stroke();const $=b?Math.PI-j:j,X=Math.cos($),F=Math.sin($);M.forEach(l=>{let h,i;b&&l.raw_x!==void 0?(h=-(l.raw_x-V),i=l.raw_y-Z):(h=(l.ew??0)-u,i=(l.ns??0)-f);const O=h*X-i*F,v=b?h*F+i*X:-(h*F+i*X),y=s+O*z,m=r+v*z;if(Math.sqrt((y-s)**2+(m-r)**2)>s-4)return;l._px=y,l._py=m;const P=l.object_class??l.type??"",N=K[P]??"#888",C=l.id===E,J=C?6:P==="Monster"||P==="Player"?4:3;C&&(e.strokeStyle="#fff",e.lineWidth=2,e.beginPath(),e.arc(y,m,J+3,0,Math.PI*2),e.stroke()),e.fillStyle=N,e.beginPath(),e.arc(y,m,J,0,Math.PI*2),e.fill(),(P==="Player"||P==="Portal"||C)&&(e.fillStyle=C?"#fff":N,e.font="9px monospace",e.textAlign="left",e.fillText(l.name,y+6,m+3))}),W.current=M,e.fillStyle="#ffcc00",e.beginPath(),e.arc(s,r,5,0,Math.PI*2),e.fill(),e.strokeStyle="#fff",e.lineWidth=1,e.stroke()},[t,R,E]);const U=((t==null?void 0:t.objects)??[]).map(n=>{const e=(t==null?void 0:t.player_ew)??0,o=(t==null?void 0:t.player_ns)??0,s=(t==null?void 0:t.is_dungeon)??!1,r=(t==null?void 0:t.player_x)??0,M=(t==null?void 0:t.player_y)??0;let u,f,S;s&&n.raw_x!==void 0?(u=-(n.raw_x-r),f=n.raw_y-M,S=Math.sqrt(u*u+f*f)):(u=(n.ew??0)-e,f=(n.ns??0)-o,S=Math.sqrt(u*u+f*f)*240);const b=Math.atan2(u,f)*180/Math.PI;return{...n,dist:S,dir:re(b)}}).sort((n,e)=>n.dist-e.dist),ee=Math.round(R*240);return c.jsxs(ne,{id:d,title:`Radar: ${g}`,zIndex:w,width:360,height:560,children:[c.jsxs("div",{style:{padding:"4px 8px",display:"flex",justifyContent:"space-between",fontSize:"0.75rem",color:"#888",borderBottom:"1px solid #333",background:"#1a1a1a"},children:[c.jsxs("span",{children:["Range: ~",ee,"m"]}),c.jsx("span",{style:{fontSize:"0.65rem",color:"#555"},children:"Scroll to zoom"})]}),c.jsx("canvas",{ref:p,width:q,height:q,style:{display:"block",margin:"0 auto",borderBottom:"1px solid #333",cursor:"crosshair",flexShrink:0},onWheel:Q,onClick:D}),c.jsxs("div",{style:{flex:1,overflowY:"auto",fontSize:"0.72rem",minHeight:0},children:[c.jsxs("div",{style:{display:"flex",padding:"3px 6px",borderBottom:"1px solid #333",color:"#666",fontSize:"0.65rem",fontWeight:600},children:[c.jsx("span",{style:{width:8}}),c.jsx("span",{style:{flex:1,marginLeft:6},children:"Name"}),c.jsx("span",{style:{width:55,textAlign:"left"},children:"Type"}),c.jsx("span",{style:{width:40,textAlign:"right"},children:"Dist"}),c.jsx("span",{style:{width:24,textAlign:"center"},children:"Dir"})]}),U.length===0&&c.jsx("div",{style:{padding:12,color:"#555",textAlign:"center",fontSize:"0.7rem"},children:"Waiting for radar data..."}),U.map(n=>{const e=n.object_class??n.type??"",o=K[e]??"#888",s=n.id===E;return c.jsxs("div",{onClick:()=>L(s?null:n.id),style:{display:"flex",alignItems:"center",padding:"2px 6px",borderBottom:"1px solid #1a1a1a",cursor:"pointer",color:"#ccc",background:s?"#1a2a3a":"",borderLeft:s?"2px solid #4488ff":"2px solid transparent"},children:[c.jsx("span",{style:{width:8,height:8,borderRadius:"50%",background:o,flexShrink:0}}),c.jsx("span",{style:{flex:1,marginLeft:6,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n.name}),c.jsx("span",{style:{width:55,color:"#888",fontSize:"0.65rem"},children:e}),c.jsx("span",{style:{width:40,textAlign:"right",fontVariantNumeric:"tabular-nums"},children:n.dist<1e3?`${Math.round(n.dist)}m`:`${(n.dist/1e3).toFixed(1)}km`}),c.jsx("span",{style:{width:24,textAlign:"center",color:"#666"},children:n.dir})]},n.id)})]})]})};export{fe as RadarWindow}; diff --git a/static/v2/assets/StatsWindow-BT7jJ8yH.js b/static/v2/assets/StatsWindow-BT7jJ8yH.js new file mode 100644 index 00000000..4ce1021e --- /dev/null +++ b/static/v2/assets/StatsWindow-BT7jJ8yH.js @@ -0,0 +1 @@ +import{r as o,j as t,D as d}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const c=[{title:"Kills per Hour",id:1},{title:"Memory (MB)",id:2},{title:"CPU (%)",id:3},{title:"Mem Handles",id:4}],m=[{label:"1H",value:"now-1h"},{label:"6H",value:"now-6h"},{label:"24H",value:"now-24h"},{label:"7D",value:"now-7d"}],v=({id:s,charName:a,zIndex:i})=>{const[l,r]=o.useState("now-24h"),n=e=>`/grafana/d-solo/dereth-tracker/dereth-tracker-dashboard?panelId=${e}&var-character=${encodeURIComponent(a)}&from=${l}&to=now&theme=light`;return t.jsxs(d,{id:s,title:`Stats: ${a}`,zIndex:i,width:750,height:480,children:[t.jsx("div",{className:"ml-stats-controls",children:m.map(e=>t.jsx("button",{className:`ml-stats-range-btn ${l===e.value?"active":""}`,onClick:()=>r(e.value),children:e.label},e.value))}),t.jsx("div",{className:"ml-stats-grid",children:c.map(e=>t.jsx("div",{className:"ml-stats-panel",children:t.jsx("iframe",{src:n(e.id),width:"100%",height:"100%",frameBorder:"0",title:e.title})},e.id))})]})};export{v as StatsWindow}; diff --git a/static/v2/assets/VitalSharingWindow-CwE3JOVC.js b/static/v2/assets/VitalSharingWindow-CwE3JOVC.js new file mode 100644 index 00000000..d4d1b489 --- /dev/null +++ b/static/v2/assets/VitalSharingWindow-CwE3JOVC.js @@ -0,0 +1 @@ +import{r as n,j as t,D as x,a as m}from"./index-BfJ04YaG.js";import"./react-DlyoauG8.js";const v=({id:o,zIndex:c})=>{const[a,d]=n.useState([]);n.useEffect(()=>{const e=async()=>{try{const s=await m("/vital-sharing/peers");d(s.peers??[])}catch{}};e();const l=setInterval(e,5e3);return()=>clearInterval(l)},[]);const h=(e,l)=>l>0?Math.min(100,e/l*100):0;return t.jsx(x,{id:o,title:"Vital Sharing Network",zIndex:c,width:520,height:450,children:t.jsx("div",{style:{flex:1,overflowY:"auto",padding:6,fontSize:"0.75rem"},children:a.length===0?t.jsx("div",{style:{padding:16,color:"#666",textAlign:"center"},children:"No vital-sharing peers connected"}):a.map(e=>{var l,s,r;return t.jsxs("div",{style:{padding:"6px 8px",marginBottom:4,background:"#1f1f1f",borderRadius:3,border:"1px solid #333"},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:3},children:[t.jsx("span",{style:{color:e.plugin_connected?"#4c4":"#a33",fontSize:"0.8rem"},children:"●"}),t.jsx("strong",{style:{flex:1},children:e.character_name}),e.subscribed&&t.jsx("span",{style:{color:"#6bf",fontSize:"0.65rem"},children:"[subscribed]"})]}),t.jsxs("div",{style:{color:"#666",fontSize:"0.68rem",marginBottom:3},children:["tags: ",((l=e.tags)==null?void 0:l.join(", "))||"none"]}),e.vitals&&e.vitals.max_health>0&&t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[{label:"HP",cur:e.vitals.current_health,max:e.vitals.max_health,bg:"#330000",fill:"#c44"},{label:"STA",cur:e.vitals.current_stamina,max:e.vitals.max_stamina,bg:"#331a00",fill:"#ca0"},{label:"MANA",cur:e.vitals.current_mana,max:e.vitals.max_mana,bg:"#001433",fill:"#48f"}].map(i=>t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[t.jsx("span",{style:{width:32,color:"#888",fontSize:"0.65rem"},children:i.label}),t.jsx("div",{style:{flex:1,height:6,background:i.bg,borderRadius:3,overflow:"hidden"},children:t.jsx("div",{style:{width:`${h(i.cur,i.max)}%`,height:"100%",background:i.fill,borderRadius:3}})}),t.jsxs("span",{style:{width:60,textAlign:"right",fontSize:"0.65rem",color:"#888"},children:[i.cur,"/",i.max]})]},i.label))}),e.position&&t.jsxs("div",{style:{color:"#555",fontSize:"0.65rem",marginTop:2},children:[(s=e.position.ns)==null?void 0:s.toFixed(1),"N, ",(r=e.position.ew)==null?void 0:r.toFixed(1),"E"]})]},e.character_name)})})})};export{v as VitalSharingWindow}; diff --git a/static/v2/assets/index-BfJ04YaG.js b/static/v2/assets/index-BfJ04YaG.js new file mode 100644 index 00000000..a6639845 --- /dev/null +++ b/static/v2/assets/index-BfJ04YaG.js @@ -0,0 +1,34 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/StatsWindow-BT7jJ8yH.js","assets/react-DlyoauG8.js","assets/CharacterWindow-C26CdTBY.js","assets/InventoryWindow-DLq3agcE.js","assets/RadarWindow-T2z8FzRN.js","assets/CombatStatsWindow-Ct0adxan.js","assets/CombatPickerWindow-BOlAFaCG.js","assets/IssuesWindow-CSupRDWU.js","assets/VitalSharingWindow-CwE3JOVC.js","assets/DashboardView-ReNIceoO.js"])))=>i.map(i=>d[i]); +import{r as p0,g as tv,a as av}from"./react-DlyoauG8.js";(function(){const O=document.createElement("link").relList;if(O&&O.supports&&O.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))o(p);new MutationObserver(p=>{for(const E of p)if(E.type==="childList")for(const D of E.addedNodes)D.tagName==="LINK"&&D.rel==="modulepreload"&&o(D)}).observe(document,{childList:!0,subtree:!0});function M(p){const E={};return p.integrity&&(E.integrity=p.integrity),p.referrerPolicy&&(E.referrerPolicy=p.referrerPolicy),p.crossOrigin==="use-credentials"?E.credentials="include":p.crossOrigin==="anonymous"?E.credentials="omit":E.credentials="same-origin",E}function o(p){if(p.ep)return;p.ep=!0;const E=M(p);fetch(p.href,E)}})();var sf={exports:{}},gu={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var r0;function ev(){if(r0)return gu;r0=1;var d=Symbol.for("react.transitional.element"),O=Symbol.for("react.fragment");function M(o,p,E){var D=null;if(E!==void 0&&(D=""+E),p.key!==void 0&&(D=""+p.key),"key"in p){E={};for(var N in p)N!=="key"&&(E[N]=p[N])}else E=p;return p=E.ref,{$$typeof:d,type:o,key:D,ref:p!==void 0?p:null,props:E}}return gu.Fragment=O,gu.jsx=M,gu.jsxs=M,gu}var g0;function uv(){return g0||(g0=1,sf.exports=ev()),sf.exports}var r=uv(),_=p0();const bu=tv(_);var of={exports:{}},Su={},mf={exports:{}},df={};/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var S0;function nv(){return S0||(S0=1,(function(d){function O(T,C){var V=T.length;T.push(C);l:for(;0>>1,yl=T[vl];if(0>>1;vlp(nl,V))Ulp(Tt,nl)?(T[vl]=Tt,T[Ul]=V,vl=Ul):(T[vl]=nl,T[bl]=V,vl=bl);else if(Ulp(Tt,V))T[vl]=Tt,T[Ul]=V,vl=Ul;else break l}}return C}function p(T,C){var V=T.sortIndex-C.sortIndex;return V!==0?V:T.id-C.id}if(d.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var E=performance;d.unstable_now=function(){return E.now()}}else{var D=Date,N=D.now();d.unstable_now=function(){return D.now()-N}}var b=[],U=[],B=1,x=null,H=3,W=!1,Z=!1,I=!1,Rl=!1,kl=typeof setTimeout=="function"?setTimeout:null,Fl=typeof clearTimeout=="function"?clearTimeout:null,Al=typeof setImmediate<"u"?setImmediate:null;function L(T){for(var C=M(U);C!==null;){if(C.callback===null)o(U);else if(C.startTime<=T)o(U),C.sortIndex=C.expirationTime,O(b,C);else break;C=M(U)}}function hl(T){if(I=!1,L(T),!Z)if(M(b)!==null)Z=!0,j||(j=!0,_l());else{var C=M(U);C!==null&&pt(hl,C.startTime-T)}}var j=!1,R=-1,Y=5,w=-1;function k(){return Rl?!0:!(d.unstable_now()-wT&&k());){var vl=x.callback;if(typeof vl=="function"){x.callback=null,H=x.priorityLevel;var yl=vl(x.expirationTime<=T);if(T=d.unstable_now(),typeof yl=="function"){x.callback=yl,L(T),C=!0;break t}x===M(b)&&o(b),L(T)}else o(b);x=M(b)}if(x!==null)C=!0;else{var Gl=M(U);Gl!==null&&pt(hl,Gl.startTime-T),C=!1}}break l}finally{x=null,H=V,W=!1}C=void 0}}finally{C?_l():j=!1}}}var _l;if(typeof Al=="function")_l=function(){Al(dl)};else if(typeof MessageChannel<"u"){var za=new MessageChannel,Jt=za.port2;za.port1.onmessage=dl,_l=function(){Jt.postMessage(null)}}else _l=function(){kl(dl,0)};function pt(T,C){R=kl(function(){T(d.unstable_now())},C)}d.unstable_IdlePriority=5,d.unstable_ImmediatePriority=1,d.unstable_LowPriority=4,d.unstable_NormalPriority=3,d.unstable_Profiling=null,d.unstable_UserBlockingPriority=2,d.unstable_cancelCallback=function(T){T.callback=null},d.unstable_forceFrameRate=function(T){0>T||125vl?(T.sortIndex=V,O(U,T),M(b)===null&&T===M(U)&&(I?(Fl(R),R=-1):I=!0,pt(hl,V-vl))):(T.sortIndex=yl,O(b,T),Z||W||(Z=!0,j||(j=!0,_l()))),T},d.unstable_shouldYield=k,d.unstable_wrapCallback=function(T){var C=H;return function(){var V=H;H=C;try{return T.apply(this,arguments)}finally{H=V}}}})(df)),df}var b0;function cv(){return b0||(b0=1,mf.exports=nv()),mf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var z0;function iv(){if(z0)return Su;z0=1;var d=cv(),O=p0(),M=av();function o(l){var t="https://react.dev/errors/"+l;if(1yl||(l.current=vl[yl],vl[yl]=null,yl--)}function nl(l,t){yl++,vl[yl]=l.current,l.current=t}var Ul=Gl(null),Tt=Gl(null),wt=Gl(null),Tu=Gl(null);function Au(l,t){switch(nl(wt,t),nl(Tt,l),nl(Ul,null),t.nodeType){case 9:case 11:l=(l=t.documentElement)&&(l=l.namespaceURI)?Xm(l):0;break;default:if(l=t.tagName,t=t.namespaceURI)t=Xm(t),l=Gm(t,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}bl(Ul),nl(Ul,l)}function Ga(){bl(Ul),bl(Tt),bl(wt)}function Vn(l){l.memoizedState!==null&&nl(Tu,l);var t=Ul.current,a=Gm(t,l.type);t!==a&&(nl(Tt,l),nl(Ul,a))}function Eu(l){Tt.current===l&&(bl(Ul),bl(Tt)),Tu.current===l&&(bl(Tu),hu._currentValue=V)}var Ln,vf;function Ta(l){if(Ln===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Ln=t&&t[1]||"",vf=-1)":-1u||f[e]!==v[u]){var S=` +`+f[e].replace(" at new "," at ");return l.displayName&&S.includes("")&&(S=S.replace("",l.displayName)),S}while(1<=e&&0<=u);break}}}finally{Kn=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?Ta(a):""}function j0(l,t){switch(l.tag){case 26:case 27:case 5:return Ta(l.type);case 16:return Ta("Lazy");case 13:return l.child!==t&&t!==null?Ta("Suspense Fallback"):Ta("Suspense");case 19:return Ta("SuspenseList");case 0:case 15:return Jn(l.type,!1);case 11:return Jn(l.type.render,!1);case 1:return Jn(l.type,!0);case 31:return Ta("Activity");default:return""}}function yf(l){try{var t="",a=null;do t+=j0(l,a),a=l,l=l.return;while(l);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var wn=Object.prototype.hasOwnProperty,Wn=d.unstable_scheduleCallback,kn=d.unstable_cancelCallback,C0=d.unstable_shouldYield,R0=d.unstable_requestPaint,$l=d.unstable_now,H0=d.unstable_getCurrentPriorityLevel,rf=d.unstable_ImmediatePriority,gf=d.unstable_UserBlockingPriority,Mu=d.unstable_NormalPriority,B0=d.unstable_LowPriority,Sf=d.unstable_IdlePriority,q0=d.log,Y0=d.unstable_setDisableYieldValue,_e=null,Il=null;function Wt(l){if(typeof q0=="function"&&Y0(l),Il&&typeof Il.setStrictMode=="function")try{Il.setStrictMode(_e,l)}catch{}}var Pl=Math.clz32?Math.clz32:Q0,X0=Math.log,G0=Math.LN2;function Q0(l){return l>>>=0,l===0?32:31-(X0(l)/G0|0)|0}var _u=256,pu=262144,Du=4194304;function Aa(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function Ou(l,t,a){var e=l.pendingLanes;if(e===0)return 0;var u=0,n=l.suspendedLanes,c=l.pingedLanes;l=l.warmLanes;var i=e&134217727;return i!==0?(e=i&~n,e!==0?u=Aa(e):(c&=i,c!==0?u=Aa(c):a||(a=i&~l,a!==0&&(u=Aa(a))))):(i=e&~n,i!==0?u=Aa(i):c!==0?u=Aa(c):a||(a=e&~l,a!==0&&(u=Aa(a)))),u===0?0:t!==0&&t!==u&&(t&n)===0&&(n=u&-u,a=t&-t,n>=a||n===32&&(a&4194048)!==0)?t:u}function pe(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Z0(l,t){switch(l){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bf(){var l=Du;return Du<<=1,(Du&62914560)===0&&(Du=4194304),l}function Fn(l){for(var t=[],a=0;31>a;a++)t.push(l);return t}function De(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function V0(l,t,a,e,u,n){var c=l.pendingLanes;l.pendingLanes=a,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=a,l.entangledLanes&=a,l.errorRecoveryDisabledLanes&=a,l.shellSuspendCounter=0;var i=l.entanglements,f=l.expirationTimes,v=l.hiddenUpdates;for(a=c&~a;0"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var k0=/[\n"\\]/g;function ft(l){return l.replace(k0,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function ac(l,t,a,e,u,n,c,i){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+it(t)):l.value!==""+it(t)&&(l.value=""+it(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?ec(l,c,it(t)):a!=null?ec(l,c,it(a)):e!=null&&l.removeAttribute("value"),u==null&&n!=null&&(l.defaultChecked=!!n),u!=null&&(l.checked=u&&typeof u!="function"&&typeof u!="symbol"),i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?l.name=""+it(i):l.removeAttribute("name")}function jf(l,t,a,e,u,n,c,i){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||a!=null){if(!(n!=="submit"&&n!=="reset"||t!=null)){tc(l);return}a=a!=null?""+it(a):"",t=t!=null?""+it(t):a,i||t===l.value||(l.value=t),l.defaultValue=t}e=e??u,e=typeof e!="function"&&typeof e!="symbol"&&!!e,l.checked=i?l.checked:!!e,l.defaultChecked=!!e,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c),tc(l)}function ec(l,t,a){t==="number"&&Uu(l.ownerDocument)===l||l.defaultValue===""+a||(l.defaultValue=""+a)}function Ja(l,t,a,e){if(l=l.options,t){t={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),fc=!1;if(Nt)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){fc=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch{fc=!1}var Ft=null,sc=null,Cu=null;function Xf(){if(Cu)return Cu;var l,t=sc,a=t.length,e,u="value"in Ft?Ft.value:Ft.textContent,n=u.length;for(l=0;l=Re),Kf=" ",Jf=!1;function wf(l,t){switch(l){case"keyup":return Ed.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Wf(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Fa=!1;function _d(l,t){switch(l){case"compositionend":return Wf(t);case"keypress":return t.which!==32?null:(Jf=!0,Kf);case"textInput":return l=t.data,l===Kf&&Jf?null:l;default:return null}}function pd(l,t){if(Fa)return l==="compositionend"||!vc&&wf(l,t)?(l=Xf(),Cu=sc=Ft=null,Fa=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-l};l=e}l:{for(;a;){if(a.nextSibling){a=a.nextSibling;break l}a=a.parentNode}a=void 0}a=as(a)}}function us(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?us(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function ns(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Uu(l.document);t instanceof l.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)l=t.contentWindow;else break;t=Uu(l.document)}return t}function gc(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}var Rd=Nt&&"documentMode"in document&&11>=document.documentMode,$a=null,Sc=null,Ye=null,bc=!1;function cs(l,t,a){var e=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;bc||$a==null||$a!==Uu(e)||(e=$a,"selectionStart"in e&&gc(e)?e={start:e.selectionStart,end:e.selectionEnd}:(e=(e.ownerDocument&&e.ownerDocument.defaultView||window).getSelection(),e={anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}),Ye&&qe(Ye,e)||(Ye=e,e=Dn(Sc,"onSelect"),0>=c,u-=c,At=1<<32-Pl(t)+u|a<J?(ll=X,X=null):ll=X.sibling;var el=y(m,X,h[J],z);if(el===null){X===null&&(X=ll);break}l&&X&&el.alternate===null&&t(m,X),s=n(el,s,J),al===null?G=el:al.sibling=el,al=el,X=ll}if(J===h.length)return a(m,X),tl&&Ut(m,J),G;if(X===null){for(;JJ?(ll=X,X=null):ll=X.sibling;var Sa=y(m,X,el.value,z);if(Sa===null){X===null&&(X=ll);break}l&&X&&Sa.alternate===null&&t(m,X),s=n(Sa,s,J),al===null?G=Sa:al.sibling=Sa,al=Sa,X=ll}if(el.done)return a(m,X),tl&&Ut(m,J),G;if(X===null){for(;!el.done;J++,el=h.next())el=A(m,el.value,z),el!==null&&(s=n(el,s,J),al===null?G=el:al.sibling=el,al=el);return tl&&Ut(m,J),G}for(X=e(X);!el.done;J++,el=h.next())el=g(X,m,J,el.value,z),el!==null&&(l&&el.alternate!==null&&X.delete(el.key===null?J:el.key),s=n(el,s,J),al===null?G=el:al.sibling=el,al=el);return l&&X.forEach(function(lv){return t(m,lv)}),tl&&Ut(m,J),G}function ol(m,s,h,z){if(typeof h=="object"&&h!==null&&h.type===I&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case W:l:{for(var G=h.key;s!==null;){if(s.key===G){if(G=h.type,G===I){if(s.tag===7){a(m,s.sibling),z=u(s,h.props.children),z.return=m,m=z;break l}}else if(s.elementType===G||typeof G=="object"&&G!==null&&G.$$typeof===Y&&Ca(G)===s.type){a(m,s.sibling),z=u(s,h.props),Le(z,h),z.return=m,m=z;break l}a(m,s);break}else t(m,s);s=s.sibling}h.type===I?(z=Oa(h.props.children,m.mode,z,h.key),z.return=m,m=z):(z=Vu(h.type,h.key,h.props,null,m.mode,z),Le(z,h),z.return=m,m=z)}return c(m);case Z:l:{for(G=h.key;s!==null;){if(s.key===G)if(s.tag===4&&s.stateNode.containerInfo===h.containerInfo&&s.stateNode.implementation===h.implementation){a(m,s.sibling),z=u(s,h.children||[]),z.return=m,m=z;break l}else{a(m,s);break}else t(m,s);s=s.sibling}z=pc(h,m.mode,z),z.return=m,m=z}return c(m);case Y:return h=Ca(h),ol(m,s,h,z)}if(pt(h))return q(m,s,h,z);if(_l(h)){if(G=_l(h),typeof G!="function")throw Error(o(150));return h=G.call(h),Q(m,s,h,z)}if(typeof h.then=="function")return ol(m,s,Fu(h),z);if(h.$$typeof===Al)return ol(m,s,Ju(m,h),z);$u(m,h)}return typeof h=="string"&&h!==""||typeof h=="number"||typeof h=="bigint"?(h=""+h,s!==null&&s.tag===6?(a(m,s.sibling),z=u(s,h),z.return=m,m=z):(a(m,s),z=_c(h,m.mode,z),z.return=m,m=z),c(m)):a(m,s)}return function(m,s,h,z){try{Ve=0;var G=ol(m,s,h,z);return fe=null,G}catch(X){if(X===ie||X===Wu)throw X;var al=tt(29,X,null,m.mode);return al.lanes=z,al.return=m,al}finally{}}}var Ha=Ns(!0),xs=Ns(!1),ta=!1;function Yc(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xc(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function aa(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function ea(l,t,a){var e=l.updateQueue;if(e===null)return null;if(e=e.shared,(ul&2)!==0){var u=e.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),e.pending=t,t=Zu(l),hs(l,null,a),t}return Qu(l,e,t,a),Zu(l)}function Ke(l,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var e=t.lanes;e&=l.pendingLanes,a|=e,t.lanes=a,Tf(l,a)}}function Gc(l,t){var a=l.updateQueue,e=l.alternate;if(e!==null&&(e=e.updateQueue,a===e)){var u=null,n=null;if(a=a.firstBaseUpdate,a!==null){do{var c={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};n===null?u=n=c:n=n.next=c,a=a.next}while(a!==null);n===null?u=n=t:n=n.next=t}else u=n=t;a={baseState:e.baseState,firstBaseUpdate:u,lastBaseUpdate:n,shared:e.shared,callbacks:e.callbacks},l.updateQueue=a;return}l=a.lastBaseUpdate,l===null?a.firstBaseUpdate=t:l.next=t,a.lastBaseUpdate=t}var Qc=!1;function Je(){if(Qc){var l=ce;if(l!==null)throw l}}function we(l,t,a,e){Qc=!1;var u=l.updateQueue;ta=!1;var n=u.firstBaseUpdate,c=u.lastBaseUpdate,i=u.shared.pending;if(i!==null){u.shared.pending=null;var f=i,v=f.next;f.next=null,c===null?n=v:c.next=v,c=f;var S=l.alternate;S!==null&&(S=S.updateQueue,i=S.lastBaseUpdate,i!==c&&(i===null?S.firstBaseUpdate=v:i.next=v,S.lastBaseUpdate=f))}if(n!==null){var A=u.baseState;c=0,S=v=f=null,i=n;do{var y=i.lane&-536870913,g=y!==i.lane;if(g?(P&y)===y:(e&y)===y){y!==0&&y===ne&&(Qc=!0),S!==null&&(S=S.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});l:{var q=l,Q=i;y=t;var ol=a;switch(Q.tag){case 1:if(q=Q.payload,typeof q=="function"){A=q.call(ol,A,y);break l}A=q;break l;case 3:q.flags=q.flags&-65537|128;case 0:if(q=Q.payload,y=typeof q=="function"?q.call(ol,A,y):q,y==null)break l;A=x({},A,y);break l;case 2:ta=!0}}y=i.callback,y!==null&&(l.flags|=64,g&&(l.flags|=8192),g=u.callbacks,g===null?u.callbacks=[y]:g.push(y))}else g={lane:y,tag:i.tag,payload:i.payload,callback:i.callback,next:null},S===null?(v=S=g,f=A):S=S.next=g,c|=y;if(i=i.next,i===null){if(i=u.shared.pending,i===null)break;g=i,i=g.next,g.next=null,u.lastBaseUpdate=g,u.shared.pending=null}}while(!0);S===null&&(f=A),u.baseState=f,u.firstBaseUpdate=v,u.lastBaseUpdate=S,n===null&&(u.shared.lanes=0),fa|=c,l.lanes=c,l.memoizedState=A}}function Us(l,t){if(typeof l!="function")throw Error(o(191,l));l.call(t)}function js(l,t){var a=l.callbacks;if(a!==null)for(l.callbacks=null,l=0;ln?n:8;var c=T.T,i={};T.T=i,ci(l,!1,t,a);try{var f=u(),v=T.S;if(v!==null&&v(i,f),f!==null&&typeof f=="object"&&typeof f.then=="function"){var S=Vd(f,e);Fe(l,t,S,ct(l))}else Fe(l,t,e,ct(l))}catch(A){Fe(l,t,{then:function(){},status:"rejected",reason:A},ct())}finally{C.p=n,c!==null&&i.types!==null&&(c.types=i.types),T.T=c}}function kd(){}function ui(l,t,a,e){if(l.tag!==5)throw Error(o(476));var u=oo(l).queue;so(l,u,t,V,a===null?kd:function(){return mo(l),a(e)})}function oo(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:V,baseState:V,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ht,lastRenderedState:V},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ht,lastRenderedState:a},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function mo(l){var t=oo(l);t.next===null&&(t=l.alternate.memoizedState),Fe(l,t.next.queue,{},ct())}function ni(){return ql(hu)}function ho(){return Ml().memoizedState}function vo(){return Ml().memoizedState}function Fd(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var a=ct();l=aa(a);var e=ea(t,l,a);e!==null&&(Wl(e,t,a),Ke(e,t,a)),t={cache:Rc()},l.payload=t;return}t=t.return}}function $d(l,t,a){var e=ct();a={lane:e,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},fn(l)?ro(t,a):(a=Ec(l,t,a,e),a!==null&&(Wl(a,l,e),go(a,t,e)))}function yo(l,t,a){var e=ct();Fe(l,t,a,e)}function Fe(l,t,a,e){var u={lane:e,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(fn(l))ro(t,u);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,i=n(c,a);if(u.hasEagerState=!0,u.eagerState=i,lt(i,c))return Qu(l,t,u,0),ml===null&&Gu(),!1}catch{}finally{}if(a=Ec(l,t,u,e),a!==null)return Wl(a,l,e),go(a,t,e),!0}return!1}function ci(l,t,a,e){if(e={lane:2,revertLane:Yi(),gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},fn(l)){if(t)throw Error(o(479))}else t=Ec(l,a,e,2),t!==null&&Wl(t,l,2)}function fn(l){var t=l.alternate;return l===K||t!==null&&t===K}function ro(l,t){oe=ln=!0;var a=l.pending;a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t}function go(l,t,a){if((a&4194048)!==0){var e=t.lanes;e&=l.pendingLanes,a|=e,t.lanes=a,Tf(l,a)}}var $e={readContext:ql,use:en,useCallback:zl,useContext:zl,useEffect:zl,useImperativeHandle:zl,useLayoutEffect:zl,useInsertionEffect:zl,useMemo:zl,useReducer:zl,useRef:zl,useState:zl,useDebugValue:zl,useDeferredValue:zl,useTransition:zl,useSyncExternalStore:zl,useId:zl,useHostTransitionStatus:zl,useFormState:zl,useActionState:zl,useOptimistic:zl,useMemoCache:zl,useCacheRefresh:zl};$e.useEffectEvent=zl;var So={readContext:ql,use:en,useCallback:function(l,t){return Ql().memoizedState=[l,t===void 0?null:t],l},useContext:ql,useEffect:lo,useImperativeHandle:function(l,t,a){a=a!=null?a.concat([l]):null,nn(4194308,4,uo.bind(null,t,l),a)},useLayoutEffect:function(l,t){return nn(4194308,4,l,t)},useInsertionEffect:function(l,t){nn(4,2,l,t)},useMemo:function(l,t){var a=Ql();t=t===void 0?null:t;var e=l();if(Ba){Wt(!0);try{l()}finally{Wt(!1)}}return a.memoizedState=[e,t],e},useReducer:function(l,t,a){var e=Ql();if(a!==void 0){var u=a(t);if(Ba){Wt(!0);try{a(t)}finally{Wt(!1)}}}else u=t;return e.memoizedState=e.baseState=u,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:u},e.queue=l,l=l.dispatch=$d.bind(null,K,l),[e.memoizedState,l]},useRef:function(l){var t=Ql();return l={current:l},t.memoizedState=l},useState:function(l){l=Pc(l);var t=l.queue,a=yo.bind(null,K,t);return t.dispatch=a,[l.memoizedState,a]},useDebugValue:ai,useDeferredValue:function(l,t){var a=Ql();return ei(a,l,t)},useTransition:function(){var l=Pc(!1);return l=so.bind(null,K,l.queue,!0,!1),Ql().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,a){var e=K,u=Ql();if(tl){if(a===void 0)throw Error(o(407));a=a()}else{if(a=t(),ml===null)throw Error(o(349));(P&127)!==0||Ys(e,t,a)}u.memoizedState=a;var n={value:a,getSnapshot:t};return u.queue=n,lo(Gs.bind(null,e,n,l),[l]),e.flags|=2048,de(9,{destroy:void 0},Xs.bind(null,e,n,a,t),null),a},useId:function(){var l=Ql(),t=ml.identifierPrefix;if(tl){var a=Et,e=At;a=(e&~(1<<32-Pl(e)-1)).toString(32)+a,t="_"+t+"R_"+a,a=tn++,0<\/script>",n=n.removeChild(n.firstChild);break;case"select":n=typeof e.is=="string"?c.createElement("select",{is:e.is}):c.createElement("select"),e.multiple?n.multiple=!0:e.size&&(n.size=e.size);break;default:n=typeof e.is=="string"?c.createElement(u,{is:e.is}):c.createElement(u)}}n[Hl]=t,n[Zl]=e;l:for(c=t.child;c!==null;){if(c.tag===5||c.tag===6)n.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===t)break l;for(;c.sibling===null;){if(c.return===null||c.return===t)break l;c=c.return}c.sibling.return=c.return,c=c.sibling}t.stateNode=n;l:switch(Xl(n,u,e),u){case"button":case"input":case"select":case"textarea":e=!!e.autoFocus;break l;case"img":e=!0;break l;default:e=!1}e&&qt(t)}}return gl(t),zi(t,t.type,l===null?null:l.memoizedProps,t.pendingProps,a),null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==e&&qt(t);else{if(typeof e!="string"&&t.stateNode===null)throw Error(o(166));if(l=wt.current,ee(t)){if(l=t.stateNode,a=t.memoizedProps,e=null,u=Bl,u!==null)switch(u.tag){case 27:case 5:e=u.memoizedProps}l[Hl]=t,l=!!(l.nodeValue===a||e!==null&&e.suppressHydrationWarning===!0||qm(l.nodeValue,a)),l||Pt(t,!0)}else l=On(l).createTextNode(e),l[Hl]=t,t.stateNode=l}return gl(t),null;case 31:if(a=t.memoizedState,l===null||l.memoizedState!==null){if(e=ee(t),a!==null){if(l===null){if(!e)throw Error(o(318));if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(o(557));l[Hl]=t}else Na(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;gl(t),l=!1}else a=xc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=a),l=!0;if(!l)return t.flags&256?(et(t),t):(et(t),null);if((t.flags&128)!==0)throw Error(o(558))}return gl(t),null;case 13:if(e=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(u=ee(t),e!==null&&e.dehydrated!==null){if(l===null){if(!u)throw Error(o(318));if(u=t.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(o(317));u[Hl]=t}else Na(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;gl(t),u=!1}else u=xc(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=u),u=!0;if(!u)return t.flags&256?(et(t),t):(et(t),null)}return et(t),(t.flags&128)!==0?(t.lanes=a,t):(a=e!==null,l=l!==null&&l.memoizedState!==null,a&&(e=t.child,u=null,e.alternate!==null&&e.alternate.memoizedState!==null&&e.alternate.memoizedState.cachePool!==null&&(u=e.alternate.memoizedState.cachePool.pool),n=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),n!==u&&(e.flags|=2048)),a!==l&&a&&(t.child.flags|=8192),hn(t,t.updateQueue),gl(t),null);case 4:return Ga(),l===null&&Zi(t.stateNode.containerInfo),gl(t),null;case 10:return Ct(t.type),gl(t),null;case 19:if(bl(El),e=t.memoizedState,e===null)return gl(t),null;if(u=(t.flags&128)!==0,n=e.rendering,n===null)if(u)Pe(e,!1);else{if(Tl!==0||l!==null&&(l.flags&128)!==0)for(l=t.child;l!==null;){if(n=Pu(l),n!==null){for(t.flags|=128,Pe(e,!1),l=n.updateQueue,t.updateQueue=l,hn(t,l),t.subtreeFlags=0,l=a,a=t.child;a!==null;)vs(a,l),a=a.sibling;return nl(El,El.current&1|2),tl&&Ut(t,e.treeForkCount),t.child}l=l.sibling}e.tail!==null&&$l()>Sn&&(t.flags|=128,u=!0,Pe(e,!1),t.lanes=4194304)}else{if(!u)if(l=Pu(n),l!==null){if(t.flags|=128,u=!0,l=l.updateQueue,t.updateQueue=l,hn(t,l),Pe(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!tl)return gl(t),null}else 2*$l()-e.renderingStartTime>Sn&&a!==536870912&&(t.flags|=128,u=!0,Pe(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(l=e.tail,e.rendering=l,e.tail=l.sibling,e.renderingStartTime=$l(),l.sibling=null,a=El.current,nl(El,u?a&1|2:a&1),tl&&Ut(t,e.treeForkCount),l):(gl(t),null);case 22:case 23:return et(t),Vc(),e=t.memoizedState!==null,l!==null?l.memoizedState!==null!==e&&(t.flags|=8192):e&&(t.flags|=8192),e?(a&536870912)!==0&&(t.flags&128)===0&&(gl(t),t.subtreeFlags&6&&(t.flags|=8192)):gl(t),a=t.updateQueue,a!==null&&hn(t,a.retryQueue),a=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(a=l.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==a&&(t.flags|=2048),l!==null&&bl(ja),null;case 24:return a=null,l!==null&&(a=l.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Ct(pl),gl(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function ah(l,t){switch(Oc(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return Ct(pl),Ga(),l=t.flags,(l&65536)!==0&&(l&128)===0?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return Eu(t),null;case 31:if(t.memoizedState!==null){if(et(t),t.alternate===null)throw Error(o(340));Na()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 13:if(et(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Na()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return bl(El),null;case 4:return Ga(),null;case 10:return Ct(t.type),null;case 22:case 23:return et(t),Vc(),l!==null&&bl(ja),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return Ct(pl),null;case 25:return null;default:return null}}function Zo(l,t){switch(Oc(t),t.tag){case 3:Ct(pl),Ga();break;case 26:case 27:case 5:Eu(t);break;case 4:Ga();break;case 31:t.memoizedState!==null&&et(t);break;case 13:et(t);break;case 19:bl(El);break;case 10:Ct(t.type);break;case 22:case 23:et(t),Vc(),l!==null&&bl(ja);break;case 24:Ct(pl)}}function lu(l,t){try{var a=t.updateQueue,e=a!==null?a.lastEffect:null;if(e!==null){var u=e.next;a=u;do{if((a.tag&l)===l){e=void 0;var n=a.create,c=a.inst;e=n(),c.destroy=e}a=a.next}while(a!==u)}}catch(i){il(t,t.return,i)}}function ca(l,t,a){try{var e=t.updateQueue,u=e!==null?e.lastEffect:null;if(u!==null){var n=u.next;e=n;do{if((e.tag&l)===l){var c=e.inst,i=c.destroy;if(i!==void 0){c.destroy=void 0,u=t;var f=a,v=i;try{v()}catch(S){il(u,f,S)}}}e=e.next}while(e!==n)}}catch(S){il(t,t.return,S)}}function Vo(l){var t=l.updateQueue;if(t!==null){var a=l.stateNode;try{js(t,a)}catch(e){il(l,l.return,e)}}}function Lo(l,t,a){a.props=qa(l.type,l.memoizedProps),a.state=l.memoizedState;try{a.componentWillUnmount()}catch(e){il(l,t,e)}}function tu(l,t){try{var a=l.ref;if(a!==null){switch(l.tag){case 26:case 27:case 5:var e=l.stateNode;break;case 30:e=l.stateNode;break;default:e=l.stateNode}typeof a=="function"?l.refCleanup=a(e):a.current=e}}catch(u){il(l,t,u)}}function Mt(l,t){var a=l.ref,e=l.refCleanup;if(a!==null)if(typeof e=="function")try{e()}catch(u){il(l,t,u)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(u){il(l,t,u)}else a.current=null}function Ko(l){var t=l.type,a=l.memoizedProps,e=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&e.focus();break l;case"img":a.src?e.src=a.src:a.srcSet&&(e.srcset=a.srcSet)}}catch(u){il(l,l.return,u)}}function Ti(l,t,a){try{var e=l.stateNode;Mh(e,l.type,a,t),e[Zl]=t}catch(u){il(l,l.return,u)}}function Jo(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&ha(l.type)||l.tag===4}function Ai(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||Jo(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&ha(l.type)||l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Ei(l,t,a){var e=l.tag;if(e===5||e===6)l=l.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(l,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(l),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=Ot));else if(e!==4&&(e===27&&ha(l.type)&&(a=l.stateNode,t=null),l=l.child,l!==null))for(Ei(l,t,a),l=l.sibling;l!==null;)Ei(l,t,a),l=l.sibling}function vn(l,t,a){var e=l.tag;if(e===5||e===6)l=l.stateNode,t?a.insertBefore(l,t):a.appendChild(l);else if(e!==4&&(e===27&&ha(l.type)&&(a=l.stateNode),l=l.child,l!==null))for(vn(l,t,a),l=l.sibling;l!==null;)vn(l,t,a),l=l.sibling}function wo(l){var t=l.stateNode,a=l.memoizedProps;try{for(var e=l.type,u=t.attributes;u.length;)t.removeAttributeNode(u[0]);Xl(t,e,a),t[Hl]=l,t[Zl]=a}catch(n){il(l,l.return,n)}}var Yt=!1,Nl=!1,Mi=!1,Wo=typeof WeakSet=="function"?WeakSet:Set,Cl=null;function eh(l,t){if(l=l.containerInfo,Ki=Hn,l=ns(l),gc(l)){if("selectionStart"in l)var a={start:l.selectionStart,end:l.selectionEnd};else l:{a=(a=l.ownerDocument)&&a.defaultView||window;var e=a.getSelection&&a.getSelection();if(e&&e.rangeCount!==0){a=e.anchorNode;var u=e.anchorOffset,n=e.focusNode;e=e.focusOffset;try{a.nodeType,n.nodeType}catch{a=null;break l}var c=0,i=-1,f=-1,v=0,S=0,A=l,y=null;t:for(;;){for(var g;A!==a||u!==0&&A.nodeType!==3||(i=c+u),A!==n||e!==0&&A.nodeType!==3||(f=c+e),A.nodeType===3&&(c+=A.nodeValue.length),(g=A.firstChild)!==null;)y=A,A=g;for(;;){if(A===l)break t;if(y===a&&++v===u&&(i=c),y===n&&++S===e&&(f=c),(g=A.nextSibling)!==null)break;A=y,y=A.parentNode}A=g}a=i===-1||f===-1?null:{start:i,end:f}}else a=null}a=a||{start:0,end:0}}else a=null;for(Ji={focusedElem:l,selectionRange:a},Hn=!1,Cl=t;Cl!==null;)if(t=Cl,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,Cl=l;else for(;Cl!==null;){switch(t=Cl,n=t.alternate,l=t.flags,t.tag){case 0:if((l&4)!==0&&(l=t.updateQueue,l=l!==null?l.events:null,l!==null))for(a=0;a title"))),Xl(n,e,a),n[Hl]=l,jl(n),e=n;break l;case"link":var c=l0("link","href",u).get(e+(a.href||""));if(c){for(var i=0;iol&&(c=ol,ol=Q,Q=c);var m=es(i,Q),s=es(i,ol);if(m&&s&&(g.rangeCount!==1||g.anchorNode!==m.node||g.anchorOffset!==m.offset||g.focusNode!==s.node||g.focusOffset!==s.offset)){var h=A.createRange();h.setStart(m.node,m.offset),g.removeAllRanges(),Q>ol?(g.addRange(h),g.extend(s.node,s.offset)):(h.setEnd(s.node,s.offset),g.addRange(h))}}}}for(A=[],g=i;g=g.parentNode;)g.nodeType===1&&A.push({element:g,left:g.scrollLeft,top:g.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;ia?32:a,T.T=null,a=Ui,Ui=null;var n=oa,c=Vt;if(xl=0,ge=oa=null,Vt=0,(ul&6)!==0)throw Error(o(331));var i=ul;if(ul|=4,nm(n.current),am(n,n.current,c,a),ul=i,iu(0,!1),Il&&typeof Il.onPostCommitFiberRoot=="function")try{Il.onPostCommitFiberRoot(_e,n)}catch{}return!0}finally{C.p=u,T.T=e,Em(l,t)}}function _m(l,t,a){t=ot(a,t),t=oi(l.stateNode,t,2),l=ea(l,t,2),l!==null&&(De(l,2),_t(l))}function il(l,t,a){if(l.tag===3)_m(l,l,a);else for(;t!==null;){if(t.tag===3){_m(t,l,a);break}else if(t.tag===1){var e=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof e.componentDidCatch=="function"&&(sa===null||!sa.has(e))){l=ot(a,l),a=po(2),e=ea(t,a,2),e!==null&&(Do(a,e,t,l),De(e,2),_t(e));break}}t=t.return}}function Hi(l,t,a){var e=l.pingCache;if(e===null){e=l.pingCache=new ch;var u=new Set;e.set(t,u)}else u=e.get(t),u===void 0&&(u=new Set,e.set(t,u));u.has(a)||(Di=!0,u.add(a),l=mh.bind(null,l,t,a),t.then(l,l))}function mh(l,t,a){var e=l.pingCache;e!==null&&e.delete(t),l.pingedLanes|=l.suspendedLanes&a,l.warmLanes&=~a,ml===l&&(P&a)===a&&(Tl===4||Tl===3&&(P&62914560)===P&&300>$l()-gn?(ul&2)===0&&Se(l,0):Oi|=a,re===P&&(re=0)),_t(l)}function pm(l,t){t===0&&(t=bf()),l=Da(l,t),l!==null&&(De(l,t),_t(l))}function dh(l){var t=l.memoizedState,a=0;t!==null&&(a=t.retryLane),pm(l,a)}function hh(l,t){var a=0;switch(l.tag){case 31:case 13:var e=l.stateNode,u=l.memoizedState;u!==null&&(a=u.retryLane);break;case 19:e=l.stateNode;break;case 22:e=l.stateNode._retryCache;break;default:throw Error(o(314))}e!==null&&e.delete(t),pm(l,a)}function vh(l,t){return Wn(l,t)}var Mn=null,ze=null,Bi=!1,_n=!1,qi=!1,da=0;function _t(l){l!==ze&&l.next===null&&(ze===null?Mn=ze=l:ze=ze.next=l),_n=!0,Bi||(Bi=!0,rh())}function iu(l,t){if(!qi&&_n){qi=!0;do for(var a=!1,e=Mn;e!==null;){if(l!==0){var u=e.pendingLanes;if(u===0)var n=0;else{var c=e.suspendedLanes,i=e.pingedLanes;n=(1<<31-Pl(42|l)+1)-1,n&=u&~(c&~i),n=n&201326741?n&201326741|1:n?n|2:0}n!==0&&(a=!0,xm(e,n))}else n=P,n=Ou(e,e===ml?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),(n&3)===0||pe(e,n)||(a=!0,xm(e,n));e=e.next}while(a);qi=!1}}function yh(){Dm()}function Dm(){_n=Bi=!1;var l=0;da!==0&&ph()&&(l=da);for(var t=$l(),a=null,e=Mn;e!==null;){var u=e.next,n=Om(e,t);n===0?(e.next=null,a===null?Mn=u:a.next=u,u===null&&(ze=a)):(a=e,(l!==0||(n&3)!==0)&&(_n=!0)),e=u}xl!==0&&xl!==5||iu(l),da!==0&&(da=0)}function Om(l,t){for(var a=l.suspendedLanes,e=l.pingedLanes,u=l.expirationTimes,n=l.pendingLanes&-62914561;0i)break;var S=f.transferSize,A=f.initiatorType;S&&Ym(A)&&(f=f.responseEnd,c+=S*(f"u"?null:document;function Fm(l,t,a){var e=Te;if(e&&typeof t=="string"&&t){var u=ft(t);u='link[rel="'+l+'"][href="'+u+'"]',typeof a=="string"&&(u+='[crossorigin="'+a+'"]'),km.has(u)||(km.add(u),l={rel:l,crossOrigin:a,href:t},e.querySelector(u)===null&&(t=e.createElement("link"),Xl(t,"link",l),jl(t),e.head.appendChild(t)))}}function Hh(l){Lt.D(l),Fm("dns-prefetch",l,null)}function Bh(l,t){Lt.C(l,t),Fm("preconnect",l,t)}function qh(l,t,a){Lt.L(l,t,a);var e=Te;if(e&&l&&t){var u='link[rel="preload"][as="'+ft(t)+'"]';t==="image"&&a&&a.imageSrcSet?(u+='[imagesrcset="'+ft(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(u+='[imagesizes="'+ft(a.imageSizes)+'"]')):u+='[href="'+ft(l)+'"]';var n=u;switch(t){case"style":n=Ae(l);break;case"script":n=Ee(l)}rt.has(n)||(l=x({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:l,as:t},a),rt.set(n,l),e.querySelector(u)!==null||t==="style"&&e.querySelector(mu(n))||t==="script"&&e.querySelector(du(n))||(t=e.createElement("link"),Xl(t,"link",l),jl(t),e.head.appendChild(t)))}}function Yh(l,t){Lt.m(l,t);var a=Te;if(a&&l){var e=t&&typeof t.as=="string"?t.as:"script",u='link[rel="modulepreload"][as="'+ft(e)+'"][href="'+ft(l)+'"]',n=u;switch(e){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=Ee(l)}if(!rt.has(n)&&(l=x({rel:"modulepreload",href:l},t),rt.set(n,l),a.querySelector(u)===null)){switch(e){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(du(n)))return}e=a.createElement("link"),Xl(e,"link",l),jl(e),a.head.appendChild(e)}}}function Xh(l,t,a){Lt.S(l,t,a);var e=Te;if(e&&l){var u=La(e).hoistableStyles,n=Ae(l);t=t||"default";var c=u.get(n);if(!c){var i={loading:0,preload:null};if(c=e.querySelector(mu(n)))i.loading=5;else{l=x({rel:"stylesheet",href:l,"data-precedence":t},a),(a=rt.get(n))&&Pi(l,a);var f=c=e.createElement("link");jl(f),Xl(f,"link",l),f._p=new Promise(function(v,S){f.onload=v,f.onerror=S}),f.addEventListener("load",function(){i.loading|=1}),f.addEventListener("error",function(){i.loading|=2}),i.loading|=4,xn(c,t,e)}c={type:"stylesheet",instance:c,count:1,state:i},u.set(n,c)}}}function Gh(l,t){Lt.X(l,t);var a=Te;if(a&&l){var e=La(a).hoistableScripts,u=Ee(l),n=e.get(u);n||(n=a.querySelector(du(u)),n||(l=x({src:l,async:!0},t),(t=rt.get(u))&&lf(l,t),n=a.createElement("script"),jl(n),Xl(n,"link",l),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},e.set(u,n))}}function Qh(l,t){Lt.M(l,t);var a=Te;if(a&&l){var e=La(a).hoistableScripts,u=Ee(l),n=e.get(u);n||(n=a.querySelector(du(u)),n||(l=x({src:l,async:!0,type:"module"},t),(t=rt.get(u))&&lf(l,t),n=a.createElement("script"),jl(n),Xl(n,"link",l),a.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},e.set(u,n))}}function $m(l,t,a,e){var u=(u=wt.current)?Nn(u):null;if(!u)throw Error(o(446));switch(l){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Ae(a.href),a=La(u).hoistableStyles,e=a.get(t),e||(e={type:"style",instance:null,count:0,state:null},a.set(t,e)),e):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){l=Ae(a.href);var n=La(u).hoistableStyles,c=n.get(l);if(c||(u=u.ownerDocument||u,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=u.querySelector(mu(l)))&&!n._p&&(c.instance=n,c.state.loading=5),rt.has(l)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},rt.set(l,a),n||Zh(u,l,a,c.state))),t&&e===null)throw Error(o(528,""));return c}if(t&&e!==null)throw Error(o(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Ee(a),a=La(u).hoistableScripts,e=a.get(t),e||(e={type:"script",instance:null,count:0,state:null},a.set(t,e)),e):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,l))}}function Ae(l){return'href="'+ft(l)+'"'}function mu(l){return'link[rel="stylesheet"]['+l+"]"}function Im(l){return x({},l,{"data-precedence":l.precedence,precedence:null})}function Zh(l,t,a,e){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?e.loading=1:(t=l.createElement("link"),e.preload=t,t.addEventListener("load",function(){return e.loading|=1}),t.addEventListener("error",function(){return e.loading|=2}),Xl(t,"link",a),jl(t),l.head.appendChild(t))}function Ee(l){return'[src="'+ft(l)+'"]'}function du(l){return"script[async]"+l}function Pm(l,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var e=l.querySelector('style[data-href~="'+ft(a.href)+'"]');if(e)return t.instance=e,jl(e),e;var u=x({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return e=(l.ownerDocument||l).createElement("style"),jl(e),Xl(e,"style",u),xn(e,a.precedence,l),t.instance=e;case"stylesheet":u=Ae(a.href);var n=l.querySelector(mu(u));if(n)return t.state.loading|=4,t.instance=n,jl(n),n;e=Im(a),(u=rt.get(u))&&Pi(e,u),n=(l.ownerDocument||l).createElement("link"),jl(n);var c=n;return c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),Xl(n,"link",e),t.state.loading|=4,xn(n,a.precedence,l),t.instance=n;case"script":return n=Ee(a.src),(u=l.querySelector(du(n)))?(t.instance=u,jl(u),u):(e=a,(u=rt.get(n))&&(e=x({},a),lf(e,u)),l=l.ownerDocument||l,u=l.createElement("script"),jl(u),Xl(u,"link",e),l.head.appendChild(u),t.instance=u);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(e=t.instance,t.state.loading|=4,xn(e,a.precedence,l));return t.instance}function xn(l,t,a){for(var e=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=e.length?e[e.length-1]:null,n=u,c=0;c title"):null)}function Vh(l,t,a){if(a===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function a0(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function Lh(l,t,a,e){if(a.type==="stylesheet"&&(typeof e.media!="string"||matchMedia(e.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var u=Ae(e.href),n=t.querySelector(mu(u));if(n){t=n._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(l.count++,l=jn.bind(l),t.then(l,l)),a.state.loading|=4,a.instance=n,jl(n);return}n=t.ownerDocument||t,e=Im(e),(u=rt.get(u))&&Pi(e,u),n=n.createElement("link"),jl(n);var c=n;c._p=new Promise(function(i,f){c.onload=i,c.onerror=f}),Xl(n,"link",e),a.instance=n}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(l.count++,a=jn.bind(l),t.addEventListener("load",a),t.addEventListener("error",a))}}var tf=0;function Kh(l,t){return l.stylesheets&&l.count===0&&Rn(l,l.stylesheets),0tf?50:800)+t);return l.unsuspend=a,function(){l.unsuspend=null,clearTimeout(e),clearTimeout(u)}}:null}function jn(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Rn(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var Cn=null;function Rn(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,Cn=new Map,t.forEach(Jh,l),Cn=null,jn.call(l))}function Jh(l,t){if(!(t.state.loading&4)){var a=Cn.get(l);if(a)var e=a.get(null);else{a=new Map,Cn.set(l,a);for(var u=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(d)}catch(O){console.error(O)}}return d(),of.exports=iv(),of.exports}var sv=fv();const ov="modulepreload",mv=function(d){return"/v2/"+d},A0={},Kt=function(O,M,o){let p=Promise.resolve();if(M&&M.length>0){let D=function(U){return Promise.all(U.map(B=>Promise.resolve(B).then(x=>({status:"fulfilled",value:x}),x=>({status:"rejected",reason:x}))))};document.getElementsByTagName("link");const N=document.querySelector("meta[property=csp-nonce]"),b=(N==null?void 0:N.nonce)||(N==null?void 0:N.getAttribute("nonce"));p=D(M.map(U=>{if(U=mv(U),U in A0)return;A0[U]=!0;const B=U.endsWith(".css"),x=B?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${U}"]${x}`))return;const H=document.createElement("link");if(H.rel=B?"stylesheet":ov,B||(H.as="script"),H.crossOrigin="",H.href=U,b&&H.setAttribute("nonce",b),document.head.appendChild(H),B)return new Promise((W,Z)=>{H.addEventListener("load",W),H.addEventListener("error",()=>Z(new Error(`Unable to preload CSS for ${U}`)))})}))}function E(D){const N=new Event("vite:preloadError",{cancelable:!0});if(N.payload=D,window.dispatchEvent(N),!N.defaultPrevented)throw D}return p.then(D=>{for(const N of D||[])N.status==="rejected"&&E(N.reason);return O().catch(E)})},D0=_.createContext({windows:[],openWindow:()=>{},closeWindow:()=>{},bringToFront:()=>{}}),dv=({children:d})=>{const[O,M]=_.useState([]),o=_.useRef(1e4),p=_.useCallback((N,b,U)=>{M(B=>B.find(H=>H.id===N)?B.map(H=>H.id===N?{...H,zIndex:++o.current}:H):[...B,{id:N,title:b,charName:U,zIndex:++o.current}])},[]),E=_.useCallback(N=>{M(b=>b.filter(U=>U.id!==N))},[]),D=_.useCallback(N=>{M(b=>b.map(U=>U.id===N?{...U,zIndex:++o.current}:U))},[]);return r.jsx(D0.Provider,{value:{windows:O,openWindow:p,closeWindow:E,bringToFront:D},children:d})},Zn=()=>_.useContext(D0),gt={west:-102.1,east:102.1,north:102.1,south:-102.1};function zu(d,O,M,o){const p=(d-gt.west)/(gt.east-gt.west)*M,E=(gt.north-O)/(gt.north-gt.south)*o;return{x:p,y:E}}function hv(d,O,M,o,p,E,D){const N=(d-o)/M,b=(O-p)/M,U=gt.west+N/E*(gt.east-gt.west),B=gt.north-b/D*(gt.north-gt.south);return{ew:U,ns:B}}function hf(d,O){const M=d>=0?"N":"S",o=O>=0?"E":"W";return`${Math.abs(d).toFixed(1)}${M}, ${Math.abs(O).toFixed(1)}${o}`}const O0=bu.memo(({players:d,imgW:O,imgH:M,getColor:o,onHover:p,onSelect:E,selectedPlayer:D})=>{const N=_.useMemo(()=>d.filter(b=>b.ew!==void 0&&b.ns!==void 0).map(b=>({...b,pos:zu(b.ew,b.ns,O,M),color:o(b.character_name)})),[d,O,M,o]);return r.jsx("div",{className:"ml-dots-layer",children:N.map(b=>r.jsx("div",{className:`ml-dot ${D===b.character_name?"ml-dot-selected":""}`,style:{left:b.pos.x,top:b.pos.y,backgroundColor:b.color},onMouseEnter:U=>{var x;const B=(x=U.currentTarget.closest(".ml-map-container"))==null?void 0:x.getBoundingClientRect();B&&p(b,U.clientX-B.left,U.clientY-B.top)},onMouseLeave:()=>p(null,0,0),onClick:()=>E(b.character_name)},b.character_name))})});O0.displayName="PlayerDots";const vv="/api";async function ba(d){const O=await fetch(`${vv}${d}`,{credentials:"include"});if(!O.ok)throw new Error(`API ${d}: ${O.status}`);return O.json()}function yv(){return`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}/api/ws/live`}const N0=bu.memo(({imgW:d,imgH:O,getColor:M})=>{const[o,p]=_.useState([]);_.useEffect(()=>{const D=async()=>{try{const b=await ba("/trails/?seconds=600");p(b.trails??[])}catch{}};D();const N=setInterval(D,2e3);return()=>clearInterval(N)},[]);const E=_.useMemo(()=>{const D={};for(const N of o){const{x:b,y:U}=zu(N.ew,N.ns,d,O);D[N.character_name]||(D[N.character_name]=[]),D[N.character_name].push(`${b},${U}`)}return Object.entries(D).filter(([,N])=>N.length>=2).map(([N,b])=>({name:N,points:b.join(" ")}))},[o,d,O]);return r.jsx("svg",{className:"ml-trails-svg",viewBox:`0 0 ${d} ${O}`,preserveAspectRatio:"none",children:E.map(D=>r.jsx("polyline",{points:D.points,stroke:M(D.name),fill:"none",strokeWidth:2,strokeOpacity:.7,strokeLinecap:"round",strokeLinejoin:"round"},D.name))})});N0.displayName="TrailsSVG";const rv=({imgW:d,imgH:O,enabled:M})=>{const o=_.useRef(null),[p,E]=_.useState([]);return _.useEffect(()=>{if(!M)return;(async()=>{try{const N=await ba("/spawns/heatmap?hours=24&limit=50000");E(N.spawn_points??[])}catch{}})()},[M]),_.useEffect(()=>{const D=o.current;if(!D||!M||p.length===0||d===0)return;D.width=d,D.height=O;const N=D.getContext("2d");if(N){N.clearRect(0,0,d,O);for(const b of p){const{x:U,y:B}=zu(b.ew,b.ns,d,O),x=Math.max(5,Math.min(12,5+Math.sqrt(b.intensity*.5))),H=N.createRadialGradient(U,B,0,U,B,x);H.addColorStop(0,`rgba(255, 0, 0, ${Math.min(.9,b.intensity/40)})`),H.addColorStop(.6,`rgba(255, 100, 0, ${Math.min(.4,b.intensity/120)})`),H.addColorStop(1,"rgba(255, 150, 0, 0)"),N.fillStyle=H,N.fillRect(U-x,B-x,x*2,x*2)}}},[p,d,O,M]),M?r.jsx("canvas",{ref:o,className:"ml-heatmap-canvas"}):null},gv=({imgW:d,imgH:O,enabled:M})=>{const[o,p]=_.useState([]);_.useEffect(()=>{if(!M)return;const D=async()=>{try{const b=await ba("/portals");p(b.portals??[])}catch{}};D();const N=setInterval(D,6e4);return()=>clearInterval(N)},[M]);const E=_.useMemo(()=>o.map(D=>({...D,pos:zu(D.coordinates.ew,D.coordinates.ns,d,O)})),[o,d,O]);return!M||E.length===0?null:r.jsx("div",{className:"ml-portals-layer",children:E.map((D,N)=>r.jsx("div",{className:"ml-portal-icon",style:{left:D.pos.x,top:D.pos.y},title:`${D.portal_name} (by ${D.discovered_by})`},N))})},E0=20,M0=.3,Sv=({players:d,getColor:O,onSelectPlayer:M,showHeatmap:o,showPortals:p,selectedPlayer:E})=>{var hl;const D=_.useRef(null),N=_.useRef(null),[b,U]=_.useState({w:0,h:0}),[B,x]=_.useState(null),H=_.useRef(null),W=_.useRef({scale:1,offX:0,offY:0}),Z=_.useRef({dragging:!1,sx:0,sy:0,startOffX:0,startOffY:0}),I=_.useCallback(()=>{if(N.current){const{scale:j,offX:R,offY:Y}=W.current;N.current.style.transform=`translate(${R}px, ${Y}px) scale(${j})`}},[]),Rl=_.useCallback(j=>{const R=j.currentTarget;if(U({w:R.naturalWidth,h:R.naturalHeight}),D.current){const Y=D.current.clientWidth,w=D.current.clientHeight,k=Math.min(Y/R.naturalWidth,w/R.naturalHeight);W.current={scale:k,offX:(Y-R.naturalWidth*k)/2,offY:(w-R.naturalHeight*k)/2},I()}},[I]),kl=_.useCallback(j=>{var Jt;j.preventDefault();const R=(Jt=D.current)==null?void 0:Jt.getBoundingClientRect();if(!R)return;const Y=W.current,w=j.deltaY<0?1.1:.9,k=Math.min(E0,Math.max(M0,Y.scale*w)),dl=k/Y.scale,_l=j.clientX-R.left,za=j.clientY-R.top;W.current={scale:k,offX:_l-(_l-Y.offX)*dl,offY:za-(za-Y.offY)*dl},I()},[I]),Fl=_.useCallback(j=>{if(j.button!==0)return;const R=W.current;Z.current={dragging:!0,sx:j.clientX,sy:j.clientY,startOffX:R.offX,startOffY:R.offY}},[]);_.useEffect(()=>{const j=Y=>{const w=Z.current;if(w.dragging&&(W.current.offX=w.startOffX+(Y.clientX-w.sx),W.current.offY=w.startOffY+(Y.clientY-w.sy),I()),D.current&&b.w>0&&H.current){const k=D.current.getBoundingClientRect(),dl=W.current,_l=hv(Y.clientX-k.left,Y.clientY-k.top,dl.scale,dl.offX,dl.offY,b.w,b.h);H.current.textContent=hf(_l.ns,_l.ew)}},R=()=>{Z.current.dragging=!1};return window.addEventListener("mousemove",j),window.addEventListener("mouseup",R),()=>{window.removeEventListener("mousemove",j),window.removeEventListener("mouseup",R)}},[I,b.w,b.h]);const Al=_.useRef(null);_.useEffect(()=>{if(!E||b.w===0||!D.current||Al.current===E)return;const j=d.find(dl=>dl.character_name===E);if(!j)return;Al.current=E;const{x:R,y:Y}=zu(j.ew,j.ns,b.w,b.h),w=D.current.getBoundingClientRect(),k=3;W.current={scale:Math.min(E0,Math.max(M0,k)),offX:w.width/2-R*k,offY:w.height/2-Y*k},I()},[E,d,b.w,b.h,I]),_.useEffect(()=>{E||(Al.current=null)},[E]);const L=_.useCallback((j,R,Y)=>{x(j?{x:R,y:Y,player:j}:null)},[]);return r.jsxs("div",{className:"ml-map-container",ref:D,onWheel:kl,onMouseDown:Fl,children:[r.jsxs("div",{ref:N,className:"ml-map-group",children:[r.jsx("img",{src:"/dereth.png",alt:"Dereth",className:"ml-map-img",onLoad:Rl,draggable:!1}),b.w>0&&r.jsxs(r.Fragment,{children:[r.jsx(rv,{imgW:b.w,imgH:b.h,enabled:o}),r.jsx(N0,{imgW:b.w,imgH:b.h,getColor:O}),r.jsx(O0,{players:d,imgW:b.w,imgH:b.h,getColor:O,onHover:L,onSelect:M,selectedPlayer:E}),r.jsx(gv,{imgW:b.w,imgH:b.h,enabled:p})]})]}),B&&r.jsxs("div",{className:"ml-tooltip",style:{left:B.x+12,top:B.y-10},children:[r.jsx("strong",{children:B.player.character_name}),r.jsx("br",{}),hf(B.player.ns,B.player.ew),r.jsx("br",{}),B.player.kills_per_hour," kph · ",(hl=B.player.kills)==null?void 0:hl.toLocaleString()," kills"]}),r.jsx("div",{className:"ml-coords",ref:H})]})},x0=bu.memo(({player:d,vitals:O,color:M,onSelect:o})=>{var U,B;const{openWindow:p}=Zn(),E=(d.vt_state||"idle").toLowerCase(),D=E==="combat"||E==="hunt",N=(d.total_rares??0)>0?Math.round((d.total_kills??0)/(d.total_rares??1)).toLocaleString():null,b=d.character_name;return r.jsxs("li",{className:"ml-player-row",style:{borderLeftColor:M},children:[r.jsxs("div",{className:"ml-pr-header",onClick:o,children:[r.jsx("span",{className:"ml-pr-name",children:b}),r.jsx("span",{className:"ml-pr-coords",children:hf(d.ns,d.ew)})]}),r.jsxs("div",{className:"ml-pr-vitals",children:[r.jsx("div",{className:"ml-vital-bar hp",children:r.jsx("div",{className:"ml-vital-fill",style:{width:`${(O==null?void 0:O.health_percentage)??0}%`}})}),r.jsx("div",{className:"ml-vital-bar sta",children:r.jsx("div",{className:"ml-vital-fill",style:{width:`${(O==null?void 0:O.stamina_percentage)??0}%`}})}),r.jsx("div",{className:"ml-vital-bar mana",children:r.jsx("div",{className:"ml-vital-fill",style:{width:`${(O==null?void 0:O.mana_percentage)??0}%`}})})]}),r.jsxs("div",{className:"ml-pr-grid",children:[r.jsxs("span",{className:"ml-gs",title:"Session kills",children:["⚔️ ",((U=d.kills)==null?void 0:U.toLocaleString())??0]}),r.jsxs("span",{className:"ml-gs",title:"Total kills",children:["🏆 ",(d.total_kills??0).toLocaleString()]}),r.jsxs("span",{className:"ml-gs",title:"Kills per hour",children:[d.kills_per_hour??"0"," ",r.jsx("span",{className:"ml-suffix",children:"KPH"})]}),r.jsxs("span",{className:"ml-gs",title:"Rares (session / total)",children:["💎 ",d.session_rares??0," / ",d.total_rares??0]}),r.jsx("span",{className:"ml-gs",title:"Kills per rare",children:N?r.jsxs(r.Fragment,{children:["📊 ",N," ",r.jsx("span",{className:"ml-suffix",children:"KPR"})]}):""}),r.jsx("span",{className:`ml-meta-pill ${D?"active":""}`,children:d.vt_state||"idle"}),r.jsxs("span",{className:"ml-gs",title:"Online time",children:["🕐 ",((B=d.onlinetime)==null?void 0:B.replace(/^00\./,""))??"--"]}),r.jsxs("span",{className:"ml-gs",title:"Deaths",children:["☠️ ",d.deaths??"0"]}),r.jsxs("span",{className:"ml-gs",title:"Prismatic tapers",children:[r.jsx("img",{src:"/prismatic-taper-icon.png",className:"ml-taper-icon",alt:""}),d.prismatic_taper_count??"0"]})]}),r.jsxs("div",{className:"ml-pr-buttons",children:[r.jsx("button",{className:"ml-btn accent",onClick:()=>p(`chat-${b}`,`Chat: ${b}`,b),children:"Chat"}),r.jsx("button",{className:"ml-btn accent",onClick:()=>p(`stats-${b}`,`Stats: ${b}`,b),children:"Stats"}),r.jsx("button",{className:"ml-btn accent",onClick:()=>p(`inv-${b}`,`Inventory: ${b}`,b),children:"Inv"}),r.jsx("button",{className:"ml-btn",onClick:()=>p(`char-${b}`,`Character: ${b}`,b),children:"Char"}),r.jsx("button",{className:"ml-btn",onClick:()=>p(`combat-${b}`,`Combat: ${b}`,b),children:"Combat"}),r.jsx("button",{className:"ml-btn",onClick:()=>p(`radar-${b}`,`Radar: ${b}`,b),children:"Radar"})]})]})});x0.displayName="PlayerRow";const bv=({players:d,vitals:O,getColor:M,onSelect:o})=>r.jsx("ul",{className:"ml-player-list",children:d.map(p=>r.jsx(x0,{player:p,vitals:O.get(p.character_name)??null,color:M(p.character_name),onSelect:()=>o(p.character_name)},p.character_name))}),zv=[{key:"name",label:"Name"},{key:"kph",label:"KPH"},{key:"skills",label:"S.Kills"},{key:"srares",label:"S.Rares"},{key:"tkills",label:"T.Kills"},{key:"kpr",label:"KPR"}],Tv=({value:d,onChange:O})=>r.jsx("div",{className:"ml-sort-buttons",children:zv.map(M=>r.jsx("button",{className:`ml-sort-btn ${d===M.key?"active":""}`,onClick:()=>O(M.key),children:M.label},M.key))}),Av=()=>{const{openWindow:d}=Zn();return r.jsxs("div",{className:"ml-tool-links",children:[r.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:()=>d("issues","Issues Board"),children:"📋 Issues"}),r.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:()=>d("vitalsharing","Vital Sharing"),children:"🤝 Vitals"}),r.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:()=>d("combatpicker","Combat Stats"),children:"⚔️ Combat"})]})},Ev=({players:d,vitals:O,serverHealth:M,totalRares:o,totalKills:p,getColor:E,onSelectPlayer:D,onViewToggle:N,showHeatmap:b,showPortals:U,onToggleHeatmap:B,onTogglePortals:x,version:H})=>{var j,R;const[W,Z]=_.useState("name"),[I,Rl]=_.useState(""),kl=_.useMemo(()=>d.reduce((Y,w)=>Y+(parseInt(w.kills_per_hour)||0),0),[d]),Fl=((j=M==null?void 0:M.status)==null?void 0:j.toLowerCase())==="online"||((R=M==null?void 0:M.status)==null?void 0:R.toLowerCase())==="up",Al=_.useDeferredValue(d),L=_.useDeferredValue(O),hl=_.useMemo(()=>{let Y=[...Al];switch(I&&(Y=Y.filter(w=>w.character_name.toLowerCase().startsWith(I.toLowerCase()))),W){case"kph":Y.sort((w,k)=>(parseInt(k.kills_per_hour)||0)-(parseInt(w.kills_per_hour)||0));break;case"skills":Y.sort((w,k)=>(k.kills||0)-(w.kills||0));break;case"srares":Y.sort((w,k)=>(k.session_rares??0)-(w.session_rares??0));break;case"tkills":Y.sort((w,k)=>(k.total_kills??0)-(w.total_kills??0));break;case"kpr":Y.sort((w,k)=>{const dl=(w.total_kills??0)/Math.max(1,w.total_rares??1),_l=(k.total_kills??0)/Math.max(1,k.total_rares??1);return dl-_l});break;default:Y.sort((w,k)=>w.character_name.localeCompare(k.character_name))}return Y},[Al,W,I]);return r.jsxs("div",{className:"ml-sidebar",children:[H&&r.jsxs("div",{className:"ml-version",children:["v",H]}),r.jsx("div",{className:"ml-sidebar-header",children:r.jsxs("span",{className:"ml-sidebar-title",children:["Active Mosswart Enjoyers (",d.length,")"]})}),r.jsxs("div",{className:"ml-server-status",children:[r.jsx("span",{className:`ml-status-dot ${Fl?"online":"offline"}`}),r.jsxs("span",{className:"ml-status-text",children:["Coldeve ",Fl?"Online":"Offline"]}),(M==null?void 0:M.player_count)!=null&&r.jsxs("span",{className:"ml-status-detail",children:["👥 ",M.player_count]}),(M==null?void 0:M.latency_ms)!=null&&r.jsxs("span",{className:"ml-status-detail",children:[Math.round(M.latency_ms),"ms"]}),(M==null?void 0:M.uptime_seconds)!=null&&r.jsxs("span",{className:"ml-status-detail",children:["Up: ",Math.floor(M.uptime_seconds/3600),"h"]})]}),r.jsxs("div",{className:"ml-counters",children:[r.jsxs("div",{className:"ml-counter rares",children:[r.jsx("span",{className:"ml-counter-val",children:o}),r.jsx("span",{className:"ml-counter-lbl",children:"Rares"})]}),r.jsxs("div",{className:`ml-counter kph ${kl>5e3?"ultra":""}`,children:[r.jsx("span",{className:"ml-counter-val",children:kl.toLocaleString()}),r.jsx("span",{className:"ml-counter-lbl",children:"Server KPH"})]}),r.jsxs("div",{className:"ml-counter kills",children:[r.jsx("span",{className:"ml-counter-val",children:p.toLocaleString()}),r.jsx("span",{className:"ml-counter-lbl",children:"Kills"})]})]}),r.jsxs("div",{className:"ml-tool-links",children:[r.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:N,children:"📊 Dashboard"}),r.jsx("a",{href:"/inventory.html",target:"_blank",className:"ml-tool-link",children:"🔍 Inv Search"}),r.jsx("a",{href:"/suitbuilder.html",target:"_blank",className:"ml-tool-link",children:"🛡️ Suitbuilder"}),r.jsx("a",{href:"/debug.html",target:"_blank",className:"ml-tool-link",children:"🐛 Debug"}),r.jsx("a",{href:"/quest-status.html",target:"_blank",className:"ml-tool-link",children:"📜 Quests"})]}),r.jsx(Av,{}),r.jsxs("div",{className:"ml-toggles",children:[r.jsxs("label",{className:"ml-toggle-label",children:[r.jsx("input",{type:"checkbox",checked:b,onChange:Y=>B(Y.target.checked)}),r.jsx("span",{children:"Spawn Heatmap"})]}),r.jsxs("label",{className:"ml-toggle-label",children:[r.jsx("input",{type:"checkbox",checked:U,onChange:Y=>x(Y.target.checked)}),r.jsx("span",{children:"Portals"})]})]}),r.jsx(Tv,{value:W,onChange:Z}),r.jsx("input",{className:"ml-filter",type:"text",placeholder:"Filter players...",value:I,onChange:Y=>Rl(Y.target.value)}),r.jsx(bv,{players:hl,vitals:L,getColor:E,onSelect:D})]})},Mv=({id:d,title:O,zIndex:M,width:o=700,height:p=340,children:E})=>{const{closeWindow:D,bringToFront:N}=Zn(),b=_.useRef(null),U=_.useRef({dragging:!1,sx:0,sy:0,ox:0,oy:0}),B=_.useRef({x:420,y:10+Math.random()*40}),x=_.useCallback(H=>{var Z;H.preventDefault(),N(d);const W=(Z=b.current)==null?void 0:Z.getBoundingClientRect();W&&(U.current={dragging:!0,sx:H.clientX,sy:H.clientY,ox:W.left,oy:W.top})},[d,N]);return _.useEffect(()=>{const H=Z=>{const I=U.current;!I.dragging||!b.current||(B.current.x=I.ox+(Z.clientX-I.sx),B.current.y=I.oy+(Z.clientY-I.sy),b.current.style.left=`${B.current.x}px`,b.current.style.top=`${B.current.y}px`)},W=()=>{U.current.dragging=!1};return window.addEventListener("mousemove",H),window.addEventListener("mouseup",W),()=>{window.removeEventListener("mousemove",H),window.removeEventListener("mouseup",W)}},[]),r.jsxs("div",{ref:b,className:"ml-window",style:{zIndex:M,width:o,height:p,left:B.current.x,top:B.current.y},onMouseDown:()=>N(d),children:[r.jsxs("div",{className:"ml-window-header",onMouseDown:x,children:[r.jsx("span",{className:"ml-window-title",children:O}),r.jsx("button",{className:"ml-window-close",onClick:()=>D(d),children:"×"})]}),r.jsx("div",{className:"ml-window-content",children:E})]})},_v={0:"#00FF00",2:"#FFFFFF",3:"#FF0000",4:"#FFFFFF",5:"#33CCFF",6:"#CCFF99",7:"#00FFFF",14:"#FFD700",15:"#FF69B4",17:"#AAAAFF",18:"#88FF88",21:"#FF8888",22:"#FFAA66"},pv=({id:d,charName:O,zIndex:M,messages:o,socket:p})=>{const E=_.useRef(null),[D,N]=_.useState("");_.useEffect(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)},[o.length]);const b=U=>{U.preventDefault();const B=D.trim();!B||!p||p.readyState!==WebSocket.OPEN||(p.send(JSON.stringify({player_name:O,command:B})),N(""))};return r.jsxs(Mv,{id:d,title:`Chat: ${O}`,zIndex:M,width:600,height:300,children:[r.jsx("div",{className:"ml-chat-messages",ref:E,children:o.map((U,B)=>r.jsx("div",{className:"ml-chat-line",style:{color:_v[U.color??2]??"#ddd"},children:U.text},B))}),r.jsx("form",{className:"ml-chat-form",onSubmit:b,children:r.jsx("input",{className:"ml-chat-input",value:D,onChange:U=>N(U.target.value),placeholder:"Enter chat..."})})]})},Dv=_.lazy(()=>Kt(()=>import("./StatsWindow-BT7jJ8yH.js"),__vite__mapDeps([0,1])).then(d=>({default:d.StatsWindow}))),Ov=_.lazy(()=>Kt(()=>import("./CharacterWindow-C26CdTBY.js"),__vite__mapDeps([2,1])).then(d=>({default:d.CharacterWindow}))),Nv=_.lazy(()=>Kt(()=>import("./InventoryWindow-DLq3agcE.js"),__vite__mapDeps([3,1])).then(d=>({default:d.InventoryWindow}))),xv=_.lazy(()=>Kt(()=>import("./RadarWindow-T2z8FzRN.js"),__vite__mapDeps([4,1])).then(d=>({default:d.RadarWindow}))),Uv=_.lazy(()=>Kt(()=>import("./CombatStatsWindow-Ct0adxan.js"),__vite__mapDeps([5,1])).then(d=>({default:d.CombatStatsWindow}))),jv=_.lazy(()=>Kt(()=>import("./CombatPickerWindow-BOlAFaCG.js"),__vite__mapDeps([6,1])).then(d=>({default:d.CombatPickerWindow}))),Cv=_.lazy(()=>Kt(()=>import("./IssuesWindow-CSupRDWU.js"),__vite__mapDeps([7,1])).then(d=>({default:d.IssuesWindow}))),Rv=_.lazy(()=>Kt(()=>import("./VitalSharingWindow-CwE3JOVC.js"),__vite__mapDeps([8,1])).then(d=>({default:d.VitalSharingWindow}))),U0=bu.memo(({characters:d,chatMessages:O,nearbyObjects:M,socket:o})=>{const{windows:p}=Zn();return r.jsx(_.Suspense,{fallback:null,children:p.map(E=>{var b;const D=E.charName??"";switch(E.id.split("-")[0]){case"chat":return r.jsx(pv,{id:E.id,charName:D,zIndex:E.zIndex,messages:O.get(D)??[],socket:o},E.id);case"stats":return r.jsx(Dv,{id:E.id,charName:D,zIndex:E.zIndex},E.id);case"char":return r.jsx(Ov,{id:E.id,charName:D,zIndex:E.zIndex,vitals:((b=d.get(D))==null?void 0:b.vitals)??void 0},E.id);case"inv":return r.jsx(Nv,{id:E.id,charName:D,zIndex:E.zIndex},E.id);case"radar":return r.jsx(xv,{id:E.id,charName:D,zIndex:E.zIndex,socket:o,radarData:M.get(D)??null},E.id);case"combat":return r.jsx(Uv,{id:E.id,charName:D,zIndex:E.zIndex},E.id);case"combatpicker":return r.jsx(jv,{id:E.id,zIndex:E.zIndex,characters:d},E.id);case"issues":return r.jsx(Cv,{id:E.id,zIndex:E.zIndex},E.id);case"vitalsharing":return r.jsx(Rv,{id:E.id,zIndex:E.zIndex},E.id);default:return null}})})});U0.displayName="WindowRenderer";let Hv=0;const Bv=({recentRares:d})=>{const[O,M]=_.useState([]),[o,p]=_.useState(0),[E,D]=_.useState([]);_.useEffect(()=>{if(d.length>o&&o>0){const b=d.slice(0,d.length-o);for(const U of b){const B=++Hv;M(x=>[...x,{key:B,charName:U.character_name,rareName:U.name,exiting:!1}]),N(),setTimeout(()=>{M(x=>x.map(H=>H.key===B?{...H,exiting:!0}:H)),setTimeout(()=>{M(x=>x.filter(H=>H.key!==B))},500)},6e3)}}p(d.length)},[d.length]);const N=_.useCallback(()=>{const b=Date.now(),U=["#FFD700","#FF4444","#FF8800","#AA44FF","#4488FF"],B=Array.from({length:30},(x,H)=>{const W=Math.PI*2*H/30+(Math.random()-.5)*.5,Z=100+Math.random()*200;return{dx:Math.cos(W)*Z,dy:Math.sin(W)*Z-50,color:U[Math.floor(Math.random()*U.length)]}});D(x=>[...x,{id:b,particles:B}]),setTimeout(()=>D(x=>x.filter(H=>H.id!==b)),2200)},[]);return r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"ml-rare-notifications",children:O.map(b=>r.jsxs("div",{className:`ml-rare-notif ${b.exiting?"exiting":""}`,children:[r.jsx("div",{className:"ml-rare-notif-title",children:"🎆 LEGENDARY RARE! 🎆"}),r.jsx("div",{className:"ml-rare-notif-name",children:b.rareName}),r.jsx("div",{className:"ml-rare-notif-by",children:"found by"}),r.jsx("div",{className:"ml-rare-notif-char",children:b.charName})]},b.key))}),r.jsx("div",{className:"ml-fireworks",children:E.map(b=>r.jsx(bu.Fragment,{children:b.particles.map((U,B)=>r.jsx("div",{className:"ml-firework-particle",style:{left:"50%",top:"30%",backgroundColor:U.color,"--dx":`${U.dx}px`,"--dy":`${U.dy+200}px`}},B))},b.id))})]})},_0=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf","#ff4444","#44ff44","#4444ff","#ffff44","#ff44ff","#44ffff","#ff8844","#88ff44","#4488ff","#ff4488","#cc3333","#33cc33","#3333cc","#cccc33","#cc33cc","#33cccc","#cc6633","#66cc33","#3366cc","#cc3366","#ff6666","#66ff66","#6666ff","#ffff66","#ff66ff","#66ffff","#ffaa66","#aaff66","#66aaff","#ff66aa","#990099","#009900","#000099","#990000","#009999","#999900","#aa5500","#55aa00","#0055aa","#aa0055","#ffaaaa","#aaffaa","#aaaaff","#ffffaa","#ffaaff","#aaffff","#ffccaa","#ccffaa","#aaccff","#ffaacc"];function qv(d){let O=0;for(let M=0;M{let p=d.current.get(o);return p||(p=O.current<_0.length?_0[O.current++]:qv(o),d.current.set(o,p)),p},[])}const Xv=({data:d,onViewToggle:O})=>{const M=Yv(),[o,p]=_.useState(!1),[E,D]=_.useState(!1),[N,b]=_.useState(null),U=_.useMemo(()=>Array.from(d.characters.values()).filter(Z=>Z.telemetry).map(Z=>Z.telemetry),[d.characters]),B=_.useMemo(()=>new Map(Array.from(d.characters.values()).filter(Z=>Z.vitals).map(Z=>[Z.name,Z.vitals])),[d.characters]),[x,H]=_.useState("");_.useEffect(()=>{fetch("/api/api-version",{credentials:"include"}).then(Z=>Z.json()).then(Z=>H(Z.version??"")).catch(()=>{})},[]);const W=_.useCallback(Z=>{b(I=>I===Z?null:Z)},[]);return r.jsx(dv,{children:r.jsxs("div",{className:"ml-layout",children:[r.jsx(Ev,{players:U,vitals:B,serverHealth:d.serverHealth,totalRares:d.totalRares,totalKills:d.totalKills,getColor:M,onSelectPlayer:W,onViewToggle:O,showHeatmap:o,showPortals:E,onToggleHeatmap:p,onTogglePortals:D,version:x}),r.jsx(Sv,{players:U,getColor:M,onSelectPlayer:W,showHeatmap:o,showPortals:E,selectedPlayer:N}),r.jsx(U0,{characters:d.characters,chatMessages:d.chatMessages,nearbyObjects:d.nearbyObjects,socket:d.socketRef.current}),r.jsx(Bv,{recentRares:d.recentRares})]})})};function Gv(d){const O=_.useRef(null),M=_.useRef(0),o=_.useRef(d);o.current=d;const p=_.useCallback(()=>{var D;if(((D=O.current)==null?void 0:D.readyState)===WebSocket.OPEN)return;const E=new WebSocket(yv());O.current=E,E.addEventListener("message",N=>{try{const b=JSON.parse(N.data);o.current(b)}catch{}}),E.addEventListener("close",()=>{O.current=null,M.current=window.setTimeout(p,2e3)}),E.addEventListener("error",()=>{E.close()})},[]);return _.useEffect(()=>(p(),()=>{var E;clearTimeout(M.current),(E=O.current)==null||E.close(),O.current=null}),[p]),O}const Qv=()=>ba("/live"),Zv=()=>ba("/combat-stats"),Vv=()=>ba("/server-health"),Lv=()=>ba("/total-rares"),Kv=()=>ba("/total-kills");function Jv(){const[d,O]=_.useState(new Map),[M,o]=_.useState(null),[p,E]=_.useState(0),[D,N]=_.useState(0),[b,U]=_.useState([]),B=_.useRef(new Map),[x,H]=_.useState(0),[W,Z]=_.useState(new Map),I=_.useRef(d);I.current=d;const Rl=_.useCallback((L,hl)=>{O(j=>{const R=new Map(j),Y=R.get(L)??{name:L,telemetry:null,vitals:null,combat:null,lastUpdate:0};return R.set(L,hl(Y)),R})},[]),kl=_.useCallback(L=>{var hl;if(L.type){if(L.type==="telemetry"){const j=L;Rl(j.character_name,R=>({...R,telemetry:j,lastUpdate:Date.now()}))}else if(L.type==="vitals"){const j=L;Rl(j.character_name,R=>({...R,vitals:j,lastUpdate:Date.now()}))}else if(L.type==="combat_stats"){const j=L;Rl(j.character_name,R=>({...R,combat:j,lastUpdate:Date.now()}))}else if(L.type==="rare"){const j=L;U(R=>[j,...R].slice(0,50))}else if(L.type==="dungeon_map"){const j=L;j.landblock&&(window.__dungeonMapCache||(window.__dungeonMapCache={}),window.__dungeonMapCache[j.landblock]=j)}else if(L.type==="nearby_objects"){const j=L;if(Z(R=>{const Y=new Map(R);return Y.set(j.character_name,j),Y}),j.is_dungeon&&j.landblock&&!((hl=window.__dungeonMapCache)!=null&&hl[j.landblock])){const R=Fl.current;(R==null?void 0:R.readyState)===WebSocket.OPEN&&R.send(JSON.stringify({type:"request_dungeon_map",landblock:j.landblock}))}}else if(L.type==="chat"){const j=L,R=B.current.get(j.character_name)??[];R.push({text:j.text,color:j.color,timestamp:j.timestamp}),R.length>1e3&&R.splice(0,R.length-1e3),B.current.set(j.character_name,R),H(Y=>Y+1)}}},[Rl]),Fl=Gv(kl);_.useEffect(()=>{const L=async()=>{try{const j=await Qv();O(R=>{var w;const Y=new Map(R);for(const k of j.players??[]){const dl=Y.get(k.character_name);Y.set(k.character_name,{name:k.character_name,telemetry:k,vitals:(dl==null?void 0:dl.vitals)??null,combat:(dl==null?void 0:dl.combat)??null,lastUpdate:Date.now()})}for(const k of Y.keys())(w=j.players)!=null&&w.some(dl=>dl.character_name===k)||Y.delete(k);return Y})}catch{}};L();const hl=setInterval(L,5e3);return()=>clearInterval(hl)},[]),_.useEffect(()=>{const L=async()=>{try{const j=await Zv();for(const R of j.stats??[])Rl(R.character_name,Y=>({...Y,combat:{...R,type:"combat_stats"}}))}catch{}};L();const hl=setInterval(L,3e4);return()=>clearInterval(hl)},[Rl]),_.useEffect(()=>{const L=async()=>{try{o(await Vv())}catch{}};L();const hl=setInterval(L,3e4);return()=>clearInterval(hl)},[]),_.useEffect(()=>{const L=async()=>{try{const[j,R]=await Promise.all([Lv(),Kv()]);E(j.all_time??0),N(R.total??0)}catch{}};L();const hl=setInterval(L,3e5);return()=>clearInterval(hl)},[]);const Al=_.useMemo(()=>B.current,[x]);return{characters:d,serverHealth:M,totalRares:p,totalKills:D,recentRares:b,chatMessages:Al,nearbyObjects:W,socketRef:Fl}}const wv=_.lazy(()=>Kt(()=>import("./DashboardView-ReNIceoO.js"),__vite__mapDeps([9,1])));function Wv(){const[d,O]=_.useState(()=>localStorage.getItem("v2-view")||"map"),M=Jv(),o=()=>{const p=d==="map"?"dashboard":"map";O(p),localStorage.setItem("v2-view",p)};return d==="map"?r.jsx(Xv,{data:M,onViewToggle:o}):r.jsx(_.Suspense,{fallback:r.jsx("div",{style:{background:"#0d0d0d",color:"#888",padding:40,textAlign:"center"},children:"Loading dashboard..."}),children:r.jsx(wv,{data:M,onViewToggle:o})})}sv.createRoot(document.getElementById("root")).render(r.jsx(_.StrictMode,{children:r.jsx(Wv,{})}));"serviceWorker"in navigator&&navigator.serviceWorker.register("/v2/sw.js").catch(()=>{});export{Mv as D,bu as R,ba as a,r as j,_ as r,Zn as u}; diff --git a/static/v2/assets/index-DaZ3M_iW.js b/static/v2/assets/index-DaZ3M_iW.js deleted file mode 100644 index 4382a1c5..00000000 --- a/static/v2/assets/index-DaZ3M_iW.js +++ /dev/null @@ -1,49 +0,0 @@ -(function(){const v=document.createElement("link").relList;if(v&&v.supports&&v.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const x of r)if(x.type==="childList")for(const z of x.addedNodes)z.tagName==="LINK"&&z.rel==="modulepreload"&&o(z)}).observe(document,{childList:!0,subtree:!0});function S(r){const x={};return r.integrity&&(x.integrity=r.integrity),r.referrerPolicy&&(x.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?x.credentials="include":r.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function o(r){if(r.ep)return;r.ep=!0;const x=S(r);fetch(r.href,x)}})();var $y=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function U0(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var _s={exports:{}},Dn={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Bd;function B0(){if(Bd)return Dn;Bd=1;var s=Symbol.for("react.transitional.element"),v=Symbol.for("react.fragment");function S(o,r,x){var z=null;if(x!==void 0&&(z=""+x),r.key!==void 0&&(z=""+r.key),"key"in r){x={};for(var R in r)R!=="key"&&(x[R]=r[R])}else x=r;return r=x.ref,{$$typeof:s,type:o,key:z,ref:r!==void 0?r:null,props:x}}return Dn.Fragment=v,Dn.jsx=S,Dn.jsxs=S,Dn}var Hd;function H0(){return Hd||(Hd=1,_s.exports=B0()),_s.exports}var i=H0(),js={exports:{}},ot={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Yd;function Y0(){if(Yd)return ot;Yd=1;var s=Symbol.for("react.transitional.element"),v=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),x=Symbol.for("react.consumer"),z=Symbol.for("react.context"),R=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),Y=Symbol.for("react.lazy"),U=Symbol.for("react.activity"),X=Symbol.iterator;function et(m){return m===null||typeof m!="object"?null:(m=X&&m[X]||m["@@iterator"],typeof m=="function"?m:null)}var F={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},lt=Object.assign,gt={};function P(m,C,w){this.props=m,this.context=C,this.refs=gt,this.updater=w||F}P.prototype.isReactComponent={},P.prototype.setState=function(m,C){if(typeof m!="object"&&typeof m!="function"&&m!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,m,C,"setState")},P.prototype.forceUpdate=function(m){this.updater.enqueueForceUpdate(this,m,"forceUpdate")};function M(){}M.prototype=P.prototype;function I(m,C,w){this.props=m,this.context=C,this.refs=gt,this.updater=w||F}var G=I.prototype=new M;G.constructor=I,lt(G,P.prototype),G.isPureReactComponent=!0;var J=Array.isArray;function k(){}var T={H:null,A:null,T:null,S:null},L=Object.prototype.hasOwnProperty;function K(m,C,w){var Z=w.ref;return{$$typeof:s,type:m,key:C,ref:Z!==void 0?Z:null,props:w}}function V(m,C){return K(m.type,C,m.props)}function nt(m){return typeof m=="object"&&m!==null&&m.$$typeof===s}function st(m){var C={"=":"=0",":":"=2"};return"$"+m.replace(/[=:]/g,function(w){return C[w]})}var mt=/\/+/g;function Q(m,C){return typeof m=="object"&&m!==null&&m.key!=null?st(""+m.key):C.toString(36)}function $(m){switch(m.status){case"fulfilled":return m.value;case"rejected":throw m.reason;default:switch(typeof m.status=="string"?m.then(k,k):(m.status="pending",m.then(function(C){m.status==="pending"&&(m.status="fulfilled",m.value=C)},function(C){m.status==="pending"&&(m.status="rejected",m.reason=C)})),m.status){case"fulfilled":return m.value;case"rejected":throw m.reason}}throw m}function E(m,C,w,Z,it){var ft=typeof m;(ft==="undefined"||ft==="boolean")&&(m=null);var dt=!1;if(m===null)dt=!0;else switch(ft){case"bigint":case"string":case"number":dt=!0;break;case"object":switch(m.$$typeof){case s:case v:dt=!0;break;case Y:return dt=m._init,E(dt(m._payload),C,w,Z,it)}}if(dt)return it=it(m),dt=Z===""?"."+Q(m,0):Z,J(it)?(w="",dt!=null&&(w=dt.replace(mt,"$&/")+"/"),E(it,C,w,"",function(ll){return ll})):it!=null&&(nt(it)&&(it=V(it,w+(it.key==null||m&&m.key===it.key?"":(""+it.key).replace(mt,"$&/")+"/")+dt)),C.push(it)),1;dt=0;var Rt=Z===""?".":Z+":";if(J(m))for(var Ot=0;Ot>>1,yt=E[W];if(0>>1;Wr(w,B))Zr(it,w)?(E[W]=it,E[Z]=B,W=Z):(E[W]=w,E[C]=B,W=C);else if(Zr(it,B))E[W]=it,E[Z]=B,W=Z;else break t}}return h}function r(E,h){var B=E.sortIndex-h.sortIndex;return B!==0?B:E.id-h.id}if(s.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;s.unstable_now=function(){return x.now()}}else{var z=Date,R=z.now();s.unstable_now=function(){return z.now()-R}}var g=[],p=[],Y=1,U=null,X=3,et=!1,F=!1,lt=!1,gt=!1,P=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,I=typeof setImmediate<"u"?setImmediate:null;function G(E){for(var h=S(p);h!==null;){if(h.callback===null)o(p);else if(h.startTime<=E)o(p),h.sortIndex=h.expirationTime,v(g,h);else break;h=S(p)}}function J(E){if(lt=!1,G(E),!F)if(S(g)!==null)F=!0,k||(k=!0,st());else{var h=S(p);h!==null&&$(J,h.startTime-E)}}var k=!1,T=-1,L=5,K=-1;function V(){return gt?!0:!(s.unstable_now()-KE&&V());){var W=U.callback;if(typeof W=="function"){U.callback=null,X=U.priorityLevel;var yt=W(U.expirationTime<=E);if(E=s.unstable_now(),typeof yt=="function"){U.callback=yt,G(E),h=!0;break l}U===S(g)&&o(g),G(E)}else o(g);U=S(g)}if(U!==null)h=!0;else{var m=S(p);m!==null&&$(J,m.startTime-E),h=!1}}break t}finally{U=null,X=B,et=!1}h=void 0}}finally{h?st():k=!1}}}var st;if(typeof I=="function")st=function(){I(nt)};else if(typeof MessageChannel<"u"){var mt=new MessageChannel,Q=mt.port2;mt.port1.onmessage=nt,st=function(){Q.postMessage(null)}}else st=function(){P(nt,0)};function $(E,h){T=P(function(){E(s.unstable_now())},h)}s.unstable_IdlePriority=5,s.unstable_ImmediatePriority=1,s.unstable_LowPriority=4,s.unstable_NormalPriority=3,s.unstable_Profiling=null,s.unstable_UserBlockingPriority=2,s.unstable_cancelCallback=function(E){E.callback=null},s.unstable_forceFrameRate=function(E){0>E||125W?(E.sortIndex=B,v(p,E),S(g)===null&&E===S(p)&&(lt?(M(T),T=-1):lt=!0,$(J,B-W))):(E.sortIndex=yt,v(g,E),F||et||(F=!0,k||(k=!0,st()))),E},s.unstable_shouldYield=V,s.unstable_wrapCallback=function(E){var h=X;return function(){var B=X;X=h;try{return E.apply(this,arguments)}finally{X=B}}}})(As)),As}var Xd;function L0(){return Xd||(Xd=1,Es.exports=q0()),Es.exports}var Ms={exports:{}},It={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Gd;function X0(){if(Gd)return It;Gd=1;var s=Rs();function v(g){var p="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(v){console.error(v)}}return s(),Ms.exports=X0(),Ms.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var wd;function Q0(){if(wd)return Un;wd=1;var s=L0(),v=Rs(),S=G0();function o(t){var l="https://react.dev/errors/"+t;if(1yt||(t.current=W[yt],W[yt]=null,yt--)}function w(t,l){yt++,W[yt]=t.current,t.current=l}var Z=m(null),it=m(null),ft=m(null),dt=m(null);function Rt(t,l){switch(w(ft,l),w(it,t),w(Z,null),l.nodeType){case 9:case 11:t=(t=l.documentElement)&&(t=t.namespaceURI)?nd(t):0;break;default:if(t=l.tagName,l=l.namespaceURI)l=nd(l),t=ud(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}C(Z),w(Z,t)}function Ot(){C(Z),C(it),C(ft)}function ll(t){t.memoizedState!==null&&w(dt,t);var l=Z.current,e=ud(l,t.type);l!==e&&(w(it,t),w(Z,e))}function Bl(t){it.current===t&&(C(Z),C(it)),dt.current===t&&(C(dt),Cn._currentValue=B)}var Nl,La;function Ne(t){if(Nl===void 0)try{throw Error()}catch(e){var l=e.stack.trim().match(/\n( *(at )?)/);Nl=l&&l[1]||"",La=-1)":-1n||d[a]!==j[n]){var D=` -`+d[a].replace(" at new "," at ");return t.displayName&&D.includes("")&&(D=D.replace("",t.displayName)),D}while(1<=a&&0<=n);break}}}finally{ui=!1,Error.prepareStackTrace=e}return(e=t?t.displayName||t.name:"")?Ne(e):""}function rh(t,l){switch(t.tag){case 26:case 27:case 5:return Ne(t.type);case 16:return Ne("Lazy");case 13:return t.child!==l&&l!==null?Ne("Suspense Fallback"):Ne("Suspense");case 19:return Ne("SuspenseList");case 0:case 15:return ii(t.type,!1);case 11:return ii(t.type.render,!1);case 1:return ii(t.type,!0);case 31:return Ne("Activity");default:return""}}function Ds(t){try{var l="",e=null;do l+=rh(t,e),e=t,t=t.return;while(t);return l}catch(a){return` -Error generating stack: `+a.message+` -`+a.stack}}var ci=Object.prototype.hasOwnProperty,si=s.unstable_scheduleCallback,fi=s.unstable_cancelCallback,dh=s.unstable_shouldYield,hh=s.unstable_requestPaint,fl=s.unstable_now,mh=s.unstable_getCurrentPriorityLevel,Us=s.unstable_ImmediatePriority,Bs=s.unstable_UserBlockingPriority,Ln=s.unstable_NormalPriority,yh=s.unstable_LowPriority,Hs=s.unstable_IdlePriority,gh=s.log,vh=s.unstable_setDisableYieldValue,Xa=null,ol=null;function ue(t){if(typeof gh=="function"&&vh(t),ol&&typeof ol.setStrictMode=="function")try{ol.setStrictMode(Xa,t)}catch{}}var rl=Math.clz32?Math.clz32:bh,ph=Math.log,xh=Math.LN2;function bh(t){return t>>>=0,t===0?32:31-(ph(t)/xh|0)|0}var Xn=256,Gn=262144,Qn=4194304;function Re(t){var l=t&42;if(l!==0)return l;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function wn(t,l,e){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var f=a&134217727;return f!==0?(a=f&~u,a!==0?n=Re(a):(c&=f,c!==0?n=Re(c):e||(e=f&~t,e!==0&&(n=Re(e))))):(f=a&~u,f!==0?n=Re(f):c!==0?n=Re(c):e||(e=a&~t,e!==0&&(n=Re(e)))),n===0?0:l!==0&&l!==n&&(l&u)===0&&(u=n&-n,e=l&-l,u>=e||u===32&&(e&4194048)!==0)?l:n}function Ga(t,l){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&l)===0}function Sh(t,l){switch(t){case 1:case 2:case 4:case 8:case 64:return l+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ys(){var t=Qn;return Qn<<=1,(Qn&62914560)===0&&(Qn=4194304),t}function oi(t){for(var l=[],e=0;31>e;e++)l.push(t);return l}function Qa(t,l){t.pendingLanes|=l,l!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function _h(t,l,e,a,n,u){var c=t.pendingLanes;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=e,t.entangledLanes&=e,t.errorRecoveryDisabledLanes&=e,t.shellSuspendCounter=0;var f=t.entanglements,d=t.expirationTimes,j=t.hiddenUpdates;for(e=c&~e;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Th=/[\n"\\]/g;function Sl(t){return t.replace(Th,function(l){return"\\"+l.charCodeAt(0).toString(16)+" "})}function gi(t,l,e,a,n,u,c,f){t.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.type=c:t.removeAttribute("type"),l!=null?c==="number"?(l===0&&t.value===""||t.value!=l)&&(t.value=""+bl(l)):t.value!==""+bl(l)&&(t.value=""+bl(l)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),l!=null?vi(t,c,bl(l)):e!=null?vi(t,c,bl(e)):a!=null&&t.removeAttribute("value"),n==null&&u!=null&&(t.defaultChecked=!!u),n!=null&&(t.checked=n&&typeof n!="function"&&typeof n!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?t.name=""+bl(f):t.removeAttribute("name")}function Ws(t,l,e,a,n,u,c,f){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(t.type=u),l!=null||e!=null){if(!(u!=="submit"&&u!=="reset"||l!=null)){yi(t);return}e=e!=null?""+bl(e):"",l=l!=null?""+bl(l):e,f||l===t.value||(t.value=l),t.defaultValue=l}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=f?t.checked:!!a,t.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c),yi(t)}function vi(t,l,e){l==="number"&&kn(t.ownerDocument)===t||t.defaultValue===""+e||(t.defaultValue=""+e)}function la(t,l,e,a){if(t=t.options,l){l={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_i=!1;if(wl)try{var ka={};Object.defineProperty(ka,"passive",{get:function(){_i=!0}}),window.addEventListener("test",ka,ka),window.removeEventListener("test",ka,ka)}catch{_i=!1}var ce=null,ji=null,Jn=null;function af(){if(Jn)return Jn;var t,l=ji,e=l.length,a,n="value"in ce?ce.value:ce.textContent,u=n.length;for(t=0;t=$a),of=" ",rf=!1;function df(t,l){switch(t){case"keyup":return em.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hf(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ua=!1;function nm(t,l){switch(t){case"compositionend":return hf(l);case"keypress":return l.which!==32?null:(rf=!0,of);case"textInput":return t=l.data,t===of&&rf?null:t;default:return null}}function um(t,l){if(ua)return t==="compositionend"||!Ti&&df(t,l)?(t=af(),Jn=ji=ce=null,ua=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:e,offset:l-t};t=a}t:{for(;e;){if(e.nextSibling){e=e.nextSibling;break t}e=e.parentNode}e=void 0}e=Sf(e)}}function jf(t,l){return t&&l?t===l?!0:t&&t.nodeType===3?!1:l&&l.nodeType===3?jf(t,l.parentNode):"contains"in t?t.contains(l):t.compareDocumentPosition?!!(t.compareDocumentPosition(l)&16):!1:!1}function zf(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var l=kn(t.document);l instanceof t.HTMLIFrameElement;){try{var e=typeof l.contentWindow.location.href=="string"}catch{e=!1}if(e)t=l.contentWindow;else break;l=kn(t.document)}return l}function Ni(t){var l=t&&t.nodeName&&t.nodeName.toLowerCase();return l&&(l==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||l==="textarea"||t.contentEditable==="true")}var hm=wl&&"documentMode"in document&&11>=document.documentMode,ia=null,Ri=null,Pa=null,Di=!1;function Ef(t,l,e){var a=e.window===e?e.document:e.nodeType===9?e:e.ownerDocument;Di||ia==null||ia!==kn(a)||(a=ia,"selectionStart"in a&&Ni(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Pa&&Ia(Pa,a)||(Pa=a,a=Gu(Ri,"onSelect"),0>=c,n-=c,Hl=1<<32-rl(l)+n|e<ht?(bt=at,at=null):bt=at.sibling;var jt=A(b,at,_[ht],H);if(jt===null){at===null&&(at=bt);break}t&&at&&jt.alternate===null&&l(b,at),y=u(jt,y,ht),_t===null?ut=jt:_t.sibling=jt,_t=jt,at=bt}if(ht===_.length)return e(b,at),St&&Vl(b,ht),ut;if(at===null){for(;ht<_.length;ht++)at=q(b,_[ht],H),at!==null&&(y=u(at,y,ht),_t===null?ut=at:_t.sibling=at,_t=at);return St&&Vl(b,ht),ut}for(at=a(at);ht<_.length;ht++)bt=O(at,b,ht,_[ht],H),bt!==null&&(t&&bt.alternate!==null&&at.delete(bt.key===null?ht:bt.key),y=u(bt,y,ht),_t===null?ut=bt:_t.sibling=bt,_t=bt);return t&&at.forEach(function(Ce){return l(b,Ce)}),St&&Vl(b,ht),ut}function ct(b,y,_,H){if(_==null)throw Error(o(151));for(var ut=null,_t=null,at=y,ht=y=0,bt=null,jt=_.next();at!==null&&!jt.done;ht++,jt=_.next()){at.index>ht?(bt=at,at=null):bt=at.sibling;var Ce=A(b,at,jt.value,H);if(Ce===null){at===null&&(at=bt);break}t&&at&&Ce.alternate===null&&l(b,at),y=u(Ce,y,ht),_t===null?ut=Ce:_t.sibling=Ce,_t=Ce,at=bt}if(jt.done)return e(b,at),St&&Vl(b,ht),ut;if(at===null){for(;!jt.done;ht++,jt=_.next())jt=q(b,jt.value,H),jt!==null&&(y=u(jt,y,ht),_t===null?ut=jt:_t.sibling=jt,_t=jt);return St&&Vl(b,ht),ut}for(at=a(at);!jt.done;ht++,jt=_.next())jt=O(at,b,ht,jt.value,H),jt!==null&&(t&&jt.alternate!==null&&at.delete(jt.key===null?ht:jt.key),y=u(jt,y,ht),_t===null?ut=jt:_t.sibling=jt,_t=jt);return t&&at.forEach(function(D0){return l(b,D0)}),St&&Vl(b,ht),ut}function Ct(b,y,_,H){if(typeof _=="object"&&_!==null&&_.type===lt&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case et:t:{for(var ut=_.key;y!==null;){if(y.key===ut){if(ut=_.type,ut===lt){if(y.tag===7){e(b,y.sibling),H=n(y,_.props.children),H.return=b,b=H;break t}}else if(y.elementType===ut||typeof ut=="object"&&ut!==null&&ut.$$typeof===L&&we(ut)===y.type){e(b,y.sibling),H=n(y,_.props),un(H,_),H.return=b,b=H;break t}e(b,y);break}else l(b,y);y=y.sibling}_.type===lt?(H=qe(_.props.children,b.mode,H,_.key),H.return=b,b=H):(H=nu(_.type,_.key,_.props,null,b.mode,H),un(H,_),H.return=b,b=H)}return c(b);case F:t:{for(ut=_.key;y!==null;){if(y.key===ut)if(y.tag===4&&y.stateNode.containerInfo===_.containerInfo&&y.stateNode.implementation===_.implementation){e(b,y.sibling),H=n(y,_.children||[]),H.return=b,b=H;break t}else{e(b,y);break}else l(b,y);y=y.sibling}H=Xi(_,b.mode,H),H.return=b,b=H}return c(b);case L:return _=we(_),Ct(b,y,_,H)}if($(_))return tt(b,y,_,H);if(st(_)){if(ut=st(_),typeof ut!="function")throw Error(o(150));return _=ut.call(_),ct(b,y,_,H)}if(typeof _.then=="function")return Ct(b,y,ru(_),H);if(_.$$typeof===I)return Ct(b,y,cu(b,_),H);du(b,_)}return typeof _=="string"&&_!==""||typeof _=="number"||typeof _=="bigint"?(_=""+_,y!==null&&y.tag===6?(e(b,y.sibling),H=n(y,_),H.return=b,b=H):(e(b,y),H=Li(_,b.mode,H),H.return=b,b=H),c(b)):e(b,y)}return function(b,y,_,H){try{nn=0;var ut=Ct(b,y,_,H);return va=null,ut}catch(at){if(at===ga||at===fu)throw at;var _t=hl(29,at,null,b.mode);return _t.lanes=H,_t.return=b,_t}finally{}}}var Ve=Jf(!0),$f=Jf(!1),de=!1;function Ii(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Pi(t,l){t=t.updateQueue,l.updateQueue===t&&(l.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function he(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function me(t,l,e){var a=t.updateQueue;if(a===null)return null;if(a=a.shared,(zt&2)!==0){var n=a.pending;return n===null?l.next=l:(l.next=n.next,n.next=l),a.pending=l,l=au(t),Rf(t,null,e),l}return eu(t,a,l,e),au(t)}function cn(t,l,e){if(l=l.updateQueue,l!==null&&(l=l.shared,(e&4194048)!==0)){var a=l.lanes;a&=t.pendingLanes,e|=a,l.lanes=e,Ls(t,e)}}function tc(t,l){var e=t.updateQueue,a=t.alternate;if(a!==null&&(a=a.updateQueue,e===a)){var n=null,u=null;if(e=e.firstBaseUpdate,e!==null){do{var c={lane:e.lane,tag:e.tag,payload:e.payload,callback:null,next:null};u===null?n=u=c:u=u.next=c,e=e.next}while(e!==null);u===null?n=u=l:u=u.next=l}else n=u=l;e={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},t.updateQueue=e;return}t=e.lastBaseUpdate,t===null?e.firstBaseUpdate=l:t.next=l,e.lastBaseUpdate=l}var lc=!1;function sn(){if(lc){var t=ya;if(t!==null)throw t}}function fn(t,l,e,a){lc=!1;var n=t.updateQueue;de=!1;var u=n.firstBaseUpdate,c=n.lastBaseUpdate,f=n.shared.pending;if(f!==null){n.shared.pending=null;var d=f,j=d.next;d.next=null,c===null?u=j:c.next=j,c=d;var D=t.alternate;D!==null&&(D=D.updateQueue,f=D.lastBaseUpdate,f!==c&&(f===null?D.firstBaseUpdate=j:f.next=j,D.lastBaseUpdate=d))}if(u!==null){var q=n.baseState;c=0,D=j=d=null,f=u;do{var A=f.lane&-536870913,O=A!==f.lane;if(O?(xt&A)===A:(a&A)===A){A!==0&&A===ma&&(lc=!0),D!==null&&(D=D.next={lane:0,tag:f.tag,payload:f.payload,callback:null,next:null});t:{var tt=t,ct=f;A=l;var Ct=e;switch(ct.tag){case 1:if(tt=ct.payload,typeof tt=="function"){q=tt.call(Ct,q,A);break t}q=tt;break t;case 3:tt.flags=tt.flags&-65537|128;case 0:if(tt=ct.payload,A=typeof tt=="function"?tt.call(Ct,q,A):tt,A==null)break t;q=U({},q,A);break t;case 2:de=!0}}A=f.callback,A!==null&&(t.flags|=64,O&&(t.flags|=8192),O=n.callbacks,O===null?n.callbacks=[A]:O.push(A))}else O={lane:A,tag:f.tag,payload:f.payload,callback:f.callback,next:null},D===null?(j=D=O,d=q):D=D.next=O,c|=A;if(f=f.next,f===null){if(f=n.shared.pending,f===null)break;O=f,f=O.next,O.next=null,n.lastBaseUpdate=O,n.shared.pending=null}}while(!0);D===null&&(d=q),n.baseState=d,n.firstBaseUpdate=j,n.lastBaseUpdate=D,u===null&&(n.shared.lanes=0),xe|=c,t.lanes=c,t.memoizedState=q}}function Wf(t,l){if(typeof t!="function")throw Error(o(191,t));t.call(l)}function Ff(t,l){var e=t.callbacks;if(e!==null)for(t.callbacks=null,t=0;tu?u:8;var c=E.T,f={};E.T=f,bc(t,!1,l,e);try{var d=n(),j=E.S;if(j!==null&&j(f,d),d!==null&&typeof d=="object"&&typeof d.then=="function"){var D=_m(d,a);dn(t,l,D,pl(t))}else dn(t,l,a,pl(t))}catch(q){dn(t,l,{then:function(){},status:"rejected",reason:q},pl())}finally{h.p=u,c!==null&&f.types!==null&&(c.types=f.types),E.T=c}}function Tm(){}function pc(t,l,e,a){if(t.tag!==5)throw Error(o(476));var n=Oo(t).queue;Co(t,n,l,B,e===null?Tm:function(){return No(t),e(a)})}function Oo(t){var l=t.memoizedState;if(l!==null)return l;l={memoizedState:B,baseState:B,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$l,lastRenderedState:B},next:null};var e={};return l.next={memoizedState:e,baseState:e,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$l,lastRenderedState:e},next:null},t.memoizedState=l,t=t.alternate,t!==null&&(t.memoizedState=l),l}function No(t){var l=Oo(t);l.next===null&&(l=t.alternate.memoizedState),dn(t,l.next.queue,{},pl())}function xc(){return $t(Cn)}function Ro(){return Lt().memoizedState}function Do(){return Lt().memoizedState}function Cm(t){for(var l=t.return;l!==null;){switch(l.tag){case 24:case 3:var e=pl();t=he(e);var a=me(l,t,e);a!==null&&(sl(a,l,e),cn(a,l,e)),l={cache:Ji()},t.payload=l;return}l=l.return}}function Om(t,l,e){var a=pl();e={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null},_u(t)?Bo(l,e):(e=Yi(t,l,e,a),e!==null&&(sl(e,t,a),Ho(e,l,a)))}function Uo(t,l,e){var a=pl();dn(t,l,e,a)}function dn(t,l,e,a){var n={lane:a,revertLane:0,gesture:null,action:e,hasEagerState:!1,eagerState:null,next:null};if(_u(t))Bo(l,n);else{var u=t.alternate;if(t.lanes===0&&(u===null||u.lanes===0)&&(u=l.lastRenderedReducer,u!==null))try{var c=l.lastRenderedState,f=u(c,e);if(n.hasEagerState=!0,n.eagerState=f,dl(f,c))return eu(t,l,n,0),Nt===null&&lu(),!1}catch{}finally{}if(e=Yi(t,l,n,a),e!==null)return sl(e,t,a),Ho(e,l,a),!0}return!1}function bc(t,l,e,a){if(a={lane:2,revertLane:Ic(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},_u(t)){if(l)throw Error(o(479))}else l=Yi(t,e,a,2),l!==null&&sl(l,t,2)}function _u(t){var l=t.alternate;return t===rt||l!==null&&l===rt}function Bo(t,l){xa=yu=!0;var e=t.pending;e===null?l.next=l:(l.next=e.next,e.next=l),t.pending=l}function Ho(t,l,e){if((e&4194048)!==0){var a=l.lanes;a&=t.pendingLanes,e|=a,l.lanes=e,Ls(t,e)}}var hn={readContext:$t,use:pu,useCallback:Ht,useContext:Ht,useEffect:Ht,useImperativeHandle:Ht,useLayoutEffect:Ht,useInsertionEffect:Ht,useMemo:Ht,useReducer:Ht,useRef:Ht,useState:Ht,useDebugValue:Ht,useDeferredValue:Ht,useTransition:Ht,useSyncExternalStore:Ht,useId:Ht,useHostTransitionStatus:Ht,useFormState:Ht,useActionState:Ht,useOptimistic:Ht,useMemoCache:Ht,useCacheRefresh:Ht};hn.useEffectEvent=Ht;var Yo={readContext:$t,use:pu,useCallback:function(t,l){return Pt().memoizedState=[t,l===void 0?null:l],t},useContext:$t,useEffect:bo,useImperativeHandle:function(t,l,e){e=e!=null?e.concat([t]):null,bu(4194308,4,zo.bind(null,l,t),e)},useLayoutEffect:function(t,l){return bu(4194308,4,t,l)},useInsertionEffect:function(t,l){bu(4,2,t,l)},useMemo:function(t,l){var e=Pt();l=l===void 0?null:l;var a=t();if(ke){ue(!0);try{t()}finally{ue(!1)}}return e.memoizedState=[a,l],a},useReducer:function(t,l,e){var a=Pt();if(e!==void 0){var n=e(l);if(ke){ue(!0);try{e(l)}finally{ue(!1)}}}else n=l;return a.memoizedState=a.baseState=n,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},a.queue=t,t=t.dispatch=Om.bind(null,rt,t),[a.memoizedState,t]},useRef:function(t){var l=Pt();return t={current:t},l.memoizedState=t},useState:function(t){t=hc(t);var l=t.queue,e=Uo.bind(null,rt,l);return l.dispatch=e,[t.memoizedState,e]},useDebugValue:gc,useDeferredValue:function(t,l){var e=Pt();return vc(e,t,l)},useTransition:function(){var t=hc(!1);return t=Co.bind(null,rt,t.queue,!0,!1),Pt().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,l,e){var a=rt,n=Pt();if(St){if(e===void 0)throw Error(o(407));e=e()}else{if(e=l(),Nt===null)throw Error(o(349));(xt&127)!==0||ao(a,l,e)}n.memoizedState=e;var u={value:e,getSnapshot:l};return n.queue=u,bo(uo.bind(null,a,u,t),[t]),a.flags|=2048,Sa(9,{destroy:void 0},no.bind(null,a,u,e,l),null),e},useId:function(){var t=Pt(),l=Nt.identifierPrefix;if(St){var e=Yl,a=Hl;e=(a&~(1<<32-rl(a)-1)).toString(32)+e,l="_"+l+"R_"+e,e=gu++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?c.createElement("select",{is:a.is}):c.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?c.createElement(n,{is:a.is}):c.createElement(n)}}u[Kt]=l,u[el]=a;t:for(c=l.child;c!==null;){if(c.tag===5||c.tag===6)u.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===l)break t;for(;c.sibling===null;){if(c.return===null||c.return===l)break t;c=c.return}c.sibling.return=c.return,c=c.sibling}l.stateNode=u;t:switch(Ft(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break t;case"img":a=!0;break t;default:a=!1}a&&Fl(l)}}return Ut(l),Uc(l,l.type,t===null?null:t.memoizedProps,l.pendingProps,e),null;case 6:if(t&&l.stateNode!=null)t.memoizedProps!==a&&Fl(l);else{if(typeof a!="string"&&l.stateNode===null)throw Error(o(166));if(t=ft.current,da(l)){if(t=l.stateNode,e=l.memoizedProps,a=null,n=Jt,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}t[Kt]=l,t=!!(t.nodeValue===e||a!==null&&a.suppressHydrationWarning===!0||ed(t.nodeValue,e)),t||oe(l,!0)}else t=Qu(t).createTextNode(a),t[Kt]=l,l.stateNode=t}return Ut(l),null;case 31:if(e=l.memoizedState,t===null||t.memoizedState!==null){if(a=da(l),e!==null){if(t===null){if(!a)throw Error(o(318));if(t=l.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(o(557));t[Kt]=l}else Le(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Ut(l),t=!1}else e=Zi(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=e),t=!0;if(!t)return l.flags&256?(yl(l),l):(yl(l),null);if((l.flags&128)!==0)throw Error(o(558))}return Ut(l),null;case 13:if(a=l.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(n=da(l),a!==null&&a.dehydrated!==null){if(t===null){if(!n)throw Error(o(318));if(n=l.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(o(317));n[Kt]=l}else Le(),(l.flags&128)===0&&(l.memoizedState=null),l.flags|=4;Ut(l),n=!1}else n=Zi(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=n),n=!0;if(!n)return l.flags&256?(yl(l),l):(yl(l),null)}return yl(l),(l.flags&128)!==0?(l.lanes=e,l):(e=a!==null,t=t!==null&&t.memoizedState!==null,e&&(a=l.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),e!==t&&e&&(l.child.flags|=8192),Mu(l,l.updateQueue),Ut(l),null);case 4:return Ot(),t===null&&es(l.stateNode.containerInfo),Ut(l),null;case 10:return Kl(l.type),Ut(l),null;case 19:if(C(qt),a=l.memoizedState,a===null)return Ut(l),null;if(n=(l.flags&128)!==0,u=a.rendering,u===null)if(n)yn(a,!1);else{if(Yt!==0||t!==null&&(t.flags&128)!==0)for(t=l.child;t!==null;){if(u=mu(t),u!==null){for(l.flags|=128,yn(a,!1),t=u.updateQueue,l.updateQueue=t,Mu(l,t),l.subtreeFlags=0,t=e,e=l.child;e!==null;)Df(e,t),e=e.sibling;return w(qt,qt.current&1|2),St&&Vl(l,a.treeForkCount),l.child}t=t.sibling}a.tail!==null&&fl()>Ru&&(l.flags|=128,n=!0,yn(a,!1),l.lanes=4194304)}else{if(!n)if(t=mu(u),t!==null){if(l.flags|=128,n=!0,t=t.updateQueue,l.updateQueue=t,Mu(l,t),yn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!St)return Ut(l),null}else 2*fl()-a.renderingStartTime>Ru&&e!==536870912&&(l.flags|=128,n=!0,yn(a,!1),l.lanes=4194304);a.isBackwards?(u.sibling=l.child,l.child=u):(t=a.last,t!==null?t.sibling=u:l.child=u,a.last=u)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=fl(),t.sibling=null,e=qt.current,w(qt,n?e&1|2:e&1),St&&Vl(l,a.treeForkCount),t):(Ut(l),null);case 22:case 23:return yl(l),ac(),a=l.memoizedState!==null,t!==null?t.memoizedState!==null!==a&&(l.flags|=8192):a&&(l.flags|=8192),a?(e&536870912)!==0&&(l.flags&128)===0&&(Ut(l),l.subtreeFlags&6&&(l.flags|=8192)):Ut(l),e=l.updateQueue,e!==null&&Mu(l,e.retryQueue),e=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),a=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(a=l.memoizedState.cachePool.pool),a!==e&&(l.flags|=2048),t!==null&&C(Qe),null;case 24:return e=null,t!==null&&(e=t.memoizedState.cache),l.memoizedState.cache!==e&&(l.flags|=2048),Kl(Xt),Ut(l),null;case 25:return null;case 30:return null}throw Error(o(156,l.tag))}function Bm(t,l){switch(Qi(l),l.tag){case 1:return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 3:return Kl(Xt),Ot(),t=l.flags,(t&65536)!==0&&(t&128)===0?(l.flags=t&-65537|128,l):null;case 26:case 27:case 5:return Bl(l),null;case 31:if(l.memoizedState!==null){if(yl(l),l.alternate===null)throw Error(o(340));Le()}return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 13:if(yl(l),t=l.memoizedState,t!==null&&t.dehydrated!==null){if(l.alternate===null)throw Error(o(340));Le()}return t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 19:return C(qt),null;case 4:return Ot(),null;case 10:return Kl(l.type),null;case 22:case 23:return yl(l),ac(),t!==null&&C(Qe),t=l.flags,t&65536?(l.flags=t&-65537|128,l):null;case 24:return Kl(Xt),null;case 25:return null;default:return null}}function cr(t,l){switch(Qi(l),l.tag){case 3:Kl(Xt),Ot();break;case 26:case 27:case 5:Bl(l);break;case 4:Ot();break;case 31:l.memoizedState!==null&&yl(l);break;case 13:yl(l);break;case 19:C(qt);break;case 10:Kl(l.type);break;case 22:case 23:yl(l),ac(),t!==null&&C(Qe);break;case 24:Kl(Xt)}}function gn(t,l){try{var e=l.updateQueue,a=e!==null?e.lastEffect:null;if(a!==null){var n=a.next;e=n;do{if((e.tag&t)===t){a=void 0;var u=e.create,c=e.inst;a=u(),c.destroy=a}e=e.next}while(e!==n)}}catch(f){At(l,l.return,f)}}function ve(t,l,e){try{var a=l.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&t)===t){var c=a.inst,f=c.destroy;if(f!==void 0){c.destroy=void 0,n=l;var d=e,j=f;try{j()}catch(D){At(n,d,D)}}}a=a.next}while(a!==u)}}catch(D){At(l,l.return,D)}}function sr(t){var l=t.updateQueue;if(l!==null){var e=t.stateNode;try{Ff(l,e)}catch(a){At(t,t.return,a)}}}function fr(t,l,e){e.props=Ke(t.type,t.memoizedProps),e.state=t.memoizedState;try{e.componentWillUnmount()}catch(a){At(t,l,a)}}function vn(t,l){try{var e=t.ref;if(e!==null){switch(t.tag){case 26:case 27:case 5:var a=t.stateNode;break;case 30:a=t.stateNode;break;default:a=t.stateNode}typeof e=="function"?t.refCleanup=e(a):e.current=a}}catch(n){At(t,l,n)}}function ql(t,l){var e=t.ref,a=t.refCleanup;if(e!==null)if(typeof a=="function")try{a()}catch(n){At(t,l,n)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof e=="function")try{e(null)}catch(n){At(t,l,n)}else e.current=null}function or(t){var l=t.type,e=t.memoizedProps,a=t.stateNode;try{t:switch(l){case"button":case"input":case"select":case"textarea":e.autoFocus&&a.focus();break t;case"img":e.src?a.src=e.src:e.srcSet&&(a.srcset=e.srcSet)}}catch(n){At(t,t.return,n)}}function Bc(t,l,e){try{var a=t.stateNode;a0(a,t.type,e,l),a[el]=l}catch(n){At(t,t.return,n)}}function rr(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ze(t.type)||t.tag===4}function Hc(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||rr(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ze(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Yc(t,l,e){var a=t.tag;if(a===5||a===6)t=t.stateNode,l?(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).insertBefore(t,l):(l=e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,l.appendChild(t),e=e._reactRootContainer,e!=null||l.onclick!==null||(l.onclick=Ql));else if(a!==4&&(a===27&&ze(t.type)&&(e=t.stateNode,l=null),t=t.child,t!==null))for(Yc(t,l,e),t=t.sibling;t!==null;)Yc(t,l,e),t=t.sibling}function Tu(t,l,e){var a=t.tag;if(a===5||a===6)t=t.stateNode,l?e.insertBefore(t,l):e.appendChild(t);else if(a!==4&&(a===27&&ze(t.type)&&(e=t.stateNode),t=t.child,t!==null))for(Tu(t,l,e),t=t.sibling;t!==null;)Tu(t,l,e),t=t.sibling}function dr(t){var l=t.stateNode,e=t.memoizedProps;try{for(var a=t.type,n=l.attributes;n.length;)l.removeAttributeNode(n[0]);Ft(l,a,e),l[Kt]=t,l[el]=e}catch(u){At(t,t.return,u)}}var Il=!1,wt=!1,qc=!1,hr=typeof WeakSet=="function"?WeakSet:Set,kt=null;function Hm(t,l){if(t=t.containerInfo,us=$u,t=zf(t),Ni(t)){if("selectionStart"in t)var e={start:t.selectionStart,end:t.selectionEnd};else t:{e=(e=t.ownerDocument)&&e.defaultView||window;var a=e.getSelection&&e.getSelection();if(a&&a.rangeCount!==0){e=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{e.nodeType,u.nodeType}catch{e=null;break t}var c=0,f=-1,d=-1,j=0,D=0,q=t,A=null;l:for(;;){for(var O;q!==e||n!==0&&q.nodeType!==3||(f=c+n),q!==u||a!==0&&q.nodeType!==3||(d=c+a),q.nodeType===3&&(c+=q.nodeValue.length),(O=q.firstChild)!==null;)A=q,q=O;for(;;){if(q===t)break l;if(A===e&&++j===n&&(f=c),A===u&&++D===a&&(d=c),(O=q.nextSibling)!==null)break;q=A,A=q.parentNode}q=O}e=f===-1||d===-1?null:{start:f,end:d}}else e=null}e=e||{start:0,end:0}}else e=null;for(is={focusedElem:t,selectionRange:e},$u=!1,kt=l;kt!==null;)if(l=kt,t=l.child,(l.subtreeFlags&1028)!==0&&t!==null)t.return=l,kt=t;else for(;kt!==null;){switch(l=kt,u=l.alternate,t=l.flags,l.tag){case 0:if((t&4)!==0&&(t=l.updateQueue,t=t!==null?t.events:null,t!==null))for(e=0;e title"))),Ft(u,a,e),u[Kt]=t,Vt(u),a=u;break t;case"link":var c=xd("link","href",n).get(a+(e.href||""));if(c){for(var f=0;fCt&&(c=Ct,Ct=ct,ct=c);var b=_f(f,ct),y=_f(f,Ct);if(b&&y&&(O.rangeCount!==1||O.anchorNode!==b.node||O.anchorOffset!==b.offset||O.focusNode!==y.node||O.focusOffset!==y.offset)){var _=q.createRange();_.setStart(b.node,b.offset),O.removeAllRanges(),ct>Ct?(O.addRange(_),O.extend(y.node,y.offset)):(_.setEnd(y.node,y.offset),O.addRange(_))}}}}for(q=[],O=f;O=O.parentNode;)O.nodeType===1&&q.push({element:O,left:O.scrollLeft,top:O.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fe?32:e,E.T=null,e=Vc,Vc=null;var u=Se,c=ae;if(Zt=0,Aa=Se=null,ae=0,(zt&6)!==0)throw Error(o(331));var f=zt;if(zt|=4,zr(u.current),Sr(u,u.current,c,e),zt=f,jn(0,!1),ol&&typeof ol.onPostCommitFiberRoot=="function")try{ol.onPostCommitFiberRoot(Xa,u)}catch{}return!0}finally{h.p=n,E.T=a,Qr(t,l)}}function Zr(t,l,e){l=jl(e,l),l=zc(t.stateNode,l,2),t=me(t,l,2),t!==null&&(Qa(t,2),Ll(t))}function At(t,l,e){if(t.tag===3)Zr(t,t,e);else for(;l!==null;){if(l.tag===3){Zr(l,t,e);break}else if(l.tag===1){var a=l.stateNode;if(typeof l.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(be===null||!be.has(a))){t=jl(e,t),e=Vo(2),a=me(l,e,2),a!==null&&(ko(e,a,l,t),Qa(a,2),Ll(a));break}}l=l.return}}function $c(t,l,e){var a=t.pingCache;if(a===null){a=t.pingCache=new Lm;var n=new Set;a.set(l,n)}else n=a.get(l),n===void 0&&(n=new Set,a.set(l,n));n.has(e)||(Gc=!0,n.add(e),t=Zm.bind(null,t,l,e),l.then(t,t))}function Zm(t,l,e){var a=t.pingCache;a!==null&&a.delete(l),t.pingedLanes|=t.suspendedLanes&e,t.warmLanes&=~e,Nt===t&&(xt&e)===e&&(Yt===4||Yt===3&&(xt&62914560)===xt&&300>fl()-Nu?(zt&2)===0&&Ma(t,0):Qc|=e,Ea===xt&&(Ea=0)),Ll(t)}function Vr(t,l){l===0&&(l=Ys()),t=Ye(t,l),t!==null&&(Qa(t,l),Ll(t))}function Vm(t){var l=t.memoizedState,e=0;l!==null&&(e=l.retryLane),Vr(t,e)}function km(t,l){var e=0;switch(t.tag){case 31:case 13:var a=t.stateNode,n=t.memoizedState;n!==null&&(e=n.retryLane);break;case 19:a=t.stateNode;break;case 22:a=t.stateNode._retryCache;break;default:throw Error(o(314))}a!==null&&a.delete(l),Vr(t,e)}function Km(t,l){return si(t,l)}var qu=null,Ca=null,Wc=!1,Lu=!1,Fc=!1,je=0;function Ll(t){t!==Ca&&t.next===null&&(Ca===null?qu=Ca=t:Ca=Ca.next=t),Lu=!0,Wc||(Wc=!0,$m())}function jn(t,l){if(!Fc&&Lu){Fc=!0;do for(var e=!1,a=qu;a!==null;){if(t!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var c=a.suspendedLanes,f=a.pingedLanes;u=(1<<31-rl(42|t)+1)-1,u&=n&~(c&~f),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(e=!0,$r(a,u))}else u=xt,u=wn(a,a===Nt?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Ga(a,u)||(e=!0,$r(a,u));a=a.next}while(e);Fc=!1}}function Jm(){kr()}function kr(){Lu=Wc=!1;var t=0;je!==0&&u0()&&(t=je);for(var l=fl(),e=null,a=qu;a!==null;){var n=a.next,u=Kr(a,l);u===0?(a.next=null,e===null?qu=n:e.next=n,n===null&&(Ca=e)):(e=a,(t!==0||(u&3)!==0)&&(Lu=!0)),a=n}Zt!==0&&Zt!==5||jn(t),je!==0&&(je=0)}function Kr(t,l){for(var e=t.suspendedLanes,a=t.pingedLanes,n=t.expirationTimes,u=t.pendingLanes&-62914561;0f)break;var D=d.transferSize,q=d.initiatorType;D&&ad(q)&&(d=d.responseEnd,c+=D*(d"u"?null:document;function yd(t,l,e){var a=Oa;if(a&&typeof l=="string"&&l){var n=Sl(l);n='link[rel="'+t+'"][href="'+n+'"]',typeof e=="string"&&(n+='[crossorigin="'+e+'"]'),md.has(n)||(md.add(n),t={rel:t,crossOrigin:e,href:l},a.querySelector(n)===null&&(l=a.createElement("link"),Ft(l,"link",t),Vt(l),a.head.appendChild(l)))}}function m0(t){ne.D(t),yd("dns-prefetch",t,null)}function y0(t,l){ne.C(t,l),yd("preconnect",t,l)}function g0(t,l,e){ne.L(t,l,e);var a=Oa;if(a&&t&&l){var n='link[rel="preload"][as="'+Sl(l)+'"]';l==="image"&&e&&e.imageSrcSet?(n+='[imagesrcset="'+Sl(e.imageSrcSet)+'"]',typeof e.imageSizes=="string"&&(n+='[imagesizes="'+Sl(e.imageSizes)+'"]')):n+='[href="'+Sl(t)+'"]';var u=n;switch(l){case"style":u=Na(t);break;case"script":u=Ra(t)}Cl.has(u)||(t=U({rel:"preload",href:l==="image"&&e&&e.imageSrcSet?void 0:t,as:l},e),Cl.set(u,t),a.querySelector(n)!==null||l==="style"&&a.querySelector(Mn(u))||l==="script"&&a.querySelector(Tn(u))||(l=a.createElement("link"),Ft(l,"link",t),Vt(l),a.head.appendChild(l)))}}function v0(t,l){ne.m(t,l);var e=Oa;if(e&&t){var a=l&&typeof l.as=="string"?l.as:"script",n='link[rel="modulepreload"][as="'+Sl(a)+'"][href="'+Sl(t)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ra(t)}if(!Cl.has(u)&&(t=U({rel:"modulepreload",href:t},l),Cl.set(u,t),e.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(e.querySelector(Tn(u)))return}a=e.createElement("link"),Ft(a,"link",t),Vt(a),e.head.appendChild(a)}}}function p0(t,l,e){ne.S(t,l,e);var a=Oa;if(a&&t){var n=Pe(a).hoistableStyles,u=Na(t);l=l||"default";var c=n.get(u);if(!c){var f={loading:0,preload:null};if(c=a.querySelector(Mn(u)))f.loading=5;else{t=U({rel:"stylesheet",href:t,"data-precedence":l},e),(e=Cl.get(u))&&hs(t,e);var d=c=a.createElement("link");Vt(d),Ft(d,"link",t),d._p=new Promise(function(j,D){d.onload=j,d.onerror=D}),d.addEventListener("load",function(){f.loading|=1}),d.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Zu(c,l,a)}c={type:"stylesheet",instance:c,count:1,state:f},n.set(u,c)}}}function x0(t,l){ne.X(t,l);var e=Oa;if(e&&t){var a=Pe(e).hoistableScripts,n=Ra(t),u=a.get(n);u||(u=e.querySelector(Tn(n)),u||(t=U({src:t,async:!0},l),(l=Cl.get(n))&&ms(t,l),u=e.createElement("script"),Vt(u),Ft(u,"link",t),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function b0(t,l){ne.M(t,l);var e=Oa;if(e&&t){var a=Pe(e).hoistableScripts,n=Ra(t),u=a.get(n);u||(u=e.querySelector(Tn(n)),u||(t=U({src:t,async:!0,type:"module"},l),(l=Cl.get(n))&&ms(t,l),u=e.createElement("script"),Vt(u),Ft(u,"link",t),e.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function gd(t,l,e,a){var n=(n=ft.current)?wu(n):null;if(!n)throw Error(o(446));switch(t){case"meta":case"title":return null;case"style":return typeof e.precedence=="string"&&typeof e.href=="string"?(l=Na(e.href),e=Pe(n).hoistableStyles,a=e.get(l),a||(a={type:"style",instance:null,count:0,state:null},e.set(l,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(e.rel==="stylesheet"&&typeof e.href=="string"&&typeof e.precedence=="string"){t=Na(e.href);var u=Pe(n).hoistableStyles,c=u.get(t);if(c||(n=n.ownerDocument||n,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(t,c),(u=n.querySelector(Mn(t)))&&!u._p&&(c.instance=u,c.state.loading=5),Cl.has(t)||(e={rel:"preload",as:"style",href:e.href,crossOrigin:e.crossOrigin,integrity:e.integrity,media:e.media,hrefLang:e.hrefLang,referrerPolicy:e.referrerPolicy},Cl.set(t,e),u||S0(n,t,e,c.state))),l&&a===null)throw Error(o(528,""));return c}if(l&&a!==null)throw Error(o(529,""));return null;case"script":return l=e.async,e=e.src,typeof e=="string"&&l&&typeof l!="function"&&typeof l!="symbol"?(l=Ra(e),e=Pe(n).hoistableScripts,a=e.get(l),a||(a={type:"script",instance:null,count:0,state:null},e.set(l,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,t))}}function Na(t){return'href="'+Sl(t)+'"'}function Mn(t){return'link[rel="stylesheet"]['+t+"]"}function vd(t){return U({},t,{"data-precedence":t.precedence,precedence:null})}function S0(t,l,e,a){t.querySelector('link[rel="preload"][as="style"]['+l+"]")?a.loading=1:(l=t.createElement("link"),a.preload=l,l.addEventListener("load",function(){return a.loading|=1}),l.addEventListener("error",function(){return a.loading|=2}),Ft(l,"link",e),Vt(l),t.head.appendChild(l))}function Ra(t){return'[src="'+Sl(t)+'"]'}function Tn(t){return"script[async]"+t}function pd(t,l,e){if(l.count++,l.instance===null)switch(l.type){case"style":var a=t.querySelector('style[data-href~="'+Sl(e.href)+'"]');if(a)return l.instance=a,Vt(a),a;var n=U({},e,{"data-href":e.href,"data-precedence":e.precedence,href:null,precedence:null});return a=(t.ownerDocument||t).createElement("style"),Vt(a),Ft(a,"style",n),Zu(a,e.precedence,t),l.instance=a;case"stylesheet":n=Na(e.href);var u=t.querySelector(Mn(n));if(u)return l.state.loading|=4,l.instance=u,Vt(u),u;a=vd(e),(n=Cl.get(n))&&hs(a,n),u=(t.ownerDocument||t).createElement("link"),Vt(u);var c=u;return c._p=new Promise(function(f,d){c.onload=f,c.onerror=d}),Ft(u,"link",a),l.state.loading|=4,Zu(u,e.precedence,t),l.instance=u;case"script":return u=Ra(e.src),(n=t.querySelector(Tn(u)))?(l.instance=n,Vt(n),n):(a=e,(n=Cl.get(u))&&(a=U({},e),ms(a,n)),t=t.ownerDocument||t,n=t.createElement("script"),Vt(n),Ft(n,"link",a),t.head.appendChild(n),l.instance=n);case"void":return null;default:throw Error(o(443,l.type))}else l.type==="stylesheet"&&(l.state.loading&4)===0&&(a=l.instance,l.state.loading|=4,Zu(a,e.precedence,t));return l.instance}function Zu(t,l,e){for(var a=e.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,c=0;c title"):null)}function _0(t,l,e){if(e===1||l.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof l.precedence!="string"||typeof l.href!="string"||l.href==="")break;return!0;case"link":if(typeof l.rel!="string"||typeof l.href!="string"||l.href===""||l.onLoad||l.onError)break;switch(l.rel){case"stylesheet":return t=l.disabled,typeof l.precedence=="string"&&t==null;default:return!0}case"script":if(l.async&&typeof l.async!="function"&&typeof l.async!="symbol"&&!l.onLoad&&!l.onError&&l.src&&typeof l.src=="string")return!0}return!1}function Sd(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function j0(t,l,e,a){if(e.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(e.state.loading&4)===0){if(e.instance===null){var n=Na(a.href),u=l.querySelector(Mn(n));if(u){l=u._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(t.count++,t=ku.bind(t),l.then(t,t)),e.state.loading|=4,e.instance=u,Vt(u);return}u=l.ownerDocument||l,a=vd(a),(n=Cl.get(n))&&hs(a,n),u=u.createElement("link"),Vt(u);var c=u;c._p=new Promise(function(f,d){c.onload=f,c.onerror=d}),Ft(u,"link",a),e.instance=u}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(e,l),(l=e.state.preload)&&(e.state.loading&3)===0&&(t.count++,e=ku.bind(t),l.addEventListener("load",e),l.addEventListener("error",e))}}var ys=0;function z0(t,l){return t.stylesheets&&t.count===0&&Ju(t,t.stylesheets),0ys?50:800)+l);return t.unsuspend=e,function(){t.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function ku(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ju(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var Ku=null;function Ju(t,l){t.stylesheets=null,t.unsuspend!==null&&(t.count++,Ku=new Map,l.forEach(E0,t),Ku=null,ku.call(t))}function E0(t,l){if(!(l.state.loading&4)){var e=Ku.get(t);if(e)var a=e.get(null);else{e=new Map,Ku.set(t,e);for(var n=t.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(v){console.error(v)}}return s(),zs.exports=Q0(),zs.exports}var Z0=w0();const V0="modulepreload",k0=function(s){return"/v2/"+s},Vd={},K0=function(v,S,o){let r=Promise.resolve();if(S&&S.length>0){let z=function(p){return Promise.all(p.map(Y=>Promise.resolve(Y).then(U=>({status:"fulfilled",value:U}),U=>({status:"rejected",reason:U}))))};document.getElementsByTagName("link");const R=document.querySelector("meta[property=csp-nonce]"),g=(R==null?void 0:R.nonce)||(R==null?void 0:R.getAttribute("nonce"));r=z(S.map(p=>{if(p=k0(p),p in Vd)return;Vd[p]=!0;const Y=p.endsWith(".css"),U=Y?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${U}`))return;const X=document.createElement("link");if(X.rel=Y?"stylesheet":V0,Y||(X.as="script"),X.crossOrigin="",X.href=p,g&&X.setAttribute("nonce",g),document.head.appendChild(X),Y)return new Promise((et,F)=>{X.addEventListener("load",et),X.addEventListener("error",()=>F(new Error(`Unable to preload CSS for ${p}`)))})}))}function x(z){const R=new Event("vite:preloadError",{cancelable:!0});if(R.payload=z,window.dispatchEvent(R),!R.defaultPrevented)throw z}return r.then(z=>{for(const R of z||[])R.status==="rejected"&&x(R.reason);return v().catch(x)})},ch=N.createContext({windows:[],openWindow:()=>{},closeWindow:()=>{},bringToFront:()=>{}}),J0=({children:s})=>{const[v,S]=N.useState([]),o=N.useRef(1e4),r=N.useCallback((R,g,p)=>{S(Y=>Y.find(X=>X.id===R)?Y.map(X=>X.id===R?{...X,zIndex:++o.current}:X):[...Y,{id:R,title:g,charName:p,zIndex:++o.current}])},[]),x=N.useCallback(R=>{S(g=>g.filter(p=>p.id!==R))},[]),z=N.useCallback(R=>{S(g=>g.map(p=>p.id===R?{...p,zIndex:++o.current}:p))},[]);return i.jsx(ch.Provider,{value:{windows:v,openWindow:r,closeWindow:x,bringToFront:z},children:s})},Yn=()=>N.useContext(ch),Ol={west:-102.1,east:102.1,north:102.1,south:-102.1};function qn(s,v,S,o){const r=(s-Ol.west)/(Ol.east-Ol.west)*S,x=(Ol.north-v)/(Ol.north-Ol.south)*o;return{x:r,y:x}}function $0(s,v,S,o,r,x,z){const R=(s-o)/S,g=(v-r)/S,p=Ol.west+R/x*(Ol.east-Ol.west),Y=Ol.north-g/z*(Ol.north-Ol.south);return{ew:p,ns:Y}}function Ns(s,v){const S=s>=0?"N":"S",o=v>=0?"E":"W";return`${Math.abs(s).toFixed(1)}${S}, ${Math.abs(v).toFixed(1)}${o}`}const sh=ni.memo(({players:s,imgW:v,imgH:S,getColor:o,onHover:r,onSelect:x,selectedPlayer:z})=>{const R=N.useMemo(()=>s.filter(g=>g.ew!==void 0&&g.ns!==void 0).map(g=>({...g,pos:qn(g.ew,g.ns,v,S),color:o(g.character_name)})),[s,v,S,o]);return i.jsx("div",{className:"ml-dots-layer",children:R.map(g=>i.jsx("div",{className:`ml-dot ${z===g.character_name?"ml-dot-selected":""}`,style:{left:g.pos.x,top:g.pos.y,backgroundColor:g.color},onMouseEnter:p=>{var U;const Y=(U=p.currentTarget.closest(".ml-map-container"))==null?void 0:U.getBoundingClientRect();Y&&r(g,p.clientX-Y.left,p.clientY-Y.top)},onMouseLeave:()=>r(null,0,0),onClick:()=>x(g.character_name)},g.character_name))})});sh.displayName="PlayerDots";const W0="/api";async function tl(s){const v=await fetch(`${W0}${s}`,{credentials:"include"});if(!v.ok)throw new Error(`API ${s}: ${v.status}`);return v.json()}function F0(){return`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}/api/ws/live`}const fh=ni.memo(({imgW:s,imgH:v,getColor:S})=>{const[o,r]=N.useState([]);N.useEffect(()=>{const z=async()=>{try{const g=await tl("/trails/?seconds=600");r(g.trails??[])}catch{}};z();const R=setInterval(z,2e3);return()=>clearInterval(R)},[]);const x=N.useMemo(()=>{const z={};for(const R of o){const{x:g,y:p}=qn(R.ew,R.ns,s,v);z[R.character_name]||(z[R.character_name]=[]),z[R.character_name].push(`${g},${p}`)}return Object.entries(z).filter(([,R])=>R.length>=2).map(([R,g])=>({name:R,points:g.join(" ")}))},[o,s,v]);return i.jsx("svg",{className:"ml-trails-svg",viewBox:`0 0 ${s} ${v}`,preserveAspectRatio:"none",children:x.map(z=>i.jsx("polyline",{points:z.points,stroke:S(z.name),fill:"none",strokeWidth:2,strokeOpacity:.7,strokeLinecap:"round",strokeLinejoin:"round"},z.name))})});fh.displayName="TrailsSVG";const I0=({imgW:s,imgH:v,enabled:S})=>{const o=N.useRef(null),[r,x]=N.useState([]);return N.useEffect(()=>{if(!S)return;(async()=>{try{const R=await tl("/spawns/heatmap?hours=24&limit=50000");x(R.spawn_points??[])}catch{}})()},[S]),N.useEffect(()=>{const z=o.current;if(!z||!S||r.length===0||s===0)return;z.width=s,z.height=v;const R=z.getContext("2d");if(R){R.clearRect(0,0,s,v);for(const g of r){const{x:p,y:Y}=qn(g.ew,g.ns,s,v),U=Math.max(5,Math.min(12,5+Math.sqrt(g.intensity*.5))),X=R.createRadialGradient(p,Y,0,p,Y,U);X.addColorStop(0,`rgba(255, 0, 0, ${Math.min(.9,g.intensity/40)})`),X.addColorStop(.6,`rgba(255, 100, 0, ${Math.min(.4,g.intensity/120)})`),X.addColorStop(1,"rgba(255, 150, 0, 0)"),R.fillStyle=X,R.fillRect(p-U,Y-U,U*2,U*2)}}},[r,s,v,S]),S?i.jsx("canvas",{ref:o,className:"ml-heatmap-canvas"}):null},P0=({imgW:s,imgH:v,enabled:S})=>{const[o,r]=N.useState([]);N.useEffect(()=>{if(!S)return;const z=async()=>{try{const g=await tl("/portals");r(g.portals??[])}catch{}};z();const R=setInterval(z,6e4);return()=>clearInterval(R)},[S]);const x=N.useMemo(()=>o.map(z=>({...z,pos:qn(z.coordinates.ew,z.coordinates.ns,s,v)})),[o,s,v]);return!S||x.length===0?null:i.jsx("div",{className:"ml-portals-layer",children:x.map((z,R)=>i.jsx("div",{className:"ml-portal-icon",style:{left:z.pos.x,top:z.pos.y},title:`${z.portal_name} (by ${z.discovered_by})`},R))})},kd=20,Kd=.3,ty=({players:s,getColor:v,onSelectPlayer:S,showHeatmap:o,showPortals:r,selectedPlayer:x})=>{var k;const z=N.useRef(null),R=N.useRef(null),[g,p]=N.useState({w:0,h:0}),[Y,U]=N.useState(null),[X,et]=N.useState(null),F=N.useRef({scale:1,offX:0,offY:0}),lt=N.useRef({dragging:!1,sx:0,sy:0,startOffX:0,startOffY:0}),gt=N.useCallback(()=>{if(R.current){const{scale:T,offX:L,offY:K}=F.current;R.current.style.transform=`translate(${L}px, ${K}px) scale(${T})`}},[]),P=N.useCallback(T=>{const L=T.currentTarget;if(p({w:L.naturalWidth,h:L.naturalHeight}),z.current){const K=z.current.clientWidth,V=z.current.clientHeight,nt=Math.min(K/L.naturalWidth,V/L.naturalHeight);F.current={scale:nt,offX:(K-L.naturalWidth*nt)/2,offY:(V-L.naturalHeight*nt)/2},gt()}},[gt]),M=N.useCallback(T=>{var $;T.preventDefault();const L=($=z.current)==null?void 0:$.getBoundingClientRect();if(!L)return;const K=F.current,V=T.deltaY<0?1.1:.9,nt=Math.min(kd,Math.max(Kd,K.scale*V)),st=nt/K.scale,mt=T.clientX-L.left,Q=T.clientY-L.top;F.current={scale:nt,offX:mt-(mt-K.offX)*st,offY:Q-(Q-K.offY)*st},gt()},[gt]),I=N.useCallback(T=>{if(T.button!==0)return;const L=F.current;lt.current={dragging:!0,sx:T.clientX,sy:T.clientY,startOffX:L.offX,startOffY:L.offY}},[]);N.useEffect(()=>{const T=K=>{const V=lt.current;if(V.dragging&&(F.current.offX=V.startOffX+(K.clientX-V.sx),F.current.offY=V.startOffY+(K.clientY-V.sy),gt()),z.current&&g.w>0){const nt=z.current.getBoundingClientRect(),st=F.current,mt=$0(K.clientX-nt.left,K.clientY-nt.top,st.scale,st.offX,st.offY,g.w,g.h);et(mt)}},L=()=>{lt.current.dragging=!1};return window.addEventListener("mousemove",T),window.addEventListener("mouseup",L),()=>{window.removeEventListener("mousemove",T),window.removeEventListener("mouseup",L)}},[gt,g.w,g.h]);const G=N.useRef(null);N.useEffect(()=>{if(!x||g.w===0||!z.current||G.current===x)return;const T=s.find(st=>st.character_name===x);if(!T)return;G.current=x;const{x:L,y:K}=qn(T.ew,T.ns,g.w,g.h),V=z.current.getBoundingClientRect(),nt=3;F.current={scale:Math.min(kd,Math.max(Kd,nt)),offX:V.width/2-L*nt,offY:V.height/2-K*nt},gt()},[x,s,g.w,g.h,gt]),N.useEffect(()=>{x||(G.current=null)},[x]);const J=N.useCallback((T,L,K)=>{U(T?{x:L,y:K,player:T}:null)},[]);return i.jsxs("div",{className:"ml-map-container",ref:z,onWheel:M,onMouseDown:I,children:[i.jsxs("div",{ref:R,className:"ml-map-group",children:[i.jsx("img",{src:"/dereth.png",alt:"Dereth",className:"ml-map-img",onLoad:P,draggable:!1}),g.w>0&&i.jsxs(i.Fragment,{children:[i.jsx(I0,{imgW:g.w,imgH:g.h,enabled:o}),i.jsx(fh,{imgW:g.w,imgH:g.h,getColor:v}),i.jsx(sh,{players:s,imgW:g.w,imgH:g.h,getColor:v,onHover:J,onSelect:S,selectedPlayer:x}),i.jsx(P0,{imgW:g.w,imgH:g.h,enabled:r})]})]}),Y&&i.jsxs("div",{className:"ml-tooltip",style:{left:Y.x+12,top:Y.y-10},children:[i.jsx("strong",{children:Y.player.character_name}),i.jsx("br",{}),Ns(Y.player.ns,Y.player.ew),i.jsx("br",{}),Y.player.kills_per_hour," kph · ",(k=Y.player.kills)==null?void 0:k.toLocaleString()," kills"]}),X&&i.jsx("div",{className:"ml-coords",children:Ns(X.ns,X.ew)})]})},oh=ni.memo(({player:s,vitals:v,color:S,onSelect:o})=>{var p,Y;const{openWindow:r}=Yn(),x=(s.vt_state||"idle").toLowerCase(),z=x==="combat"||x==="hunt",R=(s.total_rares??0)>0?Math.round((s.total_kills??0)/(s.total_rares??1)).toLocaleString():null,g=s.character_name;return i.jsxs("li",{className:"ml-player-row",style:{borderLeftColor:S},children:[i.jsxs("div",{className:"ml-pr-header",onClick:o,children:[i.jsx("span",{className:"ml-pr-name",children:g}),i.jsx("span",{className:"ml-pr-coords",children:Ns(s.ns,s.ew)})]}),i.jsxs("div",{className:"ml-pr-vitals",children:[i.jsx("div",{className:"ml-vital-bar hp",children:i.jsx("div",{className:"ml-vital-fill",style:{width:`${(v==null?void 0:v.health_percentage)??0}%`}})}),i.jsx("div",{className:"ml-vital-bar sta",children:i.jsx("div",{className:"ml-vital-fill",style:{width:`${(v==null?void 0:v.stamina_percentage)??0}%`}})}),i.jsx("div",{className:"ml-vital-bar mana",children:i.jsx("div",{className:"ml-vital-fill",style:{width:`${(v==null?void 0:v.mana_percentage)??0}%`}})})]}),i.jsxs("div",{className:"ml-pr-grid",children:[i.jsxs("span",{className:"ml-gs",title:"Session kills",children:["⚔️ ",((p=s.kills)==null?void 0:p.toLocaleString())??0]}),i.jsxs("span",{className:"ml-gs",title:"Total kills",children:["🏆 ",(s.total_kills??0).toLocaleString()]}),i.jsxs("span",{className:"ml-gs",title:"Kills per hour",children:[s.kills_per_hour??"0"," ",i.jsx("span",{className:"ml-suffix",children:"KPH"})]}),i.jsxs("span",{className:"ml-gs",title:"Rares (session / total)",children:["💎 ",s.session_rares??0," / ",s.total_rares??0]}),i.jsx("span",{className:"ml-gs",title:"Kills per rare",children:R?i.jsxs(i.Fragment,{children:["📊 ",R," ",i.jsx("span",{className:"ml-suffix",children:"KPR"})]}):""}),i.jsx("span",{className:`ml-meta-pill ${z?"active":""}`,children:s.vt_state||"idle"}),i.jsxs("span",{className:"ml-gs",title:"Online time",children:["🕐 ",((Y=s.onlinetime)==null?void 0:Y.replace(/^00\./,""))??"--"]}),i.jsxs("span",{className:"ml-gs",title:"Deaths",children:["☠️ ",s.deaths??"0"]}),i.jsxs("span",{className:"ml-gs",title:"Prismatic tapers",children:[i.jsx("img",{src:"/prismatic-taper-icon.png",className:"ml-taper-icon",alt:""}),s.prismatic_taper_count??"0"]})]}),i.jsxs("div",{className:"ml-pr-buttons",children:[i.jsx("button",{className:"ml-btn accent",onClick:()=>r(`chat-${g}`,`Chat: ${g}`,g),children:"Chat"}),i.jsx("button",{className:"ml-btn accent",onClick:()=>r(`stats-${g}`,`Stats: ${g}`,g),children:"Stats"}),i.jsx("button",{className:"ml-btn accent",onClick:()=>r(`inv-${g}`,`Inventory: ${g}`,g),children:"Inv"}),i.jsx("button",{className:"ml-btn",onClick:()=>r(`char-${g}`,`Character: ${g}`,g),children:"Char"}),i.jsx("button",{className:"ml-btn",onClick:()=>r(`combat-${g}`,`Combat: ${g}`,g),children:"Combat"}),i.jsx("button",{className:"ml-btn",onClick:()=>r(`radar-${g}`,`Radar: ${g}`,g),children:"Radar"})]})]})});oh.displayName="PlayerRow";const ly=({players:s,vitals:v,getColor:S,onSelect:o})=>i.jsx("ul",{className:"ml-player-list",children:s.map(r=>i.jsx(oh,{player:r,vitals:v.get(r.character_name)??null,color:S(r.character_name),onSelect:()=>o(r.character_name)},r.character_name))}),ey=[{key:"name",label:"Name"},{key:"kph",label:"KPH"},{key:"skills",label:"S.Kills"},{key:"srares",label:"S.Rares"},{key:"tkills",label:"T.Kills"},{key:"kpr",label:"KPR"}],ay=({value:s,onChange:v})=>i.jsx("div",{className:"ml-sort-buttons",children:ey.map(S=>i.jsx("button",{className:`ml-sort-btn ${s===S.key?"active":""}`,onClick:()=>v(S.key),children:S.label},S.key))}),ny=()=>{const{openWindow:s}=Yn();return i.jsxs("div",{className:"ml-tool-links",children:[i.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:()=>s("issues","Issues Board"),children:"📋 Issues"}),i.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:()=>s("vitalsharing","Vital Sharing"),children:"🤝 Vitals"}),i.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:()=>s("combatpicker","Combat Stats"),children:"⚔️ Combat"})]})},uy=({players:s,vitals:v,serverHealth:S,totalRares:o,totalKills:r,getColor:x,onSelectPlayer:z,onViewToggle:R,showHeatmap:g,showPortals:p,onToggleHeatmap:Y,onTogglePortals:U,version:X})=>{var J,k;const[et,F]=N.useState("name"),[lt,gt]=N.useState(""),P=N.useMemo(()=>s.reduce((T,L)=>T+(parseInt(L.kills_per_hour)||0),0),[s]),M=((J=S==null?void 0:S.status)==null?void 0:J.toLowerCase())==="online"||((k=S==null?void 0:S.status)==null?void 0:k.toLowerCase())==="up",I=N.useDeferredValue(s),G=N.useMemo(()=>{let T=[...I];switch(lt&&(T=T.filter(L=>L.character_name.toLowerCase().startsWith(lt.toLowerCase()))),et){case"kph":T.sort((L,K)=>(parseInt(K.kills_per_hour)||0)-(parseInt(L.kills_per_hour)||0));break;case"skills":T.sort((L,K)=>(K.kills||0)-(L.kills||0));break;case"srares":T.sort((L,K)=>(K.session_rares??0)-(L.session_rares??0));break;case"tkills":T.sort((L,K)=>(K.total_kills??0)-(L.total_kills??0));break;case"kpr":T.sort((L,K)=>{const V=(L.total_kills??0)/Math.max(1,L.total_rares??1),nt=(K.total_kills??0)/Math.max(1,K.total_rares??1);return V-nt});break;default:T.sort((L,K)=>L.character_name.localeCompare(K.character_name))}return T},[I,et,lt]);return i.jsxs("div",{className:"ml-sidebar",children:[X&&i.jsxs("div",{className:"ml-version",children:["v",X]}),i.jsx("div",{className:"ml-sidebar-header",children:i.jsxs("span",{className:"ml-sidebar-title",children:["Active Mosswart Enjoyers (",s.length,")"]})}),i.jsxs("div",{className:"ml-server-status",children:[i.jsx("span",{className:`ml-status-dot ${M?"online":"offline"}`}),i.jsxs("span",{className:"ml-status-text",children:["Coldeve ",M?"Online":"Offline"]}),(S==null?void 0:S.player_count)!=null&&i.jsxs("span",{className:"ml-status-detail",children:["👥 ",S.player_count]}),(S==null?void 0:S.latency_ms)!=null&&i.jsxs("span",{className:"ml-status-detail",children:[Math.round(S.latency_ms),"ms"]}),(S==null?void 0:S.uptime_seconds)!=null&&i.jsxs("span",{className:"ml-status-detail",children:["Up: ",Math.floor(S.uptime_seconds/3600),"h"]})]}),i.jsxs("div",{className:"ml-counters",children:[i.jsxs("div",{className:"ml-counter rares",children:[i.jsx("span",{className:"ml-counter-val",children:o}),i.jsx("span",{className:"ml-counter-lbl",children:"Rares"})]}),i.jsxs("div",{className:`ml-counter kph ${P>5e3?"ultra":""}`,children:[i.jsx("span",{className:"ml-counter-val",children:P.toLocaleString()}),i.jsx("span",{className:"ml-counter-lbl",children:"Server KPH"})]}),i.jsxs("div",{className:"ml-counter kills",children:[i.jsx("span",{className:"ml-counter-val",children:r.toLocaleString()}),i.jsx("span",{className:"ml-counter-lbl",children:"Kills"})]})]}),i.jsxs("div",{className:"ml-tool-links",children:[i.jsx("span",{className:"ml-tool-link",style:{cursor:"pointer"},onClick:R,children:"📊 Dashboard"}),i.jsx("a",{href:"/inventory.html",target:"_blank",className:"ml-tool-link",children:"🔍 Inv Search"}),i.jsx("a",{href:"/suitbuilder.html",target:"_blank",className:"ml-tool-link",children:"🛡️ Suitbuilder"}),i.jsx("a",{href:"/debug.html",target:"_blank",className:"ml-tool-link",children:"🐛 Debug"}),i.jsx("a",{href:"/quest-status.html",target:"_blank",className:"ml-tool-link",children:"📜 Quests"})]}),i.jsx(ny,{}),i.jsxs("div",{className:"ml-toggles",children:[i.jsxs("label",{className:"ml-toggle-label",children:[i.jsx("input",{type:"checkbox",checked:g,onChange:T=>Y(T.target.checked)}),i.jsx("span",{children:"Spawn Heatmap"})]}),i.jsxs("label",{className:"ml-toggle-label",children:[i.jsx("input",{type:"checkbox",checked:p,onChange:T=>U(T.target.checked)}),i.jsx("span",{children:"Portals"})]})]}),i.jsx(ay,{value:et,onChange:F}),i.jsx("input",{className:"ml-filter",type:"text",placeholder:"Filter players...",value:lt,onChange:T=>gt(T.target.value)}),i.jsx(ly,{players:G,vitals:v,getColor:x,onSelect:z})]})},Xl=({id:s,title:v,zIndex:S,width:o=700,height:r=340,children:x})=>{const{closeWindow:z,bringToFront:R}=Yn(),g=N.useRef(null),p=N.useRef({dragging:!1,sx:0,sy:0,ox:0,oy:0}),Y=N.useRef({x:420,y:10+Math.random()*40}),U=N.useCallback(X=>{var F;X.preventDefault(),R(s);const et=(F=g.current)==null?void 0:F.getBoundingClientRect();et&&(p.current={dragging:!0,sx:X.clientX,sy:X.clientY,ox:et.left,oy:et.top})},[s,R]);return N.useEffect(()=>{const X=F=>{const lt=p.current;!lt.dragging||!g.current||(Y.current.x=lt.ox+(F.clientX-lt.sx),Y.current.y=lt.oy+(F.clientY-lt.sy),g.current.style.left=`${Y.current.x}px`,g.current.style.top=`${Y.current.y}px`)},et=()=>{p.current.dragging=!1};return window.addEventListener("mousemove",X),window.addEventListener("mouseup",et),()=>{window.removeEventListener("mousemove",X),window.removeEventListener("mouseup",et)}},[]),i.jsxs("div",{ref:g,className:"ml-window",style:{zIndex:S,width:o,height:r,left:Y.current.x,top:Y.current.y},onMouseDown:()=>R(s),children:[i.jsxs("div",{className:"ml-window-header",onMouseDown:U,children:[i.jsx("span",{className:"ml-window-title",children:v}),i.jsx("button",{className:"ml-window-close",onClick:()=>z(s),children:"×"})]}),i.jsx("div",{className:"ml-window-content",children:x})]})},iy={0:"#00FF00",2:"#FFFFFF",3:"#FF0000",4:"#FFFFFF",5:"#33CCFF",6:"#CCFF99",7:"#00FFFF",14:"#FFD700",15:"#FF69B4",17:"#AAAAFF",18:"#88FF88",21:"#FF8888",22:"#FFAA66"},cy=({id:s,charName:v,zIndex:S,messages:o,socket:r})=>{const x=N.useRef(null),[z,R]=N.useState("");N.useEffect(()=>{x.current&&(x.current.scrollTop=x.current.scrollHeight)},[o.length]);const g=p=>{p.preventDefault();const Y=z.trim();!Y||!r||r.readyState!==WebSocket.OPEN||(r.send(JSON.stringify({player_name:v,command:Y})),R(""))};return i.jsxs(Xl,{id:s,title:`Chat: ${v}`,zIndex:S,width:600,height:300,children:[i.jsx("div",{className:"ml-chat-messages",ref:x,children:o.map((p,Y)=>i.jsx("div",{className:"ml-chat-line",style:{color:iy[p.color??2]??"#ddd"},children:p.text},Y))}),i.jsx("form",{className:"ml-chat-form",onSubmit:g,children:i.jsx("input",{className:"ml-chat-input",value:z,onChange:p=>R(p.target.value),placeholder:"Enter chat..."})})]})},sy=[{title:"Kills per Hour",id:1},{title:"Memory (MB)",id:2},{title:"CPU (%)",id:3},{title:"Mem Handles",id:4}],fy=[{label:"1H",value:"now-1h"},{label:"6H",value:"now-6h"},{label:"24H",value:"now-24h"},{label:"7D",value:"now-7d"}],oy=({id:s,charName:v,zIndex:S})=>{const[o,r]=N.useState("now-24h"),x=z=>`/grafana/d-solo/dereth-tracker/dereth-tracker-dashboard?panelId=${z}&var-character=${encodeURIComponent(v)}&from=${o}&to=now&theme=light`;return i.jsxs(Xl,{id:s,title:`Stats: ${v}`,zIndex:S,width:750,height:480,children:[i.jsx("div",{className:"ml-stats-controls",children:fy.map(z=>i.jsx("button",{className:`ml-stats-range-btn ${o===z.value?"active":""}`,onClick:()=>r(z.value),children:z.label},z.value))}),i.jsx("div",{className:"ml-stats-grid",children:sy.map(z=>i.jsx("div",{className:"ml-stats-panel",children:i.jsx("iframe",{src:x(z.id),width:"100%",height:"100%",frameBorder:"0",title:z.title})},z.id))})]})},Jd={218:"Reinforcement of the Lugians",219:"Bleeargh's Fortitude",220:"Oswald's Enhancement",221:"Siraluun's Blessing",222:"Enduring Calm",223:"Steadfast Will",224:"Ciandra's Essence",225:"Yoshi's Essence",226:"Jibril's Essence",227:"Celdiseth's Essence",228:"Koga's Essence",229:"Shadow of the Seventh Mule",230:"Might of the Seventh Mule",231:"Clutch of the Miser",232:"Enduring Enchantment",233:"Critical Protection",234:"Quick Learner",235:"Ciandra's Fortune",236:"Charmed Smith",237:"Innate Renewal",238:"Archmage's Endurance",239:"Enhancement of the Blade Turner",240:"Enhancement of the Arrow Turner",241:"Enhancement of the Mace Turner",242:"Caustic Enhancement",243:"Fierce Impaler",244:"Iron Skin of the Invincible",245:"Eye of the Remorseless",246:"Hand of the Remorseless",294:"Master of the Steel Circle",295:"Master of the Focused Eye",296:"Master of the Five Fold Path",297:"Frenzy of the Slayer",298:"Iron Skin of the Invincible",299:"Jack of All Trades",300:"Infused Void Magic",301:"Infused War Magic",302:"Infused Life Magic",309:"Infused Item Magic",310:"Infused Creature Magic",326:"Clutch of the Miser",328:"Enduring Enchantment"},$d={333:"Valor / Destruction",334:"Protection",335:"Glory / Retribution",336:"Temperance / Hardening",338:"Aetheric Vision",339:"Mana Flow",340:"Mana Infusion",342:"Purity",343:"Craftsman",344:"Specialization",365:"World"},Wd={370:"Damage",371:"Damage Resistance",372:"Critical",373:"Critical Resistance",374:"Critical Damage",375:"Critical Damage Resistance",376:"Healing Boost",379:"Vitality"},Fd={287:"Celestial Hand",288:"Eldrytch Web",289:"Radiant Blood"},Id={354:"Melee",355:"Ranged",362:"Summoning"},ry={1:"Unarmed",2:"Swords",3:"Axes",4:"Maces",5:"Spears",6:"Daggers",7:"Staves",8:"Bows",9:"Crossbows",10:"Thrown",11:"Two-Handed",12:"Void",13:"War",14:"Life"},Pd={181:"Chess Rank",192:"Fishing Skill",199:"Total Augmentations",322:"Aetheria Slots",390:"Enlightenment"};function dy(s){return s>=1001?"Master":s>=301?"Lord":s>=151?"Knight":s>=31?"Adept":"Initiate"}const xl="#af7a30",ei="#000022",hy=({id:s,charName:v,zIndex:S,vitals:o})=>{var $,E;const[r,x]=N.useState(null),[z,R]=N.useState(0),[g,p]=N.useState(0);N.useEffect(()=>{tl(`/character-stats/${encodeURIComponent(v)}`).then(x).catch(()=>{})},[v]);const Y=h=>h!=null?Number(h).toLocaleString():"—",U=(r==null?void 0:r.stats_data)||r||{},X=U.attributes||{},et=U.skills||{},F=U.vitals||{},lt=U.titles||[],gt=U.properties||{},P=Object.entries(et).filter(([,h])=>(h==null?void 0:h.training)==="Specialized").sort(([h],[B])=>h.localeCompare(B)),M=Object.entries(et).filter(([,h])=>(h==null?void 0:h.training)==="Trained").sort(([h],[B])=>h.localeCompare(B)),I=Object.entries(gt).filter(([h,B])=>Jd[parseInt(h)]&&Number(B)>0).map(([h,B])=>({name:Jd[parseInt(h)],uses:Number(B)})),G=Object.entries(gt).filter(([h,B])=>$d[parseInt(h)]&&Number(B)>0).map(([h,B])=>({name:$d[parseInt(h)],uses:Number(B)})),J=Object.entries(gt).filter(([h,B])=>Wd[parseInt(h)]&&Number(B)>0).map(([h,B])=>({name:Wd[parseInt(h)],value:Number(B)})),k=[];r!=null&&r.birth&&k.push({name:"Birth",value:r.birth}),(r==null?void 0:r.deaths)!=null&&k.push({name:"Deaths",value:Y(r.deaths)}),Object.entries(gt).forEach(([h,B])=>{const W=parseInt(h);Pd[W]&&k.push({name:Pd[W],value:B})});const T=[];Object.entries(gt).forEach(([h,B])=>{const W=parseInt(h);Id[W]&&T.push({name:Id[W],value:ry[Number(B)]||`Unknown (${B})`})});const L=[];Object.entries(gt).forEach(([h,B])=>{const W=parseInt(h);Fd[W]&&Number(B)>0&&L.push({name:Fd[W],rank:dy(Number(B)),value:Number(B)})});const K=h=>({padding:"5px 8px",fontSize:12,fontWeight:"bold",color:"#fff",cursor:"pointer",userSelect:"none",borderTop:`2px solid ${h?xl:ei}`,borderLeft:`2px solid ${h?xl:ei}`,borderRight:`2px solid ${h?xl:ei}`,background:h?"rgba(0,100,0,0.4)":"transparent"}),V={background:"#000",border:`2px solid ${xl}`,maxHeight:400,overflowY:"auto",overflowX:"hidden"},nt={background:"#222",fontWeight:"bold",fontSize:12,padding:"2px 6px"},st={padding:"2px 6px",background:"rgba(0,100,0,0.4)",whiteSpace:"nowrap"},mt={padding:"2px 6px",background:"rgba(0,0,100,0.4)",textAlign:"right",whiteSpace:"nowrap"},Q={padding:"2px 6px",color:"#ccc"};return i.jsx(Xl,{id:s,title:`Character: ${v}`,zIndex:S,width:740,height:600,children:i.jsxs("div",{style:{background:ei,color:"#fff",font:'14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif',overflowY:"auto",padding:"10px 15px 15px",flex:1},children:[i.jsxs("div",{style:{marginBottom:10},children:[i.jsxs("h1",{style:{margin:"0 0 2px",fontSize:28,fontWeight:"bold"},children:[v,i.jsx("span",{style:{fontSize:"200%",color:"#fff27f",float:"right"},children:(r==null?void 0:r.level)||""})]}),i.jsx("div",{style:{fontSize:"85%",color:"gold"},children:[r==null?void 0:r.gender,r==null?void 0:r.race].filter(Boolean).join(" ")||"Awaiting character data..."})]}),i.jsxs("div",{style:{fontSize:"85%",margin:"6px 0 10px",display:"grid",gridTemplateColumns:"1fr 1fr",gap:"0 20px"},children:[i.jsxs("div",{children:["Total XP: ",Y(r==null?void 0:r.total_xp)]}),i.jsxs("div",{style:{textAlign:"right"},children:["Unassigned XP: ",Y(r==null?void 0:r.unassigned_xp)]}),i.jsxs("div",{children:["Luminance: ",(r==null?void 0:r.luminance_earned)!=null?`${Y(r.luminance_earned)} / ${Y(r.luminance_total)}`:"—"]}),i.jsxs("div",{style:{textAlign:"right"},children:["Deaths: ",Y(r==null?void 0:r.deaths)]})]}),i.jsxs("div",{style:{display:"flex",gap:13,flexWrap:"wrap"},children:[i.jsxs("div",{style:{width:320},children:[i.jsx("div",{style:{height:30,display:"flex"},children:["Attributes","Skills","Titles"].map((h,B)=>i.jsx("div",{style:K(z===B),onClick:()=>R(B),children:h},h))}),i.jsxs("div",{style:V,children:[z===0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{padding:"6px 8px",display:"flex",flexDirection:"column",gap:8,borderBottom:`2px solid ${xl}`},children:[{label:"Health",pct:(o==null?void 0:o.health_percentage)??0,cur:o==null?void 0:o.health_current,max:o==null?void 0:o.health_max,bg:"#cc3333"},{label:"Stamina",pct:(o==null?void 0:o.stamina_percentage)??0,cur:o==null?void 0:o.stamina_current,max:o==null?void 0:o.stamina_max,bg:"#ccaa33"},{label:"Mana",pct:(o==null?void 0:o.mana_percentage)??0,cur:o==null?void 0:o.mana_current,max:o==null?void 0:o.mana_max,bg:"#3366cc"}].map(h=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[i.jsx("span",{style:{width:55,fontSize:12,color:"#ccc"},children:h.label}),i.jsx("div",{style:{flex:1,height:14,overflow:"hidden",position:"relative",border:`1px solid ${xl}`},children:i.jsx("div",{style:{height:"100%",width:`${h.pct}%`,background:h.bg,transition:"width 0.5s ease"}})}),i.jsxs("span",{style:{width:80,textAlign:"right",fontSize:12,color:"#ccc"},children:[h.cur??"—"," / ",h.max??"—"]})]},h.label))}),i.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("td",{style:nt,children:"Attribute"}),i.jsx("td",{style:nt,children:"Creation"}),i.jsx("td",{style:nt,children:"Base"})]})}),i.jsx("tbody",{children:["strength","endurance","coordination","quickness","focus","self"].map(h=>{var B,W;return i.jsxs("tr",{children:[i.jsx("td",{style:st,children:h.charAt(0).toUpperCase()+h.slice(1)}),i.jsx("td",{style:Q,children:((B=X[h])==null?void 0:B.creation)??"—"}),i.jsx("td",{style:mt,children:((W=X[h])==null?void 0:W.base)??"—"})]},h)})})]}),i.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("td",{style:nt,children:"Vital"}),i.jsx("td",{style:nt,children:"Base"})]})}),i.jsx("tbody",{children:["health","stamina","mana"].map(h=>{var B;return i.jsxs("tr",{children:[i.jsx("td",{style:st,children:h.charAt(0).toUpperCase()+h.slice(1)}),i.jsx("td",{style:mt,children:((B=F[h])==null?void 0:B.base)??"—"})]},h)})})]}),i.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:i.jsx("tbody",{children:i.jsxs("tr",{children:[i.jsx("td",{style:st,children:"Skill Credits"}),i.jsx("td",{style:mt,children:Y(U.skill_credits)})]})})})]}),z===1&&i.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("td",{style:nt,children:"Skill"}),i.jsx("td",{style:nt,children:"Level"})]})}),i.jsxs("tbody",{children:[P.map(([h,B])=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",background:"linear-gradient(to right, #392067, #392067, black)"},children:h.replace(/_/g," ").replace(/\b\w/g,W=>W.toUpperCase())}),i.jsx("td",{style:{...mt,background:"linear-gradient(to right, #392067, #392067, black)"},children:B.base})]},h)),M.map(([h,B])=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",background:"linear-gradient(to right, #0f3c3e, #0f3c3e, black)"},children:h.replace(/_/g," ").replace(/\b\w/g,W=>W.toUpperCase())}),i.jsx("td",{style:{...mt,background:"linear-gradient(to right, #0f3c3e, #0f3c3e, black)"},children:B.base})]},h)),P.length===0&&M.length===0&&i.jsx("tr",{children:i.jsx("td",{colSpan:2,style:{padding:10,color:"#666",fontStyle:"italic",textAlign:"center"},children:"No skill data"})})]})]}),z===2&&i.jsx("div",{style:{padding:"6px 10px",fontSize:13},children:lt.length>0?lt.map((h,B)=>i.jsx("div",{style:{padding:"1px 0"},children:h},B)):i.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No titles"})})]})]}),i.jsxs("div",{style:{width:320},children:[i.jsx("div",{style:{height:30,display:"flex"},children:["Augmentations","Ratings","Other"].map((h,B)=>i.jsx("div",{style:K(g===B),onClick:()=>p(B),children:h},h))}),i.jsxs("div",{style:V,children:[g===0&&(I.length||G.length?i.jsxs(i.Fragment,{children:[I.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${xl}`},children:"Augmentations"}),i.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("td",{style:nt,children:"Name"}),i.jsx("td",{style:nt,children:"Uses"})]})}),i.jsx("tbody",{children:I.map(h=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px"},children:h.name}),i.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:h.uses})]},h.name))})]})]}),G.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${xl}`},children:"Auras"}),i.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("td",{style:nt,children:"Name"}),i.jsx("td",{style:nt,children:"Uses"})]})}),i.jsx("tbody",{children:G.map(h=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px"},children:h.name}),i.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:h.uses})]},h.name))})]})]})]}):i.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No augmentation data"})),g===1&&(J.length>0?i.jsxs("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("td",{style:nt,children:"Rating"}),i.jsx("td",{style:nt,children:"Value"})]})}),i.jsx("tbody",{children:J.map(h=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px"},children:h.name}),i.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:h.value})]},h.name))})]}):i.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No rating data"})),g===2&&i.jsxs("div",{children:[k.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${xl}`},children:"General"}),i.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:i.jsx("tbody",{children:k.map(h=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px"},children:h.name}),i.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:h.value})]},h.name))})})]}),T.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${xl}`},children:"Masteries"}),i.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:i.jsx("tbody",{children:T.map(h=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px"},children:h.name}),i.jsx("td",{style:{padding:"2px 6px",textAlign:"right"},children:h.value})]},h.name))})})]}),L.length>0&&i.jsxs(i.Fragment,{children:[i.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${xl}`},children:"Society"}),i.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:i.jsx("tbody",{children:L.map(h=>i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px"},children:h.name}),i.jsxs("td",{style:{padding:"2px 6px",textAlign:"right"},children:[h.rank," (",h.value,")"]})]},h.name))})})]}),k.length===0&&T.length===0&&L.length===0&&i.jsx("div",{style:{color:"#666",fontStyle:"italic",textAlign:"center",padding:10},children:"No additional data"})]})]})]})]}),(r==null?void 0:r.allegiance)&&i.jsxs("div",{style:{marginTop:5,border:`2px solid ${xl}`,background:"#000"},children:[i.jsx("div",{style:{background:"#222",padding:"4px 8px",fontWeight:"bold",fontSize:13,borderBottom:`1px solid ${xl}`},children:"Allegiance"}),i.jsx("table",{style:{width:"100%",fontSize:13,borderCollapse:"collapse"},children:i.jsxs("tbody",{children:[r.allegiance.name&&i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",color:"#ccc",width:100},children:"Name"}),i.jsx("td",{style:{padding:"2px 6px"},children:r.allegiance.name})]}),(($=r.allegiance.monarch)==null?void 0:$.name)&&i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Monarch"}),i.jsx("td",{style:{padding:"2px 6px"},children:r.allegiance.monarch.name})]}),((E=r.allegiance.patron)==null?void 0:E.name)&&i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Patron"}),i.jsx("td",{style:{padding:"2px 6px"},children:r.allegiance.patron.name})]}),r.allegiance.rank!=null&&i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Rank"}),i.jsx("td",{style:{padding:"2px 6px"},children:r.allegiance.rank})]}),r.allegiance.followers!=null&&i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"2px 6px",color:"#ccc"},children:"Followers"}),i.jsx("td",{style:{padding:"2px 6px"},children:r.allegiance.followers})]})]})})]})]})})};function my(s){var o,r;if(!s)return s;const v=x=>x!=null&&x!==-1&&x!==-1?x:void 0,S=s.IntValues||{};return{item_id:s.item_id??s.Id??0,name:s.name??s.Name??((o=s.StringValues)==null?void 0:o["1"])??"Unknown",icon:s.icon??s.Icon??0,object_class:s.object_class??s.ObjectClass??0,current_wielded_location:s.current_wielded_location??v(s.CurrentWieldedLocation)??v(Number(S[10]))??0,container_id:s.container_id??s.ContainerId??0,items_capacity:s.items_capacity??v(s.ItemsCapacity)??v(Number(S[6]))??((r=s.enhanced_properties)==null?void 0:r.ItemSlots_Decal)??void 0,value:s.value??v(s.Value)??v(Number(S[19]))??0,burden:s.burden??v(s.Burden)??v(Number(S[5]))??0,armor_level:s.armor_level??v(s.ArmorLevel),max_damage:s.max_damage??v(s.MaxDamage),material:s.material??s.material_name??s.Material??void 0,item_set:s.item_set??s.ItemSet??void 0,imbue:s.imbue??s.Imbue??void 0,tinks:s.tinks??v(s.Tinks),workmanship:s.workmanship??v(s.Workmanship),equip_skill:s.equip_skill??s.equip_skill_name??s.EquipSkill??void 0,wield_level:s.wield_level??v(s.WieldLevel),skill_level:s.skill_level??v(s.SkillLevel),lore_requirement:s.lore_requirement??v(s.LoreRequirement),attack_bonus:s.attack_bonus??v(s.AttackBonus),melee_defense_bonus:s.melee_defense_bonus??v(s.MeleeDefenseBonus),magic_defense_bonus:s.magic_defense_bonus??v(s.MagicDBonus),damage_bonus:s.damage_bonus??v(s.DamageBonus),damage_rating:s.damage_rating??v(s.DamRating),crit_rating:s.crit_rating??v(s.CritRating),heal_boost_rating:s.heal_boost_rating??v(s.HealBoostRating),current_mana:s.current_mana??v(Number(S[218103815]))??void 0,max_mana:s.max_mana??v(Number(S[218103814]))??void 0,spellcraft:s.spellcraft??void 0,damage_range:s.damage_range??void 0,damage_type:s.damage_type??void 0,speed_text:s.speed_text??void 0,mana_display:s.mana_display??void 0,spells:s.spells??void 0,icon_overlay_id:s.icon_overlay_id??v(Number(S[218103849]))??void 0,icon_underlay_id:s.icon_underlay_id??v(Number(S[218103850]))??void 0,_raw:s}}function ai(s){return!s||s<=0?"06000133":(s+100663296).toString(16).toUpperCase().padStart(8,"0")}const Ua={32768:{name:"Neck",row:1,col:1},1:{name:"Head",row:1,col:3},268435456:{name:"Sigil",row:1,col:5},536870912:{name:"Sigil",row:1,col:6},1073741824:{name:"Sigil",row:1,col:7},67108864:{name:"Trinket",row:2,col:1},2048:{name:"U.Arm",row:2,col:2},512:{name:"Chest",row:2,col:3},134217728:{name:"Cloak",row:2,col:7},65536:{name:"Brace L",row:3,col:1},4096:{name:"L.Arm",row:3,col:2},1024:{name:"Abdomen",row:3,col:3},8192:{name:"U.Leg",row:3,col:4},131072:{name:"Brace R",row:3,col:5},2:{name:"Shirt",row:3,col:7},262144:{name:"Ring L",row:4,col:1},32:{name:"Hands",row:4,col:2},16384:{name:"L.Leg",row:4,col:4},524288:{name:"Ring R",row:4,col:5},4:{name:"Pants",row:4,col:7},256:{name:"Feet",row:5,col:4},2097152:{name:"Shield",row:6,col:1},1048576:{name:"Melee",row:6,col:3},4194304:{name:"Missile",row:6,col:3},16777216:{name:"Held",row:6,col:3},33554432:{name:"2H",row:6,col:3},8388608:{name:"Ammo",row:6,col:7}},Ba={},yy=[32768,67108864,65536,131072,262144,524288],gy=[1,512,2048,1024,4096,8192,16384,32,256],vy=[2,4,134217728,268435456,536870912,1073741824],py=[2097152,1048576,4194304,16777216,33554432,8388608];(()=>{const s=new Set;Object.entries(Ua).forEach(([v,S])=>{const o=`${S.row}-${S.col}`,r=parseInt(v);s.has(o)||(s.add(o),yy.includes(r)?Ba[o]="#3a2555":gy.includes(r)?Ba[o]="#1e2e55":vy.includes(r)?Ba[o]="#1e3e3e":py.includes(r)?Ba[o]="#142040":Ba[o]="#2a2a2a")})})();const Ha="#af7a30";function Ts({item:s,size:v=36}){const S={position:"absolute",top:0,left:0,width:v,height:v,border:"none",background:"transparent",imageRendering:"pixelated"},o=s.icon_underlay_id&&s.icon_underlay_id>100?`/icons/${ai(s.icon_underlay_id)}.png`:null,r=s.icon_overlay_id&&s.icon_overlay_id>100?`/icons/${ai(s.icon_overlay_id)}.png`:null;return i.jsxs("div",{style:{width:v,height:v,position:"relative"},children:[o&&i.jsx("img",{src:o,alt:"",style:{...S,zIndex:1},onError:x=>{x.target.style.display="none"}}),i.jsx("img",{src:`/icons/${ai(s.icon)}.png`,alt:s.name,style:{...S,zIndex:2},onError:x=>{x.target.src="/icons/06000133.png"}}),r&&i.jsx("img",{src:r,alt:"",style:{...S,zIndex:3},onError:x=>{x.target.style.display="none"}})]})}function xy({item:s,x:v,y:S}){var z,R;const o=g=>g!=null&&g!==-1&&g!==-1,r=g=>g.toLocaleString(),x=g=>`${((g-1)*100).toFixed(1)}%`;return i.jsxs("div",{style:{position:"fixed",left:v+14,top:S+14,background:"rgba(0,0,0,0.96)",border:"1px solid #555",borderRadius:4,padding:"8px 12px",zIndex:99999,minWidth:200,maxWidth:340,fontSize:13,color:"#ddd",pointerEvents:"none",lineHeight:1.6,fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif'},children:[i.jsx("div",{style:{color:"#ffcc00",fontWeight:"bold",fontSize:14,marginBottom:4},children:s.name}),i.jsxs("div",{style:{color:"#aaa"},children:["Value: ",r(s.value)," · Burden: ",s.burden]}),s.workmanship&&i.jsxs("div",{style:{color:"#aaa"},children:["Workmanship: ",s.workmanship]}),s.material&&i.jsxs("div",{style:{color:"#88ff88"},children:["Material: ",s.material]}),o(s.armor_level)&&i.jsxs("div",{style:{color:"#88ff88"},children:["Armor Level: ",s.armor_level]}),o(s.max_damage)&&i.jsxs("div",{style:{color:"#88ff88"},children:["Max Damage: ",s.max_damage]}),s.damage_range&&i.jsxs("div",{style:{color:"#88ff88"},children:["Damage: ",s.damage_range,s.damage_type?`, ${s.damage_type}`:""]}),o(s.attack_bonus)&&s.attack_bonus!==1&&i.jsxs("div",{style:{color:"#88ff88"},children:["Attack: +",x(s.attack_bonus)]}),o(s.melee_defense_bonus)&&s.melee_defense_bonus!==1&&i.jsxs("div",{style:{color:"#88ff88"},children:["Melee Def: +",x(s.melee_defense_bonus)]}),o(s.magic_defense_bonus)&&s.magic_defense_bonus!==1&&i.jsxs("div",{style:{color:"#88ff88"},children:["Magic Def: +",x(s.magic_defense_bonus)]}),s.equip_skill&&i.jsxs("div",{style:{color:"#ddd"},children:["Skill: ",s.equip_skill]}),o(s.wield_level)&&i.jsxs("div",{style:{color:"#ffaa00"},children:["Wield Level: ",s.wield_level]}),o(s.lore_requirement)&&i.jsxs("div",{style:{color:"#ffaa00"},children:["Lore: ",s.lore_requirement]}),s.imbue&&i.jsxs("div",{style:{color:"#88ff88"},children:["Imbue: ",s.imbue]}),s.item_set&&i.jsxs("div",{style:{color:"#88ff88"},children:["Set: ",s.item_set]}),o(s.tinks)&&i.jsxs("div",{style:{color:"#88ff88"},children:["Tinks: ",s.tinks]}),o(s.damage_rating)&&i.jsxs("div",{children:["Damage Rating: ",s.damage_rating]}),o(s.crit_rating)&&i.jsxs("div",{children:["Crit Rating: ",s.crit_rating]}),o(s.heal_boost_rating)&&i.jsxs("div",{children:["Heal Boost: ",s.heal_boost_rating]}),s.spellcraft&&i.jsxs("div",{style:{color:"#dda0dd"},children:["Spellcraft: ",s.spellcraft]}),o(s.current_mana)&&o(s.max_mana)&&i.jsxs("div",{style:{color:"#98d7ff"},children:["Mana: ",s.current_mana," / ",s.max_mana]}),((R=(z=s.spells)==null?void 0:z.spells)==null?void 0:R.length)>0&&i.jsxs("div",{style:{color:"#4a90e2",marginTop:4,fontSize:12},children:["Spells: ",s.spells.spells.map(g=>g.name).join(", ")]})]})}function th({iconSrc:s,isActive:v,fillPct:S,label:o,onClick:r}){const x=S>90?"#b7432c":S>70?"#d8a431":"#00ff00";return i.jsxs("div",{onClick:r,title:o,style:{display:"flex",alignItems:"flex-start",gap:2,cursor:"pointer",flexShrink:0,marginTop:3,position:"relative"},children:[v&&i.jsx("span",{style:{position:"absolute",left:-11,top:8,color:Ha,fontSize:10},children:"▶"}),i.jsx("div",{style:{width:30,height:30,border:v?"1px solid #00ff00":"1px solid #333",boxShadow:v?"0 0 4px #00ff00":"none",background:"#000",display:"flex",alignItems:"center",justifyContent:"center"},children:i.jsx("img",{src:s,alt:"",style:{width:26,height:26,objectFit:"contain",imageRendering:"pixelated"},onError:z=>{z.target.src="/icons/06001080.png"}})}),i.jsx("div",{style:{width:7,height:30,background:"#222",border:"1px solid #666",position:"relative",overflow:"hidden",borderRadius:2},title:`${Math.round(S)}% full`,children:i.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:`${S}%`,background:x,minHeight:S>0?2:0}})})]})}const by=({id:s,charName:v,zIndex:S})=>{var nt,st,mt;const[o,r]=N.useState([]),[x,z]=N.useState(!0),[R,g]=N.useState(null),[p,Y]=N.useState(null),[U,X]=N.useState(null),[et,F]=N.useState(null);N.useEffect(()=>{z(!0),Promise.all([tl(`/inventory/${encodeURIComponent(v)}?limit=1000`).catch(()=>({items:[]})),tl(`/character-stats/${encodeURIComponent(v)}`).catch(()=>null)]).then(([Q,$])=>{const E=Q.items??[];r(E.map(my)),X($)}).finally(()=>z(!1))},[v]);const lt=N.useCallback((Q,$)=>{Y(Q&&$?{item:Q,x:$.clientX,y:$.clientY}:null)},[]),gt=N.useMemo(()=>{const Q=new Set,$=[];return Object.entries(Ua).forEach(([E,h])=>{const B=`${h.row}-${h.col}`;Q.has(B)||(Q.add(B),$.push({key:B,...h,mask:parseInt(E)}))}),$},[]),{equippedMap:P,containers:M,packItems:I}=N.useMemo(()=>{const Q=new Map,$=[],E=new Set,h=new Map;o.forEach(W=>{W.object_class===10&&($.push(W),E.add(W.item_id))}),$.sort((W,yt)=>(W.item_id>>>0)-(yt.item_id>>>0));let B=null;return o.forEach(W=>{W.current_wielded_location>0&&W.container_id&&!E.has(W.container_id)&&(B=W.container_id)}),o.forEach(W=>{if(E.has(W.item_id))return;const yt=W.current_wielded_location;if(yt>0)if(W.object_class===2)Object.entries(Ua).forEach(([C,w])=>{if((yt&parseInt(C))===parseInt(C)){const Z=`${w.row}-${w.col}`;Q.has(Z)||Q.set(Z,W)}});else{let C=!1;if(Ua[yt]){const w=Ua[yt],Z=`${w.row}-${w.col}`;Q.has(Z)||(Q.set(Z,W),C=!0)}if(!C){for(const[w,Z]of Object.entries(Ua))if((yt&parseInt(w))===parseInt(w)){const it=`${Z.row}-${Z.col}`;if(!Q.has(it)){Q.set(it,W),C=!0;break}}}}else{let m=W.container_id||0;B&&m===B&&(m=0),h.has(m)||h.set(m,[]),h.get(m).push(W)}}),{equippedMap:Q,containers:$,packItems:h}},[o]);let G=I.get(0)??[],J=0;if(G.length===0){let Q=0;for(const[$,E]of I.entries())!M.some(h=>h.item_id===$)&&E.length>Q&&(Q=E.length,J=$);G=I.get(J)??[]}const k=R!==null?I.get(R)??[]:G,T=(U==null?void 0:U.burden_units)??((nt=U==null?void 0:U.stats_data)==null?void 0:nt.burden_units)??0,L=(U==null?void 0:U.encumbrance_capacity)??((st=U==null?void 0:U.stats_data)==null?void 0:st.encumbrance_capacity)??0,K=L>0?Math.min(200,T/L*100):0,V=K>150?"#b7432c":K>100?"#d8a431":"#2e8b57";return x?i.jsx(Xl,{id:s,title:`Inventory: ${v}`,zIndex:S,width:572,height:720,children:i.jsx("div",{style:{padding:20,color:"#666",fontStyle:"italic"},children:"Loading inventory..."})}):i.jsxs(Xl,{id:s,title:`Inventory: ${v}`,zIndex:S,width:572,height:720,children:[i.jsxs("div",{style:{display:"flex",flex:1,overflow:"hidden",background:"rgba(14,14,14,0.96)",fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif',fontSize:13},children:[i.jsxs("div",{style:{width:316,display:"flex",flexDirection:"column",overflow:"hidden"},children:[i.jsx("div",{style:{position:"relative",height:270,minHeight:270,background:"#0a0a0a",borderBottom:`1px solid ${Ha}`},children:gt.map(Q=>{const $=P.get(Q.key),E=Ba[Q.key]??"#2a2a2a";return i.jsx("div",{style:{position:"absolute",left:(Q.col-1)*44+4,top:(Q.row-1)*44+4,width:36,height:36,background:$?"#5a5a62":E,border:$?"2px solid #00ffff":"2px outset #6a6a72",boxShadow:$?"0 0 5px #00ffff, inset 0 0 5px rgba(0,255,255,0.2)":"none",display:"flex",alignItems:"center",justifyContent:"center",cursor:$?"pointer":"default"},onMouseEnter:h=>$&<($,h),onMouseMove:h=>$&<($,h),onMouseLeave:()=>lt(null),children:$?i.jsx(Ts,{item:$,size:32}):i.jsx("img",{src:"/icons/06000133.png",alt:"",style:{width:28,height:28,opacity:.15,filter:"grayscale(100%)",imageRendering:"pixelated"}})},Q.key)})}),i.jsxs("div",{style:{padding:"3px 6px",fontSize:11,color:"#ccc",background:"#111",borderBottom:`1px solid ${Ha}`},children:["Contents of ",R!==null?((mt=M.find(Q=>Q.item_id===R))==null?void 0:mt.name)??"Pack":"Backpack"]}),i.jsxs("div",{style:{flex:1,overflowY:"auto",display:"grid",gridTemplateColumns:"repeat(6, 36px)",gridAutoRows:36,gap:2,padding:4,alignContent:"start"},children:[k.map((Q,$)=>i.jsx("div",{style:{width:36,height:36,background:"linear-gradient(135deg, #3d007a 0%, #1a0033 100%)",border:"1px solid #4a148c",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer"},onMouseEnter:E=>lt(Q,E),onMouseMove:E=>lt(Q,E),onMouseLeave:()=>lt(null),children:i.jsx(Ts,{item:Q,size:32})},Q.item_id??$)),Array.from({length:Math.max(0,24-k.length)}).map((Q,$)=>i.jsx("div",{style:{width:36,height:36,background:"#0a0a0a",border:"1px solid #1a1a1a"}},`e${$}`))]})]}),i.jsxs("div",{style:{width:42,display:"flex",flexDirection:"column",alignItems:"center",padding:"4px 2px",borderLeft:`1px solid ${Ha}`,borderRight:`1px solid ${Ha}`},children:[i.jsx("div",{style:{textAlign:"center",fontSize:8,color:"#ccc",marginBottom:2},children:L>0?`${Math.floor(K)}%`:"Burden"}),i.jsx("div",{style:{width:14,height:40,background:"#111",border:"1px solid #555",position:"relative",overflow:"hidden",marginBottom:6,flexShrink:0},title:L>0?`${T.toLocaleString()} / ${L.toLocaleString()}`:`Burden: ${o.reduce((Q,$)=>Q+($.burden??0),0).toLocaleString()}`,children:i.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:`${K/2}%`,background:V,transition:"height 0.3s"}})}),i.jsx(th,{iconSrc:"/icons/0600127E.png",isActive:R===null,fillPct:G.length>0?Math.min(100,G.length/102*100):0,label:`Backpack (${G.length}/102)`,onClick:()=>g(null)}),M.map(Q=>{const $=Q.item_id,E=o.filter(W=>W.container_id===$&&W.item_id!==$).length,h=Q.items_capacity||24,B=h>0?Math.min(100,E/h*100):0;return i.jsx(th,{iconSrc:`/icons/${ai(Q.icon)}.png`,isActive:R===$,fillPct:B,label:`${Q.name} (${E}/${h})`,onClick:()=>g($)},$)})]}),i.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",minWidth:160},children:[i.jsx("div",{style:{padding:"4px 8px",fontSize:"0.72rem",fontWeight:600,color:"#aaa",background:"#111",borderBottom:`1px solid ${Ha}`},children:"Mana"}),i.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"2px 0"},children:[Array.from(P.values()).filter(Q=>Q.current_mana>0||Q.max_mana>0).sort((Q,$)=>(Q.current_mana??999999)-($.current_mana??999999)).map((Q,$)=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"2px 4px",borderBottom:"1px solid #1a1a1a",cursor:"pointer"},onMouseEnter:E=>lt(Q,E),onMouseMove:E=>lt(Q,E),onMouseLeave:()=>lt(null),children:[i.jsx("div",{style:{width:20,height:20,flexShrink:0},children:i.jsx(Ts,{item:Q,size:20})}),i.jsx("div",{style:{width:8,height:8,borderRadius:"50%",background:Q.current_mana>0?"#4c4":"#c44",flexShrink:0}}),i.jsx("div",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"0.68rem",color:"#ccc"},children:Q.name}),i.jsxs("div",{style:{fontSize:"0.65rem",color:"#88bbff",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},children:[Q.current_mana??0,"/",Q.max_mana??0]}),i.jsx("div",{style:{fontSize:"0.63rem",color:"#9c9",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums",minWidth:42,textAlign:"right"},children:Q.max_mana>0?Sy(Q.current_mana??0,Q.max_mana??0):""})]},$)),Array.from(P.values()).filter(Q=>Q.current_mana>0||Q.max_mana>0).length===0&&i.jsx("div",{style:{padding:12,color:"#555",textAlign:"center",fontSize:"0.7rem"},children:"No mana items equipped"})]})]})]}),p&&i.jsx(xy,{item:p.item,x:p.x,y:p.y})]})};function Sy(s,v){if(v<=0||s<=0)return"0h00m";const S=s*20,o=Math.floor(S/3600),r=Math.floor(S%3600/60);return`~${o}h${String(r).padStart(2,"0")}m`}const Cs=300,lh=.5,_y={walls:{r:0,g:0,b:255},innerWalls:{r:127,g:127,b:255},rampedWalls:{r:77,g:255,b:255},floors:{r:0,g:127,b:255},stairs:{r:0,g:63,b:255}},jy={walls:{r:140,g:140,b:180},innerWalls:{r:100,g:100,b:140},rampedWalls:{r:120,g:160,b:120},floors:{r:60,g:80,b:60},stairs:{r:180,g:160,b:80}};function zy(s){const v=document.createElement("canvas");v.width=10,v.height=10;const S=v.getContext("2d");S.drawImage(s,0,0,10,10);const o=S.getImageData(0,0,10,10),r=o.data;for(let x=0;x240&&R>240&&g>240){r[x+3]=0;continue}let p=!1;for(const[Y,U]of Object.entries(_y))if(Math.abs(z-U.r)<15&&Math.abs(R-U.g)<15&&Math.abs(g-U.b)<15){const X=jy[Y];r[x]=X.r,r[x+1]=X.g,r[x+2]=X.b,p=!0;break}!p&&z<15&&R<15&&g<15&&(r[x+3]=100)}return S.putImageData(o,0,0),v}function Ey(s){return s===1?Math.PI:s<-.7&&s>-.8?Math.PI/2:s>.7&&s<.8?-Math.PI/2:0}let qa=null;function Ay(){qa||(qa={},fetch("/dungeon_tiles.json").then(s=>s.json()).then(s=>{Object.entries(s).forEach(([v,S])=>{const o=new Image;o.onload=()=>{qa[v]=zy(o)},o.src=S})}).catch(()=>{}))}const eh={Monster:"#ff4444",Player:"#4488ff",NPC:"#44cc44",Vendor:"#44cc44",Portal:"#aa44ff",Corpse:"#ff8800",Container:"#cccc44",Door:"#888888"};function My(s){const v=(s%360+360)%360;return["N","NE","E","SE","S","SW","W","NW"][Math.round(v/45)%8]}const Ty=({id:s,charName:v,zIndex:S,socket:o,radarData:r})=>{const x=N.useRef(null),z=N.useRef(lh),[R,g]=N.useState(lh),[p,Y]=N.useState(null),U=N.useRef(null),X=N.useRef([]);N.useEffect(()=>{const P=new Image;P.src="/dereth.png",P.onload=()=>{U.current=P},Ay()},[]),N.useEffect(()=>((o==null?void 0:o.readyState)===WebSocket.OPEN&&o.send(JSON.stringify({player_name:v,command:"start_radar"})),()=>{(o==null?void 0:o.readyState)===WebSocket.OPEN&&o.send(JSON.stringify({player_name:v,command:"stop_radar"}))}),[v,o]);const et=N.useCallback(P=>{P.preventDefault();const M=P.deltaY>0?1.25:.8;z.current=Math.max(.02,Math.min(5,z.current*M)),g(z.current)},[]),F=N.useCallback(P=>{const M=x.current;if(!M)return;const I=M.getBoundingClientRect(),G=(P.clientX-I.left)*(M.width/I.width),J=(P.clientY-I.top)*(M.height/I.height);let k=null,T=20;X.current.forEach(L=>{if(L._px===void 0)return;const K=Math.sqrt((G-L._px)**2+(J-L._py)**2);K{var m;const P=x.current;if(!P||!r)return;const M=P.getContext("2d");if(!M)return;const I=Cs,G=I/2,J=I/2,k=r.objects??[],T=r.player_ew??0,L=r.player_ns??0,K=r.player_heading??0,V=r.is_dungeon??!1,nt=r.player_x??0,st=r.player_y??0,mt=z.current,Q=V?I/2/(mt*240):I/2/mt,$=K*Math.PI/180;M.clearRect(0,0,I,I),M.fillStyle="#111",M.beginPath(),M.arc(G,J,G,0,Math.PI*2),M.fill(),M.save(),M.beginPath(),M.arc(G,J,G-1,0,Math.PI*2),M.clip();const E=r.landblock??null,h=r.player_raw_z??0;if(V&&E&&((m=window.__dungeonMapCache)!=null&&m[E])){const C=window.__dungeonMapCache[E],w=Math.floor((h+3)/6)*6;M.translate(G,J),M.rotate(-(K-180)*Math.PI/180);const Z=10*Q,it=qa&&Object.keys(qa).length>0;(C.z_levels||[]).slice().sort((dt,Rt)=>(dt.z===w?1:0)-(Rt.z===w?1:0)).forEach(dt=>{const Rt=dt.z===w;M.globalAlpha=Rt?.85:.12,(dt.cells||[]).forEach(Ot=>{const ll=-(Ot.x-nt)*Q,Bl=(Ot.y-st)*Q,Nl=it?qa[String(Ot.env_id)]:null;Nl?(M.save(),M.translate(ll,Bl),M.rotate(Ey(Ot.rotation)),M.drawImage(Nl,-Z/2,-Z/2,Z,Z),M.restore()):(M.fillStyle=Rt?"#3a5a3a":"#1a2a1a",M.fillRect(ll-Z/2,Bl-Z/2,Z,Z))})}),M.globalAlpha=1,M.setTransform(1,0,0,1,0,0)}else if(!V&&U.current){const C=U.current,w=C.naturalWidth/204.2,Z=(T+102.1)*w,it=(102.1-L)*w;M.globalAlpha=.4,M.save(),M.translate(G,J),M.rotate(-$);const ft=mt*w*2;M.drawImage(C,Z-ft/2,it-ft/2,ft,ft,-G,-J,I,I),M.restore(),M.globalAlpha=1}M.restore(),M.strokeStyle="#333",M.lineWidth=1;for(let C=1;C<=4;C++)M.beginPath(),M.arc(G,J,G/4*C,0,Math.PI*2),M.stroke();M.beginPath(),M.moveTo(G,0),M.lineTo(G,I),M.moveTo(0,J),M.lineTo(I,J),M.stroke(),M.font="bold 12px monospace",M.textAlign="center",M.textBaseline="middle",[{l:"N",a:0},{l:"E",a:Math.PI/2},{l:"S",a:Math.PI},{l:"W",a:-Math.PI/2}].forEach(({l:C,a:w})=>{const Z=w-$;M.fillStyle=C==="N"?"#cc4444":"#888",M.fillText(C,G+Math.sin(Z)*(G-12),J-Math.cos(Z)*(G-12))}),M.strokeStyle="#666",M.lineWidth=1,M.beginPath(),M.moveTo(G,J),M.lineTo(G,J-G*.85),M.stroke();const B=V?Math.PI-$:$,W=Math.cos(B),yt=Math.sin(B);k.forEach(C=>{let w,Z;V&&C.raw_x!==void 0?(w=-(C.raw_x-nt),Z=C.raw_y-st):(w=(C.ew??0)-T,Z=(C.ns??0)-L);const it=w*W-Z*yt,ft=V?w*yt+Z*W:-(w*yt+Z*W),dt=G+it*Q,Rt=J+ft*Q;if(Math.sqrt((dt-G)**2+(Rt-J)**2)>G-4)return;C._px=dt,C._py=Rt;const ll=C.object_class??C.type??"",Bl=eh[ll]??"#888",Nl=C.id===p,La=Nl?6:ll==="Monster"||ll==="Player"?4:3;Nl&&(M.strokeStyle="#fff",M.lineWidth=2,M.beginPath(),M.arc(dt,Rt,La+3,0,Math.PI*2),M.stroke()),M.fillStyle=Bl,M.beginPath(),M.arc(dt,Rt,La,0,Math.PI*2),M.fill(),(ll==="Player"||ll==="Portal"||Nl)&&(M.fillStyle=Nl?"#fff":Bl,M.font="9px monospace",M.textAlign="left",M.fillText(C.name,dt+6,Rt+3))}),X.current=k,M.fillStyle="#ffcc00",M.beginPath(),M.arc(G,J,5,0,Math.PI*2),M.fill(),M.strokeStyle="#fff",M.lineWidth=1,M.stroke()},[r,R,p]);const lt=((r==null?void 0:r.objects)??[]).map(P=>{const M=(r==null?void 0:r.player_ew)??0,I=(r==null?void 0:r.player_ns)??0,G=(r==null?void 0:r.is_dungeon)??!1,J=(r==null?void 0:r.player_x)??0,k=(r==null?void 0:r.player_y)??0;let T,L,K;G&&P.raw_x!==void 0?(T=-(P.raw_x-J),L=P.raw_y-k,K=Math.sqrt(T*T+L*L)):(T=(P.ew??0)-M,L=(P.ns??0)-I,K=Math.sqrt(T*T+L*L)*240);const V=Math.atan2(T,L)*180/Math.PI;return{...P,dist:K,dir:My(V)}}).sort((P,M)=>P.dist-M.dist),gt=Math.round(R*240);return i.jsxs(Xl,{id:s,title:`Radar: ${v}`,zIndex:S,width:360,height:560,children:[i.jsxs("div",{style:{padding:"4px 8px",display:"flex",justifyContent:"space-between",fontSize:"0.75rem",color:"#888",borderBottom:"1px solid #333",background:"#1a1a1a"},children:[i.jsxs("span",{children:["Range: ~",gt,"m"]}),i.jsx("span",{style:{fontSize:"0.65rem",color:"#555"},children:"Scroll to zoom"})]}),i.jsx("canvas",{ref:x,width:Cs,height:Cs,style:{display:"block",margin:"0 auto",borderBottom:"1px solid #333",cursor:"crosshair",flexShrink:0},onWheel:et,onClick:F}),i.jsxs("div",{style:{flex:1,overflowY:"auto",fontSize:"0.72rem",minHeight:0},children:[i.jsxs("div",{style:{display:"flex",padding:"3px 6px",borderBottom:"1px solid #333",color:"#666",fontSize:"0.65rem",fontWeight:600},children:[i.jsx("span",{style:{width:8}}),i.jsx("span",{style:{flex:1,marginLeft:6},children:"Name"}),i.jsx("span",{style:{width:55,textAlign:"left"},children:"Type"}),i.jsx("span",{style:{width:40,textAlign:"right"},children:"Dist"}),i.jsx("span",{style:{width:24,textAlign:"center"},children:"Dir"})]}),lt.length===0&&i.jsx("div",{style:{padding:12,color:"#555",textAlign:"center",fontSize:"0.7rem"},children:"Waiting for radar data..."}),lt.map(P=>{const M=P.object_class??P.type??"",I=eh[M]??"#888",G=P.id===p;return i.jsxs("div",{onClick:()=>Y(G?null:P.id),style:{display:"flex",alignItems:"center",padding:"2px 6px",borderBottom:"1px solid #1a1a1a",cursor:"pointer",color:"#ccc",background:G?"#1a2a3a":"",borderLeft:G?"2px solid #4488ff":"2px solid transparent"},children:[i.jsx("span",{style:{width:8,height:8,borderRadius:"50%",background:I,flexShrink:0}}),i.jsx("span",{style:{flex:1,marginLeft:6,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:P.name}),i.jsx("span",{style:{width:55,color:"#888",fontSize:"0.65rem"},children:M}),i.jsx("span",{style:{width:40,textAlign:"right",fontVariantNumeric:"tabular-nums"},children:P.dist<1e3?`${Math.round(P.dist)}m`:`${(P.dist/1e3).toFixed(1)}km`}),i.jsx("span",{style:{width:24,textAlign:"center",color:"#666"},children:P.dir})]},P.id)})]})]})},Bn=["Typeless","Slash","Pierce","Bludgeon","Fire","Cold","Acid","Electric"];function Oe(s,v,S){var o,r,x,z;return(((r=(o=s==null?void 0:s[v])==null?void 0:o[S])==null?void 0:r.total_normal_damage)??0)+(((z=(x=s==null?void 0:s[v])==null?void 0:x[S])==null?void 0:z.total_crit_damage)??0)}function Cy(s){let v={attacks:0,failed:0,crits:0,normalDmg:0,maxNormal:0,critDmg:0,maxCrit:0};if(!s)return v;for(const S of Object.values(s))for(const o of Object.values(S))v.attacks+=o.total_attacks??0,v.failed+=o.failed_attacks??0,v.crits+=o.crits??0,v.normalDmg+=o.total_normal_damage??0,v.maxNormal=Math.max(v.maxNormal,o.max_normal_damage??0),v.critDmg+=o.total_crit_damage??0,v.maxCrit=Math.max(v.maxCrit,o.max_crit_damage??0);return v}function ah(s,v){let S={attacks:0,failed:0};const o=s==null?void 0:s[v];if(!o)return S;for(const r of Object.values(o))S.attacks+=r.total_attacks??0,S.failed+=r.failed_attacks??0;return S}const Oy=({id:s,charName:v,zIndex:S})=>{const[o,r]=N.useState(null),[x,z]=N.useState("session"),[R,g]=N.useState(null);N.useEffect(()=>{tl(`/combat-stats/${encodeURIComponent(v)}`).then(r).catch(()=>{});const T=setInterval(()=>{tl(`/combat-stats/${encodeURIComponent(v)}`).then(r).catch(()=>{})},1e4);return()=>clearInterval(T)},[v]);const p=o==null?void 0:o[x],Y=(p==null?void 0:p.monsters)??{},U=Object.keys(Y).filter(T=>T!=="__cloak_surges__").sort(),X=N.useMemo(()=>{let T={},L={},K=0,V=0;const nt=R?[Y[R]].filter(Boolean):U.map(st=>Y[st]);for(const st of nt)if(st){for(const[mt,Q]of Object.entries(st.offense??{})){T[mt]||(T[mt]={});for(const[$,E]of Object.entries(Q)){T[mt][$]||(T[mt][$]={total_attacks:0,failed_attacks:0,crits:0,total_normal_damage:0,max_normal_damage:0,total_crit_damage:0,max_crit_damage:0});const h=T[mt][$],B=E;h.total_attacks+=B.total_attacks??0,h.failed_attacks+=B.failed_attacks??0,h.crits+=B.crits??0,h.total_normal_damage+=B.total_normal_damage??0,h.max_normal_damage=Math.max(h.max_normal_damage,B.max_normal_damage??0),h.total_crit_damage+=B.total_crit_damage??0,h.max_crit_damage=Math.max(h.max_crit_damage,B.max_crit_damage??0)}}for(const[mt,Q]of Object.entries(st.defense??{})){L[mt]||(L[mt]={});for(const[$,E]of Object.entries(Q)){L[mt][$]||(L[mt][$]={total_attacks:0,failed_attacks:0,crits:0,total_normal_damage:0,max_normal_damage:0,total_crit_damage:0,max_crit_damage:0});const h=L[mt][$],B=E;h.total_attacks+=B.total_attacks??0,h.failed_attacks+=B.failed_attacks??0,h.total_normal_damage+=B.total_normal_damage??0,h.max_normal_damage=Math.max(h.max_normal_damage,B.max_normal_damage??0),h.total_crit_damage+=B.total_crit_damage??0,h.max_crit_damage=Math.max(h.max_crit_damage,B.max_crit_damage??0)}}K+=st.aetheria_surges??0,V+=st.cloak_surges??0}return Y.__cloak_surges__&&!R&&(V+=Y.__cloak_surges__.cloak_surges??0),{offense:T,defense:L,aeth:K,cloak:V}},[Y,U,R]),et=Cy(X.offense),F=ah(X.defense,"MeleeMissile"),lt=ah(X.defense,"Magic");et.attacks>0&&((et.attacks-et.failed)/et.attacks*100).toFixed(0);const gt=F.attacks>0?(F.failed/F.attacks*100).toFixed(0):"0",P=lt.attacks>0?(lt.failed/lt.attacks*100).toFixed(0):"0",M=et.attacks-et.failed,I=M-et.crits,G=I>0?Math.round(et.normalDmg/I):0;et.crits>0&&Math.round(et.critDmg/et.crits);const J=M>0?(et.crits/M*100).toFixed(1):"0",k=T=>T===0?"":T.toLocaleString();return i.jsxs(Xl,{id:s,title:`Combat: ${v}`,zIndex:S,width:640,height:520,children:[i.jsxs("div",{style:{display:"flex",gap:4,padding:"4px 8px",borderBottom:"1px solid #333"},children:[i.jsx("button",{className:`ml-stats-range-btn ${x==="session"?"active":""}`,onClick:()=>z("session"),children:"Session"}),i.jsx("button",{className:`ml-stats-range-btn ${x==="lifetime"?"active":""}`,onClick:()=>z("lifetime"),children:"Lifetime"})]}),i.jsxs("div",{style:{display:"flex",flex:1,overflow:"hidden"},children:[i.jsxs("div",{style:{width:240,borderRight:"1px solid #333",overflowY:"auto",fontSize:"0.72rem"},children:[i.jsxs("div",{style:{display:"flex",padding:"3px 6px",borderBottom:"1px solid #333",color:"#777",fontSize:"0.65rem",fontWeight:600},children:[i.jsx("span",{style:{width:14}}),i.jsx("span",{style:{flex:1},children:"Monster"}),i.jsx("span",{style:{width:40,textAlign:"right"},children:"Kills"}),i.jsx("span",{style:{width:55,textAlign:"right"},children:"Dmg"})]}),i.jsxs("div",{style:{display:"flex",padding:"3px 6px",cursor:"pointer",background:R===null?"#2a3a4a":"",borderBottom:"1px solid #222",color:"#ddd"},onClick:()=>g(null),children:[i.jsx("span",{style:{width:14,color:"#888"},children:R===null?"*":""}),i.jsx("span",{style:{flex:1},children:"All"}),i.jsx("span",{style:{width:40,textAlign:"right"},children:k((p==null?void 0:p.total_kills)??0)}),i.jsx("span",{style:{width:55,textAlign:"right"},children:k((p==null?void 0:p.total_damage_given)??0)})]}),U.map(T=>{const L=Y[T];return i.jsxs("div",{style:{display:"flex",padding:"2px 6px",cursor:"pointer",background:R===T?"#2a3a4a":"",borderBottom:"1px solid #1a1a1a",color:"#ccc"},onClick:()=>g(T),children:[i.jsx("span",{style:{width:14,color:"#888"},children:R===T?"*":""}),i.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:T}),i.jsx("span",{style:{width:40,textAlign:"right"},children:k(L.kill_count)}),i.jsx("span",{style:{width:55,textAlign:"right"},children:k(L.damage_given)})]},T)})]}),i.jsx("div",{style:{flex:1,overflowY:"auto",padding:6,fontSize:"0.72rem"},children:i.jsxs("table",{style:{width:"100%",borderCollapse:"collapse"},children:[i.jsx("thead",{children:i.jsxs("tr",{style:{color:"#777",fontSize:"0.65rem"},children:[i.jsx("th",{style:{textAlign:"left",padding:"1px 4px"}}),i.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Given M/M"}),i.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Given Mag"}),i.jsx("th",{style:{width:4}}),i.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Recv M/M"}),i.jsx("th",{style:{textAlign:"right",padding:"1px 3px"},children:"Recv Mag"}),i.jsx("th",{style:{width:4}}),i.jsx("th",{style:{textAlign:"left",padding:"1px 3px"},children:"Stats"}),i.jsx("th",{style:{textAlign:"right",padding:"1px 3px"}})]})}),i.jsxs("tbody",{children:[Bn.map((T,L)=>{const K=[["Evades",F.attacks>0?`${k(F.attacks)} (${gt}%)`:""],["Resists",lt.attacks>0?`${k(lt.attacks)} (${P}%)`:""],["A.Surges",X.aeth>0?`${k(X.aeth)}`:""],["C.Surges",X.cloak>0?`${k(X.cloak)}`:""],["",""],["",""],["Av/Mx",G>0?`${k(G)} / ${k(et.maxNormal)}`:""],["Crits",et.crits>0?`${k(et.crits)} (${J}%)`:""]][L]??["",""];return i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"1px 4px",color:"#888"},children:T}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Oe(X.offense,"MeleeMissile",T))}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Oe(X.offense,"Magic",T))}),i.jsx("td",{}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Oe(X.defense,"MeleeMissile",T))}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Oe(X.defense,"Magic",T))}),i.jsx("td",{}),i.jsx("td",{style:{padding:"1px 3px",color:"#777",fontWeight:600,fontSize:"0.65rem"},children:K[0]}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:K[1]})]},T)}),i.jsx("tr",{children:i.jsx("td",{colSpan:9,style:{height:4}})}),i.jsxs("tr",{children:[i.jsx("td",{style:{padding:"1px 4px",color:"#888",fontWeight:600},children:"Total"}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Bn.reduce((T,L)=>T+Oe(X.offense,"MeleeMissile",L),0))}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Bn.reduce((T,L)=>T+Oe(X.offense,"Magic",L),0))}),i.jsx("td",{}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Bn.reduce((T,L)=>T+Oe(X.defense,"MeleeMissile",L),0))}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(Bn.reduce((T,L)=>T+Oe(X.defense,"Magic",L),0))}),i.jsx("td",{}),i.jsx("td",{style:{padding:"1px 3px",color:"#777",fontWeight:600,fontSize:"0.65rem"},children:"Total"}),i.jsx("td",{style:{textAlign:"right",padding:"1px 3px",color:"#ccc"},children:k(et.normalDmg+et.critDmg)})]})]})]})})]})]})},Ny=({id:s,zIndex:v,characters:S})=>{const{openWindow:o}=Yn(),r=Array.from(S.keys()).sort();return i.jsx(Xl,{id:s,title:"Combat Stats — Select Character",zIndex:v,width:300,height:400,children:i.jsx("div",{style:{flex:1,overflowY:"auto",padding:6},children:r.length===0?i.jsx("div",{style:{padding:12,color:"#666",textAlign:"center",fontSize:"0.8rem"},children:"No characters online"}):r.map(x=>i.jsx("div",{style:{padding:"5px 8px",cursor:"pointer",borderBottom:"1px solid #222",color:"#ccc",fontSize:"0.82rem"},onMouseEnter:z=>z.currentTarget.style.background="#2a2a2a",onMouseLeave:z=>z.currentTarget.style.background="",onClick:()=>o(`combat-${x}`,`Combat: ${x}`,x),children:x},x))})})},nh={plugin:{label:"Plugin",color:"#8844cc"},overlord:{label:"Overlord",color:"#4488cc"},nav:{label:"Nav",color:"#44aa44"},macro:{label:"Macro",color:"#cc8844"},other:{label:"Other",color:"#888888"}},Ya={padding:"3px 6px",fontSize:"0.8rem",border:"1px solid #555",background:"#2a2a2a",color:"#ddd",borderRadius:0},uh={...Ya,fontSize:"0.75rem"},Os={padding:"4px 12px",background:"#4a80c0",color:"#fff",border:"1px solid #336699",cursor:"pointer",fontSize:"0.75rem"},Hn={padding:"3px 8px",background:"#444",color:"#ccc",border:"1px solid #555",cursor:"pointer",fontSize:"0.7rem"},Ry=({id:s,zIndex:v})=>{const[S,o]=N.useState([]),[r,x]=N.useState(""),[z,R]=N.useState(""),[g,p]=N.useState("plugin"),[Y,U]=N.useState(null),[X,et]=N.useState(""),[F,lt]=N.useState(""),[gt,P]=N.useState(""),[M,I]=N.useState({}),G=N.useCallback(async()=>{try{const V=await tl("/issues");o((V.issues??[]).sort((nt,st)=>(nt.resolved?1:0)-(st.resolved?1:0)))}catch{}},[]);N.useEffect(()=>{G()},[G]);const J=async(V,nt)=>{await fetch(`/api${V}`,{...nt,credentials:"include",headers:{"Content-Type":"application/json",...nt.headers}}),G()},k=async()=>{r.trim()&&(await J("/issues",{method:"POST",body:JSON.stringify({title:r.trim(),description:z.trim(),category:g})}),x(""),R(""))},T=V=>{if(Y===V.id){U(null);return}U(V.id),et(V.title),lt(V.description||""),P(V.category||"other")},L=async V=>{X.trim()&&(await J(`/issues/${V}`,{method:"PATCH",body:JSON.stringify({title:X.trim(),description:F.trim(),category:gt})}),U(null))},K=async V=>{const nt=(M[V]||"").trim();nt&&(await J(`/issues/${V}/comments`,{method:"POST",body:JSON.stringify({text:nt})}),I(st=>({...st,[V]:""})))};return i.jsxs(Xl,{id:s,title:"Issues Board",zIndex:v,width:540,height:520,children:[i.jsxs("div",{style:{flex:1,overflowY:"auto",padding:6,fontSize:"0.8rem"},children:[S.length===0&&i.jsx("div",{style:{padding:10,color:"#888",textAlign:"center"},children:"No open issues"}),S.map(V=>{const nt=nh[V.category]||nh.other,st=V.created?new Date(V.created).toLocaleDateString("sv-SE"):"",mt=V.comments||[];return i.jsxs("div",{style:{padding:"6px 8px",marginBottom:4,background:"#1f1f1f",borderRadius:3,border:"1px solid #333",opacity:V.resolved?.55:1},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[i.jsx("span",{style:{fontSize:"0.65rem",padding:"1px 6px",borderRadius:3,background:nt.color,color:"#fff",fontWeight:600},children:nt.label}),i.jsx("strong",{style:{fontSize:"0.8rem",flex:1},children:V.title}),i.jsxs("span",{style:{fontSize:"0.65rem",color:"#888"},children:["by ",V.author||"User"]}),i.jsx("span",{style:{color:"#666",fontSize:"0.65rem"},children:st})]}),V.description&&i.jsx("div",{style:{color:"#999",marginTop:3,fontSize:"0.75rem"},children:V.description}),i.jsxs("div",{style:{display:"flex",gap:4,marginTop:4},children:[V.resolved?i.jsxs(i.Fragment,{children:[i.jsx("button",{style:{...Hn,fontSize:"0.65rem"},onClick:()=>J(`/issues/${V.id}`,{method:"PATCH",body:JSON.stringify({resolved:!1})}),children:"↻ Reopen"}),i.jsx("button",{style:{...Hn,fontSize:"0.65rem",color:"#c66"},onClick:()=>{confirm(`Delete issue "${V.title}"?`)&&J(`/issues/${V.id}`,{method:"DELETE"})},children:"🗑 Delete"})]}):i.jsx("button",{style:{...Hn,fontSize:"0.65rem",background:"rgba(68,204,68,0.15)",color:"#4c4",border:"1px solid rgba(68,204,68,0.3)"},onClick:()=>J(`/issues/${V.id}`,{method:"PATCH",body:JSON.stringify({resolved:!0})}),children:"✓ Resolve"}),i.jsx("button",{style:{...Hn,fontSize:"0.65rem"},onClick:()=>T(V),children:"✎ Edit"})]}),Y===V.id&&i.jsxs("div",{style:{marginTop:4,padding:4,background:"#222",borderRadius:3},children:[i.jsxs("div",{style:{display:"flex",gap:4,marginBottom:4},children:[i.jsx("input",{value:X,onChange:Q=>et(Q.target.value),style:{...Ya,flex:1}}),i.jsxs("select",{value:gt,onChange:Q=>P(Q.target.value),style:uh,children:[i.jsx("option",{value:"plugin",children:"Plugin"}),i.jsx("option",{value:"overlord",children:"Overlord"}),i.jsx("option",{value:"nav",children:"Nav"}),i.jsx("option",{value:"macro",children:"Macro"}),i.jsx("option",{value:"other",children:"Other"})]})]}),i.jsxs("div",{style:{display:"flex",gap:4},children:[i.jsx("textarea",{value:F,onChange:Q=>lt(Q.target.value),rows:2,style:{...Ya,flex:1,fontSize:"0.75rem",resize:"vertical"}}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[i.jsx("button",{style:{...Os,fontSize:"0.7rem",padding:"3px 8px"},onClick:()=>L(V.id),children:"Save"}),i.jsx("button",{style:{...Hn},onClick:()=>U(null),children:"Cancel"})]})]})]}),i.jsxs("div",{style:{marginTop:4,paddingTop:4,borderTop:"1px solid #2a2a2a"},children:[mt.length===0?i.jsx("div",{style:{color:"#555",fontSize:"0.7rem",padding:"2px 0"},children:"No comments yet"}):mt.map(Q=>i.jsxs("div",{style:{marginBottom:3,fontSize:"0.72rem"},children:[i.jsx("span",{style:{color:"#8ac",fontWeight:500},children:Q.author||"Anonymous"}),i.jsx("span",{style:{color:"#555",marginLeft:6,fontSize:"0.6rem"},children:Q.created?new Date(Q.created).toLocaleDateString("sv-SE"):""}),i.jsx("div",{style:{color:"#bbb",marginTop:1},children:Q.text})]},Q.id)),i.jsxs("div",{style:{display:"flex",gap:4,marginTop:3},children:[i.jsx("input",{value:M[V.id]||"",onChange:Q=>I($=>({...$,[V.id]:Q.target.value})),placeholder:"Add a comment...",style:{...Ya,flex:1,fontSize:"0.75rem"},onKeyDown:Q=>{Q.key==="Enter"&&K(V.id)}}),i.jsx("button",{style:{...Os,fontSize:"0.7rem",padding:"3px 8px"},onClick:()=>K(V.id),children:"Post"})]})]})]},V.id)})]}),i.jsxs("div",{style:{padding:6,borderTop:"1px solid #333"},children:[i.jsxs("div",{style:{display:"flex",gap:4,marginBottom:4},children:[i.jsx("input",{value:r,onChange:V=>x(V.target.value),placeholder:"Issue title...",style:{...Ya,flex:1},onKeyDown:V=>{V.key==="Enter"&&k()}}),i.jsxs("select",{value:g,onChange:V=>p(V.target.value),style:uh,children:[i.jsx("option",{value:"plugin",children:"Plugin"}),i.jsx("option",{value:"overlord",children:"Overlord"}),i.jsx("option",{value:"nav",children:"Nav"}),i.jsx("option",{value:"macro",children:"Macro"}),i.jsx("option",{value:"other",children:"Other"})]})]}),i.jsxs("div",{style:{display:"flex",gap:4},children:[i.jsx("textarea",{value:z,onChange:V=>R(V.target.value),placeholder:"Description (optional)...",rows:2,style:{...Ya,flex:1,fontSize:"0.75rem",resize:"vertical"}}),i.jsx("button",{style:{...Os,alignSelf:"flex-end"},onClick:k,children:"Add"})]})]})]})},Dy=({id:s,zIndex:v})=>{const[S,o]=N.useState([]);N.useEffect(()=>{const x=async()=>{try{const R=await tl("/vital-sharing/peers");o(R.peers??[])}catch{}};x();const z=setInterval(x,5e3);return()=>clearInterval(z)},[]);const r=(x,z)=>z>0?Math.min(100,x/z*100):0;return i.jsx(Xl,{id:s,title:"Vital Sharing Network",zIndex:v,width:520,height:450,children:i.jsx("div",{style:{flex:1,overflowY:"auto",padding:6,fontSize:"0.75rem"},children:S.length===0?i.jsx("div",{style:{padding:16,color:"#666",textAlign:"center"},children:"No vital-sharing peers connected"}):S.map(x=>{var z,R,g;return i.jsxs("div",{style:{padding:"6px 8px",marginBottom:4,background:"#1f1f1f",borderRadius:3,border:"1px solid #333"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:3},children:[i.jsx("span",{style:{color:x.plugin_connected?"#4c4":"#a33",fontSize:"0.8rem"},children:"●"}),i.jsx("strong",{style:{flex:1},children:x.character_name}),x.subscribed&&i.jsx("span",{style:{color:"#6bf",fontSize:"0.65rem"},children:"[subscribed]"})]}),i.jsxs("div",{style:{color:"#666",fontSize:"0.68rem",marginBottom:3},children:["tags: ",((z=x.tags)==null?void 0:z.join(", "))||"none"]}),x.vitals&&x.vitals.max_health>0&&i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:2},children:[{label:"HP",cur:x.vitals.current_health,max:x.vitals.max_health,bg:"#330000",fill:"#c44"},{label:"STA",cur:x.vitals.current_stamina,max:x.vitals.max_stamina,bg:"#331a00",fill:"#ca0"},{label:"MANA",cur:x.vitals.current_mana,max:x.vitals.max_mana,bg:"#001433",fill:"#48f"}].map(p=>i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4},children:[i.jsx("span",{style:{width:32,color:"#888",fontSize:"0.65rem"},children:p.label}),i.jsx("div",{style:{flex:1,height:6,background:p.bg,borderRadius:3,overflow:"hidden"},children:i.jsx("div",{style:{width:`${r(p.cur,p.max)}%`,height:"100%",background:p.fill,borderRadius:3}})}),i.jsxs("span",{style:{width:60,textAlign:"right",fontSize:"0.65rem",color:"#888"},children:[p.cur,"/",p.max]})]},p.label))}),x.position&&i.jsxs("div",{style:{color:"#555",fontSize:"0.65rem",marginTop:2},children:[(R=x.position.ns)==null?void 0:R.toFixed(1),"N, ",(g=x.position.ew)==null?void 0:g.toFixed(1),"E"]})]},x.character_name)})})})},Uy=({characters:s,chatMessages:v,nearbyObjects:S,socket:o})=>{const{windows:r}=Yn();return i.jsx(i.Fragment,{children:r.map(x=>{var g;const z=x.charName??"";switch(x.id.split("-")[0]){case"chat":return i.jsx(cy,{id:x.id,charName:z,zIndex:x.zIndex,messages:v.get(z)??[],socket:o},x.id);case"stats":return i.jsx(oy,{id:x.id,charName:z,zIndex:x.zIndex},x.id);case"char":return i.jsx(hy,{id:x.id,charName:z,zIndex:x.zIndex,vitals:((g=s.get(z))==null?void 0:g.vitals)??void 0},x.id);case"inv":return i.jsx(by,{id:x.id,charName:z,zIndex:x.zIndex},x.id);case"radar":return i.jsx(Ty,{id:x.id,charName:z,zIndex:x.zIndex,socket:o,radarData:S.get(z)??null},x.id);case"combat":return i.jsx(Oy,{id:x.id,charName:z,zIndex:x.zIndex},x.id);case"combatpicker":return i.jsx(Ny,{id:x.id,zIndex:x.zIndex,characters:s},x.id);case"issues":return i.jsx(Ry,{id:x.id,zIndex:x.zIndex},x.id);case"vitalsharing":return i.jsx(Dy,{id:x.id,zIndex:x.zIndex},x.id);default:return null}})})};let By=0;const Hy=({recentRares:s})=>{const[v,S]=N.useState([]),[o,r]=N.useState(0),[x,z]=N.useState([]);N.useEffect(()=>{if(s.length>o&&o>0){const g=s.slice(0,s.length-o);for(const p of g){const Y=++By;S(U=>[...U,{key:Y,charName:p.character_name,rareName:p.name,exiting:!1}]),R(),setTimeout(()=>{S(U=>U.map(X=>X.key===Y?{...X,exiting:!0}:X)),setTimeout(()=>{S(U=>U.filter(X=>X.key!==Y))},500)},6e3)}}r(s.length)},[s.length]);const R=N.useCallback(()=>{const g=Date.now(),p=["#FFD700","#FF4444","#FF8800","#AA44FF","#4488FF"],Y=Array.from({length:30},(U,X)=>{const et=Math.PI*2*X/30+(Math.random()-.5)*.5,F=100+Math.random()*200;return{dx:Math.cos(et)*F,dy:Math.sin(et)*F-50,color:p[Math.floor(Math.random()*p.length)]}});z(U=>[...U,{id:g,particles:Y}]),setTimeout(()=>z(U=>U.filter(X=>X.id!==g)),2200)},[]);return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"ml-rare-notifications",children:v.map(g=>i.jsxs("div",{className:`ml-rare-notif ${g.exiting?"exiting":""}`,children:[i.jsx("div",{className:"ml-rare-notif-title",children:"🎆 LEGENDARY RARE! 🎆"}),i.jsx("div",{className:"ml-rare-notif-name",children:g.rareName}),i.jsx("div",{className:"ml-rare-notif-by",children:"found by"}),i.jsx("div",{className:"ml-rare-notif-char",children:g.charName})]},g.key))}),i.jsx("div",{className:"ml-fireworks",children:x.map(g=>i.jsx(ni.Fragment,{children:g.particles.map((p,Y)=>i.jsx("div",{className:"ml-firework-particle",style:{left:"50%",top:"30%",backgroundColor:p.color,"--dx":`${p.dx}px`,"--dy":`${p.dy+200}px`}},Y))},g.id))})]})},ih=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf","#ff4444","#44ff44","#4444ff","#ffff44","#ff44ff","#44ffff","#ff8844","#88ff44","#4488ff","#ff4488","#cc3333","#33cc33","#3333cc","#cccc33","#cc33cc","#33cccc","#cc6633","#66cc33","#3366cc","#cc3366","#ff6666","#66ff66","#6666ff","#ffff66","#ff66ff","#66ffff","#ffaa66","#aaff66","#66aaff","#ff66aa","#990099","#009900","#000099","#990000","#009999","#999900","#aa5500","#55aa00","#0055aa","#aa0055","#ffaaaa","#aaffaa","#aaaaff","#ffffaa","#ffaaff","#aaffff","#ffccaa","#ccffaa","#aaccff","#ffaacc"];function Yy(s){let v=0;for(let S=0;S{let r=s.current.get(o);return r||(r=v.current{const S=qy(),[o,r]=N.useState(!1),[x,z]=N.useState(!1),[R,g]=N.useState(null),p=N.useMemo(()=>Array.from(s.characters.values()).filter(F=>F.telemetry).map(F=>F.telemetry),[s.characters]),Y=N.useMemo(()=>new Map(Array.from(s.characters.values()).filter(F=>F.vitals).map(F=>[F.name,F.vitals])),[s.characters]),[U,X]=N.useState("");N.useEffect(()=>{fetch("/api/api-version",{credentials:"include"}).then(F=>F.json()).then(F=>X(F.version??"")).catch(()=>{})},[]);const et=N.useCallback(F=>{g(lt=>lt===F?null:F)},[]);return i.jsx(J0,{children:i.jsxs("div",{className:"ml-layout",children:[i.jsx(uy,{players:p,vitals:Y,serverHealth:s.serverHealth,totalRares:s.totalRares,totalKills:s.totalKills,getColor:S,onSelectPlayer:et,onViewToggle:v,showHeatmap:o,showPortals:x,onToggleHeatmap:r,onTogglePortals:z,version:U}),i.jsx(ty,{players:p,getColor:S,onSelectPlayer:et,showHeatmap:o,showPortals:x,selectedPlayer:R}),i.jsx(Uy,{characters:s.characters,chatMessages:s.chatMessages,nearbyObjects:s.nearbyObjects,socket:s.socketRef.current}),i.jsx(Hy,{recentRares:s.recentRares})]})})};function Xy(s){const v=N.useRef(null),S=N.useRef(0),o=N.useRef(s);o.current=s;const r=N.useCallback(()=>{var z;if(((z=v.current)==null?void 0:z.readyState)===WebSocket.OPEN)return;const x=new WebSocket(F0());v.current=x,x.addEventListener("message",R=>{try{const g=JSON.parse(R.data);o.current(g)}catch{}}),x.addEventListener("close",()=>{v.current=null,S.current=window.setTimeout(r,2e3)}),x.addEventListener("error",()=>{x.close()})},[]);return N.useEffect(()=>(r(),()=>{var x;clearTimeout(S.current),(x=v.current)==null||x.close(),v.current=null}),[r]),v}const Gy=()=>tl("/live"),Qy=()=>tl("/combat-stats"),wy=()=>tl("/server-health"),Zy=()=>tl("/total-rares"),Vy=()=>tl("/total-kills");function ky(){const[s,v]=N.useState(new Map),[S,o]=N.useState(null),[r,x]=N.useState(0),[z,R]=N.useState(0),[g,p]=N.useState([]),[Y,U]=N.useState(new Map),[X,et]=N.useState(new Map),F=N.useRef(s);F.current=s;const lt=N.useCallback((M,I)=>{v(G=>{const J=new Map(G),k=J.get(M)??{name:M,telemetry:null,vitals:null,combat:null,lastUpdate:0};return J.set(M,I(k)),J})},[]),gt=N.useCallback(M=>{var I;if(M.type){if(M.type==="telemetry"){const G=M;lt(G.character_name,J=>({...J,telemetry:G,lastUpdate:Date.now()}))}else if(M.type==="vitals"){const G=M;lt(G.character_name,J=>({...J,vitals:G,lastUpdate:Date.now()}))}else if(M.type==="combat_stats"){const G=M;lt(G.character_name,J=>({...J,combat:G,lastUpdate:Date.now()}))}else if(M.type==="rare"){const G=M;p(J=>[G,...J].slice(0,50))}else if(M.type==="dungeon_map"){const G=M;G.landblock&&(window.__dungeonMapCache||(window.__dungeonMapCache={}),window.__dungeonMapCache[G.landblock]=G)}else if(M.type==="nearby_objects"){const G=M;if(et(J=>{const k=new Map(J);return k.set(G.character_name,G),k}),G.is_dungeon&&G.landblock&&!((I=window.__dungeonMapCache)!=null&&I[G.landblock])){const J=P.current;(J==null?void 0:J.readyState)===WebSocket.OPEN&&J.send(JSON.stringify({type:"request_dungeon_map",landblock:G.landblock}))}}else if(M.type==="chat"){const G=M;U(J=>{const k=new Map(J),T=[...k.get(G.character_name)??[],{text:G.text,color:G.color,timestamp:G.timestamp}];return T.length>1e3&&T.splice(0,T.length-1e3),k.set(G.character_name,T),k})}}},[lt]),P=Xy(gt);return N.useEffect(()=>{const M=async()=>{try{const G=await Gy();v(J=>{var T;const k=new Map(J);for(const L of G.players??[]){const K=k.get(L.character_name);k.set(L.character_name,{name:L.character_name,telemetry:L,vitals:(K==null?void 0:K.vitals)??null,combat:(K==null?void 0:K.combat)??null,lastUpdate:Date.now()})}for(const L of k.keys())(T=G.players)!=null&&T.some(K=>K.character_name===L)||k.delete(L);return k})}catch{}};M();const I=setInterval(M,5e3);return()=>clearInterval(I)},[]),N.useEffect(()=>{const M=async()=>{try{const G=await Qy();for(const J of G.stats??[])lt(J.character_name,k=>({...k,combat:{...J,type:"combat_stats"}}))}catch{}};M();const I=setInterval(M,3e4);return()=>clearInterval(I)},[lt]),N.useEffect(()=>{const M=async()=>{try{o(await wy())}catch{}};M();const I=setInterval(M,3e4);return()=>clearInterval(I)},[]),N.useEffect(()=>{const M=async()=>{try{const[G,J]=await Promise.all([Zy(),Vy()]);x(G.all_time??0),R(J.total??0)}catch{}};M();const I=setInterval(M,3e5);return()=>clearInterval(I)},[]),{characters:s,serverHealth:S,totalRares:r,totalKills:z,recentRares:g,chatMessages:Y,nearbyObjects:X,socketRef:P}}const Ky=N.lazy(()=>K0(()=>import("./DashboardView-DZePFekV.js"),[]));function Jy(){const[s,v]=N.useState(()=>localStorage.getItem("v2-view")||"map"),S=ky(),o=()=>{const r=s==="map"?"dashboard":"map";v(r),localStorage.setItem("v2-view",r)};return s==="map"?i.jsx(Ly,{data:S,onViewToggle:o}):i.jsx(N.Suspense,{fallback:i.jsx("div",{style:{background:"#0d0d0d",color:"#888",padding:40,textAlign:"center"},children:"Loading dashboard..."}),children:i.jsx(Ky,{data:S,onViewToggle:o})})}Z0.createRoot(document.getElementById("root")).render(i.jsx(N.StrictMode,{children:i.jsx(Jy,{})}));export{ni as R,tl as a,$y as c,U0 as g,i as j,N as r}; diff --git a/static/v2/assets/react-DlyoauG8.js b/static/v2/assets/react-DlyoauG8.js new file mode 100644 index 00000000..4aeb2ea7 --- /dev/null +++ b/static/v2/assets/react-DlyoauG8.js @@ -0,0 +1,17 @@ +var ue=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function oe(p){return p&&p.__esModule&&Object.prototype.hasOwnProperty.call(p,"default")?p.default:p}var I={exports:{}},n={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var K;function te(){if(K)return n;K=1;var p=Symbol.for("react.transitional.element"),R=Symbol.for("react.portal"),g=Symbol.for("react.fragment"),y=Symbol.for("react.strict_mode"),P=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),m=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),i=Symbol.for("react.suspense"),t=Symbol.for("react.memo"),c=Symbol.for("react.lazy"),v=Symbol.for("react.activity"),C=Symbol.iterator;function A(e){return e===null||typeof e!="object"?null:(e=C&&e[C]||e["@@iterator"],typeof e=="function"?e:null)}var U={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Y=Object.assign,b={};function O(e,r,o){this.props=e,this.context=r,this.refs=b,this.updater=o||U}O.prototype.isReactComponent={},O.prototype.setState=function(e,r){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,r,"setState")},O.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function k(){}k.prototype=O.prototype;function H(e,r,o){this.props=e,this.context=r,this.refs=b,this.updater=o||U}var N=H.prototype=new k;N.constructor=H,Y(N,O.prototype),N.isPureReactComponent=!0;var q=Array.isArray;function D(){}var a={H:null,A:null,T:null,S:null},x=Object.prototype.hasOwnProperty;function j(e,r,o){var u=o.ref;return{$$typeof:p,type:e,key:r,ref:u!==void 0?u:null,props:o}}function Q(e,r){return j(e.type,r,e.props)}function L(e){return typeof e=="object"&&e!==null&&e.$$typeof===p}function Z(e){var r={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(o){return r[o]})}var G=/\/+/g;function M(e,r){return typeof e=="object"&&e!==null&&e.key!=null?Z(""+e.key):r.toString(36)}function J(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(D,D):(e.status="pending",e.then(function(r){e.status==="pending"&&(e.status="fulfilled",e.value=r)},function(r){e.status==="pending"&&(e.status="rejected",e.reason=r)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function S(e,r,o,u,s){var f=typeof e;(f==="undefined"||f==="boolean")&&(e=null);var l=!1;if(e===null)l=!0;else switch(f){case"bigint":case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case p:case R:l=!0;break;case c:return l=e._init,S(l(e._payload),r,o,u,s)}}if(l)return s=s(e),l=u===""?"."+M(e,0):u,q(s)?(o="",l!=null&&(o=l.replace(G,"$&/")+"/"),S(s,r,o,"",function(ee){return ee})):s!=null&&(L(s)&&(s=Q(s,o+(s.key==null||e&&e.key===s.key?"":(""+s.key).replace(G,"$&/")+"/")+l)),r.push(s)),1;l=0;var E=u===""?".":u+":";if(q(e))for(var d=0;d"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(p)}catch(R){console.error(R)}}return p(),$.exports=ne(),$.exports}export{ie as a,ue as c,oe as g,re as r}; diff --git a/static/v2/index.html b/static/v2/index.html index 61d931ea..1c2fd866 100644 --- a/static/v2/index.html +++ b/static/v2/index.html @@ -5,7 +5,11 @@ Mosswart Overlord v2 - + + + + + diff --git a/static/v2/sw.js b/static/v2/sw.js new file mode 100644 index 00000000..71839ee5 --- /dev/null +++ b/static/v2/sw.js @@ -0,0 +1,72 @@ +// Service worker for MosswartOverlord v2 — caches static assets for instant repeat loads +const CACHE_NAME = 'mo-v2-cache-v1'; +const STATIC_ASSETS = [ + '/dereth.png', + '/dereth_highres.png', + '/prismatic-taper-icon.png', + '/icons/0600127E.png', + '/icons/06000133.png', + '/icons/06001080.png', +]; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then(cache => cache.addAll(STATIC_ASSETS)) + ); + self.skipWaiting(); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil( + caches.keys().then(keys => + Promise.all(keys.filter(k => k !== CACHE_NAME).map(k => caches.delete(k))) + ) + ); + self.clients.claim(); +}); + +self.addEventListener('fetch', (event) => { + const url = new URL(event.request.url); + + // Cache icon images on first fetch + if (url.pathname.startsWith('/icons/') && event.request.method === 'GET') { + event.respondWith( + caches.match(event.request).then(cached => { + if (cached) return cached; + return fetch(event.request).then(response => { + if (response.ok) { + const clone = response.clone(); + caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone)); + } + return response; + }); + }) + ); + return; + } + + // Cache dungeon_tiles.json (large, rarely changes) + if (url.pathname === '/dungeon_tiles.json') { + event.respondWith( + caches.match(event.request).then(cached => { + if (cached) return cached; + return fetch(event.request).then(response => { + if (response.ok) { + const clone = response.clone(); + caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone)); + } + return response; + }); + }) + ); + return; + } + + // Cache static assets (map images etc) + if (STATIC_ASSETS.some(a => url.pathname === a)) { + event.respondWith( + caches.match(event.request).then(cached => cached || fetch(event.request)) + ); + return; + } +});