/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ import { FlexRow, ManagedTable, TableBodyRow, TableBodyColumn, Value, renderValue, } from 'flipper'; import React, {useMemo} from 'react'; import {Structure} from './index'; function transformRow( columns: Array, row: Array, index: number, ): TableBodyRow { const transformedColumns: {[key: string]: TableBodyColumn} = {}; for (let i = 0; i < columns.length; i++) { transformedColumns[columns[i]] = {value: renderValue(row[i], true)}; } return {key: String(index), columns: transformedColumns}; } const DatabaseStructureManagedTable = React.memo( (props: {columns: Array; rows: Array>}) => { const {columns, rows} = props; const renderRows = useMemo( () => rows.map((row: Array, index: number) => transformRow(columns, row, index), ), [rows, columns], ); const renderColumns = useMemo( () => columns.reduce( (acc, val) => Object.assign({}, acc, {[val]: {value: val, resizable: true}}), {}, ), [columns], ); const columnOrder = useMemo( () => columns.map((name) => ({ key: name, visible: true, })), [columns], ); return ( ); }, ); export default React.memo((props: {structure: Structure | null}) => { const {structure} = props; if (!structure) { return null; } const {columns, rows, indexesColumns, indexesValues} = structure; return ( <> ); });