import { Task } from "@/components/interfaces"; import GanttElasticContext from "@/GanttElasticContext"; import React, { useContext, useMemo } from "react"; export interface TaskProps { task: Task; } const ChartText: React.FC = ({ task }) => { const { style, options, ctx } = useContext(GanttElasticContext); /** * Get width * * @returns {number} */ const width = useMemo(() => { if (ctx) { const textStyle = style["chart-row-text"]; ctx.font = `${textStyle["fontWight"]} ${textStyle["fontSize"]} ${textStyle["fontFamily"]}`; const textWidth = ctx.measureText(task.label).width; return textWidth + options.chart.text.xPadding * 2; } }, [ctx, options.chart.text.xPadding, style, task.label]); return useMemo(() => { const height = task.height + options.chart.grid.horizontal.gap * 2; return (
{task.label}
); }, [ options.chart.grid.horizontal.gap, options.chart.text.offset, style, task.height, task.label, task.width, task.x, task.y, width ]); }; export default ChartText;