import React, { DragEvent, RefObject } from 'react'; import { MRT_Cell, MRT_TableInstance } from '..'; import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton'; interface Props { cell: MRT_Cell; rowRef: RefObject; table: MRT_TableInstance; } export const MRT_TableBodyRowGrabHandle = ({ cell, rowRef, table }: Props) => { const { options: { muiTableBodyRowDragHandleProps }, } = table; const { row } = cell; const iconButtonProps = muiTableBodyRowDragHandleProps instanceof Function ? muiTableBodyRowDragHandleProps({ row, table }) : muiTableBodyRowDragHandleProps; const handleDragStart = (event: DragEvent) => { iconButtonProps?.onDragStart?.(event); event.dataTransfer.setDragImage(rowRef.current as HTMLElement, 0, 0); table.setDraggingRow(row as any); }; const handleDragEnd = (event: DragEvent) => { iconButtonProps?.onDragEnd?.(event); table.setDraggingRow(null); table.setHoveredRow(null); }; return ( ); };