import { FieldModel, INormalizeBeforeSubmit } from '../models'; import { BasicBuilder } from './basic'; import { Maybe, or } from '../maybe'; import { id } from '../utils'; export class FieldBuilder extends BasicBuilder> { constructor(protected _defaultValue: Value) { super(); } private _normalizeBeforeSubmit: INormalizeBeforeSubmit = id; normalizeBeforeSubmit(normalizeBeforeSubmit: INormalizeBeforeSubmit) { this._normalizeBeforeSubmit = normalizeBeforeSubmit; } build(defaultValue?: Maybe) { const model = new FieldModel(or(defaultValue, () => this._defaultValue)); model.validators = this._validators; model.normalizeBeforeSubmit = this._normalizeBeforeSubmit; return model; } }