<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>流式输出md内容 - 插件懒加载</title>
  <link rel="stylesheet" type="text/css" href="../packages/cherry-markdown/dist/cherry-markdown.css">
  <style>
    :root {
      --ai-bg: #f8f9fb;
      --ai-surface: #fff;
      --ai-accent: #0d68ff;
      --ai-muted: #ccc;
      --ai-gap: 16px;
      --ai-max-width: 780px;
      --ai-msg-max-width: 680px;
    }

    html,
    body {
      margin: 0;
      padding: 0;
      overflow: auto;
      background: var(--ai-bg);
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial;
      color: #222;
    }

    .ai-chat-wrapper {
      display: flex;
      flex-direction: column;
      align-items: center;
      min-height: 100vh;
      padding: 12px 16px;
      box-sizing: border-box;
    }

    .dialog {
      padding: 0 0 0 42px;
      width: 100%;
      max-width: var(--ai-max-width);
      box-sizing: border-box;
      margin: 0 auto;
      overflow-y: auto;
      background: transparent;
    }

    .one-msg {
      display: flex;
      gap: 12px;
      align-items: flex-start;
      margin: 18px 0;
      padding: 6px 8px;
      width: 100%;
      max-width: var(--ai-msg-max-width);
      box-sizing: border-box;
    }

    .j-one-msg {
      display: none;
    }

    .avatar {
      width: 40px;
      height: 40px;
      min-width: 40px;
      border-radius: 50%;
      border: 1px solid var(--ai-muted);
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-weight: 700;
      background: var(--ai-surface);
      color: #111;
    }

    .chat-one-msg {
      display: block;
      width: 100%;
      max-width: 100%;
      background: var(--ai-surface);
      border-radius: 8px;
      padding: 10px 12px;
      box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
      box-sizing: border-box;
    }

    .controls {
      margin: 24px auto 20px;
      display: flex;
      gap: 12px;
      align-items: center;
      width: 100%;
      max-width: var(--ai-max-width);
      box-sizing: border-box;
      justify-content: flex-start;
      flex-wrap: wrap;
    }

    .button {
      display: inline-flex;
      gap: 8px;
      align-items: center;
      border: 0;
      background-color: var(--ai-accent);
      color: #fff;
      padding: 8px 12px;
      border-radius: 6px;
      box-shadow: 0 1px 3px rgba(13, 104, 255, 0.16);
      cursor: pointer;
      font-size: 14px;
    }

    .button.secondary {
      background: #ffffff;
      color: #333;
      border: 1px solid var(--ai-muted);
      box-shadow: none;
    }

    .button:disabled {
      opacity: 0.6;
      cursor: not-allowed;
    }

    .status {
      margin-left: 6px;
      display: inline-flex;
      align-items: center;
      gap: 4px;
    }

    .status-input {
      width: 18px;
      height: 18px;
      cursor: pointer;
    }

    .plugin-options {
      width: 100%;
      max-width: var(--ai-max-width);
      margin: 0 auto 16px;
      padding: 16px;
      background: var(--ai-surface);
      border-radius: 8px;
      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
      box-sizing: border-box;
    }

    .plugin-options h3 {
      margin: 0 0 12px;
      font-size: 14px;
      color: #666;
    }

    .plugin-list {
      display: flex;
      gap: 20px;
      flex-wrap: wrap;
    }

    .plugin-item {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .plugin-item input {
      width: 18px;
      height: 18px;
      cursor: pointer;
    }

    .plugin-item label {
      cursor: pointer;
      font-size: 14px;
    }

    .plugin-item .plugin-status {
      font-size: 12px;
      color: #999;
      margin-left: 4px;
    }

    .plugin-item .plugin-status.loaded {
      color: #52c41a;
    }

    .plugin-item .plugin-status.loading {
      color: #faad14;
    }

    .custom-input {
      margin-top: 10px;
      margin-bottom: 10px;
      width: 100%;
      max-width: var(--ai-max-width);
      box-sizing: border-box;
    }

    .custom-textarea {
      width: 100%;
      height: 100px;
      padding: 10px;
      border: 1px solid #ccc;
      border-radius: 5px;
      font-family: inherit;
      font-size: 14px;
      resize: vertical;
      box-sizing: border-box;
    }

    .cherry {
      min-height: 0;
    }

    @media (max-width: 720px) {
      .ai-chat-wrapper {
        padding: 12px;
      }

      .dialog {
        padding: 10px;
      }

      .controls {
        flex-wrap: wrap;
        gap: 8px;
      }

      .plugin-list {
        flex-direction: column;
        gap: 12px;
      }
    }
  </style>
  <link rel="Shortcut Icon" href="../logo/favicon.ico">
  <link rel="Bookmark" href="../logo/favicon.ico">
</head>

<body>
  <div class="ai-chat-wrapper">
    <!-- 插件选项区 -->
    <div class="plugin-options">
      <h3>🔌 插件懒加载选项(勾选后懒加载对应插件)</h3>
      <div class="plugin-list">
        <div class="plugin-item">
          <input type="checkbox" id="plugin-mermaid" class="j-plugin-checkbox" data-plugin="mermaid">
          <label for="plugin-mermaid">Mermaid(流程图)</label>
          <span class="plugin-status j-plugin-status" data-plugin="mermaid"></span>
        </div>
        <div class="plugin-item">
          <input type="checkbox" id="plugin-katex" class="j-plugin-checkbox" data-plugin="katex" checked>
          <label for="plugin-katex">KaTeX(数学公式-轻量)</label>
          <span class="plugin-status j-plugin-status" data-plugin="katex"></span>
        </div>
        <div class="plugin-item">
          <input type="checkbox" id="plugin-mathjax" class="j-plugin-checkbox" data-plugin="mathjax">
          <label for="plugin-mathjax">MathJax(数学公式-完整)</label>
          <span class="plugin-status j-plugin-status" data-plugin="mathjax"></span>
        </div>
      </div>
    </div>

    <div class="dialog j-dialog" role="log" aria-live="polite"></div>

    <!-- 消息模板(隐藏) -->
    <div class="one-msg j-one-msg" aria-hidden="true">
      <div class="avatar">AI</div>
      <div class="chat-one-msg"></div>
    </div>

    <!-- 控件区 -->
    <div class="controls">
      <button type="button" class="button j-button">
        获取消息(剩余<span class="j-button-tips"></span>条消息)
      </button>
      <button type="button" class="button secondary j-pause-button">
        暂停流式
      </button>
      <label class="status">
        <input class="j-status-input status-input" type="checkbox" checked> 开启流式适配
      </label>
    </div>

    <div class="custom-input">
      <textarea class="custom-textarea j-custom-textarea" placeholder="请输入您想要流式打印的Markdown内容..."></textarea>
      <div class="button custom-button j-custom-button">流式打印自定义内容</div>
    </div>
  </div>

  <script src="../packages/cherry-markdown/dist/cherry-markdown.stream.js"></script>
  <script type="module">
    import { aiChatStreamScenario } from './assets/scripts/ai-chat-stream-demo.js';
    aiChatStreamScenario();
  </script>
</body>

</html>