formgen/source/logic/input/wrapper.ts
2026-04-22 22:24:32 +02:00

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);
}
}
}