class HALO_DOUBAN{constructor(){this.ver="1.2.2",this.type="movie",this.status="done",this.finished=!1,this.paged=1,this.genre_list=[],this.genre=[],this.subjects=[],this._create()}on(t,e,n){document.querySelectorAll(e).forEach((item=>{item.addEventListener(t,n)}))}_addSearchParams(url,params={}){return url=new URL(url,window.location.origin),new URL(`${url.origin}${url.pathname}?${new URLSearchParams([...Array.from(url.searchParams.entries()),...Object.entries(params)])}`).href}_fetchGenres(){document.querySelector(".db--genres").innerHTML="";return fetch(this._addSearchParams("/apis/api.douban.moony.la/v1alpha1/doubanmovies/-/genres",{type:this.type})).then((response=>response.json())).then((data=>{data.length&&(this.genre_list=data,this._renderGenre())})),!0}_statusChange(){this.on("click",".db--typeItem",(t=>{const self=t.currentTarget;self.classList.contains("is-active")||(document.querySelector(".db--list").innerHTML="",document.querySelector(".lds-ripple").classList.remove("u-hide"),document.querySelector(".db--typeItem.is-active").classList.remove("is-active"),self.classList.add("is-active"),this.status=self.dataset.status,this.paged=1,this.finished=!1,this.subjects=[],this._fetchData())}))}_handleGenreClick(){this.on("click",".db--genreItem",(t=>{const self=t.currentTarget;if(self.classList.contains("is-active")){const index=this.genre.indexOf(self.innerText);return self.classList.remove("is-active"),this.genre.splice(index,1),this.paged=1,this.finished=!1,this.subjects=[],void this._fetchData()}document.querySelector(".db--list").innerHTML="",document.querySelector(".lds-ripple").classList.remove("u-hide"),self.classList.add("is-active"),this.genre.push(self.innerText),this.paged=1,this.finished=!1,this.subjects=[],this._fetchData()}))}_renderGenre(){document.querySelector(".db--genres").innerHTML=this.genre_list.map((item=>`${item}`)).join(""),this._handleGenreClick()}_fetchData(){var url=`/apis/api.douban.moony.la/v1alpha1/doubanmovies?page=${this.paged}&size=49&type=${this.type}&status=${this.status}`;const genre=this.genre;if(genre.length>0)for(let i=0;iresponse.json())).then((data=>{data.items.length?(null==this.subjects&&(this.subjects=[]),document.querySelector(".db--list").classList.contains("db--list__card")?(this.subjects=[...this.subjects,...data.items],this._randerDateTemplate()):(this.subjects=[...this.subjects,...data.items],this._randerListTemplate()),document.querySelector(".lds-ripple").classList.add("u-hide")):(document.querySelector(".db--list").classList.contains("db--list__card")?this._randerDateTemplate():this._randerListTemplate(),this.finished=!0,document.querySelector(".lds-ripple").classList.add("u-hide"))}))}_randerDateTemplate(){if(!this.subjects.length)return document.querySelector(".db--list").innerHTML='
';const result=this.subjects.reduce(((result,item)=>{const date=new Date(item.faves.createTime),key=`${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,"0")}`;return Object.prototype.hasOwnProperty.call(result,key)?result[key].push(item):result[key]=[item],result}),{});let html="";for(let key in result){const date=key.split("-");html+=`
${date[1]}
${date[0]}
`,html+=result[key].map((movie=>`
${movie.spec.score>0?''+movie.spec.score:""}${movie.spec.year>0?" · "+movie.spec.year:""}
\n \n
`)).join(""),html+="
"}document.querySelector(".db--list").innerHTML=html}_randerListTemplate(){if(!this.subjects.length)return document.querySelector(".db--list").innerHTML='
';document.querySelector(".db--list").innerHTML=this.subjects.map((item=>`
${item.faves.createTime}
${item.spec.score>0?''+item.spec.score:""}${item.spec.year>0?" · "+item.spec.year:""}
\n
\n `)).join("")}_handleScroll(){window.addEventListener("scroll",(()=>{var t=window.scrollY||window.pageYOffset;document.querySelector(".block-more").offsetTop+-window.innerHeight{if(t.target.classList.contains("current"))return;this.genre=[],this.type=t.target.dataset.type,"book"!=this.type?(this._fetchGenres(),document.querySelector(".db--genres").classList.remove("u-hide")):document.querySelector(".db--genres").classList.add("u-hide"),document.querySelector(".db--list").innerHTML="",document.querySelector(".lds-ripple").classList.remove("u-hide"),document.querySelector(".db--navItem.current").classList.remove("current");t.target.classList.add("current"),this.paged=1,this.finished=!1,this.subjects=[],this._fetchData()}))}_create(){document.querySelector(".db--container")&&(document.querySelector(".db--navItem.current")&&(this.type=document.querySelector(".db--navItem.current").dataset.type),document.querySelector(".db--list").dataset.type&&(this.type=document.querySelector(".db--list").dataset.type),"movie"==this.type&&document.querySelector(".db--genres").classList.remove("u-hide"),this._fetchGenres(),this._fetchData(),this._handleScroll(),this._handleNavClick(),this._statusChange())}}new HALO_DOUBAN;