@matechat/ng 17.2.1-alpha.3 → 17.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/matechat-ng.mjs +18 -12
- package/fesm2022/matechat-ng.mjs.map +1 -1
- package/index.d.ts +8 -1
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matechat-ng.mjs","sources":["../../../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/components-common/Attachment/common/uploader.ts","../../../projects/components-ng/src/Attachment/drop-area/drop-area.component.ts","../../../projects/components-ng/src/Attachment/drop-area/drop-area.component.html","../../../projects/components-ng/src/Attachment/attachment.component.ts","../../../projects/components-ng/src/Attachment/attachment.component.html","../../../projects/components-ng/src/Attachment/attachment.module.ts","../../../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/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/Header/header.component.ts","../../../projects/components-ng/src/Header/header.component.html","../../../projects/components-ng/src/Header/header.module.ts","../../../projects/components-ng/src/components-common/Input/common/types.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/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/components-common/Input/common/util.ts","../../../projects/components-ng/src/Input/InputTag/input-tag.component.ts","../../../projects/components-ng/src/Input/InputTag/input-tag.component.html","../../../projects/components-ng/src/Input/EditableBlock/editable-block.component.ts","../../../projects/components-ng/src/Input/EditableBlock/editable-block.component.html","../../../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/Introduction/foundation.ts","../../../projects/components-ng/src/Introduction/introduction.component.ts","../../../projects/components-ng/src/Introduction/introduction.component.html","../../../projects/components-ng/src/Introduction/introduction.module.ts","../../../projects/components-ng/src/components-common/List/common/list-types.ts","../../../projects/components-ng/src/components-common/List/common/list-const.ts","../../../projects/components-ng/src/components-common/List/foundation.ts","../../../projects/components-ng/src/List/list.component.ts","../../../projects/components-ng/src/List/list.component.html","../../../projects/components-ng/src/List/list.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/components-common/Mention/common/mention-constants.ts","../../../projects/components-ng/src/components-common/Mention/foundation.ts","../../../projects/components-ng/src/Mention/mention.component.ts","../../../projects/components-ng/src/Mention/mention.component.html","../../../projects/components-ng/src/Mention/mention.module.ts","../../../projects/components-ng/src/Mention/index.ts","../../../projects/components-ng/src/components-common/Toolbar/common/toolbar-common-fun.ts","../../../projects/components-ng/src/components-common/Toolbar/common/toolbar-constants.ts","../../../projects/components-ng/src/Toolbar/copy-icon/copy-icon.component.ts","../../../projects/components-ng/src/Toolbar/copy-icon/copy-icon.component.html","../../../projects/components-ng/src/Toolbar/delete-icon/delete-icon.component.ts","../../../projects/components-ng/src/Toolbar/delete-icon/delete-icon.component.html","../../../projects/components-ng/src/Toolbar/dislike-icon/dislike-icon.component.ts","../../../projects/components-ng/src/Toolbar/dislike-icon/dislike-icon.component.html","../../../projects/components-ng/src/Toolbar/like-icon/like-icon.component.ts","../../../projects/components-ng/src/Toolbar/like-icon/like-icon.component.html","../../../projects/components-ng/src/Toolbar/refresh-icon/refresh-icon.component.ts","../../../projects/components-ng/src/Toolbar/refresh-icon/refresh-icon.component.html","../../../projects/components-ng/src/Toolbar/share-icon/share-icon.component.ts","../../../projects/components-ng/src/Toolbar/share-icon/share-icon.component.html","../../../projects/components-ng/src/components-common/Toolbar/common/toolbar.types.ts","../../../projects/components-ng/src/Toolbar/toolbar.component.ts","../../../projects/components-ng/src/Toolbar/toolbar.component.html","../../../projects/components-ng/src/Toolbar/toolbar.module.ts","../../../projects/components-ng/src/components-common/Prompt/foundation.ts","../../../projects/components-ng/src/components-common/Prompt/item-foundation.ts","../../../projects/components-ng/src/components-common/Prompt/icon-foundation.ts","../../../projects/components-ng/src/Prompt/prompt-icon/prompt-icon.component.ts","../../../projects/components-ng/src/Prompt/prompt-icon/prompt-icon.component.html","../../../projects/components-ng/src/Prompt/prompt-item/prompt-item.component.ts","../../../projects/components-ng/src/Prompt/prompt-item/prompt-item.component.html","../../../projects/components-ng/src/Prompt/prompt.component.ts","../../../projects/components-ng/src/Prompt/prompt.component.html","../../../projects/components-ng/src/Prompt/prompt.module.ts","../../../projects/components-ng/src/Layout/aside/aside.component.ts","../../../projects/components-ng/src/Layout/aside/aside.component.html","../../../projects/components-ng/src/Layout/aside/aside.module.ts","../../../projects/components-ng/src/Layout/content/content.component.ts","../../../projects/components-ng/src/Layout/content/content.component.html","../../../projects/components-ng/src/Layout/content/content.module.ts","../../../projects/components-ng/src/Layout/header/header.component.ts","../../../projects/components-ng/src/Layout/header/header.component.html","../../../projects/components-ng/src/Layout/header/header.module.ts","../../../projects/components-ng/src/Layout/layout/layout.component.ts","../../../projects/components-ng/src/Layout/layout/layout.component.html","../../../projects/components-ng/src/Layout/layout/layout.module.ts","../../../projects/components-ng/src/Layout/sender/sender.component.ts","../../../projects/components-ng/src/Layout/sender/sender.component.html","../../../projects/components-ng/src/Layout/sender/sender.module.ts","../../../projects/components-ng/src/public-api.ts","../../../projects/components-ng/src/matechat-ng.ts"],"sourcesContent":["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 Attachment: {\n dragToUpload: \"拖拽到此处上传\",\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 Attachment: {\n dragToUpload: 'Drag to upload',\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 type { FileItem, UploadOptions } from './attachment-types';\n\ninterface UploaderOptions {\n file: File;\n fileItem: FileItem;\n options: UploadOptions;\n onProgress: (percentage: number) => void;\n onSuccess: (response: unknown) => void;\n onError: (error: unknown) => void;\n}\n\nexport function upload(config: UploaderOptions): void {\n const { file, options, onProgress, onSuccess, onError } = config;\n\n const xhr = new XMLHttpRequest();\n\n // 进度回调\n xhr.upload.onprogress = (e: ProgressEvent) => {\n if (e.lengthComputable) {\n const percentage = Math.round((e.loaded * 100) / e.total);\n onProgress(percentage);\n }\n };\n\n // 错误处理\n xhr.onerror = () => {\n onError({\n message: 'Upload failed due to a network error.',\n status: xhr.status,\n statusText: xhr.statusText,\n });\n };\n\n // 响应处理\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n const response =\n options.responseType === 'text' || !xhr.response\n ? xhr.responseText\n : xhr.response;\n onSuccess(response);\n } else {\n onError({\n message: `Upload failed with status: ${xhr.status}`,\n status: xhr.status,\n statusText: xhr.statusText,\n response: xhr.response,\n });\n }\n };\n\n // 准备 FormData\n const formData = new FormData();\n const fileFieldName = options.fileFieldName || 'file';\n formData.append(fileFieldName, file, file.name);\n\n if (options.additionalParameter) {\n for (const key of Object.keys(options.additionalParameter)) {\n formData.append(key, options.additionalParameter[key]);\n }\n }\n\n // 打开请求\n xhr.open(options.method || 'POST', options.uri, true);\n\n // 设置 withCredentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // 设置 responseType\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // 设置 Headers\n if (options.headers) {\n for (const key of Object.keys(options.headers)) {\n xhr.setRequestHeader(key, options.headers[key]);\n }\n }\n\n // 设置认证 Token\n if (options.authToken) {\n const authTokenHeader = options.authTokenHeader || 'Authorization';\n xhr.setRequestHeader(authTokenHeader, options.authToken);\n }\n\n // 发送请求\n xhr.send(formData);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ViewChild,\n ElementRef,\n AfterViewInit,\n Input,\n OnDestroy,\n Output,\n EventEmitter,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n selector: 'mc-drop-area',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './drop-area.component.html',\n styleUrls: ['./drop-area.component.scss'],\n})\nexport class DropAreaComponent implements AfterViewInit, OnDestroy {\n @Input() getDropContainer: () => HTMLElement;\n @Input() isDisabled: boolean = false;\n @Output() drop = new EventEmitter<File[]>();\n\n @ViewChild('dropArea') dropAreaEl!: ElementRef<HTMLDivElement>;\n\n container: HTMLElement;\n isDragging = false;\n // 使用计数器来跟踪 dragenter 和 dragleave 事件,防止进入子元素导致的状态变化\n dragCounter = 0;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['getDropContainer'] && this.getDropContainer) {\n const newContainer = this.getDropContainer();\n if (this.container !== newContainer) {\n this.container = newContainer;\n }\n }\n }\n\n handleDragEnter = (e: DragEvent) => {\n e.preventDefault();\n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.isDragging = true;\n }\n if (this.container && this.dropAreaEl.nativeElement) {\n if (this.container === document.body) {\n this.dropAreaEl.nativeElement.style.inset = '0';\n } else {\n const { x, y, width, height } = this.container.getBoundingClientRect();\n this.dropAreaEl.nativeElement.style.width = `${width}px`;\n this.dropAreaEl.nativeElement.style.height = `${height}px`;\n this.dropAreaEl.nativeElement.style.top = `${y}px`;\n this.dropAreaEl.nativeElement.style.left = `${x}px`;\n }\n }\n };\n handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n\n handleDragLeave = (e: DragEvent) => {\n e.preventDefault();\n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.isDragging = false;\n }\n };\n handleDrop = (e: DragEvent) => {\n e.preventDefault();\n this.isDragging = false;\n this.dragCounter = 0; // 重置计数器\n if (this.isDisabled) return;\n\n const files = Array.from(e.dataTransfer?.files || []);\n if (files.length > 0) {\n this.drop.emit(files);\n }\n };\n onBodyDrop = (e: DragEvent) => {\n e.preventDefault();\n this.isDragging = false;\n this.dragCounter = 0;\n };\n\n ngAfterViewInit(): void {\n document.body.appendChild(this.dropAreaEl.nativeElement);\n if (this.getDropContainer) {\n this.container = this.getDropContainer();\n }\n document.body.addEventListener('dragenter', this.handleDragEnter);\n document.body.addEventListener('dragover', this.handleDragOver);\n document.body.addEventListener('dragleave', this.handleDragLeave);\n document.body.addEventListener('drop', this.onBodyDrop);\n }\n\n ngOnDestroy(): void {\n document.body.removeEventListener('dragenter', this.handleDragEnter);\n document.body.removeEventListener('dragover', this.handleDragOver);\n document.body.removeEventListener('dragleave', this.handleDragLeave);\n document.body.removeEventListener('drop', this.onBodyDrop);\n }\n}\n","<div\n #dropArea\n [ngClass]=\"{\n 'mc-attachment-drop-area': true,\n 'hide-drop-area': !isDragging,\n }\"\n (drop)=\"handleDrop($event)\"\n>\n <ng-content />\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n ContentChild,\n TemplateRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '../Locale/translate.pipe';\nimport type {\n UploadOptions,\n BeforeUpload,\n ChangeEventArg,\n SuccessEventArg,\n ErrorEventArg,\n ProgressEventArg,\n IValidResult,\n FileItem,\n} from './attachment-types';\nimport { upload } from '../components-common/Attachment/common/uploader';\nimport { DropAreaComponent } from './drop-area/drop-area.component';\n\n@Component({\n selector: 'mc-attachment',\n standalone: true,\n imports: [CommonModule, TranslatePipe, DropAreaComponent],\n templateUrl: './attachment.component.html',\n styleUrls: ['./attachment.component.scss'],\n})\nexport class AttachmentComponent {\n @Input() uploadOptions: UploadOptions = { uri: '' };\n @Input() disabled: boolean = false;\n @Input() accept: string = '';\n @Input() dropPlaceholder: string | undefined;\n @Input() maxCount: number = Number.POSITIVE_INFINITY;\n @Input() maxSize: number = Number.POSITIVE_INFINITY;\n @Input() multiple: boolean = true;\n @Input() draggable: boolean = true;\n @Input() beforeUpload: BeforeUpload;\n @Input() getDropContainer: () => HTMLElement;\n\n @Output() change = new EventEmitter<ChangeEventArg>();\n @Output() success = new EventEmitter<SuccessEventArg>();\n @Output() error = new EventEmitter<ErrorEventArg>();\n @Output() progress = new EventEmitter<ProgressEventArg>();\n @Output() drop = new EventEmitter<File[]>();\n @Output() validChange = new EventEmitter<IValidResult[]>();\n\n @ContentChild('dropPlaceholder')\n dropPlaceholderTemplate: TemplateRef<any> | null = null;\n\n @ViewChild('input') inputEl!: ElementRef<HTMLInputElement>;\n\n fileList: FileItem[] = [];\n uid = Date.now();\n\n get isDisabled() {\n return this.disabled || this.fileList.length >= this.maxCount;\n }\n\n onDrop(e: File[]) {\n this.uploadFiles(e);\n this.drop.emit(e);\n }\n\n getFileItem = (file: File): FileItem => {\n const localUrl = URL.createObjectURL(file);\n return {\n uid: this.uid++,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'uploading',\n percentage: 0,\n url: localUrl,\n thumbUrl: localUrl,\n };\n };\n\n uploadFiles = async (files: File[]) => {\n if (files.length === 0) return;\n\n // 检查文件数量限制\n if (this.fileList.length + files.length > this.maxCount) {\n this.validChange.emit([{ type: 'exceedCount' }]);\n return;\n }\n\n const validFiles: File[] = [];\n const validRes: IValidResult[] = [];\n\n // 2. 遍历并校验每个文件\n for (const file of files) {\n let isFileValid = true;\n\n // 2.1 文件类型校验\n if (this.accept && this.accept !== '*') {\n const acceptedTypes = this.accept\n .split(',')\n .map((t) => t.trim().toLowerCase());\n const fileType = file.type.toLowerCase();\n const fileName = file.name.toLowerCase();\n const isTypeValid = acceptedTypes.some((type) => {\n if (type.endsWith('/*'))\n return fileType.startsWith(type.slice(0, -1));\n if (type.startsWith('.')) return fileName.endsWith(type);\n return fileType === type;\n });\n\n if (!isTypeValid) {\n validRes.push({ type: 'unsupportedFileType', file });\n isFileValid = false;\n }\n }\n\n // 2.2 文件大小校验\n if (isFileValid && file.size / 1024 / 1024 > this.maxSize) {\n validRes.push({ type: 'exceedSizeLimit', file });\n isFileValid = false;\n }\n\n // 2.3 上传前钩子校验\n if (isFileValid && this.beforeUpload) {\n try {\n const result = await Promise.resolve(this.beforeUpload(file));\n if (result === false) {\n validRes.push({ type: 'beforeUploadRejected', file });\n isFileValid = false;\n }\n } catch (e) {\n validRes.push({ type: 'beforeUploadRejected', file });\n isFileValid = false;\n }\n }\n\n if (isFileValid) {\n validFiles.push(file);\n }\n }\n\n if (validRes.length > 0) {\n this.validChange.emit(validRes);\n }\n\n // 只处理通过所有校验的有效文件\n if (validFiles.length === 0) return;\n\n for (const file of validFiles) {\n const fileItem = this.getFileItem(file);\n this.fileList.push(fileItem);\n this.change.emit({ file, fileList: [...this.fileList] });\n this.performUpload(file, fileItem);\n }\n };\n\n // 执行上传\n performUpload = (file: File, fileItem: FileItem) => {\n const findFileIndex = () =>\n this.fileList.findIndex((item) => item.uid === fileItem.uid);\n\n upload({\n file,\n fileItem,\n options: this.uploadOptions,\n onProgress: (percentage: number) => {\n const index = findFileIndex();\n if (index > -1) {\n this.fileList[index].percentage = percentage;\n this.progress.emit({ file, fileList: [...this.fileList] });\n }\n },\n onSuccess: (response: unknown) => {\n const index = findFileIndex();\n if (index > -1) {\n this.fileList[index].status = 'success';\n this.fileList[index].response = response;\n this.success.emit({ file, response, fileList: [...this.fileList] });\n }\n },\n onError: (error: unknown) => {\n const index = findFileIndex();\n if (index > -1) {\n this.fileList[index].status = 'uploadError';\n this.fileList[index].error = error;\n this.error.emit({ file, error, fileList: [...this.fileList] });\n }\n },\n });\n };\n\n handleFileChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files;\n if (files) {\n this.uploadFiles(Array.from(files));\n }\n };\n\n handleClick() {\n if (this.isDisabled) {\n return;\n }\n this.inputEl.nativeElement.click();\n }\n}\n","<div\n class=\"mc-attachment\"\n (click)=\"handleClick()\"\n [ngClass]=\"{ 'is-disabled': isDisabled }\"\n>\n <ng-content></ng-content>\n <input\n #input\n type=\"file\"\n class=\"mc-attachment-file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"isDisabled\"\n (change)=\"handleFileChange($event)\"\n />\n <mc-drop-area\n *ngIf=\"draggable\"\n [getDropContainer]=\"getDropContainer\"\n [isDisabled]=\"isDisabled\"\n (drop)=\"onDrop($event)\"\n >\n <ng-container *ngIf=\"dropPlaceholderTemplate; else defaultFooterButton\">\n <ng-container\n *ngIf=\"dropPlaceholderTemplate; then dropPlaceholderTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n {{ dropPlaceholder ?? (\"Attachment.dragToUpload\" | translate) }}\n </ng-template>\n </mc-drop-area>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AttachmentComponent } from './attachment.component';\nimport { DropAreaComponent } from './drop-area/drop-area.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, DropAreaComponent, AttachmentComponent],\n exports: [AttachmentComponent],\n})\nexport class AttachmentModule {}\n","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>","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 { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'mc-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent {\n @Input() logoImg: string = '';\n @Input() title: string = '';\n @Input() logoClickable: boolean = false;\n\n @Output() logoClicked = new EventEmitter<void>();\n\n onLogoClicked(): void {\n if (this.logoClickable) {\n this.logoClicked.emit();\n }\n }\n}\n","<div class=\"mc-header\">\n <div class=\"mc-header-logo-container\" [class]=\"{ clickable: logoClickable }\" (click)=\"onLogoClicked()\">\n <img *ngIf=\"logoImg\" class=\"mc-header-logo\" [src]=\"logoImg\" [alt]=\"logoImg\" />\n <div class=\"mc-header-title\">{{ title }}</div>\n </div>\n <div class=\"mc-header-operation\">\n <ng-content select=\"[operationArea]\"></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HeaderComponent } from './header.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, HeaderComponent],\n exports: [HeaderComponent],\n})\nexport class HeaderModule {}\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}\n\nexport interface ThemeTagItem {\n type: 'themeTag';\n themeTagKey?: string; // 主题标签的唯一标识\n themeTagText: string; // 主题标签的文本内容\n clearInput?: boolean; // 关闭主题标签时是否清空对应输入框内容\n popoverContent: string; // 主题标签的pop弹出提示内容\n}\n\nexport interface TipTagOption {\n tipTagKey?: string; // 前置提示标签的唯一标识\n tipTagText: string; // 前置提示标签的文本内容\n clearInput?: boolean; // 关闭前置标签时是否清空对应输入框内容\n popoverContent: string; // 前置提示标签的pop弹出提示内容\n}\n\nexport interface FormatTextItem {\n type: 'text';\n key: string; // 标签的唯一标识\n content: string; \n}\n\nexport interface FormatInputItem {\n type: 'input';\n key: string; // 标签的唯一标识\n placeholder?: string; // input标签的占位提示内容\n content?: string; // input标签的默认展示内容,与placeholder需保证有其一\n}\n\nexport type FormatContentItem = FormatTextItem | FormatInputItem | ThemeTagItem;\nexport interface FormatContentOptions {\n formatContent: FormatContentItem[]; // 当前仅支持最多设置一个ThemeTag,且必须放在数组的第一个位置\n}\n\nexport const TimeToViewRender = 50;","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","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, { type 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","export function insertText(text: string) {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n const textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.setStartAfter(textNode);\n range.setEndAfter(textNode);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n}\n\n\nexport const handlePaste = (e: any) => {\n e.preventDefault();\n const text = e.clipboardData?.getData(\"text/plain\") ||'';\n const sanitizedText = text.replace(/[\\r\\n]+/g, ' ');\n if (sanitizedText) {\n insertText(sanitizedText);\n }\n}\n\n// 使光标移动到文案末尾\nexport const moveCursorToTextEnd = (inputWarp: HTMLElement) => {\n if (inputWarp) {\n const range = document.createRange();\n const selection = window.getSelection();\n range.selectNodeContents(inputWarp);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n}\n\n","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport BaseComponent from '../../Base/base.component';\nimport { LocaleService } from '../../Locale';\n\nimport { handlePaste } from '../../components-common/Input/common/util';\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\n\n\n@Component({\n selector: 'mc-input-tag',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './input-tag.component.html',\n styleUrls: ['./input-tag.component.scss'],\n})export class InputTagComponent extends BaseComponent<InputTagFoundation> {\n @Input() disabled: boolean = false;\n @Input() content: string = '';\n @Input() placeholder: string = '';\n @Output() change = new EventEmitter<string>();\n @ViewChild('editableSpanRef') editableSpanRef!: ElementRef<HTMLSpanElement>;\n \n isEditable: boolean = false;\n localValue: string = this.content;\n\n constructor(private localeService: LocaleService) { super(); }\n \n ngOnChanges(changes: SimpleChanges) {\n if (changes['content']) {\n this.localValue = changes['content'].currentValue;\n }\n }\n\n handleFocus() {\n this.isEditable = !this.disabled;\n }\n\n handleBlur() {\n this.isEditable = false;\n }\n\n handleInput(e: any) {\n const prompt = this.editableSpanRef?.nativeElement.textContent || '';\n this.localValue = prompt;\n this.change.emit(prompt);\n }\n\n handleInputPaste(e: any) {\n handlePaste(e);\n this.handleInput(e);\n }\n}","<span class=\"editable-span\" contenteditable=\"false\">\n <span \n #editableSpanRef\n [attr.contenteditable]=\"isEditable\"\n [attr.placeholder]=\"placeholder\"\n tabindex=\"0\"\n class=\"input-custom-item\"\n [ngClass]=\"{'input-custom-placeholder': !localValue?.length, 'inline-text': localValue?.length}\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (paste)=\"handleInputPaste($event)\"\n >{{content}}</span>\n</span>","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges, ContentChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport BaseComponent from '../../Base/base.component';\nimport { LocaleService } from '../../Locale';\n\nimport { handlePaste, insertText, moveCursorToTextEnd } from '../../components-common/Input/common/util';\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\nimport { InputTagComponent } from '../InputTag/input-tag.component';\nimport { DisplayType, FormatContentItem, SubmitShortKey, ThemeTagItem, TimeToViewRender } from '../../components-common/Input/common/types';\n// import { PopoverModule } from 'ng-devui/popover';\n\n@Component({\n selector: 'mc-editable-block',\n standalone: true,\n imports: [CommonModule, InputTagComponent],\n templateUrl: './editable-block.component.html',\n styleUrls: ['./editable-block.component.scss'],\n})export class EditableBlockComponent extends BaseComponent<InputTagFoundation> {\n\n themeTag: ThemeTagItem = {\n themeTagText: '',\n clearInput: false,\n popoverContent: '',\n type: 'themeTag',\n };\n \n @Input() disabled: boolean = false;\n @Input() displayType: DisplayType = DisplayType.Full;\n @Input() placeholder: string = '';\n\n @Input() templateParts: any[] = [];\n @Input() maxLength: number | null = 2000;\n @Input() submitShortKey: SubmitShortKey | null | string =\n SubmitShortKey.Enter;\n @Input() autofocus: boolean = false;\n\n @Output() send = new EventEmitter<string>();\n @Output() input = new EventEmitter<string>();\n @Output() blur = new EventEmitter<FocusEvent>();\n @Output() focus = new EventEmitter<FocusEvent>();\n @Output() onBlockKeyArrowUp = new EventEmitter<KeyboardEvent>();\n @ViewChild('editableDivRef') editableDivRef!: ElementRef<HTMLDivElement>;\n @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\n localTemplateParts: any = [...this.templateParts];\n\n constructor(private localeService: LocaleService) { super(); }\n \n ngOnChanges(changes: SimpleChanges) {\n if (changes['templateParts']) {\n this.localTemplateParts = [...changes['templateParts'].currentValue];\n }\n }\n\n ngOnInit() {\n if (this.autofocus && this.editableDivRef?.nativeElement && !this.disabled) {\n this.onFocusInput();\n }\n }\n\n clearInput() {\n const inputWarp = this.editableDivRef?.nativeElement;\n if (inputWarp) {\n inputWarp.innerHTML = '';\n this.handleDivInput();\n }\n }\n\n getInput(){\n return this.getCurrentInputValue();\n }\n\n handleSend() {\n const prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\n if (this.maxLength && prompt.length > this.maxLength) {\n return;\n }\n this.send.emit(prompt);\n this.clearInput();\n }\n\n focusInput() {\n this.editableDivRef?.nativeElement.focus();\n moveCursorToTextEnd(this.editableDivRef?.nativeElement);\n }\n\n onFocus($event: FocusEvent) {\n this.focus.emit($event);\n }\n onBlur($event: FocusEvent) {\n this.blur.emit($event);\n }\n\n isComposing: boolean = false;\n\n handleCompositionEnd($event: CompositionEvent) {\n this.isComposing = false;\n this.handleDivInput();\n }\n handleCompositionStart($event: CompositionEvent) {\n this.isComposing = true;\n }\n handleDivPaste(e: any) {\n e.preventDefault();\n const text = (e.originalEvent || e).clipboardData?.getData('text/plain');\n insertText(text);\n this.handleDivInput();\n }\n handleDivKeydown(e: KeyboardEvent) {\n const shiftKey = this.submitShortKey === SubmitShortKey.Enter ? !e.shiftKey : this.submitShortKey === SubmitShortKey.ShiftEnter ? e.shiftKey : false;\n if (e.key === 'Enter' && shiftKey) {\n e.preventDefault();\n this.handleSend();\n }\n if(['ArrowLeft', 'ArrowRight','Backspace','Delete'].includes(e.key)){\n const selection = window.getSelection();\n if (!selection?.rangeCount || !selection.isCollapsed) {\n return\n }\n\n const range = selection.getRangeAt(0);\n const { startContainer: node, startOffset} = range;\n const direction = e.key === 'ArrowLeft' || e.key === 'Backspace' ? 'previous': 'next';\n const targetNode: any = this.findSiblingNode(node, startOffset, direction);\n if(targetNode && targetNode.nodeType === Node.ELEMENT_NODE){\n const editSpanDom = targetNode.querySelector('.input-custom-item');\n if(!editSpanDom){\n return;\n }\n e.preventDefault();\n editSpanDom.contentEditable = 'true';\n if(e.key === 'ArrowLeft' || e.key === 'ArrowRight'){\n const newRange = document.createRange();\n\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }else if(e.key === 'Backspace' || e.key === 'Delete'){\n if(editSpanDom.textContent.trim()){\n const newRange = document.createRange();\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n\n }else{\n targetNode.remove();\n }\n }\n }\n }\n if(e.key === 'ArrowUp'){\n this.isCursorAtStart() ? this.onBlockKeyArrowUp.emit(e) : null;\n }\n }\n\n isCursorAtStart(){\n const selection = window.getSelection();\n if (!selection?.rangeCount) {\n return true;\n }\n const range = selection.getRangeAt(0);\n if(range.startOffset !== 0){\n return false;\n }\n let node :any= range.startContainer;\n while(node && !node.classList?.contains('editable-container')){\n if(node.previousSibling){\n return false;\n }\n node = node.parentNode;\n }\n return true;\n }\n\n findSiblingNode(node:any, startOffset: number, direction: 'previous' | 'next'){\n if(!node){\n return null;\n }\n\n let current = node;\n const isEditableContainer = node.classList?.contains('editable-container');\n if(isEditableContainer){\n const childNodes = node.childNodes;\n const index = Math.min(startOffset, childNodes.length - 1);\n current = childNodes[index];\n }\n if(!isEditableContainer && direction === 'previous' &&startOffset !== 0){\n return null;\n }\n if(!isEditableContainer && direction === 'next' && startOffset !== node.textContent.length){\n return null;\n }\n let target = null;\n let sibling = current;\n while(sibling){\n sibling = direction === 'next' ? sibling.nextSibling : sibling.previousSibling;\n if(!sibling){\n continue;\n }\n // 排除注释节点和值为空的文本节点\n if(sibling.nodeType !== Node.COMMENT_NODE && (sibling.nodeType !== Node.TEXT_NODE || (sibling.nodeType === Node.TEXT_NODE && sibling.nodeValue.trim() !== ''))){\n target = sibling;\n break;\n }\n \n }\n return target;\n }\n\n\n handleDivInput() {\n if(!this.isComposing) {\n this.processInput();\n }\n }\n\n getCurrentInputValue() {\n let prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\n // 前置标签TipTag的文本需要去除掉\n if(this.themeTag.themeTagText){\n const prefixSpan = this.editableDivRef?.nativeElement?.querySelector('.ai-input-prefix-wrapper');\n if(prefixSpan){\n prompt = prompt.replace(prefixSpan.textContent || '', ' ');\n }\n }\n return prompt;\n }\n\n processInput() {\n setTimeout(() => {\n const prompt = this.getCurrentInputValue();\n this.input.emit(prompt);\n }, TimeToViewRender);\n }\n\n setInputTag(key: string, placeholder: string, defaultValue?: string) {\n if(this.disabled) {\n return;\n }\n this.localTemplateParts.push({\n key,\n type: 'input',\n placeholder,\n content: defaultValue,\n });\n this.onFocusInput();\n this.handleDivInput();\n }\n \n setMixTags(mixTagConfig:FormatContentItem[]) {\n if(this.disabled) {\n return;\n }\n this.localTemplateParts = [...mixTagConfig];\n this.onFocusInput();\n this.handleDivInput();\n }\n\n setText(text:string) {\n if(this.disabled) {\n return;\n }\n this.localTemplateParts.push({\n key: 'text',\n type: 'text',\n content: text,\n });\n this.onFocusInput();\n this.handleDivInput();\n }\n \n openTipTag(themeTagText:string, popoverContent:string, clearInput?: boolean){\n if(this.disabled) {\n return;\n }\n this.themeTag = {\n themeTagText,\n popoverContent,\n clearInput: clearInput || false,\n type: 'themeTag'\n };\n\n }\n \n closeTipTag() {\n if(this.themeTag.themeTagText && this.themeTag.clearInput){\n this.clearInput();\n }else{\n this.themeTag = {\n themeTagText: '',\n popoverContent: '',\n clearInput: false,\n type: 'themeTag'\n };\n this.processInput();\n }\n }\n\n onFocusInput() {\n this.focusInput();\n }\n\n}"," <div \n #editableDivRef\n class=\"editable-container\"\n [ngClass]=\"{'mc-input-disabled': disabled,'mc-input-simple': displayType === 'simple' }\"\n [attr.contenteditable]=\"!disabled\"\n spellcheck=\"false\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"handleDivInput()\"\n (keydown)=\"handleDivKeydown($event)\"\n (paste)=\"handleDivPaste($event)\"\n (compositionstart)=\"handleCompositionStart($event)\"\n (compositionend)=\"handleCompositionEnd($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n >\n <!-- 前置标签 --> \n <span *ngIf=\"themeTag.themeTagText\" contenteditable=\"false\" >\n <span *ngIf=\"themeTag.themeTagText\" [title]=\"themeTag.popoverContent\" class=\"ai-input-prefix-wrapper\" (click)=\"closeTipTag()\" contenteditable=\"false\">\n <ng-container *ngIf=\"themeTagTemplate\">\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTag, themeTagText: themeTag.themeTagText}\"></ng-container>\n </ng-container>\n <span *ngIf=\"!themeTagTemplate\" class=\"ai-input-prefix\">{{themeTag.themeTagText}}</span>\n </span>\n <span contenteditable=\"false\" style=\"display: inline-block;width: 4px;\"></span>\n </span>\n\n <ng-container *ngFor=\"let part of localTemplateParts\" [ngSwitch]=\"part.type\">\n <ng-container *ngSwitchCase=\"'text'\">{{part.content}}</ng-container>\n <mc-input-tag *ngSwitchCase=\"'input'\" [content]=\"part.content\" [placeholder]=\"part.placeholder\" [disabled]=\"disabled\" (change)=\"handleDivInput()\"></mc-input-tag>\n </ng-container>\n </div>","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n DisplayType,\n FormatContentItem,\n FormatContentOptions,\n InputVariant,\n SendBtnVariant,\n SubmitShortKey,\n TimeToViewRender,\n} from '../components-common/Input/common/types';\nimport { ButtonComponent } from './button/button.component';\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';\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\n\n// 创建一个token用于组件间通信\nexport const inputContextToken = 'input-context';\n\n@Component({\n selector: 'mc-input',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n TranslatePipe,\n EditableBlockComponent,\n ],\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [{ provide: inputContextToken, useExisting: InputComponent }],\n})\nexport class InputComponent\n extends BaseComponent<InputFoundation>\n implements OnInit\n{\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 @Input() formatContentOptions: FormatContentOptions = {\n formatContent: [],\n };\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 @ViewChild('editableBlock') editableBlockRef!: EditableBlockComponent;\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 @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\n inputValue: string = '';\n lock: boolean = false;\n showEditableBlock: 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 if (changes['formatContentOptions']) {\n const formatContent =\n changes['formatContentOptions']?.currentValue?.formatContent || [];\n\n // 处理主题标签\n const themeTagItems = formatContent.filter(\n (item) => item.type === 'themeTag',\n );\n if (themeTagItems.length) {\n this.openTipTag(\n themeTagItems[0].themeTagText,\n themeTagItems[0].popoverContent,\n themeTagItems[0].clearInput,\n );\n } else {\n this.closeTipTag();\n }\n\n // 处理其他格式标签\n const otherFormatItems = formatContent.filter(\n (item) => item.type !== 'themeTag',\n );\n if (otherFormatItems.length) {\n this.setMixTags(otherFormatItems);\n } else {\n if (this.showEditableBlock) {\n this.setMixTags(otherFormatItems);\n }\n }\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 if (this.showEditableBlock) {\n this.editableBlockRef?.clearInput();\n }\n this.foundation.clearInput();\n }\n\n getInput(): string {\n if (this.showEditableBlock) {\n return this.editableBlockRef?.getInput();\n }\n return this.inputValue;\n }\n\n setMixTags(mixTagConfig: FormatContentItem[]): void {\n if (this.disabled) {\n return;\n }\n this.showEditableBlock = true;\n setTimeout(() => {\n this.editableBlockRef?.setMixTags(mixTagConfig);\n }, TimeToViewRender);\n }\n\n openTipTag(\n themeTagText: string,\n popoverContent: string,\n clearInput?: boolean,\n ): void {\n if (this.disabled) {\n return;\n }\n this.showEditableBlock = true;\n setTimeout(() => {\n this.editableBlockRef?.openTipTag(\n themeTagText,\n popoverContent,\n clearInput,\n );\n }, TimeToViewRender);\n }\n\n closeTipTag(): void {\n if (!this.disabled && this.showEditableBlock) {\n this.editableBlockRef?.closeTipTag();\n }\n }\n\n handleDivInput(value: string) {\n if (!value) {\n setTimeout(() => {\n this.showEditableBlock = false;\n }, TimeToViewRender);\n }\n this.inputValue = value;\n this.change.emit(value);\n }\n\n handleDivSubmit(value: string) {\n this.submit.emit(value);\n }\n\n onDivBlur(e: FocusEvent) {\n this.blur.emit(e);\n }\n\n onDivFocus(e: FocusEvent) {\n this.focus.emit(e);\n }\n\n // 处理button组件的事件\n onButtonSubmit(value: string): void {\n this.submit.emit(value);\n this.clearInput();\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',\n 'line-height',\n 'padding-top',\n 'padding-bottom',\n 'font-family',\n 'font-weight',\n 'font-size',\n 'font-variant',\n 'text-rendering',\n 'text-transform',\n 'width',\n 'text-indent',\n 'padding-left',\n 'padding-right',\n 'border-width',\n 'box-sizing',\n 'word-break',\n '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 <!-- 替换Textarea -->\n <div *ngIf=\"showEditableBlock\" class=\"editable-block-container\">\n <mc-editable-block *ngIf=\"showEditableBlock\"\n #editableBlock\n [placeholder]=\"placeholder\"\n [maxLength]=\"maxLength\"\n [disabled]=\"disabled\"\n [submitShortKey]=\"submitShortKey\"\n [autofocus]=\"autofocus\"\n [displayType]=\"displayType\" \n (input)=\"handleDivInput($event)\"\n (send)=\"handleDivSubmit($event)\"\n (blur)=\"onDivBlur($event)\"\n (focus)=\"onDivFocus($event)\"\n >\n <ng-container *ngIf=\"themeTagTemplate\">\n <ng-template #themeTag let-themeTagText=\"themeTagText\">\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTagText, themeTagText: themeTagText}\"></ng-container>\n </ng-template>\n </ng-container>\n </mc-editable-block>\n </div>\n <textarea\n *ngIf=\"!showEditableBlock\"\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';\nimport { InputTagComponent } from './InputTag/input-tag.component';\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n SendIconComponent,\n InputComponent,\n InputTagComponent,\n EditableBlockComponent,\n ],\n exports: [InputComponent],\n})\nexport class InputModule {}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\nimport type {\n IntroductionAlign,\n IntroductionBackground,\n} from './common/introduction-types';\n\nexport interface IntroductionAdapter extends DefaultAdapter {}\n\nexport class IntroductionFoundation extends BaseFoundation<IntroductionAdapter> {\n constructor(adapter: IntroductionAdapter) {\n super({ ...adapter });\n }\n\n getIntroductionClasses() {\n const align = this._adapter.getProp('align') as IntroductionAlign;\n const background = this._adapter.getProp(\n 'background',\n ) as IntroductionBackground;\n return [align, background].filter(Boolean).join(' ');\n }\n\n getLogoStyle() {\n const logoWidth = this._adapter.getProp('logoWidth') as number | string;\n const logoHeight = this._adapter.getProp('logoHeight') as number | string;\n const style: Record<string, string> = {};\n\n if (logoWidth) {\n style['width'] =\n typeof logoWidth === 'number' ? `${logoWidth}px` : logoWidth;\n }\n\n if (logoHeight) {\n style['height'] =\n typeof logoHeight === 'number' ? `${logoHeight}px` : logoHeight;\n }\n\n return style;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport BaseComponent from '../Base/base.component';\nimport type {\n IntroductionAlign,\n IntroductionBackground,\n} from '../components-common/Introduction/common/introduction-types';\nimport { IntroductionFoundation } from '../components-common/Introduction/foundation';\n\n@Component({\n selector: 'mc-introduction',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './introduction.component.html',\n styleUrls: ['./introduction.component.scss'],\n})\nexport class IntroductionComponent extends BaseComponent<IntroductionFoundation> {\n @Input() logoImg?: string;\n @Input() title?: string;\n @Input() subTitle?: string;\n @Input() description: string[] = [];\n @Input() logoWidth?: number | string;\n @Input() logoHeight?: number | string;\n @Input() background: IntroductionBackground = 'transparent';\n @Input() align: IntroductionAlign = 'center';\n\n constructor() {\n super();\n this.foundation = new IntroductionFoundation(this.adapter);\n }\n}\n","<div class=\"mc-introduction\" [ngClass]=\"foundation.getIntroductionClasses()\">\n <div class=\"mc-introduction-logo-container\">\n <img *ngIf=\"logoImg\" [src]=\"logoImg\" [alt]=\"title\" [ngStyle]=\"foundation.getLogoStyle()\" />\n <div class=\"mc-introduction-title\">{{ title }}</div>\n </div>\n <div *ngIf=\"subTitle\" class=\"mc-introduction-sub-title\">{{ subTitle }}</div>\n <div *ngIf=\"description && description.length\" class=\"mc-introduction-description\">\n <div *ngFor=\"let item of description; let i = index\">{{ item }}</div>\n </div>\n <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IntroductionComponent } from './introduction.component';\n\n@NgModule({\n imports: [CommonModule, IntroductionComponent],\n exports: [IntroductionComponent],\n})\nexport class IntroductionModule {}\n","export enum ListDirection {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\nexport enum ListVariant {\n Transparent = 'transparent',\n Filled = 'filled',\n Bordered = 'bordered',\n None = 'none',\n}\nexport interface ListItemData {\n label: string;\n value: string | number;\n disabled?: boolean;\n active?: boolean;\n [key: string]: any;\n}\n","export const LazyLoadThreshold = 50;\nexport const InputTagNames = ['TEXTAREA', 'INPUT'];\nexport const ArrowUp = 'ArrowUp';\nexport const ArrowDown = 'ArrowDown';\nexport const Enter = 'Enter';\n","import BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\nimport { ListDirection } from \"./common/list-types\";\n\nexport interface ListAdapter extends DefaultAdapter {}\n\nexport class ListFoundation extends BaseFoundation<ListAdapter> {\n constructor(adapter: ListAdapter) {\n super({ ...adapter });\n }\n\n getListClasses() {\n const { direction, autoWrap } = this.getProps();\n return {\n 'mc-list': true,\n 'mc-list-horizontal': direction === ListDirection.Horizontal,\n 'mc-list-nowrap': direction === ListDirection.Horizontal && !autoWrap,\n };\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n type TemplateRef,\n} from '@angular/core';\nimport {\n ArrowDown,\n ArrowUp,\n Enter,\n InputTagNames,\n LazyLoadThreshold,\n} from '../components-common/List/common/list-const';\nimport {\n ListDirection,\n type ListItemData,\n ListVariant,\n} from '../components-common/List/common/list-types';\nimport {\n type ListAdapter,\n ListFoundation,\n} from '../components-common/List/foundation';\nimport BaseComponent from '../Base/base.component';\n\n@Component({\n selector: 'mc-list',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n})\nexport class ListComponent extends BaseComponent<ListFoundation> {\n // 组件属性\n @Input() direction: ListDirection = ListDirection.Vertical;\n @Input() autoWrap: boolean = true;\n @Input() variant: ListVariant = ListVariant.Transparent;\n @Input() enableLazyLoad: boolean = false;\n @Input() enableShortKey: boolean = false;\n @Input() data: Array<ListItemData> = [];\n @Input() inputEl: HTMLElement;\n @Input() selectable: boolean = true;\n @Input() preSelectIndex: number = this.enableShortKey ? 0 : -1;\n\n @Output() loadMore = new EventEmitter<Event>();\n @Output() select = new EventEmitter<ListItemData>();\n\n // 内容投影模板引用\n @ContentChild('item') itemTemplate: TemplateRef<any> | null = null;\n\n protected readonly ListVariant = ListVariant;\n private listenDom: HTMLElement | Document;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.foundation = new ListFoundation(this.adapter);\n this.foundation.init();\n this.initListenDom();\n this.initListener();\n }\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.removeListener();\n }\n\n override get adapter(): ListAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n direction: this.direction,\n autoWrap: this.autoWrap,\n variant: this.variant,\n enableLazyLoad: this.enableLazyLoad,\n enableShortKey: this.enableShortKey,\n data: this.data,\n inputEl: this.inputEl,\n selectable: this.selectable,\n }),\n };\n }\n\n // 计算属性\n get listClasses(): Record<string, any> {\n return this.foundation.getListClasses();\n }\n\n initListenDom() {\n if (this.inputEl) {\n const el = this.inputEl;\n if (InputTagNames.includes(el.tagName)) {\n this.listenDom = el;\n } else {\n this.listenDom =\n el.querySelector('textarea') || el.querySelector('input') || document;\n }\n } else {\n this.listenDom = document;\n }\n }\n initListener() {\n if (this.enableShortKey) {\n this.listenDom.addEventListener(\n 'keydown',\n this.onKeyDown.bind(this) as any,\n );\n }\n }\n removeListener() {\n this.listenDom.removeEventListener(\n 'keydown',\n this.onKeyDown.bind(this) as any,\n );\n }\n onListScroll(e: Event): void {\n if (!this.enableLazyLoad || this.direction !== ListDirection.Vertical) {\n return;\n }\n const targetEl = e.target as HTMLElement;\n const scrollHeight = targetEl.scrollHeight;\n const clientHeight = targetEl.clientHeight;\n const scrollTop = targetEl.scrollTop;\n\n if (scrollHeight - clientHeight - scrollTop < LazyLoadThreshold) {\n this.loadMore.emit(e);\n }\n }\n onItemClick(clickedItem: ListItemData): void {\n if (clickedItem.disabled) {\n return;\n }\n if (this.selectable) {\n for (let i = 0; i < this.data.length; i++) {\n this.data[i].active = this.data[i].value === clickedItem.value;\n }\n }\n this.select.emit({ ...clickedItem });\n }\n onKeyDown(e: KeyboardEvent) {\n if (e.code === ArrowUp) {\n this.preSelectIndex =\n this.preSelectIndex === 0\n ? this.data.length - 1\n : this.preSelectIndex - 1;\n }\n if (e.code === ArrowDown) {\n this.preSelectIndex =\n this.preSelectIndex === this.data.length - 1\n ? 0\n : this.preSelectIndex + 1;\n }\n if (e.code === Enter) {\n if (this.selectable) {\n this.onItemClick(this.data[this.preSelectIndex]);\n }\n }\n }\n}\n","<div [ngClass]=\"listClasses\" (scroll)=\"onListScroll($event)\">\n <ng-container *ngFor=\"let item of data; let index = index\">\n <ng-container *ngIf=\"variant === ListVariant.None\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"variant !== ListVariant.None\">\n <div\n class=\"mc-list-item\"\n [class]=\"variant\"\n [ngClass]=\"{\n 'mc-list-item-disabled': item.disabled,\n 'mc-list-item-active': item.active,\n 'mc-list-item-pre-selection': index === preSelectIndex\n }\"\n (click)=\"onItemClick(item)\"\n >\n <ng-container *ngIf=\"itemTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\n </ng-container>\n </ng-container>\n\n <ng-template #defaultLabel>\n {{ item['label'] }}\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ListComponent } from './list.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ListComponent],\n exports: [ListComponent],\n})\nexport class ListModule {}\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.maxWidth = '90%';\n svg.style.maxHeight = '90%';\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 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 morphdom from 'morphdom';\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\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 }\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 morphdom(this.codeElementRef.nativeElement, newElement);\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 this.updateHighlightedCode();\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 setTimeout(() => {\n this.foundation.updateHighlightedCode();\n });\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 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 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 stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\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 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 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 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 transform=\"translate(-592.000000, -204.000000)\"\n >\n <g\n transform=\"translate(560.000000, 180.000000)\"\n >\n <text\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 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}\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>', '\\n\\n</div>\\n\\n') || ''\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/**\n * 递归查找所有层级中 className 包含 code-block-wrapper 的 DIV 节点\n * @param {Array} vnodes - 待查找的 vnode 列表\n * @returns {Array} 符合条件的节点列表\n */\nexport function findCodeBlockWrappers(vnodes: any[]): any[] {\n const result: any[] = [];\n\n // 遍历当前层级的 vnode\n vnodes.forEach((node: any) => {\n // 检查当前节点是否符合条件\n if (node.nodeName === 'DIV' && node.className?.includes('code-block-wrapper')) {\n result.push(node);\n }\n\n // 递归处理子节点(如果存在子节点且为数组)\n if (node.childNodes?.length) {\n result.push(...findCodeBlockWrappers(node.childNodes));\n }\n });\n\n return result;\n}\n\n/**\n * 清空Dom节点的所有子节点\n * @param {HTMLElement} element - 需要清空的Dom节点\n * @returns {void}\n */\nexport function clearElementChildren(element: HTMLElement): void {\n if (typeof element.replaceChildren === 'function') {\n element.replaceChildren();\n } else {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n}\n\n// 声明一个utils静态默认导出\nexport default {\n isSelfClosingTag,\n isClosingTag,\n tokensToAst,\n genTreeNode,\n matchHtmlToken,\n isValidTagName,\n findCodeBlockWrappers,\n clearElementChildren,\n}\n","import morphdom from 'morphdom';\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 @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() incrementalDom: boolean = true;\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() mdRenderChange = new EventEmitter<string>();\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\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\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 this.contentChange(changes['content']);\n }\n\n if (changes['customXssRules'] && !changes['customXssRules'].firstChange) {\n this.mdCardService.setCustomXssRules(this.customXssRules || []);\n this.parseContent();\n }\n\n if (\n (changes['enableThink'] && !changes['enableThink'].firstChange) ||\n (changes['thinkOptions'] && !changes['thinkOptions'].firstChange) ||\n (changes['theme'] && !changes['theme'].firstChange)\n ) {\n this.parseContent();\n }\n\n if (changes['mdPlugins'] && !changes['mdPlugins'].firstChange) {\n this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\n this.parseContent();\n }\n }\n\n contentChange(change) {\n if (this.content?.indexOf(change.previousValue) === -1) {\n this.clearCodeBlockCache();\n }\n if (!this.typing) {\n this.typingIndex = this.content?.length || 0;\n this.parseContent();\n } else {\n if (this.content?.indexOf(change.previousValue) === -1) {\n this.typingIndex = 0;\n }\n // 使用setTimeout模拟Vue的nextTick行为\n setTimeout(() => this.typewriterStart());\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.incrementalDom) {\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 = this.parser.findCodeBlockWrappers(vnodes);\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(\n this.getEmptyCodeBlock(node)\n );\n } else {\n newContainerDiv.body.firstChild?.appendChild(node);\n }\n }\n });\n let newContainerDivHTML =\n (newContainerDiv.body?.firstChild as HTMLElement)?.outerHTML || '';\n const filteredHTML = this.mdCardService.filterHtml(newContainerDivHTML);\n\n // 使用morphdom进行DOM更新\n const newElement = document.createElement('div');\n newElement.innerHTML = filteredHTML;\n morphdom(container, filteredHTML, {\n onBeforeElUpdated: (fromEl, toEl) => {\n if (\n fromEl.nodeName === 'DIV' &&\n fromEl.classList.contains('code-block-wrapper') &&\n toEl.nodeName === 'DIV' &&\n toEl.classList.contains('code-block-wrapper') &&\n fromEl.getAttribute('key') === toEl.getAttribute('key') &&\n this.codeBlockComponentsCache.has(fromEl.getAttribute('key') || '')\n ) {\n return false;\n }\n return true;\n },\n });\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 newCodeBlock?.firstChild\n ) {\n MdParserUtils.clearElementChildren(existingElement);\n existingElement.appendChild(newCodeBlock?.firstChild);\n }\n }\n });\n this.mdRenderChange.emit(newContainerDivHTML);\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 clearCodeBlockCache() {\n this.codeBlockComponentsCache.forEach((cachedItem) => {\n cachedItem.componentRef.destroy();\n });\n this.codeBlockComponentsCache.clear();\n }\n\n // 在组件销毁时清理缓存,避免内存泄漏\n override ngOnDestroy(): void {\n this.clearCodeBlockCache();\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}","// Mention组件的公共常量定义\nexport const MentionSeparator = ' ';\nexport const ArrowLeft = 'ArrowLeft';\nexport const ArrowRight = 'ArrowRight';\nexport const ArrowUp = 'ArrowUp';\nexport const ArrowDown = 'ArrowDown';\nexport const Escape = 'Escape';","import { MentionProps, SearchChangeEvent, Trigger } from './common/mention-types';\nimport { MentionSeparator, ArrowLeft, ArrowRight, ArrowUp, ArrowDown, Escape } from './common/mention-constants';\nimport BaseFoundation, { DefaultAdapter } from '../Base/foundation';\nimport { computePosition, offset, autoUpdate } from '@floating-ui/dom';\nimport { debounce, isObject } from 'lodash-es';\n\nexport interface MentionAdapter extends DefaultAdapter {\n updateModelValue: (val: boolean) => void;\n searchChange: (event: SearchChangeEvent) => void;\n activeIndexChange: (index: number) => void;\n toggleChange: (val: boolean) => void;\n}\n\nexport class MentionFoundation extends BaseFoundation<MentionAdapter> {\n private props: MentionProps;\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\n private originEl: HTMLElement | null = null;\n private overlayEl: HTMLElement | null = null;\n private currentTrigger: string = '';\n private currentSearchValue: string = '';\n private currentTriggerIndex: number = -1;\n private currentCursorIndex: number = -1;\n private autoUpdateCleanup: (() => void) | null = null;\n\n constructor(adapter: MentionAdapter) {\n super({ ...adapter });\n this.props = {\n modelValue: false,\n prefix: [],\n fitHostWidth: true,\n optionsCount: 0,\n ...this.getProps()\n };\n \n // 创建防抖版本的handleInput方法\n this.handleInput = debounce(this.handleInput, 300);\n }\n\n // 更新配置选项\n updateOptions(options: Partial<MentionProps>) {\n this.props = { ...this.props, ...options };\n this.updateOverlayPosition();\n }\n\n // 设置输入元素\n setInputEl(el: HTMLInputElement | HTMLTextAreaElement | null) {\n this.inputEl = el;\n }\n\n // 设置原点元素\n setOriginEl(el: HTMLElement | null) {\n this.originEl = el;\n this.updateOverlayPosition();\n }\n\n // 设置覆盖层元素\n setOverlayEl(el: HTMLElement | null) {\n this.overlayEl = el;\n this.updateOverlayPosition();\n }\n\n // 初始化事件\n initEvents() {\n if (this.inputEl) {\n this.inputEl.addEventListener('input', this.handleInput);\n this.inputEl.addEventListener('keydown', this.handleKeyDown as EventListener);\n this.inputEl.addEventListener('click', this.handleClick);\n }\n // 监听文档点击事件,用于处理点击外部关闭下拉菜单\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n // 销毁事件\n override destroy() {\n if (this.inputEl) {\n this.inputEl.removeEventListener('input', this.handleInput);\n this.inputEl.removeEventListener('keydown', this.handleKeyDown as EventListener);\n this.inputEl.removeEventListener('click', this.handleClick);\n }\n // 移除文档点击事件监听\n document.removeEventListener('click', this.handleDocumentClick);\n // 清理autoUpdate\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n this.inputEl = null;\n this.originEl = null;\n this.overlayEl = null;\n }\n\n // 重置Mention状态\n resetMention() {\n this.currentTrigger = '';\n this.currentSearchValue = '';\n this.currentTriggerIndex = -1;\n this.currentCursorIndex = -1;\n this.updateModelValue(false);\n }\n\n // 更新模型值\n private updateModelValue(val: boolean) {\n if (this.props.modelValue !== val) {\n this.props.modelValue = val;\n this._adapter.updateModelValue(val);\n this._adapter.toggleChange(val);\n }\n }\n\n // 处理输入事件\n handleInput = () => {\n if (!this.inputEl) return;\n\n const value = this.inputEl.value;\n const cursorPosition = this.inputEl.selectionStart || 0;\n\n // 检查是否匹配触发词\n const matchResult = this.checkPrefixMatch(value, cursorPosition);\n if (matchResult) {\n const { trigger, triggerIndex, searchValue } = matchResult;\n this.currentTrigger = trigger;\n this.currentSearchValue = searchValue;\n this.currentTriggerIndex = triggerIndex;\n this.currentCursorIndex = cursorPosition;\n\n // 触发搜索变化事件\n this._adapter.searchChange({\n value: searchValue,\n trigger,\n triggerIndex,\n cursorIndex: cursorPosition\n });\n\n // 当有匹配的触发词时,就显示弹窗\n // 这样可以确保在用户输入过程中,弹窗始终显示,直到用户选择了一个选项或者点击了其他地方\n this.updateModelValue(true);\n\n // 这里不再直接调用updateOverlayPosition,而是通过watch modelValue的nextTick来调用,确保overlayEl已渲染完成\n } else {\n // 没有匹配的触发词,关闭选择面板\n this.resetMention();\n }\n };\n\n // 处理键盘事件\n handleKeyDown = (event: KeyboardEvent) => {\n if (!this.inputEl) return;\n\n switch (event.key) {\n case ArrowUp:\n if (this.props.modelValue) {\n event.preventDefault();\n this.handleArrowKey(-1);\n }\n break;\n case ArrowDown:\n if (this.props.modelValue) {\n event.preventDefault();\n this.handleArrowKey(1);\n }\n break;\n case ArrowLeft:\n case ArrowRight:\n // 左右箭头键:延迟检查是否需要触发提及\n setTimeout(() => {\n this.handleInput();\n });\n break;\n case Escape:\n event.preventDefault();\n this.resetMention();\n break;\n case MentionSeparator:\n // 只有在面板打开时才阻止空格的默认行为\n if (this.props.modelValue) {\n this.resetMention();\n }\n break;\n default:\n // 其他按键不做处理\n break;\n }\n };\n\n // 处理点击事件\n private handleClick = () => {\n if (!this.inputEl) return;\n\n // 点击事件触发提及检查\n this.handleInput();\n };\n\n // 处理文档点击事件\n private handleDocumentClick = (e: Event) => {\n if (this.originEl) {\n if (this.props.modelValue) {\n // 如果下拉菜单是打开的,检查点击是否发生在originEl外部\n if (!this.originEl.contains(e.target as HTMLElement)) {\n this.resetMention();\n }\n } else {\n // 如果下拉菜单是关闭的,检查点击是否发生在originEl内部\n if (this.originEl.contains(e.target as HTMLElement)) {\n this.handleInput();\n }\n }\n }\n };\n\n // 检查前缀匹配\n private checkPrefixMatch(value: string, cursorPosition: number): { trigger: string; triggerIndex: number; searchValue: string } | null {\n if (!this.props.prefix || this.props.prefix.length === 0) return null;\n\n const text = value.replace(/[\\r\\n]/g, MentionSeparator);\n const beforeCursor = text.substring(0, cursorPosition);\n\n // 检查所有前缀\n for (const prefixItem of this.props.prefix) {\n let trigger = '';\n let onlyInputStart = false;\n\n if (typeof prefixItem === 'string') {\n trigger = prefixItem;\n } else if (isObject(prefixItem)) {\n trigger = prefixItem.key;\n onlyInputStart = Boolean(prefixItem.onlyInputStart);\n } else {\n continue;\n }\n\n // 查找最后一个触发词的位置\n const triggerIndex = beforeCursor.lastIndexOf(trigger);\n // 查找最后一个分隔符的位置\n const separatorPos = beforeCursor.lastIndexOf(MentionSeparator);\n // 触发词到光标的字符串\n const mentionStr = beforeCursor.substring(triggerIndex, cursorPosition);\n // 提及字符串的最后一个字符\n const lastMentionChar = mentionStr.charAt(mentionStr.length - 1);\n\n // 条件判断:\n // 1. 触发词位置有效\n // 2. 如果设置了onlyInputStart,触发词必须在输入开始处\n // 3. 触发词位置必须在最后一个分隔符之后\n // 4. 提及字符串的最后一个字符不能是分隔符\n if (triggerIndex < 0 || \n (triggerIndex > 0 && onlyInputStart) || \n triggerIndex < separatorPos || \n lastMentionChar === MentionSeparator) {\n continue;\n } else {\n const searchValue = mentionStr.slice(trigger.length);\n return { trigger, triggerIndex, searchValue };\n }\n }\n\n return null;\n }\n\n // 处理箭头键\n private handleArrowKey(direction: number) {\n let newIndex = (this.getCurrentActiveIndex() + direction) % this.props.optionsCount;\n if (newIndex < 0) {\n newIndex = this.props.optionsCount - 1;\n }\n this._adapter.activeIndexChange(newIndex);\n }\n\n // 获取当前活动索引\n private getCurrentActiveIndex(): number {\n // 默认返回0,实际实现可能需要根据adapter获取\n return 0;\n }\n\n // 处理选择事件\n private handleSelect() {\n if (!this.inputEl || this.currentTriggerIndex === -1) return;\n\n const value = this.inputEl.value;\n const beforeTrigger = value.substring(0, this.currentTriggerIndex);\n const afterCursor = value.substring(this.currentCursorIndex);\n\n // 这里需要根据实际选择的项进行替换,暂时使用示例实现\n const selectedValue = `${beforeTrigger}@selected ${afterCursor}`;\n this.inputEl.value = selectedValue;\n\n // 设置光标位置\n const newCursorPosition = beforeTrigger.length + '@selected '.length;\n this.inputEl.setSelectionRange(newCursorPosition, newCursorPosition);\n\n // 关闭选择面板\n this.resetMention();\n\n // 触发input事件以更新绑定值\n this.inputEl.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n // 更新覆盖层位置\n updateOverlayPosition(): Promise<{ top: string; left: string; width: string; } | undefined> {\n return new Promise((resolve) => {\n if (!this.originEl || !this.overlayEl) {\n resolve(undefined);\n return;\n }\n\n // 设置宽度\n if (this.props.fitHostWidth) {\n const originRect = this.originEl.getBoundingClientRect();\n this.overlayEl.style.width = `${originRect.width}px`;\n } else {\n this.overlayEl.style.width = '';\n }\n\n // 清理之前的autoUpdate\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n // 设置位置:使用@floating-ui/dom计算位置,与Vue版本保持一致\n computePosition(this.originEl, this.overlayEl, {\n strategy: 'fixed',\n placement: 'top-start',\n middleware: [offset(4)],\n }).then(({ x, y }) => {\n this.overlayEl!.style.top = `${y}px`;\n this.overlayEl!.style.left = `${x}px`;\n this.overlayEl!.style.position = 'fixed';\n \n // 返回位置信息,用于Vue组件同步样式\n resolve({\n top: `${y}px`,\n left: `${x}px`,\n width: this.props.fitHostWidth ? `${this.originEl!.getBoundingClientRect().width}px` : ''\n });\n \n // 设置autoUpdate,自动处理滚动、调整大小和视口变化事件\n this.autoUpdateCleanup = autoUpdate(\n this.originEl!,\n this.overlayEl!,\n () => {\n if (this.originEl && this.overlayEl) {\n // 当fitHostWidth为true时,更新宽度\n if (this.props.fitHostWidth) {\n const originRect = this.originEl.getBoundingClientRect();\n this.overlayEl.style.width = `${originRect.width}px`;\n }\n \n computePosition(this.originEl, this.overlayEl, {\n strategy: 'fixed',\n placement: 'top-start',\n middleware: [offset(4)],\n }).then(({ x, y }) => {\n this.overlayEl!.style.top = `${y}px`;\n this.overlayEl!.style.left = `${x}px`;\n });\n }\n },\n {\n // 添加对视口变化的更全面监听,确保浏览器F12打开/关闭时位置能正确更新\n animationFrame: true,\n elementResize: true,\n ancestorScroll: true,\n ancestorResize: true,\n layoutShift: true\n }\n ); \n }).catch(() => {\n // 处理计算位置失败的情况\n resolve(undefined);\n });\n });\n }\n\n // 获取当前搜索值\n getCurrentSearchValue(): string {\n return this.currentSearchValue;\n }\n\n // 获取当前触发词\n getCurrentTrigger(): string {\n return this.currentTrigger;\n }\n}","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy, OnInit, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { FormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { SearchChangeEvent, Trigger } from '../components-common/Mention/common/mention-types';\nimport { MentionFoundation } from '../components-common/Mention/foundation';\nimport BaseComponent from '../Base/base.component';\n\n@Component({\n selector: 'mc-mention',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './mention.component.html',\n styleUrls: ['./mention.component.scss'],\n animations: [\n trigger('fade', [\n transition(':enter', [\n style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }),\n animate('0.2s cubic-bezier(0.16, 0.75, 0.5, 1)', style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }))\n ]),\n transition(':leave', [\n style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }),\n animate('0.2s cubic-bezier(0.5, 0, 0.84, 0.25)', style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }))\n ])\n ])\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MentionComponent),\n multi: true\n }\n ]\n})\nexport class MentionComponent extends BaseComponent<MentionFoundation> implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() prefix: Array<string | Trigger> = ['@'];\n @Input() fitHostWidth: boolean = true;\n @Input() menuClass?: string;\n // 选项数量,用于键盘导航\n private _optionsCount: number = 0;\n \n @Input()\n set optionsCount(val: number) {\n this._optionsCount = val;\n // 当optionsCount变化时,更新foundation的配置\n if (this.foundation) {\n this.foundation.updateOptions({ optionsCount: val });\n }\n }\n \n get optionsCount(): number {\n return this._optionsCount;\n }\n\n @Output() updateModelValue = new EventEmitter<boolean>();\n @Output() searchChange = new EventEmitter<SearchChangeEvent>();\n @Output() toggleChange = new EventEmitter<boolean>();\n // 当前选中索引变化事件\n @Output() activeIndexChange = new EventEmitter<number>();\n\n // 当前选中的索引\n activeIndex: number = -1;\n\n @ViewChild('popperTrigger') popperTriggerEl!: ElementRef;\n @ViewChild('origin') originEl!: ElementRef;\n @ViewChild('overlayEl') overlayEl!: ElementRef;\n\n overlayStyle: { top: string; left: string; width: string } = { top: '0px', left: '0px', width: '' };\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\n \n constructor() { \n super(); \n }\n\n ngOnInit() {\n this.foundation = new MentionFoundation(this.adapter);\n }\n\n override get adapter(): any {\n return {\n ...super.adapter,\n updateModelValue: (val: boolean) => {\n // 调用modelValue的setter方法,确保位置更新逻辑被执行\n this.modelValue = val;\n },\n searchChange: (event: SearchChangeEvent) => this.searchChange.emit(event),\n activeIndexChange: (index: number) => {\n this.activeIndex = index;\n this.activeIndexChange.emit(index);\n },\n toggleChange: (val: boolean) => this.toggleChange.emit(val)\n };\n }\n\n ngAfterViewInit() {\n // 添加安全检查 - 仅检查必要元素,overlayEl有*ngIf条件可能不会立即渲染\n if (!this.popperTriggerEl || !this.originEl) {\n console.error('ViewChild elements not found');\n return;\n }\n\n const hostElement = this.popperTriggerEl.nativeElement;\n let foundInputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\n\n // 检查hostElement本身是否是输入元素\n if (hostElement.tagName === 'TEXTAREA' || hostElement.tagName === 'INPUT') {\n foundInputEl = hostElement;\n } else {\n // 先查找mc-input组件\n const mcInputComponent = hostElement.querySelector('mc-input');\n if (mcInputComponent) {\n // 如果找到mc-input组件,查找其内部的textarea元素\n foundInputEl = mcInputComponent.querySelector('textarea');\n } else {\n // 否则在hostElement内部查找原生输入元素\n foundInputEl = hostElement.querySelector('textarea') || hostElement.querySelector('input');\n }\n }\n\n if (!foundInputEl) {\n console.error('Input/Textarea element not found in Mention component');\n return;\n }\n\n // 初始化foundation的元素\n this.inputEl = foundInputEl;\n this.foundation.setInputEl(this.inputEl);\n this.foundation.setOriginEl(this.originEl.nativeElement);\n // 仅在overlayEl存在时设置,否则Foundation会在需要时处理\n if (this.overlayEl) {\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\n }\n // 初始化事件\n this.foundation.initEvents();\n }\n\n override ngOnDestroy() { // 清理文档点击事件\n this.cleanupDocumentClick();\n // 清理Foundation资源\n this.foundation.destroy();\n super.ngOnDestroy();\n }\n\n // 监听modelValue变化,更新overlay位置\n @Input()\n set modelValue(val: boolean) {\n if (this._modelValue !== val) {\n this._modelValue = val;\n // 当显示Mention面板时,确保overlay元素已传递给foundation并更新位置\n if (val && this.foundation) {\n // 使用setTimeout确保overlayEl已经渲染完成\n setTimeout(() => {\n // 检查overlayEl是否可用,如果可用则传递给foundation\n if (this.overlayEl) {\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\n // 获取位置信息并更新组件样式\n const positionInfo = this.foundation.updateOverlayPosition();\n if (positionInfo instanceof Promise) {\n positionInfo.then(pos => {\n if (pos) {\n this.overlayStyle = pos;\n }\n });\n } else if (positionInfo) {\n this.overlayStyle = positionInfo;\n }\n }\n }, 0);\n }\n // 调用onChange回调,支持ngModel双向绑定\n this.onChange(val);\n // 仍然触发updateModelValue事件,保持向后兼容\n this.updateModelValue.emit(val);\n }\n }\n\n get modelValue(): boolean {\n return this._modelValue;\n }\n\n // 私有属性存储实际的modelValue\n private _modelValue: boolean = false;\n\n // ControlValueAccessor 接口实现\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.modelValue = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // 如果需要禁用功能,可以在这里实现\n }\n\n // 初始化文档点击事件(已在ngAfterViewInit中处理,无需重复)\n ngAfterContentInit() {\n }\n\n // 清理文档点击事件\n private cleanupDocumentClick() {\n document.removeEventListener('click', this.onDocumentClick);\n }\n\n // 处理文档点击事件,点击外部关闭Mention面板\n private onDocumentClick = (e: Event) => {\n if (this.originEl && this.originEl.nativeElement && this.modelValue) {\n if (!this.originEl.nativeElement.contains(e.target as HTMLElement)) {\n this.foundation.resetMention();\n }\n }\n };\n}","<!-- Mention组件的模板 -->\n\n<!-- 触发器元素 -->\n<div #popperTrigger #origin class=\"mc-mention-trigger\">\n <ng-content></ng-content>\n</div>\n\n<!-- 提及菜单的弹出层 -->\n<div \n #overlayEl \n *ngIf=\"modelValue\" \n [@fade]\n class=\"mc-mention mc-mention-fade\" \n [ngClass]=\"menuClass\" \n [ngStyle]=\"overlayStyle\"\n>\n <ng-content select=\"[slot=menu]\"></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MentionComponent } from './mention.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n MentionComponent\n ],\n exports: [MentionComponent],\n})\nexport class MentionModule {}","// Mention组件的导出文件\nexport * from './mention.component';\nexport * from './mention.module';","export function copyToClipboard(text: any) {\n if (typeof text !== 'string') {\n return Promise.reject();\n }\n\n // 现代浏览器优先使用 Clipboard API\n if (navigator.clipboard && window.isSecureContext) {\n return navigator.clipboard\n .writeText(text)\n .then(() => {})\n .catch((err) => {\n return fallbackCopyTextToClipboard(text); // 降级处理\n });\n }\n\n // 低版本浏览器直接使用降级方案\n return fallbackCopyTextToClipboard(text);\n}\n\nexport function fallbackCopyTextToClipboard(text: string) {\n return new Promise((resolve, reject) => {\n // 创建隐藏的 textarea 元素\n const textarea = document.createElement('textarea');\n textarea.value = text;\n\n // 样式:隐藏且不影响布局\n textarea.style.position = 'fixed';\n textarea.style.top = '-9999px';\n textarea.style.left = '-9999px';\n textarea.style.opacity = '0';\n textarea.style.zIndex = '-1000';\n\n // 解决 iOS 下无法选中的问题\n textarea.setAttribute('readonly', '');\n\n document.body.appendChild(textarea);\n\n try {\n // 选中内容(兼容 iOS)\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length); // 移动端必须\n\n // 执行复制\n const success = document.execCommand('copy');\n if (success) {\n resolve(null);\n } else {\n reject();\n }\n } catch (err) {\n reject();\n } finally {\n // 移除临时元素\n document.body.removeChild(textarea);\n }\n });\n}\n","export const TOOLBAR_GAP_DEFAULT_VALUE = 0;\nexport const TOOLBAR_ICON_SIZE_DEFAULT_VALUE = 16;\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { copyToClipboard } from '../../components-common/Toolbar/common/toolbar-common-fun';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-copy-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './copy-icon.component.html',\n styleUrls: ['./copy-icon.component.scss'],\n})\nexport class CopyIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() text: string = '';\n @Input() title: string = '';\n\n copied = false;\n\n async handleClick() {\n setTimeout(() => {\n this.copied = false;\n }, 1500);\n try {\n await copyToClipboard(this.text);\n this.copied = true;\n } catch (error) {}\n }\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n *ngIf=\"copied\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 <desc>Created with Sketch.</desc>\n <defs>\n <polygon id=\"path-1\" 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\"></polygon>\n </defs>\n <g id=\"status/whiteBG/correct\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlink:href=\"#path-1\"></use>\n </mask>\n <use id=\"Mask\" fill=\"currentColor\" xlink:href=\"#path-1\"></use>\n </g>\n </svg>\n <svg\n *ngIf=\"!copied\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 (click)=\"handleClick()\"\n >\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"API-starter-图标入库\" transform=\"translate(-592.000000, -204.000000)\">\n <g id=\"方格备份-16\" transform=\"translate(560.000000, 180.000000)\">\n <text id=\"图标\" font-family=\"PingFangSC-Regular, PingFang SC\" font-size=\"12\" font-weight=\"normal\" line-spacing=\"16\" fill=\"#71757F\">\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=\"currentColor\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-delete-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './delete-icon.component.html',\n styleUrls: ['./delete-icon.component.scss'],\n})\nexport class DeleteIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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=\"codehub-delete-op\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <path\n d=\"M12.5,5 C12.7761424,5 13,5.22385763 13,5.5 L13,13 C13,14.0543618 12.1841222,14.9181651 11.1492623,14.9945143 L11,15 L5,15 C3.9456382,15 3.08183488,14.1841222 3.00548574,13.1492623 L3,13 L3,5.5 C3,5.22385763 3.22385763,5 3.5,5 C3.77614237,5 4,5.22385763 4,5.5 L4,13 C4,13.5128358 4.38604019,13.9355072 4.88337887,13.9932723 L5,14 L11,14 C11.5128358,14 11.9355072,13.6139598 11.9932723,13.1166211 L12,13 L12,5.5 C12,5.22385763 12.2238576,5 12.5,5 Z M6.53333333,6 C6.79515721,6 7.0129156,6.17687516 7.05807395,6.41012437 L7.06666667,6.5 L7.06666667,11.5 C7.06666667,11.7761424 6.8278852,12 6.53333333,12 C6.27150945,12 6.05375107,11.8231248 6.00859271,11.5898756 L6,11.5 L6,6.5 C6,6.22385763 6.23878147,6 6.53333333,6 Z M9.53333333,6 C9.79515721,6 10.0129156,6.17687516 10.058074,6.41012437 L10.0666667,6.5 L10.0666667,11.5 C10.0666667,11.7761424 9.8278852,12 9.53333333,12 C9.27150945,12 9.05375107,11.8231248 9.00859271,11.5898756 L9,11.5 L9,6.5 C9,6.22385763 9.23878147,6 9.53333333,6 Z M10,1 C10.5128358,1 10.9355072,1.38604019 10.9932723,1.88337887 L11,2 L11,3 L14.5,3 C14.7761424,3 15,3.22385763 15,3.5 C15,3.77614237 14.7761424,4 14.5,4 L1.5,4 C1.22385763,4 1,3.77614237 1,3.5 C1,3.22385763 1.22385763,3 1.5,3 L5,3 L5,2 C5,1.48716416 5.38604019,1.06449284 5.88337887,1.00672773 L6,1 L10,1 Z M10,2 L6,2 L6,3 L10,3 L10,2 Z\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n type OnChanges,\n Output,\n type SimpleChanges,\n} from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-dislike-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dislike-icon.component.html',\n styleUrls: ['./dislike-icon.component.scss'],\n})\nexport class DislikeIconComponent implements OnChanges {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n\n @Output() activeChange = new EventEmitter<boolean>();\n\n active = this.isActive;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isActive']) {\n this.active = changes['isActive'].currentValue;\n }\n }\n\n handleClick(): void {\n this.active = !this.active;\n this.activeChange.emit(this.active);\n }\n}\n","<div\n class=\"mc-action-item\"\n [title]=\"title\"\n [class.mc-action-item-active]=\"active\"\n (click)=\"handleClick()\"\n>\n <svg\n *ngIf=\"active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 <path\n id=\"矢量 1\"\n d=\"M2.60156 1C1.76611 1 1.08008 1.63953 1.00659 2.45581L1 2.60156L1 8.06506C1 8.90039 1.63965 9.58643 2.45581 9.66003L2.60156 9.66663L3.16675 9.66644C3.44287 9.66644 3.6665 9.4425 3.6665 9.16644L3.6665 1.5C3.6665 1.22388 3.44263 1 3.1665 1L2.60156 1ZM5.6665 1L11.552 1L11.7861 1.00342C13.2422 1.04712 14.1792 1.50781 14.4907 2.44861C14.8108 3.41553 15.1758 5.00916 15.2917 6.29297L15.3098 6.51453L15.3308 6.92529L15.3345 7.12988C15.3438 8.74133 14.8638 9.74072 13.6501 9.74072L9.55591 9.74194L9.60107 9.88098C10.02 11.2178 10.1855 12.2474 10.0869 12.9923C9.89819 14.4197 8.75317 15.6334 7.67651 15.2727L7.55713 15.2261C7.11279 14.9865 6.85327 14.5331 6.70117 13.6534L6.54492 12.7217L6.4978 12.5065L6.43872 12.2728C6.37622 12.0485 6.30347 11.8517 6.21558 11.6747C5.91675 11.0725 5.51904 10.535 5.021 10.0604C4.8042 9.85382 4.6665 9.57355 4.6665 9.27405L4.6665 2C4.6665 1.44769 5.11426 1 5.6665 1Z\"\n fill-rule=\"evenodd\"\n fill=\"currentColor\"\n />\n </svg>\n <svg\n *ngIf=\"!active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 id=\"Dislike\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M11.55205,1 C13.14165,1 14.16285,1.458308 14.49075,2.448728 C14.81075,3.415528 15.17575,5.009158 15.29175,6.292968 L15.29175,6.292968 L15.30985,6.514648 L15.33085,6.925358 C15.38255,8.656368 14.91455,9.740718 13.65015,9.740718 L13.65015,9.740718 L9.55591,9.741028 L9.60108,9.881038 C10.02005,11.217788 10.18555,12.247488 10.08695,12.992388 C9.89815,14.419688 8.75318,15.633388 7.67652,15.272788 L7.67652,15.272788 L7.55713,15.226188 C7.03589,14.992888 6.86426,14.595988 6.70117,13.653488 L6.70117,13.653488 L6.54492,12.721688 L6.4978,12.506488 C6.4231,12.182088 6.33277,11.910688 6.21558,11.674688 C5.8313,10.900988 5.28443,10.233788 4.57056,9.670048 L4.57056,9.670048 L2.60156,9.670288 C1.71704,9.670288 1,8.953248 1,8.068728 L1,8.068728 L1,2.605228 C1,1.720708 1.71704,1.003601 2.60156,1.003601 L2.60156,1.003601 L4.83325,1 Z M11.55205,1.999998 L5.33301,1.999998 L5.33301,9.002988 L5.41699,9.071468 C6.13672,9.686458 6.70239,10.406788 7.11109,11.230088 C7.23584,11.480988 7.33399,11.750888 7.4148,12.050988 L7.50098,12.409088 L7.56079,12.715988 L7.69336,13.519388 C7.69946,13.553388 7.70557,13.586088 7.71167,13.617588 L7.76441,13.867488 C7.83374,14.157988 7.8982,14.283188 7.96558,14.313488 C8.30152,14.463788 8.97461,13.775988 9.09571,12.861188 C9.17749,12.243388 9.00025,11.240388 8.55029,9.880678 C8.51196,9.764348 8.49854,9.641728 8.51099,9.520328 C8.55908,9.045288 8.98218,8.699098 9.45679,8.742858 L13.65015,8.740718 C14.18895,8.740718 14.43655,7.941288 14.29595,6.382938 C14.18755,5.183288 13.83915,3.662168 13.54155,2.762938 L13.50585,2.674618 C13.30125,2.245118 12.68435,1.999998 11.55205,1.999998 Z M4.33277,2.003598 L2.60156,2.003598 C2.26929,2.003598 2,2.272948 2,2.605228 L2,2.605228 L2,8.068668 L2.00781,8.166258 C2.05445,8.452148 2.30249,8.670288 2.60156,8.670288 L2.60156,8.670288 L4.33277,8.670598 L4.33277,2.003598 Z\"\n id=\"形状结合\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n type OnChanges,\n Output,\n type SimpleChanges,\n} from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-like-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './like-icon.component.html',\n styleUrls: ['./like-icon.component.scss'],\n})\nexport class LikeIconComponent implements OnChanges {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n\n @Output() activeChange = new EventEmitter<boolean>();\n\n active = this.isActive;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isActive']) {\n this.active = changes['isActive'].currentValue;\n }\n }\n\n handleClick(): void {\n this.active = !this.active;\n this.activeChange.emit(this.active);\n }\n}\n","<div\n class=\"mc-action-item\"\n [title]=\"title\"\n [class.mc-action-item-active]=\"active\"\n (click)=\"handleClick()\"\n>\n <svg\n *ngIf=\"active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 <desc>Created with Sketch.</desc>\n <path\n id=\"矢量 1\"\n d=\"M2.60156 15.3369C1.76611 15.3369 1.08008 14.6974 1.00659 13.8811L1 13.7354L1 8.27185C1 7.43652 1.63965 6.75049 2.45581 6.67688L2.60156 6.67029L3.16675 6.67047C3.44287 6.67047 3.6665 6.89441 3.6665 7.17047L3.6665 14.8369C3.6665 15.113 3.44263 15.3369 3.1665 15.3369L2.60156 15.3369ZM5.6665 15.3369L11.552 15.3369L11.7861 15.3335C13.2422 15.2898 14.1792 14.8291 14.4907 13.8883C14.8108 12.9214 15.1758 11.3278 15.2917 10.0439L15.3098 9.82239L15.3308 9.41162L15.3345 9.20703C15.3438 7.59558 14.8638 6.59619 13.6501 6.59619L9.55591 6.59497L9.60107 6.45593C10.02 5.11914 10.1855 4.08948 10.0869 3.3446C9.89819 1.91724 8.75317 0.703491 7.67651 1.06421L7.55713 1.11084C7.11279 1.35046 6.85327 1.80383 6.70117 2.68347L6.54492 3.61523L6.4978 3.83044L6.43872 4.06409C6.37622 4.28845 6.30347 4.48523 6.21558 4.66223C5.91675 5.2644 5.51904 5.80194 5.021 6.27649C4.8042 6.48309 4.6665 6.76337 4.6665 7.06287L4.6665 14.3369C4.6665 14.8892 5.11426 15.3369 5.6665 15.3369Z\"\n fill-rule=\"evenodd\"\n fill=\"currentColor\"\n />\n </svg>\n <svg\n *ngIf=\"!active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M11.55205,1 C13.14165,1 14.16285,1.458308 14.49075,2.448728 C14.81075,3.415528 15.17575,5.009158 15.29175,6.292968 L15.29175,6.292968 L15.30985,6.514648 L15.33085,6.925358 C15.38255,8.656368 14.91455,9.740718 13.65015,9.740718 L13.65015,9.740718 L9.55591,9.741028 L9.60108,9.881038 C10.02005,11.217788 10.18555,12.247488 10.08695,12.992388 C9.89815,14.419688 8.75318,15.633388 7.67652,15.272788 L7.67652,15.272788 L7.55713,15.226188 C7.03589,14.992888 6.86426,14.595988 6.70117,13.653488 L6.70117,13.653488 L6.54492,12.721688 L6.4978,12.506488 C6.4231,12.182088 6.33277,11.910688 6.21558,11.674688 C5.8313,10.900988 5.28443,10.233788 4.57056,9.670048 L4.57056,9.670048 L2.60156,9.670288 C1.71704,9.670288 1,8.953248 1,8.068728 L1,8.068728 L1,2.605228 C1,1.720708 1.71704,1.003601 2.60156,1.003601 L2.60156,1.003601 L4.83325,1 Z M11.55205,1.999998 L5.33301,1.999998 L5.33301,9.002988 L5.41699,9.071468 L5.6796615,9.30702243 C6.27568484,9.86814941 6.7534775,10.5097005 7.11109,11.230088 C7.23584,11.480988 7.33399,11.750888 7.4148,12.050988 L7.4148,12.050988 L7.50098,12.409088 L7.56079,12.715988 L7.69336,13.519388 L7.702515,13.5694255 L7.702515,13.5694255 L7.71167,13.617588 L7.76441,13.867488 L7.79384741,13.9820728 C7.85221673,14.1918227 7.90782571,14.2875166 7.96558,14.313488 C8.30152,14.463788 8.97461,13.775988 9.09571,12.861188 C9.17749,12.243388 9.00025,11.240388 8.55029,9.880678 C8.51196,9.764348 8.49854,9.641728 8.51099,9.520328 C8.55908,9.045288 8.98218,8.699098 9.45679,8.742858 L9.45679,8.742858 L13.65015,8.740718 L13.7287739,8.73472734 C14.2127395,8.6588777 14.42952,7.8633705 14.29595,6.382938 C14.18755,5.183288 13.83915,3.662168 13.54155,2.762938 L13.54155,2.762938 L13.50585,2.674618 L13.4594021,2.5911944 C13.216706,2.21352476 12.6088633,1.999998 11.55205,1.999998 L11.55205,1.999998 Z M4.33277,2.003598 L2.60156,2.003598 C2.26929,2.003598 2,2.272948 2,2.605228 L2,2.605228 L2,8.068668 L2.00781,8.166258 C2.05445,8.452148 2.30249,8.670288 2.60156,8.670288 L2.60156,8.670288 L4.33277,8.670598 L4.33277,2.003598 Z\"\n id=\"dislike\"\n fill=\"currentColor\"\n transform=\"translate(8.167337, 8.168474) scale(-1, 1) rotate(-180.000000) translate(-8.167337, -8.168474) \"\n ></path>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-refresh-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './refresh-icon.component.html',\n styleUrls: ['./refresh-icon.component.scss'],\n})\nexport class RefreshIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n >\n <g id=\"Re-generate\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M12.7143179,3.28587475 C13.981136,4.55339434 14.6666667,6.24406622 14.6666667,7.99999694 L14.6661599,8.02257215 C14.6655102,8.03703705 14.6642357,8.05147912 14.6623363,8.06585443 L14.6666667,7.99999694 C14.6666667,8.0371769 14.6626086,8.07340903 14.6549111,8.10827457 C14.6517992,8.1222052 14.6480389,8.13632563 14.6436512,8.15029154 C14.6390061,8.1651613 14.6336213,8.17980434 14.6275902,8.19410809 C14.6231995,8.20453649 14.6185439,8.21463293 14.613534,8.22459678 C14.6049463,8.24162018 14.5952425,8.2583947 14.5846307,8.27451859 C14.5792264,8.282804 14.5735765,8.29085725 14.5676615,8.2987751 C14.5571418,8.31280391 14.5460319,8.32617172 14.5342667,8.33892584 C14.5300122,8.343554 14.5251791,8.34859129 14.5202201,8.35355033 L14.5076464,8.36569453 C14.4940828,8.37834683 14.4798146,8.39025348 14.4649071,8.4013492 L14.5202201,8.35355033 C14.4937641,8.38000631 14.465081,8.40287777 14.4347743,8.42216473 C14.4224394,8.42996083 14.4098046,8.43724836 14.3968374,8.44398448 C14.3832773,8.45105337 14.3694473,8.45743098 14.3554103,8.46314429 C14.3412925,8.46891455 14.3266036,8.47413114 14.3116174,8.47866321 C14.2992824,8.48234275 14.2871467,8.4855024 14.2749295,8.48819956 C14.2606866,8.49139588 14.2459756,8.4939711 14.2310588,8.49588898 C14.2147923,8.49795142 14.1986607,8.49923861 14.1825093,8.49974745 L14.1666667,8.49999694 L14.1666667,8.49999694 L14.1394006,8.49925755 C14.1253117,8.49849283 14.1112491,8.49713493 14.0972533,8.49518384 L14.1666667,8.49999694 C14.1273209,8.49999694 14.0890366,8.49545228 14.05231,8.48685924 C14.0384692,8.48357481 14.0248075,8.47976105 14.0112962,8.4753569 C13.9958192,8.47034085 13.9804276,8.46445184 13.9654221,8.45784679 C13.9544183,8.45302561 13.9434536,8.44772707 13.9326545,8.4420051 C13.9165024,8.43339464 13.9009385,8.4240044 13.8859565,8.41382189 C13.8807017,8.41031248 13.8749119,8.40620635 13.8691922,8.40196243 L13.8550466,8.39103641 C13.8474863,8.38500359 13.8401047,8.3787561 13.8329113,8.37230316 L13.8131133,8.35355033 L12.6151133,7.15555033 C12.4198511,6.96028819 12.4198511,6.6437057 12.6151133,6.44844355 C12.7926243,6.27093251 13.0704001,6.25479514 13.2661411,6.40003145 L13.3222201,6.44844355 L13.498767,6.62598997 C13.2544588,5.64420827 12.7478288,4.73400934 12.0071133,3.99288367 C9.79437542,1.78014581 6.20562458,1.78014581 3.99288672,3.99288367 C1.78014071,6.20562968 1.78014071,9.79375159 3.99288672,12.0071102 C6.20562458,14.2198481 9.79437542,14.2198481 12.0071133,12.0071102 C12.2023754,11.8118481 12.5189579,11.8118481 12.7142201,12.0071102 C12.9094822,12.2023724 12.9094822,12.5189549 12.7142201,12.714217 C10.1109579,15.3174791 5.88904209,15.3174791 3.28573101,12.7141681 C0.682525952,10.1102423 0.682525952,5.88903088 3.28577994,3.28577688 C5.88904209,0.682514739 10.1109579,0.682514739 12.7143179,3.28587475 Z\"\n id=\"形状结合\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-share-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './share-icon.component.html',\n styleUrls: ['./share-icon.component.scss'],\n})\nexport class ShareIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n >\n <desc>Created with Sketch.</desc>\n <g id=\"释义图标/分享\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"分享\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M6.3804718,9.82599637 C5.83206631,10.5398588 4.96976903,11 4,11 C2.34314575,11 1,9.65685425 1,8 C1,6.34314575 2.34314575,5 4,5 C4.96976903,5 5.83206631,5.46014123 6.3804718,6.17400363 L10.1006387,4.20450353 C10.0351367,3.98105658 10,3.7446316 10,3.5 C10,2.11928813 11.1192881,1 12.5,1 C13.8807119,1 15,2.11928813 15,3.5 C15,4.88071187 13.8807119,6 12.5,6 C11.7223166,6 11.0275695,5.64490757 10.5690501,5.08801416 L6.84895235,7.0574777 C6.94695785,7.35387727 7,7.67074431 7,8 C7,8.32925569 6.94695785,8.64612273 6.84895235,8.9425223 L10.5690501,10.9119858 C11.0275695,10.3550924 11.7223166,10 12.5,10 C13.8807119,10 15,11.1192881 15,12.5 C15,13.8807119 13.8807119,15 12.5,15 C11.1192881,15 10,13.8807119 10,12.5 C10,12.2553684 10.0351367,12.0189434 10.1006387,11.7954965 L6.3804718,9.82599637 L6.3804718,9.82599637 Z M4,10 C5.1045695,10 6,9.1045695 6,8 C6,6.8954305 5.1045695,6 4,6 C2.8954305,6 2,6.8954305 2,8 C2,9.1045695 2.8954305,10 4,10 Z M12.5,14 C13.3284271,14 14,13.3284271 14,12.5 C14,11.6715729 13.3284271,11 12.5,11 C11.6715729,11 11,11.6715729 11,12.5 C11,13.3284271 11.6715729,14 12.5,14 Z M12.5,5 C13.3284271,5 14,4.32842712 14,3.5 C14,2.67157288 13.3284271,2 12.5,2 C11.6715729,2 11,2.67157288 11,3.5 C11,4.32842712 11.6715729,5 12.5,5 Z\" id=\"形状\"/>\n </g>\n </g>\n </svg>\n</div>\n","export enum ToolbarAction {\n COPY = 'copy',\n LIKE = 'like',\n DISLIKE = 'dislike',\n REFRESH = 'refresh',\n SHARE = 'share',\n DELETE = 'delete',\n}\n\nexport interface ActionItem {\n key: string; // 唯一标识\n icon?: ToolbarAction; // icon部分名称\n label?: string; // 操作项title\n onClick?: (actionItem: ActionItem, e: MouseEvent) => void; // 点击事件\n isActive?: boolean; // 是否激活状态,点赞点踩用\n text?: string; // 需要复制的文本\n}\n","import { CommonModule } from '@angular/common';\nimport {\n type AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n type OnInit,\n Output,\n type QueryList,\n TemplateRef,\n} from '@angular/core';\nimport {\n type ActionItem,\n ToolbarAction,\n} from '../components-common/Toolbar/common/toolbar.types';\nimport {\n TOOLBAR_GAP_DEFAULT_VALUE,\n TOOLBAR_ICON_SIZE_DEFAULT_VALUE,\n} from '../components-common/Toolbar/common/toolbar-constants';\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\nimport { LikeIconComponent } from './like-icon/like-icon.component';\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\nimport { ShareIconComponent } from './share-icon/share-icon.component';\n\n@Component({\n selector: 'mc-toolbar',\n templateUrl: './toolbar.component.html',\n standalone: true,\n imports: [\n CommonModule,\n CopyIconComponent,\n DeleteIconComponent,\n RefreshIconComponent,\n ShareIconComponent,\n LikeIconComponent,\n DislikeIconComponent,\n ],\n styleUrls: ['./toolbar.component.scss'],\n})\nexport class ToolbarComponent implements OnInit, AfterContentInit {\n // 输入属性\n @Input() items: ActionItem[] = [];\n @Input() gap = TOOLBAR_GAP_DEFAULT_VALUE; // 默认间距\n @Input() iconSize = TOOLBAR_ICON_SIZE_DEFAULT_VALUE; // 默认图标大小\n\n // 输出事件\n @Output() onClick = new EventEmitter<{\n item: ActionItem;\n event: MouseEvent;\n }>();\n\n // 关键:获取所有投影进来的 ng-template 模板(包含变量名)\n @ContentChildren(TemplateRef, { read: TemplateRef })\n private allTemplates!: QueryList<TemplateRef<any>>;\n // 用户自定义插槽映射\n CustomSlotComponent = {};\n\n // 响应式操作项(深拷贝避免修改原数据)\n actionItems: ActionItem[] = [];\n\n ToolbarAction = ToolbarAction;\n\n constructor() {}\n\n ngOnInit(): void {\n // 深拷贝输入的items\n this.actionItems = this.items?.map((item) => ({ ...item }));\n // 初始化点赞/点踩互斥\n this.init();\n }\n\n ngAfterContentInit(): void {\n // 初始化阶段:解析所有模板的变量名,构建映射关系\n this.allTemplates.forEach((template: any) => {\n // 通过模板的 nativeElement 获取其变量名(#xxx 中的 xxx)\n const templateName = template._declarationTContainer?.localNames?.[0];\n if (templateName) {\n this.CustomSlotComponent[templateName] = template;\n }\n });\n console.log('ngAfterContentInit', this.CustomSlotComponent);\n }\n\n trackByKey(index: number, item: ActionItem) {\n return item.key;\n }\n\n /** 初始化:确保点赞和点踩不同时激活 */\n private init(): void {\n const likeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.LIKE,\n );\n const dislikeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.DISLIKE,\n );\n\n if (likeAction?.isActive && dislikeAction) {\n dislikeAction.isActive = false;\n }\n }\n\n /** 点赞点击处理:取消点踩状态 */\n private handleLikeClick(): void {\n const dislikeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.DISLIKE,\n );\n if (dislikeAction) {\n dislikeAction.isActive = false;\n }\n }\n\n /** 点踩点击处理:取消点赞状态 */\n private handleDislikeClick(): void {\n const likeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.LIKE,\n );\n if (likeAction) {\n likeAction.isActive = false;\n }\n }\n\n /** 操作项点击事件 */\n actionClick(event: MouseEvent, actionItem: ActionItem): void {\n // 处理点赞/点踩互斥\n if (actionItem.icon === ToolbarAction.LIKE) {\n this.handleLikeClick();\n } else if (actionItem.icon === ToolbarAction.DISLIKE) {\n this.handleDislikeClick();\n }\n console.log('actionClick', event, actionItem);\n\n // 执行item自身的点击回调\n if (actionItem.onClick) {\n actionItem.onClick(actionItem, event);\n }\n\n // 触发组件输出事件\n this.onClick.emit({ item: actionItem, event });\n }\n\n /** 激活状态变更 */\n activeChange(isActive: boolean, actionItem: ActionItem): void {\n actionItem.isActive = isActive;\n }\n}\n","<div class=\"mc-actions\" [style.gap.px]=\"gap\">\n <!-- 遍历操作项 -->\n <ng-container *ngFor=\"let item of actionItems; trackBy: trackByKey\">\n <!-- 整个操作项自定义 -->\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key]\"></ng-container>\n\n <ng-container *ngIf=\"!CustomSlotComponent[item.key]\">\n <!-- 只自定义Icon部分 -->\n <div\n *ngIf=\"CustomSlotComponent[item.key + 'Icon']\"\n class=\"mc-action-item\"\n [title]=\"item.label\"\n (click)=\"actionClick($event, item)\"\n >\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key + 'Icon']; context: { actionData: item }\"></ng-container>\n </div>\n\n <!-- 完全使用内置组件情况 -->\n <mc-copy-icon\n *ngIf=\"item.icon === ToolbarAction.COPY\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [text]=\"item.text ?? ''\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-copy-icon>\n <mc-delete-icon\n *ngIf=\"item.icon === ToolbarAction.DELETE\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-delete-icon>\n <mc-refresh-icon\n *ngIf=\"item.icon === ToolbarAction.REFRESH\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-refresh-icon>\n <mc-share-icon\n *ngIf=\"item.icon === ToolbarAction.SHARE\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-share-icon>\n <mc-like-icon\n *ngIf=\"item.icon === ToolbarAction.LIKE\"\n [isActive]=\"item.isActive ?? false\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (activeChange)=\"activeChange($event, item)\"\n (click)=\"actionClick($event, item)\"\n ></mc-like-icon>\n <mc-dislike-icon\n *ngIf=\"item.icon === ToolbarAction.DISLIKE\"\n [isActive]=\"item.isActive ?? false\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (activeChange)=\"activeChange($event, item)\"\n (click)=\"actionClick($event, item)\"\n ></mc-dislike-icon>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// 导入所有图标组件\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\nimport { LikeIconComponent } from './like-icon/like-icon.component';\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\nimport { ShareIconComponent } from './share-icon/share-icon.component';\nimport { ToolbarComponent } from './toolbar.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n ToolbarComponent,\n CopyIconComponent,\n DeleteIconComponent,\n RefreshIconComponent,\n ShareIconComponent,\n LikeIconComponent,\n DislikeIconComponent,\n ],\n exports: [\n ToolbarComponent,\n CopyIconComponent,\n DeleteIconComponent,\n RefreshIconComponent,\n ShareIconComponent,\n LikeIconComponent,\n DislikeIconComponent,\n ],\n})\nexport class ToolbarModule {}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\n\nexport interface PromptAdapter extends DefaultAdapter {}\n\nexport class PromptFoundation extends BaseFoundation<PromptAdapter> {\n constructor(adapter: PromptAdapter) {\n super({ ...adapter });\n }\n}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\n\nexport interface PromptItemAdapter extends DefaultAdapter {}\n\nexport class PromptItemFoundation extends BaseFoundation<PromptItemAdapter> {\n constructor(adapter: PromptItemAdapter) {\n super({ ...adapter });\n }\n}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\n\nexport interface PromptIconAdapter extends DefaultAdapter {}\n\nexport class PromptIconFoundation extends BaseFoundation<PromptIconAdapter> {\n constructor(adapter: PromptIconAdapter) {\n super({ ...adapter });\n }\n\n getIconSize(): string {\n const { size } = this.getProps();\n return typeof size === 'number' ? `${size}px` : size;\n }\n getFontIconClass(): string {\n const { name } = this.getProps();\n return /^icon-/.test(name) ? name : '';\n }\n getIsComponent(): boolean {\n const { component } = this.getProps();\n return !!component;\n }\n getIsUrl(): boolean {\n const { name } = this.getProps();\n return /^((http|https):)?\\/\\//.test(name);\n }\n getImageAlt(): string {\n const { name } = this.getProps();\n return name.split('/').pop() || '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\nimport BaseComponent from '../../Base/base.component';\nimport {\n type PromptIconAdapter,\n PromptIconFoundation,\n} from '../../components-common/Prompt/icon-foundation';\n\n@Component({\n selector: 'mc-prompt-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './prompt-icon.component.html',\n styleUrls: ['./prompt-icon.component.scss'],\n})\nexport class PromptIconComponent extends BaseComponent<PromptIconFoundation> {\n @Input() name: string = '';\n @Input() color: string | undefined = '';\n @Input() size: number | string | undefined = '';\n @Input() component?: any;\n\n @ViewChild('dynamicIconComponent', { read: ViewContainerRef })\n iconComponent!: ViewContainerRef;\n\n override get adapter(): PromptIconAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n name: this.name,\n color: this.color,\n size: this.size,\n component: this.component,\n }),\n };\n }\n get iconSize() {\n return this.foundation.getIconSize();\n }\n get fontIconClass() {\n return this.foundation.getFontIconClass();\n }\n get isComponent() {\n return this.foundation.getIsComponent();\n }\n get isUrl() {\n return this.foundation.getIsUrl();\n }\n get imageAlt() {\n return this.foundation.getImageAlt();\n }\n ngOnInit() {\n this.foundation = new PromptIconFoundation(this.adapter);\n this.foundation.init();\n }\n ngAfterViewInit() {\n this.loadIconComponent();\n }\n loadIconComponent() {\n if (!this.isComponent) {\n return;\n }\n this.iconComponent.createComponent(this.component);\n }\n}\n","<div class=\"mc-prompt-icon\">\n <ng-container *ngIf=\"isComponent\" #dynamicIconComponent>\n </ng-container>\n \n <img\n *ngIf=\"!isComponent && isUrl\"\n [src]=\"name\"\n [alt]=\"imageAlt\"\n [style]=\"{ width: iconSize || '', verticalAlign: 'middle' }\"\n />\n \n <i\n *ngIf=\"!isComponent && !isUrl\"\n [class]=\"fontIconClass\"\n [style.fontSize]=\"iconSize\"\n [style.color]=\"color\"\n ></i>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport BaseComponent from '../../Base/base.component';\nimport type { Prompt } from '../../components-common/Prompt/common/prompt-types';\nimport {\n type PromptItemAdapter,\n PromptItemFoundation,\n} from '../../components-common/Prompt/item-foundation';\nimport { PromptIconComponent } from '../prompt-icon/prompt-icon.component';\n\n@Component({\n selector: 'mc-prompt-item',\n standalone: true,\n imports: [CommonModule, PromptIconComponent],\n templateUrl: './prompt-item.component.html',\n styleUrls: ['./prompt-item.component.scss'],\n})\nexport class PromptItemComponent extends BaseComponent<PromptItemFoundation> {\n // 组件属性\n @Input() prompt: Prompt = {} as Prompt;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.foundation = new PromptItemFoundation(this.adapter);\n this.foundation.init();\n }\n\n override get adapter(): PromptItemAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n prompt: this.prompt,\n }),\n };\n }\n}\n","<div *ngIf=\"prompt\" class=\"mc-prompt-item\">\n <div class=\"mc-prompt-item-icon\" [ngClass]=\"{ 'no-description': !prompt.desc }\">\n <mc-prompt-icon\n *ngIf=\"prompt.iconConfig\"\n [name]=\"prompt.iconConfig.name\"\n [color]=\"prompt.iconConfig.color\"\n [size]=\"prompt.iconConfig.size\"\n [component]=\"prompt.iconConfig.component\"\n />\n </div>\n <div *ngIf=\"prompt.label || prompt.desc\" class=\"mc-prompt-item-content\">\n <div *ngIf=\"prompt.label\" class=\"mc-prompt-item-label\">{{ prompt.label }}</div>\n <div *ngIf=\"prompt.desc\" class=\"mc-prompt-item-description\">{{ prompt.desc }}</div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport BaseComponent from '../Base/base.component';\nimport type { Prompt } from '../components-common/Prompt/common/prompt-types';\nimport {\n type PromptAdapter,\n PromptFoundation,\n} from '../components-common/Prompt/foundation';\nimport { ListDirection, ListModule, ListVariant } from '../List/index';\nimport { PromptItemComponent } from './prompt-item/prompt-item.component';\n\n@Component({\n selector: 'mc-prompt',\n standalone: true,\n imports: [CommonModule, ListModule, PromptItemComponent],\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n})\nexport class PromptComponent extends BaseComponent<PromptFoundation> {\n // 组件属性\n @Input() direction: ListDirection = ListDirection.Vertical;\n @Input() list: Prompt[] = [];\n @Input() variant: ListVariant = ListVariant.Filled;\n\n @Output() itemClick = new EventEmitter<Prompt>();\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.foundation = new PromptFoundation(this.adapter);\n this.foundation.init();\n }\n\n override get adapter(): PromptAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n direction: this.direction,\n list: this.list,\n variant: this.variant,\n }),\n };\n }\n\n handleItemClick(item: Prompt) {\n this.itemClick.emit(item);\n }\n}\n","<div class=\"mc-prompt\">\n <mc-list [data]=\"list\" [direction]=\"direction\" [variant]=\"variant\" [selectable]=\"false\">\n <ng-template #item let-item>\n <mc-prompt-item\n [prompt]=\"item\"\n (click)=\"handleItemClick(item)\"\n ></mc-prompt-item>\n </ng-template>\n </mc-list>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PromptComponent } from './prompt.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, PromptComponent],\n exports: [PromptComponent],\n})\nexport class PromptModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-aside',\n standalone: true,\n templateUrl: './aside.component.html',\n styleUrls: ['./aside.component.scss']\n})\nexport class LayoutAsideComponent {\n\n}","<div class=\"mc-layout-aside\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutAsideComponent } from './aside.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutAsideComponent,\n ],\n exports: [\n LayoutAsideComponent,\n ]\n})\nexport class LayoutAsideModule { }","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-content',\n standalone: true,\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss']\n})\nexport class LayoutContentComponent {\n\n}","<div class=\"mc-layout-content\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutContentComponent } from './content.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutContentComponent,\n ],\n exports: [\n LayoutContentComponent,\n ]\n})\nexport class LayoutContentModule { }","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-header',\n standalone: true,\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class LayoutHeaderComponent {\n\n}","<div class=\"mc-layout-header\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutHeaderComponent } from './header.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutHeaderComponent,\n ],\n exports: [\n LayoutHeaderComponent,\n ]\n})\nexport class LayoutHeaderModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout',\n standalone: true,\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\nexport class LayoutComponent {\n\n}","<div class=\"mc-layout\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutComponent } from './layout.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutComponent,\n ],\n exports: [\n LayoutComponent,\n ]\n})\nexport class LayoutModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-sender',\n standalone: true,\n templateUrl: './sender.component.html',\n styleUrls: ['./sender.component.scss']\n})\nexport class LayoutSenderComponent {\n\n}","<div class=\"mc-layout-sender\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutSenderComponent } from './sender.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutSenderComponent,\n ],\n exports: [\n LayoutSenderComponent,\n ]\n})\nexport class LayoutSenderModule { }\n","/*\n * Public API Surface of components-ng\n */\n\nexport * from './Attachment/index';\nexport * from './Bubble/index';\nexport * from './Header/index';\nexport * from './Input/index';\nexport * from './Introduction/index';\nexport * from './List/index';\nexport * from './Locale/index';\nexport * from './MarkdownCard/index';\nexport * from './Mention/index';\nexport * from './Toolbar/index';\nexport * from './Prompt/index';\nexport * from './Layout/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocaleService","i2","ArrowUp","ArrowDown","i2.TranslatePipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"matechat-ng.mjs","sources":["../../../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/components-common/Attachment/common/uploader.ts","../../../projects/components-ng/src/Attachment/drop-area/drop-area.component.ts","../../../projects/components-ng/src/Attachment/drop-area/drop-area.component.html","../../../projects/components-ng/src/Attachment/attachment.component.ts","../../../projects/components-ng/src/Attachment/attachment.component.html","../../../projects/components-ng/src/Attachment/attachment.module.ts","../../../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/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/Header/header.component.ts","../../../projects/components-ng/src/Header/header.component.html","../../../projects/components-ng/src/Header/header.module.ts","../../../projects/components-ng/src/components-common/Input/common/types.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/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/components-common/Input/common/util.ts","../../../projects/components-ng/src/Input/InputTag/input-tag.component.ts","../../../projects/components-ng/src/Input/InputTag/input-tag.component.html","../../../projects/components-ng/src/Input/EditableBlock/editable-block.component.ts","../../../projects/components-ng/src/Input/EditableBlock/editable-block.component.html","../../../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/Introduction/foundation.ts","../../../projects/components-ng/src/Introduction/introduction.component.ts","../../../projects/components-ng/src/Introduction/introduction.component.html","../../../projects/components-ng/src/Introduction/introduction.module.ts","../../../projects/components-ng/src/components-common/List/common/list-types.ts","../../../projects/components-ng/src/components-common/List/common/list-const.ts","../../../projects/components-ng/src/components-common/List/foundation.ts","../../../projects/components-ng/src/List/list.component.ts","../../../projects/components-ng/src/List/list.component.html","../../../projects/components-ng/src/List/list.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/components-common/Mention/common/mention-constants.ts","../../../projects/components-ng/src/components-common/Mention/foundation.ts","../../../projects/components-ng/src/Mention/mention.component.ts","../../../projects/components-ng/src/Mention/mention.component.html","../../../projects/components-ng/src/Mention/mention.module.ts","../../../projects/components-ng/src/Mention/index.ts","../../../projects/components-ng/src/components-common/Toolbar/common/toolbar-common-fun.ts","../../../projects/components-ng/src/components-common/Toolbar/common/toolbar-constants.ts","../../../projects/components-ng/src/Toolbar/copy-icon/copy-icon.component.ts","../../../projects/components-ng/src/Toolbar/copy-icon/copy-icon.component.html","../../../projects/components-ng/src/Toolbar/delete-icon/delete-icon.component.ts","../../../projects/components-ng/src/Toolbar/delete-icon/delete-icon.component.html","../../../projects/components-ng/src/Toolbar/dislike-icon/dislike-icon.component.ts","../../../projects/components-ng/src/Toolbar/dislike-icon/dislike-icon.component.html","../../../projects/components-ng/src/Toolbar/like-icon/like-icon.component.ts","../../../projects/components-ng/src/Toolbar/like-icon/like-icon.component.html","../../../projects/components-ng/src/Toolbar/refresh-icon/refresh-icon.component.ts","../../../projects/components-ng/src/Toolbar/refresh-icon/refresh-icon.component.html","../../../projects/components-ng/src/Toolbar/share-icon/share-icon.component.ts","../../../projects/components-ng/src/Toolbar/share-icon/share-icon.component.html","../../../projects/components-ng/src/components-common/Toolbar/common/toolbar.types.ts","../../../projects/components-ng/src/Toolbar/toolbar.component.ts","../../../projects/components-ng/src/Toolbar/toolbar.component.html","../../../projects/components-ng/src/Toolbar/toolbar.module.ts","../../../projects/components-ng/src/components-common/Prompt/foundation.ts","../../../projects/components-ng/src/components-common/Prompt/item-foundation.ts","../../../projects/components-ng/src/components-common/Prompt/icon-foundation.ts","../../../projects/components-ng/src/Prompt/prompt-icon/prompt-icon.component.ts","../../../projects/components-ng/src/Prompt/prompt-icon/prompt-icon.component.html","../../../projects/components-ng/src/Prompt/prompt-item/prompt-item.component.ts","../../../projects/components-ng/src/Prompt/prompt-item/prompt-item.component.html","../../../projects/components-ng/src/Prompt/prompt.component.ts","../../../projects/components-ng/src/Prompt/prompt.component.html","../../../projects/components-ng/src/Prompt/prompt.module.ts","../../../projects/components-ng/src/Layout/aside/aside.component.ts","../../../projects/components-ng/src/Layout/aside/aside.component.html","../../../projects/components-ng/src/Layout/aside/aside.module.ts","../../../projects/components-ng/src/Layout/content/content.component.ts","../../../projects/components-ng/src/Layout/content/content.component.html","../../../projects/components-ng/src/Layout/content/content.module.ts","../../../projects/components-ng/src/Layout/header/header.component.ts","../../../projects/components-ng/src/Layout/header/header.component.html","../../../projects/components-ng/src/Layout/header/header.module.ts","../../../projects/components-ng/src/Layout/layout/layout.component.ts","../../../projects/components-ng/src/Layout/layout/layout.component.html","../../../projects/components-ng/src/Layout/layout/layout.module.ts","../../../projects/components-ng/src/Layout/sender/sender.component.ts","../../../projects/components-ng/src/Layout/sender/sender.component.html","../../../projects/components-ng/src/Layout/sender/sender.module.ts","../../../projects/components-ng/src/public-api.ts","../../../projects/components-ng/src/matechat-ng.ts"],"sourcesContent":["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 Attachment: {\n dragToUpload: \"拖拽到此处上传\",\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 Attachment: {\n dragToUpload: 'Drag to upload',\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 type { FileItem, UploadOptions } from './attachment-types';\n\ninterface UploaderOptions {\n file: File;\n fileItem: FileItem;\n options: UploadOptions;\n onProgress: (percentage: number) => void;\n onSuccess: (response: unknown) => void;\n onError: (error: unknown) => void;\n}\n\nexport function upload(config: UploaderOptions): void {\n const { file, options, onProgress, onSuccess, onError } = config;\n\n const xhr = new XMLHttpRequest();\n\n // 进度回调\n xhr.upload.onprogress = (e: ProgressEvent) => {\n if (e.lengthComputable) {\n const percentage = Math.round((e.loaded * 100) / e.total);\n onProgress(percentage);\n }\n };\n\n // 错误处理\n xhr.onerror = () => {\n onError({\n message: 'Upload failed due to a network error.',\n status: xhr.status,\n statusText: xhr.statusText,\n });\n };\n\n // 响应处理\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n const response =\n options.responseType === 'text' || !xhr.response\n ? xhr.responseText\n : xhr.response;\n onSuccess(response);\n } else {\n onError({\n message: `Upload failed with status: ${xhr.status}`,\n status: xhr.status,\n statusText: xhr.statusText,\n response: xhr.response,\n });\n }\n };\n\n // 准备 FormData\n const formData = new FormData();\n const fileFieldName = options.fileFieldName || 'file';\n formData.append(fileFieldName, file, file.name);\n\n if (options.additionalParameter) {\n for (const key of Object.keys(options.additionalParameter)) {\n formData.append(key, options.additionalParameter[key]);\n }\n }\n\n // 打开请求\n xhr.open(options.method || 'POST', options.uri, true);\n\n // 设置 withCredentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // 设置 responseType\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // 设置 Headers\n if (options.headers) {\n for (const key of Object.keys(options.headers)) {\n xhr.setRequestHeader(key, options.headers[key]);\n }\n }\n\n // 设置认证 Token\n if (options.authToken) {\n const authTokenHeader = options.authTokenHeader || 'Authorization';\n xhr.setRequestHeader(authTokenHeader, options.authToken);\n }\n\n // 发送请求\n xhr.send(formData);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ViewChild,\n ElementRef,\n AfterViewInit,\n Input,\n OnDestroy,\n Output,\n EventEmitter,\n SimpleChanges,\n Renderer2,\n ChangeDetectorRef,\n} from '@angular/core';\n\n@Component({\n selector: 'mc-drop-area',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './drop-area.component.html',\n styleUrls: ['./drop-area.component.scss'],\n})\nexport class DropAreaComponent implements AfterViewInit, OnDestroy {\n @Input() getDropContainer: () => HTMLElement;\n @Input() isDisabled: boolean = false;\n @Output() drop = new EventEmitter<File[]>();\n\n @ViewChild('dropArea') dropAreaEl!: ElementRef<HTMLDivElement>;\n\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef){}\n\n container: HTMLElement;\n isDragging = false;\n // 使用计数器来跟踪 dragenter 和 dragleave 事件,防止进入子元素导致的状态变化\n dragCounter = 0;\n dragEnterListener: () => void;\n dragOverListener: () => void;\n dragLeaveListener: () => void;\n dropListener: () => void;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['getDropContainer'] && this.getDropContainer) {\n const newContainer = this.getDropContainer();\n if (this.container !== newContainer) {\n this.container = newContainer;\n }\n }\n }\n\n handleDragEnter = (e: DragEvent) => {\n e.preventDefault();\n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.isDragging = true;\n this.cdr.detectChanges();\n }\n if (this.container && this.dropAreaEl.nativeElement) {\n if (this.container === document.body) {\n this.dropAreaEl.nativeElement.style.inset = '0';\n } else {\n const { x, y, width, height } = this.container.getBoundingClientRect();\n this.dropAreaEl.nativeElement.style.width = `${width}px`;\n this.dropAreaEl.nativeElement.style.height = `${height}px`;\n this.dropAreaEl.nativeElement.style.top = `${y}px`;\n this.dropAreaEl.nativeElement.style.left = `${x}px`;\n }\n }\n };\n handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n\n handleDragLeave = (e: DragEvent) => {\n e.preventDefault();\n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.isDragging = false;\n this.cdr.detectChanges();\n }\n };\n handleDrop = (e: DragEvent) => {\n e.preventDefault();\n this.isDragging = false;\n this.cdr.detectChanges();\n this.dragCounter = 0; // 重置计数器\n if (this.isDisabled) return;\n\n const files = Array.from(e.dataTransfer?.files || []);\n if (files.length > 0) {\n this.drop.emit(files);\n }\n };\n onBodyDrop = (e: DragEvent) => {\n e.preventDefault();\n this.isDragging = false;\n this.cdr.detectChanges();\n this.dragCounter = 0;\n };\n\n ngAfterViewInit(): void {\n this.renderer.appendChild(document.body, this.dropAreaEl.nativeElement);\n if (this.getDropContainer) {\n this.container = this.getDropContainer();\n }\n this.dragEnterListener = this.renderer.listen(document.body, 'dragenter', this.handleDragEnter);\n this.dragOverListener = this.renderer.listen(document.body, 'dragover', this.handleDragOver);\n this.dragLeaveListener = this.renderer.listen(document.body, 'dragleave', this.handleDragLeave);\n this.dropListener = this.renderer.listen(document.body, 'drop', this.onBodyDrop);\n }\n\n ngOnDestroy(): void {\n this.dragEnterListener?.();\n this.dragOverListener?.();\n this.dragLeaveListener?.();\n this.dropListener?.();\n }\n}\n","<div\n #dropArea\n [ngClass]=\"{\n 'mc-attachment-drop-area': true,\n 'hide-drop-area': !isDragging,\n }\"\n (drop)=\"handleDrop($event)\"\n>\n <ng-content />\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n ContentChild,\n TemplateRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '../Locale/translate.pipe';\nimport type {\n UploadOptions,\n BeforeUpload,\n ChangeEventArg,\n SuccessEventArg,\n ErrorEventArg,\n ProgressEventArg,\n IValidResult,\n FileItem,\n} from './attachment-types';\nimport { upload } from '../components-common/Attachment/common/uploader';\nimport { DropAreaComponent } from './drop-area/drop-area.component';\n\n@Component({\n selector: 'mc-attachment',\n standalone: true,\n imports: [CommonModule, TranslatePipe, DropAreaComponent],\n templateUrl: './attachment.component.html',\n styleUrls: ['./attachment.component.scss'],\n})\nexport class AttachmentComponent {\n @Input() uploadOptions: UploadOptions = { uri: '' };\n @Input() disabled: boolean = false;\n @Input() accept: string = '';\n @Input() dropPlaceholder: string | undefined;\n @Input() maxCount: number = Number.POSITIVE_INFINITY;\n @Input() maxSize: number = Number.POSITIVE_INFINITY;\n @Input() multiple: boolean = true;\n @Input() draggable: boolean = true;\n @Input() beforeUpload: BeforeUpload;\n @Input() getDropContainer: () => HTMLElement;\n\n @Output() change = new EventEmitter<ChangeEventArg>();\n @Output() success = new EventEmitter<SuccessEventArg>();\n @Output() error = new EventEmitter<ErrorEventArg>();\n @Output() progress = new EventEmitter<ProgressEventArg>();\n @Output() drop = new EventEmitter<File[]>();\n @Output() validChange = new EventEmitter<IValidResult[]>();\n\n @ContentChild('dropPlaceholder')\n dropPlaceholderTemplate: TemplateRef<any> | null = null;\n\n @ViewChild('input') inputEl!: ElementRef<HTMLInputElement>;\n\n fileList: FileItem[] = [];\n uid = Date.now();\n\n get isDisabled() {\n return this.disabled || this.fileList.length >= this.maxCount;\n }\n\n onDrop(e: File[]) {\n this.uploadFiles(e);\n this.drop.emit(e);\n }\n\n getFileItem = (file: File): FileItem => {\n const localUrl = URL.createObjectURL(file);\n return {\n uid: this.uid++,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'uploading',\n percentage: 0,\n url: localUrl,\n thumbUrl: localUrl,\n };\n };\n\n uploadFiles = async (files: File[]) => {\n if (files.length === 0) return;\n\n // 检查文件数量限制\n if (this.fileList.length + files.length > this.maxCount) {\n this.validChange.emit([{ type: 'exceedCount' }]);\n return;\n }\n\n const validFiles: File[] = [];\n const validRes: IValidResult[] = [];\n\n // 2. 遍历并校验每个文件\n for (const file of files) {\n let isFileValid = true;\n\n // 2.1 文件类型校验\n if (this.accept && this.accept !== '*') {\n const acceptedTypes = this.accept\n .split(',')\n .map((t) => t.trim().toLowerCase());\n const fileType = file.type.toLowerCase();\n const fileName = file.name.toLowerCase();\n const isTypeValid = acceptedTypes.some((type) => {\n if (type.endsWith('/*'))\n return fileType.startsWith(type.slice(0, -1));\n if (type.startsWith('.')) return fileName.endsWith(type);\n return fileType === type;\n });\n\n if (!isTypeValid) {\n validRes.push({ type: 'unsupportedFileType', file });\n isFileValid = false;\n }\n }\n\n // 2.2 文件大小校验\n if (isFileValid && file.size / 1024 / 1024 > this.maxSize) {\n validRes.push({ type: 'exceedSizeLimit', file });\n isFileValid = false;\n }\n\n // 2.3 上传前钩子校验\n if (isFileValid && this.beforeUpload) {\n try {\n const result = await Promise.resolve(this.beforeUpload(file));\n if (result === false) {\n validRes.push({ type: 'beforeUploadRejected', file });\n isFileValid = false;\n }\n } catch (e) {\n validRes.push({ type: 'beforeUploadRejected', file });\n isFileValid = false;\n }\n }\n\n if (isFileValid) {\n validFiles.push(file);\n }\n }\n\n if (validRes.length > 0) {\n this.validChange.emit(validRes);\n }\n\n // 只处理通过所有校验的有效文件\n if (validFiles.length === 0) return;\n\n for (const file of validFiles) {\n const fileItem = this.getFileItem(file);\n this.fileList.push(fileItem);\n this.change.emit({ file, fileList: [...this.fileList] });\n this.performUpload(file, fileItem);\n }\n };\n\n // 执行上传\n performUpload = (file: File, fileItem: FileItem) => {\n const findFileIndex = () =>\n this.fileList.findIndex((item) => item.uid === fileItem.uid);\n\n upload({\n file,\n fileItem,\n options: this.uploadOptions,\n onProgress: (percentage: number) => {\n const index = findFileIndex();\n if (index > -1) {\n this.fileList[index].percentage = percentage;\n this.progress.emit({ file, fileList: [...this.fileList] });\n }\n },\n onSuccess: (response: unknown) => {\n const index = findFileIndex();\n if (index > -1) {\n this.fileList[index].status = 'success';\n this.fileList[index].response = response;\n this.success.emit({ file, response, fileList: [...this.fileList] });\n }\n },\n onError: (error: unknown) => {\n const index = findFileIndex();\n if (index > -1) {\n this.fileList[index].status = 'uploadError';\n this.fileList[index].error = error;\n this.error.emit({ file, error, fileList: [...this.fileList] });\n }\n },\n });\n };\n\n handleFileChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files;\n if (files) {\n this.uploadFiles(Array.from(files));\n }\n };\n\n handleClick() {\n if (this.isDisabled) {\n return;\n }\n this.inputEl.nativeElement.click();\n }\n}\n","<div\n class=\"mc-attachment\"\n (click)=\"handleClick()\"\n [ngClass]=\"{ 'is-disabled': isDisabled }\"\n>\n <ng-content></ng-content>\n <input\n #input\n type=\"file\"\n class=\"mc-attachment-file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"isDisabled\"\n (change)=\"handleFileChange($event)\"\n />\n <mc-drop-area\n *ngIf=\"draggable\"\n [getDropContainer]=\"getDropContainer\"\n [isDisabled]=\"isDisabled\"\n (drop)=\"onDrop($event)\"\n >\n <ng-container *ngIf=\"dropPlaceholderTemplate; else defaultFooterButton\">\n <ng-container\n *ngIf=\"dropPlaceholderTemplate; then dropPlaceholderTemplate\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultFooterButton>\n {{ dropPlaceholder ?? (\"Attachment.dragToUpload\" | translate) }}\n </ng-template>\n </mc-drop-area>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AttachmentComponent } from './attachment.component';\nimport { DropAreaComponent } from './drop-area/drop-area.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, DropAreaComponent, AttachmentComponent],\n exports: [AttachmentComponent],\n})\nexport class AttachmentModule {}\n","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>","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 { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'mc-header',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent {\n @Input() logoImg: string = '';\n @Input() title: string = '';\n @Input() logoClickable: boolean = false;\n\n @Output() logoClicked = new EventEmitter<void>();\n\n onLogoClicked(): void {\n if (this.logoClickable) {\n this.logoClicked.emit();\n }\n }\n}\n","<div class=\"mc-header\">\n <div class=\"mc-header-logo-container\" [class]=\"{ clickable: logoClickable }\" (click)=\"onLogoClicked()\">\n <img *ngIf=\"logoImg\" class=\"mc-header-logo\" [src]=\"logoImg\" [alt]=\"logoImg\" />\n <div class=\"mc-header-title\">{{ title }}</div>\n </div>\n <div class=\"mc-header-operation\">\n <ng-content select=\"[operationArea]\"></ng-content>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HeaderComponent } from './header.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, HeaderComponent],\n exports: [HeaderComponent],\n})\nexport class HeaderModule {}\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}\n\nexport interface ThemeTagItem {\n type: 'themeTag';\n themeTagKey?: string; // 主题标签的唯一标识\n themeTagText: string; // 主题标签的文本内容\n clearInput?: boolean; // 关闭主题标签时是否清空对应输入框内容\n popoverContent: string; // 主题标签的pop弹出提示内容\n}\n\nexport interface TipTagOption {\n tipTagKey?: string; // 前置提示标签的唯一标识\n tipTagText: string; // 前置提示标签的文本内容\n clearInput?: boolean; // 关闭前置标签时是否清空对应输入框内容\n popoverContent: string; // 前置提示标签的pop弹出提示内容\n}\n\nexport interface FormatTextItem {\n type: 'text';\n key: string; // 标签的唯一标识\n content: string; \n}\n\nexport interface FormatInputItem {\n type: 'input';\n key: string; // 标签的唯一标识\n placeholder?: string; // input标签的占位提示内容\n content?: string; // input标签的默认展示内容,与placeholder需保证有其一\n}\n\nexport type FormatContentItem = FormatTextItem | FormatInputItem | ThemeTagItem;\nexport interface FormatContentOptions {\n formatContent: FormatContentItem[]; // 当前仅支持最多设置一个ThemeTag,且必须放在数组的第一个位置\n}\n\nexport const TimeToViewRender = 50;","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","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, { type 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","export function insertText(text: string) {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n const textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.setStartAfter(textNode);\n range.setEndAfter(textNode);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n}\n\n\nexport const handlePaste = (e: any) => {\n e.preventDefault();\n const text = e.clipboardData?.getData(\"text/plain\") ||'';\n const sanitizedText = text.replace(/[\\r\\n]+/g, ' ');\n if (sanitizedText) {\n insertText(sanitizedText);\n }\n}\n\n// 使光标移动到文案末尾\nexport const moveCursorToTextEnd = (inputWarp: HTMLElement) => {\n if (inputWarp) {\n const range = document.createRange();\n const selection = window.getSelection();\n range.selectNodeContents(inputWarp);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n}\n\n","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport BaseComponent from '../../Base/base.component';\nimport { LocaleService } from '../../Locale';\n\nimport { handlePaste } from '../../components-common/Input/common/util';\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\n\n\n@Component({\n selector: 'mc-input-tag',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './input-tag.component.html',\n styleUrls: ['./input-tag.component.scss'],\n})export class InputTagComponent extends BaseComponent<InputTagFoundation> {\n @Input() disabled: boolean = false;\n @Input() content: string = '';\n @Input() placeholder: string = '';\n @Output() change = new EventEmitter<string>();\n @ViewChild('editableSpanRef') editableSpanRef!: ElementRef<HTMLSpanElement>;\n \n isEditable: boolean = false;\n localValue: string = this.content;\n\n constructor(private localeService: LocaleService) { super(); }\n \n ngOnChanges(changes: SimpleChanges) {\n if (changes['content']) {\n this.localValue = changes['content'].currentValue;\n }\n }\n\n handleFocus() {\n this.isEditable = !this.disabled;\n }\n\n handleBlur() {\n this.isEditable = false;\n }\n\n handleInput(e: any) {\n const prompt = this.editableSpanRef?.nativeElement.textContent || '';\n this.localValue = prompt;\n this.change.emit(prompt);\n }\n\n handleInputPaste(e: any) {\n handlePaste(e);\n this.handleInput(e);\n }\n}","<span class=\"editable-span\" contenteditable=\"false\">\n <span \n #editableSpanRef\n [attr.contenteditable]=\"isEditable\"\n [attr.placeholder]=\"placeholder\"\n tabindex=\"0\"\n class=\"input-custom-item\"\n [ngClass]=\"{'input-custom-placeholder': !localValue?.length, 'inline-text': localValue?.length}\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (paste)=\"handleInputPaste($event)\"\n >{{content}}</span>\n</span>","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges, ContentChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport BaseComponent from '../../Base/base.component';\nimport { LocaleService } from '../../Locale';\n\nimport { handlePaste, insertText, moveCursorToTextEnd } from '../../components-common/Input/common/util';\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\nimport { InputTagComponent } from '../InputTag/input-tag.component';\nimport { DisplayType, FormatContentItem, SubmitShortKey, ThemeTagItem, TimeToViewRender } from '../../components-common/Input/common/types';\n// import { PopoverModule } from 'ng-devui/popover';\n\n@Component({\n selector: 'mc-editable-block',\n standalone: true,\n imports: [CommonModule, InputTagComponent],\n templateUrl: './editable-block.component.html',\n styleUrls: ['./editable-block.component.scss'],\n})export class EditableBlockComponent extends BaseComponent<InputTagFoundation> {\n\n themeTag: ThemeTagItem = {\n themeTagText: '',\n clearInput: false,\n popoverContent: '',\n type: 'themeTag',\n };\n \n @Input() disabled: boolean = false;\n @Input() displayType: DisplayType = DisplayType.Full;\n @Input() placeholder: string = '';\n\n @Input() templateParts: any[] = [];\n @Input() maxLength: number | null = 2000;\n @Input() submitShortKey: SubmitShortKey | null | string =\n SubmitShortKey.Enter;\n @Input() autofocus: boolean = false;\n\n @Output() send = new EventEmitter<string>();\n @Output() input = new EventEmitter<string>();\n @Output() blur = new EventEmitter<FocusEvent>();\n @Output() focus = new EventEmitter<FocusEvent>();\n @Output() onBlockKeyArrowUp = new EventEmitter<KeyboardEvent>();\n @ViewChild('editableDivRef') editableDivRef!: ElementRef<HTMLDivElement>;\n @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\n localTemplateParts: any = [...this.templateParts];\n\n constructor(private localeService: LocaleService) { super(); }\n \n ngOnChanges(changes: SimpleChanges) {\n if (changes['templateParts']) {\n this.localTemplateParts = [...changes['templateParts'].currentValue];\n }\n }\n\n ngOnInit() {\n if (this.autofocus && this.editableDivRef?.nativeElement && !this.disabled) {\n this.onFocusInput();\n }\n }\n\n clearInput() {\n const inputWarp = this.editableDivRef?.nativeElement;\n if (inputWarp) {\n inputWarp.innerHTML = '';\n this.handleDivInput();\n }\n }\n\n getInput(){\n return this.getCurrentInputValue();\n }\n\n handleSend() {\n const prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\n if (this.maxLength && prompt.length > this.maxLength) {\n return;\n }\n this.send.emit(prompt);\n this.clearInput();\n }\n\n focusInput() {\n this.editableDivRef?.nativeElement.focus();\n moveCursorToTextEnd(this.editableDivRef?.nativeElement);\n }\n\n onFocus($event: FocusEvent) {\n this.focus.emit($event);\n }\n onBlur($event: FocusEvent) {\n this.blur.emit($event);\n }\n\n isComposing: boolean = false;\n\n handleCompositionEnd($event: CompositionEvent) {\n this.isComposing = false;\n this.handleDivInput();\n }\n handleCompositionStart($event: CompositionEvent) {\n this.isComposing = true;\n }\n handleDivPaste(e: any) {\n e.preventDefault();\n const text = (e.originalEvent || e).clipboardData?.getData('text/plain');\n insertText(text);\n this.handleDivInput();\n }\n handleDivKeydown(e: KeyboardEvent) {\n const shiftKey = this.submitShortKey === SubmitShortKey.Enter ? !e.shiftKey : this.submitShortKey === SubmitShortKey.ShiftEnter ? e.shiftKey : false;\n if (e.key === 'Enter' && shiftKey) {\n e.preventDefault();\n this.handleSend();\n }\n if(['ArrowLeft', 'ArrowRight','Backspace','Delete'].includes(e.key)){\n const selection = window.getSelection();\n if (!selection?.rangeCount || !selection.isCollapsed) {\n return\n }\n\n const range = selection.getRangeAt(0);\n const { startContainer: node, startOffset} = range;\n const direction = e.key === 'ArrowLeft' || e.key === 'Backspace' ? 'previous': 'next';\n const targetNode: any = this.findSiblingNode(node, startOffset, direction);\n if(targetNode && targetNode.nodeType === Node.ELEMENT_NODE){\n const editSpanDom = targetNode.querySelector('.input-custom-item');\n if(!editSpanDom){\n return;\n }\n e.preventDefault();\n editSpanDom.contentEditable = 'true';\n if(e.key === 'ArrowLeft' || e.key === 'ArrowRight'){\n const newRange = document.createRange();\n\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }else if(e.key === 'Backspace' || e.key === 'Delete'){\n if(editSpanDom.textContent.trim()){\n const newRange = document.createRange();\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n\n }else{\n targetNode.remove();\n }\n }\n }\n }\n if(e.key === 'ArrowUp'){\n this.isCursorAtStart() ? this.onBlockKeyArrowUp.emit(e) : null;\n }\n }\n\n isCursorAtStart(){\n const selection = window.getSelection();\n if (!selection?.rangeCount) {\n return true;\n }\n const range = selection.getRangeAt(0);\n if(range.startOffset !== 0){\n return false;\n }\n let node :any= range.startContainer;\n while(node && !node.classList?.contains('editable-container')){\n if(node.previousSibling){\n return false;\n }\n node = node.parentNode;\n }\n return true;\n }\n\n findSiblingNode(node:any, startOffset: number, direction: 'previous' | 'next'){\n if(!node){\n return null;\n }\n\n let current = node;\n const isEditableContainer = node.classList?.contains('editable-container');\n if(isEditableContainer){\n const childNodes = node.childNodes;\n const index = Math.min(startOffset, childNodes.length - 1);\n current = childNodes[index];\n }\n if(!isEditableContainer && direction === 'previous' &&startOffset !== 0){\n return null;\n }\n if(!isEditableContainer && direction === 'next' && startOffset !== node.textContent.length){\n return null;\n }\n let target = null;\n let sibling = current;\n while(sibling){\n sibling = direction === 'next' ? sibling.nextSibling : sibling.previousSibling;\n if(!sibling){\n continue;\n }\n // 排除注释节点和值为空的文本节点\n if(sibling.nodeType !== Node.COMMENT_NODE && (sibling.nodeType !== Node.TEXT_NODE || (sibling.nodeType === Node.TEXT_NODE && sibling.nodeValue.trim() !== ''))){\n target = sibling;\n break;\n }\n \n }\n return target;\n }\n\n\n handleDivInput() {\n if(!this.isComposing) {\n this.processInput();\n }\n }\n\n getCurrentInputValue() {\n let prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\n // 前置标签TipTag的文本需要去除掉\n if(this.themeTag.themeTagText){\n const prefixSpan = this.editableDivRef?.nativeElement?.querySelector('.ai-input-prefix-wrapper');\n if(prefixSpan){\n prompt = prompt.replace(prefixSpan.textContent || '', ' ');\n }\n }\n return prompt;\n }\n\n processInput() {\n setTimeout(() => {\n const prompt = this.getCurrentInputValue();\n this.input.emit(prompt);\n }, TimeToViewRender);\n }\n\n setInputTag(key: string, placeholder: string, defaultValue?: string) {\n if(this.disabled) {\n return;\n }\n this.localTemplateParts.push({\n key,\n type: 'input',\n placeholder,\n content: defaultValue,\n });\n this.onFocusInput();\n this.handleDivInput();\n }\n \n setMixTags(mixTagConfig:FormatContentItem[]) {\n if(this.disabled) {\n return;\n }\n this.localTemplateParts = [...mixTagConfig];\n this.onFocusInput();\n this.handleDivInput();\n }\n\n setText(text:string) {\n if(this.disabled) {\n return;\n }\n this.localTemplateParts.push({\n key: 'text',\n type: 'text',\n content: text,\n });\n this.onFocusInput();\n this.handleDivInput();\n }\n \n openTipTag(themeTagText:string, popoverContent:string, clearInput?: boolean){\n if(this.disabled) {\n return;\n }\n this.themeTag = {\n themeTagText,\n popoverContent,\n clearInput: clearInput || false,\n type: 'themeTag'\n };\n\n }\n \n closeTipTag() {\n if(this.themeTag.themeTagText && this.themeTag.clearInput){\n this.clearInput();\n }else{\n this.themeTag = {\n themeTagText: '',\n popoverContent: '',\n clearInput: false,\n type: 'themeTag'\n };\n this.processInput();\n }\n }\n\n onFocusInput() {\n this.focusInput();\n }\n\n}"," <div \n #editableDivRef\n class=\"editable-container\"\n [ngClass]=\"{'mc-input-disabled': disabled,'mc-input-simple': displayType === 'simple' }\"\n [attr.contenteditable]=\"!disabled\"\n spellcheck=\"false\"\n [attr.placeholder]=\"placeholder\"\n (input)=\"handleDivInput()\"\n (keydown)=\"handleDivKeydown($event)\"\n (paste)=\"handleDivPaste($event)\"\n (compositionstart)=\"handleCompositionStart($event)\"\n (compositionend)=\"handleCompositionEnd($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n >\n <!-- 前置标签 --> \n <span *ngIf=\"themeTag.themeTagText\" contenteditable=\"false\" >\n <span *ngIf=\"themeTag.themeTagText\" [title]=\"themeTag.popoverContent\" class=\"ai-input-prefix-wrapper\" (click)=\"closeTipTag()\" contenteditable=\"false\">\n <ng-container *ngIf=\"themeTagTemplate\">\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTag, themeTagText: themeTag.themeTagText}\"></ng-container>\n </ng-container>\n <span *ngIf=\"!themeTagTemplate\" class=\"ai-input-prefix\">{{themeTag.themeTagText}}</span>\n </span>\n <span contenteditable=\"false\" style=\"display: inline-block;width: 4px;\"></span>\n </span>\n\n <ng-container *ngFor=\"let part of localTemplateParts\" [ngSwitch]=\"part.type\">\n <ng-container *ngSwitchCase=\"'text'\">{{part.content}}</ng-container>\n <mc-input-tag *ngSwitchCase=\"'input'\" [content]=\"part.content\" [placeholder]=\"part.placeholder\" [disabled]=\"disabled\" (change)=\"handleDivInput()\"></mc-input-tag>\n </ng-container>\n </div>","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n DisplayType,\n FormatContentItem,\n FormatContentOptions,\n InputVariant,\n SendBtnVariant,\n SubmitShortKey,\n TimeToViewRender,\n} from '../components-common/Input/common/types';\nimport { ButtonComponent } from './button/button.component';\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';\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\n\n// 创建一个token用于组件间通信\nexport const inputContextToken = 'input-context';\n\n@Component({\n selector: 'mc-input',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n TranslatePipe,\n EditableBlockComponent,\n ],\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [{ provide: inputContextToken, useExisting: InputComponent }],\n})\nexport class InputComponent\n extends BaseComponent<InputFoundation>\n implements OnInit\n{\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 @Input() formatContentOptions: FormatContentOptions = {\n formatContent: [],\n };\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 @ViewChild('editableBlock') editableBlockRef!: EditableBlockComponent;\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 @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\n inputValue: string = '';\n lock: boolean = false;\n showEditableBlock: 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 if (changes['formatContentOptions']) {\n const formatContent =\n changes['formatContentOptions']?.currentValue?.formatContent || [];\n\n // 处理主题标签\n const themeTagItems = formatContent.filter(\n (item) => item.type === 'themeTag',\n );\n if (themeTagItems.length) {\n this.openTipTag(\n themeTagItems[0].themeTagText,\n themeTagItems[0].popoverContent,\n themeTagItems[0].clearInput,\n );\n } else {\n this.closeTipTag();\n }\n\n // 处理其他格式标签\n const otherFormatItems = formatContent.filter(\n (item) => item.type !== 'themeTag',\n );\n if (otherFormatItems.length) {\n this.setMixTags(otherFormatItems);\n } else {\n if (this.showEditableBlock) {\n this.setMixTags(otherFormatItems);\n }\n }\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 if (this.showEditableBlock) {\n this.editableBlockRef?.clearInput();\n }\n this.foundation.clearInput();\n }\n\n getInput(): string {\n if (this.showEditableBlock) {\n return this.editableBlockRef?.getInput();\n }\n return this.inputValue;\n }\n\n setMixTags(mixTagConfig: FormatContentItem[]): void {\n if (this.disabled) {\n return;\n }\n this.showEditableBlock = true;\n setTimeout(() => {\n this.editableBlockRef?.setMixTags(mixTagConfig);\n }, TimeToViewRender);\n }\n\n openTipTag(\n themeTagText: string,\n popoverContent: string,\n clearInput?: boolean,\n ): void {\n if (this.disabled) {\n return;\n }\n this.showEditableBlock = true;\n setTimeout(() => {\n this.editableBlockRef?.openTipTag(\n themeTagText,\n popoverContent,\n clearInput,\n );\n }, TimeToViewRender);\n }\n\n closeTipTag(): void {\n if (!this.disabled && this.showEditableBlock) {\n this.editableBlockRef?.closeTipTag();\n }\n }\n\n handleDivInput(value: string) {\n if (!value) {\n setTimeout(() => {\n this.showEditableBlock = false;\n }, TimeToViewRender);\n }\n this.inputValue = value;\n this.change.emit(value);\n }\n\n handleDivSubmit(value: string) {\n this.submit.emit(value);\n }\n\n onDivBlur(e: FocusEvent) {\n this.blur.emit(e);\n }\n\n onDivFocus(e: FocusEvent) {\n this.focus.emit(e);\n }\n\n // 处理button组件的事件\n onButtonSubmit(value: string): void {\n this.submit.emit(value);\n this.clearInput();\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',\n 'line-height',\n 'padding-top',\n 'padding-bottom',\n 'font-family',\n 'font-weight',\n 'font-size',\n 'font-variant',\n 'text-rendering',\n 'text-transform',\n 'width',\n 'text-indent',\n 'padding-left',\n 'padding-right',\n 'border-width',\n 'box-sizing',\n 'word-break',\n '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 <!-- 替换Textarea -->\n <div *ngIf=\"showEditableBlock\" class=\"editable-block-container\">\n <mc-editable-block *ngIf=\"showEditableBlock\"\n #editableBlock\n [placeholder]=\"placeholder\"\n [maxLength]=\"maxLength\"\n [disabled]=\"disabled\"\n [submitShortKey]=\"submitShortKey\"\n [autofocus]=\"autofocus\"\n [displayType]=\"displayType\" \n (input)=\"handleDivInput($event)\"\n (send)=\"handleDivSubmit($event)\"\n (blur)=\"onDivBlur($event)\"\n (focus)=\"onDivFocus($event)\"\n >\n <ng-container *ngIf=\"themeTagTemplate\">\n <ng-template #themeTag let-themeTagText=\"themeTagText\">\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTagText, themeTagText: themeTagText}\"></ng-container>\n </ng-template>\n </ng-container>\n </mc-editable-block>\n </div>\n <textarea\n *ngIf=\"!showEditableBlock\"\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';\nimport { InputTagComponent } from './InputTag/input-tag.component';\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n SendIconComponent,\n InputComponent,\n InputTagComponent,\n EditableBlockComponent,\n ],\n exports: [InputComponent],\n})\nexport class InputModule {}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\nimport type {\n IntroductionAlign,\n IntroductionBackground,\n} from './common/introduction-types';\n\nexport interface IntroductionAdapter extends DefaultAdapter {}\n\nexport class IntroductionFoundation extends BaseFoundation<IntroductionAdapter> {\n constructor(adapter: IntroductionAdapter) {\n super({ ...adapter });\n }\n\n getIntroductionClasses() {\n const align = this._adapter.getProp('align') as IntroductionAlign;\n const background = this._adapter.getProp(\n 'background',\n ) as IntroductionBackground;\n return [align, background].filter(Boolean).join(' ');\n }\n\n getLogoStyle() {\n const logoWidth = this._adapter.getProp('logoWidth') as number | string;\n const logoHeight = this._adapter.getProp('logoHeight') as number | string;\n const style: Record<string, string> = {};\n\n if (logoWidth) {\n style['width'] =\n typeof logoWidth === 'number' ? `${logoWidth}px` : logoWidth;\n }\n\n if (logoHeight) {\n style['height'] =\n typeof logoHeight === 'number' ? `${logoHeight}px` : logoHeight;\n }\n\n return style;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport BaseComponent from '../Base/base.component';\nimport type {\n IntroductionAlign,\n IntroductionBackground,\n} from '../components-common/Introduction/common/introduction-types';\nimport { IntroductionFoundation } from '../components-common/Introduction/foundation';\n\n@Component({\n selector: 'mc-introduction',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './introduction.component.html',\n styleUrls: ['./introduction.component.scss'],\n})\nexport class IntroductionComponent extends BaseComponent<IntroductionFoundation> {\n @Input() logoImg?: string;\n @Input() title?: string;\n @Input() subTitle?: string;\n @Input() description: string[] = [];\n @Input() logoWidth?: number | string;\n @Input() logoHeight?: number | string;\n @Input() background: IntroductionBackground = 'transparent';\n @Input() align: IntroductionAlign = 'center';\n\n constructor() {\n super();\n this.foundation = new IntroductionFoundation(this.adapter);\n }\n}\n","<div class=\"mc-introduction\" [ngClass]=\"foundation.getIntroductionClasses()\">\n <div class=\"mc-introduction-logo-container\">\n <img *ngIf=\"logoImg\" [src]=\"logoImg\" [alt]=\"title\" [ngStyle]=\"foundation.getLogoStyle()\" />\n <div class=\"mc-introduction-title\">{{ title }}</div>\n </div>\n <div *ngIf=\"subTitle\" class=\"mc-introduction-sub-title\">{{ subTitle }}</div>\n <div *ngIf=\"description && description.length\" class=\"mc-introduction-description\">\n <div *ngFor=\"let item of description; let i = index\">{{ item }}</div>\n </div>\n <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IntroductionComponent } from './introduction.component';\n\n@NgModule({\n imports: [CommonModule, IntroductionComponent],\n exports: [IntroductionComponent],\n})\nexport class IntroductionModule {}\n","export enum ListDirection {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\nexport enum ListVariant {\n Transparent = 'transparent',\n Filled = 'filled',\n Bordered = 'bordered',\n None = 'none',\n}\nexport interface ListItemData {\n label: string;\n value: string | number;\n disabled?: boolean;\n active?: boolean;\n [key: string]: any;\n}\n","export const LazyLoadThreshold = 50;\nexport const InputTagNames = ['TEXTAREA', 'INPUT'];\nexport const ArrowUp = 'ArrowUp';\nexport const ArrowDown = 'ArrowDown';\nexport const Enter = 'Enter';\n","import BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\nimport { ListDirection } from \"./common/list-types\";\n\nexport interface ListAdapter extends DefaultAdapter {}\n\nexport class ListFoundation extends BaseFoundation<ListAdapter> {\n constructor(adapter: ListAdapter) {\n super({ ...adapter });\n }\n\n getListClasses() {\n const { direction, autoWrap } = this.getProps();\n return {\n 'mc-list': true,\n 'mc-list-horizontal': direction === ListDirection.Horizontal,\n 'mc-list-nowrap': direction === ListDirection.Horizontal && !autoWrap,\n };\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n type TemplateRef,\n} from '@angular/core';\nimport {\n ArrowDown,\n ArrowUp,\n Enter,\n InputTagNames,\n LazyLoadThreshold,\n} from '../components-common/List/common/list-const';\nimport {\n ListDirection,\n type ListItemData,\n ListVariant,\n} from '../components-common/List/common/list-types';\nimport {\n type ListAdapter,\n ListFoundation,\n} from '../components-common/List/foundation';\nimport BaseComponent from '../Base/base.component';\n\n@Component({\n selector: 'mc-list',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n})\nexport class ListComponent extends BaseComponent<ListFoundation> {\n // 组件属性\n @Input() direction: ListDirection = ListDirection.Vertical;\n @Input() autoWrap: boolean = true;\n @Input() variant: ListVariant = ListVariant.Transparent;\n @Input() enableLazyLoad: boolean = false;\n @Input() enableShortKey: boolean = false;\n @Input() data: Array<ListItemData> = [];\n @Input() inputEl: HTMLElement;\n @Input() selectable: boolean = true;\n @Input() preSelectIndex: number = this.enableShortKey ? 0 : -1;\n\n @Output() loadMore = new EventEmitter<Event>();\n @Output() select = new EventEmitter<ListItemData>();\n\n // 内容投影模板引用\n @ContentChild('item') itemTemplate: TemplateRef<any> | null = null;\n\n protected readonly ListVariant = ListVariant;\n private listenDom: HTMLElement | Document;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.foundation = new ListFoundation(this.adapter);\n this.foundation.init();\n this.initListenDom();\n this.initListener();\n }\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.removeListener();\n }\n\n override get adapter(): ListAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n direction: this.direction,\n autoWrap: this.autoWrap,\n variant: this.variant,\n enableLazyLoad: this.enableLazyLoad,\n enableShortKey: this.enableShortKey,\n data: this.data,\n inputEl: this.inputEl,\n selectable: this.selectable,\n }),\n };\n }\n\n // 计算属性\n get listClasses(): Record<string, any> {\n return this.foundation.getListClasses();\n }\n\n initListenDom() {\n if (this.inputEl) {\n const el = this.inputEl;\n if (InputTagNames.includes(el.tagName)) {\n this.listenDom = el;\n } else {\n this.listenDom =\n el.querySelector('textarea') || el.querySelector('input') || document;\n }\n } else {\n this.listenDom = document;\n }\n }\n initListener() {\n if (this.enableShortKey) {\n this.listenDom.addEventListener(\n 'keydown',\n this.onKeyDown.bind(this) as any,\n );\n }\n }\n removeListener() {\n this.listenDom.removeEventListener(\n 'keydown',\n this.onKeyDown.bind(this) as any,\n );\n }\n onListScroll(e: Event): void {\n if (!this.enableLazyLoad || this.direction !== ListDirection.Vertical) {\n return;\n }\n const targetEl = e.target as HTMLElement;\n const scrollHeight = targetEl.scrollHeight;\n const clientHeight = targetEl.clientHeight;\n const scrollTop = targetEl.scrollTop;\n\n if (scrollHeight - clientHeight - scrollTop < LazyLoadThreshold) {\n this.loadMore.emit(e);\n }\n }\n onItemClick(clickedItem: ListItemData): void {\n if (clickedItem.disabled) {\n return;\n }\n if (this.selectable) {\n for (let i = 0; i < this.data.length; i++) {\n this.data[i].active = this.data[i].value === clickedItem.value;\n }\n }\n this.select.emit({ ...clickedItem });\n }\n onKeyDown(e: KeyboardEvent) {\n if (e.code === ArrowUp) {\n this.preSelectIndex =\n this.preSelectIndex === 0\n ? this.data.length - 1\n : this.preSelectIndex - 1;\n }\n if (e.code === ArrowDown) {\n this.preSelectIndex =\n this.preSelectIndex === this.data.length - 1\n ? 0\n : this.preSelectIndex + 1;\n }\n if (e.code === Enter) {\n if (this.selectable) {\n this.onItemClick(this.data[this.preSelectIndex]);\n }\n }\n }\n}\n","<div [ngClass]=\"listClasses\" (scroll)=\"onListScroll($event)\">\n <ng-container *ngFor=\"let item of data; let index = index\">\n <ng-container *ngIf=\"variant === ListVariant.None\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"variant !== ListVariant.None\">\n <div\n class=\"mc-list-item\"\n [class]=\"variant\"\n [ngClass]=\"{\n 'mc-list-item-disabled': item.disabled,\n 'mc-list-item-active': item.active,\n 'mc-list-item-pre-selection': index === preSelectIndex\n }\"\n (click)=\"onItemClick(item)\"\n >\n <ng-container *ngIf=\"itemTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\n </ng-container>\n </ng-container>\n\n <ng-template #defaultLabel>\n {{ item['label'] }}\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ListComponent } from './list.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ListComponent],\n exports: [ListComponent],\n})\nexport class ListModule {}\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.maxWidth = '90%';\n svg.style.maxHeight = '90%';\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 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 morphdom from 'morphdom';\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\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 }\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 morphdom(this.codeElementRef.nativeElement, newElement);\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 this.updateHighlightedCode();\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 setTimeout(() => {\n this.foundation.updateHighlightedCode();\n });\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 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 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 stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g>\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 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 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 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 transform=\"translate(-592.000000, -204.000000)\"\n >\n <g\n transform=\"translate(560.000000, 180.000000)\"\n >\n <text\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 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}\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>', '\\n\\n</div>\\n\\n') || ''\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/**\n * 递归查找所有层级中 className 包含 code-block-wrapper 的 DIV 节点\n * @param {Array} vnodes - 待查找的 vnode 列表\n * @returns {Array} 符合条件的节点列表\n */\nexport function findCodeBlockWrappers(vnodes: any[]): any[] {\n const result: any[] = [];\n\n // 遍历当前层级的 vnode\n vnodes.forEach((node: any) => {\n // 检查当前节点是否符合条件\n if (node.nodeName === 'DIV' && node.className?.includes('code-block-wrapper')) {\n result.push(node);\n }\n\n // 递归处理子节点(如果存在子节点且为数组)\n if (node.childNodes?.length) {\n result.push(...findCodeBlockWrappers(node.childNodes));\n }\n });\n\n return result;\n}\n\n/**\n * 清空Dom节点的所有子节点\n * @param {HTMLElement} element - 需要清空的Dom节点\n * @returns {void}\n */\nexport function clearElementChildren(element: HTMLElement): void {\n if (typeof element.replaceChildren === 'function') {\n element.replaceChildren();\n } else {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n}\n\n// 声明一个utils静态默认导出\nexport default {\n isSelfClosingTag,\n isClosingTag,\n tokensToAst,\n genTreeNode,\n matchHtmlToken,\n isValidTagName,\n findCodeBlockWrappers,\n clearElementChildren,\n}\n","import morphdom from 'morphdom';\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 @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() incrementalDom: boolean = true;\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() mdRenderChange = new EventEmitter<string>();\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\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\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 this.contentChange(changes['content']);\n }\n\n if (changes['customXssRules'] && !changes['customXssRules'].firstChange) {\n this.mdCardService.setCustomXssRules(this.customXssRules || []);\n this.parseContent();\n }\n\n if (\n (changes['enableThink'] && !changes['enableThink'].firstChange) ||\n (changes['thinkOptions'] && !changes['thinkOptions'].firstChange) ||\n (changes['theme'] && !changes['theme'].firstChange)\n ) {\n this.parseContent();\n }\n\n if (changes['mdPlugins'] && !changes['mdPlugins'].firstChange) {\n this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\n this.parseContent();\n }\n }\n\n contentChange(change) {\n if (this.content?.indexOf(change.previousValue) === -1) {\n this.clearCodeBlockCache();\n }\n if (!this.typing) {\n this.typingIndex = this.content?.length || 0;\n this.parseContent();\n } else {\n if (this.content?.indexOf(change.previousValue) === -1) {\n this.typingIndex = 0;\n }\n // 使用setTimeout模拟Vue的nextTick行为\n setTimeout(() => this.typewriterStart());\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.incrementalDom) {\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 = this.parser.findCodeBlockWrappers(vnodes);\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(\n this.getEmptyCodeBlock(node)\n );\n } else {\n newContainerDiv.body.firstChild?.appendChild(node);\n }\n }\n });\n let newContainerDivHTML =\n (newContainerDiv.body?.firstChild as HTMLElement)?.outerHTML || '';\n const filteredHTML = this.mdCardService.filterHtml(newContainerDivHTML);\n\n // 使用morphdom进行DOM更新\n const newElement = document.createElement('div');\n newElement.innerHTML = filteredHTML;\n morphdom(container, filteredHTML, {\n onBeforeElUpdated: (fromEl, toEl) => {\n if (\n fromEl.nodeName === 'DIV' &&\n fromEl.classList.contains('code-block-wrapper') &&\n toEl.nodeName === 'DIV' &&\n toEl.classList.contains('code-block-wrapper') &&\n fromEl.getAttribute('key') === toEl.getAttribute('key') &&\n this.codeBlockComponentsCache.has(fromEl.getAttribute('key') || '')\n ) {\n return false;\n }\n return true;\n },\n });\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 newCodeBlock?.firstChild\n ) {\n MdParserUtils.clearElementChildren(existingElement);\n existingElement.appendChild(newCodeBlock?.firstChild);\n }\n }\n });\n this.mdRenderChange.emit(newContainerDivHTML);\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 clearCodeBlockCache() {\n this.codeBlockComponentsCache.forEach((cachedItem) => {\n cachedItem.componentRef.destroy();\n });\n this.codeBlockComponentsCache.clear();\n }\n\n // 在组件销毁时清理缓存,避免内存泄漏\n override ngOnDestroy(): void {\n this.clearCodeBlockCache();\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}","// Mention组件的公共常量定义\nexport const MentionSeparator = ' ';\nexport const ArrowLeft = 'ArrowLeft';\nexport const ArrowRight = 'ArrowRight';\nexport const ArrowUp = 'ArrowUp';\nexport const ArrowDown = 'ArrowDown';\nexport const Escape = 'Escape';","import { MentionProps, SearchChangeEvent, Trigger } from './common/mention-types';\nimport { MentionSeparator, ArrowLeft, ArrowRight, ArrowUp, ArrowDown, Escape } from './common/mention-constants';\nimport BaseFoundation, { DefaultAdapter } from '../Base/foundation';\nimport { computePosition, offset, autoUpdate } from '@floating-ui/dom';\nimport { debounce, isObject } from 'lodash-es';\n\nexport interface MentionAdapter extends DefaultAdapter {\n updateModelValue: (val: boolean) => void;\n searchChange: (event: SearchChangeEvent) => void;\n activeIndexChange: (index: number) => void;\n toggleChange: (val: boolean) => void;\n}\n\nexport class MentionFoundation extends BaseFoundation<MentionAdapter> {\n private props: MentionProps;\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\n private originEl: HTMLElement | null = null;\n private overlayEl: HTMLElement | null = null;\n private currentTrigger: string = '';\n private currentSearchValue: string = '';\n private currentTriggerIndex: number = -1;\n private currentCursorIndex: number = -1;\n private autoUpdateCleanup: (() => void) | null = null;\n\n constructor(adapter: MentionAdapter) {\n super({ ...adapter });\n this.props = {\n modelValue: false,\n prefix: [],\n fitHostWidth: true,\n optionsCount: 0,\n ...this.getProps()\n };\n \n // 创建防抖版本的handleInput方法\n this.handleInput = debounce(this.handleInput, 300);\n }\n\n // 更新配置选项\n updateOptions(options: Partial<MentionProps>) {\n this.props = { ...this.props, ...options };\n this.updateOverlayPosition();\n }\n\n // 设置输入元素\n setInputEl(el: HTMLInputElement | HTMLTextAreaElement | null) {\n this.inputEl = el;\n }\n\n // 设置原点元素\n setOriginEl(el: HTMLElement | null) {\n this.originEl = el;\n this.updateOverlayPosition();\n }\n\n // 设置覆盖层元素\n setOverlayEl(el: HTMLElement | null) {\n this.overlayEl = el;\n this.updateOverlayPosition();\n }\n\n // 初始化事件\n initEvents() {\n if (this.inputEl) {\n this.inputEl.addEventListener('input', this.handleInput);\n this.inputEl.addEventListener('keydown', this.handleKeyDown as EventListener);\n this.inputEl.addEventListener('click', this.handleClick);\n }\n // 监听文档点击事件,用于处理点击外部关闭下拉菜单\n document.addEventListener('click', this.handleDocumentClick);\n }\n\n // 销毁事件\n override destroy() {\n if (this.inputEl) {\n this.inputEl.removeEventListener('input', this.handleInput);\n this.inputEl.removeEventListener('keydown', this.handleKeyDown as EventListener);\n this.inputEl.removeEventListener('click', this.handleClick);\n }\n // 移除文档点击事件监听\n document.removeEventListener('click', this.handleDocumentClick);\n // 清理autoUpdate\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n this.inputEl = null;\n this.originEl = null;\n this.overlayEl = null;\n }\n\n // 重置Mention状态\n resetMention() {\n this.currentTrigger = '';\n this.currentSearchValue = '';\n this.currentTriggerIndex = -1;\n this.currentCursorIndex = -1;\n this.updateModelValue(false);\n }\n\n // 更新模型值\n private updateModelValue(val: boolean) {\n if (this.props.modelValue !== val) {\n this.props.modelValue = val;\n this._adapter.updateModelValue(val);\n this._adapter.toggleChange(val);\n }\n }\n\n // 处理输入事件\n handleInput = () => {\n if (!this.inputEl) return;\n\n const value = this.inputEl.value;\n const cursorPosition = this.inputEl.selectionStart || 0;\n\n // 检查是否匹配触发词\n const matchResult = this.checkPrefixMatch(value, cursorPosition);\n if (matchResult) {\n const { trigger, triggerIndex, searchValue } = matchResult;\n this.currentTrigger = trigger;\n this.currentSearchValue = searchValue;\n this.currentTriggerIndex = triggerIndex;\n this.currentCursorIndex = cursorPosition;\n\n // 触发搜索变化事件\n this._adapter.searchChange({\n value: searchValue,\n trigger,\n triggerIndex,\n cursorIndex: cursorPosition\n });\n\n // 当有匹配的触发词时,就显示弹窗\n // 这样可以确保在用户输入过程中,弹窗始终显示,直到用户选择了一个选项或者点击了其他地方\n this.updateModelValue(true);\n\n // 这里不再直接调用updateOverlayPosition,而是通过watch modelValue的nextTick来调用,确保overlayEl已渲染完成\n } else {\n // 没有匹配的触发词,关闭选择面板\n this.resetMention();\n }\n };\n\n // 处理键盘事件\n handleKeyDown = (event: KeyboardEvent) => {\n if (!this.inputEl) return;\n\n switch (event.key) {\n case ArrowUp:\n if (this.props.modelValue) {\n event.preventDefault();\n this.handleArrowKey(-1);\n }\n break;\n case ArrowDown:\n if (this.props.modelValue) {\n event.preventDefault();\n this.handleArrowKey(1);\n }\n break;\n case ArrowLeft:\n case ArrowRight:\n // 左右箭头键:延迟检查是否需要触发提及\n setTimeout(() => {\n this.handleInput();\n });\n break;\n case Escape:\n event.preventDefault();\n this.resetMention();\n break;\n case MentionSeparator:\n // 只有在面板打开时才阻止空格的默认行为\n if (this.props.modelValue) {\n this.resetMention();\n }\n break;\n default:\n // 其他按键不做处理\n break;\n }\n };\n\n // 处理点击事件\n private handleClick = () => {\n if (!this.inputEl) return;\n\n // 点击事件触发提及检查\n this.handleInput();\n };\n\n // 处理文档点击事件\n private handleDocumentClick = (e: Event) => {\n if (this.originEl) {\n if (this.props.modelValue) {\n // 如果下拉菜单是打开的,检查点击是否发生在originEl外部\n if (!this.originEl.contains(e.target as HTMLElement)) {\n this.resetMention();\n }\n } else {\n // 如果下拉菜单是关闭的,检查点击是否发生在originEl内部\n if (this.originEl.contains(e.target as HTMLElement)) {\n this.handleInput();\n }\n }\n }\n };\n\n // 检查前缀匹配\n private checkPrefixMatch(value: string, cursorPosition: number): { trigger: string; triggerIndex: number; searchValue: string } | null {\n if (!this.props.prefix || this.props.prefix.length === 0) return null;\n\n const text = value.replace(/[\\r\\n]/g, MentionSeparator);\n const beforeCursor = text.substring(0, cursorPosition);\n\n // 检查所有前缀\n for (const prefixItem of this.props.prefix) {\n let trigger = '';\n let onlyInputStart = false;\n\n if (typeof prefixItem === 'string') {\n trigger = prefixItem;\n } else if (isObject(prefixItem)) {\n trigger = prefixItem.key;\n onlyInputStart = Boolean(prefixItem.onlyInputStart);\n } else {\n continue;\n }\n\n // 查找最后一个触发词的位置\n const triggerIndex = beforeCursor.lastIndexOf(trigger);\n // 查找最后一个分隔符的位置\n const separatorPos = beforeCursor.lastIndexOf(MentionSeparator);\n // 触发词到光标的字符串\n const mentionStr = beforeCursor.substring(triggerIndex, cursorPosition);\n // 提及字符串的最后一个字符\n const lastMentionChar = mentionStr.charAt(mentionStr.length - 1);\n\n // 条件判断:\n // 1. 触发词位置有效\n // 2. 如果设置了onlyInputStart,触发词必须在输入开始处\n // 3. 触发词位置必须在最后一个分隔符之后\n // 4. 提及字符串的最后一个字符不能是分隔符\n if (triggerIndex < 0 || \n (triggerIndex > 0 && onlyInputStart) || \n triggerIndex < separatorPos || \n lastMentionChar === MentionSeparator) {\n continue;\n } else {\n const searchValue = mentionStr.slice(trigger.length);\n return { trigger, triggerIndex, searchValue };\n }\n }\n\n return null;\n }\n\n // 处理箭头键\n private handleArrowKey(direction: number) {\n let newIndex = (this.getCurrentActiveIndex() + direction) % this.props.optionsCount;\n if (newIndex < 0) {\n newIndex = this.props.optionsCount - 1;\n }\n this._adapter.activeIndexChange(newIndex);\n }\n\n // 获取当前活动索引\n private getCurrentActiveIndex(): number {\n // 默认返回0,实际实现可能需要根据adapter获取\n return 0;\n }\n\n // 处理选择事件\n private handleSelect() {\n if (!this.inputEl || this.currentTriggerIndex === -1) return;\n\n const value = this.inputEl.value;\n const beforeTrigger = value.substring(0, this.currentTriggerIndex);\n const afterCursor = value.substring(this.currentCursorIndex);\n\n // 这里需要根据实际选择的项进行替换,暂时使用示例实现\n const selectedValue = `${beforeTrigger}@selected ${afterCursor}`;\n this.inputEl.value = selectedValue;\n\n // 设置光标位置\n const newCursorPosition = beforeTrigger.length + '@selected '.length;\n this.inputEl.setSelectionRange(newCursorPosition, newCursorPosition);\n\n // 关闭选择面板\n this.resetMention();\n\n // 触发input事件以更新绑定值\n this.inputEl.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n // 更新覆盖层位置\n updateOverlayPosition(): Promise<{ top: string; left: string; width: string; } | undefined> {\n return new Promise((resolve) => {\n if (!this.originEl || !this.overlayEl) {\n resolve(undefined);\n return;\n }\n\n // 设置宽度\n if (this.props.fitHostWidth) {\n const originRect = this.originEl.getBoundingClientRect();\n this.overlayEl.style.width = `${originRect.width}px`;\n } else {\n this.overlayEl.style.width = '';\n }\n\n // 清理之前的autoUpdate\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n\n // 设置位置:使用@floating-ui/dom计算位置,与Vue版本保持一致\n computePosition(this.originEl, this.overlayEl, {\n strategy: 'fixed',\n placement: 'top-start',\n middleware: [offset(4)],\n }).then(({ x, y }) => {\n this.overlayEl!.style.top = `${y}px`;\n this.overlayEl!.style.left = `${x}px`;\n this.overlayEl!.style.position = 'fixed';\n \n // 返回位置信息,用于Vue组件同步样式\n resolve({\n top: `${y}px`,\n left: `${x}px`,\n width: this.props.fitHostWidth ? `${this.originEl!.getBoundingClientRect().width}px` : ''\n });\n \n // 设置autoUpdate,自动处理滚动、调整大小和视口变化事件\n this.autoUpdateCleanup = autoUpdate(\n this.originEl!,\n this.overlayEl!,\n () => {\n if (this.originEl && this.overlayEl) {\n // 当fitHostWidth为true时,更新宽度\n if (this.props.fitHostWidth) {\n const originRect = this.originEl.getBoundingClientRect();\n this.overlayEl.style.width = `${originRect.width}px`;\n }\n \n computePosition(this.originEl, this.overlayEl, {\n strategy: 'fixed',\n placement: 'top-start',\n middleware: [offset(4)],\n }).then(({ x, y }) => {\n this.overlayEl!.style.top = `${y}px`;\n this.overlayEl!.style.left = `${x}px`;\n });\n }\n },\n {\n // 添加对视口变化的更全面监听,确保浏览器F12打开/关闭时位置能正确更新\n animationFrame: true,\n elementResize: true,\n ancestorScroll: true,\n ancestorResize: true,\n layoutShift: true\n }\n ); \n }).catch(() => {\n // 处理计算位置失败的情况\n resolve(undefined);\n });\n });\n }\n\n // 获取当前搜索值\n getCurrentSearchValue(): string {\n return this.currentSearchValue;\n }\n\n // 获取当前触发词\n getCurrentTrigger(): string {\n return this.currentTrigger;\n }\n}","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy, OnInit, forwardRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, style, animate, transition } from '@angular/animations';\nimport { FormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { SearchChangeEvent, Trigger } from '../components-common/Mention/common/mention-types';\nimport { MentionFoundation } from '../components-common/Mention/foundation';\nimport BaseComponent from '../Base/base.component';\n\n@Component({\n selector: 'mc-mention',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './mention.component.html',\n styleUrls: ['./mention.component.scss'],\n animations: [\n trigger('fade', [\n transition(':enter', [\n style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }),\n animate('0.2s cubic-bezier(0.16, 0.75, 0.5, 1)', style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }))\n ]),\n transition(':leave', [\n style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }),\n animate('0.2s cubic-bezier(0.5, 0, 0.84, 0.25)', style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }))\n ])\n ])\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MentionComponent),\n multi: true\n }\n ]\n})\nexport class MentionComponent extends BaseComponent<MentionFoundation> implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() prefix: Array<string | Trigger> = ['@'];\n @Input() fitHostWidth: boolean = true;\n @Input() menuClass?: string;\n // 选项数量,用于键盘导航\n private _optionsCount: number = 0;\n \n @Input()\n set optionsCount(val: number) {\n this._optionsCount = val;\n // 当optionsCount变化时,更新foundation的配置\n if (this.foundation) {\n this.foundation.updateOptions({ optionsCount: val });\n }\n }\n \n get optionsCount(): number {\n return this._optionsCount;\n }\n\n @Output() updateModelValue = new EventEmitter<boolean>();\n @Output() searchChange = new EventEmitter<SearchChangeEvent>();\n @Output() toggleChange = new EventEmitter<boolean>();\n // 当前选中索引变化事件\n @Output() activeIndexChange = new EventEmitter<number>();\n\n // 当前选中的索引\n activeIndex: number = -1;\n\n @ViewChild('popperTrigger') popperTriggerEl!: ElementRef;\n @ViewChild('origin') originEl!: ElementRef;\n @ViewChild('overlayEl') overlayEl!: ElementRef;\n\n overlayStyle: { top: string; left: string; width: string } = { top: '0px', left: '0px', width: '' };\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\n \n constructor() { \n super(); \n }\n\n ngOnInit() {\n this.foundation = new MentionFoundation(this.adapter);\n }\n\n override get adapter(): any {\n return {\n ...super.adapter,\n updateModelValue: (val: boolean) => {\n // 调用modelValue的setter方法,确保位置更新逻辑被执行\n this.modelValue = val;\n },\n searchChange: (event: SearchChangeEvent) => this.searchChange.emit(event),\n activeIndexChange: (index: number) => {\n this.activeIndex = index;\n this.activeIndexChange.emit(index);\n },\n toggleChange: (val: boolean) => this.toggleChange.emit(val)\n };\n }\n\n ngAfterViewInit() {\n // 添加安全检查 - 仅检查必要元素,overlayEl有*ngIf条件可能不会立即渲染\n if (!this.popperTriggerEl || !this.originEl) {\n console.error('ViewChild elements not found');\n return;\n }\n\n const hostElement = this.popperTriggerEl.nativeElement;\n let foundInputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\n\n // 检查hostElement本身是否是输入元素\n if (hostElement.tagName === 'TEXTAREA' || hostElement.tagName === 'INPUT') {\n foundInputEl = hostElement;\n } else {\n // 先查找mc-input组件\n const mcInputComponent = hostElement.querySelector('mc-input');\n if (mcInputComponent) {\n // 如果找到mc-input组件,查找其内部的textarea元素\n foundInputEl = mcInputComponent.querySelector('textarea');\n } else {\n // 否则在hostElement内部查找原生输入元素\n foundInputEl = hostElement.querySelector('textarea') || hostElement.querySelector('input');\n }\n }\n\n if (!foundInputEl) {\n console.error('Input/Textarea element not found in Mention component');\n return;\n }\n\n // 初始化foundation的元素\n this.inputEl = foundInputEl;\n this.foundation.setInputEl(this.inputEl);\n this.foundation.setOriginEl(this.originEl.nativeElement);\n // 仅在overlayEl存在时设置,否则Foundation会在需要时处理\n if (this.overlayEl) {\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\n }\n // 初始化事件\n this.foundation.initEvents();\n }\n\n override ngOnDestroy() { // 清理文档点击事件\n this.cleanupDocumentClick();\n // 清理Foundation资源\n this.foundation.destroy();\n super.ngOnDestroy();\n }\n\n // 监听modelValue变化,更新overlay位置\n @Input()\n set modelValue(val: boolean) {\n if (this._modelValue !== val) {\n this._modelValue = val;\n // 当显示Mention面板时,确保overlay元素已传递给foundation并更新位置\n if (val && this.foundation) {\n // 使用setTimeout确保overlayEl已经渲染完成\n setTimeout(() => {\n // 检查overlayEl是否可用,如果可用则传递给foundation\n if (this.overlayEl) {\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\n // 获取位置信息并更新组件样式\n const positionInfo = this.foundation.updateOverlayPosition();\n if (positionInfo instanceof Promise) {\n positionInfo.then(pos => {\n if (pos) {\n this.overlayStyle = pos;\n }\n });\n } else if (positionInfo) {\n this.overlayStyle = positionInfo;\n }\n }\n }, 0);\n }\n // 调用onChange回调,支持ngModel双向绑定\n this.onChange(val);\n // 仍然触发updateModelValue事件,保持向后兼容\n this.updateModelValue.emit(val);\n }\n }\n\n get modelValue(): boolean {\n return this._modelValue;\n }\n\n // 私有属性存储实际的modelValue\n private _modelValue: boolean = false;\n\n // ControlValueAccessor 接口实现\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.modelValue = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // 如果需要禁用功能,可以在这里实现\n }\n\n // 初始化文档点击事件(已在ngAfterViewInit中处理,无需重复)\n ngAfterContentInit() {\n }\n\n // 清理文档点击事件\n private cleanupDocumentClick() {\n document.removeEventListener('click', this.onDocumentClick);\n }\n\n // 处理文档点击事件,点击外部关闭Mention面板\n private onDocumentClick = (e: Event) => {\n if (this.originEl && this.originEl.nativeElement && this.modelValue) {\n if (!this.originEl.nativeElement.contains(e.target as HTMLElement)) {\n this.foundation.resetMention();\n }\n }\n };\n}","<!-- Mention组件的模板 -->\n\n<!-- 触发器元素 -->\n<div #popperTrigger #origin class=\"mc-mention-trigger\">\n <ng-content></ng-content>\n</div>\n\n<!-- 提及菜单的弹出层 -->\n<div \n #overlayEl \n *ngIf=\"modelValue\" \n [@fade]\n class=\"mc-mention mc-mention-fade\" \n [ngClass]=\"menuClass\" \n [ngStyle]=\"overlayStyle\"\n>\n <ng-content select=\"[slot=menu]\"></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MentionComponent } from './mention.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n MentionComponent\n ],\n exports: [MentionComponent],\n})\nexport class MentionModule {}","// Mention组件的导出文件\nexport * from './mention.component';\nexport * from './mention.module';","export function copyToClipboard(text: any) {\n if (typeof text !== 'string') {\n return Promise.reject();\n }\n\n // 现代浏览器优先使用 Clipboard API\n if (navigator.clipboard && window.isSecureContext) {\n return navigator.clipboard\n .writeText(text)\n .then(() => {})\n .catch((err) => {\n return fallbackCopyTextToClipboard(text); // 降级处理\n });\n }\n\n // 低版本浏览器直接使用降级方案\n return fallbackCopyTextToClipboard(text);\n}\n\nexport function fallbackCopyTextToClipboard(text: string) {\n return new Promise((resolve, reject) => {\n // 创建隐藏的 textarea 元素\n const textarea = document.createElement('textarea');\n textarea.value = text;\n\n // 样式:隐藏且不影响布局\n textarea.style.position = 'fixed';\n textarea.style.top = '-9999px';\n textarea.style.left = '-9999px';\n textarea.style.opacity = '0';\n textarea.style.zIndex = '-1000';\n\n // 解决 iOS 下无法选中的问题\n textarea.setAttribute('readonly', '');\n\n document.body.appendChild(textarea);\n\n try {\n // 选中内容(兼容 iOS)\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length); // 移动端必须\n\n // 执行复制\n const success = document.execCommand('copy');\n if (success) {\n resolve(null);\n } else {\n reject();\n }\n } catch (err) {\n reject();\n } finally {\n // 移除临时元素\n document.body.removeChild(textarea);\n }\n });\n}\n","export const TOOLBAR_GAP_DEFAULT_VALUE = 0;\nexport const TOOLBAR_ICON_SIZE_DEFAULT_VALUE = 16;\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { copyToClipboard } from '../../components-common/Toolbar/common/toolbar-common-fun';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-copy-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './copy-icon.component.html',\n styleUrls: ['./copy-icon.component.scss'],\n})\nexport class CopyIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() text: string = '';\n @Input() title: string = '';\n\n copied = false;\n\n async handleClick() {\n setTimeout(() => {\n this.copied = false;\n }, 1500);\n try {\n await copyToClipboard(this.text);\n this.copied = true;\n } catch (error) {}\n }\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n *ngIf=\"copied\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 <desc>Created with Sketch.</desc>\n <defs>\n <polygon id=\"path-1\" 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\"></polygon>\n </defs>\n <g id=\"status/whiteBG/correct\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlink:href=\"#path-1\"></use>\n </mask>\n <use id=\"Mask\" fill=\"currentColor\" xlink:href=\"#path-1\"></use>\n </g>\n </svg>\n <svg\n *ngIf=\"!copied\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 (click)=\"handleClick()\"\n >\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"API-starter-图标入库\" transform=\"translate(-592.000000, -204.000000)\">\n <g id=\"方格备份-16\" transform=\"translate(560.000000, 180.000000)\">\n <text id=\"图标\" font-family=\"PingFangSC-Regular, PingFang SC\" font-size=\"12\" font-weight=\"normal\" line-spacing=\"16\" fill=\"#71757F\">\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=\"currentColor\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-delete-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './delete-icon.component.html',\n styleUrls: ['./delete-icon.component.scss'],\n})\nexport class DeleteIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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=\"codehub-delete-op\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <path\n d=\"M12.5,5 C12.7761424,5 13,5.22385763 13,5.5 L13,13 C13,14.0543618 12.1841222,14.9181651 11.1492623,14.9945143 L11,15 L5,15 C3.9456382,15 3.08183488,14.1841222 3.00548574,13.1492623 L3,13 L3,5.5 C3,5.22385763 3.22385763,5 3.5,5 C3.77614237,5 4,5.22385763 4,5.5 L4,13 C4,13.5128358 4.38604019,13.9355072 4.88337887,13.9932723 L5,14 L11,14 C11.5128358,14 11.9355072,13.6139598 11.9932723,13.1166211 L12,13 L12,5.5 C12,5.22385763 12.2238576,5 12.5,5 Z M6.53333333,6 C6.79515721,6 7.0129156,6.17687516 7.05807395,6.41012437 L7.06666667,6.5 L7.06666667,11.5 C7.06666667,11.7761424 6.8278852,12 6.53333333,12 C6.27150945,12 6.05375107,11.8231248 6.00859271,11.5898756 L6,11.5 L6,6.5 C6,6.22385763 6.23878147,6 6.53333333,6 Z M9.53333333,6 C9.79515721,6 10.0129156,6.17687516 10.058074,6.41012437 L10.0666667,6.5 L10.0666667,11.5 C10.0666667,11.7761424 9.8278852,12 9.53333333,12 C9.27150945,12 9.05375107,11.8231248 9.00859271,11.5898756 L9,11.5 L9,6.5 C9,6.22385763 9.23878147,6 9.53333333,6 Z M10,1 C10.5128358,1 10.9355072,1.38604019 10.9932723,1.88337887 L11,2 L11,3 L14.5,3 C14.7761424,3 15,3.22385763 15,3.5 C15,3.77614237 14.7761424,4 14.5,4 L1.5,4 C1.22385763,4 1,3.77614237 1,3.5 C1,3.22385763 1.22385763,3 1.5,3 L5,3 L5,2 C5,1.48716416 5.38604019,1.06449284 5.88337887,1.00672773 L6,1 L10,1 Z M10,2 L6,2 L6,3 L10,3 L10,2 Z\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n type OnChanges,\n Output,\n type SimpleChanges,\n} from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-dislike-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './dislike-icon.component.html',\n styleUrls: ['./dislike-icon.component.scss'],\n})\nexport class DislikeIconComponent implements OnChanges {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n\n @Output() activeChange = new EventEmitter<boolean>();\n\n active = this.isActive;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isActive']) {\n this.active = changes['isActive'].currentValue;\n }\n }\n\n handleClick(): void {\n this.active = !this.active;\n this.activeChange.emit(this.active);\n }\n}\n","<div\n class=\"mc-action-item\"\n [title]=\"title\"\n [class.mc-action-item-active]=\"active\"\n (click)=\"handleClick()\"\n>\n <svg\n *ngIf=\"active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 <path\n id=\"矢量 1\"\n d=\"M2.60156 1C1.76611 1 1.08008 1.63953 1.00659 2.45581L1 2.60156L1 8.06506C1 8.90039 1.63965 9.58643 2.45581 9.66003L2.60156 9.66663L3.16675 9.66644C3.44287 9.66644 3.6665 9.4425 3.6665 9.16644L3.6665 1.5C3.6665 1.22388 3.44263 1 3.1665 1L2.60156 1ZM5.6665 1L11.552 1L11.7861 1.00342C13.2422 1.04712 14.1792 1.50781 14.4907 2.44861C14.8108 3.41553 15.1758 5.00916 15.2917 6.29297L15.3098 6.51453L15.3308 6.92529L15.3345 7.12988C15.3438 8.74133 14.8638 9.74072 13.6501 9.74072L9.55591 9.74194L9.60107 9.88098C10.02 11.2178 10.1855 12.2474 10.0869 12.9923C9.89819 14.4197 8.75317 15.6334 7.67651 15.2727L7.55713 15.2261C7.11279 14.9865 6.85327 14.5331 6.70117 13.6534L6.54492 12.7217L6.4978 12.5065L6.43872 12.2728C6.37622 12.0485 6.30347 11.8517 6.21558 11.6747C5.91675 11.0725 5.51904 10.535 5.021 10.0604C4.8042 9.85382 4.6665 9.57355 4.6665 9.27405L4.6665 2C4.6665 1.44769 5.11426 1 5.6665 1Z\"\n fill-rule=\"evenodd\"\n fill=\"currentColor\"\n />\n </svg>\n <svg\n *ngIf=\"!active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 id=\"Dislike\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M11.55205,1 C13.14165,1 14.16285,1.458308 14.49075,2.448728 C14.81075,3.415528 15.17575,5.009158 15.29175,6.292968 L15.29175,6.292968 L15.30985,6.514648 L15.33085,6.925358 C15.38255,8.656368 14.91455,9.740718 13.65015,9.740718 L13.65015,9.740718 L9.55591,9.741028 L9.60108,9.881038 C10.02005,11.217788 10.18555,12.247488 10.08695,12.992388 C9.89815,14.419688 8.75318,15.633388 7.67652,15.272788 L7.67652,15.272788 L7.55713,15.226188 C7.03589,14.992888 6.86426,14.595988 6.70117,13.653488 L6.70117,13.653488 L6.54492,12.721688 L6.4978,12.506488 C6.4231,12.182088 6.33277,11.910688 6.21558,11.674688 C5.8313,10.900988 5.28443,10.233788 4.57056,9.670048 L4.57056,9.670048 L2.60156,9.670288 C1.71704,9.670288 1,8.953248 1,8.068728 L1,8.068728 L1,2.605228 C1,1.720708 1.71704,1.003601 2.60156,1.003601 L2.60156,1.003601 L4.83325,1 Z M11.55205,1.999998 L5.33301,1.999998 L5.33301,9.002988 L5.41699,9.071468 C6.13672,9.686458 6.70239,10.406788 7.11109,11.230088 C7.23584,11.480988 7.33399,11.750888 7.4148,12.050988 L7.50098,12.409088 L7.56079,12.715988 L7.69336,13.519388 C7.69946,13.553388 7.70557,13.586088 7.71167,13.617588 L7.76441,13.867488 C7.83374,14.157988 7.8982,14.283188 7.96558,14.313488 C8.30152,14.463788 8.97461,13.775988 9.09571,12.861188 C9.17749,12.243388 9.00025,11.240388 8.55029,9.880678 C8.51196,9.764348 8.49854,9.641728 8.51099,9.520328 C8.55908,9.045288 8.98218,8.699098 9.45679,8.742858 L13.65015,8.740718 C14.18895,8.740718 14.43655,7.941288 14.29595,6.382938 C14.18755,5.183288 13.83915,3.662168 13.54155,2.762938 L13.50585,2.674618 C13.30125,2.245118 12.68435,1.999998 11.55205,1.999998 Z M4.33277,2.003598 L2.60156,2.003598 C2.26929,2.003598 2,2.272948 2,2.605228 L2,2.605228 L2,8.068668 L2.00781,8.166258 C2.05445,8.452148 2.30249,8.670288 2.60156,8.670288 L2.60156,8.670288 L4.33277,8.670598 L4.33277,2.003598 Z\"\n id=\"形状结合\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Input,\n type OnChanges,\n Output,\n type SimpleChanges,\n} from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-like-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './like-icon.component.html',\n styleUrls: ['./like-icon.component.scss'],\n})\nexport class LikeIconComponent implements OnChanges {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n\n @Output() activeChange = new EventEmitter<boolean>();\n\n active = this.isActive;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['isActive']) {\n this.active = changes['isActive'].currentValue;\n }\n }\n\n handleClick(): void {\n this.active = !this.active;\n this.activeChange.emit(this.active);\n }\n}\n","<div\n class=\"mc-action-item\"\n [title]=\"title\"\n [class.mc-action-item-active]=\"active\"\n (click)=\"handleClick()\"\n>\n <svg\n *ngIf=\"active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\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 <desc>Created with Sketch.</desc>\n <path\n id=\"矢量 1\"\n d=\"M2.60156 15.3369C1.76611 15.3369 1.08008 14.6974 1.00659 13.8811L1 13.7354L1 8.27185C1 7.43652 1.63965 6.75049 2.45581 6.67688L2.60156 6.67029L3.16675 6.67047C3.44287 6.67047 3.6665 6.89441 3.6665 7.17047L3.6665 14.8369C3.6665 15.113 3.44263 15.3369 3.1665 15.3369L2.60156 15.3369ZM5.6665 15.3369L11.552 15.3369L11.7861 15.3335C13.2422 15.2898 14.1792 14.8291 14.4907 13.8883C14.8108 12.9214 15.1758 11.3278 15.2917 10.0439L15.3098 9.82239L15.3308 9.41162L15.3345 9.20703C15.3438 7.59558 14.8638 6.59619 13.6501 6.59619L9.55591 6.59497L9.60107 6.45593C10.02 5.11914 10.1855 4.08948 10.0869 3.3446C9.89819 1.91724 8.75317 0.703491 7.67651 1.06421L7.55713 1.11084C7.11279 1.35046 6.85327 1.80383 6.70117 2.68347L6.54492 3.61523L6.4978 3.83044L6.43872 4.06409C6.37622 4.28845 6.30347 4.48523 6.21558 4.66223C5.91675 5.2644 5.51904 5.80194 5.021 6.27649C4.8042 6.48309 4.6665 6.76337 4.6665 7.06287L4.6665 14.3369C4.6665 14.8892 5.11426 15.3369 5.6665 15.3369Z\"\n fill-rule=\"evenodd\"\n fill=\"currentColor\"\n />\n </svg>\n <svg\n *ngIf=\"!active\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M11.55205,1 C13.14165,1 14.16285,1.458308 14.49075,2.448728 C14.81075,3.415528 15.17575,5.009158 15.29175,6.292968 L15.29175,6.292968 L15.30985,6.514648 L15.33085,6.925358 C15.38255,8.656368 14.91455,9.740718 13.65015,9.740718 L13.65015,9.740718 L9.55591,9.741028 L9.60108,9.881038 C10.02005,11.217788 10.18555,12.247488 10.08695,12.992388 C9.89815,14.419688 8.75318,15.633388 7.67652,15.272788 L7.67652,15.272788 L7.55713,15.226188 C7.03589,14.992888 6.86426,14.595988 6.70117,13.653488 L6.70117,13.653488 L6.54492,12.721688 L6.4978,12.506488 C6.4231,12.182088 6.33277,11.910688 6.21558,11.674688 C5.8313,10.900988 5.28443,10.233788 4.57056,9.670048 L4.57056,9.670048 L2.60156,9.670288 C1.71704,9.670288 1,8.953248 1,8.068728 L1,8.068728 L1,2.605228 C1,1.720708 1.71704,1.003601 2.60156,1.003601 L2.60156,1.003601 L4.83325,1 Z M11.55205,1.999998 L5.33301,1.999998 L5.33301,9.002988 L5.41699,9.071468 L5.6796615,9.30702243 C6.27568484,9.86814941 6.7534775,10.5097005 7.11109,11.230088 C7.23584,11.480988 7.33399,11.750888 7.4148,12.050988 L7.4148,12.050988 L7.50098,12.409088 L7.56079,12.715988 L7.69336,13.519388 L7.702515,13.5694255 L7.702515,13.5694255 L7.71167,13.617588 L7.76441,13.867488 L7.79384741,13.9820728 C7.85221673,14.1918227 7.90782571,14.2875166 7.96558,14.313488 C8.30152,14.463788 8.97461,13.775988 9.09571,12.861188 C9.17749,12.243388 9.00025,11.240388 8.55029,9.880678 C8.51196,9.764348 8.49854,9.641728 8.51099,9.520328 C8.55908,9.045288 8.98218,8.699098 9.45679,8.742858 L9.45679,8.742858 L13.65015,8.740718 L13.7287739,8.73472734 C14.2127395,8.6588777 14.42952,7.8633705 14.29595,6.382938 C14.18755,5.183288 13.83915,3.662168 13.54155,2.762938 L13.54155,2.762938 L13.50585,2.674618 L13.4594021,2.5911944 C13.216706,2.21352476 12.6088633,1.999998 11.55205,1.999998 L11.55205,1.999998 Z M4.33277,2.003598 L2.60156,2.003598 C2.26929,2.003598 2,2.272948 2,2.605228 L2,2.605228 L2,8.068668 L2.00781,8.166258 C2.05445,8.452148 2.30249,8.670288 2.60156,8.670288 L2.60156,8.670288 L4.33277,8.670598 L4.33277,2.003598 Z\"\n id=\"dislike\"\n fill=\"currentColor\"\n transform=\"translate(8.167337, 8.168474) scale(-1, 1) rotate(-180.000000) translate(-8.167337, -8.168474) \"\n ></path>\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-refresh-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './refresh-icon.component.html',\n styleUrls: ['./refresh-icon.component.scss'],\n})\nexport class RefreshIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n >\n <g id=\"Re-generate\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M12.7143179,3.28587475 C13.981136,4.55339434 14.6666667,6.24406622 14.6666667,7.99999694 L14.6661599,8.02257215 C14.6655102,8.03703705 14.6642357,8.05147912 14.6623363,8.06585443 L14.6666667,7.99999694 C14.6666667,8.0371769 14.6626086,8.07340903 14.6549111,8.10827457 C14.6517992,8.1222052 14.6480389,8.13632563 14.6436512,8.15029154 C14.6390061,8.1651613 14.6336213,8.17980434 14.6275902,8.19410809 C14.6231995,8.20453649 14.6185439,8.21463293 14.613534,8.22459678 C14.6049463,8.24162018 14.5952425,8.2583947 14.5846307,8.27451859 C14.5792264,8.282804 14.5735765,8.29085725 14.5676615,8.2987751 C14.5571418,8.31280391 14.5460319,8.32617172 14.5342667,8.33892584 C14.5300122,8.343554 14.5251791,8.34859129 14.5202201,8.35355033 L14.5076464,8.36569453 C14.4940828,8.37834683 14.4798146,8.39025348 14.4649071,8.4013492 L14.5202201,8.35355033 C14.4937641,8.38000631 14.465081,8.40287777 14.4347743,8.42216473 C14.4224394,8.42996083 14.4098046,8.43724836 14.3968374,8.44398448 C14.3832773,8.45105337 14.3694473,8.45743098 14.3554103,8.46314429 C14.3412925,8.46891455 14.3266036,8.47413114 14.3116174,8.47866321 C14.2992824,8.48234275 14.2871467,8.4855024 14.2749295,8.48819956 C14.2606866,8.49139588 14.2459756,8.4939711 14.2310588,8.49588898 C14.2147923,8.49795142 14.1986607,8.49923861 14.1825093,8.49974745 L14.1666667,8.49999694 L14.1666667,8.49999694 L14.1394006,8.49925755 C14.1253117,8.49849283 14.1112491,8.49713493 14.0972533,8.49518384 L14.1666667,8.49999694 C14.1273209,8.49999694 14.0890366,8.49545228 14.05231,8.48685924 C14.0384692,8.48357481 14.0248075,8.47976105 14.0112962,8.4753569 C13.9958192,8.47034085 13.9804276,8.46445184 13.9654221,8.45784679 C13.9544183,8.45302561 13.9434536,8.44772707 13.9326545,8.4420051 C13.9165024,8.43339464 13.9009385,8.4240044 13.8859565,8.41382189 C13.8807017,8.41031248 13.8749119,8.40620635 13.8691922,8.40196243 L13.8550466,8.39103641 C13.8474863,8.38500359 13.8401047,8.3787561 13.8329113,8.37230316 L13.8131133,8.35355033 L12.6151133,7.15555033 C12.4198511,6.96028819 12.4198511,6.6437057 12.6151133,6.44844355 C12.7926243,6.27093251 13.0704001,6.25479514 13.2661411,6.40003145 L13.3222201,6.44844355 L13.498767,6.62598997 C13.2544588,5.64420827 12.7478288,4.73400934 12.0071133,3.99288367 C9.79437542,1.78014581 6.20562458,1.78014581 3.99288672,3.99288367 C1.78014071,6.20562968 1.78014071,9.79375159 3.99288672,12.0071102 C6.20562458,14.2198481 9.79437542,14.2198481 12.0071133,12.0071102 C12.2023754,11.8118481 12.5189579,11.8118481 12.7142201,12.0071102 C12.9094822,12.2023724 12.9094822,12.5189549 12.7142201,12.714217 C10.1109579,15.3174791 5.88904209,15.3174791 3.28573101,12.7141681 C0.682525952,10.1102423 0.682525952,5.88903088 3.28577994,3.28577688 C5.88904209,0.682514739 10.1109579,0.682514739 12.7143179,3.28587475 Z\"\n id=\"形状结合\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\n\n@Component({\n selector: 'mc-share-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './share-icon.component.html',\n styleUrls: ['./share-icon.component.scss'],\n})\nexport class ShareIconComponent {\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\n @Input() isActive: boolean = false;\n @Input() title: string = '';\n @Input() text: string = '';\n}\n","<div class=\"mc-action-item\" [title]=\"title\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n >\n <desc>Created with Sketch.</desc>\n <g id=\"释义图标/分享\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"分享\" fill=\"currentColor\" fill-rule=\"nonzero\">\n <path d=\"M6.3804718,9.82599637 C5.83206631,10.5398588 4.96976903,11 4,11 C2.34314575,11 1,9.65685425 1,8 C1,6.34314575 2.34314575,5 4,5 C4.96976903,5 5.83206631,5.46014123 6.3804718,6.17400363 L10.1006387,4.20450353 C10.0351367,3.98105658 10,3.7446316 10,3.5 C10,2.11928813 11.1192881,1 12.5,1 C13.8807119,1 15,2.11928813 15,3.5 C15,4.88071187 13.8807119,6 12.5,6 C11.7223166,6 11.0275695,5.64490757 10.5690501,5.08801416 L6.84895235,7.0574777 C6.94695785,7.35387727 7,7.67074431 7,8 C7,8.32925569 6.94695785,8.64612273 6.84895235,8.9425223 L10.5690501,10.9119858 C11.0275695,10.3550924 11.7223166,10 12.5,10 C13.8807119,10 15,11.1192881 15,12.5 C15,13.8807119 13.8807119,15 12.5,15 C11.1192881,15 10,13.8807119 10,12.5 C10,12.2553684 10.0351367,12.0189434 10.1006387,11.7954965 L6.3804718,9.82599637 L6.3804718,9.82599637 Z M4,10 C5.1045695,10 6,9.1045695 6,8 C6,6.8954305 5.1045695,6 4,6 C2.8954305,6 2,6.8954305 2,8 C2,9.1045695 2.8954305,10 4,10 Z M12.5,14 C13.3284271,14 14,13.3284271 14,12.5 C14,11.6715729 13.3284271,11 12.5,11 C11.6715729,11 11,11.6715729 11,12.5 C11,13.3284271 11.6715729,14 12.5,14 Z M12.5,5 C13.3284271,5 14,4.32842712 14,3.5 C14,2.67157288 13.3284271,2 12.5,2 C11.6715729,2 11,2.67157288 11,3.5 C11,4.32842712 11.6715729,5 12.5,5 Z\" id=\"形状\"/>\n </g>\n </g>\n </svg>\n</div>\n","export enum ToolbarAction {\n COPY = 'copy',\n LIKE = 'like',\n DISLIKE = 'dislike',\n REFRESH = 'refresh',\n SHARE = 'share',\n DELETE = 'delete',\n}\n\nexport interface ActionItem {\n key: string; // 唯一标识\n icon?: ToolbarAction; // icon部分名称\n label?: string; // 操作项title\n onClick?: (actionItem: ActionItem, e: MouseEvent) => void; // 点击事件\n isActive?: boolean; // 是否激活状态,点赞点踩用\n text?: string; // 需要复制的文本\n}\n","import { CommonModule } from '@angular/common';\nimport {\n type AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n type OnInit,\n Output,\n type QueryList,\n TemplateRef,\n} from '@angular/core';\nimport {\n type ActionItem,\n ToolbarAction,\n} from '../components-common/Toolbar/common/toolbar.types';\nimport {\n TOOLBAR_GAP_DEFAULT_VALUE,\n TOOLBAR_ICON_SIZE_DEFAULT_VALUE,\n} from '../components-common/Toolbar/common/toolbar-constants';\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\nimport { LikeIconComponent } from './like-icon/like-icon.component';\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\nimport { ShareIconComponent } from './share-icon/share-icon.component';\n\n@Component({\n selector: 'mc-toolbar',\n templateUrl: './toolbar.component.html',\n standalone: true,\n imports: [\n CommonModule,\n CopyIconComponent,\n DeleteIconComponent,\n RefreshIconComponent,\n ShareIconComponent,\n LikeIconComponent,\n DislikeIconComponent,\n ],\n styleUrls: ['./toolbar.component.scss'],\n})\nexport class ToolbarComponent implements OnInit, AfterContentInit {\n // 输入属性\n @Input() items: ActionItem[] = [];\n @Input() gap = TOOLBAR_GAP_DEFAULT_VALUE; // 默认间距\n @Input() iconSize = TOOLBAR_ICON_SIZE_DEFAULT_VALUE; // 默认图标大小\n\n // 输出事件\n @Output() onClick = new EventEmitter<{\n item: ActionItem;\n event: MouseEvent;\n }>();\n\n // 关键:获取所有投影进来的 ng-template 模板(包含变量名)\n @ContentChildren(TemplateRef, { read: TemplateRef })\n private allTemplates!: QueryList<TemplateRef<any>>;\n // 用户自定义插槽映射\n CustomSlotComponent = {};\n\n // 响应式操作项(深拷贝避免修改原数据)\n actionItems: ActionItem[] = [];\n\n ToolbarAction = ToolbarAction;\n\n constructor() {}\n\n ngOnInit(): void {\n // 深拷贝输入的items\n this.actionItems = this.items?.map((item) => ({ ...item }));\n // 初始化点赞/点踩互斥\n this.init();\n }\n\n ngAfterContentInit(): void {\n // 初始化阶段:解析所有模板的变量名,构建映射关系\n this.allTemplates.forEach((template: any) => {\n // 通过模板的 nativeElement 获取其变量名(#xxx 中的 xxx)\n const templateName = template._declarationTContainer?.localNames?.[0];\n if (templateName) {\n this.CustomSlotComponent[templateName] = template;\n }\n });\n console.log('ngAfterContentInit', this.CustomSlotComponent);\n }\n\n trackByKey(index: number, item: ActionItem) {\n return item.key;\n }\n\n /** 初始化:确保点赞和点踩不同时激活 */\n private init(): void {\n const likeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.LIKE,\n );\n const dislikeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.DISLIKE,\n );\n\n if (likeAction?.isActive && dislikeAction) {\n dislikeAction.isActive = false;\n }\n }\n\n /** 点赞点击处理:取消点踩状态 */\n private handleLikeClick(): void {\n const dislikeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.DISLIKE,\n );\n if (dislikeAction) {\n dislikeAction.isActive = false;\n }\n }\n\n /** 点踩点击处理:取消点赞状态 */\n private handleDislikeClick(): void {\n const likeAction = this.actionItems.find(\n (item) => item.icon === ToolbarAction.LIKE,\n );\n if (likeAction) {\n likeAction.isActive = false;\n }\n }\n\n /** 操作项点击事件 */\n actionClick(event: MouseEvent, actionItem: ActionItem): void {\n // 处理点赞/点踩互斥\n if (actionItem.icon === ToolbarAction.LIKE) {\n this.handleLikeClick();\n } else if (actionItem.icon === ToolbarAction.DISLIKE) {\n this.handleDislikeClick();\n }\n console.log('actionClick', event, actionItem);\n\n // 执行item自身的点击回调\n if (actionItem.onClick) {\n actionItem.onClick(actionItem, event);\n }\n\n // 触发组件输出事件\n this.onClick.emit({ item: actionItem, event });\n }\n\n /** 激活状态变更 */\n activeChange(isActive: boolean, actionItem: ActionItem): void {\n actionItem.isActive = isActive;\n }\n}\n","<div class=\"mc-actions\" [style.gap.px]=\"gap\">\n <!-- 遍历操作项 -->\n <ng-container *ngFor=\"let item of actionItems; trackBy: trackByKey\">\n <!-- 整个操作项自定义 -->\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key]\"></ng-container>\n\n <ng-container *ngIf=\"!CustomSlotComponent[item.key]\">\n <!-- 只自定义Icon部分 -->\n <div\n *ngIf=\"CustomSlotComponent[item.key + 'Icon']\"\n class=\"mc-action-item\"\n [title]=\"item.label\"\n (click)=\"actionClick($event, item)\"\n >\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key + 'Icon']; context: { actionData: item }\"></ng-container>\n </div>\n\n <!-- 完全使用内置组件情况 -->\n <mc-copy-icon\n *ngIf=\"item.icon === ToolbarAction.COPY\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [text]=\"item.text ?? ''\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-copy-icon>\n <mc-delete-icon\n *ngIf=\"item.icon === ToolbarAction.DELETE\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-delete-icon>\n <mc-refresh-icon\n *ngIf=\"item.icon === ToolbarAction.REFRESH\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-refresh-icon>\n <mc-share-icon\n *ngIf=\"item.icon === ToolbarAction.SHARE\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (click)=\"actionClick($event, item)\"\n ></mc-share-icon>\n <mc-like-icon\n *ngIf=\"item.icon === ToolbarAction.LIKE\"\n [isActive]=\"item.isActive ?? false\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (activeChange)=\"activeChange($event, item)\"\n (click)=\"actionClick($event, item)\"\n ></mc-like-icon>\n <mc-dislike-icon\n *ngIf=\"item.icon === ToolbarAction.DISLIKE\"\n [isActive]=\"item.isActive ?? false\"\n [width]=\"iconSize\"\n [height]=\"iconSize\"\n [title]=\"item.label ?? ''\"\n (activeChange)=\"activeChange($event, item)\"\n (click)=\"actionClick($event, item)\"\n ></mc-dislike-icon>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// 导入所有图标组件\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\nimport { LikeIconComponent } from './like-icon/like-icon.component';\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\nimport { ShareIconComponent } from './share-icon/share-icon.component';\nimport { ToolbarComponent } from './toolbar.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n ToolbarComponent,\n CopyIconComponent,\n DeleteIconComponent,\n RefreshIconComponent,\n ShareIconComponent,\n LikeIconComponent,\n DislikeIconComponent,\n ],\n exports: [\n ToolbarComponent,\n CopyIconComponent,\n DeleteIconComponent,\n RefreshIconComponent,\n ShareIconComponent,\n LikeIconComponent,\n DislikeIconComponent,\n ],\n})\nexport class ToolbarModule {}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\n\nexport interface PromptAdapter extends DefaultAdapter {}\n\nexport class PromptFoundation extends BaseFoundation<PromptAdapter> {\n constructor(adapter: PromptAdapter) {\n super({ ...adapter });\n }\n}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\n\nexport interface PromptItemAdapter extends DefaultAdapter {}\n\nexport class PromptItemFoundation extends BaseFoundation<PromptItemAdapter> {\n constructor(adapter: PromptItemAdapter) {\n super({ ...adapter });\n }\n}\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\n\nexport interface PromptIconAdapter extends DefaultAdapter {}\n\nexport class PromptIconFoundation extends BaseFoundation<PromptIconAdapter> {\n constructor(adapter: PromptIconAdapter) {\n super({ ...adapter });\n }\n\n getIconSize(): string {\n const { size } = this.getProps();\n return typeof size === 'number' ? `${size}px` : size;\n }\n getFontIconClass(): string {\n const { name } = this.getProps();\n return /^icon-/.test(name) ? name : '';\n }\n getIsComponent(): boolean {\n const { component } = this.getProps();\n return !!component;\n }\n getIsUrl(): boolean {\n const { name } = this.getProps();\n return /^((http|https):)?\\/\\//.test(name);\n }\n getImageAlt(): string {\n const { name } = this.getProps();\n return name.split('/').pop() || '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\nimport BaseComponent from '../../Base/base.component';\nimport {\n type PromptIconAdapter,\n PromptIconFoundation,\n} from '../../components-common/Prompt/icon-foundation';\n\n@Component({\n selector: 'mc-prompt-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './prompt-icon.component.html',\n styleUrls: ['./prompt-icon.component.scss'],\n})\nexport class PromptIconComponent extends BaseComponent<PromptIconFoundation> {\n @Input() name: string = '';\n @Input() color: string | undefined = '';\n @Input() size: number | string | undefined = '';\n @Input() component?: any;\n\n @ViewChild('dynamicIconComponent', { read: ViewContainerRef })\n iconComponent!: ViewContainerRef;\n\n override get adapter(): PromptIconAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n name: this.name,\n color: this.color,\n size: this.size,\n component: this.component,\n }),\n };\n }\n get iconSize() {\n return this.foundation.getIconSize();\n }\n get fontIconClass() {\n return this.foundation.getFontIconClass();\n }\n get isComponent() {\n return this.foundation.getIsComponent();\n }\n get isUrl() {\n return this.foundation.getIsUrl();\n }\n get imageAlt() {\n return this.foundation.getImageAlt();\n }\n ngOnInit() {\n this.foundation = new PromptIconFoundation(this.adapter);\n this.foundation.init();\n }\n ngAfterViewInit() {\n this.loadIconComponent();\n }\n loadIconComponent() {\n if (!this.isComponent) {\n return;\n }\n this.iconComponent.createComponent(this.component);\n }\n}\n","<div class=\"mc-prompt-icon\">\n <ng-container *ngIf=\"isComponent\" #dynamicIconComponent>\n </ng-container>\n \n <img\n *ngIf=\"!isComponent && isUrl\"\n [src]=\"name\"\n [alt]=\"imageAlt\"\n [style]=\"{ width: iconSize || '', verticalAlign: 'middle' }\"\n />\n \n <i\n *ngIf=\"!isComponent && !isUrl\"\n [class]=\"fontIconClass\"\n [style.fontSize]=\"iconSize\"\n [style.color]=\"color\"\n ></i>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport BaseComponent from '../../Base/base.component';\nimport type { Prompt } from '../../components-common/Prompt/common/prompt-types';\nimport {\n type PromptItemAdapter,\n PromptItemFoundation,\n} from '../../components-common/Prompt/item-foundation';\nimport { PromptIconComponent } from '../prompt-icon/prompt-icon.component';\n\n@Component({\n selector: 'mc-prompt-item',\n standalone: true,\n imports: [CommonModule, PromptIconComponent],\n templateUrl: './prompt-item.component.html',\n styleUrls: ['./prompt-item.component.scss'],\n})\nexport class PromptItemComponent extends BaseComponent<PromptItemFoundation> {\n // 组件属性\n @Input() prompt: Prompt = {} as Prompt;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.foundation = new PromptItemFoundation(this.adapter);\n this.foundation.init();\n }\n\n override get adapter(): PromptItemAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n prompt: this.prompt,\n }),\n };\n }\n}\n","<div *ngIf=\"prompt\" class=\"mc-prompt-item\">\n <div class=\"mc-prompt-item-icon\" [ngClass]=\"{ 'no-description': !prompt.desc }\">\n <mc-prompt-icon\n *ngIf=\"prompt.iconConfig\"\n [name]=\"prompt.iconConfig.name\"\n [color]=\"prompt.iconConfig.color\"\n [size]=\"prompt.iconConfig.size\"\n [component]=\"prompt.iconConfig.component\"\n />\n </div>\n <div *ngIf=\"prompt.label || prompt.desc\" class=\"mc-prompt-item-content\">\n <div *ngIf=\"prompt.label\" class=\"mc-prompt-item-label\">{{ prompt.label }}</div>\n <div *ngIf=\"prompt.desc\" class=\"mc-prompt-item-description\">{{ prompt.desc }}</div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport BaseComponent from '../Base/base.component';\nimport type { Prompt } from '../components-common/Prompt/common/prompt-types';\nimport {\n type PromptAdapter,\n PromptFoundation,\n} from '../components-common/Prompt/foundation';\nimport { ListDirection, ListModule, ListVariant } from '../List/index';\nimport { PromptItemComponent } from './prompt-item/prompt-item.component';\n\n@Component({\n selector: 'mc-prompt',\n standalone: true,\n imports: [CommonModule, ListModule, PromptItemComponent],\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n})\nexport class PromptComponent extends BaseComponent<PromptFoundation> {\n // 组件属性\n @Input() direction: ListDirection = ListDirection.Vertical;\n @Input() list: Prompt[] = [];\n @Input() variant: ListVariant = ListVariant.Filled;\n\n @Output() itemClick = new EventEmitter<Prompt>();\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.foundation = new PromptFoundation(this.adapter);\n this.foundation.init();\n }\n\n override get adapter(): PromptAdapter {\n return {\n ...super.adapter,\n getProps: () => ({\n direction: this.direction,\n list: this.list,\n variant: this.variant,\n }),\n };\n }\n\n handleItemClick(item: Prompt) {\n this.itemClick.emit(item);\n }\n}\n","<div class=\"mc-prompt\">\n <mc-list [data]=\"list\" [direction]=\"direction\" [variant]=\"variant\" [selectable]=\"false\">\n <ng-template #item let-item>\n <mc-prompt-item\n [prompt]=\"item\"\n (click)=\"handleItemClick(item)\"\n ></mc-prompt-item>\n </ng-template>\n </mc-list>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PromptComponent } from './prompt.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, PromptComponent],\n exports: [PromptComponent],\n})\nexport class PromptModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-aside',\n standalone: true,\n templateUrl: './aside.component.html',\n styleUrls: ['./aside.component.scss']\n})\nexport class LayoutAsideComponent {\n\n}","<div class=\"mc-layout-aside\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutAsideComponent } from './aside.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutAsideComponent,\n ],\n exports: [\n LayoutAsideComponent,\n ]\n})\nexport class LayoutAsideModule { }","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-content',\n standalone: true,\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.scss']\n})\nexport class LayoutContentComponent {\n\n}","<div class=\"mc-layout-content\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutContentComponent } from './content.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutContentComponent,\n ],\n exports: [\n LayoutContentComponent,\n ]\n})\nexport class LayoutContentModule { }","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-header',\n standalone: true,\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class LayoutHeaderComponent {\n\n}","<div class=\"mc-layout-header\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutHeaderComponent } from './header.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutHeaderComponent,\n ],\n exports: [\n LayoutHeaderComponent,\n ]\n})\nexport class LayoutHeaderModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout',\n standalone: true,\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss']\n})\nexport class LayoutComponent {\n\n}","<div class=\"mc-layout\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutComponent } from './layout.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutComponent,\n ],\n exports: [\n LayoutComponent,\n ]\n})\nexport class LayoutModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mc-layout-sender',\n standalone: true,\n templateUrl: './sender.component.html',\n styleUrls: ['./sender.component.scss']\n})\nexport class LayoutSenderComponent {\n\n}","<div class=\"mc-layout-sender\">\n <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LayoutSenderComponent } from './sender.component';\n\n@NgModule({\n declarations: [\n \n ],\n imports: [\n CommonModule,\n LayoutSenderComponent,\n ],\n exports: [\n LayoutSenderComponent,\n ]\n})\nexport class LayoutSenderModule { }\n","/*\n * Public API Surface of components-ng\n */\n\nexport * from './Attachment/index';\nexport * from './Bubble/index';\nexport * from './Header/index';\nexport * from './Input/index';\nexport * from './Introduction/index';\nexport * from './List/index';\nexport * from './Locale/index';\nexport * from './MarkdownCard/index';\nexport * from './Mention/index';\nexport * from './Toolbar/index';\nexport * from './Prompt/index';\nexport * from './Layout/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocaleService","i2","ArrowUp","ArrowDown","i2.TranslatePipe"],"mappings":"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"}
|