import BaseUIElement from "./BaseUIElement"; export abstract class UIElement extends BaseUIElement { /** * Should be overridden for specific HTML functionality */ protected InnerConstructElement(): HTMLElement { // Uses the old fashioned way to construct an element using 'InnerRender' const innerRender = this.InnerRender(); if (innerRender === undefined || innerRender === "") { return undefined; } const el = document.createElement("span") if (typeof innerRender === "string") { el.innerHTML = innerRender } else { const subElement = innerRender.ConstructElement(); if (subElement === undefined) { return undefined; } el.appendChild(subElement) } return el; } protected abstract InnerRender(): string | BaseUIElement; }