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 : '';
};
