UNPKG

@onereach/channel-transformer

Version:

Convert data model between different channels (Slack, Microsoft Teams, Generic...)

44 lines (40 loc) 1.22 kB
import { IGenericLink } from '../../../../generic/types'; import { IRWCMessage } from '../../../types'; import { getMethods } from '../methods'; import { toHtml } from '../../../../../helpers/md-to-html'; export const transformLink = ({ props, children }: IGenericLink): IRWCMessage => { let message = ''; const { url, label, title } = props; if (url) { message = `<a href="${url}" target="_blank"`; } if (title) { message += ` title="${title}"`; } message += `>`; if (label) { message += `${toHtml(label, true)}</a>`; } else if (children?.length) { const label = children.reduce((acc, item) => { if (item.type === 'button') { acc += `<button>${item.props?.label || item.props?.value}</button>`; } else { const transformFn = getMethods(item.type); if (transformFn) { const result = transformFn(item); acc += typeof result?.message === 'string' ? result.message : typeof result === 'string' ? result : ''; } } return acc; }, ''); message += `${label}</a>`; } else { message += `${url}</a>`; } const result: IRWCMessage = { message }; return result; };