export class PlaylistRow extends HTMLElement { onPlay: (trackId: string) => void; static get observedAttributes() { return ["trackId"]; } constructor() { super(); this.onPlay = (_) => {}; } get trackId(): string | null { return this.getAttribute("trackId"); } set trackId(id: string | null) { id ? this.setAttribute("trackId", id) : this.removeAttribute("trackId"); } connectedCallback() { this.classList.add("playlist-row"); const playButton = document.createElement("button"); playButton.innerHTML = "Play"; playButton.addEventListener("click", (_) => { if (this.trackId) { this.onPlay(this.trackId); } }); this.appendChild(playButton); } }