PageSourceSearch

https://uta.inui-dondon-sukininaru.net/_nuxt/BS0CCoHp.js

js inui-dondon-sukininaru.net collected 2026-10-06 20:13:23 UTC 6,171 bytes, 1 lines download raw bytes

1import{u as R,_ as V,a as z}from"./DGrYeNIA.js";import{d as P,K as L,u as M,f as T,g as n,h as l,m as t,i as f,t as S,l as o,E as A,c as v,D as O,C as Q,L as E,o as U,M as H,j,k as N,F as x,x as y,A as K,N as G,_ as J,y as C,s as W}from"./DR38E-4v.js";import{_ as X}from"./DDtGfScb.js";import{a as Y}from"./Bq_ZeY_s.js";import{u as q}from"./CaQdAJz9.js";const Z={class:"relative aspect-video overflow-hidden"},tt=["src","alt"],st={class:"absolute inset-0 flex items-center justify-center bg-black/0 transition-colors group-hover:bg-black/40"},et={class:"absolute bottom-1 right-1 bg-black/80 px-1.5 py-0.5 text-xs text-gray-200"},ot={class:"flex items-start gap-1 p-3"},nt={class:"min-w-0 flex-1"},it=["title"],lt={class:"mt-0.5 truncate text-xs text-gray-400"},at=P({__name:"SongCard",props:{song:{}},setup(i){const a=i,d=R(),{songDuration:g}=z(),u=L(),r=M(),m=v(()=>u.currentSong?.id===a.song.id&&u.isPlaying),b=v(()=>r.isFavorite(a.song.id));return($,c)=>{const h=T("FontAwesomeIcon"),k=V;return n(),l("div",{class:A(["group cursor-pointer border border-border-default bg-surface-raised transition-[border-color,box-shadow] hover:border-action-primary/40",o(m)?"ring-1 ring-playing-glow-muted/40":""]),onClick:c[0]||(c[0]=F=>o(d).playSong(i.song))},[t("div",Z,[t("img",{src:i.song.video.thumbnail_path,alt:i.song.title,class:"h-full w-full object-cover",loading:"lazy"},null,8,tt),t("div",st,[f(h,{icon:["fas","play"],class:"h-10 w-10 text-white opacity-0 transition-opacity group-hover:opacity-100"})]),t("span",et,S(o(g)(i.song.start_at,i.song.end_at)),1)]),t("div",ot,[t("div",nt,[t("p",{class:"truncate text-sm font-medium",title:i.song.title},S(i.song.title),9,it),t("p",lt,S(i.song.artist??"不明"),1)]),f(k,{"song-id":i.song.id,"song-title":i.song.title,size:"sm",class:A(["shrink-0 transition-opacity",o(b)?"":"sm:opacity-0 sm:group-hover:opacity-100"])},null,8,["song-id","song-title","class"])])],2)}}}),rt=Object.assign(at,{__name:"SongCard"});function ct(i=10){const{useApiFetch:a}=q(),{data:d,status:g,error:u,refresh:r}=a(`/api/random/?per_page=${i}`);return{songs:v(()=>d.value?.songs??[]),status:g,error:u,refresh:r}}const dt={class:"space-y-10"},gt={key:0},ut={class:"mb-4 flex items-center justify-between"},mt={class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"},pt={class:"mb-4 flex items-center justify-between"},_t={class:"flex items-center gap-3"},xt=["disabled"],yt={key:0,class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"},ft={key:1,class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"},vt={class:"mb-4 flex items-center justify-between"},bt={class:"flex items-center gap-3"},ht=["disabled"],kt={key:0,class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"},wt={key:1,class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"},jt=P({__name:"index",async setup(i){let a,d;O({titleTemplate:"%s",title:"いぬいのうた | 戌亥とこ非公式ファンサイト",ogTitle:"いぬいのうた | 戌亥とこ非公式ファンサイト",description:"いぬいのうたは、にじさんじ所属のバーチャルライバーである戌亥とこさんを応援するファンサイトです。戌亥とこさんが歌った楽曲を探しやすく、再生しやすいようにまとめています。",ogDescription:"いぬいのうたは、にじさんじ所属のバーチャルライバーである戌亥とこさんを応援するファンサイトです。戌亥とこさんが歌った楽曲を探しやすく、再生しやすいようにまとめています。",ogUrl:Q().public.siteUrl});const g=E(),u=Y();function r(p,s){for(const _ of p)g.addSong(_);g.isOpen=!0,u.success(`${s}の${p.length}曲をキューに追加しました`)}const{songs:m,status:b,refresh:$}=ct(10),c=K([]);U(()=>{const{getFrequentlyPlayed:p}=G();c.value=p()});const{useApiFetch:h}=q(),{data:k,status:F}=([a,d]=H(()=>h("/api/songs/",{query:{page:1,per_page:10,"sort[]":"-video.published_at"}})),a=await a,d(),a),w=v(()=>k.value?.songs??[]);return(p,s)=>{const _=rt,B=J,D=T("FontAwesomeIcon"),I=X;return n(),l("div",dt,[f(B,null,{default:j(()=>[o(c).length?(n(),l("section",gt,[t("div",ut,[s[4]||(s[4]=t("h2",{class:"text-lg font-bold"},"最近よく聞く曲",-1)),t("button",{class:"text-sm text-gray-400 transition-colors hover:text-selected-text",onClick:s[0]||(s[0]=e=>r(o(c),"最近よく聞く曲"))}," キューに追加 ")]),t("div",mt,[(n(!0),l(x,null,y(o(c),e=>(n(),C(_,{key:e.id,song:e},null,8,["song"]))),128))])])):W("",!0)]),_:1}),t("section",null,[t("div",pt,[s[6]||(s[6]=t("h2",{class:"text-lg font-bold"},"ピックアップ",-1)),t("div",_t,[t("button",{class:"text-sm text-gray-400 transition-colors hover:text-selected-text",disabled:!o(m).length,onClick:s[1]||(s[1]=e=>r(o(m),"ランダムピックアップ"))}," キューに追加 ",8,xt),t("button",{class:"flex items-center gap-1.5 text-sm text-gray-400 transition-colors hover:text-selected-text",title:"ピックアップを更新","aria-label":"ピックアップを更新",onClick:s[2]||(s[2]=e=>o($)())},[f(D,{icon:["fas","arrow-rotate-right"],class:"h-3.5 w-3.5"}),s[5]||(s[5]=N(" 更新 ",-1))])])]),o(b)==="pending"?(n(),l("div",yt,[(n(),l(x,null,y(10,e=>
1t("div",{key:e,class:"aspect-video animate-pulse bg-surface-raised"})),64))])):(n(),l("div",ft,[(n(!0),l(x,null,y(o(m),e=>(n(),C(_,{key:e.id,song:e},null,8,["song"]))),128))]))]),t("section",null,[t("div",vt,[s[8]||(s[8]=t("h2",{class:"text-lg font-bold"},"最新の楽曲",-1)),t("div",bt,[t("button",{class:"text-sm text-gray-400 transition-colors hover:text-selected-text",disabled:!o(w).length,onClick:s[3]||(s[3]=e=>r(o(w),"最新の楽曲"))}," キューに追加 ",8,ht),f(I,{to:"/songs",class:"text-sm text-gray-400 transition-colors hover:text-selected-text"},{default:j(()=>[...s[7]||(s[7]=[N(" すべて見る → ",-1)])]),_:1})])]),o(F)==="pending"?(n(),l("div",kt,[(n(),l(x,null,y(10,e=>t("div",{key:e,class:"aspect-video animate-pulse bg-surface-raised"})),64))])):(n(),l("div",wt,[(n(!0),l(x,null,y(o(w),e=>(n(),C(_,{key:e.id,song:e},null,8,["song"]))),128))]))])])}}});export{jt 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.