import { z } from "zod" import { BlocksEnums } from "../../../../types/blocksEnum" export const tableSchema = z.object({ typename: z .literal(BlocksEnums.block.Table) .optional() .default(BlocksEnums.block.Table), table: z .object({ heading: z.string().optional(), preamble: z.string().optional().default(""), column_widths: z.array(z.number()), table: z.object({ tableState: z.object({ columns: z.array( z.object({ id: z.string(), label: z.string().default(""), accessor: z.string(), dataType: z.string(), }) ), data: z.array(z.object({}).catchall(z.string())), skipReset: z.boolean(), tableActionEnabled: z.boolean().optional().default(false), headerRowAdded: z.boolean().optional().default(false), }), }), }) .transform((data) => { const totalWidth = data.column_widths.reduce( (acc, width) => acc + width, 0 ) const columns = data.table.tableState.columns.map((col, idx) => ({ id: col.id, header: col.label || "", width: data.column_widths[idx] || 0, })) const rows = data.table.tableState.data.map((rowData) => columns.reduce>((transformedRow, column) => { transformedRow[column.id] = rowData[column.id] || "" return transformedRow }, {}) ) return { heading: data.heading, preamble: data.preamble, columns, rows, totalWidth, } }), })