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);