import { FunctionComponent } from 'react'; import { AnnotationDimension, AnnotationPinType } from '../../types'; interface AnnotationLineProps { dimension: AnnotationDimension; color: string; strokeWidth: number; startValue: number; stopValue: number; length: number; pin: AnnotationPinType; id: string; onHover?: (forceHide: boolean) => void; } /** * This class draws the annotation itself. Another handles the tooltip. (AnnotationTooltip) * * If the annotation is a 'y' annotation, then this class *only* draws a point annotation * (a single dotted line) (at the start value) with an optional pin on the right. * * If it the annotation is an 'x' annotation, if the startTime === stopTime * then this class draws a single dotted line, with an optional pin at the top * * If startTime < stopTime * then this draws a line at the start, another at the end, with a 'hat' over it that is * entirely clickable; along with an overlay with 10% opacity that is NOT clickable. * * The overlay is not clickable to allow overlapping point annotations. * If there are two overlapping range annotations (or any type of annotation, range or point) * then the annotation that was drawn last is clickable. (they stack). They are drawn in the order that * the annotations are created; not in their time order. * * To make any element of the annotation line clickable, then that element needs to have the 'props.id' assigned to its id, * and (nice to have, but not required for clicking, but this shows the user that it * is clickable (affordance)), the style should get changed; * * add to the 'createElement' object: * * style: {cursor: 'pointer'} * * the 'onHover' method is for firing when the user is hovering over * a clickable area. it sends a 'true' when the user entered a clickable area * and a 'false' when it leaves. This is so if there is a hover legend showing, * then it will be hidden while on the clickable area. * * adding the 'onHover' to the tops of the annotations that are clickable: * the range rectangle and the 'start' pin for vertical annotation lines. * * */ export declare const AnnotationLine: FunctionComponent; export default AnnotationLine;