(props: DiffRowProps)
| 36 | }; |
| 37 | |
| 38 | export function DiffRow(props: DiffRowProps) { |
| 39 | const {beforeLineNum, afterLineNum, type, isSelected} = props; |
| 40 | const cells = [ |
| 41 | makeCodeTd(type, props.beforeText, props.beforeHTML), |
| 42 | makeCodeTd(type, props.afterText, props.afterHTML), |
| 43 | ]; |
| 44 | let [beforeHtml, afterHtml] = [cells[0].html, cells[1].html]; |
| 45 | if (type === 'replace') { |
| 46 | [beforeHtml, afterHtml] = addCharacterDiffs( |
| 47 | cells[0].text, |
| 48 | cells[0].html, |
| 49 | cells[1].text, |
| 50 | cells[1].html, |
| 51 | ); |
| 52 | } |
| 53 | const rowRef = React.useRef<HTMLTableRowElement>(null); |
| 54 | React.useEffect(() => { |
| 55 | if (isSelected && rowRef.current) { |
| 56 | scrollIntoViewIfNeeded(rowRef.current); |
| 57 | } |
| 58 | }, [isSelected]); |
| 59 | return ( |
| 60 | <tr ref={rowRef} className={isSelected ? 'selected' : undefined}> |
| 61 | <td className="line-no">{beforeLineNum ?? ''}</td> |
| 62 | <td |
| 63 | className={cells[0].className + ' before'} |
| 64 | dangerouslySetInnerHTML={{__html: beforeHtml}}></td> |
| 65 | <td |
| 66 | className={cells[1].className + ' after'} |
| 67 | dangerouslySetInnerHTML={{__html: afterHtml}}></td> |
| 68 | <td className="line-no">{afterLineNum ?? ''}</td> |
| 69 | </tr> |
| 70 | ); |
| 71 | } |
nothing calls this directly
no test coverage detected