import React from 'react'
import { translateStrings } from './utils.mjs'
/**
* A component to render a tspan tag in a FreeSewing pattern
*
* @component
* @param {object} props - All component props
* @param {object} props.point - The point that the text is defined on
* @param {object} strings - The translation strings
* @returns {JSX.Element}
*/
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({lines.shift()})
for (let line of lines) {
key++
text.push(
{line.toString().replace(/"/g, '"')}
)
}
} else text.push({translated})
return text
}
/**
* A component to render a text tag in a FreeSewing pattern
*
* @component
* @param {object} props - All component props
* @param {object} props.point - The point that the text is defined on
* @param {object} strings - The translation strings
* @returns {JSX.Element}
*/
export const Text = ({ point, strings }) => (
)
/**
* A component to render a text along a path in a FreeSewing pattern
*
* @component
* @param {object} props - All component props
* @param {object} props.path - The path that the text is to be rendered along
* @param {string} props.pathId - The ID of the path
* @param {object} strings - The translation strings
* @returns {JSX.Element}
*/
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 (
)
}