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