forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { UIEventSource } from "../../Logic/UIEventSource";
 | 
						|
import BaseUIElement from "../BaseUIElement";
 | 
						|
 | 
						|
export class VariableUiElement extends BaseUIElement {
 | 
						|
  private _element: HTMLElement;
 | 
						|
 | 
						|
  constructor(
 | 
						|
    contents: UIEventSource<string | BaseUIElement | BaseUIElement[]>
 | 
						|
  ) {
 | 
						|
    super();
 | 
						|
 | 
						|
    this._element = document.createElement("span");
 | 
						|
    const el = this._element;
 | 
						|
    contents.addCallbackAndRun((contents) => {
 | 
						|
      while (el.firstChild) {
 | 
						|
        el.removeChild(el.lastChild);
 | 
						|
      }
 | 
						|
 | 
						|
      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);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  protected InnerConstructElement(): HTMLElement {
 | 
						|
    return this._element;
 | 
						|
  }
 | 
						|
}
 |