import React, { useRef, useEffect, useState } from "react"; import { Rect, Text, Group } from "react-konva"; const maxTokenSize = 3; function TokenLabel({ tokenState, width, height }) { const fontSize = (height / 6 / tokenState.size) * Math.min(tokenState.size, maxTokenSize); const paddingY = (height / 16 / tokenState.size) * Math.min(tokenState.size, maxTokenSize); const paddingX = (height / 8 / tokenState.size) * Math.min(tokenState.size, maxTokenSize); const [rectWidth, setRectWidth] = useState(0); useEffect(() => { const text = textRef.current; if (text && tokenState.label) { setRectWidth(text.getTextWidth() + paddingX); } else { setRectWidth(0); } }, [tokenState.label, paddingX, width]); const textRef = useRef(); return ( {}} /> ); } export default TokenLabel;