2021-09-09 00:05:51 +02:00
|
|
|
import {UIEventSource} from "../../Logic/UIEventSource";
|
2021-06-10 01:36:20 +02:00
|
|
|
import BaseUIElement from "../BaseUIElement";
|
2020-06-25 03:39:31 +02:00
|
|
|
|
2021-06-10 01:36:20 +02:00
|
|
|
export class VariableUiElement extends BaseUIElement {
|
2021-09-09 00:05:51 +02:00
|
|
|
private _element: HTMLElement;
|
2020-06-25 03:39:31 +02:00
|
|
|
|
2021-09-09 00:05:51 +02:00
|
|
|
constructor(
|
|
|
|
contents: UIEventSource<string | BaseUIElement | BaseUIElement[]>
|
|
|
|
) {
|
|
|
|
super();
|
2021-06-11 22:51:45 +02:00
|
|
|
|
2021-09-09 00:05:51 +02:00
|
|
|
this._element = document.createElement("span");
|
|
|
|
const el = this._element;
|
|
|
|
contents.addCallbackAndRun((contents) => {
|
|
|
|
while (el.firstChild) {
|
|
|
|
el.removeChild(el.lastChild);
|
|
|
|
}
|
2021-06-14 02:39:23 +02:00
|
|
|
|
2021-09-09 00:05:51 +02:00
|
|
|
if (contents === undefined) {
|
|
|
|
return el;
|
|
|
|
}
|
|
|
|
if (typeof contents === "string") {
|
|
|
|
el.innerHTML = contents;
|
|
|
|
} else if (contents instanceof Array) {
|
|
|
|
for (const content of contents) {
|
|
|
|
const c = content?.ConstructElement();
|
|
|
|
if (c !== undefined && c !== null) {
|
|
|
|
el.appendChild(c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
const c = contents.ConstructElement();
|
|
|
|
if (c !== undefined && c !== null) {
|
|
|
|
el.appendChild(c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2020-06-25 03:39:31 +02:00
|
|
|
|
2021-09-09 00:05:51 +02:00
|
|
|
protected InnerConstructElement(): HTMLElement {
|
|
|
|
return this._element;
|
|
|
|
}
|
2021-07-26 12:26:41 +02:00
|
|
|
}
|