PageSourceSearch

https://terminalrium.vercel.app/_next/static/chunks/381.415dffe14d58679f.js

js terminalrium.vercel.app collected 2026-10-03 07:51:50 UTC 20,351 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[381],{5381:function(e,t,s){s.r(t),s.d(t,{AccessoriesPanel:function(){return M}});var a=s(7437),l=s(2265),n=s(2028);let i={genesis:2e3,mystic:1e3,origin:400,meo:200,xmas:200,shiny:200,japanese:60,nightmare:40,summer:20,normal:5},r={genesis:"Genesis",mystic:"Mystic",origin:"Origin",meo:"MEO",xmas:"Xmas",shiny:"Shiny",japanese:"Japanese",nightmare:"Nightmare",summer:"Summer",normal:"Normal"},o=["Air","Cheek","Hip","Neck","Ground"],c=["Mystic","Epic","Rare","Common"];function d(e){let t=c.indexOf(null!=e?e:"");return -1===t?c.length:t}function u(e){var t,s,a,l,n,i,r;let d=null!==(t=e.attributes)&&void 0!==t?t:{},u=d.collection;return{tokenId:e.tokenId,name:null!==(s=e.name)&&void 0!==s?s:"Accessory #".concat(e.tokenId),imageUrl:null!==(a=e.imageUrl)&&void 0!==a?a:"",slot:(i=d.placement,o.includes(i)?i:null),rarity:(r=d.rarity,c.includes(r)?r:null),collections:Array.isArray(u)?u.filter(e=>"string"==typeof e):[],owned:null!==(l=e.total)&&void 0!==l?l:0,usable:null!==(n=e.usableAmount)&&void 0!==n?n:0}}let m={WetDog:["Hip"]};var x=s(4371),p=s(1696),h=s(4609),f=s(7732),g=s(4350);let b="text-[11px] font-semibold uppercase tracking-[0.12em] text-faint";async function y(e,t,s){let a=Array(e.length),l=0;async function n(){for(let t=l++;t<e.length;t=l++)a[t]=await s(e[t])}return await Promise.all(Array.from({length:Math.min(t,e.length)},()=>n())),a}async function v(e,t,s,a){let l=async s=>{var l,i,r;let o=await (0,n.P)(e,{owner:t,from:s,size:100});if(null===(l=o.errors)||void 0===l?void 0:l.length)throw Error(o.errors[0].message);let c=a(o.data);return{total:null!==(i=null==c?void 0:c.total)&&void 0!==i?i:0,results:null!==(r=null==c?void 0:c.results)&&void 0!==r?r:[]}},i=await l(0),r=[...i.results],o=Math.min(i.total,s),c=[];for(let e=100;e<o;e+=100)c.push(e);for(let e of(await y(c,6,l)))r.push(...e.results);return{rows:r,total:i.total}}async function w(){let e=new Map;for(let a=0;a<5e3;a+=200){var t,s;let l=await (0,p.K)("me/inventory/axies?limit=".concat(200,"&offset=").concat(a));if(l.error||!l.data)break;let n=null!==(t=l.data.axies)&&void 0!==t?t:[];for(let t of n){let s=Number(t.axie_id);Number.isFinite(s)&&e.set(s,{base:t.base_atia_flame,effective:(0,h.WZ)(t)})}if(n.length<200||a+200>=(null!==(s=l.data.total)&&void 0!==s?s:0))break}return e}async function j(e){let[t,s,a]=await Promise.all([v("OwnerAccessories",e,400,e=>null==e?void 0:e.erc1155Tokens),v("OwnerAxieCollections",e,5e3,e=>null==e?void 0:e.axies),w()]),l=t.rows,o=s.rows,c=l.map(u),d=o.filter(e=>null==e.stage||e.stage>=4),m=new Map,x=c.filter(e=>e.owned>e.usable).map(e=>e.tokenId);if(x.length>0&&d.length>0){let t=[];for(let e=0;e<x.length;e+=5)t.push(x.slice(e,e+5));for(let s of(await y(t,6,t=>(0,n.P)("EquippedAxies",{owner:e,tokenIds:t})))){var p,h,f,g,b,j;if(null===(p=s.errors)||void 0===p?void 0:p.length)throw Error(s.errors[0].message);for(let e of null!==(f=null===(h=s.data)||void 0===h?void 0:h.equippedAxies)&&void 0!==f?f:[]){let t=Number(e.id),s=null!==(g=m.get(t))&&void 0!==g?g:new Set;for(let t of null!==(b=e.equipment)&&void 0!==b?b:[]){let e=null===(j=t.attributes)||void 0===j?void 0:j.placement;"string"==typeof e&&s.add(e)}m.set(t,s)}}}return{inventory:c,axieTotal:s.total,axies:d.map(e=>{var t,s,l,n,o,c;let d=function(e){var t,s,a,l,n,r;if(!e)return"normal";let o=(null!==(t=e.title)&&void 0!==t?t:"").toLowerCase(),c=(null!==(s=e.region)&&void 0!==s?s:"").toLowerCase(),d=(null!==(a=e.parts)&&void 0!==a?a:[]).map(e=>{var t;return(null!==(t=null==e?void 0:e.specialGenes)&&void 0!==t?t:"").toLowerCase()}),u=e=>d.some(t=>t&&e(t)),m=["normal"];return(o.includes("agamo")||o.includes("genesis"))&&m.push("genesis"),((null!==(l=e.numMystic)&&void 0!==l?l:0)>0||e.hasMysticSuit||u(e=>"mystic"===e))&&m.push("mystic"),o.includes("origin")&&m.push("origin"),o.includes("meo")&&m.push("meo"),((null!==(n=e.numXmas)&&void 0!==n?n:0)>0||o.includes("xmas")||o.includes("christmas")||u(e=>e.startsWith("xmas")))&&m.push("xmas"),u(e=>e.includes("shiny"))&&m.push("shiny"),((null!==(r=e.numJapan)&&void 0!==r?r:0)>
10||"japan"===c||u(e=>"japan"===e))&&m.push("japanese"),(o.includes("nightmare")||u(e=>"nightmare"===e))&&m.push("nightmare"),(o.includes("summer")||u(e=>e.startsWith("summer")))&&m.push("summer"),m.reduce((e,t)=>i[t]>i[e]?t:e)}(e),u=Number(e.id),x=a.get(u),p=null!==(t=null==x?void 0:x.base)&&void 0!==t?t:i[d];return{id:u,name:null!==(s=e.name)&&void 0!==s?s:"Axie #".concat(e.id),image:(c=e.image)?c.replace("https://assets.axieinfinity.com/","https://axiecdn.axieinfinity.com/"):"",power:p,effectiveFlame:null!==(l=null==x?void 0:x.effective)&&void 0!==l?l:p,collection:r[d],bodyShape:null!==(n=e.bodyShape)&&void 0!==n?n:null,filledSlots:Array.from(null!==(o=m.get(u))&&void 0!==o?o:[])}})}}let N=new Map(Object.entries(m).map(e=>{let[t,s]=e;return[t,new Set(s)]})),k=new Map;function S(e){switch(e){case"Mystic":return"border-verdigris bg-verdigris-wash text-verdigris-dark";case"Epic":return"border-bronze-line bg-bronze-wash text-bronze-dark";case"Rare":return"border-hairline bg-slatechip text-slatechip-text";default:return"border-hairline bg-limestone text-muted"}}function q(e){let{rarity:t}=e;return(0,a.jsx)("span",{className:"inline-flex items-center rounded border px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.06em] ".concat(S(t)),children:null!=t?t:"—"})}function M(e){let{userAddress:t,onToast:s}=e,[n,i]=(0,l.useState)(!1),[r,c]=(0,l.useState)(null),[u,p]=(0,l.useState)([]),[h,y]=(0,l.useState)([]),[v,w]=(0,l.useState)(0),[M,C]=(0,l.useState)(!1),[I,A]=(0,l.useState)(null),[E,T]=(0,l.useState)([]),[O,L]=(0,l.useState)(0),[z,U]=(0,l.useState)(!1);(0,l.useEffect)(()=>{if(!z)return;let e=setTimeout(()=>U(!1),4e3);return()=>clearTimeout(e)},[z]);let P=(0,l.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return;let s=k.get(t),a=!e&&s&&Date.now()-s.at<9e4?s:void 0;a||(a={at:Date.now(),promise:j(t)},k.set(t,a)),i(!0),c(null);try{let e=await a.promise;p(e.inventory),y(e.axies),w(e.axieTotal)}catch(e){k.get(t)===a&&k.delete(t),c(e instanceof Error?e.message:"Failed to load accessories")}finally{i(!1)}},[t]);(0,l.useEffect)(()=>{P()},[P]);let _=(0,l.useMemo)(()=>(function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:m,a=[...e].sort((e,t)=>t.power-e.power||t.effectiveFlame-e.effectiveFlame||e.id-t.id),l=new Map;for(let e of a){let t=e.bodyShape&&s[e.bodyShape]||[];l.set(e.id,new Set(o.filter(s=>!e.filledSlots.includes(s)&&!t.includes(s))))}let n=t.filter(e=>e.usable>0&&null!=e.slot).sort((e,t)=>d(e.rarity)-d(t.rarity)||e.name.localeCompare(t.name)),i=new Map;for(let e of n){let t=e.slot,s=e.usable;for(let n of a){var r;if(0===s)break;let a=l.get(n.id);if(!(null==a?void 0:a.has(t)))continue;a.delete(t),s--;let o=null!==(r=i.get(n.id))&&void 0!==r?r:[];o.push({slot:t,tokenId:e.tokenId,name:e.name,rarity:e.rarity,imageUrl:e.imageUrl}),i.set(n.id,o)}}return a.filter(e=>i.has(e.id)).map(e=>({axie:e,items:i.get(e.id)}))})(h,u,function(){let e={};for(let[t,s]of N)e[t]=Array.from(s);return e}()),[h,u,O]),F=_.reduce((e,t)=>e+t.items.length,0),R=(0,l.useMemo)(()=>{let e=0,t=0;for(let s of u)e+=s.owned,t+=s.usable;return{owned:e,usable:t,equipped:e-t,kinds:u.length}},[u]),B=(0,l.useMemo)(()=>[...u].sort((e,t)=>d(e.rarity)-d(t.rarity)||e.name.localeCompare(t.name)),[u]),W=(0,l.useCallback)(async()=>{if(!M&&0!==_.length){C(!0),T([]);try{let t=_.map(e=>({axieId:e.axie.id,tokenIds:e.items.map(e=>e.tokenId)}
1)),a=[];for(let s=0;s<t.length;s+=10){A("Equipping… ".concat(Math.min(s+10,t.length),"/").concat(t.length," axies"));let l=await fetch("/api/equip",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({equips:t.slice(s,s+10)})}),n=await l.json().catch(()=>null);if(!l.ok||!(null==n?void 0:n.results)){var e;throw Error(null!==(e=null==n?void 0:n.error)&&void 0!==e?e:"Equip request failed (HTTP ".concat(l.status,")"))}a.push(...n.results)}let l=a.filter(e=>!e.ok),n=a.length-l.length;(0,x.L)("accessories_bulk_equip",{axies:n,failed:l.length});let i=!1,r=new Map(_.map(e=>[e.axie.id,e.axie.name])),c=l.map(e=>{var t,s,a;let l=function(e){let t=/Invalid body\/equipment rule:\s*([\w-]+)\/([\w-]+)/i.exec(null!=e?e:"");if(!t)return null;let s=o.find(e=>e.toLowerCase()===t[2].toLowerCase());return s?{bodyShape:t[1],slot:s}:null}(e.error);if(l){let e=null!==(t=N.get(l.bodyShape))&&void 0!==t?t:new Set;e.has(l.slot)||(e.add(l.slot),N.set(l.bodyShape,e),i=!0)}return{axieId:e.axieId,axieName:null!==(s=r.get(e.axieId))&&void 0!==s?s:"Axie #".concat(e.axieId),message:l?"".concat(l.bodyShape," bodies can't wear ").concat(l.slot," accessories — none of this axie's items were equipped. The plan now routes ").concat(l.slot," pieces to other axies."):null!==(a=e.error)&&void 0!==a?a:"Unknown upstream error"}});T(c),i&&L(e=>e+1),0===l.length?s({ok:!0,message:"Equipped ".concat(F," accessories on ").concat(n," axies.")}):s({ok:n>0,message:"Equipped on ".concat(n," axies; ").concat(l.length," failed — details below the Bulk equip panel.")})}catch(e){s({ok:!1,message:e instanceof Error?e.message:"Bulk equip failed"})}finally{A(null),C(!1),P(!0)}}},[M,_,F,s,P]),H=(0,l.useMemo)(()=>h.filter(e=>e.filledSlots.length>0),[h]),J=H.reduce((e,t)=>e+t.filledSlots.length,0),D=(0,l.useCallback)(async()=>{if(!M&&0!==H.length){C(!0),U(!1),T([]);try{let t=H.map(e=>({axieId:e.id,slots:e.filledSlots})),a=[];for(let s=0;s<t.length;s+=10){A("Unequipping… ".concat(Math.min(s+10,t.length),"/").concat(t.length," axies"));let l=await fetch("/api/equip",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({unequips:t.slice(s,s+10)})}),n=await l.json().catch(()=>null);if(!l.ok||!(null==n?void 0:n.results)){var e;throw Error(null!==(e=null==n?void 0:n.error)&&void 0!==e?e:"Unequip request failed (HTTP ".concat(l.status,")"))}a.push(...n.results)}let l=a.filter(e=>!e.ok),n=a.length-l.length;(0,x.L)("accessories_bulk_unequip",{axies:n,failed:l.length});let i=new Map(H.map(e=>[e.id,e.name]));T(l.map(e=>{var t,s;return{axieId:e.axieId,axieName:null!==(t=i.get(e.axieId))&&void 0!==t?t:"Axie #".concat(e.axieId),message:null!==(s=e.error)&&void 0!==s?s:"Unknown upstream error"}})),s(0===l.length?{ok:!0,message:"Unequipped ".concat(J," accessories from ").concat(n," axies.")}:{ok:n>0,message:"Unequipped from ".concat(n," axies; ").concat(l.length," failed — details below the Bulk equip panel.")})}catch(e){s({ok:!1,message:e instanceof Error?e.message:"Bulk unequip failed"})}finally{A(null),C(!1),P(!0)}}},[M,H,J,s,P]);if(!t)return(0,a.jsx)("div",{className:"rounded-2xl border border-hairline bg-surface p-8 text-center text-sm text-muted",children:"Sign in with your wallet to see your accessories."});let X=n&&0===u.length&&0===h.length,G=e=>X?(0,a.jsx)(g.Od,{className:"my-1 h-5 w-14"}):(0,a.jsx)("span",{className:"font-display text-xl font-bold tabular text-ink",children:e});return(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsxs)("div",{className:"grid gap-3 sm:grid-cols-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 rounded-xl border border-hairline bg-surface px-4 py-3",children:[(0,a.jsx)("span",{className:b,children:"Accessories owned"}),G(R.owned),X?(0,a.jsx)(g.Od,{className:"h-3 w-24"}):(0,a.jsxs)("span",{className:"text-xs text-muted",children:[R.kinds," distinct pieces"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 rounded-xl border border-hairline bg-surface px-4 py-3",children:[(0,a.jsx)("span",{className:b,children:"Equipped"}),G(R.equipped),(0,a.jsx)("span",{className:"text-xs text-muted",children:"worn by your axies"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 rounded-xl border border-hairline bg-surface px-4 py-3",children:[(0,a.jsx)("span",{className:b,children:"Available"}),G(R.usable),(0,a.jsx)("span",{className:"text-xs text-muted",children:"unequipped, ready to assign"})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 rounded-xl border border-hairline bg-surface px-4 py-3",children:[(0,a.jsx)("span",{className:b,children:"Axies"}),G(h.length),(0,a.jsx)("span",{className:"text-xs text-muted",children:"adults that can wear accessories"})]})]}),r&&(0,a.jsxs)("p",{className:"text-sm text-danger",children:[r," ",(0,a.jsx)("button",{onClick:()=>void P(!0),className:"font-medium underline",children:"Retry"})]}),v>5e3&&(0,a.jsxs)("div",{className:"rounded-xl border border-bronze-line bg-bronze-wash px-4 py-3 text-sm text-bronze-dark",children:["This wallet holds ",(0,a.jsx)("span",{className:"font-semibold tabular",children:v.toLocaleStr
1ing()})," ","axies — the bulk planner covers the first"," ",(0,a.jsx)("span",{className:"font-semibold tabular",children:5e3.toLocaleString()})," (lowest IDs). Axies beyond that aren’t considered for equipping."]}),(0,a.jsxs)("section",{className:"flex flex-col gap-4 rounded-2xl border border-hairline bg-surface p-5",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,a.jsx)("h2",{className:"font-display text-lg font-semibold text-ink",children:"Bulk equip"}),(0,a.jsx)("p",{className:"text-sm text-muted",children:"Rarest accessories go to your strongest axies — ranked by base flame (what the accessory bonus scales with), ties broken by total flame including part bonuses. Only empty slots are filled — nothing already equipped is moved."})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>z?void D():U(!0),disabled:M||n||0===H.length,className:"rounded-[9px] border px-4 py-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50 ".concat(z?"border-danger bg-danger text-white":"border-hairline text-muted hover:bg-limestone hover:text-ink"),children:z?"Click again to strip ".concat(J," from ").concat(H.length," axies"):"Unequip all"}),(0,a.jsx)("button",{onClick:()=>void W(),disabled:M||n||0===F,className:"rounded-[9px] bg-verdigris px-4 py-2 text-sm font-semibold text-white hover:bg-verdigris-dark disabled:cursor-not-allowed disabled:opacity-50",children:M?null!=I?I:"Working…":"Equip ".concat(F," ").concat(1===F?"accessory":"accessories"," on ").concat(_.length," ").concat(1===_.length?"axie":"axies")})]})]}),E.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-1.5 rounded-xl border border-bronze-line bg-bronze-wash px-4 py-3",children:[(0,a.jsx)("span",{className:"text-[11px] font-semibold uppercase tracking-[0.12em] text-bronze-dark",children:1===E.length?"1 axie was skipped":"".concat(E.length," axies were skipped")}),(0,a.jsx)("ul",{className:"flex flex-col gap-1",children:E.map(e=>(0,a.jsxs)("li",{className:"text-sm text-ink-soft",children:[(0,a.jsxs)("span",{className:"font-medium text-ink",children:[e.axieName," ",(0,a.jsxs)("span",{className:"tabular text-muted",children:["#",e.axieId]})]})," ","— ",e.message]},e.axieId))})]}),n?(0,a.jsx)(g.X4,{rows:3,rowClassName:"h-12"}):0===F?(0,a.jsx)("p",{className:"text-sm text-muted",children:0===R.usable?0===R.owned?"No accessories in this wallet yet.":"Every accessory you own is already equipped.":"Nothing to place — your axies' matching slots are all full."}):(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full min-w-[560px] border-collapse text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"border-b border-hairline text-left",children:[(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 font-semibold"),children:"Axie"}),(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 font-semibold"),children:"Collection \xb7 Flame"}),(0,a.jsx)("th",{className:"".concat(b," py-2 font-semibold"),children:"Will receive"})]})}),(0,a.jsx)("tbody",{children:_.map(e=>{let{axie:t,items:s}=e;return(0,a.jsxs)("tr",{className:"border-b border-hairline last:border-0",children:[(0,a.jsx)("td",{className:"py-2.5 pr-3",children:(0,a.jsxs)("div",{className:"flex items-center gap-2.5",children:[t.image&&(0,a.jsx)("img",{src:t.image,alt:"",className:"h-9 w-12 shrink-0 object-contain",loading:"lazy"}),(0,a.jsxs)("div",{className:"flex min-w-0 flex-col",children:[(0,a.jsx)("span",{className:"truncate font-medium text-ink",children:t.name}),(0,a.jsxs)("span",{className:"text-xs tabular text-muted",children:["#",t.id]})]})]})}),(0,a.jsx)("td",{className:"py-2.5 pr-3",children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"rounded border border-hairline bg-limestone px-1.5 py-0.5 text-[11px] font-medium text-ink-soft",children:t.collection}),(0,a.jsxs)("span",{title:t.effectiveFlame>t.power?"Effective flame ".concat(Math.round(t.effectiveFlame).toLocaleStr
1ing()," — base ").concat(Math.round(t.power).toLocaleString()," + ").concat(Math.round(t.effectiveFlame-t.power).toLocaleString()," from evolved parts and any equipped accessories"):"Base flame ".concat(Math.round(t.power).toLocaleString()),className:"inline-flex items-center gap-1 tabular text-ink-soft",children:[(0,a.jsx)(f.R0,{className:"h-3 w-3 text-bronze"}),Math.round(t.effectiveFlame).toLocaleString()]})]})}),(0,a.jsx)("td",{className:"py-2.5",children:(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:s.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[11px] font-medium ".concat(S(e.rarity)),children:[(0,a.jsxs)("span",{className:"opacity-70",children:[e.slot,":"]})," ",e.name]},"".concat(e.slot,"-").concat(e.tokenId)))})})]},t.id)})})]})})]}),(0,a.jsxs)("section",{className:"flex flex-col gap-4 rounded-2xl border border-hairline bg-surface p-5",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,a.jsx)("h2",{className:"font-display text-lg font-semibold text-ink",children:"Inventory"}),(0,a.jsx)("p",{className:"text-sm text-muted",children:"Every accessory this wallet owns, rarest first."})]}),n?(0,a.jsx)(g.X4,{rows:5,rowClassName:"h-10"}):0===B.length?(0,a.jsx)("p",{className:"text-sm text-muted",children:"No accessories in this wallet yet."}):(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)("table",{className:"w-full min-w-[560px] border-collapse text-sm",children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:"border-b border-hairline text-left",children:[(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 font-semibold"),children:"Accessory"}),(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 font-semibold"),children:"Rarity"}),(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 font-semibold"),children:"Slot"}),(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 font-semibold"),children:"Collection"}),(0,a.jsx)("th",{className:"".concat(b," py-2 pr-3 text-right font-semibold"),children:"Owned"}),(0,a.jsx)("th",{className:"".concat(b," py-2 text-right font-semibold"),children:"Available"})]})}),(0,a.jsx)("tbody",{children:B.map(e=>{var t;return(0,a.jsxs)("tr",{className:"border-b border-hairline last:border-0",children:[(0,a.jsx)("td",{className:"py-2.5 pr-3",children:(0,a.jsxs)("div",{className:"flex items-center gap-2.5",children:[e.imageUrl&&(0,a.jsx)("img",{src:e.imageUrl,alt:"",className:"h-8 w-8 shrink-0 rounded object-contain",loading:"lazy"}),(0,a.jsx)("span",{className:"font-medium text-ink",children:e.name})]})}),(0,a.jsx)("td",{className:"py-2.5 pr-3",children:(0,a.jsx)(q,{rarity:e.rarity})}),(0,a.jsx)("td",{className:"py-2.5 pr-3 text-muted",children:null!==(t=e.slot)&&void 0!==t?t:"—"}),(0,a.jsx)("td",{className:"py-2.5 pr-3 text-muted",children:e.collections.length>0?e.collections.join(", "):"—"}),(0,a.jsx)("td",{className:"py-2.5 pr-3 text-right tabular text-ink",children:e.owned}),(0,a.jsx)("td",{className:"py-2.5 text-right tabular ".concat(e.usable>0?"font-semibold text-verdigris-dark":"text-muted"),children:e.usable})]},e.tokenId)})})]})})]})]})}},2028:function(e,t,s){s.d(t,{P:function(){return a}});async function a(e,t){let s=await fetch("/api/graphql",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({operationName:e,variables:t})}),a=await s.json().catch(()=>null);if(!s.ok){var l;return{errors:[{message:null!==(l=null==a?void 0:a.error)&&void 0!==l?l:"Request failed (HTTP ".concat(s.status,")")}]}}return null!=a?a:{}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.