Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 95x 95x 95x 95x 95x 95x 95x 95x 95x 95x 95x 95x 95x 95x 1x 1x | import * as React from "react"
import { Bounds } from "../../clientUtils/Bounds"
import { omit } from "../../clientUtils/Util"
// The default SVG text behavior is to put the text on *top* of the specified y coordinate
// Nothing else we do works like that though, so this wraps it to use the same spatial behavior
// as other components
interface TextProps extends React.SVGProps<SVGTextElement> {
x: number
y: number
fontSize: number
children: string
}
export class Text extends React.Component<TextProps> {
render(): JSX.Element {
const bounds = Bounds.forText(this.props.children, {
fontSize: this.props.fontSize,
fontFamily: this.props["fontFamily"],
})
const y = this.props.y + bounds.height - bounds.height * 0.2
return (
<text
{...omit(this.props, ["children"])}
y={y}
dangerouslySetInnerHTML={{ __html: this.props.children }}
/>
)
}
}
|