namespace formgen.input { /** */ export class class_input_wrapper implements interface_input { /** */ private core : interface_input; /** */ private wrap : ((type_value_inner) => type_value_outer); /** */ private unwrap : ((type_value_outer) => type_value_inner); /** */ public constructor( core : interface_input, wrap : ((type_value_inner) => type_value_outer), unwrap : ((type_value_outer) => type_value_inner) ) { this.core = core; this.wrap = wrap; this.unwrap = unwrap; } /** * [implementation] */ public async setup( element_target : Element ) : Promise { return this.core.setup(element_target); } /** * [implementation] */ public async read( ) : Promise { const value_inner : type_value_inner = await this.core.read(); const value : type_value_outer = this.wrap(value_inner); return Promise.resolve(value); } /** * [implementation] */ public async write( value : type_value_outer ) : Promise { const value_inner : type_value_inner = this.unwrap(value); await this.core.write(value_inner); return Promise.resolve(undefined); } } }