30 lines
646 B
TypeScript
30 lines
646 B
TypeScript
|
import {UIElement} from "../UIElement";
|
||
|
|
||
|
export default class LazyElement extends UIElement {
|
||
|
|
||
|
|
||
|
private _content: UIElement = undefined;
|
||
|
|
||
|
public Activate: () => void;
|
||
|
|
||
|
constructor(content: (() => UIElement)) {
|
||
|
super();
|
||
|
this.dumbMode = false;
|
||
|
const self = this;
|
||
|
this.Activate = () => {
|
||
|
if (this._content === undefined) {
|
||
|
self._content = content();
|
||
|
}
|
||
|
self.Update();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
InnerRender(): string {
|
||
|
if (this._content === undefined) {
|
||
|
return "Rendering...";
|
||
|
}
|
||
|
return this._content.InnerRender();
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|