import { Table, flexRender } from '@tanstack/react-table'; import { EntryId, SupportedEntry } from 'ontime-types'; import { CSSProperties, memo } from 'react'; import { IoEllipsisHorizontal } from 'react-icons/io5'; import IconButton from '../../../../common/components/buttons/IconButton'; import type { ExtendedEntry } from '../../../../common/utils/rundownMetadata'; import { AppMode } from '../../../../ontimeConfig'; import { useCuesheetTableMenu } from '../cuesheet-table-menu/useCuesheetTableMenu'; import style from './GroupRow.module.scss'; interface GroupRowProps { groupId: EntryId; colour: string; rowId: string; rowIndex: number; table: Table; injectedStyles?: CSSProperties; hasCursor?: boolean; } export default memo(GroupRow); function GroupRow({ groupId, colour, rowId, rowIndex, table, injectedStyles, hasCursor, ...virtuosoProps }: GroupRowProps) { const { cuesheetMode, hideIndexColumn } = table.options.meta?.options ?? { cuesheetMode: AppMode.Edit, hideIndexColumn: false, }; const openMenu = useCuesheetTableMenu((store) => store.openMenu); return ( {cuesheetMode === AppMode.Edit && ( { const rect = e.currentTarget.getBoundingClientRect(); const yPos = 8 + rect.y + rect.height / 2; openMenu({ x: rect.x, y: yPos }, groupId, SupportedEntry.Group, rowIndex, null, null); }} > )} {!hideIndexColumn && } {table .getRow(rowId) .getVisibleCells() .map((cell) => { return ( {flexRender(cell.column.columnDef.cell, cell.getContext())} ); })} ); }