1import{d as Y,k as J,z as K,y as Q,c as r,a,t as l,b as c,F as L,m as N,g as W,v as X,w as Z,D as ee,r as d,q as w,A as z,h as te,o as n,p as M,e as F,j as se}from"./index-BCbDpc32.js";import{u as ae,_ as le}from"./ConfirmModal.vue_vue_type_script_setup_true_lang-Bnlr-HV1.js";const oe={class:"space-y-6"},re={class:"flex items-center justify-between"},ne={class:"flex items-center gap-3"},de={class:"text-sm text-slate-500"},ie={key:0,class:"flex items-center justify-between rounded-lg bg-slate-100 px-3 py-2 text-sm dark:bg-slate-800"},ce={class:"flex items-center gap-2"},ue={class:"text-slate-500"},ve=["disabled"],be={key:1,class:"rounded-2xl border border-amber-200 bg-gradient-to-br from-amber-50 to-white p-4 dark:border-amber-900/50 dark:from-amber-950/30 dark:to-slate-900"},ge={class:"mb-3 flex items-center gap-2 text-sm font-bold text-amber-700 dark:text-amber-300"},xe={class:"grid gap-3 sm:grid-cols-3"},pe={class:"flex items-start gap-2"},fe={class:"min-w-0 flex-1"},ke={class:"truncate font-semibold"},he={class:"truncate text-xs text-slate-500"},_e={class:"mt-2 max-h-28 overflow-auto whitespace-pre-wrap rounded bg-slate-50 p-2 text-[11px] leading-relaxed text-slate-600 dark:bg-slate-950/40 dark:text-slate-300"},ye={class:"mt-2 flex items-center justify-between"},me=["disabled","onClick"],we=["onClick"],Ce={key:2,class:"rounded-lg bg-red-50 px-3 py-2 text-sm text-red-700 dark:bg-red-950 dark:text-red-300"},Se={key:3,class:"py-10 text-center text-sm text-slate-400"},$e={class:"space-y-3"},Te={class:"flex items-center gap-3 p-4"},De=["checked","onChange"],Le={key:1,class:"inline-block h-4 w-4 flex-shrink-0"},ze=["onClick"],Me={class:"truncate font-semibold"},Ee={class:"mt-1 flex flex-wrap gap-x-3 text-xs text-slate-500"},Be={key:0},Ve={key:1},je={class:"flex flex-shrink-0 items-center gap-1.5 text-sm"},Ae=["disabled","title","onClick"],Ne=["onClick"],Fe=["onClick"],Ie={class:"text-slate-400"},qe={key:0,class:"max-h-96 overflow-auto whitespace-pre-wrap border-t border-slate-100 bg-slate-50 p-4 text-xs leading-relaxed dark:border-slate-800 dark:bg-slate-950/40"},Re={class:"flex justify-center"},Ue=["disabled"],Ge=20,He=350,Je=Y({__name:"ExploreView",setup(Oe){const I=se(),q=ae(),x=d([]),u=d([]),f=d(0),k=d(!1),p=d(""),h=d(""),b=d(null),_=d(new Set),C=d(null);function R(t){const s=new Date(t);return`${s.getFullYear()}.${String(s.getMonth()+1).padStart(2,"0")}.${String(s.getDate()).padStart(2,"0")}`}async function E(){try{const t=await w.getCommunityTop(3);x.value=t.items}catch{}}async function T(t=!1){k.value=!0,p.value="";try{const s=t?0:u.value.length,e=await w.listCommunityLyrics({q:h.value||void 0,limit:Ge,offset:s});u.value=t?e.items:[...u.value,...e.items],f.value=e.total}catch(s){p.value=(s instanceof z,s.message)}finally{k.value=!1}}let g=null;function B(){g&&(clearTimeout(g),g=null),b.value=null,T(!0)}J(h,()=>{g&&clearTimeout(g),g=setTimeout(B,He)}),K(()=>{g&&clearTimeout(g)});function U(t){b.value=b.value===t?null:t}function D(t,s,e){for(const o of[x.value,u.value])for(const m of o)m.id===t&&(m.like_count=s,m.liked=e)}async function V(t){if(_.value.has(t.id))return;_.value.add(t.id);const s=t.liked,e=t.like_count;D(t.id,e+(s?-1:1),!s);try{const o=s?await w.unlikeLyrics(t.id):await w.likeLyrics(t.id);D(t.id,o.like_count,o.liked),E()}catch(o){D(t.id,e,s),p.value=(o instanceof z,o.message)}finally{_.value.delete(t.id)}}async function G(t){try{await navigator.clipboard.writeText(t.lyrics),C.value=t.id,setTimeout(()=>{C.value===t.id&&(C.value=null)},1500)}catch{p.value="í´ë¦½ë³´ë ë³µì¬ì ì¤í¨íìµëë¤."}}function j(t){q.set({custom_mode:!0,instrumental:!1,prompt_text:t.lyrics,title:t.title??"",style:t.style??"",topic:t.topic??""}),I.push({name:"generate"})}const v=d(!1),i=d(new Set),S=d(!1),$=d(!1),y=te(()=>u.value.filter(t=>t.is_mine));function H(){v.value=!v.value,i.value=new Set}function A(t){const s=new Set(i.value);s.has(t)?s.delete(t):s.add(t),i.value=s}function O(){i.value=i.value.size===y.value.length?new Set:new Set(y.value.map(t=>t.id))}async function P(){$.value=!1;const t=[...i.value];if(t.length!==0){S.value=!0;try{const s=await w.bulkDeleteLyrics(t),e=new Set(s.deleted_ids);b.value&&e.has(b.value)&&(b.value=null),u.value=u.value.filter(o=>!e.has(o.id)),x.value=x.value.filter(o=>!e.has(o.id)),f.value=Math.max(0,f.value-e.size),i.value=new Set,v.value=!1}catch(s){p.value=(s instanceof z,s.message)}finally{S.value=!1}}}return Q(()=>{E(),T(!0)}),(t,s)=>(n(),r("div",oe,[a("div",re,[s[4]||(s[4]=a("h2",{class:"text-xl font-bold"},"모ëì ê°ì¬",-1)),a("div",ne,[a("span",de,"ë¤ë¥¸ ì¬ì©ìë¤ì ê°ì¬ "+l(f.value)+"ê°",1),y.value.length>0||v.value?(n(),r("button",{key:0,class:"rounded-md border border-slate-300 px-2 py-1 text-xs hover:bg-slate-100 dar
1k:border-slate-700 dark:hover:bg-slate-800",onClick:H},l(v.value?"ì·¨ì":"ì í ìì "),1)):c("",!0)])]),v.value?(n(),r("div",ie,[a("button",{class:"font-medium text-indigo-600 hover:underline dark:text-indigo-400",onClick:O},l(i.value.size===y.value.length&&y.value.length>0?"ì ì²´ í´ì ":"ë´ ê°ì¬ ì ì²´ ì í"),1),a("div",ce,[a("span",ue,l(i.value.size)+"ê° ì íë¨",1),a("button",{class:"rounded-md border border-red-300 px-2 py-1 text-xs text-red-600 hover:bg-red-50 disabled:opacity-50 dark:border-red-800 dark:hover:bg-red-950",disabled:i.value.size===0||S.value,onClick:s[0]||(s[0]=e=>$.value=!0)},l(S.value?"ìì ì¤â¦":"ìì "),9,ve)])])):c("",!0),x.value.length?(n(),r("section",be,[a("h3",ge," ð ì¢ìì Top "+l(x.value.length),1),a("div",xe,[(n(!0),r(L,null,N(x.value,(e,o)=>(n(),r("div",{key:e.id,class:"flex flex-col rounded-xl border border-amber-200/70 bg-white p-3 dark:border-amber-900/40 dark:bg-slate-900"},[a("div",pe,[a("span",{class:M(["text-lg font-black",["text-amber-500","text-slate-400","text-orange-400"][o]??"text-slate-400"])},l(["ð¥","ð¥","ð¥"][o]??`#${o+1}`),3),a("div",fe,[a("div",ke,l(e.title||e.topic||"ì 목 ìì"),1),a("div",he,l(e.author_name||"ìµëª
"),1)])]),a("pre",_e,l(e.lyrics),1),a("div",ye,[a("button",{class:M(["flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium transition disabled:opacity-60",e.liked?"border-rose-300 bg-rose-50 text-rose-600 dar
1k:border-rose-800 dark:bg-rose-950 dark:text-rose-300":"border-slate-300 text-slate-600 hover:bg-slate-100 dark:border-slate-700 dark:hover:bg-slate-800"]),disabled:_.value.has(e.id),onClick:m=>V(e)},l(e.liked?"â¤ï¸":"ð¤")+" "+l(e.like_count),11,me),a("button",{class:"rounded-md border border-indigo-300 px-2 py-1 text-xs text-indigo-700 hover:bg-indigo-50 dark:border-indigo-700 dark:text-indigo-300 dark:hover:bg-indigo-950",title:"ì´ ê°ì¬ë¡ 곡 ìì± í¼ ì±ì°ê¸°",onClick:m=>j(e)}," í¼ì ì±ì°ê¸° ",8,we)])]))),128))])])):c("",!0),a("form",{class:"flex gap-2",onSubmit:Z(B,["prevent"])},[W(a("input",{"onUpdate:modelValue":s[1]||(s[1]=e=>h.value=e),type:"search",placeholder:"ê°ì¬Â·ì 목·주ì ê²ì",class:"flex-1 rounded-lg border border-slate-300 px-3 py-2 text-sm dark:border-slate-700 dark:bg-slate-800"},null,512),[[X,h.value]]),s[5]||(s[5]=a("button",{class:"rounded-lg bg-indigo-600 px-4 py-2 text-sm font-semibold text-white hover:bg-indigo-700"},"ê²ì",-1))],32),p.value?(n(),r("p",Ce,l(p.value),1)):c("",!0),!k.value&&u.value.length===0?(n(),r("p",Se,l(h.value?"ê²ì ê²°ê³¼ê° ììµëë¤.":"ìì§ ê³µê°ë ê°ì¬ê° ììµëë¤."),1)):c("",!0),a("ul",$e,[(n(!0),r(L,null,N(u.value,e=>(n(),r("li",{key:e.id,class:"overflow-hidden rounded-xl border border-slate-200 bg-white dark:border-slate-800 dark:bg-slate-900"},[a("div",Te,[v.value&&e.is_mine?(n(),r("input",{key:0,type:"checkbox",class:"h-4 w-4 flex-shrink-0 accent-indigo-600",checked:i.value.has(e.id),onChange:o=>A(e.id)},null,40,De)):v.value?(n(),r("span",Le)):c("",!0),a("button",{class:"min-w-0 flex-1 text-left",onClick:o=>v.value&&e.is_mine?A(e.id):U(e.id)},[a("div",Me,l(e.title||e.topic||"ì 목 ìì"),1),a("div",Ee,[a("span",null,[F(l(e.author_name||"ìµëª
"),1),e.is_mine?(n(),r(L,{key:0},[F(" (ë)")],64)):c("",!0)]),a("span",null,l(R(e.created_at)),1),e.language?(n(),r("span",Be,l(e.language),1)):c("",!0),e.style?(n(),r("span",Ve,l(e.style),1)):c("",!0)])],8,ze),a("div",je,[a("button",{class:M(["flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium transition disabled:opacity-60",e.liked?"border-rose-300 bg-rose-50 text-rose-600 dar
1k:border-rose-800 dark:bg-rose-950 dark:text-rose-300":"border-slate-300 text-slate-600 hover:bg-slate-100 dark:border-slate-700 dark:hover:bg-slate-800"]),disabled:_.value.has(e.id),title:e.liked?"ì¢ìì ì·¨ì":"ì¢ìì",onClick:o=>V(e)},l(e.liked?"â¤ï¸":"ð¤")+" "+l(e.like_count),11,Ae),a("button",{class:"rounded-md border border-slate-300 px-2 py-1 text-xs hover:bg-slate-100 dark:border-slate-700 dark:hover:bg-slate-800",onClick:o=>G(e)},l(C.value===e.id?"ë³µì¬ë¨":"ë³µì¬"),9,Ne),a("button",{class:"rounded-md border border-indigo-300 px-2 py-1 text-xs text-indigo-700 hover:bg-indigo-50 dark:border-indigo-700 dark:text-indigo-300 dark:hover:bg-indigo-950",title:"ì´ ê°ì¬ë¡ 곡 ìì± í¼ ì±ì°ê¸°",onClick:o=>j(e)}," í¼ì ì±ì°ê¸° ",8,Fe),a("span",Ie,l(b.value===e.id?"â²":"â¼"),1)])]),b.value===e.id?(n(),r("pre",qe,l(e.lyrics),1)):c("",!0)]))),128))]),a("div",Re,[u.value.length<f.value?(n(),r("button",{key:0,class:"rounded-lg border border-slate-300 px-4 py-2 text-sm hover:bg-slate-100 disabled:opacity-60 dark:border-slate-700 dark:hover:bg-slate-800",disabled:k.value,onClick:s[2]||(s[2]=e=>T(!1))},l(k.value?"ë¶ë¬ì¤ë ì¤â¦":"ë 보기"),9,Ue)):c("",!0)]),ee(le,{open:$.value,title:"ì íí ê°ì¬ë¥¼ ìì í ê¹ì?",message:`${i.value.size}ê° ê°ì¬ë¥¼ ìì í©ëë¤. ëë릴 ì ììµëë¤.`,"confirm-text":"ìì ",icon:"ðï¸",danger:"",onConfirm:P,onCancel:s[3]||(s[3]=e=>$.value=!1)},null,8,["open","message"])]))}});export{Je as default};
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.