const ESCAPED_TABLE_HTML_TAG_PATTERN =
  /&lt;\/?(?:table|thead|tbody|tfoot|tr|th|td|caption|colgroup|col)\b/i;

/**
 * 将知识库分块内容规整为可直接交给 Markdown 组件的文本。
 * 这里额外兼容被转义的 HTML 片段，例如 `&lt;table&gt;...&lt;/table&gt;`。
 */
export const resolveMarkdownContent = (content?: string) => {
  const markdown = String(content || '').trim();
  if (!markdown) {
    return '';
  }

  if (ESCAPED_TABLE_HTML_TAG_PATTERN.test(markdown)) {
    return decodeHtmlEntities(markdown);
  }

  return markdown;
};

/**
 * 统一控制 Markdown 中原生 HTML 的开启策略。
 */
export const markdownRenderProps = {
  allowHtml: true,
  sanitize: true,
} as const;

/**
 * 解码后端可能返回的 HTML 实体，便于 Markdown 组件继续处理原生标签。
 */
function decodeHtmlEntities(content: string) {
  if (typeof window === 'undefined' || window.DOMParser === undefined) {
    return content;
  }

  const parser = new window.DOMParser();
  const doc = parser.parseFromString(content, 'text/html');
  return doc.documentElement.textContent || content;
}
