1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,69952,e=>{"use strict";var t=e.i(71645),a=e.i(18566);e.s(["usePageParam",0,function(e="page",n,s){let l=(0,a.useSearchParams)(),r=(0,a.useRouter)(),i=(0,a.usePathname)(),o=l.get(e),c=o?Number(o)||1:n??1,[d,u]=(0,t.useState)(c);return(0,t.useEffect)(()=>{u(c)},[c]),[d,(0,t.useCallback)(t=>{u(t);let a=new URLSearchParams(l.toString());a.set(e,String(t));let n=a.toString();r.replace(`${i}${n?`?${n}`:""}`,{scroll:!1}),s?.(t)},[l,r,i,e,s])]}])},11549,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(57688),s=e.i(22016),l=e.i(82115);e.s(["MiddleBanner",0,function({banner:e,page:r,location:i}){return((0,a.useEffect)(()=>{if(!e)return;let t=window.setTimeout(()=>{(0,l.recordBannerView)(e.id,r,i).catch(()=>void 0)},2e3);return()=>window.clearTimeout(t)},[e,r,i]),e)?(0,t.jsx)(s.default,{href:e.linkUrl||"#",target:e.linkUrl?"_blank":void 0,className:"block w-full overflow-hidden","aria-label":e.title||"Open banner",onClick:()=>{(0,l.recordBannerClick)(e.id,r,i).catch(()=>void 0)},children:e.imageUrl?(0,t.jsx)(n.default,{src:e.imageUrl,alt:e.title||"",width:1920,height:150,loading:"eager",sizes:"(max-width: 768px) 100vw, 800px",style:{width:"100%",height:"auto",maxHeight:"150px",objectFit:"contain"}}):(0,t.jsx)("div",{className:"flex w-full items-center justify-center bg-neutral-700/50 py-10",children:(0,t.jsx)("span",{className:"text-sm text-white",children:e.title})})}):null}])},60678,e=>{"use strict";var t=e.i(71645);e.i(47167);var a=e.i(93803),n=e.i(19273);function s(e){return e}function l(e,t,l){if("object"!=typeof t||null===t)return;let r=e.getMutationCache(),i=e.getQueryCache(),o=l?.defaultOptions?.deserializeData??e.getDefaultOptions().hydrate?.deserializeData??s,c=t.mutations||[],d=t.queries||[];
1c.forEach(({state:t,...a})=>{r.build(e,{...e.getDefaultOptions().hydrate?.mutations,...l?.defaultOptions?.mutations,...a},t)}),d.forEach(({queryKey:t,state:s,queryHash:r,meta:c,promise:d,dehydratedAt:u})=>{let m=d?(0,a.tryResolveSync)(d):void 0,x=void 0===s.data?m?.data:s.data,h=void 0===x?x:o(x),p=i.get(r),f=p?.state.status==="pending",g=p?.state.fetchStatus==="fetching";if(p){let e=m&&void 0!==u&&u>p.state.dataUpdatedAt;if(s.dataUpdatedAt>p.state.dataUpdatedAt||e){let{fetchStatus:e,...t}=s;p.setState({...t,data:h})}}else p=i.build(e,{...e.getDefaultOptions().hydrate?.queries,...l?.defaultOptions?.queries,queryKey:t,queryHash:r,meta:c},{...s,data:h,fetchStatus:"idle",status:void 0!==h?"success":s.status});d&&!f&&!g&&(void 0===u||u>p.state.dataUpdatedAt)&&p.fetch(void 0,{initialPromise:Promise.resolve(d).then(o)}).catch(n.noop)})}var r=e.i(12598);e.s(["HydrationBoundary",0,({children:e,options:a={},state:n,queryClient:s})=>{let i=(0,r.useQueryClient)(s),o=t.useRef(a);t.useEffect(()=>{o.current=a});let c=t.useMemo(()=>{if(n){if("object"!=typeof n)return;let e=i.getQueryCache(),t=n.queries||[],a=[],s=[];for(let n of t){let t=e.get(n.queryHash);t?(n.state.dataUpdatedAt>t.state.dataUpdatedAt||n.promise&&"pending"!==t.state.status&&"fetching"!==t.state.fetchStatus&&void 0!==n.dehydratedAt&&n.dehydratedAt>t.state.dataUpdatedAt)&&s.push(n):a.push(n)}if(a.length>0&&l(i,{queries:a},o.current),s.length>0)return s}},[i,n]);return t.useEffect(()=>{c&&l(i,{queries:c},o.current)},[i,c]),e}],60678)},55436,e=>{"use strict";let t=(0,e.i(75254).default)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);e.s(["Search",0,t],55436)},82115,e=>{"use strict";e.i(61238);var t=e.i(14679);async function a(e){let a=`/api/banner/list?page=${encodeURIComponent(e)}`,n=t.proxyClient,{data:s}=await n.get((0,t.getProxyPath)(a)),l=s.data;if(null!==l&&"object"==typeof l&&!Array.isArray(l)){let e={};for(let t of Object.keys(l))e[t]=(l[t]??[]).map(e=>({id:e.id,imageUrl:e.imageUrl,linkUrl:e.linkUrl??e.href??null,title:e.title??"",description:e.description??null,tag:e.tag??null}));return e}return{}}async function n(e,a,n){let s=new URLSearchParams;a&&s.set("page",a),n&&s.set("location",n);let l=s.toString(),r=`/api/banner/${e}/view${l?`?${l}`:""}`,i=t.proxyClient;await i.post((0,t.getProxyPath)(r))}async function s(e,a,n){let s=new URLSearchParams;a&&s.set("page",a),n&&s.set("location",n);let l=s.toString(),r=`/api/banner/${e}/click${l?`?${l}`:""}`,i=t.proxyClient;await i.post((0,t.getProxyPath)(r))}e.s(["fetchBanners",0,a,"recordBannerClick",0,s,"recordBannerView",0,n])},64739,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(57688),s=e.i(22016),l=e.i(73375),r=e.i(63059),i=e.i(82115),o=e.i(49838);e.s(["BannerCarousel",0,function({banners:e,page:c,location:d,className:u}){let[m,x]=(0,a.useState)(0),[h,p]=(0,a.useState)([]),[f,g]=(0,a.useState)(!1),b=f?2:1,y=Math.max(e.length-b,0),v=100/b*m,j=(0,a.useMemo)(()=>e.slice(m,m+b),[e,m,b]);return((0,a.useEffect)(()=>{let e=window.matchMedia("(min-width: 768px)"),t=()=>g(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,a.useEffect)(()=>{x(e=>Math.min(e,y))},[y]),(0,a.useEffect)(()=>{if(y<=0)return;let e=window.setInterval(()=>{x(e=>e>=y?0:e+1)},3600);return()=>window.clearInterval(e)},[y]),(0,a.useEffect)(()=>{let e=j.map(e=>e.id).filter(e=>!h.includes(e));if(!e.length)return;let t=window.setTimeout(()=>{p(t=>[...t,...e]),e.forEach(e=>{(0,i.recordBannerView)(e,c,d).catch(()=>void 0)})},2e3);return()=>window.clearTimeout(t)},[h,j,c,d]),e.length)?(0,t.jsxs)("div",{className:(0,o.cn)("relative",u),children:[(0,t.jsx)("div",{className:"absolute inset-x-0 bottom-0 h-[102px] bg-black lg:h-[126px]"}),(0,t.jsxs)("div",{className:"relative px-0 md:px-5",children:[(0,t.jsxs)("div",{className:"relative mb-4 md:mt-4",children:[(0,t.jsx)("div",{className:"overflow-hidden",children:(0,t.jsx)("div",{className:"flex touch-pan-y transition-transform duration-500 ease-out",style:{transform:`translateX(-${v}%)`},children:e.map((e,a)=>(0,t.jsx)("div",{className:"min-w-0 shrink-0 basis-full pl-0 md:basis-1/2 md:pl-3",children:(0,t.jsx)(s.default,{href:e.linkUrl||"#",target:e.linkUrl?"_blank":void 0,onClick:()=>{(0,i.recordBannerClick)(e.id,c,d).catch(()=>void 0)},className:"block",children:(0,t.jsxs)("div",{className:(0,o.cn)("relative aspect-[2/1] overflow-hidden md:rounded-2xl",!e.imageUrl&&"bg-neutral-800"),children:[e.imageUrl?(0,t.jsx)(n.default,{src:e.imageUrl,alt:e.title||"banner",fill:!0,priority:0===m&&a<2,sizes:"(min-width: 768px) 50vw, 100vw",className:"object-cover object-center sm:object-contain sm:object-bottom"}):null,(0,t.jsxs)("div",{className:"absolute inset-x-0 bottom-0 flex h-18 flex-col justify-center bg-black/50 px-7 lg:h-24",children:[e.tag&&(0,t.jsx)("div",{className:(0,o.cn)("absolute -top-2 left-7 rounded px-2 py-1 text-xs font-normal text-white","EVENT"===e.tag?"bg-tertiary-600":"NFT"===e.tag?"bg-primary":"DEFI"===e.tag?"bg-emerald-600":"bg-primary"),children:e.tag}),(0,t.jsx)("p",{className:"line-clamp-1 text-lg font-bold text-white lg:text-xl",children:e.title}),e.description&&(0,t.jsx)("p",{className:"line-clamp-1 text-sm font-light text-white lg:text-base",children:e.description})]})]})})},`${e.id}-${a}`))})}),y>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button","aria-label":"Previous banner",onClick:()=>{x(e=>e<=0?y:e-1)},className:"absolute left-0 top-1/2 z-10 flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full bg-white text-neutral-900 shadow-lg transition hover:opacity-80 lg:-ml-3",children:(0,t.jsx)(l.ChevronLeft,{className:"h-5 w-5"})}),(0,t.jsx)("button",{type:"button","aria-label":"Next banner",onClick:()=>{x(e=>e>=y?0:e+1)},className:"absolute right-0 top-1/2 z-10 flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full bg-white text-neutral-900 shadow-lg transition hover:opacity-80 lg:-mr-3",children:(0,t.jsx)(r.ChevronRight,{className:"h-5 w-5"})})]})]}),y>0&&(0,t.jsx)("div",{className:"relative flex justify-center",children:Array.from({length:y+1}).map((e,a)=>(0,t.jsx)("button",{type:"button","aria-label":`Go to banner ${a+1}`,onClick:()=>x(a),className:(0,o.cn)("mx-1 mb-2 h-1.5 rounded-full transition-all duration-300",a===m?"w-8 bg-white":"w-1.5 bg-white/50")},`page-${a}`))})]})]}):null}])},6468,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(57688),s=e.i(22016),l=e.i(82115),r=e.i(49838);
1e.s(["SideBanner",0,function({banner:e,page:i,location:o,className:c}){let[d,u]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{u(!0)},[]),(0,a.useEffect)(()=>{if(!d||!e)return;let t=window.setTimeout(()=>{(0,l.recordBannerView)(e.id,i,o).catch(()=>void 0)},2e3);return()=>window.clearTimeout(t)},[e,d,i,o]),d&&e)?(0,t.jsx)("div",{className:(0,r.cn)(c),children:(0,t.jsx)(s.default,{href:e.linkUrl||"#",target:e.linkUrl?"_blank":void 0,className:"relative block h-full w-full","aria-label":e.title||"Open banner",onClick:()=>{(0,l.recordBannerClick)(e.id,i,o).catch(()=>void 0)},children:e.imageUrl?(0,t.jsx)(n.default,{src:e.imageUrl,alt:e.title||"",fill:!0,loading:"lazy",sizes:"200px",className:"object-contain object-center"}):(0,t.jsx)("div",{className:"flex h-full w-full items-center justify-center bg-neutral-700/50",children:(0,t.jsx)("span",{className:"text-sm text-white",children:e.title})})})}):null}])},48863,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(66027),s=e.i(48148),l=e.i(82115),r=e.i(66610),i=e.i(64739),o=e.i(11549),c=e.i(6468);e.s(["GAME_LIST_BANNER_PAGE",0,"GAMES","GameListBannerLayout",0,function({bannerPage:e,middleBannerMargin:d="mb-10 md:mb-12",children:u}){let m=(0,s.useTranslations)(),{data:x,isLoading:h,isError:p,refetch:f}=(0,n.useQuery)({queryKey:r.queryKeys.banner.byPage(e).queryKey,queryFn:()=>(0,l.fetchBanners)(e),staleTime:18e5,retry:1}),g=x?.MAIN??[],[b,y]=(0,a.useState)(null),[v,j]=(0,a.useState)(null),[N,w]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let e=e=>e.length>0?e[Math.floor(Math.random()*e.length)]:null;y(e(x?.SIDE_LEFT??[])),j(e(x?.SIDE_RIGHT??[])),w(e(x?.SIDE_MIDDLE??[]))},[x]),(0,t.jsxs)("div",{className:"w-full bg-neutral-50 min-h-screen",children:[(h||g.length>0||p)&&(0,t.jsx)("div",{className:"w-full bg-black pt-2 pb-5 md:-mt-16 md:pt-16 lg:pb-6",children:(0,t.jsx)("div",{className:"container",children:h?(0,t.jsx)("div",{className:"px-0 md:px-5",children:(0,t.jsx)("div",{className:"aspect-[2/1] animate-pulse rounded-none bg-neutral-800 md:mt-4 md:rounded-2xl"})}):g.length>0?(0,t.jsx)(i.BannerCarousel,{banners:g,page:e,location:"MAIN"}):(0,t.jsx)("div",{className:"px-0 md:px-5",children:(0,t.jsxs)("div",{className:"flex aspect-[2/1] flex-col items-center justify-center rounded-none bg-neutral-900 text-center text-sm text-neutral-300 md:mt-4 md:rounded-2xl",children:[(0,t.jsx)("p",{children:m("game.ranking.bannerError")}),(0,t.jsx)("button",{type:"button",onClick:()=>void f(),className:"mt-4 rounded-md border border-white/20 px-4 py-2 text-white transition-opacity hover:opacity-90",children:"Retry"})]})})})}),(0,t.jsxs)("div",{className:"w-full flex justify-between bg-neutral-50 pt-14 relative",children:[b&&(0,t.jsx)("div",{className:"hidden lg:block sticky top-10",children:(0,t.jsx)(c.SideBanner,{banner:b,page:e,location:"SIDE_LEFT",className:"w-[clamp(0px,calc((100vw_-_820px)/2),200px)] aspect-[9/16]"})}),(0,t.jsx)("div",{className:"min-w-0 mx-auto w-full",children:(0,t.jsxs)("div",{className:"container",children:[N&&(0,t.jsx)("div",{className:d,children:(0,t.jsx)(o.MiddleBanner,{banner:N,page:e,location:"SIDE_MIDDLE"})}),u]})}),v&&(0,t.jsx)("div",{className:"hidden lg:block sticky top-10",children:(0,t.jsx)(c.SideBanner,{banner:v,page:e,location:"SIDE_RIGHT",className:"w-[clamp(0px,calc((100vw_-_820px)/2),200px)] aspect-[9/16]"})})]})]})}])},39746,94983,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(77183),s=e.i(76590),l=e.i(7311),r=e.i(26999),i=e.i(54616),o=e.i(12598),c=e.i(86536),d=e.i(50570),u=e.i(90597),m=e.i(31278);let x=(0,e.i(75254).default)("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);e.s(["MessageCircle",0,x],94983);var h=e.i(41071),p=e.i(37727),f=e.i(61745),g=e.i(48148),b=e.i(18566),y=e.i(46696),v=e.i(1851),j=e.i(49001),N=e.i(91039),w=e.i(8013),C=e.i(66610),k=e.i(24700);function S({comment:e,collectionId:n,collectionSlug:s,currentUserId:l,depth:r=0,onRefresh:c,onLoginRequired:d}){let m=(0,g.useTranslations)("game.collection"),x=(0,o.useQueryClient)(),{user:h,isAdmin:p}=(0,k.useAuthStore)(),[f,b]=(0,a.useState)(!1),[E,I]=(0,a.useState)(""),[U,D]=(0,a.useState)(!1),M=e.createdAt?(0,v.format)(new Date(e.createdAt),"yyyy.MM.dd HH:mm"):"-",P=()=>{c?c():x.invalidateQueries({queryKey:C.queryKeys.game.collectionDetail(s).queryKey})},{mutate:L}=(0,i.useMutation)({mutationFn:()=>(0,N.deleteCollectionComment)(e.commentId),onSuccess:P}),{mutate:q,isPending:T}=(0,i.useMutation)({mutationFn:()=>(0,N.addCollectionComment)(n,E,e.commentId),onSuccess:()=>{I(""),b(!1),P()},onError:e=>{y.toast.error((0,w.getErrorMessage)(e))}}),{mutate:A}=(0,i.useMutation)({mutationFn:()=>e.liked?(0,N.unlikeCollectionComment)(e.commentId):(0,N.likeCollectionComment)(e.commentId),onSuccess:P,onError:e=>{y.toast.error((0,w.getErrorMessage)(e))}}),B=p||null!=l&&null!=e.authorId&&e.authorId===l||null!=h&&e.authorNickname===h.nickname;return e.isDeleted?(0,t.jsxs)("div",{className:`py-4 ${r>0?"ml-8 border-l-2 border-neutral-100 pl-4":"border-b border-neutral-100"}`,children:[(0,t.jsx)("p",{className:"text-sm text-neutral-400 italic",children:m("commentDeleted")}),e.children?.map(e=>(0,t.jsx)(S,{comment:e,collectionId:n,collectionSlug:s,currentUserId:l,depth:r+1,onRefresh:c,onLoginRequired:d},e.commentId))]}):(0,t.jsxs)("div",{className:`${r>0?"ml-8 border-l-2 border-neutral-100 pl-4":"border-b border-neutral-100 last:border-b-0"}`,children:[(0,t.jsxs)("div",{className:"py-4",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(j.UserAvatar,{name:e.authorNickname,size:32,imageUrl:e.authorProfileImageUrl}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-sm font-bold text-black",children:e.authorNickname}),(0,t.jsx)("span",{className:"ml-2 text-xs text-neutral-400",children:M})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>l?A():d?.(),className:"flex items-center gap-1 text-xs text-neutral-400 hover:text-red-500",children:[(0,t.jsx)(u.Heart,{className:`h-3.5 w-3.5 ${e.liked?"fill-red-500 text-red-500":""}`}),e.likeCount>0?e.likeCount:null]}),0===r&&l?(0,t.jsx)("button",{type:"button",onClick:()=>b(!f),className:"text-xs text-neutral-400 hover:text-primary",children:m("reply")}):null,B?(0,t.jsx)("button",{type:"button",onClick:()=>D(!0),className:"text-xs text-neutral-400 hover:text-red-500",children:m("deleteComment")}):null]})]}),(0,t.jsx)("p",{className:"mt-2 text-sm leading-relaxed text-neutral-700
1whitespace-pre-wrap",children:e.content}),f?(0,t.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,t.jsx)("textarea",{value:E,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),E.trim()&&!T&&q())},placeholder:m("commentPlaceholder"),className:"flex-1 rounded-lg border border-neutral-200 p-3 text-sm focus:outline-none focus:ring-1 focus:ring-primary",rows:2}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("button",{type:"button",onClick:()=>q(),disabled:!E.trim()||T,className:"rounded-lg bg-primary px-3 py-2 text-xs text-white disabled:opacity-50 hover:bg-primary/90",children:m("submit")}),(0,t.jsx)("button",{type:"button",onClick:()=>b(!1),className:"rounded-lg bg-neutral-100 px-3 py-2 text-xs text-neutral-600 hover:bg-neutral-200",children:m("cancel")})]})]}):null]}),U?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-[100] bg-black/40",role:"presentation",onClick:()=>D(!1),onKeyDown:e=>{"Escape"===e.key&&D(!1)}}),(0,t.jsxs)("div",{className:"fixed left-1/2 top-1/2 z-[101] w-72 -translate-x-1/2 -translate-y-1/2 rounded-2xl bg-white p-6 shadow-2xl",children:[(0,t.jsx)("h3",{className:"mb-2 text-base font-bold text-black",children:m("deleteComment")}),(0,t.jsx)("p",{className:"mb-5 text-sm text-neutral-500",children:m("confirmDeleteComment")}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>D(!1),className:"flex-1 rounded-xl border border-neutral-200 py-2.5 text-sm text-neutral-600 hover:bg-neutral-50 transition-colors",children:m("cancel")}),(0,t.jsx)("button",{type:"button",onClick:()=>{D(!1),L()},className:"flex-1 rounded-xl bg-red-500 py-2.5 text-sm font-medium text-white hover:bg-red-600 transition-colors",children:m("deleteComment")})]})]})]}):null,e.children?.map(e=>(0,t.jsx)(S,{comment:e,collectionId:n,collectionSlug:s,currentUserId:l,depth:r+1,onLoginRequired:d},e.commentId))]})}var E=e.i(43741),I=e.i(49529),U=e.i(49838),D=e.i(32171),M=e.i(46577);function P({game:e,onClick:a}){let{attributes:n,listeners:r,setNodeRef:i,transform:o,transition:c,isDragging:u}=(0,s.useSortable)({id:e.gameId}),m=o?{...o,x:0}:null,x={transform:l.CSS.Transform.toString(m),transition:c,zIndex:u?10:void 0,opacity:u?.8:void 0};return(0,t.jsxs)("div",{ref:i,style:x,className:(0,U.cn)("flex items-center gap-2 rounded-lg border border-neutral-100 p-2 transition-colors hover:bg-neutral-50",u&&"shadow-md"),children:[(0,t.jsx)("button",{type:"button",className:"shrink-0 cursor-grab touch-none text-neutral-300 hover:text-neutral-500 active:cursor-grabbing",...n,...r,children:(0,t.jsx)(d.GripVertical,{className:"h-4 w-4"})}),(0,t.jsxs)("button",{type:"button",onClick:a,className:"flex min-w-0 flex-1 items-center gap-3 text-left",children:[(0,t.jsx)("div",{className:"relative h-10 w-10 shrink-0 overflow-hidden rounded",children:(0,t.jsx)(I.GameThumbnail,{src:e.thumbnailUrl,alt:e.title,sizes:"40px"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block truncate text-sm text-neutral-700",children:e.title}),e.memo&&(0,t.jsx)("span",{className:"block truncate text-xs text-neutral-400",children:e.memo})]})]})]})}e.s(["CollectionDetailDialog",0,function({slug:e,open:l,onOpenChange:d}){let v=(0,g.useTranslations)("game.collection"),L=(0,f.useLocale)(),q=(0,b.useRouter)(),T=(0,o.useQueryClient)(),{user:A}=(0,k.useAuthStore)(),{loginModalOpen:B,setLoginModalOpen:K}=(0,D.useUiStore)(),[O,R]=(0,a.useState)(null),[_,z]=(0,a.useState)(!1),[F,$]=(0,a.useState)(""),[G,Q]=(0,a.useState)("games"),[H,V]=(0,a.useState)(!1),[J,X]=(0,a.useState)(!1),[Z,W]=(0,a.useState)(""),[Y,ee]=(0,a.useState)(""),[et,ea]=(0,a.useState)("PUBLIC"),[en,es]=(0,a.useState)(!1),[el,er]=(0,a.useState)([]),ei=(0,a.useRef)(null),eo=(0,n.useSensors)((0,n.useSensor)(n.PointerSensor,{activationConstraint:{distance:3}}),(0,n.useSensor)(n.TouchSensor,{activationConstraint:{delay:150,tolerance:5}})),ec=(e,t=!1)=>{t&&(z(!0),R(null)),(0,N.fetchCollectionDetail)(e).then(e=>{R(e),er(e.games)}).catch(()=>{t&&R(null)}).finally(()=>{t&&z(!1)})};(0,a.useEffect)(()=>
1{if(!l)return;document.body.style.overflow="hidden";let e=e=>{"Escape"!==e.key||B||d(!1)};return document.addEventListener("keydown",e),()=>{document.body.style.overflow="",document.removeEventListener("keydown",e)}},[l,B,d]),(0,a.useEffect)(()=>{l&&e&&(X(!1),V(!1),ec(e,!0))},[l,e]),(0,a.useEffect)(()=>{if(e)return T.getQueryCache().subscribe(t=>{if("updated"===t.type&&"invalidate"===t.action.type){let a=t.query.queryKey,n=C.queryKeys.game.collectionDetail(e).queryKey;JSON.stringify(a)===JSON.stringify(n)&&ec(e)}})},[e,T]),(0,a.useEffect)(()=>{if(!H)return;let e=e=>{ei.current&&!ei.current.contains(e.target)&&V(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[H]);let{mutate:ed,isPending:eu}=(0,i.useMutation)({mutationFn:()=>(0,N.addCollectionComment)(O.id,F),onSuccess:()=>{$(""),e&&ec(e)},onError:e=>{y.toast.error((0,w.getErrorMessage)(e))}}),{mutate:em}=(0,i.useMutation)({mutationFn:()=>O.liked?(0,N.unlikeCollection)(O.id):(0,N.likeCollection)(O.id),onSuccess:()=>{R(e=>e?{...e,liked:!e.liked,likeCount:e.liked?e.likeCount-1:e.likeCount+1}:e),T.invalidateQueries({queryKey:C.queryKeys.game.exploreCollections._def})},onError:e=>{y.toast.error((0,w.getErrorMessage)(e))}}),{mutate:ex,isPending:eh}=(0,i.useMutation)({mutationFn:()=>(0,N.updateCollection)(O.id,{title:Z,description:Y,visibility:et}),onSuccess:()=>{y.toast.success(v("updated")),X(!1),e&&ec(e),T.invalidateQueries({queryKey:C.queryKeys.game.exploreCollections._def})},onError:e=>{y.toast.error((0,w.getErrorMessage)(e))}}),{mutate:ep}=(0,i.useMutation)({mutationFn:()=>(0,N.deleteCollection)(O.id),onSuccess:()=>{y.toast.success(v("deleted")),es(!1),d(!1),T.invalidateQueries({queryKey:C.queryKeys.game.exploreCollections._def})},onError:e=>{y.toast.error((0,w.getErrorMessage)(e)),es(!1)}}),ef=e=>{d(!1),q.push((0,M.gameDetailHref)(L,e,"COLLECTION"))},eg=(0,t.jsx)("div",{className:"flex flex-col gap-2",children:O&&(O.isOwner?el:O.games).length>0?O.isOwner?(0,t.jsx)(n.DndContext,{sensors:eo,collisionDetection:n.closestCenter,onDragEnd:t=>{let{active:a,over:n}=t;if(!n||a.id===n.id||!O)return;let l=el.findIndex(e=>e.gameId===a.id),r=el.findIndex(e=>e.gameId===n.id);if(-1===l||-1===r)return;let i=[...el],o=(0,s.arrayMove)(el,l,r);er(o),(0,N.updateCollectionOrder)(O.id,o.map(e=>e.gameId)).then(()=>{y.toast.success(v("orderUpdated")),e&&ec(e)}).catch(e=>{er(i),y.toast.error((0,w.getErrorMessage)(e))})},children:(0,t.jsx)(s.SortableContext,{items:el.map(e=>e.gameId),strategy:s.verticalListSortingStrategy,children:el.map(e=>(0,t.jsx)(P,{game:e,onClick:()=>ef(e.gameId)},e.gameId))})}):O.games.map(e=>(0,t.jsxs)("button",{type:"button",onClick:()=>ef(e.gameId),className:"flex items-center gap-3 rounded-lg border border-neutral-100 p-2 text-left transition-colors hover:bg-neutral-50",children:[(0,t.jsx)("div",{className:"relative h-10 w-10 shrink-0 overflow-hidden rounded",children:(0,t.jsx)(I.GameThumbnail,{src:e.thumbnailUrl,alt:e.title,sizes:"40px"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block truncate text-sm text-neutral-700",children:e.title}),e.memo&&(0,t.jsx)("span",{className:"block truncate text-xs text-neutral-400",children:e.memo})]})]},e.gameId)):(0,t.jsx)("p",{className:"py-8 text-center text-sm text-neutral-400",children:v("noGamesInCollection")})}),eb=(0,t.jsxs)("div",{children:[A?(0,t.jsxs)("div",{className:"mb-4 flex gap-2",children:[(0,t.jsx)("textarea",{value:F,onChange:e=>$(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),F.trim()&&!eu&&ed())},placeholder:v("commentPlaceholder"),className:"flex-1 rounded-lg border border-neutral-200 p-3 text-sm focus:outline-none focus:ring-1 focus:ring-primary",rows:2}),(0,t.jsx)("button",{type:"button",onClick:()=>ed(),disabled:!F.trim()||eu,className:"self-end rounded-lg bg-primary px-4 py-2 text-xs text-white disabled:opacity-50 hover:bg-primary/90",children:v("submit")})]}):(0,t.jsx)("button",{type:"button",onClick:()=>K(!0),className:"mb-4 w-full rounded-lg border border-neutral-200 py-3 text-center text-xs text-neutral-400 transition-colors hover:border-primary hover:text-primary",children:v("loginToComment")}),O&&O.comments.length>0&&(0,t.jsx)("div",{children:O.comments.map(a=>(0,t.jsx)(S,{comment:a,collectionId:O.id,collectionSlug:e,currentUserId:A?.id,onRefresh:()=>ec(e),onLoginRequired:()=>K(!0)},a.commentId))})]});return(0,t.jsx)(r.Root,{modal:!1,open:l,onOpenChange:e=>
1{d(e),e||(X(!1),T.invalidateQueries({queryKey:C.queryKeys.game.exploreCollections._def}))},children:(0,t.jsxs)(r.Portal,{children:[(0,t.jsx)(r.Overlay,{className:"fixed inset-0 z-[90] bg-black/40",onClick:()=>d(!1)}),(0,t.jsxs)(r.Content,{onClick:e=>e.stopPropagation(),onInteractOutside:e=>{B&&e.preventDefault()},className:(0,U.cn)("fixed z-[91] bg-white shadow-xl focus:outline-none","inset-x-0 bottom-0 rounded-t-2xl","md:inset-auto md:left-1/2 md:top-1/2 md:w-full md:max-w-4xl md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-2xl"),children:[(0,t.jsxs)("div",{className:"border-b border-neutral-100",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between px-5 pt-4 pb-2",children:[(0,t.jsx)("div",{className:"min-w-0 flex-1",children:J?(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsx)("input",{type:"text",value:Z,onChange:e=>W(e.target.value),className:"w-full rounded-lg border border-neutral-200 px-3 py-2 text-base font-bold focus:outline-none focus:ring-1 focus:ring-primary",placeholder:v("collectionNamePlaceholder")}),(0,t.jsx)("textarea",{value:Y,onChange:e=>ee(e.target.value),className:"w-full rounded-lg border border-neutral-200 px-3 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-primary",placeholder:v("description"),rows:2}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)("span",{className:"text-xs text-neutral-500",children:[v("visibility"),":"]}),(0,t.jsx)("button",{type:"button",onClick:()=>ea(e=>"PUBLIC"===e?"PRIVATE":"PUBLIC"),className:(0,U.cn)("rounded-full px-3 py-1 text-xs font-medium transition-colors","PUBLIC"===et?"bg-green-50 text-green-600":"bg-neutral-100 text-neutral-500"),children:"PUBLIC"===et?v("public"):v("private")})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{type:"button",onClick:()=>X(!1),className:"rounded-lg border border-neutral-200 px-4 py-1.5 text-xs font-medium text-neutral-600 hover:bg-neutral-50",children:v("cancel")}),(0,t.jsx)("button",{type:"button",onClick:()=>ex(),disabled:!Z.trim()||eh,className:"rounded-lg bg-primary px-4 py-1.5 text-xs font-medium text-white disabled:opacity-50 hover:bg-primary/90",children:v("save")})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.Title,{className:"truncate text-base font-bold text-neutral-800",children:O?.title??""}),O&&(0,t.jsxs)(t.Fragment,{children:[O.description&&(0,t.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-neutral-500",children:O.description}),(0,t.jsxs)("div",{className:"mt-1 flex items-center gap-3",children:[O.ownerNickname&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsx)(j.UserAvatar,{name:O.ownerNickname,size:18,imageUrl:O.ownerProfileImageUrl}),(0,t.jsx)("span",{className:"text-xs text-neutral-500",children:O.ownerNickname})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2.5 text-xs text-neutral-400",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>{A?em():K(!0)},className:"flex items-center gap-0.5 transition-colors hover:text-red-500",children:[(0,t.jsx)(u.Heart,{className:(0,U.cn)("h-3.5 w-3.5",O.liked?"fill-red-500 text-red-500":"")}),(0,t.jsx)("span",{children:O.likeCount})]}),(0,t.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,t.jsx)(c.Eye,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:O.viewCount})]}),(0,t.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,t.jsx)(x,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{children:O.commentCount})]})]})]})]})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-start gap-1",children:[O?.isOwner&&!J&&(0,t.jsxs)("div",{className:"relative",ref:ei,children:[(0,t.jsx)("button",{type:"button",onClick:()=>V(e=>!e),className:"flex h-7 w-7 items-center justify-center rounded-full text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600",children:(0,t.jsx)(h.MoreHorizontal,{className:"h-4 w-4"})}),H&&(0,t.jsxs)("div",{className:"absolute right-0 top-full z-10 mt-1 w-32 rounded-lg border border-neutral-100 bg-white py-1 shadow-lg",children:[(0,t.jsx)("button",{type:"button",onClick:()=>{O&&(W(O.title),ee(O.description??""),ea(O.visibility),X(!0),V(!1))},className:"flex w-full items-center px-3 py-2 text-sm text-neutral-700 hover:bg-neutral-50",children:v("edit")}),(0,t.jsx)("button",{type:"button",onClick:()=>{es(!0),V(!1)},className:"flex w-full items-center px-3 py-2 text-sm text-red-500 hover:bg-red-50",children:v("delete")})]})]}),(0,t.jsx)(r.Close,{asChild:!0,children:(0,t.jsx)("button",{type:"button",className:"flex h-7 w-7 items-center justify-center rounded-full text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600",children:(0,t.jsx)(p.X,{className:"h-4 w-4"})})})]})]}),O&&!J&&(0,t.jsxs)("div",{className:"flex items-center px-5 md:hidden",role:"tablist","aria-label":"Collection tabs",children:[(0,t.jsx)("div",{role:"tab",tabIndex:0,"aria-selected":"games"===G,onClick:()=>Q("games"),onKeyDown:e=>"Enter"===e.key&&Q("games"),className:(0,U.cn)("cursor-pointer px-3 py-2.5 text-sm font-medium transition-colors","games"===G?"border-b-2 border-primary text-primary":"text-neutral-400"),children:v("games")}),(0,t.jsxs)("div",{role:"tab",tabIndex:0,"aria-selected":"comments"===G,onClick:()=>Q("comments"),onKeyDown:e=>"Enter"===e.key&&Q("comments"),className:(0,U.cn)("cursor-pointer px-3 py-2.5 text-sm font-medium transition-colors","comments"===G?"border-b-2 border-primary text-primary":"text-neutral-400"),children:[v("comments")," (",O.commentCount,")"]})]})]}),(0,t.jsx)("div",{className:"min-h-[50vh] max-h-[50vh] overflow-y-auto px-5 py-3 md:min-h-0 md:max-h-[60vh] md:overflow-hidden md:p-0",children:_?(0,t.jsx)("div",{className:"flex items-center justify-center py-10",children:(0,t.jsx)(m.Loader2,{className:"h-5 w-5 animate-spin text-neutral-400"})}):O?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"md:hidden",children:"games"===G?eg:eb}),(0,t.jsxs)("div",{className:"hidden md:grid md:grid-cols-2",children:[(0,t.jsx)("div",{className:"max-h-[60vh] overflow-y-auto border-r border-neutral-100 px-5 py-3",children:eg}),(0,t.jsxs)("div",{className:"max-h-[60vh] overflow-y-auto px-5 py-3",children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center gap-1.5",children:[(0,t.jsx)(x,{className:"h-4 w-4 text-neutral-500"}),(0,t.jsxs)("span",{className:"text-sm font-bold text-neutral-700",children:[v("comments")," (",O.commentCount,")"]})]}),eb]})]})]}):(0,t.jsx)("p",{className:"py-8 text-center text-sm text-neutral-400",children:v("noGamesInCollection")})}),(0,t.jsx)(E.ConfirmDialog,{isOpen:en,title:v("delete"),message:v("deleteConfirm"),confirmLabel:v("delete"),cancelLabel:v("cancel"),onConfirm:()=>ep(),onCancel:()=>es(!1),variant:"danger"})]})]})})}],39746)}]);
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.