tokentracker-cli 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dashboard/dist/assets/{ActivityHeatmap-C5lQst9A.js → ActivityHeatmap-_zJmKtP2.js} +1 -1
  2. package/dashboard/dist/assets/{Card-CTEL3aXx.js → Card-BS2ABbwq.js} +1 -1
  3. package/dashboard/dist/assets/DashboardPage-DlkR4Y-l.js +19 -0
  4. package/dashboard/dist/assets/{DevicePage-D4bkFEEt.js → DevicePage-BS_MwVUp.js} +1 -1
  5. package/dashboard/dist/assets/DialogTitle-CSNWjYGj.js +12 -0
  6. package/dashboard/dist/assets/{FadeIn-BXVxQ51G.js → FadeIn-DIxWR6-M.js} +1 -1
  7. package/dashboard/dist/assets/{HeaderGithubStar-BxYJXuVn.js → HeaderGithubStar-CLeDseVx.js} +1 -1
  8. package/dashboard/dist/assets/{IpCheckPage-B3Se3vu3.js → IpCheckPage-BltMdT8r.js} +4 -4
  9. package/dashboard/dist/assets/{LandingPage-B-AM1mgc.js → LandingPage-Ckmf_iGO.js} +1 -1
  10. package/dashboard/dist/assets/{LeaderboardAvatar-BNpzqU-s.js → LeaderboardAvatar-aZZacexT.js} +1 -1
  11. package/dashboard/dist/assets/LeaderboardPage-Chm7475Z.js +6 -0
  12. package/dashboard/dist/assets/{LeaderboardProfileModal-BXUUSlGG.js → LeaderboardProfileModal-B9iPWc5O.js} +1 -1
  13. package/dashboard/dist/assets/LeaderboardProfilePage-B268HOjB.js +1 -0
  14. package/dashboard/dist/assets/LimitsPage-BsLzNCO6.js +2 -0
  15. package/dashboard/dist/assets/{LocalOnlyNotice-ilp-Q8oP.js → LocalOnlyNotice-DFg7yglW.js} +1 -1
  16. package/dashboard/dist/assets/LoginPage-DVCpTEii.js +1 -0
  17. package/dashboard/dist/assets/{PopoverPopup-BvUHJ3fH.js → PopoverPopup-DzFBEvzq.js} +1 -1
  18. package/dashboard/dist/assets/SettingsPage-D2gehORd.js +1 -0
  19. package/dashboard/dist/assets/SkillsPage-CDIbfAxi.js +1 -0
  20. package/dashboard/dist/assets/{WidgetsPage-DEsp4TVs.js → WidgetsPage-DnrCBswn.js} +1 -1
  21. package/dashboard/dist/assets/{WrappedPage-3kImp9sV.js → WrappedPage-BXbapLiE.js} +1 -1
  22. package/dashboard/dist/assets/{agent-logos-4uqTG-g5.js → agent-logos-BT_3vfG7.js} +1 -1
  23. package/dashboard/dist/assets/{arrow-up-right-C6REzMq8.js → arrow-up-right-U3GN7ZK8.js} +1 -1
  24. package/dashboard/dist/assets/check-Bdnp5EHR.js +1 -0
  25. package/dashboard/dist/assets/{chevron-down-p9KAHQhU.js → chevron-down-BdbYSxLt.js} +1 -1
  26. package/dashboard/dist/assets/{download-CvJjPKnF.js → download-Cgae7DJA.js} +1 -1
  27. package/dashboard/dist/assets/{info-R9MgHQlV.js → info-lAuE6Iqy.js} +1 -1
  28. package/dashboard/dist/assets/main-BJQZ96HP.js +964 -0
  29. package/dashboard/dist/assets/{use-limits-display-prefs-CbobmO9m.js → use-limits-display-prefs-BOMVZxxS.js} +1 -1
  30. package/dashboard/dist/assets/{use-native-settings-DtFQtjxR.js → use-native-settings-CDAuv4ZG.js} +1 -1
  31. package/dashboard/dist/assets/use-usage-limits-CvfL47sK.js +1 -0
  32. package/dashboard/dist/assets/{useCurrency-D8PqG8hW.js → useCurrency-B562nxEx.js} +1 -1
  33. package/dashboard/dist/index.html +1 -1
  34. package/dashboard/dist/share.html +1 -1
  35. package/package.json +1 -1
  36. package/src/lib/pricing/seed-snapshot.json +1 -1
  37. package/dashboard/dist/assets/DashboardPage-D7Zl3qdP.js +0 -19
  38. package/dashboard/dist/assets/DialogTitle-DD717-IL.js +0 -12
  39. package/dashboard/dist/assets/LeaderboardPage-BwlrqFjQ.js +0 -6
  40. package/dashboard/dist/assets/LeaderboardProfilePage-CBXZv4R_.js +0 -1
  41. package/dashboard/dist/assets/LimitsPage-Cnk3Do9Y.js +0 -2
  42. package/dashboard/dist/assets/LoginPage-69LMUSLd.js +0 -1
  43. package/dashboard/dist/assets/SettingsPage-B5XGzOcZ.js +0 -1
  44. package/dashboard/dist/assets/SkillsPage-tCvpIDbZ.js +0 -1
  45. package/dashboard/dist/assets/check-DF1-jcTm.js +0 -1
  46. package/dashboard/dist/assets/main-DdKVCJWa.js +0 -964
  47. package/dashboard/dist/assets/use-usage-limits-BwMwzl_A.js +0 -1
