forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {FixedUiElement} from "./FixedUiElement";
 | 
						|
import {Utils} from "../../Utils";
 | 
						|
import BaseUIElement from "../BaseUIElement";
 | 
						|
 | 
						|
export default class Combine extends BaseUIElement {
 | 
						|
    private readonly uiElements: BaseUIElement[];
 | 
						|
 | 
						|
    constructor(uiElements: (string | BaseUIElement)[]) {
 | 
						|
        super();
 | 
						|
        this.uiElements = Utils.NoNull(uiElements)
 | 
						|
            .map(el => {
 | 
						|
                if (typeof el === "string") {
 | 
						|
                    return new FixedUiElement(el);
 | 
						|
                }
 | 
						|
                return el;
 | 
						|
            });
 | 
						|
    }
 | 
						|
 | 
						|
    AsMarkdown(): string {
 | 
						|
        let sep = " ";
 | 
						|
        if (this.HasClass("flex-col")) {
 | 
						|
            sep = "\n\n"
 | 
						|
        }
 | 
						|
        return this.uiElements.map(el => el.AsMarkdown()).join(sep);
 | 
						|
    }
 | 
						|
 | 
						|
    Destroy() {
 | 
						|
        super.Destroy();
 | 
						|
        for (const uiElement of this.uiElements) {
 | 
						|
            uiElement.Destroy()
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public getElements(): BaseUIElement[] {
 | 
						|
        return this.uiElements
 | 
						|
    }
 | 
						|
 | 
						|
    protected InnerConstructElement(): HTMLElement {
 | 
						|
        const el = document.createElement("span")
 | 
						|
        try {
 | 
						|
            if(this.uiElements === undefined){
 | 
						|
                console.error("PANIC")   
 | 
						|
            }
 | 
						|
            for (const subEl of this.uiElements) {
 | 
						|
                if (subEl === undefined || subEl === null) {
 | 
						|
                    continue;
 | 
						|
                }
 | 
						|
                try {
 | 
						|
 | 
						|
                    const subHtml = subEl.ConstructElement()
 | 
						|
                    if (subHtml !== undefined) {
 | 
						|
                        el.appendChild(subHtml)
 | 
						|
                    }
 | 
						|
                } catch (e) {
 | 
						|
                    console.error("Could not generate subelement in combine due to ", e)
 | 
						|
                }
 | 
						|
            }
 | 
						|
        } catch (e) {
 | 
						|
            const domExc = e as DOMException
 | 
						|
            console.error("DOMException: ", domExc.name)
 | 
						|
            el.appendChild(new FixedUiElement("Could not generate this combine!").SetClass("alert").ConstructElement())
 | 
						|
        }
 | 
						|
 | 
						|
        return el;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
} |