UNPKG

@onereach/channel-transformer

Version:

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

45 lines (40 loc) 1.26 kB
import { IGenericLink } from '../../../../generic/types'; import { IRWCMessage } from '../../../types'; import { getMethods } from '../methods'; import { toHtml } from '../../../../../helpers/md-to-html'; import { RWCv5Message } from '../../../classes/v5'; const isString = target => typeof target === 'string'; 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 { 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 += isString(result) ? result : result?.message || result?.vBind?.text || ''; } } return acc; }, ''); message += `${label}</a>`; } // const result: IRWCMessage = { // message // }; return new RWCv5Message(message); };