import { i18n } from '@osd/i18n' ; import { ExpressionTypeDefinition } from '../types' ; import { Datatable } from './datatable' ; import { ExpressionValueRender } from './render' ; const name = 'number' ; export const number = { name , from : { null : ( ) => 0 , boolean : ( b ) => Number ( b ) , string : ( n ) => { const value = Number ( n ) ; if ( Number . isNaN ( value ) ) { throw new Error ( i18n . translate ( 'expressions.types.number.fromStringConversionErrorMessage' , { defaultMessage : 'Can\'t typecast "{string}" string to number' , values : { string : n , } , } ) ) ; } return value ; } , } , to : { render : ( value ) : ExpressionValueRender < { text : string ; } > => { const text = `${ value }` ; return { type : 'render' , as : 'text' , value : { text } , } ; } , datatable : ( value ) : Datatable => ( { type : 'datatable' , columns : [ { id : 'value' , name : 'value' , meta : { type : 'number' } } ] , rows : [ { value } ] , } ) , } , } ;