All files / utils rendering.tsx

33.33% Statements 4/12
0% Branches 0/4
0% Functions 0/2
33.33% Lines 4/12

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 332x 2x   2x                                                       2x  
import React from 'react';
import { Link, LinkTarget } from '../components/link';
 
const renderTextWithLinks = (text: string, links: { [linkKey: string]: { linkString: string; linkHref: string } }) => {
  const textBreakdowns = text.split('%');
 
  return (
    <>
      {textBreakdowns.map((textBreakdown) => {
        if (textBreakdown.startsWith('{')) {
          const [linkKey, ...splitedPartWithoutLink] = textBreakdown.replace('{', '').split('}');
          const linkDefinition = links[linkKey];
          const partWithoutLink = splitedPartWithoutLink.join('');
          return linkDefinition ? (
            <>
              <Link key={linkKey} href={linkDefinition.linkHref} target={LinkTarget.External}>
                {linkDefinition.linkString}
              </Link>
              {partWithoutLink}
            </>
          ) : (
            <>{textBreakdown}</>
          );
        } else {
          return <>{textBreakdown}</>;
        }
      })}
    </>
  );
};
 
export { renderTextWithLinks };