From f0ab7875c113569bde1a44788008e4048c8a85d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lal?= Date: Thu, 13 Feb 2020 15:57:53 +0100 Subject: [PATCH] html audio: reveal too --- packages/html/elements/audio.js | 2 +- packages/html/ui/audio.js | 34 +++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/packages/html/elements/audio.js b/packages/html/elements/audio.js index a250e3270..a95095b34 100644 --- a/packages/html/elements/audio.js +++ b/packages/html/elements/audio.js @@ -38,7 +38,7 @@ exports.audio = { default: false } }, - html: ``, scripts: [ '../ui/audio.js' diff --git a/packages/html/ui/audio.js b/packages/html/ui/audio.js index 70f438cba..62e363dad 100644 --- a/packages/html/ui/audio.js +++ b/packages/html/ui/audio.js @@ -1,9 +1,39 @@ class HTMLElementAudio extends HTMLAudioElement { + static get defaults() { + return { + dataSrc: null + }; + } + + patch(state) { + this.classList.remove('error', 'loading'); + var loc = Page.parse(this.options.src); + var meta = state.scope.$hrefs && state.scope.$hrefs[loc.pathname] || {}; + if (!meta || !meta.width || !meta.height) return; + this.width = meta.width; + this.height = meta.height; + } + reveal(state) { + var curSrc = this.options.src; + if (curSrc != this.currentSrc) { + try { + this.currentSrc = curSrc; + } catch(e) { + // pass + } + this.setAttribute('src', curSrc); + } + if (this.isContentEditable) this.pause(); + } handleClick(e) { if (this.isContentEditable) e.preventDefault(); } - setup(state) { - if (this.isContentEditable) this.pause(); + captureLoad() { + this.classList.remove('loading'); + } + captureError() { + this.classList.remove('loading'); + this.classList.add('error'); } }