import { Text } from '@blockeditor/store'; import { tNumber } from '../../../logical/data-type.js'; import { columnManager } from '../manager.js'; import { richTextColumnTypeName } from '../rich-text/define.js'; export const numberColumnTypeName = 'number'; declare global { interface ColumnConfigMap { [numberColumnTypeName]: typeof numberPureColumnConfig; } } export const numberPureColumnConfig = columnManager.register< number, { decimal: number; } >(numberColumnTypeName, { name: 'Number', type: () => tNumber.create(), defaultData: () => ({ decimal: 0 }), cellToString: data => data?.toString() ?? '', cellFromString: data => { const num = data ? Number(data) : NaN; return { value: isNaN(num) ? null : num, }; }, cellToJson: data => data ?? null, }); numberPureColumnConfig.registerConvert( richTextColumnTypeName, (_column, cells) => ({ column: {}, cells: cells.map(v => new Text(v?.toString()).yText), }) );