Add audio embed feature

This commit is contained in:
Nathan Upchurch 2024-10-23 22:40:08 -05:00
parent a908843984
commit 8ad99a35d4

View File

@ -0,0 +1,51 @@
const template = document.createElement("template");
template.innerHTML = `
<style>
.cover {
object-fit: cover;
}
</style>
<figure class="mplayer" part="main">
<div class="coverContainer" part="coverContainer">
<img src="" class="cover" part="cover">
</div>
<div part="captionAndPlayer">
<figcaption part="caption">
<span class="title" part="title"></span><br /><span class="artist" part="artist"></span>
</figcaption>
<audio controls src="" class="player" part="player"></audio>
</div>
</figure>
`;
class mplayer extends HTMLElement {
constructor() {
super();
this._shadowRoot = this.attachShadow({ mode: "open" });
this._shadowRoot.appendChild(template.content.cloneNode(true));
this.$mplayer = this._shadowRoot.querySelector(".mplayer");
}
static get observedAttributes() {
return ["title", "artist", "media_url", "cover_url"];
}
attributeChangedCallback(name, oldVal, newVal) {
if (oldVal != newVal) {
this[name] = newVal;
this.render();
}
}
render() {
this.$mplayer.querySelector(".title").innerHTML = this.title;
this.$mplayer.querySelector(".artist").innerHTML = this.artist;
this.$mplayer.querySelector(".player").src = this.media_url;
this.$mplayer.querySelector(".coverContainer > img").src = this.cover_url;
}
}
window.customElements.define("wc-mplayer", mplayer);