| 
									
										
										
										
											2020-09-26 03:02:19 +02:00
										 |  |  | import {InputElement} from "./InputElement"; | 
					
						
							|  |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  | import Combine from "../Base/Combine"; | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  | import BaseUIElement from "../BaseUIElement"; | 
					
						
							| 
									
										
										
										
											2020-09-26 03:02:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class CombinedInputElement<T> extends InputElement<T> { | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  |     protected InnerConstructElement(): HTMLElement { | 
					
						
							|  |  |  |        return this._combined.ConstructElement(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-09-26 03:02:19 +02:00
										 |  |  |     private readonly _a: InputElement<T>; | 
					
						
							| 
									
										
										
										
											2021-06-10 01:36:20 +02:00
										 |  |  |     private readonly _b: BaseUIElement; | 
					
						
							|  |  |  |     private readonly _combined: BaseUIElement; | 
					
						
							| 
									
										
										
										
											2020-09-26 03:02:19 +02:00
										 |  |  |     public readonly IsSelected: UIEventSource<boolean>; | 
					
						
							|  |  |  |     constructor(a: InputElement<T>, b: InputElement<T>) { | 
					
						
							|  |  |  |         super(); | 
					
						
							|  |  |  |         this._a = a; | 
					
						
							|  |  |  |         this._b = b; | 
					
						
							|  |  |  |         this.IsSelected = this._a.IsSelected.map((isSelected) => { | 
					
						
							|  |  |  |             return isSelected || b.IsSelected.data | 
					
						
							|  |  |  |         }, [b.IsSelected]) | 
					
						
							|  |  |  |         this._combined = new Combine([this._a, this._b]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     GetValue(): UIEventSource<T> { | 
					
						
							|  |  |  |         return this._a.GetValue(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     IsValid(t: T): boolean { | 
					
						
							|  |  |  |         return this._a.IsValid(t); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |