29 lines
1.9 KiB
JavaScript
29 lines
1.9 KiB
JavaScript
if (document.currentScript.src.includes('?boot')) {
|
|
window.YT.Party.boot();
|
|
document.getElementById('navPartyBtn').onclick = () => window.YT.Party.open();
|
|
} else {
|
|
Object.assign(window, {
|
|
WEB: true, $: id => document.getElementById(id),
|
|
data: { settings: {}, profile: null }, current: null, cachedIds: new Set(),
|
|
DirectMedia: { attach() {}, enabled: () => false, handle() {} },
|
|
Lazy: { load: () => Promise.resolve(), loaded: () => true },
|
|
Notes: { stageLyrics: { on: () => false, set() {} } },
|
|
API: { search: async () => ({ results: [{ id: 'demo-video1', title: 'Evening session' }] }) },
|
|
toast: text => { window.lastToast = text; }, escapeHtml: s => String(s).replace(/[&<>"']/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[c])),
|
|
fmtTime: String, updatePlayBtn() {}, advanceQueue() {},
|
|
TransportIcons: { svg: () => '' }, seekCount: 0, nextCount: 0,
|
|
});
|
|
window.els = { video: document.createElement('video'), audio: document.createElement('audio'), speed: { value: '1' }, audioOnlyToggle: document.createElement('input') };
|
|
window.Player = {
|
|
master: Object.assign(new EventTarget(), { currentTime: 0, paused: true, playbackRate: 1, readyState: 4, seeking: false, duration: 3600 }),
|
|
play() { this.master.paused = false; }, pause() { this.master.paused = true; },
|
|
toggle() { this.master.paused = !this.master.paused; },
|
|
seek(t) { this.master.currentTime = t; window.seekCount++; }, applySpeed() { this.master.playbackRate = Number(els.speed.value); },
|
|
};
|
|
els.video = Player.master;
|
|
window.playVideoAt = async (v, t = 0) => { window.current = { meta: v }; Player.master.currentTime = t; Player.master.paused = false; };
|
|
window.playNext = () => { window.nextCount++; };
|
|
window.playPrev = () => {};
|
|
els.audioOnlyToggle.addEventListener('change', () => { data.settings.audioOnly = els.audioOnlyToggle.checked; });
|
|
}
|