| 
									
										
										
										
											2021-07-26 12:26:41 +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-07-26 12:26:41 +02:00
										 |  |  |   private _element: HTMLElement; | 
					
						
							| 
									
										
										
										
											2020-06-25 03:39:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 12:26:41 +02:00
										 |  |  |   constructor( | 
					
						
							|  |  |  |     contents: UIEventSource<string | BaseUIElement | BaseUIElement[]> | 
					
						
							|  |  |  |   ) { | 
					
						
							|  |  |  |     super(); | 
					
						
							| 
									
										
										
										
											2021-06-11 22:51:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 12:26:41 +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-07-26 12:26:41 +02:00
										 |  |  |       if (contents === undefined) { | 
					
						
							|  |  |  |         return el; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       if (typeof contents === "string") { | 
					
						
							|  |  |  |         el.innerHTML = contents; | 
					
						
							|  |  |  |       } else if (contents instanceof Array) { | 
					
						
							|  |  |  |         for (const content of contents) { | 
					
						
							| 
									
										
										
										
											2021-07-27 19:39:57 +02:00
										 |  |  |           const c = content?.ConstructElement(); | 
					
						
							| 
									
										
										
										
											2021-07-26 12:26:41 +02:00
										 |  |  |           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-07-26 12:26:41 +02:00
										 |  |  |   protected InnerConstructElement(): HTMLElement { | 
					
						
							|  |  |  |     return this._element; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |