diff --git a/index.html b/index.html index 8a1fac6..23cae82 100644 --- a/index.html +++ b/index.html @@ -36,8 +36,9 @@ /* basic layout */ html, body { - max-width: 960px; width: 100%; + height: 100%; + overflow: auto; } body { @@ -53,9 +54,12 @@ #mainContainer { position: relative; display: grid; - grid-template-columns: auto auto; justify-content: space-around; width: 100%; + max-width: 960px; + left: 0; + right: 0; + margin: auto; margin-bottom: 40px; } @@ -69,12 +73,18 @@ /*** title ***/ + #titleContainer { + height: 0; + } + #titleContainer.active { + height: auto; + } #title { margin: 20px 20px 4px 20px; font-size: 26px; display: none; } - #title.active { + #titleContainer.active #title { display: block; } #mainContainer.vertical #title { @@ -85,19 +95,22 @@ margin: 20px; text-align: center; } - #mainContainer.title-span #titleContainer { + #mainContainer:not(.vertical).title-span #titleContainer { grid-column: 1/3; } /*** media column ***/ #mediaColumn { + display: none; grid-row: 1/3; grid-column: 2; - display: flex; flex-direction: column; position: relative; } + #mediaColumn.active { + display: flex; + } #mainContainer.vertical #mediaColumn { grid-row: 2; grid-column: 1; @@ -301,6 +314,7 @@ font-size: 12px; align-self: end; color: var(--primaryAltTextColor); + user-select: none; } #controls #scrubberTrackContainer { @@ -310,6 +324,7 @@ padding: 4px 0; user-select: none; cursor: pointer; + touch-action: none; } #controls #scrubberTrack { background-color: var(--primaryAltColor); @@ -369,6 +384,7 @@ position: relative; align-self: start; transition: width 0.2s; + touch-action: none; } #controls #volumeContainer.hover #volumeTrackContainer { width: 80px; @@ -610,12 +626,12 @@
____
-
+
+
@@ -651,6 +667,7 @@ let prevTrackEl = document.getElementById('prevTrack'); let titleEl = document.getElementById('title'); + let titleContainerEl = document.getElementById('titleContainer'); let mediaColumnEl = document.getElementById('mediaColumn'); let mediaContainerEl = document.getElementById('mediaContainer'); let mediaInfoEl = document.getElementById('mediaInfo'); @@ -715,7 +732,7 @@ document.getElementById('audio').classList.remove('native'); mediaVideoEl.removeAttribute('controls'); } - mediaContainerEl.style.maxWidth = mediaContainerEl.style.maxHeight = theme.coverSize + 'px'; + mediaContainerEl.style.maxWidth = theme.coverSize + 'px'; mediaColumnEl.style.maxWidth = theme.coverSize + 'px'; if(theme.customCSS !== undefined){ @@ -728,16 +745,21 @@ } function loadContent(data){ - if(data.cover) loadCover(data.cover); + if(data.cover){ + mediaColumnEl.classList.add('active'); + loadCover(data.cover); + } else { + mediaColumnEl.classList.remove('active'); + } if(data.media) loadMedia(data.media); } function updateTitle(title){ if(title){ - titleEl.classList.add('active'); + titleContainerEl.classList.add('active'); config.title = title; titleEl.innerHTML = title; } else { - titleEl.classList.remove('active'); + titleContainerEl.classList.remove('active'); } } function updateDescription(description){ @@ -759,13 +781,13 @@ let description = data.description; config = data; - console.log(data); - loadContent(data); updateTitle(title) updateDescription(description); updateTheme(theme); + document.title = titleEl.textContent; + try { volume = parseFloat(localStorage.getItem('volume')); muted = parseInt(localStorage.getItem('muted')); @@ -844,7 +866,6 @@ loaderEl = document.createElement('audio'); } loaderEl.addEventListener('loadedmetadata', e => { - console.log('loaded metadata', entry.title); entry.duration = e.target.duration; trackEl.querySelector('.duration').textContent = toHMS(entry.duration); if(entry === currentEntry){ @@ -859,7 +880,6 @@ trackEl.querySelector('button').setAttribute('title', 'error loading file'); }); loaderEl.addEventListener('canplay', e => { - console.log('can play', entry.title); removeLoading(entry, true); }); loaderEl.volume = 0; @@ -1022,11 +1042,11 @@ } let scrubberDragged = false; - scrubberTrackContainerEl.addEventListener('mousedown', e => { + scrubberTrackContainerEl.addEventListener('pointerdown', e => { scrubberDragged = true; scrub(e.clientX); }); - document.addEventListener('mouseup', e => { + document.addEventListener('pointerup', e => { if(scrubberDragged){ scrubberDragged = false; endScrub(); @@ -1036,10 +1056,13 @@ endVolumeScrub(); } }); - document.addEventListener('mousemove', e => { + document.addEventListener('pointermove', e => { scrub(e.clientX); scrubVolume(e.clientX); }); + document.addEventListener('pointercancel', e => { + console.log(e); + }); nextTrackEl.addEventListener('click', e => { nextTrack(); @@ -1179,7 +1202,7 @@ playerEl.src = entry.file; setLoading(currentEntry); entry.trackEl.classList.add('active'); - controlsEl.querySelector('.title').textContent = entry.title; + controlsEl.querySelector('.title').innerHTML = entry.title; if(entry.info){ mediaInfoEl.innerHTML = entry.info; mediaInfoContainer.classList.add('active');