forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			35 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import {InputElement} from "./InputElement"; | ||
|  | import {UIEventSource} from "../../Logic/UIEventSource"; | ||
|  | import BaseUIElement from "../BaseUIElement"; | ||
|  | import {VariableUiElement} from "../Base/VariableUIElement"; | ||
|  | 
 | ||
|  | export default class VariableInputElement<T> extends InputElement<T> { | ||
|  | 
 | ||
|  |     private readonly value: UIEventSource<T>; | ||
|  |     private readonly element: BaseUIElement | ||
|  |     public readonly IsSelected: UIEventSource<boolean>; | ||
|  |     private readonly upstream: UIEventSource<InputElement<T>>; | ||
|  | 
 | ||
|  |     constructor(upstream: UIEventSource<InputElement<T>>) { | ||
|  | 
 | ||
|  |         super() | ||
|  |         this.upstream = upstream; | ||
|  |         this.value = upstream.bind(v => v.GetValue()) | ||
|  |         this.element = new VariableUiElement(upstream) | ||
|  |         this.IsSelected = upstream.bind(v => v.IsSelected) | ||
|  |     } | ||
|  | 
 | ||
|  |     GetValue(): UIEventSource<T> { | ||
|  |         return this.value; | ||
|  |     } | ||
|  | 
 | ||
|  |     protected InnerConstructElement(): HTMLElement { | ||
|  |         return this.element.ConstructElement(); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     IsValid(t: T): boolean { | ||
|  |         return this.upstream.data.IsValid(t); | ||
|  |     } | ||
|  | 
 | ||
|  | } |