import startCase from 'lodash/startCase' import icon from '../icons/link' import type {LinkPreviewProps, PreviewReturn} from '../types' interface PreviewProps { condition?: string label?: string pageTitle?: string externalUrl?: string downloadFile?: string } export const link = ({ prefix = '', select = {}, prepare = (props) => props, }: LinkPreviewProps = {}): PreviewReturn => ({ select: { condition: `${prefix}condition`, label: `${prefix}label`, pageTitle: `${prefix}page.title`, downloadFile: `${prefix}file.asset.originalFilename`, externalUrl: `${prefix}url`, ...select, }, prepare: ({condition, label, pageTitle, externalUrl, downloadFile, ...rest}: PreviewProps) => { let title switch (condition) { case 'internal': title = pageTitle break case 'external': title = externalUrl break case 'download': title = downloadFile break default: title = `${startCase(condition)} Link` break } return { title: label || title, media: icon, ...prepare({ condition, label, pageTitle, externalUrl, downloadFile, ...rest, }), } }, })