@tencentcloud/ai-desk-customer-vue
Version:
Vue UIKit for AI Desk
32 lines (29 loc) • 1.13 kB
text/typescript
import {Marked} from 'marked';
export const marked = new Marked(
{mangle: false, headerIds: false},
{
renderer: {
image(this: any, href: string | null, title: string | null, text: string) {
const safeHref = encodeURIComponent(href || '');
return `<div
class="image-container"
onclick="onMarkdownImageClicked('${safeHref}')"
style="cursor:pointer;" >
<img src="${href}" alt="${text}" onload="onMarkdownImageLoad()"/>
</div>
`;
},
link(this: any, href: string | null, title: string | null, text: string) {
// a 标签 href 如果异常(包含非 ASCII 字符),则当成普通文本处理
if (href && /[^\x00-\x7F]/g.test(href)) {
return text;
}
return `<a target="_blank" rel="noreferrer noopenner" class="message-marked_link" href="${href || ''}" title="${title}">${text}</a>`;
},
},
},
);
export const parseMarkdown = (text: string) => {
let ret = marked.parse(text);
return typeof ret === 'string' ? ret : '';
};