Files
ymb-site/app.js
T

3 lines
2.5 KiB
JavaScript

// Author: fruit.com.cn
(function(){'use strict';const d=window.YMB_DATA,s={genre:'Semua',query:''},grid=document.querySelector('#video-grid'),toast=document.querySelector('#toast');const notify=(m)=>{toast.textContent=m;toast.classList.add('show');setTimeout(()=>toast.classList.remove('show'),1600)};const render=()=>{document.querySelector('#genre-nav').innerHTML=d.genres.slice(1).map((g)=>`<a href="#home" data-genre="${g}">${g}</a>`).join('');document.querySelector('#filter-chips').innerHTML=d.genres.map((g)=>`<button class="chip ${g===s.genre?'active':''}" data-genre="${g}">${g}</button>`).join('');const rows=d.videos.filter((v)=>(s.genre==='Semua'||v[2]===s.genre)&&(!s.query||v.join(' ').toLowerCase().includes(s.query)));grid.innerHTML=rows.map((v,i)=>`<article class="video-card" data-play="${v[0]}"><div class="thumb"><img src="${v[3]}" alt="${v[0]}" loading="lazy"><span class="duration">${v[4]}</span></div><div class="video-meta"><span class="channel-avatar">${v[1][0]}</span><div><p class="video-title">${v[0]}</p><p class="video-sub">${v[1]}<br>${(i+4)*137} rb tayangan · ${i+1} hari lalu</p></div></div></article>`).join('')||'<p>Belum ada drama yang cocok.</p>';document.querySelector('#shorts-row').innerHTML=d.shorts.map((v)=>`<article class="short-card" data-play="${v[0]}"><img src="${v[1]}" alt="${v[0]}" loading="lazy"><span class="short-title">${v[0]}</span></article>`).join('');document.querySelector('#channel-grid').innerHTML=d.channels.map((v)=>`<article class="channel-card"><span class="channel-avatar" style="background:${v[3]}">${v[2]}</span><div><p>${v[0]}</p><span>${v[1]}</span></div><button class="follow-button" data-follow>${'Ikuti'}</button></article>`).join('')};document.addEventListener('click',(e)=>{const g=e.target.closest('[data-genre]');if(g){e.preventDefault();s.genre=g.dataset.genre;render()}const p=e.target.closest('[data-play]');if(p)notify(`Memutar: ${p.dataset.play}`);const f=e.target.closest('[data-follow]');if(f){f.textContent=f.textContent==='Ikuti'?'Mengikuti':'Ikuti';notify(f.textContent==='Mengikuti'?'Channel ditambahkan':'Channel dihapus')}if(e.target.closest('#menu-toggle'))document.querySelector('#sidebar').classList.toggle('open')});document.querySelector('#search-form').addEventListener('submit',(e)=>{e.preventDefault();s.query=document.querySelector('#global-search').value.trim().toLowerCase();render()});document.querySelector('#global-search').addEventListener('focus',()=>document.querySelector('#search-form').classList.add('open'));render()}());