import * as gui from './index.mjs';
import GuiElement from './element.mjs';
import {context} from '../graphics/index.mjs';

export default class GuiText extends GuiElement {
	constructor(text = '', x, y, w, h, {
		size = 10,
		align = 'left',
		valign = 'top',
		color = '#fff'
	} = {}) {
		w = w;
		h = h;
		super(x, y, w, h);
		this.type = 'text';
		this.color = color;
		this.text = text;
		this.spacing = size * 1.2;
		this.font = size + 'px Consolas';
		this.align = align;
		this.valign = valign;
	}

	splitLines() {
		// Not very robust, but good enough for now. Mebe fix later?
		context.font = this.font;
		let maxLineLength = (this.w / context.measureText('A').width) | 0;
		maxLineLength = Math.max(maxLineLength, 1);

		let lines = [];
		let currentLine = '';

		this.text.split('\n').forEach(l => {
			currentLine = '';
			l.split(' ').forEach(word => {
				if (word.length + currentLine.length > maxLineLength) {
					lines.push(currentLine.slice(0, -1));
					currentLine = '';
				}
				currentLine += word + ' ';
			});
			lines.push(currentLine.slice(0, -1));
		});

		this.text = lines.join('\n');
	}
}
