class AudioComparison extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
`; const beforeAudio = this.shadowRoot.getElementById('before-audio'); const afterAudio = this.shadowRoot.getElementById('after-audio'); const toggle = this.shadowRoot.querySelector('input[type="checkbox"]'); // Set audio sources from attributes if (this.hasAttribute('before-src')) { beforeAudio.querySelector('source').src = this.getAttribute('before-src'); beforeAudio.load(); } if (this.hasAttribute('after-src')) { afterAudio.querySelector('source').src = this.getAttribute('after-src'); afterAudio.load(); } // Toggle functionality toggle.addEventListener('change', () => { if (toggle.checked) { beforeAudio.classList.remove('active'); afterAudio.classList.add('active'); } else { beforeAudio.classList.add('active'); afterAudio.classList.remove('active'); } }); } } customElements.define('audio-comparison', AudioComparison);