const template = document.createElement('template');

template.innerHTML = `
<style>
	a {
		color: var(--wc-link-color);
		text-decoration-color: var(--wc-link-decoration-color);
		text-decoration-thickness: var(--wc-link-decoration-thickness);
	}
	#comment {
		margin: var(--wc-comment-text-margin);
	}
	#comment p {
		margin: 0 auto 0 auto;
	}
	#meta {
		display: flex;
		flex-flow: row nowrap;
	}
	#meta-text {
		display: flex;
		flex-flow: column nowrap;
		width: 100%;
	}
	#meta-text p {
		margin: 0 1rem 0 1rem;
	}
</style>

<article id="commentContainer" class="blog-comment" part="main">
	<div id="meta" part="meta">
		<div>
			<wc-profile-pic url="" />
		</div>
		<div id="meta-text" part="meta-text">
			<p id="author" part="author">
				<a id="author-link" part="author-link"></a><span> says:</span>
			</p>
			<p id="publish-date" part="publish-date"></p>
		</div>
	</div>
	<div id="comment" part="content">
	</div>
</article>
`

class comment extends HTMLElement {
	constructor() {
		super();

		this._shadowRoot = this.attachShadow({ 'mode': 'open' });
		this._shadowRoot.appendChild(template.content.cloneNode(true));
		this.$comment = this._shadowRoot.querySelector('#commentContainer');
	}

	static get observedAttributes() {
		return ['author_name', 'author_url', 'avatar_url', 'comment_content', 'publish_date'];
	}

	attributeChangedCallback(name, oldVal, newVal) {
		if (oldVal != newVal) {
			this[name] = newVal;
			this.render();
		}
	}

	render() {
		this.$comment.querySelector('#author-link').innerHTML = this.author_name;
		this.$comment.querySelector('#author-link').href = this.author_url;
		this.$comment.querySelector('wc-profile-pic').setAttribute('url', this.avatar_url)
		this.$comment.querySelector('#comment').innerHTML = this.comment_content;
		this.$comment.querySelector('#publish-date').innerHTML = this.publish_date;
	}
}

window.customElements.define('wc-comment', comment);