import React, { useRef, useMemo } from 'react'; import { v1 as uuidv1 } from 'uuid'; import { xtransform } from '../../../utils/coordinates'; import { ClipPath } from '../../clippath'; import { LinkTrackProps } from './types'; import { renderRegions, renderLinks } from './utils'; /** * Represents a BigBed track rendered in dense mode as at UCSC. A dense BigBed renders genomic regions * of interest (such as peaks) as rectangles in a single row, with overlapping regions merged into a * single rectangle. */ const LinkTrack: React.FC = props => { const uuid = useRef(uuidv1()); const x = xtransform(props.domain, props.width); const color = props.color || "#000000"; const scoreThreshold = props.scoreThreshold || 0; const renderedRegions = useMemo( () => renderRegions( props.data, x, color ), [ props.data, props.domain, props.width, props.color ] ); const renderedLinks = useMemo( () => renderLinks( props.data, x, props.height, scoreThreshold ), [ props.data, props.domain, props.height, props.width, props.scoreThreshold ] ); return ( { renderedRegions.map( (rect, i) => ( ))} { renderedLinks.map( (path, i) => ( ))} ); } export default LinkTrack;