| 
									
										
										
										
											2020-09-12 23:15:17 +02:00
										 |  |  | import {FixedUiElement} from "./FixedUiElement"; | 
					
						
							|  |  |  | import {Utils} from "../../Utils"; | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2021-11-25 22:16:00 +01:00
										 |  |  | import Title from "./Title"; | 
					
						
							| 
									
										
										
										
											2020-07-21 01:37:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  | export default class Combine extends BaseUIElement { | 
					
						
							|  |  |  |     private readonly uiElements: BaseUIElement[]; | 
					
						
							| 
									
										
										
										
											2020-07-21 01:37:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  |     constructor(uiElements: (string | BaseUIElement)[]) { | 
					
						
							| 
									
										
										
										
											2020-09-12 23:15:17 +02:00
										 |  |  |         super(); | 
					
						
							|  |  |  |         this.uiElements = Utils.NoNull(uiElements) | 
					
						
							|  |  |  |             .map(el => { | 
					
						
							|  |  |  |                 if (typeof el === "string") { | 
					
						
							|  |  |  |                     return new FixedUiElement(el); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 return el; | 
					
						
							|  |  |  |             }); | 
					
						
							| 
									
										
										
										
											2020-07-21 01:37:48 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     AsMarkdown(): string { | 
					
						
							|  |  |  |         return this.uiElements.map(el => el.AsMarkdown()).join(this.HasClass("flex-col") ? "\n\n" : " "); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  |     protected InnerConstructElement(): HTMLElement { | 
					
						
							|  |  |  |         const el = document.createElement("span") | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  |         try { | 
					
						
							|  |  |  |             for (const subEl of this.uiElements) { | 
					
						
							|  |  |  |                 if (subEl === undefined || subEl === null) { | 
					
						
							|  |  |  |                     continue; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2021-11-07 16:34:51 +01:00
										 |  |  |                 try { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                     const subHtml = subEl.ConstructElement() | 
					
						
							|  |  |  |                     if (subHtml !== undefined) { | 
					
						
							|  |  |  |                         el.appendChild(subHtml) | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } catch (e) { | 
					
						
							| 
									
										
										
										
											2021-10-08 04:33:39 +02:00
										 |  |  |                     console.error("Could not generate subelement in combine due to ", e) | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2020-09-27 20:51:37 +02:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  |         } catch (e) { | 
					
						
							| 
									
										
										
										
											2021-06-16 14:23:53 +02:00
										 |  |  |             const domExc = e as DOMException | 
					
						
							|  |  |  |             console.error("DOMException: ", domExc.name) | 
					
						
							|  |  |  |             el.appendChild(new FixedUiElement("Could not generate this combine!").SetClass("alert").ConstructElement()) | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  |         return el; | 
					
						
							| 
									
										
										
										
											2020-07-21 01:37:48 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-11-25 22:16:00 +01:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2021-11-30 22:50:48 +01:00
										 |  |  |     public getElements():  BaseUIElement[]{ | 
					
						
							|  |  |  |         return this.uiElements | 
					
						
							| 
									
										
										
										
											2021-11-25 22:16:00 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-11-30 22:50:48 +01:00
										 |  |  |      | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-15 00:28:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-21 01:37:48 +02:00
										 |  |  | } |