import Tooltip from 'rc-tooltip'; import { getNCBIlink } from '../lib/urls'; import * as React from 'react'; import { ReferenceList } from './ReferenceList'; import mainStyles from './main.module.scss'; import { parseOncoKBAbstractReference } from '../util/OncoKbUtils'; export default class RefComponent extends React.Component<{ content: string; componentType: 'tooltip' | 'linkout'; }> { render() { const defaultRefComponent = {this.props.content}; const parts = this.props.content.split(/pmid|nct|abstract/i); if (parts.length < 2) { return defaultRefComponent; } const ids = parts[1].match(/[0-9]+/g); let prefix: string | undefined; let linkComponent: JSX.Element | undefined; let link: string | undefined; let linkText: string | undefined; const parsedAbstract = parseOncoKBAbstractReference(this.props.content); if (!!parsedAbstract) { linkText = parsedAbstract.abstractTitle; link = parsedAbstract.abstractLink; prefix = 'Abstract: '; } else { if (!ids) { return defaultRefComponent; } if (this.props.content.toLowerCase().includes('pmid')) { prefix = 'PMID: '; } else if (this.props.content.toLowerCase().includes('nct')) { prefix = 'NCT'; } else { return defaultRefComponent; } linkText = ids.join(', '); link = getNCBIlink(`/pubmed/${ids.join(',')}`); } if (prefix) { linkComponent = ( {`${prefix}${linkText}`} ); } if (this.props.componentType === 'tooltip') { const pmids = !!parsedAbstract ? [] : ids!.map((id: string) => parseInt(id, 10)); const abstracts = !!parsedAbstract ? [{ abstract: linkText, link }] : []; const tooltipContent = () => (