export class Component {
	constructor() {
		this._component_name = Object.getPrototypeOf(this).constructor.name
		this._template = document.createElement('template')
		this._debug = (sessionStorage.getItem('debug') === 'true')
	}
	render() {
		const component = this.renderComponent()

		if (typeof component[Symbol.iterator] === 'function')
			this._template.content.replaceChildren(...component)
		else
			this._template.content.replaceChildren(component)

		for (const e of this._template.content.children) {
			e.setAttribute('data-component-name', this._component_name)

			if (this._debug) {
				e.setAttribute('data-tooltip', this._component_name)
				e.classList.add('tooltip')
				e.classList.add('left')

				e.addEventListener('mouseover', event => {
					if (event.target !== e)
						return
					e.style.border = '1px solid #f0f';
				})

				e.addEventListener('mouseout', event => {
					if (event.target !== e)
						return
					e.style.border = 'none';
				})
			}
		}

		return this._template.content
	}
}
