76 lines
1.3 KiB
TypeScript
76 lines
1.3 KiB
TypeScript
namespace formgen.input
|
|
{
|
|
|
|
/**
|
|
*/
|
|
export class class_input_wrapper<type_value_inner, type_value_outer> implements interface_input<type_value_outer>
|
|
{
|
|
|
|
/**
|
|
*/
|
|
private core : interface_input<type_value_inner>;
|
|
|
|
|
|
/**
|
|
*/
|
|
private wrap : ((type_value_inner) => type_value_outer);
|
|
|
|
|
|
/**
|
|
*/
|
|
private unwrap : ((type_value_outer) => type_value_inner);
|
|
|
|
|
|
/**
|
|
*/
|
|
public constructor(
|
|
core : interface_input<type_value_inner>,
|
|
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<void>
|
|
{
|
|
return this.core.setup(element_target);
|
|
}
|
|
|
|
|
|
/**
|
|
* [implementation]
|
|
*/
|
|
public async read(
|
|
) : Promise<type_value_outer>
|
|
{
|
|
const value_inner : type_value_inner = await this.core.read();
|
|
const value : type_value_outer = this.wrap(value_inner);
|
|
return Promise.resolve<type_value_outer>(value);
|
|
}
|
|
|
|
|
|
/**
|
|
* [implementation]
|
|
*/
|
|
public async write(
|
|
value : type_value_outer
|
|
) : Promise<void>
|
|
{
|
|
const value_inner : type_value_inner = this.unwrap(value);
|
|
await this.core.write(value_inner);
|
|
return Promise.resolve<void>(undefined);
|
|
}
|
|
|
|
}
|
|
|
|
}
|