import { useState } from 'react'; import Markdown from 'react-markdown' import LynxKiteNode from './LynxKiteNode'; import Table from './Table'; import React from 'react'; function toMD(v: any): string { if (typeof v === 'string') { return v; } if (Array.isArray(v)) { return v.map(toMD).join('\n\n'); } return JSON.stringify(v); } export default function NodeWithTableView(props: any) { const [open, setOpen] = useState({} as { [name: string]: boolean }); const display = props.data.display?.value; const single = display?.dataframes && Object.keys(display?.dataframes).length === 1; return ( {display && [ Object.entries(display.dataframes || {}).map(([name, df]: [string, any]) => {!single &&
setOpen({ ...open, [name]: !open[name] })}>{name}
} {(single || open[name]) && (df.data.length > 1 ? :
{df.columns.map((c: string, i: number) =>
{c}
{toMD(df.data[0][i])}
) }
)} ), Object.entries(display.others || {}).map(([name, o]) => <>
setOpen({ ...open, [name]: !open[name] })}>{name}
{open[name] &&
{(o as any).toString()}
} )]} ); }