import { ContextMenu, Menu, MenuItem, TreeNode, } from '@blueprintjs/core'; import { TestCaseConfig } from 'hydrooj'; import { omit } from 'lodash'; import React from 'react'; import { useDrag } from 'react-dnd'; import { i18n } from 'vj/utils'; interface TestcaseNodeProps { c: TestCaseConfig; index: number; time?: string; memory?: string; onClick?: () => void; selected: boolean; subtaskId: number; subtaskIds: number[]; } export function TestcaseNode(props: TestcaseNodeProps) { const { c, selected, onClick, subtaskIds, subtaskId, } = props; return ( {subtaskIds.filter((i) => i !== subtaskId).map((i) => ( ))} {subtaskIds.length <= 1 && ( )} } >  {c.input} / {c.output}} path={[0]} /> ); } interface TestcaseGroupProps extends Omit { cases: TestCaseConfig[]; onMouseDown?: (event: React.MouseEvent) => void; } export function TestcaseGroup(props: TestcaseGroupProps) { const { cases, subtaskId, onClick, index, } = props; const [collected, drag] = useDrag(() => ({ type: 'cases', collect: (monitor) => ({ isDragging: monitor.isDragging(), }), canDrag: props.selected, item: { cases, subtaskId }, }), [JSON.stringify(cases), subtaskId]); return
{cases.map((c, id) => ( ))}
; }