export default class HostRecord { public value = ''; // tslint:disable-next-line:max-line-length public type: 'paragraph'|'database_ref'|'code_ref'|'file_ref'|'markdown'|'form_input_text'|'form_input_number'|'form_input_password'|'form_input_email'|'form_input_select'|'form_input_multiselect'|'form_input_textarea' = 'paragraph'; public CreatedAt: string; public PageId: string; private privUUID: string; public UpdatedAt: string; public Value: any; public AdditionalData: any; public get UUID(): string { return this.privUUID; } public set UUID(val: string) {} constructor(value = '') { this.value = value; } public isNorm() { return ['paragraph', 'header1', 'header2', 'header3', 'header4', 'block_code', 'click_link', 'page_sep'].includes(this.type); } public isForm() { return !!this.type?.toLowerCase()?.startsWith('form_input_'); } load(data: any) { this.type = data.Type; this.privUUID = data.UUID; [ 'CreatedAt', 'PageId', 'UpdatedAt', 'Value', 'AdditionalData', ].forEach(field => { if ( field in data ) { this[field] = data[field]; } }); } toSave() { const data: any = { Type: this.type }; [ 'CreatedAt', 'PageId', 'UUID', 'UpdatedAt', 'Value', 'AdditionalData', ].forEach(field => { if ( field in this ) { data[field] = this[field]; } }); if ( !data.Value ) { data.Value = {}; } data.Value.Value = this.value; return data; } }