@@ -1 +1 @@
1
- import{Q as p,r as c,u as e,aw as f}from"./main-DdKVCJWa.js";const b={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_VERSION:"0.33.0",VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function x(){return f(),`${(b&&"https://srctyff5.us-east.insforge.app"||"https://srctyff5.us-east.insforge.app").replace(/\/$/,"")}/functions/tokentracker-device-flow-grant`}function l(a){return(a||"").toUpperCase().replace(/\s+/g,"").replace(/[^A-Z0-9-]/g,"")}function h(){const a=p(),[m,g]=c.useState(""),[t,r]=c.useState({kind:"idle",message:""});c.useEffect(()=>{try{const n=new URLSearchParams(window.location.search).get("user_code");n&&g(l(n))}catch{}},[]);async function u(d){if(d?.preventDefault?.(),!a?.signedIn){r({kind:"error",message:"Please sign in first."});return}const n=l(m);if(!/^[A-HJKMNP-Z2-9]{4}-[A-HJKMNP-Z2-9]{4}$/.test(n)){r({kind:"error",message:"Invalid code format. Expected XXXX-XXXX."});return}r({kind:"working",message:"Approving…"});try{const i=await a.getAccessToken?.();if(!i){r({kind:"error",message:"No access token — please sign in again."});return}const s=await fetch(x(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify({user_code:n})}),o=await s.json().catch(()=>({}));s.ok?r({kind:"success",message:o.status==="already_approved"?`Already approved earlier${o.client_info?" ("+o.client_info+")":""}.`:`Approved${o.client_info?" for "+o.client_info:""}. You can close this tab — your CLI will pick it up within a few seconds.`}):s.status===404?r({kind:"error",message:"Code not found. Double-check what your CLI printed."}):s.status===410?r({kind:"error",message:"Code expired. Re-run `tracker device-login` and try again."}):s.status===401?r({kind:"error",message:"Session expired. Sign out, sign in, and try again."}):r({kind:"error",message:o?.error||`Server error (HTTP ${s.status}).`})}catch(i){r({kind:"error",message:`Network error: ${i?.message||i}`})}}return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-white dark:bg-oai-gray-950 px-6 py-12",children:e.jsxs("div",{className:"w-full max-w-md rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-8",children:[e.jsx("h1",{className:"text-2xl font-semibold text-oai-gray-900 dark:text-white mb-2",children:"Approve your CLI"}),e.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400 mb-6",children:"Type the code your CLI showed you. We'll link it to your account so token usage from that machine flows into your leaderboard profile."}),a?.signedIn?null:e.jsx("div",{className:"rounded-md border border-amber-200 bg-amber-50 dark:bg-amber-900/20 dark:border-amber-800 p-4 mb-4",children:e.jsx("p",{className:"text-sm text-amber-700 dark:text-amber-300",children:"Sign in first, then return to this page."})}),e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"block text-xs font-medium uppercase tracking-wide text-oai-gray-500 dark:text-oai-gray-400 mb-1",children:"CLI code"}),e.jsx("input",{type:"text",value:m,onChange:d=>g(l(d.target.value)),placeholder:"XXXX-XXXX",spellCheck:!1,autoCapitalize:"characters",maxLength:9,className:"w-full font-mono text-xl tracking-widest text-center rounded-md border border-oai-gray-300 dark:border-oai-gray-700 bg-white dark:bg-oai-gray-900 text-oai-gray-900 dark:text-white px-4 py-3 focus:outline-none focus:ring-inset focus:ring-2 focus:ring-emerald-600"})]}),e.jsx("button",{type:"submit",disabled:t.kind==="working"||!a?.signedIn,className:"w-full rounded-md bg-emerald-600 hover:bg-emerald-500 disabled:bg-oai-gray-300 disabled:cursor-not-allowed text-white font-medium py-3 transition-colors",children:t.kind==="working"?"Approving…":"Approve"})]}),t.kind==="success"&&e.jsx("div",{className:"mt-4 rounded-md border border-emerald-200 bg-emerald-50 dark:bg-emerald-900/20 dark:border-emerald-800 p-4",children:e.jsx("p",{className:"text-sm text-emerald-700 dark:text-emerald-300",children:t.message})}),t.kind==="error"&&e.jsx("div",{className:"mt-4 rounded-md border border-red-200 bg-red-50 dark:bg-red-900/20 dark:border-red-800 p-4",children:e.jsx("p",{className:"text-sm text-red-700 dark:text-red-300",children:t.message})})]})})}export{h as default};
1
+ import{Q as p,r as c,j as e,aB as f}from"./main-BJQZ96HP.js";const b={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_VERSION:"0.35.0",VITE_INSFORGE_ANON_KEY:"ik_9f35735991b684f7cf57fa00bb4d0487",VITE_INSFORGE_BASE_URL:"https://srctyff5.us-east.insforge.app"};function x(){return f(),`${(b&&"https://srctyff5.us-east.insforge.app"||"https://srctyff5.us-east.insforge.app").replace(/\/$/,"")}/functions/tokentracker-device-flow-grant`}function l(a){return(a||"").toUpperCase().replace(/\s+/g,"").replace(/[^A-Z0-9-]/g,"")}function h(){const a=p(),[m,g]=c.useState(""),[t,r]=c.useState({kind:"idle",message:""});c.useEffect(()=>{try{const n=new URLSearchParams(window.location.search).get("user_code");n&&g(l(n))}catch{}},[]);async function u(d){if(d?.preventDefault?.(),!a?.signedIn){r({kind:"error",message:"Please sign in first."});return}const n=l(m);if(!/^[A-HJKMNP-Z2-9]{4}-[A-HJKMNP-Z2-9]{4}$/.test(n)){r({kind:"error",message:"Invalid code format. Expected XXXX-XXXX."});return}r({kind:"working",message:"Approving…"});try{const i=await a.getAccessToken?.();if(!i){r({kind:"error",message:"No access token — please sign in again."});return}const s=await fetch(x(),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify({user_code:n})}),o=await s.json().catch(()=>({}));s.ok?r({kind:"success",message:o.status==="already_approved"?`Already approved earlier${o.client_info?" ("+o.client_info+")":""}.`:`Approved${o.client_info?" for "+o.client_info:""}. You can close this tab — your CLI will pick it up within a few seconds.`}):s.status===404?r({kind:"error",message:"Code not found. Double-check what your CLI printed."}):s.status===410?r({kind:"error",message:"Code expired. Re-run `tracker device-login` and try again."}):s.status===401?r({kind:"error",message:"Session expired. Sign out, sign in, and try again."}):r({kind:"error",message:o?.error||`Server error (HTTP ${s.status}).`})}catch(i){r({kind:"error",message:`Network error: ${i?.message||i}`})}}return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-white dark:bg-oai-gray-950 px-6 py-12",children:e.jsxs("div",{className:"w-full max-w-md rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-8",children:[e.jsx("h1",{className:"text-2xl font-semibold text-oai-gray-900 dark:text-white mb-2",children:"Approve your CLI"}),e.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400 mb-6",children:"Type the code your CLI showed you. We'll link it to your account so token usage from that machine flows into your leaderboard profile."}),a?.signedIn?null:e.jsx("div",{className:"rounded-md border border-amber-200 bg-amber-50 dark:bg-amber-900/20 dark:border-amber-800 p-4 mb-4",children:e.jsx("p",{className:"text-sm text-amber-700 dark:text-amber-300",children:"Sign in first, then return to this page."})}),e.jsxs("form",{onSubmit:u,className:"space-y-4",children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"block text-xs font-medium uppercase tracking-wide text-oai-gray-500 dark:text-oai-gray-400 mb-1",children:"CLI code"}),e.jsx("input",{type:"text",value:m,onChange:d=>g(l(d.target.value)),placeholder:"XXXX-XXXX",spellCheck:!1,autoCapitalize:"characters",maxLength:9,className:"w-full font-mono text-xl tracking-widest text-center rounded-md border border-oai-gray-300 dark:border-oai-gray-700 bg-white dark:bg-oai-gray-900 text-oai-gray-900 dark:text-white px-4 py-3 focus:outline-none focus:ring-inset focus:ring-2 focus:ring-emerald-600"})]}),e.jsx("button",{type:"submit",disabled:t.kind==="working"||!a?.signedIn,className:"w-full rounded-md bg-emerald-600 hover:bg-emerald-500 disabled:bg-oai-gray-300 disabled:cursor-not-allowed text-white font-medium py-3 transition-colors",children:t.kind==="working"?"Approving…":"Approve"})]}),t.kind==="success"&&e.jsx("div",{className:"mt-4 rounded-md border border-emerald-200 bg-emerald-50 dark:bg-emerald-900/20 dark:border-emerald-800 p-4",children:e.jsx("p",{className:"text-sm text-emerald-700 dark:text-emerald-300",children:t.message})}),t.kind==="error"&&e.jsx("div",{className:"mt-4 rounded-md border border-red-200 bg-red-50 dark:bg-red-900/20 dark:border-red-800 p-4",children:e.jsx("p",{className:"text-sm text-red-700 dark:text-red-300",children:t.message})})]})})}export{h as default};
@@ -0,0 +1,12 @@
1
+ import{ct as rt,cu as mn,ba as Be,aW as $,j as ne,b_ as _e,r as d,a_ as Z,bX as Wt,aY as A,aX as mt,cv as hn,bd as ht,b4 as je,bn,aV as st,cw as jt,cx as at,b1 as Ee,b$ as it,cy as se,aZ as we,a$ as K,bf as En,c1 as yn,bh as Vt,c9 as bt,cb as Et,cd as vn,cz as Sn,b2 as ee,b as de,b3 as Rn,cA as Bt,bo as Ke,c8 as Tn,cB as Cn,bP as _t,b9 as ae,bT as ze,bS as xn,cC as wn,cD as Q,bM as Xe,c2 as ct,bK as yt,c4 as On,bQ as In,bg as kn,b6 as lt,cE as Kt,cF as Mn,b7 as Yt,cG as le,bb as $t,b8 as We,cH as Pn,cI as Ht,cJ as Gt,cK as vt,a as Ye,br as dt,bk as Fn,bm as Ln,bi as Ie,cL as Ut,bY as qt,bp as Dn,c7 as Nn}from"./main-BJQZ96HP.js";function ye(e,t,n=!0){return e.filter(r=>r.parentId===t&&(!n||r.context?.open)).flatMap(r=>[r,...ye(e,r.id,n)])}function St(e,t){let n=[],o=e.find(r=>r.id===t)?.parentId;for(;o;){const r=e.find(s=>s.id===o);o=r?.parentId,r&&(n=n.concat(r))}return n}function An(e){e.preventDefault(),e.stopPropagation()}function Wn(e){return"nativeEvent"in e}function jn(e){return e.mozInputSource===0&&e.isTrusted?!0:rt&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function Vn(e){return mn?!1:!rt&&e.width===0&&e.height===0||rt&&e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0&&e.pointerType==="touch"}function gr(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Bn(e){const t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}function Fe(e){const t=Be(_n,e).current;return t.next=e,$(t.effect),t}function _n(e){const t={current:e,next:e,effect:()=>{t.current=t.next}};return t}function zt(){const e=new Map;return{emit(t,n){e.get(t)?.forEach(o=>o(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}class Kn{nodesRef={current:[]};events=zt();addNode(t){this.nodesRef.current.push(t)}removeNode(t){const n=this.nodesRef.current.findIndex(o=>o===t);n!==-1&&this.nodesRef.current.splice(n,1)}}const Xt=d.createContext(null),Jt=d.createContext(null),$e=()=>d.useContext(Xt)?.id||null,ft=e=>{const t=d.useContext(Jt);return e??t};function mr(e){const t=_e(),n=ft(e),o=$e();return $(()=>{if(!t)return;const r={id:t,parentId:o};return n?.addNode(r),()=>{n?.removeNode(r)}},[n,t,o]),t}function hr(e){const{children:t,id:n}=e,o=$e();return ne.jsx(Xt.Provider,{value:d.useMemo(()=>({id:n,parentId:o}),[n,o]),children:t})}function br(e){const{children:t,externalTree:n}=e,o=Be(()=>n??new Kn).current;return ne.jsx(Jt.Provider,{value:o,children:t})}let Rt=0;function Je(e,t={}){const{preventScroll:n=!1,cancelPrevious:o=!0,sync:r=!1}=t;o&&cancelAnimationFrame(Rt);const s=()=>e?.focus({preventScroll:n});r?s():Rt=requestAnimationFrame(s)}const ve={inert:new WeakMap,"aria-hidden":new WeakMap,none:new WeakMap};function Tt(e){return e==="inert"?ve.inert:e==="aria-hidden"?ve["aria-hidden"]:ve.none}let Le=new WeakSet,De={},Qe=0;const Qt=e=>e&&(e.host||Qt(e.parentNode)),Yn=(e,t)=>t.map(n=>{if(e.contains(n))return n;const o=Qt(n);return e.contains(o)?o:null}).filter(n=>n!=null);function $n(e,t,n,o){const r="data-base-ui-inert",s=o?"inert":n?"aria-hidden":null,u=Yn(t,e),a=new Set,i=new Set(u),l=[];De[r]||(De[r]=new WeakMap);const b=De[r];u.forEach(f),p(t),a.clear();function f(g){!g||a.has(g)||(a.add(g),g.parentNode&&f(g.parentNode))}function p(g){!g||i.has(g)||[].forEach.call(g.children,h=>{if(Wt(h)!=="script")if(a.has(h))p(h);else{const y=s?h.getAttribute(s):null,C=y!==null&&y!=="false",O=Tt(s),v=(O.get(h)||0)+1,R=(b.get(h)||0)+1;O.set(h,v),b.set(h,R),l.push(h),v===1&&C&&Le.add(h),R===1&&h.setAttribute(r,""),!C&&s&&h.setAttribute(s,s==="inert"?"":"true")}})}return Qe+=1,()=>{l.forEach(g=>{const h=Tt(s),C=(h.get(g)||0)-1,O=(b.get(g)||0)-1;h.set(g,C),b.set(g,O),C||(!Le.has(g)&&s&&g.removeAttribute(s),Le.delete(g)),O||g.removeAttribute(r)}),Qe-=1,Qe||(ve.inert=new WeakMap,ve["aria-hidden"]=new WeakMap,ve.none=new WeakMap,Le=new WeakSet,De={})}}function Hn(e,t=!1,n=!1){const o=Z(e[0]).body;return $n(e.concat(Array.from(o.querySelectorAll("[aria-live]"))),o,t,n)}function Gn(e,t){const n=Ke(e.target);return e instanceof n.KeyboardEvent?"keyboard":e instanceof n.FocusEvent?t||"keyboard":"pointerType"in e?e.pointerType||"keyboard":"touches"in e?"touch":e instanceof n.MouseEvent?t||(e.detail===0?"keyboard":"mouse"):""}const Ct=20;let ie=[];function pt(){ie=ie.filter(e=>e.isConnected)}function Un(e){pt(),e&&Wt(e)!=="body"&&(ie.push(e),ie.length>Ct&&(ie=ie.slice(-Ct)))}function Ze(){return pt(),ie[ie.length-1]}function qn(e){if(!e)return null;const t=at();return Bt(e,t)?e:jt(e,t)[0]||e}function zn(e){return!e||!e.isConnected?!1:typeof e.checkVisibility=="function"?e.checkVisibility():_t(e).display!=="none"}function xt(e,t){if(!t.current.includes("floating")&&!e.getAttribute("role")?.includes("dialog"))return;const n=at(),r=Cn(e,n).filter(u=>{const a=u.getAttribute("data-tabindex")||"";return Bt(u,n)||u.hasAttribute("data-tabindex")&&!a.startsWith("-")}),s=e.getAttribute("tabindex");t.current.includes("floating")||r.length===0?s!=="0"&&e.setAttribute("tabindex","0"):(s!=="-1"||e.hasAttribute("data-tabindex")&&e.getAttribute("data-tabindex")!=="-1")&&(e.setAttribute("tabindex","-1"),e.setAttribute("data-tabindex","-1"))}function Xn(e){const{context:t,children:n,disabled:o=!1,order:r=["content"],initialFocus:s=!0,returnFocus:u=!0,restoreFocus:a=!1,modal:i=!0,closeOnFocusOut:l=!0,openInteractionType:b="",getInsideElements:f=()=>[],nextFocusableElement:p,previousFocusableElement:g,beforeContentFocusGuardRef:h,externalTree:y}=e,C="rootStore"in t?t.rootStore:t,O=C.useState("open"),v=C.useState("domReferenceElement"),R=C.useState("floatingElement"),{events:N,dataRef:F}=C.context,M=A(()=>F.current.floatingContext?.nodeId),B=A(f),L=s===!1,V=mt(v)&&L,W=Fe(r),_=Fe(s),q=Fe(u),Re=Fe(b),G=ft(y),k=hn(),re=d.useRef(null),He=d.useRef(null),Y=d.useRef(!1),oe=d.useRef(!1),fe=d.useRef(!1),ke=d.useRef(-1),pe=d.useRef(""),J=d.useRef(""),Te=d.useRef(null),ce=d.useRef(null),Ge=ht(Te,h,k?.beforeInsideRef),Ce=ht(ce,k?.afterInsideRef),ge=je(),ue=je(),me=bn(),he=k!=null,c=st(R),w=A((m=c)=>m?jt(m,at()):[]),E=A(m=>{const T=w(m);return W.current.map(()=>T).filter(Boolean).flat()});d.useEffect(()=>{if(o||!i)return;function m(I){I.key==="Tab"&&K(c,we(Z(c)))&&w().length===0&&!V&&An(I)}const T=Z(c);return T.addEventListener("keydown",m),()=>{T.removeEventListener("keydown",m)}},[o,v,c,i,W,V,w,E]),d.useEffect(()=>{if(o||!R)return;function m(T){const I=ee(T),j=w().indexOf(I);j!==-1&&(ke.current=j)}return R.addEventListener("focusin",m),()=>{R.removeEventListener("focusin",m)}},[o,R,w]),d.useEffect(()=>{if(o||!O)return;const m=Z(c);function T(){fe.current=!1}function I(j){const x=ee(j),S=K(R,x)||K(v,x)||K(k?.portalNode,x);fe.current=!S,J.current=j.pointerType||"keyboard"}function D(){J.current="keyboard"}return m.addEventListener("pointerdown",I,!0),m.addEventListener("pointerup",T,!0),m.addEventListener("pointercancel",T,!0),m.addEventListener("keydown",D,!0),()=>{m.removeEventListener("pointerdown",I,!0),m.removeEventListener("pointerup",T,!0),m.removeEventListener("pointercancel",T,!0),m.removeEventListener("keydown",D,!0)}},[o,R,v,c,O,k]),d.useEffect(()=>{if(o||!l)return;function m(){oe.current=!0,ue.start(0,()=>{oe.current=!1})}function T(x){const S=x.relatedTarget,z=x.currentTarget,U=ee(x);queueMicrotask(()=>{const be=M(),Me=C.context.triggerElements,Ue=S?.hasAttribute(it("focus-guard"))&&[Te.current,ce.current,k?.beforeInsideRef.current,k?.afterInsideRef.current,k?.beforeOutsideRef.current,k?.afterOutsideRef.current,se(g),se(p)].includes(S),qe=!(K(v,S)||K(R,S)||K(S,R)||K(k?.portalNode,S)||S!=null&&Me.hasElement(S)||Me.hasMatchingElement(X=>K(X,S))||Ue||G&&(ye(G.nodesRef.current,be).find(X=>K(X.context?.elements.floating,S)||K(X.context?.elements.domReference,S))||St(G.nodesRef.current,be).find(X=>[X.context?.elements.floating,st(X.context?.elements.floating)].includes(S)||X.context?.elements.domReference===S)));if(z===v&&c&&xt(c,W),a&&z!==v&&!zn(U)&&we(Z(c))===Z(c).body){if(Ee(c)&&(c.focus(),a==="popup")){me.request(()=>{c.focus()});return}const X=ke.current,xe=w(),Pe=xe[X]||xe[xe.length-1]||c;Ee(Pe)&&Pe.focus()}if(F.current.insideReactTree){F.current.insideReactTree=!1;return}(V||!i)&&S&&qe&&!oe.current&&(V||S!==Ze())&&(Y.current=!0,C.setOpen(!1,de(Rn,x)))})}function I(){fe.current||(F.current.insideReactTree=!0,ge.start(0,()=>{F.current.insideReactTree=!1}))}const D=Ee(v)?v:null,j=[];if(!(!R&&!D))return D&&(D.addEventListener("focusout",T),D.addEventListener("pointerdown",m),j.push(()=>{D.removeEventListener("focusout",T),D.removeEventListener("pointerdown",m)})),R&&(R.addEventListener("focusout",T),k&&(R.addEventListener("focusout",I,!0),j.push(()=>{R.removeEventListener("focusout",I,!0)})),j.push(()=>{R.removeEventListener("focusout",T)})),()=>{j.forEach(x=>{x()})}},[o,v,R,c,i,G,k,C,l,a,w,V,M,W,F,ge,ue,me,p,g]),d.useEffect(()=>{if(o||!R||!O)return;const m=Array.from(k?.portalNode?.querySelectorAll(`[${it("portal")}]`)||[]),I=(G?St(G.nodesRef.current,M()):[]).find(x=>mt(x.context?.elements.domReference||null))?.context?.elements.domReference,D=[R,I,...m,...B(),re.current,He.current,Te.current,ce.current,k?.beforeOutsideRef.current,k?.afterOutsideRef.current,se(g),se(p),V?v:null].filter(x=>x!=null),j=Hn(D,i||V);return()=>{j()}},[O,o,v,R,i,W,k,V,G,M,B,p,g]),$(()=>{if(!O||o||!Ee(c))return;const m=Z(c),T=we(m);queueMicrotask(()=>{const I=E(c),D=_.current,j=typeof D=="function"?D(Re.current||""):D;if(j===void 0||j===!1)return;let x;j===!0||j===null?x=I[0]||c:x=se(j),x=x||I[0]||c,!K(c,T)&&Je(x,{preventScroll:x===c})})},[o,O,c,L,E,_,Re]),$(()=>{if(o||!c)return;const m=Z(c),T=we(m);Un(T);function I(x){if(x.open||(pe.current=Gn(x.nativeEvent,J.current)),x.reason===yn&&x.nativeEvent.type==="mouseleave"&&(Y.current=!0),x.reason===Vt)if(x.nested)Y.current=!1;else if(jn(x.nativeEvent)||Vn(x.nativeEvent))Y.current=!1;else{let S=!1;document.createElement("div").focus({get preventScroll(){return S=!0,!1}}),S?Y.current=!1:Y.current=!0}}N.on("openchange",I);const D=m.createElement("span");D.setAttribute("tabindex","-1"),D.setAttribute("aria-hidden","true"),Object.assign(D.style,En),he&&v&&v.insertAdjacentElement("afterend",D);function j(){const x=q.current;let S=typeof x=="function"?x(pe.current):x;if(S===void 0||S===!1)return null;if(S===null&&(S=!0),typeof S=="boolean"){const U=v||Ze();return U&&U.isConnected?U:D}const z=v||Ze()||D;return se(S)||z}return()=>{N.off("openchange",I);const x=we(m),S=K(R,x)||G&&ye(G.nodesRef.current,M(),!1).some(U=>K(U.context?.elements.floating,x)),z=j();queueMicrotask(()=>{const U=qn(z),be=typeof q.current!="boolean";q.current&&!Y.current&&Ee(U)&&(!(!be&&U!==x&&x!==m.body)||S)&&U.focus({preventScroll:!0}),D.remove()})}},[o,R,c,q,F,N,G,he,v,M]),d.useEffect(()=>{queueMicrotask(()=>{Y.current=!1})},[o]),d.useEffect(()=>{if(o||!O)return;function m(I){ee(I)?.closest(`[${Tn}]`)&&(oe.current=!0)}const T=Z(c);return T.addEventListener("pointerdown",m,!0),()=>{T.removeEventListener("pointerdown",m,!0)}},[o,O,c]),$(()=>{if(!o&&k)return k.setFocusManagerState({modal:i,closeOnFocusOut:l,open:O,onOpenChange:C.setOpen,domReference:v}),()=>{k.setFocusManagerState(null)}},[o,k,i,O,C,l,v]),$(()=>{if(!(o||!c))return xt(c,W),()=>{queueMicrotask(pt)}},[o,c,W]);const H=!o&&(i?!V:!0)&&(he||i);return ne.jsxs(d.Fragment,{children:[H&&ne.jsx(bt,{"data-type":"inside",ref:Ge,onFocus:m=>{if(i){const T=E();Je(T[T.length-1])}else k?.portalNode&&(Y.current=!1,Et(m,k.portalNode)?vn(v)?.focus():se(g??k.beforeOutsideRef)?.focus())}}),n,H&&ne.jsx(bt,{"data-type":"inside",ref:Ce,onFocus:m=>{i?Je(E()[0]):k?.portalNode&&(l&&(Y.current=!0),Et(m,k.portalNode)?Sn(v)?.focus():se(p??k.afterOutsideRef)?.focus())}})]})}const Jn={intentional:"onClick",sloppy:"onPointerDown"};function Qn(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Zn(e,t={}){const n="rootStore"in e?e.rootStore:e,o=n.useState("open"),r=n.useState("floatingElement"),s=n.useState("referenceElement"),u=n.useState("domReferenceElement"),{onOpenChange:a,dataRef:i}=n.context,{enabled:l=!0,escapeKey:b=!0,outsidePress:f=!0,outsidePressEvent:p="sloppy",referencePress:g=!1,referencePressEvent:h="sloppy",ancestorScroll:y=!1,bubbles:C,externalTree:O}=t,v=ft(O),R=A(typeof f=="function"?f:()=>!1),N=typeof f=="function"?R:f,F=d.useRef(!1),{escapeKey:M,outsidePress:B}=Qn(C),L=d.useRef(null),V=je(),W=je(),_=A(()=>{W.clear(),i.current.insideReactTree=!1}),q=d.useRef(!1),Re=d.useRef(""),G=A(c=>{Re.current=c.pointerType}),k=A(()=>{const c=Re.current,w=c==="pen"||!c?"mouse":c,E=typeof p=="function"?p():p;return typeof E=="string"?E:E[w]}),re=A(c=>{if(!o||!l||!b||c.key!=="Escape"||q.current)return;const w=i.current.floatingContext?.nodeId,E=v?ye(v.nodesRef.current,w):[];if(!M&&E.length>0){let T=!0;if(E.forEach(I=>{I.context?.open&&!I.context.dataRef.current.__escapeKeyBubbles&&(T=!1)}),!T)return}const H=Wn(c)?c.nativeEvent:c,m=de(On,H);n.setOpen(!1,m),!M&&!m.isPropagationAllowed&&c.stopPropagation()}),He=A(c=>{const w=k();return w==="intentional"&&c.type!=="click"||w==="sloppy"&&c.type==="click"}),Y=A(()=>{i.current.insideReactTree=!0,W.start(0,_)}),oe=A((c,w=!1)=>{if(He(c)){_();return}if(i.current.insideReactTree){_();return}if(k()==="intentional"&&w||typeof N=="function"&&!N(c))return;const E=ee(c),H=`[${it("inert")}]`,m=Z(n.select("floatingElement")).querySelectorAll(H),T=n.context.triggerElements;if(E&&(T.hasElement(E)||T.hasMatchingElement(S=>K(S,E))))return;let I=ae(E)?E:null;for(;I&&!ze(I);){const S=xn(I);if(ze(S)||!ae(S))break;I=S}if(m.length&&ae(E)&&!wn(E)&&!K(E,n.select("floatingElement"))&&Array.from(m).every(S=>!K(I,S)))return;if(Ee(E)&&!("touches"in c)){const S=ze(E),z=_t(E),U=/auto|scroll/,be=S||U.test(z.overflowX),Me=S||U.test(z.overflowY),Ue=be&&E.clientWidth>0&&E.scrollWidth>E.clientWidth,qe=Me&&E.clientHeight>0&&E.scrollHeight>E.clientHeight,X=z.direction==="rtl",xe=qe&&(X?c.offsetX<=E.offsetWidth-E.clientWidth:c.offsetX>E.clientWidth),Pe=Ue&&c.offsetY>E.clientHeight;if(xe||Pe)return}const D=i.current.floatingContext?.nodeId,j=v&&ye(v.nodesRef.current,D).some(S=>Q(c,S.context?.elements.floating));if(Q(c,n.select("floatingElement"))||Q(c,n.select("domReferenceElement"))||j)return;const x=v?ye(v.nodesRef.current,D):[];if(x.length>0){let S=!0;if(x.forEach(z=>{z.context?.open&&!z.context.dataRef.current.__outsidePressBubbles&&(S=!1)}),!S)return}n.setOpen(!1,de(Vt,c)),_()}),fe=A(c=>{k()!=="sloppy"||c.pointerType==="touch"||!n.select("open")||!l||Q(c,n.select("floatingElement"))||Q(c,n.select("domReferenceElement"))||oe(c)}),ke=A(c=>{if(k()!=="sloppy"||!n.select("open")||!l||Q(c,n.select("floatingElement"))||Q(c,n.select("domReferenceElement")))return;const w=c.touches[0];w&&(L.current={startTime:Date.now(),startX:w.clientX,startY:w.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},V.start(1e3,()=>{L.current&&(L.current.dismissOnTouchEnd=!1,L.current.dismissOnMouseDown=!1)}))}),pe=A(c=>{const w=ee(c);function E(){ke(c),w?.removeEventListener(c.type,E)}w?.addEventListener(c.type,E)}),J=A(c=>{const w=F.current;if(F.current=!1,V.clear(),c.type==="mousedown"&&L.current&&!L.current.dismissOnMouseDown)return;const E=ee(c);function H(){c.type==="pointerdown"?fe(c):oe(c,w),E?.removeEventListener(c.type,H)}E?.addEventListener(c.type,H)}),Te=A(c=>{if(k()!=="sloppy"||!L.current||Q(c,n.select("floatingElement"))||Q(c,n.select("domReferenceElement")))return;const w=c.touches[0];if(!w)return;const E=Math.abs(w.clientX-L.current.startX),H=Math.abs(w.clientY-L.current.startY),m=Math.sqrt(E*E+H*H);m>5&&(L.current.dismissOnTouchEnd=!0),m>10&&(oe(c),V.clear(),L.current=null)}),ce=A(c=>{const w=ee(c);function E(){Te(c),w?.removeEventListener(c.type,E)}w?.addEventListener(c.type,E)}),Ge=A(c=>{k()!=="sloppy"||!L.current||Q(c,n.select("floatingElement"))||Q(c,n.select("domReferenceElement"))||(L.current.dismissOnTouchEnd&&oe(c),V.clear(),L.current=null)}),Ce=A(c=>{const w=ee(c);function E(){Ge(c),w?.removeEventListener(c.type,E)}w?.addEventListener(c.type,E)});d.useEffect(()=>{if(!o||!l)return;i.current.__escapeKeyBubbles=M,i.current.__outsidePressBubbles=B;const c=new ct;function w(I){n.setOpen(!1,de(kn,I))}function E(){c.clear(),q.current=!0}function H(){c.start(In()?5:0,()=>{q.current=!1})}const m=Z(r);m.addEventListener("pointerdown",G,!0),b&&(m.addEventListener("keydown",re),m.addEventListener("compositionstart",E),m.addEventListener("compositionend",H)),N&&(m.addEventListener("click",J,!0),m.addEventListener("pointerdown",J,!0),m.addEventListener("touchstart",pe,!0),m.addEventListener("touchmove",ce,!0),m.addEventListener("touchend",Ce,!0),m.addEventListener("mousedown",J,!0));let T=[];return y&&(ae(u)&&(T=Xe(u)),ae(r)&&(T=T.concat(Xe(r))),!ae(s)&&s&&s.contextElement&&(T=T.concat(Xe(s.contextElement)))),T=T.filter(I=>I!==m.defaultView?.visualViewport),T.forEach(I=>{I.addEventListener("scroll",w,{passive:!0})}),()=>{m.removeEventListener("pointerdown",G,!0),b&&(m.removeEventListener("keydown",re),m.removeEventListener("compositionstart",E),m.removeEventListener("compositionend",H)),N&&(m.removeEventListener("click",J,!0),m.removeEventListener("pointerdown",J,!0),m.removeEventListener("touchstart",pe,!0),m.removeEventListener("touchmove",ce,!0),m.removeEventListener("touchend",Ce,!0),m.removeEventListener("mousedown",J,!0)),T.forEach(I=>{I.removeEventListener("scroll",w)}),c.clear(),F.current=!1}},[i,r,s,u,b,N,o,a,y,l,M,B,re,oe,J,fe,pe,ce,Ce,G,n]),d.useEffect(_,[N,_]);const ge=d.useMemo(()=>({onKeyDown:re,...g&&{[Jn[h]]:c=>{n.setOpen(!1,de(yt,c.nativeEvent))},...h!=="intentional"&&{onClick(c){n.setOpen(!1,de(yt,c.nativeEvent))}}}}),[re,n,g,h]),ue=A(c=>{const w=ee(c.nativeEvent);!K(n.select("floatingElement"),w)||c.button!==0||(F.current=!0)}),me=A(c=>{!o||!l||c.button!==0||(F.current=!0)}),he=d.useMemo(()=>({onKeyDown:re,onPointerDown:ue,onMouseDown:ue,onMouseUp:ue,onClickCapture:Y,onMouseDownCapture(c){Y(),me(c)},onPointerDownCapture(c){Y(),me(c)},onMouseUpCapture:Y,onTouchEndCapture:Y,onTouchMoveCapture:Y}),[re,ue,Y,me]);return d.useMemo(()=>l?{reference:ge,floating:he,trigger:ge}:{},[l,ge,he])}var Ve=Symbol("NOT_FOUND");function eo(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function to(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!="object")throw new TypeError(t)}function no(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(n=>typeof n=="function")){const n=e.map(o=>typeof o=="function"?`function ${o.name||"unnamed"}()`:typeof o).join(", ");throw new TypeError(`${t}[${n}]`)}}var wt=e=>Array.isArray(e)?e:[e];function oo(e){const t=Array.isArray(e[0])?e[0]:e;return no(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function ro(e,t){const n=[],{length:o}=e;for(let r=0;r<o;r++)n.push(e[r].apply(null,t));return n}function so(e){let t;return{get(n){return t&&e(t.key,n)?t.value:Ve},put(n,o){t={key:n,value:o}},getEntries(){return t?[t]:[]},clear(){t=void 0}}}function io(e,t){let n=[];function o(a){const i=n.findIndex(l=>t(a,l.key));if(i>-1){const l=n[i];return i>0&&(n.splice(i,1),n.unshift(l)),l.value}return Ve}function r(a,i){o(a)===Ve&&(n.unshift({key:a,value:i}),n.length>e&&n.pop())}function s(){return n}function u(){n=[]}return{get:o,put:r,getEntries:s,clear:u}}var co=(e,t)=>e===t;function uo(e){return function(n,o){if(n===null||o===null||n.length!==o.length)return!1;const{length:r}=n;for(let s=0;s<r;s++)if(!e(n[s],o[s]))return!1;return!0}}function ao(e,t){const n=typeof t=="object"?t:{equalityCheck:t},{equalityCheck:o=co,maxSize:r=1,resultEqualityCheck:s}=n,u=uo(o);let a=0;const i=r<=1?so(u):io(r,u);function l(){let b=i.get(arguments);if(b===Ve){if(b=e.apply(null,arguments),a++,s){const p=i.getEntries().find(g=>s(g.value,b));p&&(b=p.value,a!==0&&a--)}i.put(arguments,b)}return b}return l.clearCache=()=>{i.clear(),l.resetResultsCount()},l.resultsCount=()=>a,l.resetResultsCount=()=>{a=0},l}var lo=class{constructor(e){this.value=e}deref(){return this.value}},fo=typeof WeakRef<"u"?WeakRef:lo,po=0,Ot=1;function Ne(){return{s:po,v:void 0,o:null,p:null}}function Zt(e,t={}){let n=Ne();const{resultEqualityCheck:o}=t;let r,s=0;function u(){let a=n;const{length:i}=arguments;for(let f=0,p=i;f<p;f++){const g=arguments[f];if(typeof g=="function"||typeof g=="object"&&g!==null){let h=a.o;h===null&&(a.o=h=new WeakMap);const y=h.get(g);y===void 0?(a=Ne(),h.set(g,a)):a=y}else{let h=a.p;h===null&&(a.p=h=new Map);const y=h.get(g);y===void 0?(a=Ne(),h.set(g,a)):a=y}}const l=a;let b;if(a.s===Ot)b=a.v;else if(b=e.apply(null,arguments),s++,o){const f=r?.deref?.()??r;f!=null&&o(f,b)&&(b=f,s!==0&&s--),r=typeof b=="object"&&b!==null||typeof b=="function"?new fo(b):b}return l.s=Ot,l.v=b,b}return u.clearCache=()=>{n=Ne(),u.resetResultsCount()},u.resultsCount=()=>s,u.resetResultsCount=()=>{s=0},u}function en(e,...t){const n=typeof e=="function"?{memoize:e,memoizeOptions:t}:e,o=(...r)=>{let s=0,u=0,a,i={},l=r.pop();typeof l=="object"&&(i=l,l=r.pop()),eo(l,`createSelector expects an output function after the inputs, but received: [${typeof l}]`);const b={...n,...i},{memoize:f,memoizeOptions:p=[],argsMemoize:g=Zt,argsMemoizeOptions:h=[]}=b,y=wt(p),C=wt(h),O=oo(r),v=f(function(){return s++,l.apply(null,arguments)},...y),R=g(function(){u++;const F=ro(O,arguments);return a=v.apply(null,F),a},...C);return Object.assign(R,{resultFunc:l,memoizedResultFunc:v,dependencies:O,dependencyRecomputations:()=>u,resetDependencyRecomputations:()=>{u=0},lastResult:()=>a,recomputations:()=>s,resetRecomputations:()=>{s=0},memoize:f,argsMemoize:g})};return Object.assign(o,{withTypes:()=>o}),o}var go=en(Zt),mo=Object.assign((e,t=go)=>{to(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);const n=Object.keys(e),o=n.map(s=>e[s]);return t(o,(...s)=>s.reduce((u,a,i)=>(u[n[i]]=a,u),{}))},{withTypes:()=>mo});en({memoize:ao,memoizeOptions:{maxSize:1,equalityCheck:Object.is}});const P=(e,t,n,o,r,s,...u)=>{if(u.length>0)throw new Error(lt(1));let a;if(e)a=e;else throw new Error("Missing arguments");return a};var et={exports:{}},tt={};var It;function ho(){if(It)return tt;It=1;var e=Kt();function t(f,p){return f===p&&(f!==0||1/f===1/p)||f!==f&&p!==p}var n=typeof Object.is=="function"?Object.is:t,o=e.useState,r=e.useEffect,s=e.useLayoutEffect,u=e.useDebugValue;function a(f,p){var g=p(),h=o({inst:{value:g,getSnapshot:p}}),y=h[0].inst,C=h[1];return s(function(){y.value=g,y.getSnapshot=p,i(y)&&C({inst:y})},[f,g,p]),r(function(){return i(y)&&C({inst:y}),f(function(){i(y)&&C({inst:y})})},[f]),u(g),g}function i(f){var p=f.getSnapshot;f=f.value;try{var g=p();return!n(f,g)}catch{return!0}}function l(f,p){return p()}var b=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:a;return tt.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:b,tt}var kt;function tn(){return kt||(kt=1,et.exports=ho()),et.exports}var bo=tn(),nt={exports:{}},ot={};var Mt;function Eo(){if(Mt)return ot;Mt=1;var e=Kt(),t=tn();function n(l,b){return l===b&&(l!==0||1/l===1/b)||l!==l&&b!==b}var o=typeof Object.is=="function"?Object.is:n,r=t.useSyncExternalStore,s=e.useRef,u=e.useEffect,a=e.useMemo,i=e.useDebugValue;return ot.useSyncExternalStoreWithSelector=function(l,b,f,p,g){var h=s(null);if(h.current===null){var y={hasValue:!1,value:null};h.current=y}else y=h.current;h=a(function(){function O(M){if(!v){if(v=!0,R=M,M=p(M),g!==void 0&&y.hasValue){var B=y.value;if(g(B,M))return N=B}return N=M}if(B=N,o(R,M))return B;var L=p(M);return g!==void 0&&g(B,L)?(R=M,B):(R=M,N=L)}var v=!1,R,N,F=f===void 0?null:f;return[function(){return O(b())},F===null?void 0:function(){return O(F())}]},[b,f,p,g]);var C=r(l,h[0],h[1]);return u(function(){y.hasValue=!0,y.value=C},[C]),i(C),C},ot}var Pt;function yo(){return Pt||(Pt=1,nt.exports=Eo()),nt.exports}var vo=yo();const So=Mn(19),Ro=So?Co:xo;function To(e,t,n,o,r){return Ro(e,t,n,o,r)}function Co(e,t,n,o,r){const s=d.useCallback(()=>t(e.getSnapshot(),n,o,r),[e,t,n,o,r]);return bo.useSyncExternalStore(e.subscribe,s,s)}function xo(e,t,n,o,r){return vo.useSyncExternalStoreWithSelector(e.subscribe,e.getSnapshot,e.getSnapshot,s=>t(s,n,o,r))}class Oe{constructor(t){this.state=t,this.listeners=new Set,this.updateTick=0}subscribe=t=>(this.listeners.add(t),()=>{this.listeners.delete(t)});getSnapshot=()=>this.state;setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;const n=this.updateTick;for(const o of this.listeners){if(n!==this.updateTick)return;o(t)}}update(t){for(const n in t)if(!Object.is(this.state[n],t[n])){Oe.prototype.setState.call(this,{...this.state,...t});return}}set(t,n){Object.is(this.state[t],n)||Oe.prototype.setState.call(this,{...this.state,[t]:n})}notifyAll(){const t={...this.state};Oe.prototype.setState.call(this,t)}}class nn extends Oe{constructor(t,n={},o){super(t),this.context=n,this.selectors=o}controlledValues=new Map;useSyncedValue(t,n){d.useDebugValue(t),$(()=>{this.state[t]!==n&&this.set(t,n)},[t,n])}useSyncedValueWithCleanup(t,n){const o=this;$(()=>(o.state[t]!==n&&o.set(t,n),()=>{o.set(t,void 0)}),[o,t,n])}useSyncedValues(t){const n=this,o=Object.values(t);$(()=>{n.update(t)},[n,...o])}useControlledProp(t,n,o){d.useDebugValue(t);const r=this,s=n!==void 0;this.controlledValues.has(t)||(this.controlledValues.set(t,s),!s&&!Object.is(this.state[t],o)&&super.setState({...this.state,[t]:o})),$(()=>{s&&!Object.is(r.state[t],n)&&super.setState({...r.state,[t]:n})},[r,t,n,o,s])}set(t,n){this.controlledValues.get(t)!==!0&&super.set(t,n)}update(t){const n={...t};for(const o in n)if(Object.hasOwn(n,o)&&this.controlledValues.get(o)===!0){delete n[o];continue}super.update(n)}setState(t){const n={...t};for(const o in n)if(Object.hasOwn(n,o)&&this.controlledValues.get(o)===!0){delete n[o];continue}super.setState({...this.state,...n})}select=(t,n,o,r)=>{const s=this.selectors[t];return s(this.state,n,o,r)};useState=(t,n,o,r)=>{d.useDebugValue(t);const s=this.selectors[t];return To(this,s,n,o,r)};useContextCallback(t,n){d.useDebugValue(t);const o=A(n??Yt);this.context[t]=o}useStateSetter(t){const n=d.useRef(void 0);return n.current===void 0&&(n.current=o=>{this.set(t,o)}),n.current}observe(t,n){let o;typeof t=="function"?o=t:o=this.selectors[t];let r=o(this.state);return n(r,r,this),this.subscribe(s=>{const u=o(s);if(!Object.is(r,u)){const a=r;r=u,n(u,a,this)}})}}const wo={open:P(e=>e.open),domReferenceElement:P(e=>e.domReferenceElement),referenceElement:P(e=>e.positionReference??e.referenceElement),floatingElement:P(e=>e.floatingElement),floatingId:P(e=>e.floatingId)};class on extends nn{constructor(t){const{nested:n,noEmit:o,onOpenChange:r,triggerElements:s,...u}=t;super({...u,positionReference:u.referenceElement,domReferenceElement:u.referenceElement},{onOpenChange:r,dataRef:{current:{}},events:zt(),nested:n,noEmit:o,triggerElements:s},wo)}setOpen=(t,n)=>{if((!t||!this.state.open||Bn(n.event))&&(this.context.dataRef.current.openEvent=t?n.event:void 0),!this.context.noEmit){const o={open:t,reason:n.reason,nativeEvent:n.event,nested:this.context.nested,triggerElement:n.trigger};this.context.events.emit("openchange",o)}this.context.onOpenChange?.(t,n)}}function Oo(e,t=!1,n=!1){const[o,r]=d.useState(e&&t?"idle":void 0),[s,u]=d.useState(e);return e&&!s&&(u(!0),r("starting")),!e&&s&&o!=="ending"&&!n&&r("ending"),!e&&!s&&o==="ending"&&r(void 0),$(()=>{if(!e&&s&&o!=="ending"&&n){const a=le.request(()=>{r("ending")});return()=>{le.cancel(a)}}},[e,s,o,n]),$(()=>{if(!e||t)return;const a=le.request(()=>{r(void 0)});return()=>{le.cancel(a)}},[t,e]),$(()=>{if(!e||!t)return;e&&s&&o!=="idle"&&r("starting");const a=le.request(()=>{r("idle")});return()=>{le.cancel(a)}},[t,e,s,r,o]),d.useMemo(()=>({mounted:s,setMounted:u,transitionStatus:o}),[s,o])}function Io(e,t){const n=d.useRef(null),o=d.useRef(null);return d.useCallback(r=>{if(e!==void 0){if(n.current!==null){const s=n.current,u=o.current,a=t.context.triggerElements.getById(s);u&&a===u&&t.context.triggerElements.delete(s),n.current=null,o.current=null}r!==null&&(n.current=e,o.current=r,t.context.triggerElements.add(e,r))}},[t,e])}function Er(e,t,n,o){const r=n.useState("isMountedByTrigger",e),s=Io(e,n),u=A(a=>{if(s(a),!a||!n.select("open"))return;const i=n.select("activeTriggerId");if(i===e){n.update({activeTriggerElement:a,...o});return}i==null&&n.update({activeTriggerId:e,activeTriggerElement:a,...o})});return $(()=>{r&&n.update({activeTriggerElement:t.current,...o})},[r,n,t,...Object.values(o)]),{registerTrigger:u,isMountedByThisTrigger:r}}function ko(e){const t=e.useState("open");$(()=>{if(t&&!e.select("activeTriggerId")&&e.context.triggerElements.size===1){const n=e.context.triggerElements.entries().next();if(!n.done){const[o,r]=n.value;e.update({activeTriggerId:o,activeTriggerElement:r})}}},[t,e])}function Mo(e,t,n){const{mounted:o,setMounted:r,transitionStatus:s}=Oo(e);t.useSyncedValues({mounted:o,transitionStatus:s});const u=A(()=>{r(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1}),n?.(),t.context.onOpenChangeComplete?.(!1)}),a=t.useState("preventUnmountingOnClose");return $t({enabled:!a,open:e,ref:t.context.popupRef,onComplete(){e||u()}}),{forceUnmount:u,transitionStatus:s}}class rn{constructor(){this.elements=new Set,this.idMap=new Map}add(t,n){const o=this.idMap.get(t);o!==n&&(o!==void 0&&this.elements.delete(o),this.elements.add(n),this.idMap.set(t,n))}delete(t){const n=this.idMap.get(t);n&&(this.elements.delete(n),this.idMap.delete(t))}hasElement(t){return this.elements.has(t)}hasMatchingElement(t){for(const n of this.elements)if(t(n))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}get size(){return this.idMap.size}}function Po(){return new on({open:!1,floatingElement:null,referenceElement:null,triggerElements:new rn,floatingId:"",nested:!1,noEmit:!1,onOpenChange:void 0})}function Fo(){return{open:!1,mounted:!1,transitionStatus:"idle",floatingRootContext:Po(),preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,popupElement:null,positionerElement:null,activeTriggerProps:We,inactiveTriggerProps:We,popupProps:We}}const Lo={open:P(e=>e.open),mounted:P(e=>e.mounted),transitionStatus:P(e=>e.transitionStatus),floatingRootContext:P(e=>e.floatingRootContext),preventUnmountingOnClose:P(e=>e.preventUnmountingOnClose),payload:P(e=>e.payload),activeTriggerId:P(e=>e.activeTriggerId),activeTriggerElement:P(e=>e.mounted?e.activeTriggerElement:null),isTriggerActive:P((e,t)=>t!==void 0&&e.activeTriggerId===t),isOpenedByTrigger:P((e,t)=>t!==void 0&&e.activeTriggerId===t&&e.open),isMountedByTrigger:P((e,t)=>t!==void 0&&e.activeTriggerId===t&&e.mounted),triggerProps:P((e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps),popupProps:P(e=>e.popupProps),popupElement:P(e=>e.popupElement),positionerElement:P(e=>e.positionerElement)};function Do(e){const{popupStore:t,noEmit:n=!1,treatPopupAsFloatingElement:o=!1,onOpenChange:r}=e,s=_e(),u=$e()!=null,a=t.useState("open"),i=t.useState("activeTriggerElement"),l=t.useState(o?"popupElement":"positionerElement"),b=t.context.triggerElements,f=Be(()=>new on({open:a,referenceElement:i,floatingElement:l,triggerElements:b,onOpenChange:r,floatingId:s,nested:u,noEmit:n})).current;return $(()=>{const p={open:a,floatingId:s,referenceElement:i,floatingElement:l};ae(i)&&(p.domReferenceElement=i),f.state.positionReference===f.state.referenceElement&&(p.positionReference=i),f.update(p)},[a,s,i,l,f]),f.context.onOpenChange=r,f.context.nested=u,f.context.noEmit=n,f}function No(e=[]){const t=e.map(l=>l?.reference),n=e.map(l=>l?.floating),o=e.map(l=>l?.item),r=e.map(l=>l?.trigger),s=d.useCallback(l=>Ae(l,e,"reference"),t),u=d.useCallback(l=>Ae(l,e,"floating"),n),a=d.useCallback(l=>Ae(l,e,"item"),o),i=d.useCallback(l=>Ae(l,e,"trigger"),r);return d.useMemo(()=>({getReferenceProps:s,getFloatingProps:u,getItemProps:a,getTriggerProps:i}),[s,u,a,i])}function Ae(e,t,n){const o=new Map,r=n==="item",s={};n==="floating"&&(s.tabIndex=-1,s[Pn]="");for(const u in e)r&&e&&(u===Ht||u===Gt)||(s[u]=e[u]);for(let u=0;u<t.length;u+=1){let a;const i=t[u]?.[n];typeof i=="function"?a=e?i(e):null:a=i,a&&Ft(s,a,r,o)}return Ft(s,e,r,o),s}function Ft(e,t,n,o){for(const r in t){const s=t[r];n&&(r===Ht||r===Gt)||(r.startsWith("on")?(o.has(r)||o.set(r,[]),typeof s=="function"&&(o.get(r)?.push(s),e[r]=(...u)=>o.get(r)?.map(a=>a(...u)).find(a=>a!==void 0))):e[r]=s)}}const Ao=new Map([["select","listbox"],["combobox","listbox"],["label",!1]]);function Wo(e,t={}){const n="rootStore"in e?e.rootStore:e,o=n.useState("open"),r=n.useState("floatingId"),s=n.useState("domReferenceElement"),u=n.useState("floatingElement"),{enabled:a=!0,role:i="dialog"}=t,l=_e(),b=s?.id||l,f=d.useMemo(()=>st(u)?.id||r,[u,r]),p=Ao.get(i)??i,h=$e()!=null,y=d.useMemo(()=>p==="tooltip"||i==="label"?We:{"aria-haspopup":p==="alertdialog"?"dialog":p,"aria-expanded":"false",...p==="listbox"&&{role:"combobox"},...p==="menu"&&h&&{role:"menuitem"},...i==="select"&&{"aria-autocomplete":"none"},...i==="combobox"&&{"aria-autocomplete":"list"}},[p,h,i]),C=d.useMemo(()=>p==="tooltip"||i==="label"?{[`aria-${i==="label"?"labelledby":"describedby"}`]:o?f:void 0}:{...y,"aria-expanded":o?"true":"false","aria-controls":o?f:void 0,...p==="menu"&&{id:b}},[p,f,o,b,i,y]),O=d.useMemo(()=>{const R={id:f,...p&&{role:p}};return p==="tooltip"||i==="label"?R:{...R,...p==="menu"&&{"aria-labelledby":b}}},[p,f,b,i]),v=d.useCallback(({active:R,selected:N})=>{const F={role:"option",...R&&{id:`${f}-fui-option`}};switch(i){case"select":case"combobox":return{...F,"aria-selected":N}}return{}},[f,i]);return d.useMemo(()=>a?{reference:C,floating:O,item:v,trigger:y}:{},[a,C,O,y,v])}let te=(function(e){return e.open="data-open",e.closed="data-closed",e[e.startingStyle=vt.startingStyle]="startingStyle",e[e.endingStyle=vt.endingStyle]="endingStyle",e.anchorHidden="data-anchor-hidden",e})({}),ut=(function(e){return e.popupOpen="data-popup-open",e.pressed="data-pressed",e})({});const jo={[ut.popupOpen]:""},Vo={[ut.popupOpen]:"",[ut.pressed]:""},Bo={[te.open]:""},_o={[te.closed]:""},Ko={[te.anchorHidden]:""},yr={open(e){return e?jo:null}},vr={open(e){return e?Vo:null}},gt={open(e){return e?Bo:_o},anchorHidden(e){return e?Ko:null}},sn=d.createContext(void 0);function Se(e){const t=d.useContext(sn);if(e===!1&&t===void 0)throw new Error(lt(27));return t}const Yo={...gt,...dt},Sr=d.forwardRef(function(t,n){const{render:o,className:r,forceRender:s=!1,...u}=t,{store:a}=Se(),i=a.useState("open"),l=a.useState("nested"),b=a.useState("mounted"),f=a.useState("transitionStatus"),p=d.useMemo(()=>({open:i,transitionStatus:f}),[i,f]);return Ye("div",t,{state:p,ref:[a.context.backdropRef,n],stateAttributesMapping:Yo,props:[{role:"presentation",hidden:!b,style:{userSelect:"none",WebkitUserSelect:"none"}},u],enabled:s||!l})});function $o(e){return _e(e,"base-ui")}let Ho=(function(e){return e.nestedDialogs="--nested-dialogs",e})({}),Go=(function(e){return e[e.open=te.open]="open",e[e.closed=te.closed]="closed",e[e.startingStyle=te.startingStyle]="startingStyle",e[e.endingStyle=te.endingStyle]="endingStyle",e.nested="data-nested",e.nestedDialogOpen="data-nested-dialog-open",e})({});const cn=d.createContext(void 0);function un(){const e=d.useContext(cn);if(e===void 0)throw new Error(lt(26));return e}const an="ArrowUp",ln="ArrowDown",dn="ArrowLeft",fn="ArrowRight",pn="Home",gn="End",Uo=new Set([dn,fn]),qo=new Set([an,ln]),zo=new Set([...Uo,...qo]);[...zo];const Xo=new Set([an,ln,dn,fn,pn,gn]),Jo={...gt,...dt,nestedDialogOpen(e){return e?{[Go.nestedDialogOpen]:""}:null}},Rr=d.forwardRef(function(t,n){const{className:o,finalFocus:r,initialFocus:s,render:u,...a}=t,{store:i}=Se(),l=i.useState("descriptionElementId"),b=i.useState("disablePointerDismissal"),f=i.useState("floatingRootContext"),p=i.useState("popupProps"),g=i.useState("modal"),h=i.useState("mounted"),y=i.useState("nested"),C=i.useState("nestedOpenDialogCount"),O=i.useState("open"),v=i.useState("openMethod"),R=i.useState("titleElementId"),N=i.useState("transitionStatus"),F=i.useState("role");un(),$t({open:O,ref:i.context.popupRef,onComplete(){O&&i.context.onOpenChangeComplete?.(!0)}});function M(_){return _==="touch"?i.context.popupRef.current:!0}const B=s===void 0?M:s,L=C>0,V=d.useMemo(()=>({open:O,nested:y,transitionStatus:N,nestedDialogOpen:L}),[O,y,N,L]),W=Ye("div",t,{state:V,props:[p,{"aria-labelledby":R??void 0,"aria-describedby":l??void 0,role:F,tabIndex:-1,hidden:!h,onKeyDown(_){Xo.has(_.key)&&_.stopPropagation()},style:{[Ho.nestedDialogs]:C}},a],ref:[n,i.context.popupRef,i.useStateSetter("popupElement")],stateAttributesMapping:Jo});return ne.jsx(Xn,{context:f,openInteractionType:v,disabled:!h,closeOnFocusOut:!b,initialFocus:B,returnFocus:r,modal:g!==!1,restoreFocus:"popup",children:W})}),Qo=d.forwardRef(function(t,n){const{cutout:o,...r}=t;let s;if(o){const u=o?.getBoundingClientRect();s=`polygon(
2
+ 0% 0%,
3
+ 100% 0%,
4
+ 100% 100%,
5
+ 0% 100%,
6
+ 0% 0%,
7
+ ${u.left}px ${u.top}px,
8
+ ${u.left}px ${u.bottom}px,
9
+ ${u.right}px ${u.bottom}px,
10
+ ${u.right}px ${u.top}px,
11
+ ${u.left}px ${u.top}px
12
+ )`}return ne.jsx("div",{ref:n,role:"presentation","data-base-ui-inert":"",...r,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:s}})}),Tr=d.forwardRef(function(t,n){const{keepMounted:o=!1,...r}=t,{store:s}=Se(),u=s.useState("mounted"),a=s.useState("modal"),i=s.useState("open");return u||o?ne.jsx(cn.Provider,{value:o,children:ne.jsxs(Fn,{ref:n,...r,children:[u&&a===!0&&ne.jsx(Qo,{ref:s.context.internalBackdropRef,inert:Ln(!i)}),t.children]})}):null});let Lt={},Dt={},Nt="";function Zo(e){if(typeof document>"u")return!1;const t=Ie(e);return Ke(t).innerWidth-t.documentElement.clientWidth>0}function er(e){if(!(typeof CSS<"u"&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||typeof document>"u")return!1;const o=Ie(e).documentElement,r={scrollbarGutter:o.style.scrollbarGutter,overflowY:o.style.overflowY};o.style.scrollbarGutter="stable",o.style.overflowY="scroll";const s=o.offsetWidth;o.style.overflowY="hidden";const u=o.offsetWidth;return Object.assign(o.style,r),s===u}function tr(e){const t=Ie(e),n=t.documentElement,o=t.body,r=qt(n)?n:o,s=r.style.overflow;return r.style.overflow="hidden",()=>{r.style.overflow=s}}function nr(e){const t=Ie(e),n=t.documentElement,o=t.body,r=Ke(n);let s=0,u=0,a=!1;const i=le.create();if(Dn&&(r.visualViewport?.scale??1)!==1)return()=>{};function l(){const p=r.getComputedStyle(n),g=r.getComputedStyle(o),C=(p.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";s=n.scrollTop,u=n.scrollLeft,Lt={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},Nt=n.style.scrollBehavior,Dt={position:o.style.position,height:o.style.height,width:o.style.width,boxSizing:o.style.boxSizing,overflowY:o.style.overflowY,overflowX:o.style.overflowX,scrollBehavior:o.style.scrollBehavior};const O=n.scrollHeight>n.clientHeight,v=n.scrollWidth>n.clientWidth,R=p.overflowY==="scroll"||g.overflowY==="scroll",N=p.overflowX==="scroll"||g.overflowX==="scroll",F=Math.max(0,r.innerWidth-o.clientWidth),M=Math.max(0,r.innerHeight-o.clientHeight),B=parseFloat(g.marginTop)+parseFloat(g.marginBottom),L=parseFloat(g.marginLeft)+parseFloat(g.marginRight),V=qt(n)?n:o;if(a=er(e),a){n.style.scrollbarGutter=C,V.style.overflowY="hidden",V.style.overflowX="hidden";return}Object.assign(n.style,{scrollbarGutter:C,overflowY:"hidden",overflowX:"hidden"}),(O||R)&&(n.style.overflowY="scroll"),(v||N)&&(n.style.overflowX="scroll"),Object.assign(o.style,{position:"relative",height:B||M?`calc(100dvh - ${B+M}px)`:"100dvh",width:L||F?`calc(100vw - ${L+F}px)`:"100vw",boxSizing:"border-box",overflow:"hidden",scrollBehavior:"unset"}),o.scrollTop=s,o.scrollLeft=u,n.setAttribute("data-base-ui-scroll-locked",""),n.style.scrollBehavior="unset"}function b(){Object.assign(n.style,Lt),Object.assign(o.style,Dt),a||(n.scrollTop=s,n.scrollLeft=u,n.removeAttribute("data-base-ui-scroll-locked"),n.style.scrollBehavior=Nt)}function f(){b(),i.request(l)}return l(),r.addEventListener("resize",f),()=>{i.cancel(),b(),typeof r.removeEventListener=="function"&&r.removeEventListener("resize",f)}}class or{lockCount=0;restore=null;timeoutLock=ct.create();timeoutUnlock=ct.create();acquire(t){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(t)),this.release}release=()=>{this.lockCount-=1,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{this.lockCount===0&&this.restore&&(this.restore?.(),this.restore=null)};lock(t){if(this.lockCount===0||this.restore!==null)return;const o=Ie(t).documentElement,r=Ke(o).getComputedStyle(o).overflowY;if(r==="hidden"||r==="clip"){this.restore=Yt;return}const s=Ut||!Zo(t);this.restore=s?tr(t):nr(t)}}const rr=new or;function sr(e=!0,t=null){$(()=>{if(e)return rr.acquire(t)},[e,t])}function ir(e){const t=d.useRef(""),n=d.useCallback(r=>{r.defaultPrevented||(t.current=r.pointerType,e(r,r.pointerType))},[e]);return{onClick:d.useCallback(r=>{if(r.detail===0){e(r,"keyboard");return}"pointerType"in r&&e(r,r.pointerType),e(r,t.current),t.current=""},[e]),onPointerDown:n}}function cr(e){const[t,n]=d.useState(null),o=A((a,i)=>{e||n(i||(Ut?"touch":""))}),r=d.useCallback(()=>{n(null)},[]),{onClick:s,onPointerDown:u}=ir(o);return d.useMemo(()=>({openMethod:t,reset:r,triggerProps:{onClick:s,onPointerDown:u}}),[t,r,s,u])}function ur(e){const{store:t,parentContext:n,actionsRef:o}=e,r=t.useState("open"),s=t.useState("disablePointerDismissal"),u=t.useState("modal"),a=t.useState("popupElement"),{openMethod:i,triggerProps:l,reset:b}=cr(r);ko(t);const{forceUnmount:f}=Mo(r,t,()=>{b()}),p=A(W=>{const _=de(W);return _.preventUnmountOnClose=()=>{t.set("preventUnmountingOnClose",!0)},_}),g=d.useCallback(()=>{t.setOpen(!1,p(Nn))},[t,p]);d.useImperativeHandle(o,()=>({unmount:f,close:g}),[f,g]);const h=Do({popupStore:t,onOpenChange:t.setOpen,treatPopupAsFloatingElement:!0,noEmit:!0}),[y,C]=d.useState(0),O=y===0,v=Wo(h),R=Zn(h,{outsidePressEvent(){return t.context.internalBackdropRef.current||t.context.backdropRef.current?"intentional":{mouse:u==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(W){if("button"in W&&W.button!==0||"touches"in W&&W.touches.length!==1)return!1;const _=ee(W);if(O&&!s){const q=_;return u&&(t.context.internalBackdropRef.current||t.context.backdropRef.current)?t.context.internalBackdropRef.current===q||t.context.backdropRef.current===q||K(q,a)&&!q?.hasAttribute("data-base-ui-portal"):!0}return!1},escapeKey:O});sr(r&&u===!0,a);const{getReferenceProps:N,getFloatingProps:F,getTriggerProps:M}=No([v,R]);t.useContextCallback("onNestedDialogOpen",W=>{C(W+1)}),t.useContextCallback("onNestedDialogClose",()=>{C(0)}),d.useEffect(()=>(n?.onNestedDialogOpen&&r&&n.onNestedDialogOpen(y),n?.onNestedDialogClose&&!r&&n.onNestedDialogClose(),()=>{n?.onNestedDialogClose&&r&&n.onNestedDialogClose()}),[r,n,y]);const B=d.useMemo(()=>N(l),[N,l]),L=d.useMemo(()=>M(l),[M,l]),V=d.useMemo(()=>F(),[F]);t.useSyncedValues({openMethod:i,activeTriggerProps:B,inactiveTriggerProps:L,popupProps:V,floatingRootContext:h,nestedOpenDialogCount:y})}const ar={...Lo,modal:P(e=>e.modal),nested:P(e=>e.nested),nestedOpenDialogCount:P(e=>e.nestedOpenDialogCount),disablePointerDismissal:P(e=>e.disablePointerDismissal),openMethod:P(e=>e.openMethod),descriptionElementId:P(e=>e.descriptionElementId),titleElementId:P(e=>e.titleElementId),viewportElement:P(e=>e.viewportElement),role:P(e=>e.role)};class lr extends nn{constructor(t){super(dr(t),{popupRef:d.createRef(),backdropRef:d.createRef(),internalBackdropRef:d.createRef(),triggerElements:new rn,onOpenChange:void 0,onOpenChangeComplete:void 0},ar)}setOpen=(t,n)=>{if(n.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!t&&n.trigger==null&&this.state.activeTriggerId!=null&&(n.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(t,n),n.isCanceled)return;const o={open:t,nativeEvent:n.event,reason:n.reason,nested:this.state.nested};this.state.floatingRootContext.context.events?.emit("openchange",o);const r={open:t},s=n.trigger?.id??null;(s||t)&&(r.activeTriggerId=s,r.activeTriggerElement=n.trigger??null),this.update(r)}}function dr(e={}){return{...Fo(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,role:"dialog",...e}}function Cr(e){const{children:t,open:n,defaultOpen:o=!1,onOpenChange:r,onOpenChangeComplete:s,disablePointerDismissal:u=!1,modal:a=!0,actionsRef:i,handle:l,triggerId:b,defaultTriggerId:f=null}=e,p=Se(!0),g=!!p,h=Be(()=>l?.store??new lr({open:n??o,activeTriggerId:b!==void 0?b:f,modal:a,disablePointerDismissal:u,nested:g})).current;h.useControlledProp("open",n,o),h.useControlledProp("activeTriggerId",b,f),h.useSyncedValues({disablePointerDismissal:u,nested:g,modal:a}),h.useContextCallback("onOpenChange",r),h.useContextCallback("onOpenChangeComplete",s);const y=h.useState("payload");ur({store:h,actionsRef:i,parentContext:p?.store.context});const C=d.useMemo(()=>({store:h}),[h]);return ne.jsx(sn.Provider,{value:C,children:typeof t=="function"?t({payload:y}):t})}let At=(function(e){return e[e.open=te.open]="open",e[e.closed=te.closed]="closed",e[e.startingStyle=te.startingStyle]="startingStyle",e[e.endingStyle=te.endingStyle]="endingStyle",e.nested="data-nested",e.nestedDialogOpen="data-nested-dialog-open",e})({});const fr={...gt,...dt,nested(e){return e?{[At.nested]:""}:null},nestedDialogOpen(e){return e?{[At.nestedDialogOpen]:""}:null}},xr=d.forwardRef(function(t,n){const{className:o,render:r,children:s,...u}=t,a=un(),{store:i}=Se(),l=i.useState("open"),b=i.useState("nested"),f=i.useState("transitionStatus"),p=i.useState("nestedOpenDialogCount"),g=i.useState("mounted"),h=p>0,y=d.useMemo(()=>({open:l,nested:b,transitionStatus:f,nestedDialogOpen:h}),[l,b,f,h]);return Ye("div",t,{enabled:a||g,state:y,ref:[n,i.useStateSetter("viewportElement")],stateAttributesMapping:fr,props:[{role:"presentation",hidden:!g,children:s},u]})}),wr=d.forwardRef(function(t,n){const{render:o,className:r,id:s,...u}=t,{store:a}=Se(),i=$o(s);return a.useSyncedValueWithCleanup("titleElementId",i),Ye("h2",t,{ref:n,props:[{id:i},u]})});export{on as A,ye as B,Xo as C,Cr as D,Lo as E,Xn as F,Fo as G,br as H,Qo as I,ko as J,Mo as K,Do as L,Wo as M,Er as N,mr as O,rn as P,hr as Q,nn as R,Oe as S,Tr as a,Sr as b,xr as c,Rr as d,wr as e,Fe as f,$e as g,ft as h,Je as i,jn as j,Vn as k,$o as l,P as m,Oo as n,cr as o,To as p,Zn as q,No as r,An as s,vr as t,Se as u,yr as v,sr as w,gt as x,gr as y,Bn as z};
@@ -1 +1 @@
1
- import{z as d,u as n,A as a}from"./main-DdKVCJWa.js";function v({children:i,delay:t=0,duration:o=.35,y:e=12,className:s="",once:u=!0}){return d()?n.jsx("div",{className:s,children:i}):n.jsx(a.div,{initial:{opacity:0,y:e},animate:{opacity:1,y:0},transition:{duration:o,delay:t,ease:[.16,1,.3,1]},className:s,children:i})}function x({children:i,staggerDelay:t=.1,initialDelay:o=0,className:e=""}){return d()?n.jsx("div",{className:e,children:i}):n.jsx(a.div,{initial:"hidden",animate:"visible",variants:{hidden:{},visible:{transition:{staggerChildren:t,delayChildren:o}}},className:e,children:i})}function h({children:i,className:t="",y:o=12}){return d()?n.jsx("div",{className:t,children:i}):n.jsx(a.div,{variants:{hidden:{opacity:0,y:o},visible:{opacity:1,y:0,transition:{duration:.35,ease:[.16,1,.3,1]}}},className:t,children:i})}export{v as F,x as S,h as a};
1
+ import{e as d,j as n,m as a}from"./main-BJQZ96HP.js";function v({children:i,delay:t=0,duration:o=.35,y:e=12,className:s="",once:r=!0}){return d()?n.jsx("div",{className:s,children:i}):n.jsx(a.div,{initial:{opacity:0,y:e},animate:{opacity:1,y:0},transition:{duration:o,delay:t,ease:[.16,1,.3,1]},className:s,children:i})}function x({children:i,staggerDelay:t=.1,initialDelay:o=0,className:e=""}){return d()?n.jsx("div",{className:e,children:i}):n.jsx(a.div,{initial:"hidden",animate:"visible",variants:{hidden:{},visible:{transition:{staggerChildren:t,delayChildren:o}}},className:e,children:i})}function h({children:i,className:t="",y:o=12}){return d()?n.jsx("div",{className:t,children:i}):n.jsx(a.div,{variants:{hidden:{opacity:0,y:o},visible:{opacity:1,y:0,transition:{duration:.35,ease:[.16,1,.3,1]}}},className:t,children:i})}export{v as F,x as S,h as a};
@@ -1 +1 @@
1
- import{r as s,as as c,u as t}from"./main-DdKVCJWa.js";function u({repo:r="mm7894215/TokenTracker"}){const[a,o]=s.useState(null);return s.useEffect(()=>{if(typeof window>"u")return;const n=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,i=typeof document<"u"&&(document.documentElement?.classList.contains("screenshot-capture")||document.body?.classList.contains("screenshot-capture"));c({prefersReducedMotion:n,screenshotCapture:i})&&fetch(`https://api.github.com/repos/${r}`).then(e=>e.json()).then(e=>{e&&typeof e.stargazers_count=="number"&&o(e.stargazers_count)}).catch(()=>{})},[r]),t.jsxs("a",{href:`https://github.com/${r}`,target:"_blank",rel:"noopener noreferrer",className:"inline-flex shrink-0 items-center gap-2 px-3 py-1.5 rounded-md border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-800 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-700 transition-colors no-underline",children:[t.jsx("svg",{height:"16",viewBox:"0 0 16 16",width:"16",className:"shrink-0 fill-oai-gray-700 dark:fill-oai-gray-300",children:t.jsx("path",{d:"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"})}),t.jsx("span",{className:"text-xs font-medium text-oai-gray-700 dark:text-oai-gray-300 whitespace-nowrap",children:"Star"}),a!==null&&t.jsx("span",{className:"text-xs font-semibold text-oai-gray-900 dark:text-oai-white tabular-nums whitespace-nowrap",children:a})]})}export{u as H};
1
+ import{r as s,aw as c,j as t}from"./main-BJQZ96HP.js";function u({repo:r="mm7894215/TokenTracker"}){const[a,o]=s.useState(null);return s.useEffect(()=>{if(typeof window>"u")return;const n=typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,i=typeof document<"u"&&(document.documentElement?.classList.contains("screenshot-capture")||document.body?.classList.contains("screenshot-capture"));c({prefersReducedMotion:n,screenshotCapture:i})&&fetch(`https://api.github.com/repos/${r}`).then(e=>e.json()).then(e=>{e&&typeof e.stargazers_count=="number"&&o(e.stargazers_count)}).catch(()=>{})},[r]),t.jsxs("a",{href:`https://github.com/${r}`,target:"_blank",rel:"noopener noreferrer",className:"inline-flex shrink-0 items-center gap-2 px-3 py-1.5 rounded-md border border-oai-gray-200 dark:border-oai-gray-700 bg-oai-gray-50 dark:bg-oai-gray-800 hover:bg-oai-gray-100 dark:hover:bg-oai-gray-700 transition-colors no-underline",children:[t.jsx("svg",{height:"16",viewBox:"0 0 16 16",width:"16",className:"shrink-0 fill-oai-gray-700 dark:fill-oai-gray-300",children:t.jsx("path",{d:"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"})}),t.jsx("span",{className:"text-xs font-medium text-oai-gray-700 dark:text-oai-gray-300 whitespace-nowrap",children:"Star"}),a!==null&&t.jsx("span",{className:"text-xs font-semibold text-oai-gray-900 dark:text-oai-white tabular-nums whitespace-nowrap",children:a})]})}export{u as H};
@@ -1,8 +1,8 @@
1
- import{r as ce,s as t,u as n}from"./main-DdKVCJWa.js";const Ge=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),$=Ge?"/proxy/ipcheck":"https://ip.net.coffee",le="claude_ip_history",be=6,Ue=["CN","HK","MO","RU","KP","IR","SY","CU","BY","VE"],ze={CN:"Asia/Shanghai",TW:"Asia/Taipei",HK:"Asia/Hong_Kong",MO:"Asia/Macau",JP:"Asia/Tokyo",KR:"Asia/Seoul",SG:"Asia/Singapore",MY:"Asia/Kuala_Lumpur",TH:"Asia/Bangkok",VN:"Asia/Ho_Chi_Minh",ID:"Asia/Jakarta",PH:"Asia/Manila",IN:"Asia/Kolkata",PK:"Asia/Karachi",BD:"Asia/Dhaka",IR:"Asia/Tehran",IL:"Asia/Jerusalem",AE:"Asia/Dubai",SA:"Asia/Riyadh",TR:"Europe/Istanbul",RU:"Europe/Moscow",UA:"Europe/Kyiv",GB:"Europe/London",IE:"Europe/Dublin",FR:"Europe/Paris",DE:"Europe/Berlin",IT:"Europe/Rome",ES:"Europe/Madrid",PT:"Europe/Lisbon",NL:"Europe/Amsterdam",BE:"Europe/Brussels",CH:"Europe/Zurich",AT:"Europe/Vienna",SE:"Europe/Stockholm",NO:"Europe/Oslo",DK:"Europe/Copenhagen",FI:"Europe/Helsinki",PL:"Europe/Warsaw",CZ:"Europe/Prague",GR:"Europe/Athens",RO:"Europe/Bucharest",US:"America/Los_Angeles",CA:"America/Toronto",MX:"America/Mexico_City",BR:"America/Sao_Paulo",AR:"America/Argentina/Buenos_Aires",CL:"America/Santiago",AU:"Australia/Sydney",NZ:"Pacific/Auckland",ZA:"Africa/Johannesburg",EG:"Africa/Cairo",NG:"Africa/Lagos",KE:"Africa/Nairobi"},We={CN:["zh"],TW:["zh"],HK:["zh","en"],MO:["zh","en"],JP:["ja"],KR:["ko"],TH:["th"],VN:["vi"],SG:["en","zh","ms","ta"],MY:["ms","en","zh","ta"],ID:["id","en"],PH:["en","tl","fil"],IN:["en","hi"],PK:["ur","en"],BD:["bn","en"],LK:["si","ta","en"],NP:["ne","en"],US:["en"],GB:["en"],IE:["en","ga"],AU:["en"],NZ:["en","mi"],CA:["en","fr"],DE:["de"],AT:["de"],CH:["de","fr","it","rm"],BE:["nl","fr","de"],FR:["fr"],IT:["it"],ES:["es","ca","gl","eu"],PT:["pt"],NL:["nl","fy"],LU:["lb","fr","de"],SE:["sv"],NO:["no","nb","nn"],DK:["da"],FI:["fi","sv"],IS:["is","en"],PL:["pl"],CZ:["cs"],SK:["sk"],HU:["hu"],RO:["ro"],BG:["bg"],GR:["el"],RU:["ru"],UA:["uk","ru"],BY:["be","ru"],TR:["tr"],IL:["he","ar","en"],SA:["ar"],AE:["ar","en"],EG:["ar"],IR:["fa"],IQ:["ar","ku"],ZA:["en","af","zu","xh"],KE:["en","sw"],NG:["en"],ET:["am","en"],BR:["pt"],AR:["es"],MX:["es"],CL:["es"],CO:["es"],PE:["es"],VE:["es"]},Be={jp:"Japan",tw:"Taiwan",hk:"Hong Kong",sg:"Singapore",us:"United States",de:"Germany",kr:"South Korea",fr:"France",nl:"Netherlands",gb:"United Kingdom",au:"Australia",ca:"Canada",br:"Brazil",in:"India"};function Z(d){return!!d&&d.includes(":")}function Ke(d){return!Z(d)||d.length<=20?d:d.substring(0,18)+"..."}function v(d){return d==null?"":String(d).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function W(d){if(!d||!/^[a-zA-Z]{2}$/.test(d))return"";const k=d.toLowerCase();return`<img src="${k==="cn"?`${$}/favicons/cn.png`:k==="tw"?`${$}/favicons/flags/tw.png`:`${$}/favicons/flags/${k}.png`}" alt="${k}" class="inline-block h-4 w-auto rounded-sm align-[-2px]" onerror="this.onerror=null;this.style.display='none'">`}function Fe(d){if(!d)return"";const k=String(d).trim();if(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(k)){const _=k.split(".");return _[0]+"."+_[1]+".*.*"}if(k.includes("…")){const _=k.lastIndexOf("…");return k.substring(0,_+1)+"*"}if(k.includes(":")){const _=k.split(":");if(_.length>=2)return _[0]+":"+_[1]+":*"}return k}function Ve(d){if(!d)return null;try{const _=new Intl.DateTimeFormat("en-US",{timeZone:d,timeZoneName:"longOffset"}).formatToParts(new Date).find(J=>J.type==="timeZoneName");if(!_)return null;if(_.value==="GMT"||_.value==="UTC")return 0;const N=_.value.match(/GMT([+-])(\d{1,2}):?(\d{0,2})/);return N?(N[1]==="+"?1:-1)*(parseInt(N[2],10)*60+parseInt(N[3]||"0",10)):null}catch{return null}}function Ye(d){if(d==null)return"";const k=d>=0?"+":"-",_=Math.abs(d),N=Math.floor(_/60),O=_%60;return"UTC"+k+N+(O?":"+String(O).padStart(2,"0"):"")}const we={safe:"bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",warn:"bg-amber-50 text-amber-800 dark:bg-amber-500/15 dark:text-amber-300",danger:"bg-red-50 text-red-700 dark:bg-red-500/15 dark:text-red-300",info:"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300",neutral:"bg-oai-gray-100 text-oai-gray-600 dark:bg-oai-gray-800 dark:text-oai-gray-400"};function qe(){const d=ce.useRef(null),[k,_]=ce.useState(!1);ce.useEffect(()=>{const L=d.current;if(!L)return;const b=a=>L.querySelector(`#${a}`);let ae=!1;const e={unknown:t("ipcheck.common.unknown"),failed:t("ipcheck.ip.failed"),regionAccessible:t("ipcheck.trust.region.accessible"),regionWarnTitle:a=>t("ipcheck.trust.region_warn.title",{region:a}),regionWarnBody:t("ipcheck.trust.region_warn.body"),regionRestrictedText:t("ipcheck.trust.text.restricted"),noData:t("ipcheck.trust.no_data"),noIp:t("ipcheck.trust.no_ip"),noScore:t("ipcheck.trust.no_score"),score:{pristine:t("ipcheck.trust.label.pristine"),clean:t("ipcheck.trust.label.clean"),good:t("ipcheck.trust.label.good"),neutral:t("ipcheck.trust.label.neutral"),suspicious:t("ipcheck.trust.label.suspicious"),unreachable:t("ipcheck.trust.label.unreachable")},scoreText:{excellent:t("ipcheck.trust.text.excellent"),great:t("ipcheck.trust.text.great"),minor:t("ipcheck.trust.text.minor"),moderate:t("ipcheck.trust.text.moderate"),severe:t("ipcheck.trust.text.severe")},propsRegion:t("ipcheck.props.region"),propsCity:t("ipcheck.props.city"),propsType:t("ipcheck.props.type"),propsAsn:t("ipcheck.props.asn"),propsOrg:t("ipcheck.props.org"),propsResidential:t("ipcheck.props.residential"),propsDatacenter:t("ipcheck.props.datacenter"),secVpn:t("ipcheck.security.vpn"),secProxy:t("ipcheck.security.proxy"),secTor:t("ipcheck.security.tor"),secCrawler:t("ipcheck.security.crawler"),secAbuser:t("ipcheck.security.abuser"),secProxyFlag:t("ipcheck.security.proxy_flag"),secCrawlerYes:t("ipcheck.security.crawler_yes"),secCrawlerNo:t("ipcheck.security.crawler_no"),secAbuserYes:t("ipcheck.security.abuser_yes"),secAbuserNo:t("ipcheck.security.abuser_no"),secClean:t("ipcheck.security.clean"),availSvc:t("ipcheck.avail.svc_row"),availLat:{normal:t("ipcheck.avail.latency.normal"),good:t("ipcheck.avail.latency.good"),slow:t("ipcheck.avail.latency.slow"),unreachable:t("ipcheck.avail.latency.unreachable")},availSvcStatus:{none:t("ipcheck.avail.svc.none"),minor:t("ipcheck.avail.svc.minor"),major:t("ipcheck.avail.svc.major"),critical:t("ipcheck.avail.svc.critical"),maintenance:t("ipcheck.avail.svc.maintenance"),other:t("ipcheck.avail.svc.other")},dnsStatus:t("ipcheck.dns.status"),dnsOutlet:t("ipcheck.dns.outlet"),dnsOutletIp:t("ipcheck.dns.outlet_ip"),dnsIsp:t("ipcheck.dns.isp"),dnsLeaked:t("ipcheck.dns.leaked"),dnsNoLeak:t("ipcheck.dns.no_leak"),dnsEncrypted:t("ipcheck.dns.encrypted"),dnsCnTag:t("ipcheck.dns.cn_tag"),udpStatus:t("ipcheck.udp.status"),udpOutlet:t("ipcheck.udp.outlet"),udpOutletIp:t("ipcheck.udp.outlet_ip"),udpOrigin:t("ipcheck.udp.origin"),udpDisabled:t("ipcheck.udp.disabled"),udpNoLeak:t("ipcheck.udp.no_leak"),udpLeaked:t("ipcheck.udp.leaked"),udpAnomaly:t("ipcheck.udp.anomaly"),devTz:t("ipcheck.device.tz"),devLang:t("ipcheck.device.lang"),devOs:t("ipcheck.device.os"),devTouch:t("ipcheck.device.touch"),devNet:t("ipcheck.device.net"),devDnt:t("ipcheck.device.dnt"),devWebglRender:t("ipcheck.device.webgl_render"),devCanvasFp:t("ipcheck.device.canvas_fp"),devWebglFp:t("ipcheck.device.webgl_fp"),devMatch:t("ipcheck.device.match"),devMismatch:t("ipcheck.device.mismatch"),devLocal:t("ipcheck.device.local"),devEstSuffix:t("ipcheck.device.estimate_suffix"),devDiffEqual:t("ipcheck.device.diff_equal"),devDiffAhead:a=>t("ipcheck.device.diff_ahead",{h:a}),devDiffBehind:a=>t("ipcheck.device.diff_behind",{h:a}),devLangExpected:t("ipcheck.device.lang_expected"),devTouchYes:t("ipcheck.device.touch_yes"),devTouchNo:t("ipcheck.device.touch_no"),devDntOn:t("ipcheck.device.dnt_on"),devDntOff:t("ipcheck.device.dnt_off"),devDntUnset:t("ipcheck.device.dnt_unset"),devNetUnsupported:t("ipcheck.device.net_unsupported"),devUnsupported:t("ipcheck.device.unsupported"),histEmpty:t("ipcheck.history.empty"),histCurrent:t("ipcheck.history.current"),histLoading:t("ipcheck.ip.loading")};function g(a,i="neutral"){return`<span class="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${we[i]||we.neutral}">${a}</span>`}function q(a,i,s){return a===!0?g(i,"danger"):a===!1?g(s,"safe"):g(e.unknown,"neutral")}function ue(a){if(!a)return`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`;const i=v(a);return Z(a)?`<span class="ip-mask-target truncate" title="${i}">${v(Ke(a))}</span>`:`<span class="ip-mask-target">${i}</span>`}function B(a){return a?`<span class="ip-link">${ue(a)}</span>`:`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`}function f(a,i){return`<div class="flex items-center justify-between py-3 gap-3">
1
+ import{r as ce,A as t,j as n}from"./main-BJQZ96HP.js";const Ge=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),$=Ge?"/proxy/ipcheck":"https://ip.net.coffee",le="claude_ip_history",be=6,Ue=["CN","HK","MO","RU","KP","IR","SY","CU","BY","VE"],ze={CN:"Asia/Shanghai",TW:"Asia/Taipei",HK:"Asia/Hong_Kong",MO:"Asia/Macau",JP:"Asia/Tokyo",KR:"Asia/Seoul",SG:"Asia/Singapore",MY:"Asia/Kuala_Lumpur",TH:"Asia/Bangkok",VN:"Asia/Ho_Chi_Minh",ID:"Asia/Jakarta",PH:"Asia/Manila",IN:"Asia/Kolkata",PK:"Asia/Karachi",BD:"Asia/Dhaka",IR:"Asia/Tehran",IL:"Asia/Jerusalem",AE:"Asia/Dubai",SA:"Asia/Riyadh",TR:"Europe/Istanbul",RU:"Europe/Moscow",UA:"Europe/Kyiv",GB:"Europe/London",IE:"Europe/Dublin",FR:"Europe/Paris",DE:"Europe/Berlin",IT:"Europe/Rome",ES:"Europe/Madrid",PT:"Europe/Lisbon",NL:"Europe/Amsterdam",BE:"Europe/Brussels",CH:"Europe/Zurich",AT:"Europe/Vienna",SE:"Europe/Stockholm",NO:"Europe/Oslo",DK:"Europe/Copenhagen",FI:"Europe/Helsinki",PL:"Europe/Warsaw",CZ:"Europe/Prague",GR:"Europe/Athens",RO:"Europe/Bucharest",US:"America/Los_Angeles",CA:"America/Toronto",MX:"America/Mexico_City",BR:"America/Sao_Paulo",AR:"America/Argentina/Buenos_Aires",CL:"America/Santiago",AU:"Australia/Sydney",NZ:"Pacific/Auckland",ZA:"Africa/Johannesburg",EG:"Africa/Cairo",NG:"Africa/Lagos",KE:"Africa/Nairobi"},We={CN:["zh"],TW:["zh"],HK:["zh","en"],MO:["zh","en"],JP:["ja"],KR:["ko"],TH:["th"],VN:["vi"],SG:["en","zh","ms","ta"],MY:["ms","en","zh","ta"],ID:["id","en"],PH:["en","tl","fil"],IN:["en","hi"],PK:["ur","en"],BD:["bn","en"],LK:["si","ta","en"],NP:["ne","en"],US:["en"],GB:["en"],IE:["en","ga"],AU:["en"],NZ:["en","mi"],CA:["en","fr"],DE:["de"],AT:["de"],CH:["de","fr","it","rm"],BE:["nl","fr","de"],FR:["fr"],IT:["it"],ES:["es","ca","gl","eu"],PT:["pt"],NL:["nl","fy"],LU:["lb","fr","de"],SE:["sv"],NO:["no","nb","nn"],DK:["da"],FI:["fi","sv"],IS:["is","en"],PL:["pl"],CZ:["cs"],SK:["sk"],HU:["hu"],RO:["ro"],BG:["bg"],GR:["el"],RU:["ru"],UA:["uk","ru"],BY:["be","ru"],TR:["tr"],IL:["he","ar","en"],SA:["ar"],AE:["ar","en"],EG:["ar"],IR:["fa"],IQ:["ar","ku"],ZA:["en","af","zu","xh"],KE:["en","sw"],NG:["en"],ET:["am","en"],BR:["pt"],AR:["es"],MX:["es"],CL:["es"],CO:["es"],PE:["es"],VE:["es"]},Be={jp:"Japan",tw:"Taiwan",hk:"Hong Kong",sg:"Singapore",us:"United States",de:"Germany",kr:"South Korea",fr:"France",nl:"Netherlands",gb:"United Kingdom",au:"Australia",ca:"Canada",br:"Brazil",in:"India"};function Z(d){return!!d&&d.includes(":")}function Ke(d){return!Z(d)||d.length<=20?d:d.substring(0,18)+"..."}function v(d){return d==null?"":String(d).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function W(d){if(!d||!/^[a-zA-Z]{2}$/.test(d))return"";const k=d.toLowerCase();return`<img src="${k==="cn"?`${$}/favicons/cn.png`:k==="tw"?`${$}/favicons/flags/tw.png`:`${$}/favicons/flags/${k}.png`}" alt="${k}" class="inline-block h-4 w-auto rounded-sm align-[-2px]" onerror="this.onerror=null;this.style.display='none'">`}function Fe(d){if(!d)return"";const k=String(d).trim();if(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(k)){const _=k.split(".");return _[0]+"."+_[1]+".*.*"}if(k.includes("…")){const _=k.lastIndexOf("…");return k.substring(0,_+1)+"*"}if(k.includes(":")){const _=k.split(":");if(_.length>=2)return _[0]+":"+_[1]+":*"}return k}function Ve(d){if(!d)return null;try{const _=new Intl.DateTimeFormat("en-US",{timeZone:d,timeZoneName:"longOffset"}).formatToParts(new Date).find(J=>J.type==="timeZoneName");if(!_)return null;if(_.value==="GMT"||_.value==="UTC")return 0;const N=_.value.match(/GMT([+-])(\d{1,2}):?(\d{0,2})/);return N?(N[1]==="+"?1:-1)*(parseInt(N[2],10)*60+parseInt(N[3]||"0",10)):null}catch{return null}}function Ye(d){if(d==null)return"";const k=d>=0?"+":"-",_=Math.abs(d),N=Math.floor(_/60),O=_%60;return"UTC"+k+N+(O?":"+String(O).padStart(2,"0"):"")}const we={safe:"bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300",warn:"bg-amber-50 text-amber-800 dark:bg-amber-500/15 dark:text-amber-300",danger:"bg-red-50 text-red-700 dark:bg-red-500/15 dark:text-red-300",info:"bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-300",neutral:"bg-oai-gray-100 text-oai-gray-600 dark:bg-oai-gray-800 dark:text-oai-gray-400"};function qe(){const d=ce.useRef(null),[k,_]=ce.useState(!1);ce.useEffect(()=>{const A=d.current;if(!A)return;const b=a=>A.querySelector(`#${a}`);let ae=!1;const e={unknown:t("ipcheck.common.unknown"),failed:t("ipcheck.ip.failed"),regionAccessible:t("ipcheck.trust.region.accessible"),regionWarnTitle:a=>t("ipcheck.trust.region_warn.title",{region:a}),regionWarnBody:t("ipcheck.trust.region_warn.body"),regionRestrictedText:t("ipcheck.trust.text.restricted"),noData:t("ipcheck.trust.no_data"),noIp:t("ipcheck.trust.no_ip"),noScore:t("ipcheck.trust.no_score"),score:{pristine:t("ipcheck.trust.label.pristine"),clean:t("ipcheck.trust.label.clean"),good:t("ipcheck.trust.label.good"),neutral:t("ipcheck.trust.label.neutral"),suspicious:t("ipcheck.trust.label.suspicious"),unreachable:t("ipcheck.trust.label.unreachable")},scoreText:{excellent:t("ipcheck.trust.text.excellent"),great:t("ipcheck.trust.text.great"),minor:t("ipcheck.trust.text.minor"),moderate:t("ipcheck.trust.text.moderate"),severe:t("ipcheck.trust.text.severe")},propsRegion:t("ipcheck.props.region"),propsCity:t("ipcheck.props.city"),propsType:t("ipcheck.props.type"),propsAsn:t("ipcheck.props.asn"),propsOrg:t("ipcheck.props.org"),propsResidential:t("ipcheck.props.residential"),propsDatacenter:t("ipcheck.props.datacenter"),secVpn:t("ipcheck.security.vpn"),secProxy:t("ipcheck.security.proxy"),secTor:t("ipcheck.security.tor"),secCrawler:t("ipcheck.security.crawler"),secAbuser:t("ipcheck.security.abuser"),secProxyFlag:t("ipcheck.security.proxy_flag"),secCrawlerYes:t("ipcheck.security.crawler_yes"),secCrawlerNo:t("ipcheck.security.crawler_no"),secAbuserYes:t("ipcheck.security.abuser_yes"),secAbuserNo:t("ipcheck.security.abuser_no"),secClean:t("ipcheck.security.clean"),availSvc:t("ipcheck.avail.svc_row"),availLat:{normal:t("ipcheck.avail.latency.normal"),good:t("ipcheck.avail.latency.good"),slow:t("ipcheck.avail.latency.slow"),unreachable:t("ipcheck.avail.latency.unreachable")},availSvcStatus:{none:t("ipcheck.avail.svc.none"),minor:t("ipcheck.avail.svc.minor"),major:t("ipcheck.avail.svc.major"),critical:t("ipcheck.avail.svc.critical"),maintenance:t("ipcheck.avail.svc.maintenance"),other:t("ipcheck.avail.svc.other")},dnsStatus:t("ipcheck.dns.status"),dnsOutlet:t("ipcheck.dns.outlet"),dnsOutletIp:t("ipcheck.dns.outlet_ip"),dnsIsp:t("ipcheck.dns.isp"),dnsLeaked:t("ipcheck.dns.leaked"),dnsNoLeak:t("ipcheck.dns.no_leak"),dnsEncrypted:t("ipcheck.dns.encrypted"),dnsCnTag:t("ipcheck.dns.cn_tag"),udpStatus:t("ipcheck.udp.status"),udpOutlet:t("ipcheck.udp.outlet"),udpOutletIp:t("ipcheck.udp.outlet_ip"),udpOrigin:t("ipcheck.udp.origin"),udpDisabled:t("ipcheck.udp.disabled"),udpNoLeak:t("ipcheck.udp.no_leak"),udpLeaked:t("ipcheck.udp.leaked"),udpAnomaly:t("ipcheck.udp.anomaly"),devTz:t("ipcheck.device.tz"),devLang:t("ipcheck.device.lang"),devOs:t("ipcheck.device.os"),devTouch:t("ipcheck.device.touch"),devNet:t("ipcheck.device.net"),devDnt:t("ipcheck.device.dnt"),devWebglRender:t("ipcheck.device.webgl_render"),devCanvasFp:t("ipcheck.device.canvas_fp"),devWebglFp:t("ipcheck.device.webgl_fp"),devMatch:t("ipcheck.device.match"),devMismatch:t("ipcheck.device.mismatch"),devLocal:t("ipcheck.device.local"),devEstSuffix:t("ipcheck.device.estimate_suffix"),devDiffEqual:t("ipcheck.device.diff_equal"),devDiffAhead:a=>t("ipcheck.device.diff_ahead",{h:a}),devDiffBehind:a=>t("ipcheck.device.diff_behind",{h:a}),devLangExpected:t("ipcheck.device.lang_expected"),devTouchYes:t("ipcheck.device.touch_yes"),devTouchNo:t("ipcheck.device.touch_no"),devDntOn:t("ipcheck.device.dnt_on"),devDntOff:t("ipcheck.device.dnt_off"),devDntUnset:t("ipcheck.device.dnt_unset"),devNetUnsupported:t("ipcheck.device.net_unsupported"),devUnsupported:t("ipcheck.device.unsupported"),histEmpty:t("ipcheck.history.empty"),histCurrent:t("ipcheck.history.current"),histLoading:t("ipcheck.ip.loading")};function g(a,i="neutral"){return`<span class="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${we[i]||we.neutral}">${a}</span>`}function q(a,i,s){return a===!0?g(i,"danger"):a===!1?g(s,"safe"):g(e.unknown,"neutral")}function ue(a){if(!a)return`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`;const i=v(a);return Z(a)?`<span class="ip-mask-target truncate" title="${i}">${v(Ke(a))}</span>`:`<span class="ip-mask-target">${i}</span>`}function B(a){return a?`<span class="ip-link">${ue(a)}</span>`:`<span class="text-oai-gray-400 dark:text-oai-gray-500">${v(e.failed)}</span>`}function f(a,i){return`<div class="flex items-center justify-between py-3 gap-3">
2
2
  <span class="text-sm text-oai-gray-500 dark:text-oai-gray-400 shrink-0">${a}</span>
3
3
  <span class="text-sm font-medium text-oai-black dark:text-white text-right min-w-0">${i===void 0?'<span class="block h-3 w-20 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></span>':i}</span>
4
- </div>`}function Y(a){return a.map(i=>f(i,void 0)).join("")}function ne(){return'<div class="h-7 w-44 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function ie(){return'<div class="h-3 w-52 mt-2 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function _e(a){return a>=95?{text:e.score.pristine,variant:"safe"}:a>=80?{text:e.score.clean,variant:"safe"}:a>=50?{text:e.score.good,variant:"info"}:a>=25?{text:e.score.neutral,variant:"warn"}:{text:e.score.suspicious,variant:"danger"}}const w={ip:null,ippure:null,ipapis:null,claudeGeo:null,claudeRisk:null,cfGeo:""};function pe(){const a=(w.claudeRisk?.countryCode||"").toUpperCase();return!a||!Ue.includes(a)?null:t(`ipcheck.region.${a}`)}function se(){const a=b("ipv6Warn");a&&a.classList.remove("hidden")}function Q(a,i){const s=b(a);s&&(s.textContent=i||"",s.classList.remove("animate-pulse","bg-oai-gray-200","dark:bg-oai-gray-800","w-52","h-3","mt-2","rounded"))}const Te={ipAddrCN:ne(),ipGeoCN:ie(),ipAddr:ne(),ipGeo:ie(),ipAddrClaude:ne(),ipGeoClaude:ie(),propsContent:Y([e.propsRegion,e.propsCity,e.propsType,e.propsAsn,e.propsOrg]),securityContent:Y([e.secVpn,e.secProxy,e.secTor,e.secCrawler,e.secAbuser]),claudeAvailContent:Y(["claude.ai","anthropic.com"]),dnsLeakContent:Y([e.dnsStatus,e.dnsOutletIp]),udpLeakContent:Y([e.udpStatus,e.udpOutletIp]),deviceContent:Y([e.devTz,e.devLang,e.devOs,e.devTouch,e.devNet,e.devDnt,e.devWebglRender,e.devCanvasFp]),ipHistoryContent:`<span class="text-sm text-oai-gray-400 dark:text-oai-gray-500">${e.histLoading}</span>`};Object.entries(Te).forEach(([a,i])=>{const s=b(a);s&&(s.innerHTML=i)});let ge=!1;function Se(a){if(!a)return;a.dataset.realText||(a.dataset.realText=(a.textContent||"").trim());const i=a.dataset.realText,s=ge?Fe(i):i;a.textContent!==s&&(a.textContent=s)}function fe(){L.querySelectorAll(".ip-link, .ip-mask-target").forEach(Se)}const he=new MutationObserver(()=>requestAnimationFrame(fe));["ipHeroCN","ipHero","ipHeroClaude","ipHistoryContent","dnsLeakContent","udpLeakContent"].forEach(a=>{const i=b(a);i&&he.observe(i,{childList:!0,subtree:!0})}),L.__setMaskOn=a=>{ge=!!a,fe()};async function Le(){try{const s=(await(await fetch("https://1.1.1.1/cdn-cgi/trace",{signal:AbortSignal.timeout(5e3)})).text()).match(/ip=([^\n]+)/);s&&(w.ip=s[1].trim())}catch{}}async function Ae(){try{const i=await(await fetch("https://claude.ai/cdn-cgi/trace",{cache:"no-store",signal:AbortSignal.timeout(8e3)})).text(),s=Object.fromEntries(i.trim().split(`
5
- `).map(u=>u.split("=")));return{ip:s.ip||null,loc:s.loc?.toLowerCase()||null}}catch{return null}}async function $e(){try{const s=(await(await fetch("https://2026.ip138.com/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}try{const s=(await(await fetch("https://my.ip.cn/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}return null}async function Ne(a,i,s,u){const p=b(a),o=b(i);if(!(!p||!o)){if(!s){p.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`,o.textContent="";return}Z(s)&&se(),p.innerHTML=`${W(u)+" "}${B(s)}`;try{const l=await fetch(`${$}/api/geoip/${s}`,{signal:AbortSignal.timeout(5e3)});if(l.ok){const h=await l.json(),r=[h.country,h.region,h.city,h.isp].filter(Boolean).join(" · "),m=h.country_code||u||"";p.innerHTML=`${W(m)} ${B(s)}`,Q(i,r)}}catch{}}}function je(){const a=w.ippure,i=w.claudeRisk,s=w.claudeGeo,u=w.ipapis,p=i?.asn||a?.asn||"",o=i?.asOrganization||a?.asOrganization||u?.company?.name||"",l=pe(),h=!!(i&&i.ip);let r,m=null;h?l?(r=0,m=e.regionRestrictedText):r=typeof i.trust_score=="number"?i.trust_score:null:r=null;const C=b("gaugePointer"),c=b("gaugeScore"),H=b("gaugeText");if(r===null)c.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">—</span> ${g(e.noData,"neutral")}`,C.style.left="0%",C.style.opacity="0.3",H.textContent=h?e.noScore:e.noIp;else{const S=l?{text:e.score.unreachable,variant:"danger"}:_e(r),A=r>=50?"text-emerald-500":r>=25?"text-amber-500":"text-red-500";c.innerHTML=`<span class="${A}">${r}</span> ${g(S.text,S.variant)}`,C.style.left=Math.min(r,100)+"%",C.style.opacity="1",H.textContent=m||(r>=95?e.scoreText.excellent:r>=80?e.scoreText.great:r>=50?e.scoreText.minor:r>=25?e.scoreText.moderate:e.scoreText.severe)}const x=b("statusDotClaude");if(x){let S,A;r===null?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"):l||r<25?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-red-500"):r<50?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-amber-500"):(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",A="relative inline-flex h-2 w-2 rounded-full bg-emerald-500"),x.innerHTML=`<span class="${S}"></span><span class="${A}"></span>`}const I=b("regionWarn");I&&(l?(I.innerHTML=`<span class="font-medium">⚠️ ${e.regionWarnTitle(l)}</span><br><span class="text-[13px] font-normal mt-1 block opacity-90">${e.regionWarnBody}</span>`,I.classList.remove("hidden")):I.classList.add("hidden"));const D=b("claudeRegionSupportRow"),K=b("claudeRegionSupport");if(D&&K)if(l)D.classList.add("hidden");else{const S=!!(i&&i.ip),A=!!(i&&i.countryCode);K.innerHTML=!S||!A?g(e.unknown,"neutral"):g(e.regionAccessible,"safe"),D.classList.remove("hidden")}const G=i?.isResidential??(u?!u.is_datacenter:null),R=u?.company?.type||"",U=s?.country||i?.country||"",z=s?.city||i?.city||"";let T;if(G===!0?T=g(e.propsResidential,"safe"):G===!1?T=g(e.propsDatacenter,"warn"):T=g(e.unknown,"neutral"),R){const A={hosting:"Hosting",isp:"ISP",business:"Business",education:"Education"}[R]||v(R);T+=` <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${A}</span>`}b("propsContent").innerHTML=f(e.propsRegion,U?v(U):g(e.unknown,"neutral"))+f(e.propsCity,z?v(z):g(e.unknown,"neutral"))+f(e.propsType,T)+f(e.propsAsn,p?`<span class="font-mono tabular-nums">AS${v(p)}</span>`:g(e.unknown,"neutral"))+f(e.propsOrg,o?v(o):g(e.unknown,"neutral"));const j=u||{};b("securityContent").innerHTML=f(e.secVpn,q(j.is_vpn,e.secVpn,e.secClean))+f(e.secProxy,q(j.is_proxy,e.secProxyFlag,e.secClean))+f(e.secTor,q(j.is_tor,e.secTor,e.secClean))+f(e.secCrawler,q(j.is_crawler,e.secCrawlerYes,e.secCrawlerNo))+f(e.secAbuser,q(j.is_abuser,e.secAbuserYes,e.secAbuserNo))}async function Ee(){const a=b("dnsLeakContent");if(!a)return;const i=Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2);for(let r=1;r<=2;r++)await new Promise(m=>{const C=new Image,c=setTimeout(m,2e3);C.onload=C.onerror=()=>{clearTimeout(c),m()},C.src=`http://${i}-${r}.d.ip.net.coffee/pixel.gif?_=${Date.now()}`});await new Promise(r=>setTimeout(r,1500));let s=[];for(let r=0;r<2;r++){try{const m=await fetch(`${$}/api/dns/result/${i}`,{signal:AbortSignal.timeout(3e3)});if(m.ok&&(s=(await m.json()).dns_servers||[],s.length>0))break}catch{}r===0&&await new Promise(m=>setTimeout(m,1500))}if(s.length===0){a.innerHTML=f(e.dnsStatus,g(e.dnsEncrypted,"safe"));return}const u=(w.claudeRisk?.country||"").toLowerCase(),p=u.includes("china")||u.includes("中国");let o=null,l=!1;for(const r of s){let m=null;try{const x=await fetch(`${$}/api/geoip/${r}`,{signal:AbortSignal.timeout(3e3)});x.ok&&(m=await x.json())}catch{}const C=m?.country_code||"",c=m?.isp||"";if(C==="cn"&&!p){o={ip:r,cc:C,isp:c,leaked:!0},l=!0;break}o||(o={ip:r,cc:C,isp:c,leaked:!1})}let h=f(e.dnsStatus,l?g(e.dnsLeaked,"warn"):g(e.dnsNoLeak,"safe"));if(o){const r=`${W(o.cc)} <span class="ip-mask-target font-mono tabular-nums">${v(o.ip)}</span>${o.leaked?" "+g(e.dnsCnTag,"warn"):""}`;h+=f(e.dnsOutlet,r),o.isp&&(h+=f(e.dnsIsp,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal truncate inline-block max-w-[12rem] align-bottom">${v(o.isp)}</span>`))}a.innerHTML=h}async function Me(){const a=b("udpLeakContent");if(!a)return;const i=new Set;try{const x=new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.cloudflare.com:3478"}]});x.createDataChannel("");const I=await x.createOffer();await x.setLocalDescription(I),await new Promise(D=>{const K=setTimeout(()=>{x.close(),D()},5e3);x.onicecandidate=G=>{if(!G.candidate){clearTimeout(K),x.close(),D();return}const R=G.candidate.candidate.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/);if(R){const z=R[0];!z.startsWith("0.")&&!z.startsWith("127.")&&z!=="0.0.0.0"&&i.add(z)}const U=G.candidate.candidate.match(/([a-f0-9]{1,4}:){2,7}[a-f0-9]{1,4}/i);U&&i.add(U[0])}})}catch{}const s=w.claudeRisk?.ip||"",u=[...i],p=u.filter(x=>!Z(x)&&!x.startsWith("192.168.")&&!x.startsWith("10.")&&!x.startsWith("172.")&&!x.startsWith("198.18.")&&!x.startsWith("198.19.")&&!x.startsWith("100.64.")&&!x.startsWith("127.")&&!x.startsWith("0."));if(p.length===0&&u.length===0){a.innerHTML=f(e.udpStatus,g(e.udpDisabled,"safe"));return}if(p.length===0){a.innerHTML=f(e.udpStatus,g(e.udpNoLeak,"safe"));return}let o=p.find(x=>x===s)||p[0];const l=new Set(p).size>1,h=o===s,r=l&&!h;let m=f(e.udpStatus,r?g(e.udpLeaked,"warn"):g(e.udpNoLeak,"safe")),C="",c="";try{const x=await fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)});if(x.ok){const I=await x.json();C=I.country_code||"",c=I.country||""}}catch{}const H=`${W(C)} <span class="font-mono tabular-nums">${ue(o)}</span>${h?"":r?" "+g(e.udpAnomaly,"warn"):""}`;m+=f(e.udpOutlet,H),c&&(m+=f(e.udpOrigin,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${v(c)}</span>`)),a.innerHTML=m}async function me(){const a=b("claudeAvailContent");if(!a)return;a.innerHTML=Y(["claude.ai","anthropic.com"]);const i=[{name:"claude.ai",url:"https://claude.ai/cdn-cgi/trace"},{name:"anthropic.com",url:"https://www.anthropic.com/favicon.ico"}],s=await Promise.allSettled(i.map(async o=>{const l=performance.now();try{return await fetch(o.url,{mode:"no-cors",signal:AbortSignal.timeout(6e3)}),{name:o.name,ms:Math.round(performance.now()-l),ok:!0}}catch{return{name:o.name,ms:-1,ok:!1}}})),u=pe();let p="";s.forEach(o=>{const l=o.value;if(u)p+=f(l.name,g(e.availLat.unreachable,"danger"));else if(l.ok){const h=l.ms<250?"safe":l.ms<500?"info":"warn",r=l.ms<250?e.availLat.normal:l.ms<500?e.availLat.good:e.availLat.slow;p+=f(l.name,`${g(r,h)} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${l.ms}ms</span>`)}else p+=f(l.name,g(e.availLat.unreachable,"danger"))});try{const o=await fetch(`${$}/claude/status.json`,{signal:AbortSignal.timeout(3e3)});if(o.ok){const h=(await o.json()).overall_indicator||"none",r=e.availSvcStatus[h]||e.availSvcStatus.other,m={none:"safe",minor:"warn",major:"danger",critical:"danger",maintenance:"warn"};p+=f(e.availSvc,g(r,m[h]||"warn"))}}catch{}a.innerHTML=p}L.__detectClaudeAvail=me;function Ie(){const a=Intl.DateTimeFormat().resolvedOptions().timeZone||e.unknown,i=-(new Date().getTimezoneOffset()/60),s="UTC"+(i>=0?"+":"")+i,u=w.claudeRisk,p=(u?.countryCode||"").toUpperCase(),o=u?.timezone||ze[p]||"",l=!!u?.timezone,h=Ve(o),r=-new Date().getTimezoneOffset();let m=null;o&&h!=null&&(m=Math.abs(h-r)<=60);let C;const c=v(a),H=v(o);if(m===!0)C=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${c} (${s})</span>`;else if(m===!1){const E=Ye(h),y=Math.round((h-r)/60),M=y===0?e.devDiffEqual:y>0?e.devDiffAhead(y):e.devDiffBehind(-y),F=l?H:`${H} ${e.devEstSuffix}`;C=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${c} (${s})<br>Claude ${F} (${E}) · ${M}</span>`}else C=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${c} (${s})</span>`;const x=navigator.languages||[navigator.language],I=x.join(", ")||e.unknown,D=(x[0]||"").split("-")[0].toLowerCase(),K=We[p]||[],G=D&&K.length?K.includes(D):null;let R;const U=v(I),z=v(K.join(" / "));G===!0?R=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${U}</span>`:G===!1?R=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${U}<br>${e.devLangExpected} ${z}</span>`:R=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${U}</span>`;const T=navigator.userAgent;let j=e.unknown,S=e.unknown;T.includes("Windows")?j="Windows":T.includes("Mac OS")?j="macOS":T.includes("iPhone")||T.includes("iPad")?j="iOS":T.includes("Android")?j="Android":T.includes("Linux")&&(j="Linux"),T.includes("Edg/")?S="Edge "+(T.match(/Edg\/([\d.]+)/)||[])[1]:T.includes("Chrome/")?S="Chrome "+(T.match(/Chrome\/([\d.]+)/)||[])[1]:T.includes("Firefox/")?S="Firefox "+(T.match(/Firefox\/([\d.]+)/)||[])[1]:T.includes("Safari/")&&!T.includes("Chrome")&&(S="Safari "+(T.match(/Version\/([\d.]+)/)||[])[1]);let A=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info");M&&(A=y.getParameter(M.UNMASKED_RENDERER_WEBGL))}}catch{}let ye=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info"),F=M?y.getParameter(M.UNMASKED_VENDOR_WEBGL):"",X=M?y.getParameter(M.UNMASKED_RENDERER_WEBGL):"",ve=F+"~"+X+"~"+y.getParameter(y.VERSION)+"~"+y.getParameter(y.SHADING_LANGUAGE_VERSION);let te=0;for(let oe=0;oe<ve.length;oe++)te=(te<<5)-te+ve.charCodeAt(oe)|0;ye=(te>>>0).toString(16).toUpperCase()}}catch{}let ke=e.devUnsupported;try{const E=document.createElement("canvas");E.width=200,E.height=50;const y=E.getContext("2d");y.textBaseline="top",y.font="14px Arial",y.fillStyle="#f60",y.fillRect(50,0,100,50),y.fillStyle="#069",y.fillText("net.coffee",2,15),y.fillStyle="rgba(102,204,0,0.7)",y.fillText("canvas fp",4,30);const M=E.toDataURL();let F=0;for(let X=0;X<M.length;X++)F=(F<<5)-F+M.charCodeAt(X)|0;ke=(F>>>0).toString(16).toUpperCase()}catch{}const Oe=navigator.maxTouchPoints>0,re=navigator.connection||navigator.mozConnection||navigator.webkitConnection,Pe=re?re.effectiveType||re.type||e.unknown:e.devNetUnsupported,De=navigator.doNotTrack==="1"?e.devDntOn:navigator.doNotTrack==="0"?e.devDntOff:e.devDntUnset;b("deviceContent").innerHTML=f(e.devTz,C)+f(e.devLang,R)+f(e.devOs,`${v(j)} <span class="text-oai-gray-400 dark:text-oai-gray-500">/</span> ${v(S)}`)+f(e.devTouch,Oe?g(e.devTouchYes,"info"):g(e.devTouchNo,"neutral"))+f(e.devNet,`<span class="font-mono tabular-nums uppercase">${v(Pe)}</span>`)+f(e.devDnt,v(De))+f(e.devWebglRender,`<span class="text-xs font-normal text-oai-gray-600 dark:text-oai-gray-400 break-all">${v(A)}</span>`)+f(e.devCanvasFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ke)}</span>`)+f(e.devWebglFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ye)}</span>`)}function xe(){try{return JSON.parse(localStorage.getItem(le))||[]}catch{return[]}}function Re(){const a=w.claudeRisk?.ip||"",i=(w.claudeRisk?.countryCode||"").toLowerCase(),s=w.claudeRisk?.city||"";if(!a){ee();return}const u=xe(),p=new Date,o={ip:a,cc:i,geo:s,time:p.toISOString()};if(u.length>0){const l=u[0],h=(p-new Date(l.time))/(1e3*60*60);if(l.ip===a&&h<24){ee();return}}u.unshift(o),u.length>be&&(u.length=be),localStorage.setItem(le,JSON.stringify(u)),ee()}function ee(){const a=b("ipHistoryContent");if(!a)return;const i=xe();if(i.length===0){a.innerHTML=`<span class="text-sm text-oai-gray-500 dark:text-oai-gray-400">${e.histEmpty}</span>`;return}a.innerHTML=`<ul class="divide-y divide-oai-gray-100 dark:divide-oai-gray-800">${i.map((s,u)=>{const p=new Date(s.time),o=`${p.getMonth()+1}-${p.getDate()} ${String(p.getHours()).padStart(2,"0")}:${String(p.getMinutes()).padStart(2,"0")}`,l=u===0;return`<li class="flex items-center justify-between py-3 gap-4">
4
+ </div>`}function Y(a){return a.map(i=>f(i,void 0)).join("")}function ne(){return'<div class="h-7 w-44 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function ie(){return'<div class="h-3 w-52 mt-2 rounded bg-oai-gray-200 dark:bg-oai-gray-800 animate-pulse"></div>'}function _e(a){return a>=95?{text:e.score.pristine,variant:"safe"}:a>=80?{text:e.score.clean,variant:"safe"}:a>=50?{text:e.score.good,variant:"info"}:a>=25?{text:e.score.neutral,variant:"warn"}:{text:e.score.suspicious,variant:"danger"}}const w={ip:null,ippure:null,ipapis:null,claudeGeo:null,claudeRisk:null,cfGeo:""};function pe(){const a=(w.claudeRisk?.countryCode||"").toUpperCase();return!a||!Ue.includes(a)?null:t(`ipcheck.region.${a}`)}function se(){const a=b("ipv6Warn");a&&a.classList.remove("hidden")}function Q(a,i){const s=b(a);s&&(s.textContent=i||"",s.classList.remove("animate-pulse","bg-oai-gray-200","dark:bg-oai-gray-800","w-52","h-3","mt-2","rounded"))}const Te={ipAddrCN:ne(),ipGeoCN:ie(),ipAddr:ne(),ipGeo:ie(),ipAddrClaude:ne(),ipGeoClaude:ie(),propsContent:Y([e.propsRegion,e.propsCity,e.propsType,e.propsAsn,e.propsOrg]),securityContent:Y([e.secVpn,e.secProxy,e.secTor,e.secCrawler,e.secAbuser]),claudeAvailContent:Y(["claude.ai","anthropic.com"]),dnsLeakContent:Y([e.dnsStatus,e.dnsOutletIp]),udpLeakContent:Y([e.udpStatus,e.udpOutletIp]),deviceContent:Y([e.devTz,e.devLang,e.devOs,e.devTouch,e.devNet,e.devDnt,e.devWebglRender,e.devCanvasFp]),ipHistoryContent:`<span class="text-sm text-oai-gray-400 dark:text-oai-gray-500">${e.histLoading}</span>`};Object.entries(Te).forEach(([a,i])=>{const s=b(a);s&&(s.innerHTML=i)});let ge=!1;function Se(a){if(!a)return;a.dataset.realText||(a.dataset.realText=(a.textContent||"").trim());const i=a.dataset.realText,s=ge?Fe(i):i;a.textContent!==s&&(a.textContent=s)}function fe(){A.querySelectorAll(".ip-link, .ip-mask-target").forEach(Se)}const he=new MutationObserver(()=>requestAnimationFrame(fe));["ipHeroCN","ipHero","ipHeroClaude","ipHistoryContent","dnsLeakContent","udpLeakContent"].forEach(a=>{const i=b(a);i&&he.observe(i,{childList:!0,subtree:!0})}),A.__setMaskOn=a=>{ge=!!a,fe()};async function Ae(){try{const s=(await(await fetch("https://1.1.1.1/cdn-cgi/trace",{signal:AbortSignal.timeout(5e3)})).text()).match(/ip=([^\n]+)/);s&&(w.ip=s[1].trim())}catch{}}async function Le(){try{const i=await(await fetch("https://claude.ai/cdn-cgi/trace",{cache:"no-store",signal:AbortSignal.timeout(8e3)})).text(),s=Object.fromEntries(i.trim().split(`
5
+ `).map(u=>u.split("=")));return{ip:s.ip||null,loc:s.loc?.toLowerCase()||null}}catch{return null}}async function $e(){try{const s=(await(await fetch("https://2026.ip138.com/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}try{const s=(await(await fetch("https://my.ip.cn/",{signal:AbortSignal.timeout(5e3)})).text()).match(/(\d+\.\d+\.\d+\.\d+)/);if(s)return{ip:s[1]}}catch{}return null}async function Ne(a,i,s,u){const p=b(a),o=b(i);if(!(!p||!o)){if(!s){p.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`,o.textContent="";return}Z(s)&&se(),p.innerHTML=`${W(u)+" "}${B(s)}`;try{const l=await fetch(`${$}/api/geoip/${s}`,{signal:AbortSignal.timeout(5e3)});if(l.ok){const h=await l.json(),r=[h.country,h.region,h.city,h.isp].filter(Boolean).join(" · "),m=h.country_code||u||"";p.innerHTML=`${W(m)} ${B(s)}`,Q(i,r)}}catch{}}}function je(){const a=w.ippure,i=w.claudeRisk,s=w.claudeGeo,u=w.ipapis,p=i?.asn||a?.asn||"",o=i?.asOrganization||a?.asOrganization||u?.company?.name||"",l=pe(),h=!!(i&&i.ip);let r,m=null;h?l?(r=0,m=e.regionRestrictedText):r=typeof i.trust_score=="number"?i.trust_score:null:r=null;const C=b("gaugePointer"),c=b("gaugeScore"),H=b("gaugeText");if(r===null)c.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">—</span> ${g(e.noData,"neutral")}`,C.style.left="0%",C.style.opacity="0.3",H.textContent=h?e.noScore:e.noIp;else{const S=l?{text:e.score.unreachable,variant:"danger"}:_e(r),L=r>=50?"text-emerald-500":r>=25?"text-amber-500":"text-red-500";c.innerHTML=`<span class="${L}">${r}</span> ${g(S.text,S.variant)}`,C.style.left=Math.min(r,100)+"%",C.style.opacity="1",H.textContent=m||(r>=95?e.scoreText.excellent:r>=80?e.scoreText.great:r>=50?e.scoreText.minor:r>=25?e.scoreText.moderate:e.scoreText.severe)}const x=b("statusDotClaude");if(x){let S,L;r===null?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"):l||r<25?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-red-400 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-red-500"):r<50?(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-amber-400 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-amber-500"):(S="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75",L="relative inline-flex h-2 w-2 rounded-full bg-emerald-500"),x.innerHTML=`<span class="${S}"></span><span class="${L}"></span>`}const I=b("regionWarn");I&&(l?(I.innerHTML=`<span class="font-medium">⚠️ ${e.regionWarnTitle(l)}</span><br><span class="text-[13px] font-normal mt-1 block opacity-90">${e.regionWarnBody}</span>`,I.classList.remove("hidden")):I.classList.add("hidden"));const D=b("claudeRegionSupportRow"),K=b("claudeRegionSupport");if(D&&K)if(l)D.classList.add("hidden");else{const S=!!(i&&i.ip),L=!!(i&&i.countryCode);K.innerHTML=!S||!L?g(e.unknown,"neutral"):g(e.regionAccessible,"safe"),D.classList.remove("hidden")}const G=i?.isResidential??(u?!u.is_datacenter:null),R=u?.company?.type||"",U=s?.country||i?.country||"",z=s?.city||i?.city||"";let T;if(G===!0?T=g(e.propsResidential,"safe"):G===!1?T=g(e.propsDatacenter,"warn"):T=g(e.unknown,"neutral"),R){const L={hosting:"Hosting",isp:"ISP",business:"Business",education:"Education"}[R]||v(R);T+=` <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${L}</span>`}b("propsContent").innerHTML=f(e.propsRegion,U?v(U):g(e.unknown,"neutral"))+f(e.propsCity,z?v(z):g(e.unknown,"neutral"))+f(e.propsType,T)+f(e.propsAsn,p?`<span class="font-mono tabular-nums">AS${v(p)}</span>`:g(e.unknown,"neutral"))+f(e.propsOrg,o?v(o):g(e.unknown,"neutral"));const j=u||{};b("securityContent").innerHTML=f(e.secVpn,q(j.is_vpn,e.secVpn,e.secClean))+f(e.secProxy,q(j.is_proxy,e.secProxyFlag,e.secClean))+f(e.secTor,q(j.is_tor,e.secTor,e.secClean))+f(e.secCrawler,q(j.is_crawler,e.secCrawlerYes,e.secCrawlerNo))+f(e.secAbuser,q(j.is_abuser,e.secAbuserYes,e.secAbuserNo))}async function Ee(){const a=b("dnsLeakContent");if(!a)return;const i=Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2);for(let r=1;r<=2;r++)await new Promise(m=>{const C=new Image,c=setTimeout(m,2e3);C.onload=C.onerror=()=>{clearTimeout(c),m()},C.src=`http://${i}-${r}.d.ip.net.coffee/pixel.gif?_=${Date.now()}`});await new Promise(r=>setTimeout(r,1500));let s=[];for(let r=0;r<2;r++){try{const m=await fetch(`${$}/api/dns/result/${i}`,{signal:AbortSignal.timeout(3e3)});if(m.ok&&(s=(await m.json()).dns_servers||[],s.length>0))break}catch{}r===0&&await new Promise(m=>setTimeout(m,1500))}if(s.length===0){a.innerHTML=f(e.dnsStatus,g(e.dnsEncrypted,"safe"));return}const u=(w.claudeRisk?.country||"").toLowerCase(),p=u.includes("china")||u.includes("中国");let o=null,l=!1;for(const r of s){let m=null;try{const x=await fetch(`${$}/api/geoip/${r}`,{signal:AbortSignal.timeout(3e3)});x.ok&&(m=await x.json())}catch{}const C=m?.country_code||"",c=m?.isp||"";if(C==="cn"&&!p){o={ip:r,cc:C,isp:c,leaked:!0},l=!0;break}o||(o={ip:r,cc:C,isp:c,leaked:!1})}let h=f(e.dnsStatus,l?g(e.dnsLeaked,"warn"):g(e.dnsNoLeak,"safe"));if(o){const r=`${W(o.cc)} <span class="ip-mask-target font-mono tabular-nums">${v(o.ip)}</span>${o.leaked?" "+g(e.dnsCnTag,"warn"):""}`;h+=f(e.dnsOutlet,r),o.isp&&(h+=f(e.dnsIsp,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal truncate inline-block max-w-[12rem] align-bottom">${v(o.isp)}</span>`))}a.innerHTML=h}async function Me(){const a=b("udpLeakContent");if(!a)return;const i=new Set;try{const x=new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.cloudflare.com:3478"}]});x.createDataChannel("");const I=await x.createOffer();await x.setLocalDescription(I),await new Promise(D=>{const K=setTimeout(()=>{x.close(),D()},5e3);x.onicecandidate=G=>{if(!G.candidate){clearTimeout(K),x.close(),D();return}const R=G.candidate.candidate.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/);if(R){const z=R[0];!z.startsWith("0.")&&!z.startsWith("127.")&&z!=="0.0.0.0"&&i.add(z)}const U=G.candidate.candidate.match(/([a-f0-9]{1,4}:){2,7}[a-f0-9]{1,4}/i);U&&i.add(U[0])}})}catch{}const s=w.claudeRisk?.ip||"",u=[...i],p=u.filter(x=>!Z(x)&&!x.startsWith("192.168.")&&!x.startsWith("10.")&&!x.startsWith("172.")&&!x.startsWith("198.18.")&&!x.startsWith("198.19.")&&!x.startsWith("100.64.")&&!x.startsWith("127.")&&!x.startsWith("0."));if(p.length===0&&u.length===0){a.innerHTML=f(e.udpStatus,g(e.udpDisabled,"safe"));return}if(p.length===0){a.innerHTML=f(e.udpStatus,g(e.udpNoLeak,"safe"));return}let o=p.find(x=>x===s)||p[0];const l=new Set(p).size>1,h=o===s,r=l&&!h;let m=f(e.udpStatus,r?g(e.udpLeaked,"warn"):g(e.udpNoLeak,"safe")),C="",c="";try{const x=await fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)});if(x.ok){const I=await x.json();C=I.country_code||"",c=I.country||""}}catch{}const H=`${W(C)} <span class="font-mono tabular-nums">${ue(o)}</span>${h?"":r?" "+g(e.udpAnomaly,"warn"):""}`;m+=f(e.udpOutlet,H),c&&(m+=f(e.udpOrigin,`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${v(c)}</span>`)),a.innerHTML=m}async function me(){const a=b("claudeAvailContent");if(!a)return;a.innerHTML=Y(["claude.ai","anthropic.com"]);const i=[{name:"claude.ai",url:"https://claude.ai/cdn-cgi/trace"},{name:"anthropic.com",url:"https://www.anthropic.com/favicon.ico"}],s=await Promise.allSettled(i.map(async o=>{const l=performance.now();try{return await fetch(o.url,{mode:"no-cors",signal:AbortSignal.timeout(6e3)}),{name:o.name,ms:Math.round(performance.now()-l),ok:!0}}catch{return{name:o.name,ms:-1,ok:!1}}})),u=pe();let p="";s.forEach(o=>{const l=o.value;if(u)p+=f(l.name,g(e.availLat.unreachable,"danger"));else if(l.ok){const h=l.ms<250?"safe":l.ms<500?"info":"warn",r=l.ms<250?e.availLat.normal:l.ms<500?e.availLat.good:e.availLat.slow;p+=f(l.name,`${g(r,h)} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${l.ms}ms</span>`)}else p+=f(l.name,g(e.availLat.unreachable,"danger"))});try{const o=await fetch(`${$}/claude/status.json`,{signal:AbortSignal.timeout(3e3)});if(o.ok){const h=(await o.json()).overall_indicator||"none",r=e.availSvcStatus[h]||e.availSvcStatus.other,m={none:"safe",minor:"warn",major:"danger",critical:"danger",maintenance:"warn"};p+=f(e.availSvc,g(r,m[h]||"warn"))}}catch{}a.innerHTML=p}A.__detectClaudeAvail=me;function Ie(){const a=Intl.DateTimeFormat().resolvedOptions().timeZone||e.unknown,i=-(new Date().getTimezoneOffset()/60),s="UTC"+(i>=0?"+":"")+i,u=w.claudeRisk,p=(u?.countryCode||"").toUpperCase(),o=u?.timezone||ze[p]||"",l=!!u?.timezone,h=Ve(o),r=-new Date().getTimezoneOffset();let m=null;o&&h!=null&&(m=Math.abs(h-r)<=60);let C;const c=v(a),H=v(o);if(m===!0)C=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${c} (${s})</span>`;else if(m===!1){const E=Ye(h),y=Math.round((h-r)/60),M=y===0?e.devDiffEqual:y>0?e.devDiffAhead(y):e.devDiffBehind(-y),F=l?H:`${H} ${e.devEstSuffix}`;C=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${c} (${s})<br>Claude ${F} (${E}) · ${M}</span>`}else C=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${c} (${s})</span>`;const x=navigator.languages||[navigator.language],I=x.join(", ")||e.unknown,D=(x[0]||"").split("-")[0].toLowerCase(),K=We[p]||[],G=D&&K.length?K.includes(D):null;let R;const U=v(I),z=v(K.join(" / "));G===!0?R=`${g(e.devMatch,"safe")} <span class="text-xs text-oai-gray-500 dark:text-oai-gray-400">${U}</span>`:G===!1?R=`${g(e.devMismatch,"warn")}<br><span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${e.devLocal} ${U}<br>${e.devLangExpected} ${z}</span>`:R=`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal">${U}</span>`;const T=navigator.userAgent;let j=e.unknown,S=e.unknown;T.includes("Windows")?j="Windows":T.includes("Mac OS")?j="macOS":T.includes("iPhone")||T.includes("iPad")?j="iOS":T.includes("Android")?j="Android":T.includes("Linux")&&(j="Linux"),T.includes("Edg/")?S="Edge "+(T.match(/Edg\/([\d.]+)/)||[])[1]:T.includes("Chrome/")?S="Chrome "+(T.match(/Chrome\/([\d.]+)/)||[])[1]:T.includes("Firefox/")?S="Firefox "+(T.match(/Firefox\/([\d.]+)/)||[])[1]:T.includes("Safari/")&&!T.includes("Chrome")&&(S="Safari "+(T.match(/Version\/([\d.]+)/)||[])[1]);let L=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info");M&&(L=y.getParameter(M.UNMASKED_RENDERER_WEBGL))}}catch{}let ye=e.devUnsupported;try{const E=document.createElement("canvas"),y=E.getContext("webgl")||E.getContext("experimental-webgl");if(y){const M=y.getExtension("WEBGL_debug_renderer_info"),F=M?y.getParameter(M.UNMASKED_VENDOR_WEBGL):"",X=M?y.getParameter(M.UNMASKED_RENDERER_WEBGL):"",ve=F+"~"+X+"~"+y.getParameter(y.VERSION)+"~"+y.getParameter(y.SHADING_LANGUAGE_VERSION);let te=0;for(let oe=0;oe<ve.length;oe++)te=(te<<5)-te+ve.charCodeAt(oe)|0;ye=(te>>>0).toString(16).toUpperCase()}}catch{}let ke=e.devUnsupported;try{const E=document.createElement("canvas");E.width=200,E.height=50;const y=E.getContext("2d");y.textBaseline="top",y.font="14px Arial",y.fillStyle="#f60",y.fillRect(50,0,100,50),y.fillStyle="#069",y.fillText("net.coffee",2,15),y.fillStyle="rgba(102,204,0,0.7)",y.fillText("canvas fp",4,30);const M=E.toDataURL();let F=0;for(let X=0;X<M.length;X++)F=(F<<5)-F+M.charCodeAt(X)|0;ke=(F>>>0).toString(16).toUpperCase()}catch{}const Oe=navigator.maxTouchPoints>0,re=navigator.connection||navigator.mozConnection||navigator.webkitConnection,Pe=re?re.effectiveType||re.type||e.unknown:e.devNetUnsupported,De=navigator.doNotTrack==="1"?e.devDntOn:navigator.doNotTrack==="0"?e.devDntOff:e.devDntUnset;b("deviceContent").innerHTML=f(e.devTz,C)+f(e.devLang,R)+f(e.devOs,`${v(j)} <span class="text-oai-gray-400 dark:text-oai-gray-500">/</span> ${v(S)}`)+f(e.devTouch,Oe?g(e.devTouchYes,"info"):g(e.devTouchNo,"neutral"))+f(e.devNet,`<span class="font-mono tabular-nums uppercase">${v(Pe)}</span>`)+f(e.devDnt,v(De))+f(e.devWebglRender,`<span class="text-xs font-normal text-oai-gray-600 dark:text-oai-gray-400 break-all">${v(L)}</span>`)+f(e.devCanvasFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ke)}</span>`)+f(e.devWebglFp,`<span class="font-mono tabular-nums tracking-wider text-oai-gray-700 dark:text-oai-gray-300">${v(ye)}</span>`)}function xe(){try{return JSON.parse(localStorage.getItem(le))||[]}catch{return[]}}function Re(){const a=w.claudeRisk?.ip||"",i=(w.claudeRisk?.countryCode||"").toLowerCase(),s=w.claudeRisk?.city||"";if(!a){ee();return}const u=xe(),p=new Date,o={ip:a,cc:i,geo:s,time:p.toISOString()};if(u.length>0){const l=u[0],h=(p-new Date(l.time))/(1e3*60*60);if(l.ip===a&&h<24){ee();return}}u.unshift(o),u.length>be&&(u.length=be),localStorage.setItem(le,JSON.stringify(u)),ee()}function ee(){const a=b("ipHistoryContent");if(!a)return;const i=xe();if(i.length===0){a.innerHTML=`<span class="text-sm text-oai-gray-500 dark:text-oai-gray-400">${e.histEmpty}</span>`;return}a.innerHTML=`<ul class="divide-y divide-oai-gray-100 dark:divide-oai-gray-800">${i.map((s,u)=>{const p=new Date(s.time),o=`${p.getMonth()+1}-${p.getDate()} ${String(p.getHours()).padStart(2,"0")}:${String(p.getMinutes()).padStart(2,"0")}`,l=u===0;return`<li class="flex items-center justify-between py-3 gap-4">
6
6
  <div class="flex items-center gap-2 min-w-0">
7
7
  <span class="text-sm tabular-nums ${l?"text-oai-black dark:text-white":"text-oai-gray-500 dark:text-oai-gray-400"}">${o}</span>
8
8
  ${l?`<span class="inline-flex items-center rounded-full bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-300 px-1.5 py-0.5 text-[10px] font-medium">${v(e.histCurrent)}</span>`:""}
@@ -12,4 +12,4 @@ import{r as ce,s as t,u as n}from"./main-DdKVCJWa.js";const Ge=typeof window<"u"
12
12
  ${B(s.ip)}
13
13
  ${s.geo?`<span class="text-xs text-oai-gray-500 dark:text-oai-gray-400 font-normal truncate">${v(s.geo)}</span>`:""}
14
14
  </div>
15
- </li>`}).join("")}</ul>`}L.__clearIPHistory=()=>{localStorage.removeItem(le),ee()};async function He(){const[,a,i]=await Promise.allSettled([Le(),$e(),Ae()]);if(ae)return;const s=a.status==="fulfilled"?a.value:null,u=i.status==="fulfilled"?i.value:null,p=[];p.push(Ne("ipAddrCN","ipGeoCN",s?.ip,"cn")),p.push((async()=>{const o=b("ipAddr"),l=b("ipGeo");if(!w.ip){o&&(o.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),l&&(l.textContent="");return}Z(w.ip)&&se(),o&&(o.innerHTML=B(w.ip));try{const h=await fetch(`${$}/api/geoip/${w.ip}`,{signal:AbortSignal.timeout(5e3)});if(h.ok){const r=await h.json(),m=(r.country_code||"").toLowerCase();w.ippure={ip:w.ip,country:r.country,countryCode:(r.country_code||"").toUpperCase(),region:r.region,city:r.city},w.cfGeo=[r.country,r.region,r.city,r.isp].filter(Boolean).join(" · "),o&&(o.innerHTML=`${W(m)} ${B(w.ip)}`),Q("ipGeo",w.cfGeo)}}catch{}})()),p.push((async()=>{const o=u?.ip,l=b("ipAddrClaude"),h=b("ipGeoClaude");if(!o){l&&(l.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),h&&(h.textContent="");return}Z(o)&&se(),l&&(l.innerHTML=`${W(u.loc||"")} ${B(o)}`);const[r,m]=await Promise.allSettled([fetch(`${$}/api/iprisk/${o}`,{signal:AbortSignal.timeout(1e4)}),fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)})]);let C=!1;if(m.status==="fulfilled"&&m.value.ok)try{const c=await m.value.json();if(c.country){w.claudeGeo={country:c.country,region:c.region,city:c.city,isp:c.isp,country_code:c.country_code};const H=[c.country,c.region,c.city,c.isp].filter(Boolean).join(" · ");l&&(l.innerHTML=`${W(c.country_code||u.loc||"")} ${B(o)}`),Q("ipGeoClaude",H),C=!0}}catch{}if(!C&&u.loc&&(l&&(l.innerHTML=`${W(u.loc)} ${B(o)}`),Q("ipGeoClaude",Be[u.loc]||u.loc.toUpperCase())),r.status==="fulfilled"&&r.value.ok){const c=await r.value.json();w.ipapis={is_datacenter:c.is_datacenter,is_vpn:c.is_vpn,is_proxy:c.is_proxy,is_tor:c.is_tor,is_crawler:c.is_crawler,is_abuser:c.is_abuser,is_mobile:c.is_mobile,company:{type:c.company_type,name:c.company_name},abuser_score:c.abuser_score,datacenter_name:c.datacenter_name},w.claudeRisk={ip:o,asn:c.asn,asOrganization:c.asOrganization,country:c.country,countryCode:c.countryCode,region:c.region,city:c.city,isResidential:c.isResidential,isBroadcast:c.isBroadcast,trust_score:c.trust_score,timezone:c.timezone}}})()),await Promise.allSettled(p),!ae&&(je(),Promise.allSettled([Ee(),Me(),me()]),Ie(),Re())}return He(),()=>{ae=!0,he.disconnect(),delete L.__setMaskOn,delete L.__clearIPHistory,delete L.__detectClaudeAvail}},[]);const N=L=>{_(L),d.current?.__setMaskOn?.(L)},O=()=>d.current?.__clearIPHistory?.(),J=()=>d.current?.__detectClaudeAvail?.(),P={__html:""};return n.jsx("div",{ref:d,className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:n.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:n.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[n.jsxs("div",{className:"flex items-start justify-between gap-4 mb-8",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:t("ipcheck.page.title")}),n.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base max-w-2xl",children:t("ipcheck.page.subtitle")})]}),n.jsxs("label",{className:"shrink-0 inline-flex items-center gap-2 cursor-pointer select-none",children:[n.jsx("span",{className:"text-xs text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.mask.toggle")}),n.jsxs("span",{className:"relative inline-block w-9 h-5",children:[n.jsx("input",{type:"checkbox",checked:k,onChange:L=>N(L.target.checked),className:"peer sr-only"}),n.jsx("span",{className:"absolute inset-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 peer-checked:bg-oai-brand-500 transition-colors"}),n.jsx("span",{className:"absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-white shadow-sm transition-transform peer-checked:translate-x-4"})]})]})]}),n.jsx("div",{id:"ipv6Warn",className:"hidden mb-4 rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-500/30 dark:bg-amber-500/10 px-4 py-3 text-sm text-amber-800 dark:text-amber-200",children:t("ipcheck.ipv6.warn")}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[n.jsx(de,{id:"CN",label:t("ipcheck.ip.cn"),icon:null}),n.jsx(de,{id:"",label:t("ipcheck.ip.cloudflare"),icon:n.jsx("img",{src:`${$}/favicons/cloudflare.webp`,alt:"",className:"h-4 w-4"})}),n.jsx(de,{id:"Claude",label:t("ipcheck.ip.claude"),icon:n.jsx("img",{src:`${$}/favicons/claude.webp`,alt:"",className:"h-4 w-4"}),statusDot:!0})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:t("ipcheck.trust.title"),subtitle:t("ipcheck.trust.subtitle"),children:n.jsxs("div",{className:"px-1 py-2",children:[n.jsx("div",{className:"flex items-baseline justify-between mb-2 gap-3",children:n.jsx("div",{id:"gaugeScore",className:"text-3xl font-semibold tabular-nums leading-none flex items-center gap-2",dangerouslySetInnerHTML:P})}),n.jsx("div",{id:"gaugeText",className:"text-xs text-oai-gray-500 dark:text-oai-gray-400 mb-4 min-h-[1rem]"}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"h-1.5 rounded-full",style:{background:"linear-gradient(90deg, #ef4444 0%, #f59e0b 50%, #10b981 100%)"}}),n.jsx("span",{id:"gaugePointer",className:"absolute -top-1 h-3.5 w-[3px] rounded-sm bg-oai-black dark:bg-white shadow-[0_0_0_1px_rgba(255,255,255,0.6)] dark:shadow-[0_0_0_1px_rgba(0,0,0,0.6)] -translate-x-1/2 transition-[left] duration-700 ease-out",style:{left:"0%"}}),n.jsxs("div",{className:"mt-2 flex justify-between text-[10px] uppercase tracking-wider text-oai-gray-400 dark:text-oai-gray-500 font-medium",children:[n.jsx("span",{children:t("ipcheck.trust.gauge.low")}),n.jsx("span",{children:"25"}),n.jsx("span",{children:"50"}),n.jsx("span",{children:"75"}),n.jsx("span",{children:t("ipcheck.trust.gauge.high")})]})]}),n.jsx("div",{id:"regionWarn",className:"hidden mt-4 rounded-lg border border-red-200 bg-red-50 dark:border-red-500/30 dark:bg-red-500/10 px-3 py-2 text-xs text-red-800 dark:text-red-300"}),n.jsxs("div",{id:"claudeRegionSupportRow",className:"hidden mt-4 pt-4 border-t border-oai-gray-100 dark:border-oai-gray-800 flex items-center justify-between",children:[n.jsx("span",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.trust.region_support")}),n.jsx("span",{id:"claudeRegionSupport",className:"text-sm font-medium text-oai-black dark:text-white",dangerouslySetInnerHTML:P})]})]})}),n.jsx(V,{title:t("ipcheck.props.title"),children:n.jsx("div",{id:"propsContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.security.title"),children:n.jsx("div",{id:"securityContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:n.jsxs("span",{className:"flex items-center gap-1.5",children:[t("ipcheck.avail.title"),n.jsx(Ze,{text:t("ipcheck.avail.tooltip")})]}),action:n.jsx(Ce,{label:t("ipcheck.avail.refresh"),onClick:J}),children:n.jsx("div",{id:"claudeAvailContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.dns.title"),children:n.jsx("div",{id:"dnsLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.udp.title"),children:n.jsx("div",{id:"udpLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsx(V,{title:t("ipcheck.device.title"),children:n.jsx("div",{id:"deviceContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.history.title"),subtitle:t("ipcheck.history.subtitle"),action:n.jsx(Ce,{label:t("ipcheck.history.clear"),onClick:O}),children:n.jsx("div",{id:"ipHistoryContent",dangerouslySetInnerHTML:P})})]})]})})})}function V({title:d,subtitle:k,action:_,children:N,className:O=""}){return n.jsxs("section",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6 ${O}`,children:[n.jsxs("div",{className:"flex items-start justify-between gap-3 mb-4",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h2",{className:"text-[15px] font-semibold text-oai-black dark:text-white",children:d}),k?n.jsx("p",{className:"mt-0.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:k}):null]}),_]}),N]})}function Ce({label:d,onClick:k}){return n.jsx("button",{type:"button",onClick:k,className:"shrink-0 inline-flex h-7 items-center px-2.5 rounded-md text-xs font-medium text-oai-gray-600 dark:text-oai-gray-300 border border-oai-gray-200 dark:border-oai-gray-700 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:d})}function Ze({text:d}){return n.jsxs("span",{className:"relative inline-flex items-center group",children:[n.jsx("svg",{viewBox:"0 0 16 16",className:"h-3.5 w-3.5 text-oai-gray-400 dark:text-oai-gray-500",fill:"currentColor","aria-hidden":!0,children:n.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zM7.25 6.75a.75.75 0 0 1 1.5 0V11a.75.75 0 0 1-1.5 0V6.75zM8 4a.85.85 0 1 1 0 1.7A.85.85 0 0 1 8 4z"})}),n.jsx("span",{className:"pointer-events-none absolute left-1/2 top-full z-10 mt-1.5 -translate-x-1/2 w-56 rounded-md bg-oai-gray-900 dark:bg-oai-gray-800 px-2.5 py-2 text-[11px] font-normal text-white opacity-0 transition-opacity group-hover:opacity-100 leading-relaxed shadow-lg",children:d})]})}function de({id:d,label:k,icon:_,statusDot:N}){const O=`ipAddr${d}`,J=`ipGeo${d}`;return n.jsxs("article",{id:`ipHero${d}`,className:"rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] uppercase tracking-wider font-medium text-oai-gray-500 dark:text-oai-gray-400 mb-2",children:[_,n.jsx("span",{children:k}),N?n.jsxs("span",{id:`statusDot${d}`,className:"relative inline-flex h-2 w-2 ml-1.5","aria-hidden":!0,children:[n.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75"}),n.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"})]}):null]}),n.jsx("div",{id:O,className:"text-xl sm:text-2xl font-semibold tabular-nums text-oai-black dark:text-white flex items-center gap-2 min-h-[2rem]",dangerouslySetInnerHTML:{__html:""}}),n.jsx("div",{id:J,className:"mt-1 text-xs text-oai-gray-500 dark:text-oai-gray-400 truncate min-h-[1rem]"})]})}export{qe as default};
15
+ </li>`}).join("")}</ul>`}A.__clearIPHistory=()=>{localStorage.removeItem(le),ee()};async function He(){const[,a,i]=await Promise.allSettled([Ae(),$e(),Le()]);if(ae)return;const s=a.status==="fulfilled"?a.value:null,u=i.status==="fulfilled"?i.value:null,p=[];p.push(Ne("ipAddrCN","ipGeoCN",s?.ip,"cn")),p.push((async()=>{const o=b("ipAddr"),l=b("ipGeo");if(!w.ip){o&&(o.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),l&&(l.textContent="");return}Z(w.ip)&&se(),o&&(o.innerHTML=B(w.ip));try{const h=await fetch(`${$}/api/geoip/${w.ip}`,{signal:AbortSignal.timeout(5e3)});if(h.ok){const r=await h.json(),m=(r.country_code||"").toLowerCase();w.ippure={ip:w.ip,country:r.country,countryCode:(r.country_code||"").toUpperCase(),region:r.region,city:r.city},w.cfGeo=[r.country,r.region,r.city,r.isp].filter(Boolean).join(" · "),o&&(o.innerHTML=`${W(m)} ${B(w.ip)}`),Q("ipGeo",w.cfGeo)}}catch{}})()),p.push((async()=>{const o=u?.ip,l=b("ipAddrClaude"),h=b("ipGeoClaude");if(!o){l&&(l.innerHTML=`<span class="text-oai-gray-400 dark:text-oai-gray-500">${e.failed}</span>`),h&&(h.textContent="");return}Z(o)&&se(),l&&(l.innerHTML=`${W(u.loc||"")} ${B(o)}`);const[r,m]=await Promise.allSettled([fetch(`${$}/api/iprisk/${o}`,{signal:AbortSignal.timeout(1e4)}),fetch(`${$}/api/geoip/${o}`,{signal:AbortSignal.timeout(5e3)})]);let C=!1;if(m.status==="fulfilled"&&m.value.ok)try{const c=await m.value.json();if(c.country){w.claudeGeo={country:c.country,region:c.region,city:c.city,isp:c.isp,country_code:c.country_code};const H=[c.country,c.region,c.city,c.isp].filter(Boolean).join(" · ");l&&(l.innerHTML=`${W(c.country_code||u.loc||"")} ${B(o)}`),Q("ipGeoClaude",H),C=!0}}catch{}if(!C&&u.loc&&(l&&(l.innerHTML=`${W(u.loc)} ${B(o)}`),Q("ipGeoClaude",Be[u.loc]||u.loc.toUpperCase())),r.status==="fulfilled"&&r.value.ok){const c=await r.value.json();w.ipapis={is_datacenter:c.is_datacenter,is_vpn:c.is_vpn,is_proxy:c.is_proxy,is_tor:c.is_tor,is_crawler:c.is_crawler,is_abuser:c.is_abuser,is_mobile:c.is_mobile,company:{type:c.company_type,name:c.company_name},abuser_score:c.abuser_score,datacenter_name:c.datacenter_name},w.claudeRisk={ip:o,asn:c.asn,asOrganization:c.asOrganization,country:c.country,countryCode:c.countryCode,region:c.region,city:c.city,isResidential:c.isResidential,isBroadcast:c.isBroadcast,trust_score:c.trust_score,timezone:c.timezone}}})()),await Promise.allSettled(p),!ae&&(je(),Promise.allSettled([Ee(),Me(),me()]),Ie(),Re())}return He(),()=>{ae=!0,he.disconnect(),delete A.__setMaskOn,delete A.__clearIPHistory,delete A.__detectClaudeAvail}},[]);const N=A=>{_(A),d.current?.__setMaskOn?.(A)},O=()=>d.current?.__clearIPHistory?.(),J=()=>d.current?.__detectClaudeAvail?.(),P={__html:""};return n.jsx("div",{ref:d,className:"flex flex-col flex-1 text-oai-black dark:text-oai-white font-oai antialiased",children:n.jsx("main",{className:"flex-1 pt-8 sm:pt-10 pb-12 sm:pb-16",children:n.jsxs("div",{className:"mx-auto max-w-6xl px-4 sm:px-6",children:[n.jsxs("div",{className:"flex items-start justify-between gap-4 mb-8",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h1",{className:"text-3xl sm:text-4xl font-semibold tracking-tight text-oai-black dark:text-white mb-3",children:t("ipcheck.page.title")}),n.jsx("p",{className:"text-oai-gray-500 dark:text-oai-gray-400 text-sm sm:text-base max-w-2xl",children:t("ipcheck.page.subtitle")})]}),n.jsxs("label",{className:"shrink-0 inline-flex items-center gap-2 cursor-pointer select-none",children:[n.jsx("span",{className:"text-xs text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.mask.toggle")}),n.jsxs("span",{className:"relative inline-block w-9 h-5",children:[n.jsx("input",{type:"checkbox",checked:k,onChange:A=>N(A.target.checked),className:"peer sr-only"}),n.jsx("span",{className:"absolute inset-0 rounded-full bg-oai-gray-200 dark:bg-oai-gray-800 peer-checked:bg-oai-brand-500 transition-colors"}),n.jsx("span",{className:"absolute top-0.5 left-0.5 h-4 w-4 rounded-full bg-white shadow-sm transition-transform peer-checked:translate-x-4"})]})]})]}),n.jsx("div",{id:"ipv6Warn",className:"hidden mb-4 rounded-lg border border-amber-200 bg-amber-50 dark:border-amber-500/30 dark:bg-amber-500/10 px-4 py-3 text-sm text-amber-800 dark:text-amber-200",children:t("ipcheck.ipv6.warn")}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[n.jsx(de,{id:"CN",label:t("ipcheck.ip.cn"),icon:null}),n.jsx(de,{id:"",label:t("ipcheck.ip.cloudflare"),icon:n.jsx("img",{src:`${$}/favicons/cloudflare.webp`,alt:"",className:"h-4 w-4"})}),n.jsx(de,{id:"Claude",label:t("ipcheck.ip.claude"),icon:n.jsx("img",{src:`${$}/favicons/claude.webp`,alt:"",className:"h-4 w-4"}),statusDot:!0})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:t("ipcheck.trust.title"),subtitle:t("ipcheck.trust.subtitle"),children:n.jsxs("div",{className:"px-1 py-2",children:[n.jsx("div",{className:"flex items-baseline justify-between mb-2 gap-3",children:n.jsx("div",{id:"gaugeScore",className:"text-3xl font-semibold tabular-nums leading-none flex items-center gap-2",dangerouslySetInnerHTML:P})}),n.jsx("div",{id:"gaugeText",className:"text-xs text-oai-gray-500 dark:text-oai-gray-400 mb-4 min-h-[1rem]"}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{className:"h-1.5 rounded-full",style:{background:"linear-gradient(90deg, #ef4444 0%, #f59e0b 50%, #10b981 100%)"}}),n.jsx("span",{id:"gaugePointer",className:"absolute -top-1 h-3.5 w-[3px] rounded-sm bg-oai-black dark:bg-white shadow-[0_0_0_1px_rgba(255,255,255,0.6)] dark:shadow-[0_0_0_1px_rgba(0,0,0,0.6)] -translate-x-1/2 transition-[left] duration-700 ease-out",style:{left:"0%"}}),n.jsxs("div",{className:"mt-2 flex justify-between text-[10px] uppercase tracking-wider text-oai-gray-400 dark:text-oai-gray-500 font-medium",children:[n.jsx("span",{children:t("ipcheck.trust.gauge.low")}),n.jsx("span",{children:"25"}),n.jsx("span",{children:"50"}),n.jsx("span",{children:"75"}),n.jsx("span",{children:t("ipcheck.trust.gauge.high")})]})]}),n.jsx("div",{id:"regionWarn",className:"hidden mt-4 rounded-lg border border-red-200 bg-red-50 dark:border-red-500/30 dark:bg-red-500/10 px-3 py-2 text-xs text-red-800 dark:text-red-300"}),n.jsxs("div",{id:"claudeRegionSupportRow",className:"hidden mt-4 pt-4 border-t border-oai-gray-100 dark:border-oai-gray-800 flex items-center justify-between",children:[n.jsx("span",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-400",children:t("ipcheck.trust.region_support")}),n.jsx("span",{id:"claudeRegionSupport",className:"text-sm font-medium text-oai-black dark:text-white",dangerouslySetInnerHTML:P})]})]})}),n.jsx(V,{title:t("ipcheck.props.title"),children:n.jsx("div",{id:"propsContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.security.title"),children:n.jsx("div",{id:"securityContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[n.jsx(V,{title:n.jsxs("span",{className:"flex items-center gap-1.5",children:[t("ipcheck.avail.title"),n.jsx(Ze,{text:t("ipcheck.avail.tooltip")})]}),action:n.jsx(Ce,{label:t("ipcheck.avail.refresh"),onClick:J}),children:n.jsx("div",{id:"claudeAvailContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.dns.title"),children:n.jsx("div",{id:"dnsLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.udp.title"),children:n.jsx("div",{id:"udpLeakContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})})]}),n.jsx(V,{title:t("ipcheck.device.title"),children:n.jsx("div",{id:"deviceContent",className:"divide-y divide-oai-gray-100 dark:divide-oai-gray-800",dangerouslySetInnerHTML:P})}),n.jsx(V,{title:t("ipcheck.history.title"),subtitle:t("ipcheck.history.subtitle"),action:n.jsx(Ce,{label:t("ipcheck.history.clear"),onClick:O}),children:n.jsx("div",{id:"ipHistoryContent",dangerouslySetInnerHTML:P})})]})]})})})}function V({title:d,subtitle:k,action:_,children:N,className:O=""}){return n.jsxs("section",{className:`rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6 ${O}`,children:[n.jsxs("div",{className:"flex items-start justify-between gap-3 mb-4",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h2",{className:"text-[15px] font-semibold text-oai-black dark:text-white",children:d}),k?n.jsx("p",{className:"mt-0.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:k}):null]}),_]}),N]})}function Ce({label:d,onClick:k}){return n.jsx("button",{type:"button",onClick:k,className:"shrink-0 inline-flex h-7 items-center px-2.5 rounded-md text-xs font-medium text-oai-gray-600 dark:text-oai-gray-300 border border-oai-gray-200 dark:border-oai-gray-700 hover:bg-oai-gray-50 dark:hover:bg-oai-gray-800 hover:text-oai-black dark:hover:text-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand-500",children:d})}function Ze({text:d}){return n.jsxs("span",{className:"relative inline-flex items-center group",children:[n.jsx("svg",{viewBox:"0 0 16 16",className:"h-3.5 w-3.5 text-oai-gray-400 dark:text-oai-gray-500",fill:"currentColor","aria-hidden":!0,children:n.jsx("path",{d:"M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zM7.25 6.75a.75.75 0 0 1 1.5 0V11a.75.75 0 0 1-1.5 0V6.75zM8 4a.85.85 0 1 1 0 1.7A.85.85 0 0 1 8 4z"})}),n.jsx("span",{className:"pointer-events-none absolute left-1/2 top-full z-10 mt-1.5 -translate-x-1/2 w-56 rounded-md bg-oai-gray-900 dark:bg-oai-gray-800 px-2.5 py-2 text-[11px] font-normal text-white opacity-0 transition-opacity group-hover:opacity-100 leading-relaxed shadow-lg",children:d})]})}function de({id:d,label:k,icon:_,statusDot:N}){const O=`ipAddr${d}`,J=`ipGeo${d}`;return n.jsxs("article",{id:`ipHero${d}`,className:"rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 p-5 sm:p-6",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] uppercase tracking-wider font-medium text-oai-gray-500 dark:text-oai-gray-400 mb-2",children:[_,n.jsx("span",{children:k}),N?n.jsxs("span",{id:`statusDot${d}`,className:"relative inline-flex h-2 w-2 ml-1.5","aria-hidden":!0,children:[n.jsx("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-oai-gray-300 dark:bg-oai-gray-600 opacity-75"}),n.jsx("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-oai-gray-400 dark:bg-oai-gray-500"})]}):null]}),n.jsx("div",{id:O,className:"text-xl sm:text-2xl font-semibold tabular-nums text-oai-black dark:text-white flex items-center gap-2 min-h-[2rem]",dangerouslySetInnerHTML:{__html:""}}),n.jsx("div",{id:J,className:"mt-1 text-xs text-oai-gray-500 dark:text-oai-gray-400 truncate min-h-[1rem]"})]})}export{qe as default};