// eslint-disable-next-line no-unused-vars import React from 'react' import { translateStrings } from './utils.mjs' export const TextSpans = ({ point, strings }) => { const translated = translateStrings(point.attributes.list['data-text'], strings) const text = [] if (translated.indexOf('\n') !== -1) { // Handle muti-line text let key = 0 let lines = translated.split('\n') text.push(<tspan key={'tspan-' + key}>{lines.shift()}</tspan>) for (let line of lines) { key++ text.push( <tspan key={'tspan-' + key} x={point.x} dy={point.attributes.list['data-text-lineheight']?.[0] || 12} > {line.toString().replace(/"/g, '"')} </tspan> ) } } else text.push(<tspan key="tspan">{translated}</tspan>) return text } export const Text = ({ point, strings }) => ( <text x={point.x} y={point.y} {...point.attributes.textProps}> <TextSpans point={point} strings={strings} /> </text> ) export const TextOnPath = ({ path, pathId, strings }) => { const textPathProps = { xlinkHref: '#' + pathId, startOffset: '0%', } const translated = translateStrings(path.attributes.text, strings) const align = path.attributes.list['data-text-class'] ? path.attributes.list['data-text-class'].join(' ') : false if (align && align.indexOf('center') > -1) textPathProps.startOffset = '50%' else if (align && align.indexOf('right') > -1) textPathProps.startOffset = '100%' return ( <text> <textPath {...textPathProps}> <tspan {...path.attributes.textProps} dangerouslySetInnerHTML={{ __html: translated }} /> </textPath> </text> ) }