import { Line } from "@visx/shape"; import { observer } from "mobx-react"; import { forwardRef, useImperativeHandle } from "react"; import type { ChartItem } from "../../../ModelMixins/ChartableMixin"; import type { ChartZoomHandle, Scales } from "./types"; interface Props { id: string; chartItem: ChartItem; scales: Scales; } const _MomentLines = forwardRef( ({ id, chartItem, scales }, ref) => { useImperativeHandle( ref, () => ({ doZoom(scales) { const lines = document.querySelectorAll(`g#${id} line`); lines.forEach((line, i) => { const point = chartItem.points[i]; if (point) { const x = scales.x(point.x); line.setAttribute("x1", x.toString()); line.setAttribute("x2", x.toString()); } }); } }), [chartItem.points, id] ); const baseKey = `moment-line-${chartItem.categoryName}-${chartItem.name}`; return ( {chartItem.points.map((p, i) => { const x = scales.x(p.x); const y = scales.y(0); return ( chartItem.onClick(p)} /> ); })} ); } ); _MomentLines.displayName = "MomentLines"; export default observer(_MomentLines);