{"version":3,"file":"matechat-ng.mjs","sources":["../../../projects/components-ng/src/Bubble/bubble-loading/bubble-loading.component.ts","../../../projects/components-ng/src/Bubble/bubble-loading/bubble-loading.component.html","../../../projects/components-ng/src/Bubble/avatar-body-icon/avatar-body-icon.component.ts","../../../projects/components-ng/src/Bubble/avatar-body-icon/avatar-body-icon.component.html","../../../projects/components-ng/src/Bubble/avatar-no-body-icon/avatar-no-body-icon.component.ts","../../../projects/components-ng/src/Bubble/avatar-no-body-icon/avatar-no-body-icon.component.html","../../../projects/components-ng/src/components-common/Locale/lang/zh-cn.ts","../../../projects/components-ng/src/components-common/Locale/lang/en-us.ts","../../../projects/components-ng/src/Locale/locale.service.ts","../../../projects/components-ng/src/Locale/translate.pipe.ts","../../../projects/components-ng/src/Bubble/avatar/avatar.component.ts","../../../projects/components-ng/src/Bubble/avatar/avatar.component.html","../../../projects/components-ng/src/components-common/Bubble/common/bubble-constants.ts","../../../projects/components-ng/src/components-common/Base/foundation.ts","../../../projects/components-ng/src/components-common/Bubble/foundation.ts","../../../projects/components-ng/src/Base/base.component.ts","../../../projects/components-ng/src/Bubble/bubble.component.ts","../../../projects/components-ng/src/Bubble/bubble.component.html","../../../projects/components-ng/src/Bubble/bubble.module.ts","../../../projects/components-ng/src/Input/send-icon/send-icon.component.ts","../../../projects/components-ng/src/Input/send-icon/send-icon.component.html","../../../projects/components-ng/src/components-common/Input/common/types.ts","../../../projects/components-ng/src/Locale/locale.module.ts","../../../projects/components-ng/src/Locale/index.ts","../../../projects/components-ng/src/components-common/Input/button-foundation.ts","../../../projects/components-ng/src/Input/button/button.component.ts","../../../projects/components-ng/src/Input/button/button.component.html","../../../projects/components-ng/src/components-common/Input/foundation.ts","../../../projects/components-ng/src/Input/input.component.ts","../../../projects/components-ng/src/Input/input.component.html","../../../projects/components-ng/src/Input/input.module.ts","../../../projects/components-ng/src/components-common/MarkdownCard/common/MDCardService.ts","../../../projects/components-ng/src/components-common/MarkdownCard/common/MermaidService.ts","../../../projects/components-ng/src/components-common/MarkdownCard/codeblock-foundation.ts","../../../projects/components-ng/src/MarkdownCard/code-block.component.ts","../../../projects/components-ng/src/MarkdownCard/code-block.component.html","../../../projects/components-ng/src/components-common/MarkdownCard/common/mdCard.types.ts","../../../projects/components-ng/src/components-common/MarkdownCard/foundation.ts","../../../projects/components-ng/src/components-common/MarkdownCard/common/parser.ts","../../../projects/components-ng/src/MarkdownCard/markdown-card.component.ts","../../../projects/components-ng/src/MarkdownCard/markdown-card.component.html","../../../projects/components-ng/src/MarkdownCard/markdown-card.module.ts","../../../projects/components-ng/src/public-api.ts","../../../projects/components-ng/src/matechat-ng.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n  selector: 'mc-bubble-loading',\n  standalone: true,\n  templateUrl: './bubble-loading.component.html',\n  styleUrls: ['./bubble-loading.component.scss']\n})\nexport class BubbleLoadingComponent {\n\n}","<div class=\"mc-bubble-loading\">\n  <div class=\"loading-dot dot-start\"></div>\n  <div class=\"loading-dot dot-middle\"></div>\n  <div class=\"loading-dot dot-end\"></div>\n</div>","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'mc-avatar-body-icon',\n  standalone: true,\n  templateUrl: './avatar-body-icon.component.html',\n  styleUrls: ['./avatar-body-icon.component.scss']\n})\nexport class AvatarBodyIconComponent {\n  @Input() width: number = 16;\n  @Input() height: number = 16;\n}","<svg\n  [style.width.px]=\"width\"\n  [style.height.px]=\"height\"\n  style=\"vertical-align: middle;\"\n  viewBox=\"0 0 30 30\"\n  version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\"\n>\n  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n    <circle id=\"Oval\" fill=\"#CACFD8\" cx=\"15\" cy=\"15\" r=\"15\"></circle>\n    <path\n      d=\"M14.9997866,16 C12.5145053,16 10.4997866,13.9852814 10.4997866, 11.5 C10.4997866,9.01471863 12.5145053,7 14.9997866,7 C17.485068, 7 19.4997866,9.01471863 19.4997866,11.5 C19.4997866,13.9852814 17.485068, 16 14.9997866,16 Z M23,23 L7,22.998553 C7,19.0122153 10.8892296, 16.5 14.9997866,16.5 C19.1103437,16.5 23,20 23,23 Z\"\n      fill=\"#FFFFFF\"\n    ></path>\n  </g>\n</svg>","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'mc-avatar-no-body-icon',\n  standalone: true,\n  templateUrl: './avatar-no-body-icon.component.html',\n  styleUrls: ['./avatar-no-body-icon.component.scss']\n})\nexport class AvatarNoBodyIconComponent {\n  @Input() width: number = 16;\n  @Input() height: number = 16;\n}","<svg\n  [style.width.px]=\"width\"\n  [style.height.px]=\"height\"\n  style=\"vertical-align: middle;\"\n  viewBox=\"0 0 30 30\"\n  version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\"\n>\n  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n    <path\n      d=\"M22.31,19.2474562 L22.31,21.9974562 L20.81,21.9974562 L20.81, 19.2474562 L18.06,19.2474562 L18.06,17.7474562 \n          L20.81,17.7474562 L20.81, 14.9974562 L22.31,14.9974562 L22.31,17.7474562 L25.06,17.7474562 L25.06, 19.2474562 \n          L22.31,19.2474562 Z M14.9297866,14.9974562 C12.4445053, 14.9974562 10.4297866,12.9827376 10.4297866,10.4974562 \n          C10.4297866, 8.01217483 12.4445053,5.9974562 14.9297866,5.9974562 C17.415068, 5.9974562 19.4297866,8.01217483 \n          19.4297866,10.4974562 C19.4297866, 12.9827376 17.415068,14.9974562 14.9297866,14.9974562 Z M19.6797866, 20.2474562 \n          L19.6797866,21.9971623 L6.93,21.9960092 C6.93,18.0096715 10.8192296, 15.4974562 14.9297866,15.4974562 C16.4608397,15.4974562 \n          17.9612467,15.983021 19.2414296, 16.7474562 L17.06,16.7474562 L17.06,20.2474562 L19.6797866,20.2474562 Z\"\n      fill=\"#959EB2\"\n    ></path>\n    <path\n      d=\"M0,15 L1,15 C1,15.6118966 1.03919561,16.2186526 1.11683409,\n            16.8178549 L0.125124012,16.9463505 C0.0425740367,16.309242 0,\n            15.6595925 0,15 Z M0.503241262,18.867175 L1.46961749,18.6100428 C1.62594651,\n            19.1975718 1.8203704,19.7729973 2.05141295,20.3332823 L1.12693074,\n            20.7145074 C0.880599065,20.1171459 0.67172715,19.500393 0.503241262,\n            18.867175 Z M1.99122134,22.4730778 L2.85786221,21.9741453 C3.16078316,\n            22.5003161 3.49772502,23.0063252 3.86631639,23.4889602 L3.0715754,\n            24.0959089 C2.6777461,23.5802273 2.31659753,23.0382531 1.99122134,\n            22.4730778 Z M4.38894559,25.6021078 L5.09634867,24.8952974 C5.52582519,\n            25.3251341 5.98272136,25.7268214 6.46397085,26.0975793 L5.85367498,\n            26.8897529 C5.33779918,26.4923186 4.84851395,26.0620615 4.38894559,\n            25.6021078 Z M7.4424647,27.9597887 L7.94703323,27.096417 C8.47111119,\n            27.4026968 9.0146817,27.6746032 9.57453904,27.9101878 L9.18668461,\n            28.8319084 C8.58423501,28.5784013 8.00181692,28.2866833 7.4424647,\n            27.9597887 Z M11.0671021,29.4791103 L11.3286494,28.5139196 C11.9126912,\n            28.6721832 12.5080563,28.7925378 13.1119738,28.8738935 L12.9784667,\n            29.8649413 C12.3271613,29.7772019 11.6891102,29.647662 11.0671021,\n            29.4791103 Z M15,30 C14.9951965,30 14.9903936,29.9999977 14.9855912,\n            30 L14.9865313,28.9999937 C14.9929361,28.9999987 14.9929361,\n            28.9999987 14.999296,29 C15.6071552,29 16.2093364,28.9614092 16.8041774,\n            28.8849313 L16.9316965,29.8767674 C16.2992813,29.9580762 15.6545362,\n            30 15,30 Z M18.8545762,29.5001051 L18.5982903,28.5335041 C19.1860387,\n            28.3776677 19.7617059,28.1837179 20.3222555,27.9531286 L20.7026875,\n            28.8779375 C20.1050484,29.123784 19.4880358,29.3321488 18.8545762,\n            29.5001051 Z M22.4608087,28.0158343 L21.9626951,27.1487226 C22.4893928,\n            26.8461604 22.9959399,26.5095265 23.479119,26.1411926 L24.0853678,\n            26.9364676 C23.5691101,27.3300178 23.0265585,27.6908386 22.4608087,\n            28.0158343 Z M25.5921583,25.6209863 L24.8860071,24.9129252 C25.3161421,\n            24.4839504 25.7181674,24.0275419 26.0893023,23.5467621 L26.8808873,\n            24.1578212 C26.4830546,24.6731862 26.0524368,25.1619493 25.5921583,\n            25.6209863 Z M27.9526445,22.5697466 L27.0897495,22.0643633 C27.3964738,\n            21.5406601 27.6688549,20.9974409 27.904942,20.4379104 L28.8262855,\n            20.8266601 C28.5722411,21.4287497 28.2800163,22.0107897 27.9526445,\n            22.5697466 Z M29.4756977,18.9454696 L28.5107363,18.6830777 C28.6695136,\n            18.099165 28.7903877,17.5039035 28.8722662,16.9000659 L29.8631978,\n            17.0344333 C29.7748946,17.6856516 29.6447979,18.3235936 29.4756977,\n            18.9454696 Z M30,15 C30,15.0093541 29.9999914,15.0187063 29.9999743,\n            15.0280564 L28.999976,15.0262257 C28.9999956,15.0134169 28.9999956,\n            15.0134169 29,15.0006466 C29,14.3970304 28.9619395,13.7989704 28.8865088,\n            13.208136 L29.8784576,13.0814959 C29.9586571,13.7096843 30,14.3500145 30,\n            15 Z M29.5038108,11.1594275 L28.5369608,11.4147728 C28.3816616,\n            10.8267413 28.1882232,10.2507676 27.9581175,9.68988857 L28.8832852,\n            9.31033004 C29.1286141,9.90831524 29.3364318,10.5256569 29.5038108,\n            11.1594275 Z M28.0228788,7.55146763 L27.1552968,8.0487618 C26.853241,\n            7.52179373 26.5170958,7.0149453 26.1492295,6.53143425 L26.9450761,\n            5.92593594 C27.3381231,6.44254364 27.6984223,6.98541919 28.0228788,\n            7.55146763 Z M25.6309089,4.41780044 L24.9221905,5.12329189 C24.4935639,\n            4.69270467 24.0374698,4.2902078 23.5569705,3.9185855 L24.1687554,\n            3.12756133 C24.6838129,3.52591118 25.1722392,3.95703271 25.6309089,\n            4.41780044 Z M22.5819506,2.05451093 L22.0757531,2.91692851 C21.5523008,\n            2.60968727 21.0092999,2.33677531 20.4499564,2.10014728 L20.8395722,\n            1.17916981 C21.4414531,1.43379309 22.0232574,1.72658499 22.5819506,\n            2.05451093 Z M18.9594329,0.528106464 L18.696103,1.4928123 C18.1122842,\n            1.33345081 17.517086,1.21199245 16.9132846,1.12953261 L17.0485964,\n            0.138729543 C17.6997753,0.227659622 18.3376514,0.358382523 18.9594329,\n            0.528106464 Z M15,-1.11022302e-16 C15.0139048,-1.11022302e-16 15.0278052,\n            1.892004e-05 15.0417011,5.673578e-05 L15.0389797,1.00005303 C15.0197685,\n            1.00000934 15.0197685,1.00000934 15.0005868,1.00000001 C14.4012162,\n            1 13.8072783,1.03753392 13.2204527,1.11192427 L13.0946918,0.119863691 C13.7186509,\n            0.0407660189 14.3545651,-1.11022302e-16 15,-1.11022302e-16 Z M11.1720354,\n            0.492865376 L11.4265338,1.45993857 C10.8386468,1.61464899 10.2627801,\n            1.80746996 9.70196444,2.03693489 L9.32327455,1.11141127 C9.92118954,\n            0.86676666 10.5384173,0.659610554 11.1720354,0.492865376 Z M7.56375123,\n            1.97008801 L8.06022548,2.83813946 C7.53298826,3.13968806 7.02583975,\n            3.47534367 6.54199783,3.84274131 L5.93725081,3.04632368 C6.4542073,\n            2.65378102 6.99740556,2.29400434 7.56375123,1.97008801 Z M4.42776842,\n            4.35917772 L5.13259949,5.06855291 C4.70156141,5.49682984 4.29859416,\n            5.95260763 3.92648544,6.43282469 L3.13602297,5.82031423 C3.53488885,\n            5.30556625 3.96651291,4.81747851 4.42776842,4.35917772 Z M2.0616775,\n            7.40585279 L2.92361696,7.91286401 C2.61586086,8.43606175 2.34241977,\n            8.97884042 2.10525197,9.53799293 L1.18464153,9.14751063 C1.43984243,\n            8.54584288 1.73319965,7.96427837 2.0616775,7.40585279 Z M0.531541456,\n            11.0280046 L1.49601653,11.2921785 C1.33614878,11.8758413 1.21417484,\n            12.4709081 1.13119244,13.074601 L0.140507978,12.9384235 C0.230001486,12.2873626 0.361276825,11.6496255 0.531541456,11.0280046 Z\"\n      fill=\"#CACFD8\"\n      fill-rule=\"nonzero\"\n    ></path>\n  </g>\n</svg>","export default {\n  Input: {\n    send: \"发送\",\n    pauseAnswer: \"停止回答\",\n    pleaseEnter: \"请输入您的问题...\",\n    pleaseEnterPlaceholder:\n      \"请输入您的问题，并按{enterKey}发送，按{shiftEnterKey}换行\",\n    ariaLabel: \"输入框\",\n  },\n  Md: {\n    toggle: \"收起/展开\",\n    copy: \"复制\",\n    diagram: '图形',\n    code: '代码',\n    zoomIn: '放大',\n    zoomOut: '缩小',\n    downLoad: '下载',\n  },\n  Bubble: {\n    ariaLabel: \"聊天消息气泡\",\n    emptyAvatar: \"无头像占位\",\n    userName: \"用户名称: {name}\",\n    content: \"消息内容\",\n    avatar: \"用户头像: {name}\"\n  },\n};\n","export default {\n  Input: {\n    send: \"Send\",\n    pauseAnswer: \"Stop\",\n    pleaseEnter: \"Please enter your question...\",\n    pleaseEnterPlaceholder:\n      \"Please enter your question and press {enterKey} to send, {shiftEnterKey} to wrap.\",\n    ariaLabel: \"Input box\",\n  },\n  Md: {\n    toggle: \"Collapse/Expand\",\n    copy: \"Copy\",\n    diagram: 'Diagram',\n    code: 'Code',\n    zoomIn: 'Zoom In',\n    zoomOut: 'Zoom Out',\n    downLoad: 'Download',\n  },\n  Bubble: {\n    ariaLabel: \"Chat message bubble\",\n    emptyAvatar: \"Empty avatar placeholder\",\n    userName: \"User name: {name}\",\n    content: \"Message content\",\n    avatar: \"User avatar: {name}\"\n  },\n};\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport zhCN from '../components-common/Locale/lang/zh-cn';\nimport enUS from '../components-common/Locale/lang/en-us';\n\n// 定义语言包接口\nexport interface LocaleData {\n  [key: string]: any;\n}\n\n// 定义支持的语言类型\nexport type LanguageCode = 'zh-cn' | 'en-us' | string;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LocaleService {\n  // 当前语言\n  private _currentLanguage: LanguageCode = 'zh-cn';\n  // 语言包存储\n  private _localeData: Map<LanguageCode, LocaleData> = new Map();\n  // 语言变更通知\n  private _languageChange = new Subject<LanguageCode>();\n  // 公开语言变更Observable\n  languageChange$ = this._languageChange.asObservable();\n\n  constructor() {\n    // 首先尝试从localStorage获取语言设置\n    const savedLang = localStorage.getItem('lang');\n    if (savedLang) {\n      this._currentLanguage = savedLang;\n    }\n    \n    // 初始化默认语言包\n    this.loadDefaultLocales();\n  }\n\n  /**\n   * 加载默认语言包\n   */\n  private async loadDefaultLocales(): Promise<void> {\n    try {\n      // 动态导入默认语言包\n\n      this._localeData.set('zh-cn', zhCN);\n      this._localeData.set('en-us', enUS);\n    } catch (error) {\n      console.error('Failed to load default locales:', error);\n    }\n  }\n\n  /**\n   * 设置当前语言\n   */\n  setLanguage(language: LanguageCode): void {\n    if (this._currentLanguage !== language) {\n      this._currentLanguage = language;\n      // 保存到localStorage\n      localStorage.setItem('lang', language);\n      this._languageChange.next(language);\n    }\n  }\n\n  /**\n   * 获取当前语言\n   */\n  getLanguage(): LanguageCode {\n    return this._currentLanguage;\n  }\n\n  /**\n   * 翻译文本\n   * @param key 翻译键，支持嵌套路径如 'Input.send'\n   * @param params 替换参数\n   */\n  translate(key: string, params?: { [key: string]: string | number }): string {\n    if (!key) return key;\n\n    // 获取当前语言的语言包\n    const localeData = this._localeData.get(this._currentLanguage) || {};\n    \n    // 解析嵌套键\n    const keys = key.split('.');\n    let value: any = localeData;\n    \n    for (const k of keys) {\n      if (value && typeof value === 'object' && k in value) {\n        value = value[k];\n      } else {\n        // 如果键不存在，返回原始键\n        return key;\n      }\n    }\n\n    // 处理替换参数\n    if (typeof value === 'string' && params) {\n      let result = value;\n      for (const [paramKey, paramValue] of Object.entries(params)) {\n        const regex = new RegExp(`\\\\{${paramKey}\\\\}`, 'g');\n        result = result.replace(regex, String(paramValue));\n      }\n      return result;\n    }\n\n    return value as string;\n  }\n\n  /**\n   * 添加新的语言\n   */\n  addLanguage(language: LanguageCode, localeData: LocaleData): void {\n    this._localeData.set(language, localeData);\n  }\n\n  /**\n   * 覆盖现有语言的部分翻译\n   */\n  overrideLocale(language: LanguageCode, localeData: LocaleData): void {\n    if (this._localeData.has(language)) {\n      const existingLocale = this._localeData.get(language) || {};\n      // 深度合并语言包\n      const mergedLocale = this.deepMerge(existingLocale, localeData);\n      this._localeData.set(language, mergedLocale);\n    } else {\n      // 如果语言不存在，则添加新语言\n      this.addLanguage(language, localeData);\n    }\n  }\n\n  /**\n   * 获取所有支持的语言\n   */\n  getSupportedLanguages(): LanguageCode[] {\n    return Array.from(this._localeData.keys());\n  }\n\n  /**\n   * 深度合并对象\n   */\n  private deepMerge(target: any, source: any): any {\n    const result = { ...target };\n    \n    for (const key in source) {\n      if (source.hasOwnProperty(key)) {\n        if (source[key] instanceof Object && key in target) {\n          result[key] = this.deepMerge(target[key], source[key]);\n        } else {\n          result[key] = source[key];\n        }\n      }\n    }\n    \n    return result;\n  }\n}","import { Pipe, PipeTransform, Injectable } from '@angular/core';\nimport { LocaleService } from './locale.service';\n\n/**\n * 翻译管道，用于在Angular模板中直接使用翻译功能\n * 用法：{{ 'Input.send' | translate }}\n * 带参数：{{ 'Input.pleaseEnterPlaceholder' | translate:{ enterKey: 'Enter', shiftEnterKey: 'Shift + Enter' } }}\n */\n@Pipe({\n  name: 'translate',\n  pure: false, // 设置为非纯管道，以便在语言变化时自动更新视图\n  standalone: true // 标记为standalone，以便在standalone组件中直接使用\n})\n@Injectable()\nexport class TranslatePipe implements PipeTransform {\n  constructor(private localeService: LocaleService) {}\n\n  /**\n   * 转换方法，实现PipeTransform接口\n   * @param key 翻译键\n   * @param params 替换参数\n   */\n  transform(key: string, params?: { [key: string]: string | number }): string {\n    if (!key) return key;\n    \n    // 调用LocaleService的翻译方法\n    return this.localeService.translate(key, params);\n  }\n}","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarBodyIconComponent } from '../avatar-body-icon/avatar-body-icon.component';\nimport { AvatarNoBodyIconComponent } from '../avatar-no-body-icon/avatar-no-body-icon.component';\nimport { TranslatePipe } from '../../Locale/translate.pipe';\n\n@Component({\n  selector: 'mc-avatar',\n  standalone: true,\n  imports: [CommonModule, AvatarBodyIconComponent, AvatarNoBodyIconComponent, TranslatePipe],\n  templateUrl: './avatar.component.html',\n  styleUrls: ['./avatar.component.scss']\n})\nexport class AvatarComponent implements OnInit, OnChanges {\n  @Input() imgSrc: string = '';\n  @Input() name: string = '';\n  @Input() width: number = 36;\n  @Input() height: number = 36;\n  @Input() isRound: boolean = true;\n  @Input() gender: string = '';\n\n  isErrorImg: boolean = false;\n  isNobody: boolean = true;\n  code: number = 1;\n  fontSize: number = 12;\n  nameDisplay: string = '';\n\n  ngOnInit(): void {\n    this.calcValues(this.name);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['name'] || changes['width'] || changes['height'] || changes['gender']) {\n      this.calcValues(this.name);\n    }\n  }\n\n  onErrorImg(): void {\n    this.isErrorImg = true;\n  }\n\n  private getBackgroundColor(char: string): void {\n    if (this.gender) {\n      if (this.gender.toLowerCase() === 'male') {\n        this.code = 1;\n      } else if (this.gender.toLowerCase() === 'female') {\n        this.code = 0;\n      }\n      return;\n    }\n    const unicode = char.charCodeAt(0);\n    this.code = unicode % 2;\n  }\n\n  private setDisplayName(nameValue: string, widthValue: number): void {\n    if (!nameValue) {\n      this.nameDisplay = '';\n      return;\n    }\n\n    if (nameValue.length < 2) {\n      this.nameDisplay = nameValue;\n    } else {\n      // 以中文开头显示最后两个字符\n      if (/^[\\u4e00-\\u9fa5]/.test(nameValue)) {\n        this.nameDisplay = nameValue.substr(nameValue.length - 2, 2);\n        // 英文开头\n      } else if (/^[A-Za-z]/.test(nameValue)) {\n        // 含有两个及以上，包含空格，下划线，中划线分隔符的英文名取前两个字母的首字母\n        if (/[_ -]/.test(nameValue)) {\n          const parts = nameValue.split(/_|-|\\s+/);\n          if (parts.length >= 2) {\n            this.nameDisplay = parts[0].substr(0, 1).toUpperCase() + parts[1].substr(0, 1).toUpperCase();\n          } else {\n            this.nameDisplay = nameValue.substr(0, 2).toUpperCase();\n          }\n        } else {\n          // 一个英文名的情况显示前两个字母\n          this.nameDisplay = nameValue.substr(0, 2).toUpperCase();\n        }\n      } else {\n        // 非中英文开头默认取前两个字符\n        this.nameDisplay = nameValue.substr(0, 2);\n      }\n    }\n    if (widthValue < 30) {\n      this.nameDisplay = nameValue.substr(0, 1).toUpperCase();\n    }\n    this.getBackgroundColor(nameValue.substr(0, 1));\n  }\n\n  private calcValues(nameInput: string): void {\n    const userName = nameInput;\n    const minNum = Math.min(this.width, this.height);\n    if (userName) {\n      this.isNobody = false;\n      this.setDisplayName(userName, minNum);\n    } else if (userName === '') {\n      this.isNobody = false;\n      this.nameDisplay = '';\n    } else {\n      this.isNobody = true;\n    }\n    this.fontSize = minNum / 4 + 3;\n  }\n}","<span class=\"mc-bubble-avatar-wrapper\">\n  <img\n    *ngIf=\"imgSrc && !isErrorImg\"\n    [src]=\"imgSrc\"\n    [attr.alt]=\"'Bubble.avatar' | translate:{ name: name }\"\n    (error)=\"onErrorImg()\"\n    [ngStyle]=\"{\n      height: height + 'px',\n      width: width + 'px',\n      borderRadius: isRound ? '100%' : '0'\n    }\"\n  />\n  <span\n    *ngIf=\"!imgSrc && !isNobody && nameDisplay?.length !== 0\"\n    [ngClass]=\"['mc-bubble-avatar-style', 'mc-bubble-avatar-background-' + code]\"\n    [ngStyle]=\"{\n      height: height + 'px',\n      width: width + 'px',\n      lineHeight: height + 'px',\n      fontSize: fontSize + 'px',\n      borderRadius: isRound ? '100%' : '0'\n    }\"\n  >\n    {{ nameDisplay }}\n  </span>\n  <span\n    *ngIf=\"!imgSrc && !isNobody && nameDisplay?.length === 0\"\n    class=\"mc-bubble-avatar-style\"\n    [ngStyle]=\"{ borderRadius: isRound ? '100%' : '0' }\"\n  >\n    <mc-avatar-body-icon [width]=\"width\" [height]=\"height\" />\n  </span>\n  <span\n    *ngIf=\"(!imgSrc && isNobody) || (imgSrc && isErrorImg)\"\n    class=\"mc-bubble-avatar-style\"\n    [ngStyle]=\"{ borderRadius: isRound ? '100%' : '0' }\"\n  >\n    <mc-avatar-no-body-icon [width]=\"width\" [height]=\"height\" />\n  </span>\n</span>","export const DEFAULT_AVATAR_WIDTH = 36;\nexport const DEFAULT_AVATAR_HEIGHT = 36;\nexport const AVATAR_NAME = 'name';\nexport const AVATAR_IMG = 'imgSrc';\n","const noop = () => {};\nexport type noopFunction = (...args: any) => any;\n\nexport interface DefaultAdapter {\n  getProp(key: string): any;\n  getProps(): any;\n  getState(key: string): any;\n  getStates(): any;\n  setState(s: any, callback?: any): void;\n  getCache(c: string): any;\n  getCaches(): any;\n  setCache(key: any, value: any): void;\n  nextTick(cb: (...args: any) => void): void;\n}\n\nclass BaseFoundation<T extends DefaultAdapter> {\n  static get cssClasses() {\n    return {};\n  }\n\n  static get strings() {\n    return {};\n  }\n\n  static get numbers() {\n    return {};\n  }\n\n  static get defaultAdapter() {\n    return {\n      getProp: noop,\n      getProps: noop,\n      getState: noop,\n      getStates: noop,\n      setState: noop,\n      getContext: noop,\n      getContexts: noop,\n      getCache: noop,\n      setCache: noop,\n      getCaches: noop,\n      stopPropagation: noop,\n    };\n  }\n\n  _adapter!: T;\n\n  constructor(adapter: T) {\n    this._adapter = { ...BaseFoundation.defaultAdapter, ...adapter };\n  }\n\n  getProp(key: string) {\n    return this._adapter.getProp(key);\n  }\n\n  getProps(): any {\n    return this._adapter.getProps() as any;\n  }\n\n  getState(key: string) {\n    return this._adapter.getState(key);\n  }\n\n  getStates(): any {\n    return this._adapter.getStates();\n  }\n\n  setState(states: any, cb?: (...args: any) => void) {\n    return this._adapter.setState({ ...states }, cb);\n  }\n\n  /* istanbul ignore next */\n  getCaches() {\n    return this._adapter.getCaches();\n  }\n\n  getCache(key: string) {\n    return this._adapter.getCache(key);\n  }\n\n  setCache(key: string, value: any) {\n    return key && this._adapter.setCache(key, value);\n  }\n\n  nextTick(cb: (...args: any) => void) {\n    return this._adapter.nextTick(cb);\n  }\n\n  _isInProps(key: string) {\n    const props = this.getProps();\n    return key in (props as any);\n  }\n\n  init(lifecycle?: any) {}\n\n  destroy() {}\n}\nexport default BaseFoundation;\n","import { AVATAR_NAME, AVATAR_IMG } from \"./common/bubble-constants\";\nimport { BubbleAvatar, BubbleAlign } from \"./common/bubble-types\";\nimport BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\n\nexport interface BubbleAdapter extends DefaultAdapter {}\n\nexport class BubbleFoundation extends BaseFoundation<BubbleAdapter> {\n  constructor(adapter: BubbleAdapter) {\n    super({ ...adapter });\n  }\n\n  getBubbleClasses() {\n    const { align, loading, isEmptyAvatar, avatarPosition } = this.getProps();\n    return [\n      `mc-bubble-avatar-${avatarPosition}`,\n      `mc-bubble-${align}`,\n      loading ? \"mc-bubble-loading\" : \"\",\n      isEmptyAvatar ? \"mc-bubble-avatar-empty\" : \"\",\n    ]\n      .filter(Boolean)\n      .join(\" \");\n  }\n\n  getIsEmptyAvatar(avatarConfig: BubbleAvatar | undefined) {\n    if (avatarConfig) {\n      // 传了 avatarConfig，但是没有 name 和 imgSrc 时表示头像区域仅占位\n      const keys = Object.keys(avatarConfig);\n      const shouldShow = keys.some(\n        (k) => k === AVATAR_NAME || k === AVATAR_IMG\n      );\n      return keys.length < 1 || !shouldShow;\n    } else {\n      return true;\n    }\n  }\n}\n","import BaseFoundation, { DefaultAdapter } from '../components-common/Base/foundation';\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'mate-base-component',\n  standalone: true,\n  template: '',\n})\nexport default class BaseComponent<T extends BaseFoundation<DefaultAdapter>> {\n  foundation: T;\n  cache: any;\n  constructor() {\n  }\n\n  ngOnDestroy() {\n    this.foundation &&\n      typeof this.foundation.destroy === 'function' &&\n      this.foundation.destroy();\n  }\n\n  get adapter(): DefaultAdapter {\n    return {\n      getProp: (key: string) => {\n        return this[key];\n      },\n      getProps: () => {\n        return this;\n      },\n      setState: (states, cb) => {\n        for (const key in states) {\n          if (states.hasOwnProperty(key)) {\n            this[key] = states[key];\n          }\n          cb && cb();\n        }\n      },\n      getState: (key) => this[key],\n      getStates: () => this,\n      getCache: (key) => key && this.cache[key],\n      getCaches: () => this.cache,\n      setCache: (key, value) => key && (this.cache[key] = value),\n      nextTick: (cb) => setTimeout(cb, 0),\n    };\n  }\n}\n","import { Component, Input, computed, ContentChild, TemplateRef, ContentChildren, QueryList } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';\nimport { AvatarComponent } from './avatar/avatar.component';\nimport { DEFAULT_AVATAR_WIDTH, DEFAULT_AVATAR_HEIGHT, AVATAR_NAME, AVATAR_IMG } from '../components-common/Bubble/common/bubble-constants';\nimport { BubbleAlign, BubbleVariant, AvatarPosition, BubbleAvatar } from '../components-common//Bubble/common/bubble-types';\nimport { BubbleAdapter, BubbleFoundation } from '../components-common/Bubble/foundation';\nimport BaseComponent from '../Base/base.component';\nimport { TranslatePipe } from '../Locale/translate.pipe';\n\n@Component({\n  selector: 'mc-bubble',\n  standalone: true,\n  imports: [CommonModule, BubbleLoadingComponent, AvatarComponent, TranslatePipe],\n  templateUrl: './bubble.component.html',\n  styleUrls: ['./bubble.component.scss']\n})\nexport class BubbleComponent extends BaseComponent<BubbleFoundation> {\n  // 组件属性\n  @Input() content: string = '';\n  @Input() loading: boolean = false;\n  @Input() align: BubbleAlign = 'left';\n  @Input() avatarPosition: AvatarPosition = 'side';\n  @Input() variant: BubbleVariant = 'filled';\n  @Input() avatarConfig?: BubbleAvatar;\n\n  // 内容投影模板引用\n  @ContentChild('avatar') avatarTemplate: TemplateRef<any> | null = null;\n  @ContentChild('top') topTemplate: TemplateRef<any> | null = null;\n  @ContentChild('loadingTpl') loadingTplTemplate: TemplateRef<any> | null = null;\n  @ContentChild('bottom') bottomTemplate: TemplateRef<any> | null = null;\n  \n  // 检测是否有内容投影\n  @ContentChildren('ng-content') contentChildren: QueryList<any>;\n  \n  // 计算是否有内容投影\n  get ngContentProjected(): boolean {\n    return this.contentChildren && this.contentChildren.length > 0;\n  }\n  \n  constructor() { super(); }\n\n  ngOnInit() {\n    this.foundation = new BubbleFoundation(this.adapter);\n    this.foundation.init();\n  }\n\n  override get adapter(): BubbleAdapter {\n    return {\n      ...super.adapter,\n      getProps: () => ({\n        content: this.content,\n        loading: this.loading,\n        align: this.align,\n        avatarPosition: this.avatarPosition,\n        variant: this.variant,\n        avatarConfig: this.avatarConfig,\n      }),\n    }\n  }\n\n  // 计算属性\n  get bubbleClasses(): string {\n    return this.foundation.getBubbleClasses();\n  };\n\n  get isEmptyAvatar(): boolean {\n    return this.foundation.getIsEmptyAvatar(this.avatarConfig);\n  };\n}\n","<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\n  <!-- 自定义头像区域 -->\n  <div *ngIf=\"avatarTemplate\" class=\"mc-bubble-avatar\" role=\"img\">\n    <ng-container *ngTemplateOutlet=\"avatarTemplate\"></ng-container>\n    <ng-content select=\"[avatar]\"></ng-content>\n  </div>\n  \n  <!-- 默认头像配置 -->\n  <div *ngIf=\"!avatarTemplate && avatarConfig\"\n    class=\"mc-bubble-avatar\" role=\"img\"\n    [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\n  >\n    <mc-avatar\n      *ngIf=\"!isEmptyAvatar\"\n      [imgSrc]=\"avatarConfig?.imgSrc || ''\"\n      [name]=\"avatarConfig?.name || ''\"\n      [width]=\"avatarConfig?.width || 36\"\n      [height]=\"avatarConfig?.height || 36\"\n      [gender]=\"avatarConfig?.gender || ''\"\n    />\n    <div *ngIf=\"isEmptyAvatar\"    class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\n         [style.width.px]=\"avatarConfig?.width || 36\"\n         [style.height.px]=\"avatarConfig?.height || 36\"></div>\n    <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\n      avatarConfig?.displayName\n    }}</span>\n  </div>\n  <div\n    class=\"mc-bubble-content-container\" aria-live=\"polite\"\n    [ngClass]=\"{ 'with-avatar': avatarTemplate || avatarConfig }\"\n  >\n    <!-- 顶部内容投影 -->\n    <ng-container *ngIf=\"!loading\">\n      <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\n      <ng-content select=\"[top]\"></ng-content>\n    </ng-container>\n    \n    <!-- 加载状态 -->\n    <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\n      <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\n        <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\n        <ng-content select=\"[loadingTpl]\"></ng-content>\n      </ng-container>\n      <ng-template #defaultLoadingTemplate>\n        <mc-bubble-loading></mc-bubble-loading>\n      </ng-template>\n    </div>\n    \n    <!-- 主要内容 -->\n    <div\n      *ngIf=\"!loading\"\n      class=\"mc-bubble-content\"\n      [ngClass]=\"[variant]\"\n      role=\"region\"\n    >\n      <ng-content></ng-content>\n      <ng-container *ngIf=\"content && !ngContentProjected\">\n        <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\n      </ng-container>\n    </div>\n    \n    <!-- 底部内容投影 -->\n    <ng-container *ngIf=\"!loading\">\n      <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\n      <ng-content select=\"[bottom]\"></ng-content>\n    </ng-container>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BubbleComponent } from './bubble.component';\nimport { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';\nimport { AvatarComponent } from './avatar/avatar.component';\n\n@NgModule({\n  declarations: [\n    \n  ],\n  imports: [\n    CommonModule,\n    BubbleComponent,\n    BubbleLoadingComponent,\n    AvatarComponent\n  ],\n  exports: [\n    BubbleComponent,\n    BubbleLoadingComponent,\n    AvatarComponent\n  ]\n})\nexport class BubbleModule { }","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'mc-send-icon',\n  standalone: true,\n  templateUrl: './send-icon.component.html',\n  styleUrls: ['./send-icon.component.scss']\n})\nexport class SendIconComponent {\n\n}","<svg\n  width=\"16px\"\n  height=\"16px\"\n  viewBox=\"0 0 16 16\"\n  version=\"1.1\"\n  xmlns=\"http://www.w3.org/2000/svg\"\n>\n  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n    <path\n      d=\"M13.5105149,2.56164948 C14.1211149,2.35546948 14.7829149,2.68328948 14.9892149,3.29376948 C15.0349149,3.42925948 15.0552149,3.57159948 15.0495149,3.71368948 L15.0495149,3.71368948 L15.0351149,3.85546948 L13.6575149,12.2717195 C13.5237149,13.0892195 12.7524149,13.6435195 11.9348149,13.5097195 C11.8542149,13.4965195 11.7751149,13.4768195 11.6980149,13.4508195 L11.6980149,13.4508195 L11.5840149,13.4071195 L9.3049349,12.4260195 L8.4482449,13.5422195 C8.1958049,13.8708195 7.8205549,14.0786195 7.4128449,14.1207195 L7.4128449,14.1207195 L7.2585449,14.1286195 C6.4787649,14.1286195 5.8381349,13.5337195 5.7653849,12.7731195 L5.7653849,12.7731195 L5.7585449,12.6286195 L5.7602549,10.5258195 L5.7756349,10.4384195 L5.7944349,10.3824195 L5.8266649,10.3168995 L5.8735349,10.2503695 L5.9177249,10.2039195 L12.6909149,3.89392948 L2.3403349,7.38903948 C2.2329149,7.42529948 2.1418449,7.49676948 2.0808149,7.59063948 L2.0808149,7.59063948 L2.0412649,7.66497948 C1.9440949,7.89044948 2.0258749,8.14788948 2.2236349,8.27917948 L2.2236349,8.27917948 L2.3029749,8.32214948 L4.4799849,9.26177948 C4.7333949,9.37121948 4.8503449,9.66546948 4.7409649,9.91894948 C4.6435549,10.1443495 4.4003949,10.2616595 4.1694349,10.2081295 L4.1694349,10.2081295 L4.0837449,10.1798795 L1.9072249,9.24047948 C1.1462449,8.91284948 0.795166898,8.03039948 1.1225549,7.26953948 C1.2700249,6.92755948 1.5380849,6.65435948 1.8730449,6.50018948 L1.8730449,6.50018948 L2.0205049,6.44158948 Z M6.7578149,11.3299195 L6.7585449,12.6286195 L6.7666013,12.7185103 C6.80894095,12.9517898 7.0131049,13.1286195 7.2585449,13.1286195 C7.3828149,13.1286195 7.5014649,13.0824195 7.5925349,13.0008195 L7.5925349,13.0008195 L7.6550349,12.9332195 L8.3569349,12.0179195 L6.7578149,11.3299195 Z M13.9888149,4.05090948 L7.1599149,10.4129195 L11.9795149,12.4886195 C11.9980149,12.4966195 12.0173149,12.5035195 12.0369149,12.5093195 L12.0369149,12.5093195 L12.0964149,12.5228195 C12.3386149,12.5624195 12.5686149,12.4209195 12.6482149,12.1975195 L12.6482149,12.1975195 L12.6706149,12.1101195 L13.9888149,4.05090948 Z\"\n    ></path>\n  </g>\n</svg>\n","export enum DisplayType {\n  Simple = \"simple\",\n  Full = \"full\",\n}\nexport enum InputVariant {\n  Bordered = \"bordered\",\n  BorderLess = \"borderless\",\n}\nexport enum SendBtnVariant {\n  Simple = \"simple\",\n  Full = \"full\",\n}\nexport enum SubmitShortKey {\n  Enter = \"enter\",\n  ShiftEnter = \"shiftEnter\",\n}","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { LocaleService } from './locale.service';\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  exports: []\n})\nexport class LocaleModule {\n  /**\n   * 静态方法，用于配置模块并提供服务\n   * 可以在AppModule中使用LocaleModule.forRoot()来初始化\n   */\n  static forRoot(): ModuleWithProviders<LocaleModule> {\n    return {\n      ngModule: LocaleModule,\n      providers: [\n        LocaleService\n      ]\n    };\n  }\n\n  /**\n   * 普通导入方法，用于特性模块中导入\n   * 避免服务被多次实例化\n   */\n  static forChild(): ModuleWithProviders<LocaleModule> {\n    return {\n      ngModule: LocaleModule,\n      providers: [] // 子模块不提供服务实例\n    };\n  }\n}","// 导出Locale服务\nimport { LocaleService } from './locale.service';\nimport { LocaleModule } from './locale.module';\nimport { TranslatePipe } from './translate.pipe';\n\n// 重新导出类型\nexport type { LanguageCode, LocaleData } from './locale.service';\n\nexport {\n  LocaleService,\n  LocaleModule,\n  TranslatePipe\n};","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\nimport { SendBtnVariant } from './common/types';\n\nexport interface InputButtonAdapter extends DefaultAdapter {\n  locale(key: string, params?: Record<string, string>): string;\n  emitChange(): void;\n}\n\nexport class InputButtonFoundation extends BaseFoundation<InputButtonAdapter> {\n  constructor(adapter: InputButtonAdapter) {\n    super({ ...adapter });\n  }\n\n  showClickWave(nativeElement: HTMLElement, event: MouseEvent): void {\n    const rect = nativeElement.getBoundingClientRect();\n    this.setState({\n      waveStyle: {\n        left: event.clientX - rect.left + 'px',\n        top: event.clientY - rect.top + 'px',\n      },\n      showWave: true,\n    });\n\n    setTimeout(() => {\n      this.setState({\n        showWave: false,\n      });\n    }, 300);\n  }\n\n  getButtonClasses() {\n    const { loading, sendBtnVariant } = this.getProps();\n    const isMouseDown = this.getState('isMouseDown');\n    return {\n      'mc-button': true,\n      'mc-button-loading': loading,\n      mousedown: isMouseDown,\n      'mc-button-simple': sendBtnVariant === SendBtnVariant.Simple,\n    };\n  }\n}\n","import { Component, Input, EventEmitter, Output, HostListener, ViewChild, ElementRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SendIconComponent } from '../send-icon/send-icon.component';\nimport { SendBtnVariant } from '../../components-common/Input/common/types';\nimport BaseComponent from '../../Base/base.component';\nimport { LocaleService, TranslatePipe } from '../../Locale';\nimport { InputButtonAdapter, InputButtonFoundation } from '../../components-common/Input/button-foundation';\n\n@Component({\n  selector: 'mc-button',\n  standalone: true,\n  imports: [CommonModule, SendIconComponent, TranslatePipe],\n  templateUrl: './button.component.html',\n  styleUrls: ['./button.component.scss'],\n})export class ButtonComponent extends BaseComponent<InputButtonFoundation> {\n  @Input() disabled: boolean = false;\n  @Input() loading: boolean = false;\n  @Input() inputValue: string = '';\n  @Input() sendBtnVariant: SendBtnVariant = SendBtnVariant.Full;\n  \n  @Output() submit = new EventEmitter<string>();\n  @Output() cancel = new EventEmitter<void>();\n  @Output() change = new EventEmitter<string>();\n  \n  @ViewChild('button') buttonElement!: ElementRef<HTMLButtonElement>;\n  \n  isMouseDown: boolean = false;\n  showWave: boolean = false;\n  waveStyle: { top: string; left: string } = { top: '0px', left: '0px' };\n  \n  constructor(private localeService: LocaleService) { super(); }\n  \n  get buttonClasses(): Record<string, any> {\n    return this.foundation.getButtonClasses();\n  }\n  \n  ngOnInit() {\n    this.foundation = new InputButtonFoundation(this.adapter as InputButtonAdapter);\n    this.foundation.init();\n  }\n  \n  @HostListener('mousedown')\n  onMouseDown(): void {\n    this.isMouseDown = true;\n  }\n  \n  @HostListener('mouseup')\n  onMouseUp(): void {\n    this.isMouseDown = false;\n  }\n  \n  showClickWave(event: MouseEvent): void {\n    this.foundation.showClickWave(this.buttonElement.nativeElement, event);\n  }\n  \n  onConfirm(event: MouseEvent): void {\n    this.showClickWave(event);\n    \n    if (this.loading) {\n      this.cancel.emit();\n    } else {\n      this.submit.emit(this.inputValue);\n      this.inputValue = '';\n      this.change.emit(this.inputValue);\n    }\n  }\n  \n\n}","<button\n  #button\n  [disabled]=\"disabled || (!loading && !inputValue)\"\n  [ngClass]=\"buttonClasses\"\n  (click)=\"onConfirm($event)\"\n  [attr.aria-label]=\"loading ? ('Input.pauseAnswer' | translate) : ('Input.send' | translate)\"\n  [attr.aria-disabled]=\"disabled || (!loading && !inputValue)\"\n  [attr.aria-busy]=\"loading\"\n>\n  <span class=\"mc-button-content\">\n    <ng-container *ngIf=\"loading\">\n      <ng-template [ngTemplateOutlet]=\"loadingIcon\"></ng-template>\n    </ng-container>\n    <mc-send-icon *ngIf=\"!loading\"></mc-send-icon>\n    <span *ngIf=\"sendBtnVariant === 'full'\">\n      {{\n        loading ? (\"Input.pauseAnswer\" | translate) : (\"Input.send\" | translate)\n      }}\n    </span>\n  </span>\n  <div\n    *ngIf=\"showWave\"\n    class=\"mc-button-water-wave\"\n    [style.top]=\"waveStyle.top\"\n    [style.left]=\"waveStyle.left\"\n  ></div>\n</button>\n\n<ng-template #loadingIcon>\n  <svg\n    width=\"16px\"\n    height=\"16px\"\n    viewBox=\"0 0 16 16\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <path\n        d=\"M8,12 C8.27614237,12 8.5,12.2238576 8.5,12.5 L8.5,14.5 C8.5,14.7761424 8.27614237,15 8,15 C7.72385763,15 7.5,14.7761424 7.5,14.5 L7.5,12.5 C7.5,12.2238576 7.72385763,12 8,12 Z M11.0495421,11.3466838 L12.2251126,12.9647178 C12.3874251,13.1881217 12.3379006,13.5008065 12.1144968,13.663119 C11.8910929,13.8254314 11.5784081,13.775907 11.4160956,13.5525031 L10.2405251,11.9344691 C10.0782127,11.7110652 10.1277371,11.3983804 10.351141,11.236068 C10.5745449,11.0737556 10.8872297,11.12328 11.0495421,11.3466838 Z M5.64885899,11.236068 C5.87226287,11.3983804 5.92178728,11.7110652 5.75947486,11.9344691 L4.58390436,13.5525031 C4.42159194,13.775907 4.10890711,13.8254314 3.88550323,13.663119 C3.66209936,13.5008065 3.61257495,13.1881217 3.77488736,12.9647178 L4.95045787,11.3466838 C5.11277028,11.12328 5.42545512,11.0737556 5.64885899,11.236068 Z M12.4342628,8.91504822 L14.3363759,9.53308221 C14.5990029,9.61841489 14.7427283,9.90049196 14.6573956,10.163119 C14.5720629,10.425746 14.2899859,10.5694714 14.0273589,10.4841387 L12.1252458,9.86610473 C11.8626188,9.78077205 11.7188934,9.49869498 11.8042261,9.23606798 C11.8895588,8.97344097 12.1716358,8.82971553 12.4342628,8.91504822 Z M4.19577393,9.23606798 C4.28110662,9.49869498 4.13738118,9.78077205 3.87475417,9.86610473 L1.97264114,10.4841387 C1.71001414,10.5694714 1.42793707,10.425746 1.34260439,10.163119 C1.2572717,9.90049196 1.40099714,9.61841489 1.66362415,9.53308221 L3.56573718,8.91504822 C3.82836418,8.82971553 4.11044125,8.97344097 4.19577393,9.23606798 Z M14.6573956,5.83688104 C14.7427283,6.09950804 14.5990029,6.38158511 14.3363759,6.46691779 L12.4342628,7.08495178 C12.1716358,7.17028447 11.8895588,7.02655903 11.8042261,6.76393202 C11.7188934,6.50130502 11.8626188,6.21922795 12.1252458,6.13389527 L14.0273589,5.51586128 C14.2899859,5.43052859 14.5720629,5.57425403 14.6573956,5.83688104 Z M1.97264114,5.51586128 L3.87475417,6.13389527 C4.13738118,6.21922795 4.28110662,6.50130502 4.19577393,6.76393202 C4.11044125,7.02655903 3.82836418,7.17028447 3.56573718,7.08495178 L1.66362415,6.46691779 C1.40099714,6.38158511 1.2572717,6.09950804 1.34260439,5.83688104 C1.42793707,5.57425403 1.71001414,5.43052859 1.97264114,5.51586128 Z M12.1144968,2.33688104 C12.3379006,2.49919345 12.3874251,2.81187829 12.2251126,3.03528216 L11.0495421,4.65331615 C10.8872297,4.87672003 10.5745449,4.92624444 10.351141,4.76393202 C10.1277371,4.60161961 10.0782127,4.28893477 10.2405251,4.0655309 L11.4160956,2.44749691 C11.5784081,2.22409304 11.8910929,2.17456862 12.1144968,2.33688104 Z M4.58390436,2.44749691 L5.75947486,4.0655309 C5.92178728,4.28893477 5.87226287,4.60161961 5.64885899,4.76393202 C5.42545512,4.92624444 5.11277028,4.87672003 4.95045787,4.65331615 L3.77488736,3.03528216 C3.61257495,2.81187829 3.66209936,2.49919345 3.88550323,2.33688104 C4.10890711,2.17456862 4.42159194,2.22409304 4.58390436,2.44749691 Z M8,1 C8.27614237,1 8.5,1.22385763 8.5,1.5 L8.5,3.5 C8.5,3.77614237 8.27614237,4 8,4 C7.72385763,4 7.5,3.77614237 7.5,3.5 L7.5,1.5 C7.5,1.22385763 7.72385763,1 8,1 Z\"\n      ></path>\n    </g>\n  </svg>\n</ng-template>\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\nimport {\n  DisplayType,\n  InputVariant,\n  SendBtnVariant,\n  SubmitShortKey,\n} from './common/types';\n\nexport interface InputAdapter extends DefaultAdapter {\n  locale(key: string, params?: Record<string, string>): string;\n  emitChange(): void;\n  submit(inputValue: string): void;\n}\n\nexport class InputFoundation extends BaseFoundation<InputAdapter> {\n  constructor(adapter: InputAdapter) {\n    super({ ...adapter });\n  }\n\n  getInputClasses() {\n    const { disabled, displayType, variant } = this.getProps();\n    return {\n      'mc-input': true,\n      'mc-input-disabled': disabled,\n      'mc-input-simple': displayType === DisplayType.Simple,\n      'mc-input-borderless': variant === InputVariant.BorderLess,\n    };\n  }\n\n  getPlaceholderText() {\n    const { placeholder, submitShortKey } = this.getProps();\n    if (placeholder) {\n      return placeholder;\n    }\n\n    let enterKey = '';\n    let shiftEnterKey = '';\n\n    if (submitShortKey === SubmitShortKey.Enter) {\n      enterKey = 'Enter';\n      shiftEnterKey = 'Shift + Enter';\n    } else if (submitShortKey === SubmitShortKey.ShiftEnter) {\n      enterKey = 'Shift + Enter';\n      shiftEnterKey = 'Enter';\n    }\n\n    return enterKey\n      ? this._adapter.locale('Input.pleaseEnterPlaceholder', {\n          enterKey,\n          shiftEnterKey,\n        })\n      : this._adapter.locale('Input.pleaseEnter');\n  }\n\n  clearInput(): void {\n    this.setState({\n      inputValue: '',\n    });\n    this._adapter.emitChange();\n  }\n\n  emitChange(): void {\n    this._adapter.emitChange();\n  }\n\n  submit(inputValue: string): void {\n    this._adapter.submit(inputValue);\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    const { submitShortKey, lock } = this.getProps();\n    const inputValue = this.getState('inputValue');\n    if (submitShortKey === null) {\n      return;\n    }\n\n    const shiftKey =\n      submitShortKey === SubmitShortKey.Enter\n        ? !event.shiftKey\n        : submitShortKey === SubmitShortKey.ShiftEnter\n        ? event.shiftKey\n        : false;\n\n    if (shiftKey && event.key === 'Enter' && !lock) {\n      event.preventDefault();\n      this.submit(inputValue);\n      this.setState({\n        inputValue: '',\n      });\n      this.emitChange();\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  OnInit,\n  ViewChild,\n  ElementRef,\n  ContentChild,\n  TemplateRef,\n  SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from './button/button.component';\nimport {\n  DisplayType,\n  InputVariant,\n  SendBtnVariant,\n  SubmitShortKey,\n} from '../components-common/Input/common/types';\n\n// TextareaAutoSize类型定义\nexport type TextareaAutoSize = { minRows?: number; maxRows?: number } | boolean;\n\n// 默认的autosize配置\nconst DEFAULT_AUTOSIZE = {\n  minRows: 1,\n  maxRows: 5\n};\n\nimport BaseComponent from '../Base/base.component';\nimport {\n  InputAdapter,\n  InputFoundation,\n} from '../components-common/Input/foundation';\nimport { LocaleService } from '../Locale/locale.service';\nimport { TranslatePipe } from '../Locale/translate.pipe';\n\n// 创建一个token用于组件间通信\nexport const inputContextToken = 'input-context';\n\n@Component({\n  selector: 'mc-input',\n  standalone: true,\n  imports: [CommonModule, FormsModule, ButtonComponent, TranslatePipe],\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n  providers: [{ provide: inputContextToken, useExisting: InputComponent }],\n})\nexport class InputComponent extends BaseComponent<InputFoundation> implements OnInit {\n  @Input() value: string = '';\n  @Input() placeholder: string = '';\n  @Input() disabled: boolean = false;\n  @Input() displayType: DisplayType = DisplayType.Full;\n  @Input() variant: InputVariant = InputVariant.Bordered;\n  @Input() sendBtnVariant: SendBtnVariant = SendBtnVariant.Full;\n  @Input() loading: boolean = false;\n  @Input() showCount: boolean = false;\n  @Input() maxLength: number | null = null;\n  @Input() submitShortKey: SubmitShortKey | null | string =\n    SubmitShortKey.Enter;\n  @Input() autofocus: boolean = false;\n  @Input() autosize: TextareaAutoSize = false;\n  \n  // textarea样式\n  textareaStyle: Record<string, string> = {};\n\n  @Output() change = new EventEmitter<string>();\n  @Output() submit = new EventEmitter<string>();\n  @Output() cancel = new EventEmitter<void>();\n  @Output() focus = new EventEmitter<FocusEvent>();\n  @Output() blur = new EventEmitter<FocusEvent>();\n\n  @ViewChild('textarea') textareaElement!: ElementRef<HTMLTextAreaElement>;\n\n  @ContentChild('head') headTemplate: TemplateRef<any> | null = null;\n  @ContentChild('prefix') prefixTemplate: TemplateRef<any> | null = null;\n  @ContentChild('suffix') suffixTemplate: TemplateRef<any> | null = null;\n  @ContentChild('button') buttonTemplate: TemplateRef<any> | null = null;\n  @ContentChild('extra') extraTemplate: TemplateRef<any> | null = null;\n\n  inputValue: string = '';\n  lock: boolean = false;\n\n  constructor(private localeService: LocaleService) {\n    super();\n  }\n\n  ngOnInit() {\n    this.foundation = new InputFoundation(this.adapter);\n    this.foundation.init();\n    this.inputValue = this.value;\n  }\n\n  override get adapter(): InputAdapter {\n    return {\n      ...super.adapter,\n      locale: (key, params) => this.localeService.translate(key, params),\n      emitChange: () => {\n        this.change.emit(this.inputValue);\n      },\n      submit: (inputValue) => {\n        this.submit.emit(inputValue);\n      },\n    };\n  }\n\n  onChange(e): void {\n    e.stopPropagation();\n    this.foundation.emitChange();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['value']) {\n      this.inputValue = changes['value']?.currentValue || '';\n      // 值变化时更新textarea样式\n      this.updateTextareaStyle();\n    }\n    \n    if (changes['autosize']) {\n      // autosize配置变化时更新textarea样式\n      this.updateTextareaStyle();\n    }\n  }\n\n  get inputClasses(): Record<string, any> {\n    return this.foundation.getInputClasses();\n  }\n\n  get maxlengthValue() {\n    return this.maxLength !== undefined ? this.maxLength : null;\n  }\n\n  onInput(): void {\n    if (!this.lock) {\n      this.foundation.emitChange();\n      // 输入时更新textarea样式\n      this.updateTextareaStyle();\n    }\n  }\n\n  onCompositionStart(): void {\n    this.lock = true;\n  }\n\n  onCompositionEnd(): void {\n    this.lock = false;\n    this.foundation.emitChange();\n  }\n\n  onKeydown(event: KeyboardEvent): void {\n    this.foundation.onKeydown(event);\n  }\n\n  clearInput(): void {\n    this.foundation.clearInput();\n  }\n\n  getInput(): string {\n    return this.inputValue;\n  }\n\n  // 处理button组件的事件\n  onButtonSubmit(value: string): void {\n    this.submit.emit(value);\n  }\n\n  onButtonCancel(): void {\n    this.cancel.emit();\n  }\n\n  onButtonChange(value: string): void {\n    this.inputValue = value;\n    this.foundation.emitChange();\n  }\n\n  ngAfterViewInit() {\n    if (this.autofocus && this.textareaElement && !this.disabled) {\n      // 在下一个变更检测周期中聚焦，以确保视图已经完全初始化\n      setTimeout(() => {\n        this.textareaElement.nativeElement.focus();\n      });\n    }\n    \n    // 初始化时更新textarea样式\n    this.updateTextareaStyle();\n  }\n  \n  // 更新textarea样式\n  updateTextareaStyle() {\n    if (!this.textareaElement || this.autosize === false) {\n      this.textareaStyle = {};\n      return;\n    }\n    \n    const config = this.getAutosizeConfig();\n    const result = this.computeTextareaHeight(\n      this.textareaElement.nativeElement,\n      config.minRows,\n      config.maxRows\n    );\n    \n    this.textareaStyle = {\n      ...result,\n      resize: 'none'\n    };\n  }\n  \n  // 获取autosize配置\n  private getAutosizeConfig() {\n    return typeof this.autosize === 'boolean'\n      ? DEFAULT_AUTOSIZE\n      : this.autosize;\n  }\n  \n  // 计算textarea高度\n  private computeTextareaHeight(\n    targetElement: HTMLTextAreaElement,\n    minRows = 1,\n    maxRows?: number\n  ): Record<string, string> {\n    const style = window.getComputedStyle(targetElement);\n    const boxSizing = style.getPropertyValue('box-sizing');\n    \n    const paddingSize = \n      Number.parseFloat(style.getPropertyValue('padding-top')) +\n      Number.parseFloat(style.getPropertyValue('padding-bottom'));\n    \n    const borderSize = \n      Number.parseFloat(style.getPropertyValue('border-top-width')) +\n      Number.parseFloat(style.getPropertyValue('border-bottom-width'));\n    \n    // 创建临时textarea元素\n    const tempTextarea = document.createElement('textarea');\n    const sizingStyle = [\n      'letter-spacing', 'line-height', 'padding-top', 'padding-bottom',\n      'font-family', 'font-weight', 'font-size', 'font-variant',\n      'text-rendering', 'text-transform', 'width', 'text-indent',\n      'padding-left', 'padding-right', 'border-width', 'box-sizing',\n      'word-break', 'white-space'\n    ];\n    \n    const contextStyle = sizingStyle\n      .map(name => `${name}:${style.getPropertyValue(name)}`)\n      .join(';');\n    \n    const hiddenStyle = `\n      min-height:0 !important;\n      max-height:none !important;\n      height:0 !important;\n      visibility:hidden !important;\n      overflow:hidden !important;\n      position:absolute !important;\n      z-index:-1000 !important;\n      top:0 !important;\n      right:0 !important;\n      pointer-events:none !important;\n    `;\n    \n    tempTextarea.setAttribute('style', `${contextStyle};${hiddenStyle}`);\n    tempTextarea.value = targetElement.value || targetElement.placeholder || '';\n    \n    document.body.appendChild(tempTextarea);\n    \n    let height = tempTextarea.scrollHeight;\n    const result: Record<string, string> = {\n      height: `${height}px`\n    };\n    \n    if (minRows !== undefined || maxRows !== undefined) {\n      tempTextarea.value = ' ';\n      const singleRowHeight = tempTextarea.scrollHeight - paddingSize;\n      \n      if (minRows !== undefined) {\n        let minHeight = singleRowHeight * minRows;\n        if (boxSizing === 'border-box') {\n          minHeight = minHeight + paddingSize + borderSize;\n        }\n        height = Math.max(minHeight, height);\n        result['minHeight'] = `${minHeight}px`;\n      }\n      \n      if (maxRows !== undefined) {\n        let maxHeight = singleRowHeight * maxRows;\n        if (boxSizing === 'border-box') {\n          maxHeight = maxHeight + paddingSize + borderSize;\n        }\n        if (height > maxHeight) {\n          height = maxHeight;\n          result['overflowY'] = 'auto';\n        }\n      }\n    }\n    \n    document.body.removeChild(tempTextarea);\n    \n    result['height'] = `${height}px`;\n    return result;\n  }\n\n  get placeholderText(): string {\n    return this.foundation.getPlaceholderText();\n  }\n\n  onFocus(event: FocusEvent) {\n    this.focus.emit(event);\n  }\n\n  onBlur(event: FocusEvent) {\n    this.blur.emit(event);\n  }\n}\n","<div [ngClass]=\"inputClasses\">\n  <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\n\n  <div class=\"mc-input-content\">\n    <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\n\n    <textarea\n      #textarea\n      [(ngModel)]=\"inputValue\"\n      [placeholder]=\"placeholderText\"\n      [disabled]=\"disabled\"\n      [maxlength]=\"maxLength\"\n      class=\"mc-textarea\"\n      [ngClass]=\"{\n        'mc-textarea-simple': displayType === 'simple',\n        'mc-textarea-disabled': disabled\n      }\"\n      [ngStyle]=\"textareaStyle\"\n      [attr.aria-label]=\"'Input.ariaLabel' | translate\"\n      [attr.aria-disabled]=\"disabled\"\n      (input)=\"onInput()\"\n      (change)=\"onChange($event)\"\n      (compositionstart)=\"onCompositionStart()\"\n      (compositionend)=\"onCompositionEnd()\"\n      (keydown)=\"onKeydown($event)\"\n      (focus)=\"onFocus($event)\"\n      (blur)=\"onBlur($event)\"\n    ></textarea>\n    <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\n\n    <ng-container *ngIf=\"displayType === 'simple'\">\n      <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\n        <ng-container\n          *ngIf=\"buttonTemplate; then buttonTemplate\"\n        ></ng-container>\n      </ng-container>\n      <ng-template #defaultButton>\n        <mc-button\n          [disabled]=\"disabled || (!loading && !inputValue)\"\n          [loading]=\"loading\"\n          [inputValue]=\"inputValue\"\n          [sendBtnVariant]=\"sendBtnVariant\"\n          (submit)=\"onButtonSubmit($event)\"\n          (cancel)=\"onButtonCancel()\"\n          (change)=\"onButtonChange($event)\"\n        ></mc-button>\n      </ng-template>\n    </ng-container>\n  </div>\n\n  <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\n    <div class=\"mc-input-foot-left\">\n      <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\n      <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\n        {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\n      </span>\n    </div>\n\n    <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\n      <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\n    </ng-container>\n    <ng-template #defaultFooterButton>\n      <mc-button\n        [disabled]=\"disabled || (!loading && !inputValue)\"\n        [loading]=\"loading\"\n        [inputValue]=\"inputValue\"\n        [sendBtnVariant]=\"sendBtnVariant\"\n        (submit)=\"onButtonSubmit($event)\"\n        (cancel)=\"onButtonCancel()\"\n        (change)=\"onButtonChange($event)\"\n      ></mc-button>\n    </ng-template>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { InputComponent } from './input.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from './button/button.component';\nimport { SendIconComponent } from './send-icon/send-icon.component';\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ButtonComponent,\n    SendIconComponent,\n    InputComponent\n  ],\n  exports: [InputComponent],\n})\nexport class InputModule {}\n","import { filterXSS, getDefaultCSSWhiteList, getDefaultWhiteList, type IWhiteList } from 'xss';\nimport type { CustomXssRule, MdPlugin } from './mdCard.types';\nexport class MDCardService {\n  private xssWhiteList = getDefaultWhiteList();\n  private cssWhiteList = getDefaultCSSWhiteList();\n\n  constructor() {\n    this.setDefaultXss();\n  }\n\n  private setDefaultXss() {\n    this.xssWhiteList['input'] = ['type', 'checked', 'disabled', 'class'];\n    this.xssWhiteList['label'] = ['for'];\n    this.xssWhiteList['ul'] = ['class'];\n    this.xssWhiteList['div'] = ['class', 'key'];\n    this.xssWhiteList['a'] = ['href', 'class', 'target', 'name'];\n    this.xssWhiteList['ol'] = ['start'];\n\n    this.xssWhiteList['p'] = ['class'];\n    this.xssWhiteList['span'] = ['style', 'class', 'title', 'id'];\n    this.xssWhiteList['svg'] = ['style', 'class', 'width', 'height', 'viewbox', 'preserveaspectratio', 'id', 'fill', 'stroke'];\n    this.xssWhiteList['path'] = ['style', 'class', 'd', 'id', 'fill', 'stroke'];\n    this.xssWhiteList['th'] = ['style'];\n    this.xssWhiteList['td'] = ['style'];\n  }\n\n  private onIgnoreTagAttr(tag: string, name: string, value: string, isWhiteAttr: boolean) {\n    if (!isWhiteAttr && (name === 'id' || (tag === 'span' && name === 'style'))) {\n      return name + '=' + value;\n    }\n    return undefined;\n  }\n\n  getXssWhiteList() {\n    return this.xssWhiteList;\n  }\n\n  setXssWhiteList(list: IWhiteList) {\n    this.xssWhiteList = list;\n  }\n\n  setCustomXssRules(rules: CustomXssRule[]) {\n    if (rules) {\n      rules.forEach((rule) => {\n        if (rule['value'] === null) {\n          delete this.xssWhiteList[rule['key']];\n        } else {\n          this.xssWhiteList[rule['key']] = rule['value'];\n        }\n      });\n    }\n  }\n\n\n  setMdPlugins(plugins: MdPlugin[], mdt: any) {\n    if (plugins && plugins.length) {\n      plugins.forEach(item => {\n        const { plugin, opts } = item;\n        mdt.use(plugin, opts);\n      })\n    }\n  }\n\n  filterHtml(html: string) {\n    return filterXSS(html, {\n      whiteList: this.xssWhiteList,\n      onIgnoreTagAttr: this.onIgnoreTagAttr,\n      css: {\n        whiteList: Object.assign({}, this.cssWhiteList, {\n          top: true,\n          left: true,\n          bottom: true,\n          right: true,\n        }),\n      },\n    });\n  }\n}","import type { MermaidConfig } from './mdCard.types';\n\ninterface MermaidViewState {\n  scale: number;\n  offsetX: number;\n  offsetY: number;\n  dragging: boolean;\n  dragStart: { x: number; y: number };\n  lastOffset: { x: number; y: number };\n}\n\nexport class MermaidService {\n  private mermaidInstance: any = null;\n  private isLoading = false;\n  private lastValidResult: string = '';\n  private viewStateMap = new WeakMap<HTMLElement, MermaidViewState>();\n  private containerHeight = 400;\n\n  constructor(private config: MermaidConfig = {}) {}\n\n  private async loadMermaid() {\n    if (this.mermaidInstance) {\n      return this.mermaidInstance;\n    }\n\n    if (this.isLoading) {\n      return new Promise((resolve) => {\n        const checkInstance = () => {\n          if (this.mermaidInstance) {\n            resolve(this.mermaidInstance);\n          } else {\n            setTimeout(checkInstance, 50);\n          }\n        };\n        checkInstance();\n      });\n    }\n\n    this.isLoading = true;\n    try {\n      const { default: mermaid } = await import('mermaid') as any;\n      mermaid.initialize({\n        theme: this.config.theme || 'default',\n        startOnLoad: false,\n        suppressErrorRendering: true,\n        ...this.config\n      });\n      this.mermaidInstance = mermaid;\n      return mermaid;\n    } catch (error) {\n      console.error('Failed to load mermaid:', error);\n      throw new Error('Failed to load mermaid library');\n    } finally {\n      this.isLoading = false;\n    }\n  }\n\n  async renderToContainer(container: HTMLElement, code: string, theme: 'light' | 'dark' = 'light') {\n    const svgStr = await this.renderMermaid(code, theme);\n    container.innerHTML = svgStr;\n    const svg = container.querySelector('svg');\n    if (svg) {\n      this.initViewState(container, svg);\n      this.applyTransform(container, svg);\n      svg.addEventListener('mousedown', (e) => this.onSvgMouseDown(e, container, svg));\n    }\n  }\n\n  private initViewState(container: HTMLElement, svg: SVGSVGElement) {\n    // 获取svg的viewBox或宽高\n    let vb = svg.getAttribute('viewBox');\n    let svgW = 0, svgH = 0;\n    if (vb) {\n      const arr = vb.split(/\\s+/);\n      svgW = parseFloat(arr[2]);\n      svgH = parseFloat(arr[3]);\n    } else {\n      svgW = svg.width.baseVal.value || svg.getBoundingClientRect().width;\n      svgH = svg.height.baseVal.value || svg.getBoundingClientRect().height;\n    }\n    const contW = container.clientWidth || 0;\n    const contH = this.containerHeight;\n    let scale = 1;\n    if (svgW && svgH && contW && contH) {\n      scale = Math.min(contW / svgW, contH / svgH, 1);\n    }\n    this.viewStateMap.set(container, {\n      scale,\n      offsetX: 0,\n      offsetY: 0,\n      dragging: false,\n      dragStart: { x: 0, y: 0 },\n      lastOffset: { x: 0, y: 0 },\n    });\n  }\n\n  private applyTransform(container: HTMLElement, svg: SVGSVGElement) {\n    const state = this.viewStateMap.get(container);\n    if (!state) return;\n    svg.style.position = 'absolute';\n    svg.style.left = '50%';\n    svg.style.top = '50%';\n    svg.style.transform = `translate(-50%, -50%) translate(${state.offsetX}px, ${state.offsetY}px) scale(${state.scale})`;\n    svg.style.transformOrigin = 'center center';\n    svg.style.cursor = state.dragging ? 'grabbing' : 'grab';\n  }\n\n  zoomIn(container: HTMLElement) {\n    const svg = container.querySelector('svg');\n    const state = this.viewStateMap.get(container);\n    if (svg && state) {\n      state.scale = Math.min(state.scale + 0.2, 3);\n      this.applyTransform(container, svg);\n    }\n  }\n\n  zoomOut(container: HTMLElement) {\n    const svg = container.querySelector('svg');\n    const state = this.viewStateMap.get(container);\n    if (svg && state) {\n      state.scale = Math.max(state.scale - 0.2, 0.2);\n      this.applyTransform(container, svg);\n    }\n  }\n\n  reset(container: HTMLElement) {\n    const svg = container.querySelector('svg');\n    if (svg) {\n      this.initViewState(container, svg);\n      this.applyTransform(container, svg);\n    }\n  }\n\n  async download(container: HTMLElement, filename: string = 'diagram.png'): Promise<void> {\n    const svg = container.querySelector('svg');\n    if (!svg) return;\n\n    try {\n      const clonedSvg = svg.cloneNode(true) as SVGSVGElement;\n\n      const svgData = new XMLSerializer().serializeToString(clonedSvg);\n      \n      const svgUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgData)}`;\n\n      const img = new Image();\n      await new Promise<void>((resolve, reject) => {\n        img.onload = () => resolve();\n        img.onerror = (e) => reject(new Error('Image loading failed'));\n        img.src = svgUrl;\n      });\n\n      const canvas = document.createElement('canvas');\n      const ctx = canvas.getContext('2d');\n      if (!ctx) throw new Error('Canvas context not available');\n\n      canvas.width = img.width * 2;\n      canvas.height = img.height * 2;\n      \n      ctx.fillStyle = 'white';\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n      \n      ctx.drawImage(img, 0, 0);\n\n      canvas.toBlob((blob) => {\n        if (!blob) {\n          console.error('Failed to create blob from canvas');\n          return;\n        }\n        \n        const url = URL.createObjectURL(blob);\n        const a = document.createElement('a');\n        a.href = url;\n        a.download = filename;\n        document.body.appendChild(a);\n        a.click();\n        \n        setTimeout(() => {\n          document.body.removeChild(a);\n          URL.revokeObjectURL(url);\n        }, 100);\n      }, 'image/png');\n    } catch (error) {\n      console.error('Failed to download diagram:', error);\n    }\n  }\n\n  private onSvgMouseDown(e: MouseEvent, container: HTMLElement, svg: SVGSVGElement) {\n    const state = this.viewStateMap.get(container);\n    if (!state) return;\n    state.dragging = true;\n    state.dragStart = { x: e.clientX, y: e.clientY };\n    state.lastOffset = { x: state.offsetX, y: state.offsetY };\n    const move = (ev: MouseEvent) => this.onSvgMouseMove(ev, container, svg);\n    const up = () => this.onSvgMouseUp(container, svg, move, up);\n    document.addEventListener('mousemove', move);\n    document.addEventListener('mouseup', up);\n    this.applyTransform(container, svg);\n  }\n  private onSvgMouseMove(e: MouseEvent, container: HTMLElement, svg: SVGSVGElement) {\n    const state = this.viewStateMap.get(container);\n    if (!state || !state.dragging) return;\n    state.offsetX = state.lastOffset.x + (e.clientX - state.dragStart.x);\n    state.offsetY = state.lastOffset.y + (e.clientY - state.dragStart.y);\n    this.applyTransform(container, svg);\n  }\n  private onSvgMouseUp(container: HTMLElement, svg: SVGSVGElement, move: any, up: any) {\n    const state = this.viewStateMap.get(container);\n    if (!state) return;\n    state.dragging = false;\n    document.removeEventListener('mousemove', move);\n    document.removeEventListener('mouseup', up);\n    this.applyTransform(container, svg);\n  }\n\n  async renderMermaid(code: string, theme: 'light' | 'dark' = 'light'): Promise<string> {\n    try {\n      const mermaid = await this.loadMermaid();\n      if (this.config.theme !== theme) {\n        this.config.theme = theme;\n          mermaid.initialize({\n          startOnLoad: false,\n          suppressErrorRendering: true,\n          theme: theme === 'dark' ? 'dark' : 'default',\n          ...this.config\n        });\n      }\n      const id = `mc_mermaid_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n      const { svg } = await mermaid.render(id, code);\n      this.lastValidResult = svg;\n      return svg;\n    } catch (error) {\n      return this.lastValidResult;\n    }\n  }\n\n    // 设置配置\n  setConfig(config: MermaidConfig = {}): void {\n    this.config = {\n      theme: 'default',\n      ...config\n    };\n  }\n}\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\nimport type { Token } from 'markdown-it';\nimport type { ASTNode, MermaidConfig } from './common/mdCard.types';\nimport { defaultTypingConfig } from './common/mdCard.types';\nimport { MermaidService } from './common/MermaidService';\nimport hljs from 'highlight.js';\nimport { MDCardService } from './common/MDCardService';\n\nexport interface CodeBlockAdapter extends DefaultAdapter {\n  getContainer(): HTMLElement | null;\n  highlightCodeChange(code: string, language: string): void;\n}\n\nexport class CodeBlockFoundation extends BaseFoundation<CodeBlockAdapter> {\n  mermaidService?: MermaidService;\n  mdCardService: MDCardService;\n  constructor(adapter: CodeBlockAdapter) {\n    super({ ...adapter });\n    this.mdCardService = new MDCardService();\n  }\n\n  toggleExpand = () => {\n    this.setState({ expanded: !this.getStates().expanded });\n  };\n\n  zoomOut = () => {\n    const container = this._adapter.getContainer();\n    if (container && this.mermaidService) {\n      this.mermaidService.zoomOut(container);\n    }\n  };\n\n  zoomIn = () => {\n    const container = this._adapter.getContainer();\n    if (container && this.mermaidService) {\n      this.mermaidService.zoomIn(container);\n    }\n  };\n\n  checkIsMermaid = () => {\n    const { enableMermaid, language } = this.getProps();\n    return enableMermaid && language?.toLowerCase() === 'mermaid';\n  };\n\n  download = () => {\n    const container = this._adapter.getContainer();\n    if (container && this.mermaidService) {\n      this.mermaidService.download(container);\n    }\n  };\n\n  handleCopySuccess = () => {\n    this.setState({ copied: true });\n    setTimeout(() => {\n      this.setState({ copied: false });\n    }, 1500);\n  };\n\n  copyCodeInternal() {\n    const { code } = this.getProps();\n    if (navigator.clipboard) {\n      navigator.clipboard.writeText(code).then(() => {\n        this.handleCopySuccess();\n      });\n    } else {\n      const textarea = document.createElement('textarea');\n      textarea.style.position = 'fixed';\n      textarea.style.top = '-9999px';\n      textarea.style.left = '-9999px';\n      textarea.style.zIndex = '-1';\n      textarea.value = code;\n      document.body.appendChild(textarea);\n      textarea.select();\n      document.execCommand('copy');\n      document.body.removeChild(textarea);\n      this.handleCopySuccess();\n    }\n  }\n\n  updateHighlightedCode = () => {\n    const { code, language } = this.getProps();\n    let highlightedCode = '';\n    try {\n      const typeIndex = code.indexOf(`<span class=\"mc-typewriter`);\n\n      if (language && hljs.getLanguage(language)) {\n        if (typeIndex !== -1) {\n          highlightedCode =\n            hljs.highlight(code.slice(0, typeIndex), {\n              language,\n            }).value + code.slice(typeIndex);\n        } else {\n          highlightedCode = hljs.highlight(code, {\n            language,\n          }).value;\n        }\n      } else {\n        if (typeof hljs.highlightAuto !== 'undefined') {\n          if (typeIndex !== -1) {\n            highlightedCode =\n              hljs.highlightAuto(code.slice(0, typeIndex)).value +\n              code.slice(typeIndex);\n          } else {\n            highlightedCode = hljs.highlightAuto(code).value;\n          }\n        } else {\n          highlightedCode = this.mdCardService.filterHtml(code);\n        }\n      }\n    } catch (_) {\n      highlightedCode = code;\n    }\n    this._adapter.highlightCodeChange(highlightedCode, language);\n  };\n\n  renderMermaid = async () => {\n    const {\n      code,\n      theme,\n      mermaidConfig,\n    } = this.getProps();\n    const { mermaidContentRef} = this.getStates();\n    const isMermaid = this.checkIsMermaid();\n    if (!isMermaid || !code || !mermaidContentRef) {\n      return;\n    }\n\n    if (!this.mermaidService) {\n      try {\n        this.mermaidService = new MermaidService();\n        const config: MermaidConfig = {\n          theme: theme === 'dark' ? 'dark' : 'default',\n          ...mermaidConfig,\n        };\n        this.mermaidService.setConfig(config);\n      } catch (error) {\n        console.error('Failed to load MermaidService:', error);\n        return;\n      }\n    }\n    this.nextTick(async () => {\n      const container = mermaidContentRef.nativeElement;\n      if (container) {\n        // 移除打字效果相关的span标签\n        const cleanCode = code.replace(\n          /<span[^>]*\\bclass\\s*=\\s*['\"]mc-typewriter[^>]*>([\\s\\S]*?)<\\/span>/g,\n          `$1`\n        );\n        await this.mermaidService?.renderToContainer(\n          container,\n          cleanCode,\n          theme\n        );\n      }\n    });\n  };\n}\n","import {\n  Component,\n  Input,\n  OnInit,\n  ViewChild,\n  ElementRef,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectorRef,\n  ViewChildren,\n  QueryList,\n} from '@angular/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport hljs from 'highlight.js';\nimport { TemplateRef } from '@angular/core';\nimport type { MermaidConfig } from '../components-common/MarkdownCard/common/mdCard.types';\nimport BaseComponent from '../Base/base.component';\nimport { DiffDOM } from 'diff-dom';\nimport {\n  CodeBlockAdapter,\n  CodeBlockFoundation,\n} from '../components-common/MarkdownCard/codeblock-foundation';\n@Component({\n  selector: 'mc-code-block',\n  templateUrl: './code-block.component.html',\n  standalone: false,\n  styleUrls: ['./code-block.component.scss'],\n})\nexport class CodeBlockComponent\n  extends BaseComponent<CodeBlockFoundation>\n  implements OnInit, OnChanges\n{\n  @Input() code: string = '';\n  @Input() language: string = '';\n  @Input() blockIndex: number = 0;\n  @Input() theme: 'light' | 'dark' = 'light';\n  @Input() enableMermaid: boolean = false;\n  @Input() mermaidConfig: MermaidConfig = {};\n  @Input() contentTemplate: TemplateRef<any> | null = null;\n  @Input() headerTemplate: TemplateRef<any> | null = null;\n  @Input() actionsTemplate: TemplateRef<any> | null = null;\n\n  @ViewChild('rootRef') rootRef!: ElementRef;\n  @ViewChild('mermaidContent') mermaidContentRef: ElementRef;\n  @ViewChild('codeElement', { static: false }) codeElementRef: ElementRef;\n  @ViewChildren('codeElementTemplate')\n  codeElementTemplates: QueryList<ElementRef>;\n\n  expanded: boolean = true;\n  copied: boolean = false;\n  mermaidContent: string = '';\n  private diffDom: DiffDOM;\n  private _showMermaidDiagram: boolean = true;\n  get showMermaidDiagram(): boolean {\n    return this._showMermaidDiagram;\n  }\n  set showMermaidDiagram(value: boolean) {\n    if (this._showMermaidDiagram !== value) {\n      this._showMermaidDiagram = value;\n      // 当切换为显示图表且当前是mermaid类型时，渲染图表\n      if (value && this.isMermaid) {\n        // 在视图更新后渲染mermaid\n        setTimeout(() => {\n          this.renderMermaid();\n        });\n      }\n    }\n  }\n  highlightedCode: string = '';\n  isMermaid: boolean = false;\n\n  private copySubject = new Subject<void>();\n  constructor(private cdr: ChangeDetectorRef) {\n    super();\n    this.copySubject\n      .pipe(debounceTime(300))\n      .subscribe(() => this.copyCodeInternal());\n    this.foundation = new CodeBlockFoundation(this.adapter);\n    this.diffDom = new DiffDOM();\n  }\n\n  override get adapter(): CodeBlockAdapter {\n    return {\n      ...super.adapter,\n      getContainer: () => {\n        return this.mermaidContentRef.nativeElement;\n      },\n      highlightCodeChange: (highlightedCode: string, language: string) => {\n        this.highlightedCode = highlightedCode;\n        if (this.codeElementRef?.nativeElement) {\n          const newElement = document.createElement('code');\n          newElement.className = `hljs language-${language}`;\n          newElement.innerHTML = highlightedCode;\n          const diff = this.diffDom.diff(\n            this.codeElementRef.nativeElement,\n            newElement\n          );\n          this.diffDom.apply(this.codeElementRef.nativeElement, diff);\n        }\n      },\n    };\n  }\n\n  switchShowMermaid(show: boolean): void {\n    this.showMermaidDiagram = show;\n    if (!this.showMermaidDiagram) {\n      this.codeElementTemplates.changes.subscribe(() => {\n        if (this.codeElementRef?.nativeElement && !this.showMermaidDiagram) {\n          this.codeElementRef.nativeElement.innerHTML = this.highlightedCode;\n        }\n      });\n    }\n\n    this.cdr.detectChanges();\n  }\n\n  ngOnInit(): void {\n    this.checkIsMermaid();\n    this.updateHighlightedCode();\n    if (this.isMermaid) {\n      this.renderMermaid();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.isMermaid) {\n      this.renderMermaid();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['code'] || changes['language']) {\n      this.checkIsMermaid();\n      this.updateHighlightedCode();\n    }\n    if (changes['enableMermaid'] || changes['theme'] || changes['code']) {\n      this.checkIsMermaid();\n      if (this.isMermaid) {\n        this.renderMermaid();\n      }\n    }\n    if (\n      changes['showMermaidDiagram'] &&\n      this.isMermaid &&\n      this.showMermaidDiagram\n    ) {\n      this.renderMermaid();\n    }\n  }\n\n  private checkIsMermaid(): void {\n    this.isMermaid = this.foundation.checkIsMermaid();\n  }\n\n  private updateHighlightedCode(): void {\n    this.foundation.updateHighlightedCode();\n  }\n\n  zoomIn(): void {\n    this.foundation.zoomIn();\n    this.cdr.detectChanges();\n  }\n\n  zoomOut(): void {\n    this.foundation.zoomOut();\n    this.cdr.detectChanges();\n  }\n\n  download(): void {\n    this.foundation.download();\n  }\n\n  async renderMermaid(): Promise<void> {\n    await this.foundation.renderMermaid();\n  }\n\n  toggleExpand(): void {\n    this.foundation.toggleExpand();\n    this.cdr.detectChanges();\n  }\n\n  copyCode(): void {\n    this.copySubject.next();\n  }\n\n  copyCodeInternal(): void {\n    this.foundation.copyCodeInternal();\n    this.cdr.detectChanges();\n  }\n}\n","<div\n  class=\"mc-code-block\"\n  [ngClass]=\"theme === 'dark' ? 'mc-code-block-dark' : 'mc-code-block-light'\"\n  #rootRef\n>\n  <div class=\"mc-code-block-header\" *ngIf=\"!headerTemplate\">\n    <span class=\"mc-code-lang\">{{ language }}</span>\n    <ng-container *ngIf=\"!actionsTemplate\">\n      <div class=\"mc-code-block-actions\">\n        <div *ngIf=\"isMermaid\" style=\"margin-right: 8px\">\n          <ul\n            class=\"mc-diagram-switch\"\n            [ngClass]=\"{ 'mc-show-code': !showMermaidDiagram }\"\n          >\n            <li\n              (click)=\"switchShowMermaid(true)\"\n              [ngClass]=\"{ 'mc-diagram-switch-active': showMermaidDiagram }\"\n            >\n              图表\n            </li>\n            <li\n              (click)=\"switchShowMermaid(false)\"\n              [ngClass]=\"{ 'mc-diagram-switch-active': !showMermaidDiagram }\"\n            >\n              代码\n            </li>\n          </ul>\n        </div>\n        <div\n          *ngIf=\"isMermaid && showMermaidDiagram\"\n          class=\"mc-action-btn mc-toggle-btn\"\n          [title]=\"'Md.zoomIn' | translate\"\n          (click)=\"zoomIn()\"\n        >\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g\n              id=\"enlarge\"\n              stroke=\"none\"\n              stroke-width=\"1\"\n              fill=\"none\"\n              fill-rule=\"evenodd\"\n            >\n              <path\n                d=\"M7.16666667,1 C10.572409,1 13.3333333,3.76092429 13.3333333,7.16666667 C13.3333333,8.68984984 12.781084,10.0840543 11.8658888,11.1599767 L14.4225201,13.7154466 C14.6177822,13.9107088 14.6177822,14.2272912 14.4225201,14.4225534 C14.2489537,14.5961197 13.9795293,14.6154049 13.7846612,14.4804088 L13.7154133,14.4225534 L11.158968,11.8667467 C10.083183,12.7814291 8.68937384,13.3333333 7.16666667,13.3333333 C3.76092429,13.3333333 1,10.572409 1,7.16666667 C1,3.76092429 3.76092429,1 7.16666667,1 Z M7.16666667,2 C4.31320904,2 2,4.31320904 2,7.16666667 C2,10.0201243 4.31320904,12.3333333 7.16666667,12.3333333 C10.0201243,12.3333333 12.3333333,10.0201243 12.3333333,7.16666667 C12.3333333,4.31320904 10.0201243,2 7.16666667,2 Z M7.16666667,4.66666667 C7.41212656,4.66666667 7.61627504,4.84354183 7.658611,5.07679103 L7.66666667,5.16666667 L7.666,6.668 L9.16601582,6.66666666 C9.44215796,6.66630764 9.66630679,6.88987368 9.66666668,7.16601582 C9.66698576,7.4114755 9.49037648,7.61585405 9.25718258,7.65849359 L9.16731751,7.66666666 L7.666,7.668 L7.66666667,9.16666667 C7.66666667,9.44280904 7.44280904,9.66666667 7.16666667,9.66666667 C6.92120678,9.66666667 6.7170583,9.48979151 6.67472234,9.2565423 L6.66666667,9.16666667 L6.666,7.669 L5.17251751,7.67186668 C4.89637537,7.6722257 4.67222654,7.44865965 4.67186666,7.17251751 C4.67154758,6.92705783 4.84815685,6.72267929 5.08135075,6.68003974 L5.17121582,6.67186709 L6.666,6.669 L6.66666667,5.16666667 C6.66666667,4.89052429 6.89052429,4.66666667 7.16666667,4.66666667 Z\"\n                id=\"形状结合\"\n                fill=\"#71757F\"\n                fill-rule=\"nonzero\"\n              ></path>\n            </g>\n          </svg>\n        </div>\n        <div\n          *ngIf=\"isMermaid && showMermaidDiagram\"\n          class=\"mc-action-btn mc-toggle-btn\"\n          title=\"缩小\"\n          (click)=\"zoomOut()\"\n        >\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g\n              id=\"zoom-out\"\n              stroke=\"none\"\n              stroke-width=\"1\"\n              fill=\"none\"\n              fill-rule=\"evenodd\"\n            >\n              <path\n                d=\"M7.16666667,1 C10.572409,1 13.3333333,3.76092429 13.3333333,7.16666667 C13.3333333,8.68984984 12.781084,10.0840543 11.8658888,11.1599767 L14.4225201,13.7154466 C14.6177822,13.9107088 14.6177822,14.2272912 14.4225201,14.4225534 C14.2489537,14.5961197 13.9795293,14.6154049 13.7846612,14.4804088 L13.7154133,14.4225534 L11.158968,11.8667467 C10.083183,12.7814291 8.68937384,13.3333333 7.16666667,13.3333333 C3.76092429,13.3333333 1,10.572409 1,7.16666667 C1,3.76092429 3.76092429,1 7.16666667,1 Z M7.16666667,2 C4.31320904,2 2,4.31320904 2,7.16666667 C2,10.0201243 4.31320904,12.3333333 7.16666667,12.3333333 C10.0201243,12.3333333 12.3333333,10.0201243 12.3333333,7.16666667 C12.3333333,4.31320904 10.0201243,2 7.16666667,2 Z M9.16601582,6.66666666 C9.44215796,6.66630764 9.66630679,6.88987368 9.66666668,7.16601582 C9.66698576,7.4114755 9.49037648,7.61585405 9.25718258,7.65849359 L9.16731751,7.66666666 L5.17251751,7.67186668 C4.89637537,7.6722257 4.67222654,7.44865965 4.67186666,7.17251751 C4.67154758,6.92705783 4.84815685,6.72267929 5.08135075,6.68003974 L5.17121582,6.67186709 L9.16601582,6.66666666 Z\"\n                id=\"形状结合\"\n                fill=\"#71757F\"\n                fill-rule=\"nonzero\"\n              ></path>\n            </g>\n          </svg>\n        </div>\n        <div\n          *ngIf=\"isMermaid && showMermaidDiagram\"\n          class=\"mc-action-btn mc-toggle-btn\"\n          title=\"下载\"\n          (click)=\"download()\"\n        >\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g\n              id=\"页面-1\"\n              stroke=\"none\"\n              stroke-width=\"1\"\n              fill=\"none\"\n              fill-rule=\"evenodd\"\n            >\n              <g id=\"i下载\">\n                <path\n                  d=\"M14.5,14 C14.7761424,14 15,14.2238576 15,14.5 C15,14.7761424 14.7761424,15 14.5,15 L1.5,15 C1.22385763,15 1,14.7761424 1,14.5 C1,14.2238576 1.22385763,14 1.5,14 L14.5,14 Z M8,1 C8.24545989,1 8.44960837,1.17687516 8.49194433,1.41012437 L8.5,1.5 L8.5,10.793 L11.6464466,7.64644661 C11.820013,7.47288026 12.0894374,7.45359511 12.2843055,7.58859116 L12.3535534,7.64644661 C12.5271197,7.82001296 12.5464049,8.08943736 12.4114088,8.2843055 L12.3535534,8.35355339 L8.35355339,12.3535534 L8.34128643,12.3654113 C8.32881868,12.3770608 8.31575424,12.3880797 8.30214392,12.3984173 L8.35355339,12.3535534 C8.32671912,12.3803877 8.29759357,12.4035342 8.26680652,12.422993 C8.25568247,12.4299807 8.24404667,12.4367067 8.23212724,12.4429657 C8.21827569,12.4502504 8.20453886,12.4566485 8.1905951,12.4623894 C8.17802507,12.4675915 8.16473685,12.4724419 8.15119917,12.4767316 C8.13583471,12.481552 8.12047425,12.4856039 8.10498705,12.4889143 C8.09430622,12.4912471 8.08325248,12.4932298 8.07207924,12.494843 C8.05487076,12.4972949 8.03773477,12.498877 8.02056948,12.4995793 C8.01375728,12.4998604 8.00689494,12.5 8,12.5 L7.98043349,12.4996194 C7.96293275,12.4989382 7.94546098,12.4973429 7.92809589,12.4948333 L8,12.5 C7.96390296,12.5 7.92869933,12.4961748 7.89477235,12.4889078 C7.87952575,12.4856039 7.86416529,12.481552 7.84898836,12.4767587 C7.83526315,12.4724419 7.82197493,12.4675915 7.80896344,12.4622078 C7.79546114,12.4566485 7.78172431,12.4502504 7.76824181,12.443195 C7.75595333,12.4367067 7.74431753,12.4299807 7.73298968,12.422812 C7.72729809,12.4192668 7.72146362,12.4154054 7.7156945,12.4114088 L7.69785608,12.3984173 C7.68424576,12.3880797 7.67118132,12.3770608 7.65871357,12.3654113 L7.64644661,12.3535534 L3.64644661,8.35355339 C3.45118446,8.15829124 3.45118446,7.84170876 3.64644661,7.64644661 C3.82001296,7.47288026 4.08943736,7.45359511 4.2843055,7.58859116 L4.35355339,7.64644661 L7.5,10.793 L7.5,1.5 C7.5,1.22385763 7.72385763,1 8,1 Z\"\n                  id=\"形状结合\"\n                  fill=\"#71757F\"\n                ></path>\n              </g>\n            </g>\n          </svg>\n        </div>\n        <div\n          class=\"mc-action-btn mc-toggle-btn\"\n          title=\"展开/折叠\"\n          (click)=\"toggleExpand()\"\n        >\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g\n              id=\"全部收起\"\n              stroke=\"none\"\n              stroke-width=\"1\"\n              fill=\"none\"\n              fill-rule=\"evenodd\"\n            >\n              <path\n                d=\"M4.715694,14.4114091 C4.910563,14.5464051 5.179987,14.5271201 5.353553,14.3535531 L5.353553,14.3535531 L7.99999988,11.7070001 L10.646447,14.3535531 L10.715694,14.4114091 C10.910563,14.5464051 11.179987,14.5271201 11.353553,14.3535531 C11.548816,14.1582911 11.548816,13.8417091 11.353553,13.6464471 L11.353553,13.6464471 L8.353553,10.6464471 L8.284306,10.5885911 C8.089437,10.4535951 7.820013,10.4728801 7.646447,10.6464471 L7.646447,10.6464471 L4.646447,13.6464471 L4.588591,13.7156941 C4.453595,13.9105631 4.47288,14.1799871 4.646447,14.3535531 L4.646447,14.3535531 L4.715694,14.4114091 Z M14.5,7.50000012 C14.776142,7.50000012 15,7.72385812 15,8.00000012 C15,8.27614212 14.776142,8.50000012 14.5,8.50000012 L1.5,8.50000012 C1.223858,8.50000012 1,8.27614212 1,8.00000012 C1,7.72385812 1.223858,7.50000012 1.5,7.50000012 L14.5,7.50000012 Z M8.284306,5.41140912 L8.353553,5.35355312 L11.353553,2.35355312 C11.548816,2.15829112 11.548816,1.84170912 11.353553,1.64644712 C11.179987,1.47288012 10.910563,1.45359512 10.715694,1.58859112 L10.646447,1.64644712 L7.99999988,4.29300012 L5.353553,1.64644712 C5.179987,1.47288012 4.910563,1.45359512 4.715694,1.58859112 L4.646447,1.64644712 C4.47288,1.82001312 4.453595,2.08943712 4.588591,2.28430612 L4.646447,2.35355312 L7.646447,5.35355312 C7.820013,5.52712012 8.089437,5.54640512 8.284306,5.41140912 Z\"\n                id=\"形状结合\"\n                fill=\"#71757F\"\n                fill-rule=\"nonzero\"\n              ></path>\n            </g>\n          </svg>\n        </div>\n        <div\n          class=\"mc-action-btn mc-copy-btn\"\n          title=\"复制\"\n          (click)=\"copyCode()\"\n        >\n          @if(copied) {\n          <span>\n            <svg\n              width=\"16px\"\n              height=\"16px\"\n              viewBox=\"0 0 16 16\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <defs>\n                <polygon\n                  id=\"path-1\"\n                  points=\"6.53553391 9.77817459 12.1923882 4.12132034 13.6066017 5.53553391 6.53553391 12.6066017 3 9.07106781 4.41421356 7.65685425 6.53553391 9.77817459\"\n                ></polygon>\n              </defs>\n              <g\n                id=\"status/whiteBG/correct\"\n                stroke=\"none\"\n                stroke-width=\"1\"\n                fill=\"none\"\n                fill-rule=\"evenodd\"\n              >\n                <mask id=\"mask-2\" fill=\"white\">\n                  <use xlink:href=\"#path-1\"></use>\n                </mask>\n                <use id=\"Mask\" fill=\"#3DCCA6\" xlink:href=\"#path-1\"></use>\n              </g>\n            </svg>\n          </span>\n          } @else {\n          <span>\n            <svg\n              width=\"16px\"\n              height=\"16px\"\n              viewBox=\"0 0 16 16\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g\n                id=\"页面-1\"\n                stroke=\"none\"\n                stroke-width=\"1\"\n                fill=\"none\"\n                fill-rule=\"evenodd\"\n              >\n                <g\n                  id=\"API-starter-图标入库\"\n                  transform=\"translate(-592.000000, -204.000000)\"\n                >\n                  <g\n                    id=\"方格备份-16\"\n                    transform=\"translate(560.000000, 180.000000)\"\n                  >\n                    <text\n                      id=\"图标\"\n                      font-family=\"PingFangSC-Regular, PingFang SC\"\n                      font-size=\"12\"\n                      font-weight=\"normal\"\n                      line-spacing=\"16\"\n                      fill=\"#71757F\"\n                    >\n                      <tspan x=\"27.136\" y=\"61\">复制</tspan>\n                    </text>\n                  </g>\n                  <path\n                    d=\"M604.5,206 C605.279696,206 605.920449,206.594888 605.993133,207.35554 L606,207.5 L606,214.5 C606,215.279696 605.405112,215.920449 604.64446,215.993133 L604.5,216 L604,216 L604,216.5 C604,217.279696 603.405112,217.920449 602.64446,217.993133 L602.5,218 L595.5,218 C594.671573,218 594,217.328427 594,216.5 L594,216.5 L594,209.5 C594,208.671573 594.671573,208 595.5,208 L595.5,208 L596,208 L596,207.5 C596,206.720304 596.594888,206.079551 597.35554,206.006867 L597.5,206 L604.5,206 Z M602.5,209 L595.5,209 C595.223858,209 595,209.223858 595,209.5 L595,209.5 L595,216.5 C595,216.776142 595.223858,217 595.5,217 L595.5,217 L602.5,217 C602.776142,217 603,216.776142 603,216.5 L603,216.5 L603,209.5 C603,209.223858 602.776142,209 602.5,209 L602.5,209 Z M604.5,207 L597.5,207 C597.25454,207 597.050392,207.176875 597.008056,207.410124 L597,207.5 L597,208 L602.5,208 C603.279696,208 603.920449,208.594888 603.993133,209.35554 L604,209.5 L604,215 L604.5,215 C604.74546,215 604.949608,214.823125 604.991944,214.589876 L605,214.5 L605,207.5 C605,207.25454 604.823125,207.050392 604.589876,207.008056 L604.5,207 Z\"\n                    id=\"形状结合\"\n                    fill=\"#71757F\"\n                    fill-rule=\"nonzero\"\n                  ></path>\n                </g>\n              </g>\n            </svg>\n          </span>\n          }\n        </div>\n      </div>\n    </ng-container>\n    <ng-container *ngIf=\"actionsTemplate\">\n      <ng-template [ngTemplateOutlet]=\"actionsTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\n    </ng-container>\n  </div>\n  <ng-container *ngIf=\"headerTemplate\">\n    <ng-template [ngTemplateOutlet]=\"headerTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\n  </ng-container>\n\n  <div [ngClass]=\"{ 'mc-block-hidden': !expanded }\" >\n    @if (showMermaidDiagram && isMermaid && !contentTemplate) {\n    <div class=\"mc-mermaid-content\" #mermaidContent></div>\n    } @else if(!contentTemplate) {\n    <pre #codeElementTemplate><code #codeElement [ngClass]=\"'hljs language-' + language\" ></code></pre>\n    } @else {\n    <ng-container *ngIf=\"contentTemplate\">\n      <ng-template [ngTemplateOutlet]=\"contentTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\n    </ng-container>\n    }\n  </div>\n</div>\n","import type { Options, PluginSimple, PluginWithOptions, PluginWithParams } from 'markdown-it';\nimport type { Token } from 'markdown-it';\nexport interface MermaidConfig {\n  theme?: string;\n}\n\nexport interface CustomXssRule {\n  key: string;\n  value: string[] | null;\n}\n\nexport interface CodBlockData {\n  code: string;\n  language: string;\n}\n\nexport type CodeBlockSlot = {\n  actions?: () => void;\n  header?: () => void;\n  content?: () => void;\n};\n\nexport type Theme = 'light' | 'dark';\n\nexport type TypingStyle = 'normal' | 'cursor' | 'color' | 'gradient';\n\nexport type IntervalType = number | [number, number];\n\nexport const defaultTypingConfig = {\n  step: 2,\n  interval: 50,\n  style: 'normal' as TypingStyle,\n};\n\nexport interface MdPlugin {\n  plugin: PluginSimple | PluginWithOptions | PluginWithParams;\n  opts?: unknown;\n}\n\nexport interface MarkdownCardProps {\n  content?: string;\n  typing?: boolean;\n  enableThink?: boolean;\n  typingOptions?: {\n    step?: number;\n    interval?: number | [number, number];\n    style?: TypingStyle;\n  };\n  thinkOptions?: {\n    customClass?: string;\n  };\n  mdOptions?: Options;\n  mdPlugins?: Array<MdPlugin>;\n  customXssRules?: Array<CustomXssRule>;\n  theme?: Theme;\n  enableMermaid?: boolean;\n  mermaidConfig?: MermaidConfig;\n}\n\n// 定义 AST 节点接口\nexport interface ASTNode {\n  nodeType: string;\n  openNode: Token | null;\n  closeNode: Token | null;\n  children: (ASTNode | Token)[];\n  vNodeKey: string;\n}","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\nimport type { Token } from 'markdown-it';\nimport type { ASTNode } from './common/mdCard.types';\nimport { defaultTypingConfig } from './common/mdCard.types';\n\nexport interface MarkdownCardAdapter extends DefaultAdapter {\n  locale(key: string, params?: Record<string, string>): string;\n  typingStart: () => void;\n  typingEnd: () => void;\n  typingEvent: () => void;\n  parseContent: (content: string) => void;\n}\n\nexport class MarkdownCardFoundation extends BaseFoundation<MarkdownCardAdapter> {\n  constructor(adapter: MarkdownCardAdapter) {\n    super({ ...adapter });\n  }\n\n  isToken = (node: ASTNode | Token): node is Token => {\n    return 'type' in node && 'content' in node;\n  };\n\n  typewriterEnd = () => {\n    this.setState({ isTyping: false });\n    this._adapter.typingEnd?.();\n  };\n\n  getThinkContent = (content: string, thinkOptions: any) => {\n    const thinkClass = thinkOptions?.customClass || 'mc-think-block';\n    return (\n      content\n        ?.replace('<think>', `<div class=\"${thinkClass}\">`)\n        ?.replace('</think>', '</div>') || ''\n    );\n  };\n\n  parseTypingContent = (content: string) => {\n    const { typingOptions } = this.getProps();\n    const { typingIndex } = this.getStates();\n    content = content.slice(0, typingIndex) || '';\n    const options = { ...defaultTypingConfig, ...typingOptions };\n\n    if (options.style === 'cursor') {\n      content += `<span class=\"mc-typewriter mc-typewriter-cursor\">|</span>`;\n    } else if (options.style === 'color' || options.style === 'gradient') {\n      content =\n        content.slice(0, -5) +\n        `<span class=\"mc-typewriter mc-typewriter-${\n          options.style\n        }\">${content.slice(-5)}</span>`;\n    }\n    return content || '';\n  };\n\n  parseContent = () => {\n    const { content, thinkOptions, enableThink } = this.getProps();\n    const { typing, isTyping } = this.getStates();\n    let parseContent = content || '';\n    if (typing && isTyping) {\n      parseContent = this.parseTypingContent(content);\n    }\n\n    if (enableThink) {\n      parseContent = this.getThinkContent(content, thinkOptions);\n    }\n\n    parseContent = this._adapter.parseContent(parseContent);\n  };\n\n  typewriterStart = () => {\n    const { typingOptions } = this.getProps();\n    const { timer } = this.getStates();\n    if (timer) {\n      clearTimeout(timer);\n    }\n\n    this.setState({ isTyping: true });\n    this._adapter.typingStart?.();\n    const options = { ...defaultTypingConfig, ...typingOptions };\n\n    const typingStep = () => {\n      const { typingIndex, content } = this.getStates();\n\n      let step = options.step || 2;\n      if (Array.isArray(options.step)) {\n        step =\n          options.step[0] +\n          Math.floor(Math.random() * (options.step[1] - options.step[0]));\n      }\n      let index = typingIndex + step;\n      this.setState({ typingIndex: index });\n      this.parseContent();\n      this._adapter.typingEvent();\n\n      if (index >= content!.length) {\n        this.typewriterEnd();\n        this.parseContent();\n        return;\n      }\n\n      let typingTimeout = setTimeout(\n        typingStep,\n        typeof options.interval === 'number' ? options.interval : 50\n      );\n      this.setState({\n        timer: typingTimeout,\n      });\n    };\n\n    let typingStepTimeout = setTimeout(typingStep);\n    this.setState({\n      timer: typingStepTimeout,\n    });\n  };\n}\n","import type { Token } from \"markdown-it\";\nimport type { ASTNode } from './mdCard.types';\n// 判断是否自闭合标签\nexport const isSelfClosingTag = (token: Token): boolean => {\n    // 判断token.content里面是否包含完整的HTML结构（所有开始标签都有对应的结束标签）\n    const content = token.content || '';\n\n    // 检查是否是自闭合标签（如 <img />, <br /> 等）\n    if (content.match(/<(\\w+)[^>]*\\/>/)) {\n        return true;\n    }\n\n    // 检查是否包含完整的HTML结构\n    const tagStack: string[] = [];\n    const openTagRegex = /<(\\w+)[^>]*>/g;\n    const closeTagRegex = /<\\/(\\w+)>/g;\n\n    let openMatch;\n    let closeMatch;\n\n    // 重置正则表达式的lastIndex\n    openTagRegex.lastIndex = 0;\n    closeTagRegex.lastIndex = 0;\n\n    // 按顺序处理所有标签\n    const allMatches: Array<{ type: 'open' | 'close', tagName: string, index: number }> = [];\n\n    // 收集所有开始标签\n    while ((openMatch = openTagRegex.exec(content)) !== null) {\n        allMatches.push({\n            type: 'open',\n            tagName: openMatch[1],\n            index: openMatch.index\n        });\n    }\n\n    // 收集所有结束标签\n    while ((closeMatch = closeTagRegex.exec(content)) !== null) {\n        allMatches.push({\n            type: 'close',\n            tagName: closeMatch[1],\n            index: closeMatch.index\n        });\n    }\n\n    // 按位置排序\n    allMatches.sort((a, b) => a.index - b.index);\n\n    // 检查标签是否完全匹配\n    for (const match of allMatches) {\n        if (match.type === 'open') {\n            tagStack.push(match.tagName);\n        } else {\n            if (tagStack.length === 0) {\n                return false; // 没有对应的开始标签\n            }\n            const lastOpenTag = tagStack[tagStack.length - 1];\n            if (lastOpenTag !== match.tagName) {\n                return false; // 标签不匹配\n            }\n            tagStack.pop();\n        }\n    }\n\n    // 只有当所有标签都正确匹配时，才认为是自闭合的\n    return tagStack.length === 0;\n}\n\n// 判断是否是结束标签\nexport const isClosingTag = (openToken: Token, closeToken: Token): boolean => {\n    const openContent = openToken?.content || '';\n    const closeContent = closeToken?.content || '';\n\n    const openTagMatch = openContent.match(/<(\\w+)/);\n    const closeTagMatch = closeContent.match(/<\\/(\\w+)/);\n\n    if (openTagMatch && closeTagMatch) {\n        return openTagMatch[1] === closeTagMatch[1];\n    }\n\n    return false;\n}\n\n// 创建ast树节点\nexport const genTreeNode = (node: Token | null): ASTNode => {\n    return {\n        nodeType: node ? node.type.replace('_open', '') : 'root',\n        openNode: node,\n        closeNode: null,\n        children: [],\n        vNodeKey: (node as any)?.vNodeKey || ''\n    };\n};\n\n// 匹配成对html token\nexport const matchHtmlToken = (token: Token, stack: Token[]) => {\n    // 简单排除单独的闭合标签\n    const isCloseTag = token.content.startsWith('</');\n    if (!stack.length) {\n        token.nesting = isCloseTag ? 0 : 1;\n        stack.push(token);\n        return;\n    }\n    // 判断当前token是否是上一个html token的闭合标签\n    const prevToken = stack[stack.length - 1];\n    const closing = isClosingTag(prevToken, token);\n    if (closing) {\n        token.nesting = -1;\n        stack.pop();\n    } else {\n        if (isCloseTag) {\n            token.nesting = 0;\n        } else {\n            token.nesting = 1;\n            stack.push(token);\n        }\n    }\n}\n\nexport const isValidTagName = (tagName: string | undefined): boolean => {\n    if (!tagName) return false\n    try {\n        document.createElement(tagName)\n        return true\n    } catch (error) {\n        return false\n    }\n}\n\nexport const tokensToAst = (tokens: Token[]) => {\n    // 递归处理 inline 类型的 token\n    const processInlineToken = (token: Token): ASTNode => {\n      const node = genTreeNode(token);\n\n      // 如果 token 有 children，递归处理它们\n      if (token.children && token.children.length > 0) {\n        node.children = tokensToAst(token.children);\n      }\n\n      return node;\n    };\n\n    // 创建根节点\n    const rootNode = genTreeNode(null);\n    let curr: ASTNode = rootNode;\n    const stack: ASTNode[] = [];\n    const htmlInlineTokenStack: Token[] = [];\n    const htmlBlockTokenStack: Token[] = [];\n    // 处理html token nesting值\n    tokens.forEach((tok: Token, idx: number) => {\n      (tok as any).vNodeKey = `mc-markdown-content-key-${idx}`;\n      (tok as any).tokenIndex = idx;\n\n      if (tok.type.includes('html_')) {\n        if (isSelfClosingTag(tok)) {\n          tok.nesting = 0;\n          return;\n        }\n\n        const stack =\n          tok.type === 'html_block'\n            ? htmlBlockTokenStack\n            : htmlInlineTokenStack;\n\n        matchHtmlToken(tok, stack);\n      }\n    });\n\n    tokens.forEach((tok: Token, idx: number) => {\n      let tmp: ASTNode;\n      if (tok.nesting === 1) {\n        // 开始标签\n        tmp = genTreeNode(tok);\n        curr.children.push(tmp);\n        stack.push(curr);\n        curr = tmp;\n      } else if (tok.nesting === -1) {\n        // 结束标签\n        curr.closeNode = tok;\n        if (!stack.length) {\n          throw new Error('AST stack underflow.');\n        }\n        tmp = stack.pop()!;\n        curr = tmp;\n      } else if (tok.nesting === 0) {\n        // 自闭合标签或 inline 内容\n        if (tok.type === 'inline' && tok.children && tok.children.length > 0) {\n          // 对于 inline 类型，递归处理其 children\n          const inlineNode = processInlineToken(tok);\n          curr.children.push(inlineNode);\n        } else {\n          // 普通 token，直接添加\n          curr.children.push(tok);\n        }\n      } else {\n        throw new Error(`Invalid nesting level found in token index ${idx}.`);\n      }\n    });\n\n    if (stack.length !== 0) {\n      // throw new Error('Unbalanced block open/close tokens.');\n    }\n    return rootNode.children as ASTNode[];\n  };\n\n// 声明一个utils静态默认导出\nexport default {\n    isSelfClosingTag,\n    isClosingTag,\n    tokensToAst,\n    genTreeNode,\n    matchHtmlToken,\n    isValidTagName\n}","import { DiffDOM } from 'diff-dom';\nimport {\n  Component,\n  Input,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n  ChangeDetectorRef,\n  SimpleChanges,\n  ViewChild,\n  Output,\n  EventEmitter,\n  Renderer2,\n  ViewContainerRef,\n  TemplateRef,\n} from '@angular/core';\nimport markdownit from 'markdown-it';\nimport type { Token } from 'markdown-it';\nimport { MDCardService } from '../components-common/MarkdownCard/common/MDCardService';\nimport type { ASTNode } from '../components-common/MarkdownCard/common/mdCard.types';\nimport { CodeBlockComponent } from './code-block.component';\nimport {\n  MarkdownCardProps,\n  defaultTypingConfig,\n} from '../components-common/MarkdownCard/common/mdCard.types';\nimport BaseComponent from '../Base/base.component';\nimport {\n  MarkdownCardAdapter,\n  MarkdownCardFoundation,\n} from '../components-common/MarkdownCard/foundation';\nimport MdParserUtils from '../components-common/MarkdownCard/common/parser';\n\n@Component({\n  selector: 'mc-markdown-card',\n  standalone: false,\n  templateUrl: './markdown-card.component.html',\n  styleUrls: ['./markdown-card.component.scss'],\n})\nexport class MarkdownCardComponent\n  extends BaseComponent<MarkdownCardFoundation>\n  implements OnInit, OnChanges, OnDestroy\n{\n  private diffDom: DiffDOM;\n  @Input() content: string = '';\n  @Input() typing: boolean = false;\n  @Input() enableThink: boolean = false;\n  @Input() typingOptions: MarkdownCardProps['typingOptions'] | any = {};\n  @Input() thinkOptions: MarkdownCardProps['thinkOptions'] = {};\n  @Input() mdOptions: MarkdownCardProps['mdOptions'] = {};\n  @Input() mdPlugins: MarkdownCardProps['mdPlugins'] = [];\n  @Input() customXssRules: MarkdownCardProps['customXssRules'] = [];\n  @Input() theme: 'light' | 'dark' | any = 'light';\n  @Input() enableMermaid: boolean = false;\n  @Input() mermaidConfig: MarkdownCardProps['mermaidConfig'] = {};\n  @Input() actionsTemplate: TemplateRef<any> | null = null;\n  @Input() headerTemplate: TemplateRef<any> | null = null;\n  @Input() contentTemplate: TemplateRef<any> | null = null;\n\n  // 组件缓存映射表，用于存储已创建的CodeBlockComponent实例\n  private codeBlockComponentsCache: Map<\n    string,\n    { componentRef: any; container: HTMLElement }\n  > = new Map();\n\n  @Output() afterMdtInit = new EventEmitter<markdownit>();\n  @Output() typingStart = new EventEmitter<void>();\n  @Output() typingEvent = new EventEmitter<void>();\n  @Output() typingEnd = new EventEmitter<void>();\n\n  @ViewChild('markdownContainer', { read: ViewContainerRef, static: true })\n  markdownContainer!: ViewContainerRef;\n\n  private mdt: markdownit;\n  typingIndex: number = 0;\n  isTyping: boolean = false;\n  timer: number | null = null;\n  parser = MdParserUtils;\n  mdCardService: MDCardService;\n  noDiff: boolean = false;\n\n  constructor(private renderer: Renderer2, public cdr: ChangeDetectorRef) {\n    super();\n    this.mdt = markdownit({\n      breaks: true,\n      linkify: true,\n      html: true,\n      highlight: (str, lang) => {\n        // 与Vue组件保持一致的高亮处理\n        return '';\n      },\n      ...this.mdOptions,\n    });\n    this.mdCardService = new MDCardService();\n    this.foundation = new MarkdownCardFoundation(this.adapter);\n\n    // 初始化 diffDom 实例\n    this.diffDom = new DiffDOM({\n      // 配置filterOuterDiff钩子，识别code-block-wrapper元素并直接替换\n      filterOuterDiff: (t1, t2, diffs) => {\n        // 检查是否是class为code-block-wrapper的div元素\n        const isTargetElement =\n          t2.nodeName === 'DIV' &&\n          t2.attributes &&\n          t2.attributes.class &&\n          t2.attributes.class.includes('code-block-wrapper');\n\n        if (isTargetElement) {\n          t1.innerDone = true;\n          t2.innerDone = true;\n        }\n      },\n    });\n  }\n\n  ngOnInit(): void {\n    this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\n    this.mdCardService.setCustomXssRules(this.customXssRules || []);\n    this.parseContent();\n    this.afterMdtInit.emit(this.mdt);\n  }\n\n  override get adapter(): MarkdownCardAdapter {\n    return {\n      ...super.adapter,\n      locale: (key: string, params?: Record<string, string>) =>\n        this.adapter.locale(key, params),\n      typingStart: () => this.typingStart.emit(),\n      typingEnd: () => this.typingEnd.emit(),\n      typingEvent: () => this.typingEvent.emit(),\n      parseContent: (content: string) => {\n        // 解析 Markdown 内容\n        const tokens: any = this.mdt.parse(content, {});\n        const ast = this.parser.tokensToAst(tokens);\n        const vnodes = this.astToVnodes(ast);\n        this.renderContent(vnodes);\n      },\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['content']) {\n      if (!this.typing) {\n        this.typingIndex = this.content?.length || 0;\n        this.parseContent();\n      }\n      if (this.content.indexOf(changes['content']?.previousValue) === -1) {\n        this.typingIndex = 0;\n      }\n      // 使用setTimeout模拟Vue的nextTick行为\n      setTimeout(() => this.typewriterStart());\n    }\n\n    if (changes['customXssRules']) {\n      this.mdCardService.setCustomXssRules(this.customXssRules || []);\n      this.parseContent();\n    }\n\n    if (changes['enableThink'] || changes['thinkOptions'] || changes['theme']) {\n      this.parseContent();\n    }\n\n    if (changes['mdPlugins']) {\n      this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\n      this.parseContent();\n    }\n  }\n\n  private parseContent() {\n    this.foundation.parseContent();\n  }\n\n  private renderContent(vnodes) {\n    if (!this.markdownContainer || !this.markdownContainer.element) {\n      return;\n    }\n\n    if (this.noDiff) {\n      this.renderContentNoDiff(vnodes);\n      return;\n    }\n\n    const container = this.markdownContainer.element.nativeElement;\n    const parser = new DOMParser();\n    const newContainerDiv = parser.parseFromString(`<div></div>`, 'text/html');\n    const codeBlockWrappers = vnodes.filter((node) => {\n      return (\n        node.nodeName === 'DIV' &&\n        node.className?.includes('code-block-wrapper')\n      );\n    });\n\n    vnodes.forEach((node) => {\n      if (\n        node &&\n        (node.nodeType ||\n          typeof node === 'string' ||\n          node instanceof HTMLElement)\n      ) {\n        if (codeBlockWrappers.includes(node)) {\n          newContainerDiv.body.firstChild?.appendChild(this.getEmptyCodeBlock(node));\n        } else {\n          newContainerDiv.body.firstChild?.appendChild(node);\n        }\n      }\n    });\n    let newContainerDivHTML =\n      (newContainerDiv.body?.firstChild as HTMLElement)?.outerHTML || '';\n    const patches = this.diffDom.diff(container, this.mdCardService.filterHtml(newContainerDivHTML));\n    this.diffDom.apply(container, patches);\n    // 将codeBlockWrappers中的每个div元素替换container中的对应key属性的元素\n    codeBlockWrappers.forEach((newCodeBlock) => {\n      if (\n        newCodeBlock &&\n        newCodeBlock.attributes &&\n        newCodeBlock.attributes.key\n      ) {\n        const key = newCodeBlock?.attributes?.key?.value;\n        const existingElement = container.querySelector(`[key=\"${key}\"]`);\n        if (\n          existingElement &&\n          newCodeBlock instanceof HTMLElement &&\n          existingElement !== newCodeBlock\n        ) {\n          existingElement.replaceWith(newCodeBlock);\n        }\n      }\n    });\n  }\n\n  private getEmptyCodeBlock(node) {\n    const codeNode = document.createElement('div');\n    codeNode.className = 'code-block-wrapper';\n    codeNode.setAttribute('key', node?.attributes?.key?.value);\n    return codeNode;\n  }\n\n  private astToVnodes(nodes: ASTNode[]) {\n    return nodes.map((node) => this.processASTNode(node));\n  }\n\n  private processASTNode(node: ASTNode | Token | any) {\n    if (node.nodeType === 'html_inline' || node.nodeType === 'html_block') {\n      return this.processHTMLNode(node);\n    }\n\n    if (node.nodeType === 'inline') {\n      return this.processInlineToken(node);\n    }\n    if (this.foundation.isToken(node)) {\n      return this.processToken(node);\n    }\n\n    return this.processASTNodeInternal(node);\n  }\n\n  private processHTMLNode(node: ASTNode) {\n    if (!node.openNode?.content) return;\n\n    const parser = new DOMParser();\n    const tagName = node.nodeType === 'html_block' ? 'div' : 'span';\n    const containerDocument = parser.parseFromString(\n      `<${tagName}>${node.openNode.content}</${tagName}>`,\n      'text/html'\n    );\n    const containerBody = containerDocument.body.firstChild;\n    // 处理子节点\n    if (node.children && node.children.length > 0) {\n      node.children.forEach((child) => {\n        const childVnode = this.processASTNode(child as any);\n        if (childVnode && containerBody) {\n          (containerBody?.firstChild || containerBody).appendChild(childVnode);\n        }\n      });\n    }\n    return containerBody;\n  }\n\n  private renderContentNoDiff(vnodes) {\n    const container = this.markdownContainer.element.nativeElement;\n    const newContentFragement = this.renderer.createElement('div');\n    vnodes.forEach((node) => {\n      if (\n        node &&\n        (node.nodeType ||\n          typeof node === 'string' ||\n          node instanceof HTMLElement)\n      ) {\n        newContentFragement.appendChild(node);\n      }\n    });\n    while (container.firstChild) {\n      container.removeChild(container.firstChild);\n    }\n    container.appendChild(newContentFragement);\n  }\n\n  private processInlineToken(node: ASTNode | any) {\n    let html = '';\n    try {\n      if (!node.openNode) {\n        return null;\n      }\n      html = this.mdt.renderer.render([node.openNode], this.mdt.options, {});\n    } catch (error) {\n      console.error('Error rendering inline token:', node);\n      return null;\n    }\n\n    // 将HTML字符串转换为DOM节点\n    const parser = new DOMParser();\n    const doc = parser.parseFromString(`<div>${html}</div>`, 'text/html');\n    const token = doc.body.firstChild;\n    // 如果只有一个子节点，直接返回子节点而不是包含div\n    if (token && token.childNodes.length === 1) {\n      return token.firstChild;\n    }\n    return token;\n  }\n\n  private processFenceNode(token: Token) {\n    const language =\n      token.info?.replace(/<span\\b[^>]*>/i, '').replace('</span>', '') || '';\n    const code = token.content || '';\n    return this.createCodeBlock(language, code, (token as any).tokenIndex || 0);\n  }\n\n  private processASTNodeInternal(node: ASTNode | any) {\n    let tagName = 'div';\n    if (node.openNode?.tag && this.parser.isValidTagName(node.openNode?.tag)) {\n      tagName = node.openNode?.tag;\n    }\n    const element = this.renderer.createElement(tagName);\n\n    // 设置属性\n    if (node.openNode.attrs) {\n      node.openNode.attrs.forEach(([key, value]) => {\n        this.renderer.setAttribute(element, key, value);\n      });\n    }\n\n    // 特殊处理fence类型的token\n    if (node.openNode.type === 'fence') {\n      return this.processFenceNode(node.openNode as unknown as Token);\n    }\n\n    // 处理所有带tag的AST节点\n    if (node.openNode?.tag) {\n      let tagName = this.parser.isValidTagName(node.openNode?.tag)\n        ? node.openNode?.tag\n        : 'div';\n      const element = this.renderer.createElement(tagName);\n\n      // 递归处理所有子节点并添加到当前元素\n      node.children.forEach((child) => {\n        const childNode = this.processASTNode(child);\n        if (childNode) {\n          element.appendChild(childNode);\n        }\n      });\n      return element;\n    }\n\n    node.children.forEach((child) => {\n      const childNode = this.processASTNode(child);\n      if (childNode) {\n        element.appendChild(childNode);\n      }\n    });\n    return element;\n  }\n\n  private processToken(token: Token) {\n    if (token.type === 'text') {\n      return this.renderer.createText(token.content || '');\n    }\n\n    if (token.type === 'inline') {\n      return this.processInlineToken(token);\n    }\n\n    if (token.type === 'fence') {\n      return this.processFenceNode(token);\n    }\n\n    if (token.type === 'softbreak') {\n      if (this.mdt.options.breaks) {\n        return this.renderer.createElement('br');\n      } else {\n        return this.renderer.createText('\\n');\n      }\n    }\n\n    if (token.type === 'html_block' || token.type === 'html_inline') {\n      const parser = new DOMParser();\n      const tagName = token.type === 'html_block' ? 'div' : 'span';\n      const doc = parser.parseFromString(\n        `<${tagName}>${token.content}</${tagName}>`,\n        'text/html'\n      );\n      const tokenDom = doc.body;\n      // 如果只有一个子节点，直接返回子节点而不是包含div\n      if (tokenDom.firstChild && tokenDom.childNodes.length === 1) {\n        return tokenDom.firstChild;\n      }\n      return tokenDom;\n    }\n\n    if (token.tag) {\n      const tagName = this.parser.isValidTagName(token.tag) ? token.tag : 'div';\n      const element = this.renderer.createElement(tagName);\n\n      if (token.attrs) {\n        token.attrs.forEach(([key, value]) => {\n          this.renderer.setAttribute(element, key, value);\n        });\n      }\n\n      // 设置内容\n      if (token.content) {\n        const textNode = this.renderer.createText(token.content);\n        element.appendChild(textNode);\n      }\n      return element;\n    }\n\n    return this.renderer.createText(token.content || '');\n  }\n\n  private createCodeBlock(language: string, code: string, blockIndex: number) {\n    const key = `code-block-${blockIndex}`;\n\n    // 检查缓存中是否已存在相同blockIndex的组件\n    if (this.codeBlockComponentsCache.has(key)) {\n      const cachedItem = this.codeBlockComponentsCache.get(key);\n      if (cachedItem) {\n        // 更新现有组件的属性\n        const componentRef = cachedItem.componentRef;\n        componentRef.setInput('language', language);\n        componentRef.setInput('code', code);\n        componentRef.setInput('theme', this.theme);\n\n        // 触发变更检测\n        componentRef.changeDetectorRef.detectChanges();\n        // 返回缓存的容器，无需重新创建\n        return cachedItem.container;\n      }\n    }\n\n    // 缓存中不存在，创建新组件\n    const codeBlockContainer = this.renderer.createElement('div');\n    this.renderer.setAttribute(codeBlockContainer, 'key', key);\n\n    const componentRef = this.markdownContainer.createComponent(\n      CodeBlockComponent,\n      {\n        projectableNodes: [],\n        injector: this.markdownContainer.injector,\n      }\n    );\n\n    // 设置组件属性\n    componentRef.instance.language = language;\n    componentRef.instance.code = code;\n    componentRef.instance.blockIndex = blockIndex;\n    componentRef.instance.theme = this.theme;\n    componentRef.instance.enableMermaid = this.enableMermaid;\n    componentRef.instance.mermaidConfig = this.mermaidConfig || {};\n    componentRef.instance.actionsTemplate = this.actionsTemplate;\n    componentRef.instance.headerTemplate = this.headerTemplate;\n    componentRef.instance.contentTemplate = this.contentTemplate;\n\n    // 触发变更检测\n    componentRef.changeDetectorRef.detectChanges();\n\n    // 将组件的DOM元素附加到容器中\n    this.renderer.appendChild(\n      codeBlockContainer,\n      componentRef.location.nativeElement\n    );\n\n    // 添加样式类\n    this.renderer.addClass(codeBlockContainer, 'code-block-wrapper');\n\n    // 缓存组件实例和容器\n    this.codeBlockComponentsCache.set(key, {\n      componentRef: componentRef,\n      container: codeBlockContainer,\n    });\n\n    // 返回创建的DOM容器\n    return codeBlockContainer;\n  }\n\n  private typewriterStart(): void {\n    this.foundation.typewriterStart();\n  }\n\n  // 在组件销毁时清理缓存，避免内存泄漏\n  override ngOnDestroy(): void {\n    // 销毁所有缓存的组件实例\n    this.codeBlockComponentsCache.forEach((cachedItem) => {\n      cachedItem.componentRef.destroy();\n    });\n    this.codeBlockComponentsCache.clear();\n  }\n}\n","<div class=\"mc-markdown-render\" [ngClass]=\"theme === 'dark' ? 'mc-markdown-render-dark' : 'mc-markdown-render-light'\">\n  <div #markdownContainer></div>\n</div>\n<ng-content></ng-content>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '../Locale';\nimport { MarkdownCardComponent } from './markdown-card.component';\nimport { CodeBlockComponent } from './code-block.component';\nimport { LocaleModule } from '../Locale';\n@NgModule({\n  declarations: [\n    CodeBlockComponent,\n    MarkdownCardComponent,\n  ],\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    LocaleModule,\n    \n  ],\n  exports: [\n    CodeBlockComponent,\n    MarkdownCardComponent\n  ],\n  providers: [\n  ],\n  bootstrap: []\n})\nexport class MarkdownCardModule {\n  static forRoot(): ModuleWithProviders<MarkdownCardModule> {\n    return {\n      ngModule: MarkdownCardModule,\n      providers: [\n      ]\n    };\n  }\n}","/*\n * Public API Surface of components-ng\n */\n\nexport * from './Bubble/index';\nexport * from './Input/index';\nexport * from './Locale/index';\nexport * from './MarkdownCard/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocaleService","i2","i2.TranslatePipe"],"mappings":"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"}