import {Utils} from "../../Utils";
import BaseUIElement from "../BaseUIElement";
import Translations from "../i18n/Translations";

export default class List extends BaseUIElement {
    private readonly uiElements: BaseUIElement[];
    private readonly _ordered: boolean;

    constructor(uiElements: (string | BaseUIElement)[], ordered = false) {
        super();
        this._ordered = ordered;
        this.uiElements = Utils.NoNull(uiElements)
            .map(s => Translations.W(s));
    }

    AsMarkdown(): string {
        if (this._ordered) {
            return "\n\n" + this.uiElements.map((el, i) => "  " + i + ". " + el.AsMarkdown().replace(/\n/g, '  \n')).join("\n") + "\n"
        } else {
            return "\n\n" + this.uiElements.map(el => "  - " + el.AsMarkdown().replace(/\n/g, '  \n')).join("\n") + "\n"

        }
    }

    protected InnerConstructElement(): HTMLElement {
        const el = document.createElement(this._ordered ? "ol" : "ul")

        for (const subEl of this.uiElements) {
            if (subEl === undefined || subEl === null) {
                continue;
            }
            const subHtml = subEl.ConstructElement()
            if (subHtml !== undefined) {
                const item = document.createElement("li")
                item.appendChild(subHtml)
                el.appendChild(item)
            }
        }

        return el;
    }

}