import { flexRender, getCoreRowModel, useReactTable } from '@tanstack/react-table' import { atom, useAtomValue } from 'jotai' import { useMemo } from 'react' import { StatsColumns } from '@/lib/columns' import { ItemWithSelection } from '@/lib/table/defs' import { InventoryColumns } from '@/lib/table/tanstack' import { inventoryItemsCurrentPageAtom, preferenceInventoryTab } from '@/state/atoms' const columnVisibilityAtom = atom(get => { const itemTab = get(preferenceInventoryTab) if (!['2', '4'].includes(itemTab)) { return Object.fromEntries([...StatsColumns.map(x => [`stats.${x}`, false]), ['slots', false]]) } return {} }) export const InventoryTable = () => { const items = useAtomValue(inventoryItemsCurrentPageAtom) const columns = useMemo(() => { return [...Object.values(InventoryColumns)] }, []) const columnVisibility = useAtomValue(columnVisibilityAtom) const table = useReactTable({ getRowId: row => row.item.unique_id.toString(), data: items, state: { columnVisibility, }, columns, getCoreRowModel: getCoreRowModel(), }) return (
{ e.preventDefault() return }} className="border-spacing-x-2 border-separate" > {table.getHeaderGroups().map(headerGroup => ( {headerGroup.headers.map(header => ( ))} ))} {table.getRowModel().rows.map(row => ( {row.getVisibleCells().map(cell => ( ))} ))}
{header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}
{flexRender(cell.column.columnDef.cell, cell.getContext())}
) }