manifold/web/components/join-spans.tsx

34 lines
641 B
TypeScript
Raw Normal View History

2022-05-25 15:22:12 +00:00
import { ReactChild } from 'react'
export const JoinSpans = (props: {
2022-05-25 15:22:12 +00:00
children: ReactChild[]
separator?: JSX.Element | string
}) => {
const { separator } = props
const children = props.children.filter((x) => !!x)
if (children.length === 0) return <></>
if (children.length === 1) return children[0]
if (children.length === 2)
return (
<>
{children[0]} and {children[1]}
</>
)
const head = children.slice(0, -1).map((child) => (
<>
{child}
{separator || ','}{' '}
</>
))
const tail = children[children.length - 1]
return (
<>
{head}and {tail}
</>
)
}