summaryrefslogtreecommitdiff
path: root/docs/assets/js/audio-player.js
diff options
context:
space:
mode:
authorlens <lens@neural.garden>2019-04-11 15:05:35 +0000
committerlens <lens@neural.garden>2019-04-11 15:05:35 +0000
commit878d81ec29ec092fca67c4c4a89b944f9fe24b5a (patch)
treeecc6557556ad251e66d6d57e80598703446f0f90 /docs/assets/js/audio-player.js
parent47e85adc234317b985966ba8e00a186356a742d4 (diff)
pavone cristallo site
Diffstat (limited to 'docs/assets/js/audio-player.js')
-rw-r--r--docs/assets/js/audio-player.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/docs/assets/js/audio-player.js b/docs/assets/js/audio-player.js
new file mode 100644
index 0000000..4dbe601
--- /dev/null
+++ b/docs/assets/js/audio-player.js
@@ -0,0 +1,76 @@
+document.addEventListener("DOMContentLoaded", function(){
+
+var is_mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)
+var links = document.querySelectorAll("a")
+var audio, music = [], current_index = -1, typing = false
+// var comment = document.querySelector("#comment")
+Array.prototype.slice.apply(links).forEach(function(url){
+ if (url.href.match(/\.(mp3|wav|ogg)/i)) {
+ var index = music.length
+ if (is_mobile) url.href = url.href.replace(/^https/,"http")
+ music.push(url)
+ url.addEventListener("click", function(e){
+ if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) return
+ e.preventDefault()
+ play(index)
+ })
+ }
+ else if (url.href.match(/(gif|jpe?g|png|bmp)/i)) {
+ url.innerHTML = "<img src='" + url.href + "'>"
+ url.addEventListener("click", function(e){
+ if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) return
+ e.preventDefault()
+ url.classList.toggle("zoomed")
+ })
+ }
+})
+if (music.length) {
+ audio = document.createElement("audio")
+ audio.setAttribute("controls", true)
+ audio.addEventListener("ended", next)
+ audio.src = music[0]
+ var player = document.querySelector("table")
+ player.parentNode.insertBefore(audio, player)
+ document.body.addEventListener("keydown", keydown)
+ // comment.addEventListener("focus", focusTextBox)
+ // comment.addEventListener("blur", blurTextBox)
+}
+function play(index){
+ current_index = (index + music.length) % music.length
+ audio.src = music[current_index].href
+ audio.play()
+ var playing = document.querySelector(".playing")
+ if (playing) playing.classList.remove("playing")
+ music[current_index].classList.add("playing")
+}
+function prev(){
+ play(current_index - 1)
+}
+function next(){
+ play(current_index + 1)
+}
+function toggle(){
+ if (audio.paused) audio.play()
+ else audio.pause()
+}
+function keydown(e){
+ if (typing || e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) return
+ switch (e.keyCode) {
+ case 37: // left
+ prev()
+ break;
+ case 39: // right
+ next()
+ break;
+ case 32: // spacebar
+ e.preventDefault()
+ toggle()
+ break;
+ }
+}
+function focusTextBox (){ typing = true }
+function blurTextBox (){ typing = false }
+
+})
+
+