class CustomCodeSnippet extends HTMLElement { constructor() { super(); this._title = this.getAttribute('title') || 'Code Snippet'; this._language = this.getAttribute('language') || 'javascript'; this._code = this.innerHTML.trim(); } static get observedAttributes() { return ['title', 'language', 'code']; } attributeChangedCallback(name, oldValue, newValue) { if (oldValue !== newValue) { this[`_${name}`] = newValue; this.render(); } } connectedCallback() { this.render(); } render() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
${this._code}