@matechat/ng 20.4.0-alpha.0 → 20.4.0

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.
@@ -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/FileList/Teleport/teleport.component.ts","../../../projects/components-ng/src/components-common/FileList/foundation.ts","../../../projects/components-ng/src/FileList/FileIcon/file-icon.component.ts","../../../projects/components-ng/src/FileList/FileIcon/file-icon.component.html","../../../projects/components-ng/src/Locale/locale.module.ts","../../../projects/components-ng/src/Locale/index.ts","../../../projects/components-ng/src/FileList/file-list.component.ts","../../../projects/components-ng/src/FileList/file-list.component.html","../../../projects/components-ng/src/FileList/file-list.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/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/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/components-common/Layout/content-foundation.ts","../../../projects/components-ng/src/Layout/content/arrow-down/arrow-down.component.ts","../../../projects/components-ng/src/Layout/content/arrow-down/arrow-down.component.html","../../../projects/components-ng/src/Layout/content/arrow-up/arrow-up.component.ts","../../../projects/components-ng/src/Layout/content/arrow-up/arrow-up.component.html","../../../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/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/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/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/public-api.ts","../../../projects/components-ng/src/matechat-ng.ts"],"sourcesContent":["export default {\r\n Input: {\r\n send: '发送',\r\n pauseAnswer: '停止回答',\r\n pleaseEnter: '请输入您的问题...',\r\n pleaseEnterPlaceholder:\r\n '请输入您的问题,并按{enterKey}发送,按{shiftEnterKey}换行',\r\n ariaLabel: '输入框',\r\n },\r\n Md: {\r\n toggle: '收起/展开',\r\n copy: '复制',\r\n diagram: '图形',\r\n code: '代码',\r\n zoomIn: '放大',\r\n zoomOut: '缩小',\r\n downLoad: '下载',\r\n },\r\n Bubble: {\r\n ariaLabel: '聊天消息气泡',\r\n emptyAvatar: '无头像占位',\r\n userName: '用户名称: {name}',\r\n content: '消息内容',\r\n avatar: '用户头像: {name}',\r\n },\r\n Attachment: {\r\n dragToUpload: '拖拽到此处上传',\r\n },\r\n FileList: {\r\n uploadFailed: '上传失败',\r\n downloadFailed: '下载失败',\r\n retry: '重试',\r\n download: '下载',\r\n preview: '预览',\r\n uploading: '上传中...',\r\n downloading: '下载中...',\r\n remove: '删除',\r\n unsupportedPreview: '浏览器不支持预览此文件类型:{fileName}',\r\n tryDownload: '请尝试下载后查看',\r\n close: '关闭',\r\n },\r\n};\r\n","export default {\r\n Input: {\r\n send: 'Send',\r\n pauseAnswer: 'Stop',\r\n pleaseEnter: 'Please enter your question...',\r\n pleaseEnterPlaceholder:\r\n 'Please enter your question and press {enterKey} to send, {shiftEnterKey} to wrap.',\r\n ariaLabel: 'Input box',\r\n },\r\n Md: {\r\n toggle: 'Collapse/Expand',\r\n copy: 'Copy',\r\n diagram: 'Diagram',\r\n code: 'Code',\r\n zoomIn: 'Zoom In',\r\n zoomOut: 'Zoom Out',\r\n downLoad: 'Download',\r\n },\r\n Bubble: {\r\n ariaLabel: 'Chat message bubble',\r\n emptyAvatar: 'Empty avatar placeholder',\r\n userName: 'User name: {name}',\r\n content: 'Message content',\r\n avatar: 'User avatar: {name}',\r\n },\r\n Attachment: {\r\n dragToUpload: 'Drag to upload',\r\n },\r\n FileList: {\r\n uploadFailed: 'Upload failed',\r\n downloadFailed: 'Download failed',\r\n retry: 'Retry',\r\n download: 'Download',\r\n preview: 'Preview',\r\n uploading: 'Uploading...',\r\n downloading: 'Downloading...',\r\n remove: 'Remove',\r\n unsupportedPreview:\r\n 'Browser does not support previewing this file type: {fileName}',\r\n tryDownload: 'Please try downloading to view',\r\n close: 'Close',\r\n },\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport zhCN from '../components-common/Locale/lang/zh-cn';\r\nimport enUS from '../components-common/Locale/lang/en-us';\r\n\r\n// 定义语言包接口\r\nexport interface LocaleData {\r\n [key: string]: any;\r\n}\r\n\r\n// 定义支持的语言类型\r\nexport type LanguageCode = 'zh-cn' | 'en-us' | string;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocaleService {\r\n // 当前语言\r\n private _currentLanguage: LanguageCode = 'zh-cn';\r\n // 语言包存储\r\n private _localeData: Map<LanguageCode, LocaleData> = new Map();\r\n // 语言变更通知\r\n private _languageChange = new Subject<LanguageCode>();\r\n // 公开语言变更Observable\r\n languageChange$ = this._languageChange.asObservable();\r\n\r\n constructor() {\r\n // 首先尝试从localStorage获取语言设置\r\n const savedLang = localStorage.getItem('lang');\r\n if (savedLang) {\r\n this._currentLanguage = savedLang;\r\n }\r\n \r\n // 初始化默认语言包\r\n this.loadDefaultLocales();\r\n }\r\n\r\n /**\r\n * 加载默认语言包\r\n */\r\n private async loadDefaultLocales(): Promise<void> {\r\n try {\r\n // 动态导入默认语言包\r\n\r\n this._localeData.set('zh-cn', zhCN);\r\n this._localeData.set('en-us', enUS);\r\n } catch (error) {\r\n console.error('Failed to load default locales:', error);\r\n }\r\n }\r\n\r\n /**\r\n * 设置当前语言\r\n */\r\n setLanguage(language: LanguageCode): void {\r\n if (this._currentLanguage !== language) {\r\n this._currentLanguage = language;\r\n // 保存到localStorage\r\n localStorage.setItem('lang', language);\r\n this._languageChange.next(language);\r\n }\r\n }\r\n\r\n /**\r\n * 获取当前语言\r\n */\r\n getLanguage(): LanguageCode {\r\n return this._currentLanguage;\r\n }\r\n\r\n /**\r\n * 翻译文本\r\n * @param key 翻译键,支持嵌套路径如 'Input.send'\r\n * @param params 替换参数\r\n */\r\n translate(key: string, params?: { [key: string]: string | number }): string {\r\n if (!key) return key;\r\n\r\n // 获取当前语言的语言包\r\n const localeData = this._localeData.get(this._currentLanguage) || {};\r\n \r\n // 解析嵌套键\r\n const keys = key.split('.');\r\n let value: any = localeData;\r\n \r\n for (const k of keys) {\r\n if (value && typeof value === 'object' && k in value) {\r\n value = value[k];\r\n } else {\r\n // 如果键不存在,返回原始键\r\n return key;\r\n }\r\n }\r\n\r\n // 处理替换参数\r\n if (typeof value === 'string' && params) {\r\n let result = value;\r\n for (const [paramKey, paramValue] of Object.entries(params)) {\r\n const regex = new RegExp(`\\\\{${paramKey}\\\\}`, 'g');\r\n result = result.replace(regex, String(paramValue));\r\n }\r\n return result;\r\n }\r\n\r\n return value as string;\r\n }\r\n\r\n /**\r\n * 添加新的语言\r\n */\r\n addLanguage(language: LanguageCode, localeData: LocaleData): void {\r\n this._localeData.set(language, localeData);\r\n }\r\n\r\n /**\r\n * 覆盖现有语言的部分翻译\r\n */\r\n overrideLocale(language: LanguageCode, localeData: LocaleData): void {\r\n if (this._localeData.has(language)) {\r\n const existingLocale = this._localeData.get(language) || {};\r\n // 深度合并语言包\r\n const mergedLocale = this.deepMerge(existingLocale, localeData);\r\n this._localeData.set(language, mergedLocale);\r\n } else {\r\n // 如果语言不存在,则添加新语言\r\n this.addLanguage(language, localeData);\r\n }\r\n }\r\n\r\n /**\r\n * 获取所有支持的语言\r\n */\r\n getSupportedLanguages(): LanguageCode[] {\r\n return Array.from(this._localeData.keys());\r\n }\r\n\r\n /**\r\n * 深度合并对象\r\n */\r\n private deepMerge(target: any, source: any): any {\r\n const result = { ...target };\r\n \r\n for (const key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n if (source[key] instanceof Object && key in target) {\r\n result[key] = this.deepMerge(target[key], source[key]);\r\n } else {\r\n result[key] = source[key];\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n}","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\nimport { LocaleService } from './locale.service';\r\n\r\n/**\r\n * 翻译管道,用于在Angular模板中直接使用翻译功能\r\n * 用法:{{ 'Input.send' | translate }}\r\n * 带参数:{{ 'Input.pleaseEnterPlaceholder' | translate:{ enterKey: 'Enter', shiftEnterKey: 'Shift + Enter' } }}\r\n */\r\n@Pipe({\r\n name: 'translate',\r\n pure: false, // 设置为非纯管道,以便在语言变化时自动更新视图\r\n standalone: true // 标记为standalone,以便在standalone组件中直接使用\r\n})\r\n@Injectable()\r\nexport class TranslatePipe implements PipeTransform {\r\n constructor(private localeService: LocaleService) {}\r\n\r\n /**\r\n * 转换方法,实现PipeTransform接口\r\n * @param key 翻译键\r\n * @param params 替换参数\r\n */\r\n transform(key: string, params?: { [key: string]: string | number }): string {\r\n if (!key) return key;\r\n \r\n // 调用LocaleService的翻译方法\r\n return this.localeService.translate(key, params);\r\n }\r\n}","import type { FileItem, UploadOptions } from './attachment-types';\r\n\r\ninterface UploaderOptions {\r\n file: File;\r\n fileItem: FileItem;\r\n options: UploadOptions;\r\n onProgress: (percentage: number) => void;\r\n onSuccess: (response: unknown) => void;\r\n onError: (error: unknown) => void;\r\n}\r\n\r\nexport function upload(config: UploaderOptions): void {\r\n const { file, options, onProgress, onSuccess, onError } = config;\r\n\r\n const xhr = new XMLHttpRequest();\r\n\r\n // 进度回调\r\n xhr.upload.onprogress = (e: ProgressEvent) => {\r\n if (e.lengthComputable) {\r\n const percentage = Math.round((e.loaded * 100) / e.total);\r\n onProgress(percentage);\r\n }\r\n };\r\n\r\n // 错误处理\r\n xhr.onerror = () => {\r\n onError({\r\n message: 'Upload failed due to a network error.',\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n });\r\n };\r\n\r\n // 响应处理\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const response =\r\n options.responseType === 'text' || !xhr.response\r\n ? xhr.responseText\r\n : xhr.response;\r\n onSuccess(response);\r\n } else {\r\n onError({\r\n message: `Upload failed with status: ${xhr.status}`,\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n response: xhr.response,\r\n });\r\n }\r\n };\r\n\r\n // 准备 FormData\r\n const formData = new FormData();\r\n const fileFieldName = options.fileFieldName || 'file';\r\n formData.append(fileFieldName, file, file.name);\r\n\r\n if (options.additionalParameter) {\r\n for (const key of Object.keys(options.additionalParameter)) {\r\n formData.append(key, options.additionalParameter[key]);\r\n }\r\n }\r\n\r\n // 打开请求\r\n xhr.open(options.method || 'POST', options.uri, true);\r\n\r\n // 设置 withCredentials\r\n if (options.withCredentials) {\r\n xhr.withCredentials = true;\r\n }\r\n\r\n // 设置 responseType\r\n if (options.responseType) {\r\n xhr.responseType = options.responseType;\r\n }\r\n\r\n // 设置 Headers\r\n if (options.headers) {\r\n for (const key of Object.keys(options.headers)) {\r\n xhr.setRequestHeader(key, options.headers[key]);\r\n }\r\n }\r\n\r\n // 设置认证 Token\r\n if (options.authToken) {\r\n const authTokenHeader = options.authTokenHeader || 'Authorization';\r\n xhr.setRequestHeader(authTokenHeader, options.authToken);\r\n }\r\n\r\n // 发送请求\r\n xhr.send(formData);\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n Renderer2,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-drop-area',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './drop-area.component.html',\r\n styleUrls: ['./drop-area.component.scss'],\r\n})\r\nexport class DropAreaComponent implements AfterViewInit, OnDestroy {\r\n @Input() getDropContainer: () => HTMLElement;\r\n @Input() isDisabled: boolean = false;\r\n @Output() drop = new EventEmitter<File[]>();\r\n\r\n @ViewChild('dropArea') dropAreaEl!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef){}\r\n\r\n container: HTMLElement;\r\n isDragging = false;\r\n // 使用计数器来跟踪 dragenter 和 dragleave 事件,防止进入子元素导致的状态变化\r\n dragCounter = 0;\r\n dragEnterListener: () => void;\r\n dragOverListener: () => void;\r\n dragLeaveListener: () => void;\r\n dropListener: () => void;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['getDropContainer'] && this.getDropContainer) {\r\n const newContainer = this.getDropContainer();\r\n if (this.container !== newContainer) {\r\n this.container = newContainer;\r\n }\r\n }\r\n }\r\n\r\n handleDragEnter = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.dragCounter++;\r\n if (this.dragCounter === 1) {\r\n this.isDragging = true;\r\n this.cdr.detectChanges();\r\n }\r\n if (this.container && this.dropAreaEl.nativeElement) {\r\n if (this.container === document.body) {\r\n this.dropAreaEl.nativeElement.style.inset = '0';\r\n } else {\r\n const { x, y, width, height } = this.container.getBoundingClientRect();\r\n this.dropAreaEl.nativeElement.style.width = `${width}px`;\r\n this.dropAreaEl.nativeElement.style.height = `${height}px`;\r\n this.dropAreaEl.nativeElement.style.top = `${y}px`;\r\n this.dropAreaEl.nativeElement.style.left = `${x}px`;\r\n }\r\n }\r\n };\r\n handleDragOver = (e: DragEvent) => {\r\n e.preventDefault();\r\n };\r\n\r\n handleDragLeave = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.dragCounter--;\r\n if (this.dragCounter === 0) {\r\n this.isDragging = false;\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n handleDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.isDragging = false;\r\n this.cdr.detectChanges();\r\n this.dragCounter = 0; // 重置计数器\r\n if (this.isDisabled) return;\r\n\r\n const files = Array.from(e.dataTransfer?.files || []);\r\n if (files.length > 0) {\r\n this.drop.emit(files);\r\n }\r\n };\r\n onBodyDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.isDragging = false;\r\n this.cdr.detectChanges();\r\n this.dragCounter = 0;\r\n };\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.appendChild(document.body, this.dropAreaEl.nativeElement);\r\n if (this.getDropContainer) {\r\n this.container = this.getDropContainer();\r\n }\r\n this.dragEnterListener = this.renderer.listen(document.body, 'dragenter', this.handleDragEnter);\r\n this.dragOverListener = this.renderer.listen(document.body, 'dragover', this.handleDragOver);\r\n this.dragLeaveListener = this.renderer.listen(document.body, 'dragleave', this.handleDragLeave);\r\n this.dropListener = this.renderer.listen(document.body, 'drop', this.onBodyDrop);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dragEnterListener?.();\r\n this.dragOverListener?.();\r\n this.dragLeaveListener?.();\r\n this.dropListener?.();\r\n }\r\n}\r\n","<div\r\n #dropArea\r\n [ngClass]=\"{\r\n 'mc-attachment-drop-area': true,\r\n 'hide-drop-area': !isDragging,\r\n }\"\r\n (drop)=\"handleDrop($event)\"\r\n>\r\n <ng-content />\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n ContentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslatePipe } from '../Locale/translate.pipe';\r\nimport type {\r\n UploadOptions,\r\n BeforeUpload,\r\n ChangeEventArg,\r\n SuccessEventArg,\r\n ErrorEventArg,\r\n ProgressEventArg,\r\n IValidResult,\r\n FileItem,\r\n} from './attachment-types';\r\nimport { upload } from '../components-common/Attachment/common/uploader';\r\nimport { DropAreaComponent } from './drop-area/drop-area.component';\r\n\r\n@Component({\r\n selector: 'mc-attachment',\r\n standalone: true,\r\n imports: [CommonModule, TranslatePipe, DropAreaComponent],\r\n templateUrl: './attachment.component.html',\r\n styleUrls: ['./attachment.component.scss'],\r\n})\r\nexport class AttachmentComponent {\r\n @Input() uploadOptions: UploadOptions = { uri: '' };\r\n @Input() disabled: boolean = false;\r\n @Input() accept: string = '';\r\n @Input() dropPlaceholder: string | undefined;\r\n @Input() maxCount: number = Number.POSITIVE_INFINITY;\r\n @Input() maxSize: number = Number.POSITIVE_INFINITY;\r\n @Input() multiple: boolean = true;\r\n @Input() draggable: boolean = true;\r\n @Input() beforeUpload: BeforeUpload;\r\n @Input() getDropContainer: () => HTMLElement;\r\n\r\n @Output() change = new EventEmitter<ChangeEventArg>();\r\n @Output() success = new EventEmitter<SuccessEventArg>();\r\n @Output() error = new EventEmitter<ErrorEventArg>();\r\n @Output() progress = new EventEmitter<ProgressEventArg>();\r\n @Output() drop = new EventEmitter<File[]>();\r\n @Output() validChange = new EventEmitter<IValidResult[]>();\r\n\r\n @ContentChild('dropPlaceholder')\r\n dropPlaceholderTemplate: TemplateRef<any> | null = null;\r\n\r\n @ViewChild('input') inputEl!: ElementRef<HTMLInputElement>;\r\n\r\n fileList: FileItem[] = [];\r\n uid = Date.now();\r\n\r\n get isDisabled() {\r\n return this.disabled || this.fileList.length >= this.maxCount;\r\n }\r\n\r\n onDrop(e: File[]) {\r\n this.uploadFiles(e);\r\n this.drop.emit(e);\r\n }\r\n\r\n getFileItem = (file: File): FileItem => {\r\n const localUrl = URL.createObjectURL(file);\r\n return {\r\n uid: this.uid++,\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n status: 'uploading',\r\n percentage: 0,\r\n url: localUrl,\r\n thumbUrl: localUrl,\r\n };\r\n };\r\n\r\n uploadFiles = async (files: File[]) => {\r\n if (files.length === 0) return;\r\n\r\n // 检查文件数量限制\r\n if (this.fileList.length + files.length > this.maxCount) {\r\n this.validChange.emit([{ type: 'exceedCount' }]);\r\n return;\r\n }\r\n\r\n const validFiles: File[] = [];\r\n const validRes: IValidResult[] = [];\r\n\r\n // 2. 遍历并校验每个文件\r\n for (const file of files) {\r\n let isFileValid = true;\r\n\r\n // 2.1 文件类型校验\r\n if (this.accept && this.accept !== '*') {\r\n const acceptedTypes = this.accept\r\n .split(',')\r\n .map((t) => t.trim().toLowerCase());\r\n const fileType = file.type.toLowerCase();\r\n const fileName = file.name.toLowerCase();\r\n const isTypeValid = acceptedTypes.some((type) => {\r\n if (type.endsWith('/*'))\r\n return fileType.startsWith(type.slice(0, -1));\r\n if (type.startsWith('.')) return fileName.endsWith(type);\r\n return fileType === type;\r\n });\r\n\r\n if (!isTypeValid) {\r\n validRes.push({ type: 'unsupportedFileType', file });\r\n isFileValid = false;\r\n }\r\n }\r\n\r\n // 2.2 文件大小校验\r\n if (isFileValid && file.size / 1024 / 1024 > this.maxSize) {\r\n validRes.push({ type: 'exceedSizeLimit', file });\r\n isFileValid = false;\r\n }\r\n\r\n // 2.3 上传前钩子校验\r\n if (isFileValid && this.beforeUpload) {\r\n try {\r\n const result = await Promise.resolve(this.beforeUpload(file));\r\n if (result === false) {\r\n validRes.push({ type: 'beforeUploadRejected', file });\r\n isFileValid = false;\r\n }\r\n } catch (e) {\r\n validRes.push({ type: 'beforeUploadRejected', file });\r\n isFileValid = false;\r\n }\r\n }\r\n\r\n if (isFileValid) {\r\n validFiles.push(file);\r\n }\r\n }\r\n\r\n if (validRes.length > 0) {\r\n this.validChange.emit(validRes);\r\n }\r\n\r\n // 只处理通过所有校验的有效文件\r\n if (validFiles.length === 0) return;\r\n\r\n for (const file of validFiles) {\r\n const fileItem = this.getFileItem(file);\r\n this.fileList.push(fileItem);\r\n this.change.emit({ file, fileList: [...this.fileList] });\r\n this.performUpload(file, fileItem);\r\n }\r\n };\r\n\r\n // 执行上传\r\n performUpload = (file: File, fileItem: FileItem) => {\r\n const findFileIndex = () =>\r\n this.fileList.findIndex((item) => item.uid === fileItem.uid);\r\n\r\n upload({\r\n file,\r\n fileItem,\r\n options: this.uploadOptions,\r\n onProgress: (percentage: number) => {\r\n const index = findFileIndex();\r\n if (index > -1) {\r\n this.fileList[index].percentage = percentage;\r\n this.progress.emit({ file, fileList: [...this.fileList] });\r\n }\r\n },\r\n onSuccess: (response: unknown) => {\r\n const index = findFileIndex();\r\n if (index > -1) {\r\n this.fileList[index].status = 'success';\r\n this.fileList[index].response = response;\r\n this.success.emit({ file, response, fileList: [...this.fileList] });\r\n }\r\n },\r\n onError: (error: unknown) => {\r\n const index = findFileIndex();\r\n if (index > -1) {\r\n this.fileList[index].status = 'uploadError';\r\n this.fileList[index].error = error;\r\n this.error.emit({ file, error, fileList: [...this.fileList] });\r\n }\r\n },\r\n });\r\n };\r\n\r\n handleFileChange = (e: Event) => {\r\n const files = (e.target as HTMLInputElement).files;\r\n if (files) {\r\n this.uploadFiles(Array.from(files));\r\n }\r\n };\r\n\r\n handleClick() {\r\n if (this.isDisabled) {\r\n return;\r\n }\r\n this.inputEl.nativeElement.click();\r\n }\r\n}\r\n","<div\r\n class=\"mc-attachment\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"{ 'is-disabled': isDisabled }\"\r\n>\r\n <ng-content></ng-content>\r\n <input\r\n #input\r\n type=\"file\"\r\n class=\"mc-attachment-file\"\r\n [accept]=\"accept\"\r\n [multiple]=\"multiple\"\r\n [disabled]=\"isDisabled\"\r\n (change)=\"handleFileChange($event)\"\r\n />\r\n <mc-drop-area\r\n *ngIf=\"draggable\"\r\n [getDropContainer]=\"getDropContainer\"\r\n [isDisabled]=\"isDisabled\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n <ng-container *ngIf=\"dropPlaceholderTemplate; else defaultFooterButton\">\r\n <ng-container\r\n *ngIf=\"dropPlaceholderTemplate; then dropPlaceholderTemplate\"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultFooterButton>\r\n {{ dropPlaceholder ?? (\"Attachment.dragToUpload\" | translate) }}\r\n </ng-template>\r\n </mc-drop-area>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AttachmentComponent } from './attachment.component';\r\nimport { DropAreaComponent } from './drop-area/drop-area.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, DropAreaComponent, AttachmentComponent],\r\n exports: [AttachmentComponent],\r\n})\r\nexport class AttachmentModule {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-bubble-loading',\r\n standalone: true,\r\n templateUrl: './bubble-loading.component.html',\r\n styleUrls: ['./bubble-loading.component.scss']\r\n})\r\nexport class BubbleLoadingComponent {\r\n\r\n}","<div class=\"mc-bubble-loading\">\r\n <div class=\"loading-dot dot-start\"></div>\r\n <div class=\"loading-dot dot-middle\"></div>\r\n <div class=\"loading-dot dot-end\"></div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-avatar-body-icon',\r\n standalone: true,\r\n templateUrl: './avatar-body-icon.component.html',\r\n styleUrls: ['./avatar-body-icon.component.scss']\r\n})\r\nexport class AvatarBodyIconComponent {\r\n @Input() width: number = 16;\r\n @Input() height: number = 16;\r\n}","<svg\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n style=\"vertical-align: middle;\"\r\n viewBox=\"0 0 30 30\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <circle id=\"Oval\" fill=\"#CACFD8\" cx=\"15\" cy=\"15\" r=\"15\"></circle>\r\n <path\r\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\"\r\n fill=\"#FFFFFF\"\r\n ></path>\r\n </g>\r\n</svg>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-avatar-no-body-icon',\r\n standalone: true,\r\n templateUrl: './avatar-no-body-icon.component.html',\r\n styleUrls: ['./avatar-no-body-icon.component.scss']\r\n})\r\nexport class AvatarNoBodyIconComponent {\r\n @Input() width: number = 16;\r\n @Input() height: number = 16;\r\n}","<svg\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n style=\"vertical-align: middle;\"\r\n viewBox=\"0 0 30 30\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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 \r\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 \r\n L22.31,19.2474562 Z M14.9297866,14.9974562 C12.4445053, 14.9974562 10.4297866,12.9827376 10.4297866,10.4974562 \r\n C10.4297866, 8.01217483 12.4445053,5.9974562 14.9297866,5.9974562 C17.415068, 5.9974562 19.4297866,8.01217483 \r\n 19.4297866,10.4974562 C19.4297866, 12.9827376 17.415068,14.9974562 14.9297866,14.9974562 Z M19.6797866, 20.2474562 \r\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 \r\n 17.9612467,15.983021 19.2414296, 16.7474562 L17.06,16.7474562 L17.06,20.2474562 L19.6797866,20.2474562 Z\"\r\n fill=\"#959EB2\"\r\n ></path>\r\n <path\r\n d=\"M0,15 L1,15 C1,15.6118966 1.03919561,16.2186526 1.11683409,\r\n 16.8178549 L0.125124012,16.9463505 C0.0425740367,16.309242 0,\r\n 15.6595925 0,15 Z M0.503241262,18.867175 L1.46961749,18.6100428 C1.62594651,\r\n 19.1975718 1.8203704,19.7729973 2.05141295,20.3332823 L1.12693074,\r\n 20.7145074 C0.880599065,20.1171459 0.67172715,19.500393 0.503241262,\r\n 18.867175 Z M1.99122134,22.4730778 L2.85786221,21.9741453 C3.16078316,\r\n 22.5003161 3.49772502,23.0063252 3.86631639,23.4889602 L3.0715754,\r\n 24.0959089 C2.6777461,23.5802273 2.31659753,23.0382531 1.99122134,\r\n 22.4730778 Z M4.38894559,25.6021078 L5.09634867,24.8952974 C5.52582519,\r\n 25.3251341 5.98272136,25.7268214 6.46397085,26.0975793 L5.85367498,\r\n 26.8897529 C5.33779918,26.4923186 4.84851395,26.0620615 4.38894559,\r\n 25.6021078 Z M7.4424647,27.9597887 L7.94703323,27.096417 C8.47111119,\r\n 27.4026968 9.0146817,27.6746032 9.57453904,27.9101878 L9.18668461,\r\n 28.8319084 C8.58423501,28.5784013 8.00181692,28.2866833 7.4424647,\r\n 27.9597887 Z M11.0671021,29.4791103 L11.3286494,28.5139196 C11.9126912,\r\n 28.6721832 12.5080563,28.7925378 13.1119738,28.8738935 L12.9784667,\r\n 29.8649413 C12.3271613,29.7772019 11.6891102,29.647662 11.0671021,\r\n 29.4791103 Z M15,30 C14.9951965,30 14.9903936,29.9999977 14.9855912,\r\n 30 L14.9865313,28.9999937 C14.9929361,28.9999987 14.9929361,\r\n 28.9999987 14.999296,29 C15.6071552,29 16.2093364,28.9614092 16.8041774,\r\n 28.8849313 L16.9316965,29.8767674 C16.2992813,29.9580762 15.6545362,\r\n 30 15,30 Z M18.8545762,29.5001051 L18.5982903,28.5335041 C19.1860387,\r\n 28.3776677 19.7617059,28.1837179 20.3222555,27.9531286 L20.7026875,\r\n 28.8779375 C20.1050484,29.123784 19.4880358,29.3321488 18.8545762,\r\n 29.5001051 Z M22.4608087,28.0158343 L21.9626951,27.1487226 C22.4893928,\r\n 26.8461604 22.9959399,26.5095265 23.479119,26.1411926 L24.0853678,\r\n 26.9364676 C23.5691101,27.3300178 23.0265585,27.6908386 22.4608087,\r\n 28.0158343 Z M25.5921583,25.6209863 L24.8860071,24.9129252 C25.3161421,\r\n 24.4839504 25.7181674,24.0275419 26.0893023,23.5467621 L26.8808873,\r\n 24.1578212 C26.4830546,24.6731862 26.0524368,25.1619493 25.5921583,\r\n 25.6209863 Z M27.9526445,22.5697466 L27.0897495,22.0643633 C27.3964738,\r\n 21.5406601 27.6688549,20.9974409 27.904942,20.4379104 L28.8262855,\r\n 20.8266601 C28.5722411,21.4287497 28.2800163,22.0107897 27.9526445,\r\n 22.5697466 Z M29.4756977,18.9454696 L28.5107363,18.6830777 C28.6695136,\r\n 18.099165 28.7903877,17.5039035 28.8722662,16.9000659 L29.8631978,\r\n 17.0344333 C29.7748946,17.6856516 29.6447979,18.3235936 29.4756977,\r\n 18.9454696 Z M30,15 C30,15.0093541 29.9999914,15.0187063 29.9999743,\r\n 15.0280564 L28.999976,15.0262257 C28.9999956,15.0134169 28.9999956,\r\n 15.0134169 29,15.0006466 C29,14.3970304 28.9619395,13.7989704 28.8865088,\r\n 13.208136 L29.8784576,13.0814959 C29.9586571,13.7096843 30,14.3500145 30,\r\n 15 Z M29.5038108,11.1594275 L28.5369608,11.4147728 C28.3816616,\r\n 10.8267413 28.1882232,10.2507676 27.9581175,9.68988857 L28.8832852,\r\n 9.31033004 C29.1286141,9.90831524 29.3364318,10.5256569 29.5038108,\r\n 11.1594275 Z M28.0228788,7.55146763 L27.1552968,8.0487618 C26.853241,\r\n 7.52179373 26.5170958,7.0149453 26.1492295,6.53143425 L26.9450761,\r\n 5.92593594 C27.3381231,6.44254364 27.6984223,6.98541919 28.0228788,\r\n 7.55146763 Z M25.6309089,4.41780044 L24.9221905,5.12329189 C24.4935639,\r\n 4.69270467 24.0374698,4.2902078 23.5569705,3.9185855 L24.1687554,\r\n 3.12756133 C24.6838129,3.52591118 25.1722392,3.95703271 25.6309089,\r\n 4.41780044 Z M22.5819506,2.05451093 L22.0757531,2.91692851 C21.5523008,\r\n 2.60968727 21.0092999,2.33677531 20.4499564,2.10014728 L20.8395722,\r\n 1.17916981 C21.4414531,1.43379309 22.0232574,1.72658499 22.5819506,\r\n 2.05451093 Z M18.9594329,0.528106464 L18.696103,1.4928123 C18.1122842,\r\n 1.33345081 17.517086,1.21199245 16.9132846,1.12953261 L17.0485964,\r\n 0.138729543 C17.6997753,0.227659622 18.3376514,0.358382523 18.9594329,\r\n 0.528106464 Z M15,-1.11022302e-16 C15.0139048,-1.11022302e-16 15.0278052,\r\n 1.892004e-05 15.0417011,5.673578e-05 L15.0389797,1.00005303 C15.0197685,\r\n 1.00000934 15.0197685,1.00000934 15.0005868,1.00000001 C14.4012162,\r\n 1 13.8072783,1.03753392 13.2204527,1.11192427 L13.0946918,0.119863691 C13.7186509,\r\n 0.0407660189 14.3545651,-1.11022302e-16 15,-1.11022302e-16 Z M11.1720354,\r\n 0.492865376 L11.4265338,1.45993857 C10.8386468,1.61464899 10.2627801,\r\n 1.80746996 9.70196444,2.03693489 L9.32327455,1.11141127 C9.92118954,\r\n 0.86676666 10.5384173,0.659610554 11.1720354,0.492865376 Z M7.56375123,\r\n 1.97008801 L8.06022548,2.83813946 C7.53298826,3.13968806 7.02583975,\r\n 3.47534367 6.54199783,3.84274131 L5.93725081,3.04632368 C6.4542073,\r\n 2.65378102 6.99740556,2.29400434 7.56375123,1.97008801 Z M4.42776842,\r\n 4.35917772 L5.13259949,5.06855291 C4.70156141,5.49682984 4.29859416,\r\n 5.95260763 3.92648544,6.43282469 L3.13602297,5.82031423 C3.53488885,\r\n 5.30556625 3.96651291,4.81747851 4.42776842,4.35917772 Z M2.0616775,\r\n 7.40585279 L2.92361696,7.91286401 C2.61586086,8.43606175 2.34241977,\r\n 8.97884042 2.10525197,9.53799293 L1.18464153,9.14751063 C1.43984243,\r\n 8.54584288 1.73319965,7.96427837 2.0616775,7.40585279 Z M0.531541456,\r\n 11.0280046 L1.49601653,11.2921785 C1.33614878,11.8758413 1.21417484,\r\n 12.4709081 1.13119244,13.074601 L0.140507978,12.9384235 C0.230001486,12.2873626 0.361276825,11.6496255 0.531541456,11.0280046 Z\"\r\n fill=\"#CACFD8\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n</svg>","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarBodyIconComponent } from '../avatar-body-icon/avatar-body-icon.component';\r\nimport { AvatarNoBodyIconComponent } from '../avatar-no-body-icon/avatar-no-body-icon.component';\r\nimport { TranslatePipe } from '../../Locale/translate.pipe';\r\n\r\n@Component({\r\n selector: 'mc-avatar',\r\n standalone: true,\r\n imports: [CommonModule, AvatarBodyIconComponent, AvatarNoBodyIconComponent, TranslatePipe],\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss']\r\n})\r\nexport class AvatarComponent implements OnInit, OnChanges {\r\n @Input() imgSrc: string = '';\r\n @Input() name: string = '';\r\n @Input() width: number = 36;\r\n @Input() height: number = 36;\r\n @Input() isRound: boolean = true;\r\n @Input() gender: string = '';\r\n\r\n isErrorImg: boolean = false;\r\n isNobody: boolean = true;\r\n code: number = 1;\r\n fontSize: number = 12;\r\n nameDisplay: string = '';\r\n\r\n ngOnInit(): void {\r\n this.calcValues(this.name);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['name'] || changes['width'] || changes['height'] || changes['gender']) {\r\n this.calcValues(this.name);\r\n }\r\n }\r\n\r\n onErrorImg(): void {\r\n this.isErrorImg = true;\r\n }\r\n\r\n private getBackgroundColor(char: string): void {\r\n if (this.gender) {\r\n if (this.gender.toLowerCase() === 'male') {\r\n this.code = 1;\r\n } else if (this.gender.toLowerCase() === 'female') {\r\n this.code = 0;\r\n }\r\n return;\r\n }\r\n const unicode = char.charCodeAt(0);\r\n this.code = unicode % 2;\r\n }\r\n\r\n private setDisplayName(nameValue: string, widthValue: number): void {\r\n if (!nameValue) {\r\n this.nameDisplay = '';\r\n return;\r\n }\r\n\r\n if (nameValue.length < 2) {\r\n this.nameDisplay = nameValue;\r\n } else {\r\n // 以中文开头显示最后两个字符\r\n if (/^[\\u4e00-\\u9fa5]/.test(nameValue)) {\r\n this.nameDisplay = nameValue.substr(nameValue.length - 2, 2);\r\n // 英文开头\r\n } else if (/^[A-Za-z]/.test(nameValue)) {\r\n // 含有两个及以上,包含空格,下划线,中划线分隔符的英文名取前两个字母的首字母\r\n if (/[_ -]/.test(nameValue)) {\r\n const parts = nameValue.split(/_|-|\\s+/);\r\n if (parts.length >= 2) {\r\n this.nameDisplay = parts[0].substr(0, 1).toUpperCase() + parts[1].substr(0, 1).toUpperCase();\r\n } else {\r\n this.nameDisplay = nameValue.substr(0, 2).toUpperCase();\r\n }\r\n } else {\r\n // 一个英文名的情况显示前两个字母\r\n this.nameDisplay = nameValue.substr(0, 2).toUpperCase();\r\n }\r\n } else {\r\n // 非中英文开头默认取前两个字符\r\n this.nameDisplay = nameValue.substr(0, 2);\r\n }\r\n }\r\n if (widthValue < 30) {\r\n this.nameDisplay = nameValue.substr(0, 1).toUpperCase();\r\n }\r\n this.getBackgroundColor(nameValue.substr(0, 1));\r\n }\r\n\r\n private calcValues(nameInput: string): void {\r\n const userName = nameInput;\r\n const minNum = Math.min(this.width, this.height);\r\n if (userName) {\r\n this.isNobody = false;\r\n this.setDisplayName(userName, minNum);\r\n } else if (userName === '') {\r\n this.isNobody = false;\r\n this.nameDisplay = '';\r\n } else {\r\n this.isNobody = true;\r\n }\r\n this.fontSize = minNum / 4 + 3;\r\n }\r\n}","<span class=\"mc-bubble-avatar-wrapper\">\r\n <img\r\n *ngIf=\"imgSrc && !isErrorImg\"\r\n [src]=\"imgSrc\"\r\n [attr.alt]=\"'Bubble.avatar' | translate:{ name: name }\"\r\n (error)=\"onErrorImg()\"\r\n [ngStyle]=\"{\r\n height: height + 'px',\r\n width: width + 'px',\r\n borderRadius: isRound ? '100%' : '0'\r\n }\"\r\n />\r\n <span\r\n *ngIf=\"!imgSrc && !isNobody && nameDisplay?.length !== 0\"\r\n [ngClass]=\"['mc-bubble-avatar-style', 'mc-bubble-avatar-background-' + code]\"\r\n [ngStyle]=\"{\r\n height: height + 'px',\r\n width: width + 'px',\r\n lineHeight: height + 'px',\r\n fontSize: fontSize + 'px',\r\n borderRadius: isRound ? '100%' : '0'\r\n }\"\r\n >\r\n {{ nameDisplay }}\r\n </span>\r\n <span\r\n *ngIf=\"!imgSrc && !isNobody && nameDisplay?.length === 0\"\r\n class=\"mc-bubble-avatar-style\"\r\n [ngStyle]=\"{ borderRadius: isRound ? '100%' : '0' }\"\r\n >\r\n <mc-avatar-body-icon [width]=\"width\" [height]=\"height\" />\r\n </span>\r\n <span\r\n *ngIf=\"(!imgSrc && isNobody) || (imgSrc && isErrorImg)\"\r\n class=\"mc-bubble-avatar-style\"\r\n [ngStyle]=\"{ borderRadius: isRound ? '100%' : '0' }\"\r\n >\r\n <mc-avatar-no-body-icon [width]=\"width\" [height]=\"height\" />\r\n </span>\r\n</span>","export const DEFAULT_AVATAR_WIDTH = 36;\r\nexport const DEFAULT_AVATAR_HEIGHT = 36;\r\nexport const AVATAR_NAME = 'name';\r\nexport const AVATAR_IMG = 'imgSrc';\r\n","const noop = () => {};\r\nexport type noopFunction = (...args: any) => any;\r\n\r\nexport interface DefaultAdapter {\r\n getProp(key: string): any;\r\n getProps(): any;\r\n getState(key: string): any;\r\n getStates(): any;\r\n setState(s: any, callback?: any): void;\r\n getCache(c: string): any;\r\n getCaches(): any;\r\n setCache(key: any, value: any): void;\r\n nextTick(cb: (...args: any) => void): void;\r\n}\r\n\r\nclass BaseFoundation<T extends DefaultAdapter> {\r\n static get cssClasses() {\r\n return {};\r\n }\r\n\r\n static get strings() {\r\n return {};\r\n }\r\n\r\n static get numbers() {\r\n return {};\r\n }\r\n\r\n static get defaultAdapter() {\r\n return {\r\n getProp: noop,\r\n getProps: noop,\r\n getState: noop,\r\n getStates: noop,\r\n setState: noop,\r\n getContext: noop,\r\n getContexts: noop,\r\n getCache: noop,\r\n setCache: noop,\r\n getCaches: noop,\r\n stopPropagation: noop,\r\n };\r\n }\r\n\r\n _adapter!: T;\r\n\r\n constructor(adapter: T) {\r\n this._adapter = { ...BaseFoundation.defaultAdapter, ...adapter };\r\n }\r\n\r\n getProp(key: string) {\r\n return this._adapter.getProp(key);\r\n }\r\n\r\n getProps(): any {\r\n return this._adapter.getProps() as any;\r\n }\r\n\r\n getState(key: string) {\r\n return this._adapter.getState(key);\r\n }\r\n\r\n getStates(): any {\r\n return this._adapter.getStates();\r\n }\r\n\r\n setState(states: any, cb?: (...args: any) => void) {\r\n return this._adapter.setState({ ...states }, cb);\r\n }\r\n\r\n /* istanbul ignore next */\r\n getCaches() {\r\n return this._adapter.getCaches();\r\n }\r\n\r\n getCache(key: string) {\r\n return this._adapter.getCache(key);\r\n }\r\n\r\n setCache(key: string, value: any) {\r\n return key && this._adapter.setCache(key, value);\r\n }\r\n\r\n nextTick(cb: (...args: any) => void) {\r\n return this._adapter.nextTick(cb);\r\n }\r\n\r\n _isInProps(key: string) {\r\n const props = this.getProps();\r\n return key in (props as any);\r\n }\r\n\r\n init(lifecycle?: any) {}\r\n\r\n destroy() {}\r\n}\r\nexport default BaseFoundation;\r\n","import { AVATAR_NAME, AVATAR_IMG } from \"./common/bubble-constants\";\r\nimport { BubbleAvatar, BubbleAlign } from \"./common/bubble-types\";\r\nimport BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\r\n\r\nexport interface BubbleAdapter extends DefaultAdapter {}\r\n\r\nexport class BubbleFoundation extends BaseFoundation<BubbleAdapter> {\r\n constructor(adapter: BubbleAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getBubbleClasses() {\r\n const { align, loading, isEmptyAvatar, avatarPosition } = this.getProps();\r\n return [\r\n `mc-bubble-avatar-${avatarPosition}`,\r\n `mc-bubble-${align}`,\r\n loading ? \"mc-bubble-loading\" : \"\",\r\n isEmptyAvatar ? \"mc-bubble-avatar-empty\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n }\r\n\r\n getIsEmptyAvatar(avatarConfig: BubbleAvatar | undefined) {\r\n if (avatarConfig) {\r\n // 传了 avatarConfig,但是没有 name 和 imgSrc 时表示头像区域仅占位\r\n const keys = Object.keys(avatarConfig);\r\n const shouldShow = keys.some(\r\n (k) => k === AVATAR_NAME || k === AVATAR_IMG\r\n );\r\n return keys.length < 1 || !shouldShow;\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n","import BaseFoundation, { DefaultAdapter } from '../components-common/Base/foundation';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mate-base-component',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport default class BaseComponent<T extends BaseFoundation<DefaultAdapter>> {\r\n foundation: T;\r\n cache: any;\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.foundation &&\r\n typeof this.foundation.destroy === 'function' &&\r\n this.foundation.destroy();\r\n }\r\n\r\n get adapter(): DefaultAdapter {\r\n return {\r\n getProp: (key: string) => {\r\n return this[key];\r\n },\r\n getProps: () => {\r\n return this;\r\n },\r\n setState: (states, cb) => {\r\n for (const key in states) {\r\n if (states.hasOwnProperty(key)) {\r\n this[key] = states[key];\r\n }\r\n cb && cb();\r\n }\r\n },\r\n getState: (key) => this[key],\r\n getStates: () => this,\r\n getCache: (key) => key && this.cache[key],\r\n getCaches: () => this.cache,\r\n setCache: (key, value) => key && (this.cache[key] = value),\r\n nextTick: (cb) => setTimeout(cb, 0),\r\n };\r\n }\r\n}\r\n","import { Component, Input, computed, ContentChild, TemplateRef, ContentChildren, QueryList } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { DEFAULT_AVATAR_WIDTH, DEFAULT_AVATAR_HEIGHT, AVATAR_NAME, AVATAR_IMG } from '../components-common/Bubble/common/bubble-constants';\r\nimport { BubbleAlign, BubbleVariant, AvatarPosition, BubbleAvatar } from '../components-common//Bubble/common/bubble-types';\r\nimport { BubbleAdapter, BubbleFoundation } from '../components-common/Bubble/foundation';\r\nimport BaseComponent from '../Base/base.component';\r\nimport { TranslatePipe } from '../Locale/translate.pipe';\r\n\r\n@Component({\r\n selector: 'mc-bubble',\r\n standalone: true,\r\n imports: [CommonModule, BubbleLoadingComponent, AvatarComponent, TranslatePipe],\r\n templateUrl: './bubble.component.html',\r\n styleUrls: ['./bubble.component.scss']\r\n})\r\nexport class BubbleComponent extends BaseComponent<BubbleFoundation> {\r\n // 组件属性\r\n @Input() content: string = '';\r\n @Input() loading: boolean = false;\r\n @Input() align: BubbleAlign = 'left';\r\n @Input() avatarPosition: AvatarPosition = 'side';\r\n @Input() variant: BubbleVariant = 'filled';\r\n @Input() avatarConfig?: BubbleAvatar;\r\n\r\n // 内容投影模板引用\r\n @ContentChild('avatar') avatarTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('top') topTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('loadingTpl') loadingTplTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('bottom') bottomTemplate: TemplateRef<any> | null = null;\r\n \r\n // 检测是否有内容投影\r\n @ContentChildren('ng-content') contentChildren: QueryList<any>;\r\n \r\n // 计算是否有内容投影\r\n get ngContentProjected(): boolean {\r\n return this.contentChildren && this.contentChildren.length > 0;\r\n }\r\n \r\n constructor() { super(); }\r\n\r\n ngOnInit() {\r\n this.foundation = new BubbleFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): BubbleAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n content: this.content,\r\n loading: this.loading,\r\n align: this.align,\r\n avatarPosition: this.avatarPosition,\r\n variant: this.variant,\r\n avatarConfig: this.avatarConfig,\r\n }),\r\n }\r\n }\r\n\r\n // 计算属性\r\n get bubbleClasses(): string {\r\n return this.foundation.getBubbleClasses();\r\n };\r\n\r\n get isEmptyAvatar(): boolean {\r\n return this.foundation.getIsEmptyAvatar(this.avatarConfig);\r\n };\r\n}\r\n","<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\r\n <!-- 自定义头像区域 -->\r\n <div *ngIf=\"avatarTemplate\" class=\"mc-bubble-avatar\" role=\"img\">\r\n <ng-container *ngTemplateOutlet=\"avatarTemplate\"></ng-container>\r\n <ng-content select=\"[avatar]\"></ng-content>\r\n </div>\r\n \r\n <!-- 默认头像配置 -->\r\n <div *ngIf=\"!avatarTemplate && avatarConfig\"\r\n class=\"mc-bubble-avatar\" role=\"img\"\r\n [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\r\n >\r\n <mc-avatar\r\n *ngIf=\"!isEmptyAvatar\"\r\n [imgSrc]=\"avatarConfig?.imgSrc || ''\"\r\n [name]=\"avatarConfig?.name || ''\"\r\n [width]=\"avatarConfig?.width || 36\"\r\n [height]=\"avatarConfig?.height || 36\"\r\n [gender]=\"avatarConfig?.gender || ''\"\r\n />\r\n <div *ngIf=\"isEmptyAvatar\" class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\r\n [style.width.px]=\"avatarConfig?.width || 36\"\r\n [style.height.px]=\"avatarConfig?.height || 36\"></div>\r\n <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\r\n avatarConfig?.displayName\r\n }}</span>\r\n </div>\r\n <div\r\n class=\"mc-bubble-content-container\" aria-live=\"polite\"\r\n [ngClass]=\"{ 'with-avatar': avatarTemplate || avatarConfig }\"\r\n >\r\n <!-- 顶部内容投影 -->\r\n <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\r\n <ng-content select=\"[top]\"></ng-content>\r\n </ng-container>\r\n \r\n <!-- 加载状态 -->\r\n <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\r\n <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\r\n <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\r\n <ng-content select=\"[loadingTpl]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultLoadingTemplate>\r\n <mc-bubble-loading></mc-bubble-loading>\r\n </ng-template>\r\n </div>\r\n \r\n <!-- 主要内容 -->\r\n <div\r\n *ngIf=\"!loading\"\r\n class=\"mc-bubble-content\"\r\n [ngClass]=\"[variant]\"\r\n role=\"region\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"content && !ngContentProjected\">\r\n <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- 底部内容投影 -->\r\n <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\r\n <ng-content select=\"[bottom]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BubbleComponent } from './bubble.component';\r\nimport { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n BubbleComponent,\r\n BubbleLoadingComponent,\r\n AvatarComponent\r\n ],\r\n exports: [\r\n BubbleComponent,\r\n BubbleLoadingComponent,\r\n AvatarComponent\r\n ]\r\n})\r\nexport class BubbleModule { }","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-teleport',\r\n standalone: true,\r\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\r\n styles: [''],\r\n})\r\nexport class McTeleportComponent implements OnInit, OnDestroy {\r\n @Input() to: string | Element;\r\n\r\n @ViewChild('content', { static: true }) contentTemplate: TemplateRef<any>;\r\n\r\n private insertedElements: Node[] = [];\r\n private targetElement: Element | null = null;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.targetElement = this.getTargetElement();\r\n if (this.targetElement && this.contentTemplate) {\r\n this.teleportContent();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeContent();\r\n }\r\n\r\n private getTargetElement(): Element | null {\r\n if (typeof this.to === 'string') {\r\n if (this.to === 'body') {\r\n return document.body;\r\n }\r\n return document.querySelector(this.to);\r\n }\r\n return this.to as Element;\r\n }\r\n\r\n private teleportContent(): void {\r\n if (!this.targetElement || !this.contentTemplate) return;\r\n\r\n // 创建一个注释节点作为标记\r\n const startComment = this.renderer.createComment('mc-teleport-start');\r\n const endComment = this.renderer.createComment('mc-teleport-end');\r\n\r\n // 将注释节点添加到目标位置\r\n this.renderer.appendChild(this.targetElement, startComment);\r\n this.renderer.appendChild(this.targetElement, endComment);\r\n\r\n // 保存插入的节点\r\n this.insertedElements.push(startComment, endComment);\r\n\r\n // 使用 ViewContainerRef 创建嵌入式视图\r\n const viewRef = this.viewContainerRef.createEmbeddedView(\r\n this.contentTemplate,\r\n );\r\n\r\n // 将视图的根节点移动到目标位置\r\n viewRef.rootNodes.forEach((node) => {\r\n this.renderer.insertBefore(this.targetElement!, node, endComment);\r\n this.insertedElements.push(node);\r\n });\r\n }\r\n\r\n private removeContent(): void {\r\n // 移除所有插入的节点\r\n this.insertedElements.forEach((node) => {\r\n if (node.parentNode) {\r\n this.renderer.removeChild(node.parentNode, node);\r\n }\r\n });\r\n\r\n // 清空插入的节点列表\r\n this.insertedElements = [];\r\n\r\n // 清空视图容器\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\nimport {\r\n type FileItem,\r\n FileListContext,\r\n type PreviewType,\r\n} from './common/fileList-types';\r\n\r\nexport interface FileListAdapter extends DefaultAdapter {\r\n emitRemove: (uid: number) => void;\r\n emitRetryUpload: (uid: number) => void;\r\n emitPreview: (file: FileItem) => void;\r\n emitDownload: (file: FileItem) => void;\r\n emitRetryDownload: (uid: number) => void;\r\n updateFileItem: (uid: number, updates: Partial<FileItem>) => void;\r\n}\r\n\r\nexport class FileListFoundation extends BaseFoundation<FileListAdapter> {\r\n constructor(adapter: FileListAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 B';\r\n const k = 1024;\r\n const sizes = ['B', 'KB', 'MB', 'GB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / k ** i).toFixed(2)) + ' ' + sizes[i];\r\n }\r\n\r\n getFileType(name: string): string {\r\n const ext = name.split('.').pop()?.toLowerCase();\r\n if (!ext) return 'file';\r\n\r\n const imageExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'];\r\n const videoExts = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm'];\r\n const audioExts = ['mp3', 'wav', 'ogg', 'flac', 'aac'];\r\n const docExts = ['doc', 'docx', 'txt', 'pdf', 'rtf', 'md'];\r\n const sheetExts = ['xls', 'xlsx', 'csv'];\r\n const pptExts = ['ppt', 'pptx'];\r\n const codeExts = [\r\n 'js',\r\n 'ts',\r\n 'jsx',\r\n 'tsx',\r\n 'html',\r\n 'css',\r\n 'scss',\r\n 'json',\r\n 'xml',\r\n 'yml',\r\n 'yaml',\r\n ];\r\n const archiveExts = ['zip', 'rar', '7z', 'tar', 'gz'];\r\n\r\n if (imageExts.includes(ext)) return 'image';\r\n if (videoExts.includes(ext)) return 'video';\r\n if (audioExts.includes(ext)) return 'audio';\r\n if (docExts.includes(ext)) return 'document';\r\n if (sheetExts.includes(ext)) return 'spreadsheet';\r\n if (pptExts.includes(ext)) return 'presentation';\r\n if (codeExts.includes(ext)) return 'code';\r\n if (archiveExts.includes(ext)) return 'archive';\r\n\r\n return 'file';\r\n }\r\n\r\n getPreviewType(file: FileItem): PreviewType {\r\n const name = file.name;\r\n const ext = name.split('.').pop()?.toLowerCase();\r\n if (!ext) return 'unsupported';\r\n\r\n const imageExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];\r\n const videoExts = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm'];\r\n const iframeExts = ['pdf', 'html'];\r\n\r\n if (imageExts.includes(ext)) return 'image';\r\n if (videoExts.includes(ext)) return 'video';\r\n if (iframeExts.includes(ext)) return 'iframe';\r\n\r\n return 'unsupported';\r\n }\r\n\r\n handleRemove(uid: number): void {\r\n this._adapter.emitRemove(uid);\r\n }\r\n\r\n handleRetryUpload(uid: number): void {\r\n this._adapter.emitRetryUpload(uid);\r\n }\r\n\r\n handlePreview(file: FileItem): void {\r\n this._adapter.emitPreview(file);\r\n }\r\n\r\n handleDownload(file: FileItem): void {\r\n this._adapter.emitDownload(file);\r\n }\r\n\r\n handleRetryDownload(uid: number): void {\r\n this._adapter.emitRetryDownload(uid);\r\n }\r\n\r\n handleMouseEnter(uid: number): void {\r\n this._adapter.updateFileItem(uid, { isHovered: true });\r\n }\r\n\r\n handleMouseLeave(uid: number): void {\r\n this._adapter.updateFileItem(uid, { isHovered: false });\r\n }\r\n\r\n getIconComponent(file: FileItem): string {\r\n if (file.type) {\r\n if (file.type?.startsWith('image/')) return 'image-icon';\r\n if (file.type?.startsWith('video/')) return 'mp4-icon';\r\n if (file.type?.startsWith('audio/')) return 'mp4-icon';\r\n if (file.type?.startsWith('text/')) return 'document-icon';\r\n if (file.type === 'application/pdf') return 'pdf-icon';\r\n if (file.type === 'application/zip' || file.type?.includes('compress'))\r\n return 'compressed-file-icon';\r\n }\r\n const extension = file.name.split('.').pop()?.toLowerCase();\r\n\r\n const extensionMap: Record<string, string> = {\r\n // Office & Documents\r\n ppt: 'ppt-icon',\r\n pptx: 'ppt-icon',\r\n pdf: 'pdf-icon',\r\n doc: 'document-icon',\r\n docx: 'document-icon',\r\n xls: 'excel-icon',\r\n xlsx: 'excel-icon',\r\n csv: 'excel-icon',\r\n txt: 'document-icon',\r\n rtf: 'document-icon',\r\n page: 'page-icon',\r\n md: 'markdown-icon',\r\n markdown: 'markdown-icon',\r\n // Image\r\n jpg: 'image-icon',\r\n jpeg: 'image-icon',\r\n png: 'image-icon',\r\n gif: 'image-icon',\r\n webp: 'image-icon',\r\n svg: 'image-icon',\r\n bmp: 'image-icon',\r\n // Video\r\n mp4: 'mp4-icon',\r\n avi: 'mp4-icon',\r\n mov: 'mp4-icon',\r\n wmv: 'mp4-icon',\r\n flv: 'mp4-icon',\r\n webm: 'mp4-icon',\r\n mkv: 'mp4-icon',\r\n // Audio\r\n mp3: 'mp4-icon',\r\n wav: 'mp4-icon',\r\n ogg: 'mp4-icon',\r\n flac: 'mp4-icon',\r\n aac: 'mp4-icon',\r\n // Code\r\n js: 'code-file-icon',\r\n ts: 'code-file-icon',\r\n jsx: 'code-file-icon',\r\n tsx: 'code-file-icon',\r\n html: 'code-file-icon',\r\n css: 'code-file-icon',\r\n scss: 'code-file-icon',\r\n less: 'code-file-icon',\r\n json: 'code-file-icon',\r\n yaml: 'code-file-icon',\r\n yml: 'code-file-icon',\r\n xml: 'code-file-icon',\r\n // Compressed\r\n zip: 'compressed-file-icon',\r\n rar: 'compressed-file-icon',\r\n '7z': 'compressed-file-icon',\r\n tar: 'compressed-file-icon',\r\n gz: 'compressed-file-icon',\r\n // Other\r\n mind: 'mind-icon',\r\n board: 'drawing-board-icon',\r\n flow: 'flow-chart-icon',\r\n email: 'email-file-icon',\r\n };\r\n\r\n return extensionMap[extension || ''] || 'unknown-icon';\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, type OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-file-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './file-icon.component.html',\r\n styleUrls: ['./file-icon.component.scss'],\r\n})\r\nexport class McFileIconComponent implements OnInit {\r\n @Input() iconType: string = 'unknown-icon';\r\n @Input() size: number | string = 36;\r\n @Input() title?: string;\r\n @Input() customClass?: string;\r\n\r\n get className(): string {\r\n return this.customClass || '';\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log('iconType', this.iconType);\r\n }\r\n}\r\n","<svg\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"none\"\r\n role=\"img\"\r\n [attr.aria-label]=\"title\"\r\n [class]=\"className\"\r\n>\r\n <!-- 图片图标 -->\r\n <ng-container *ngIf=\"iconType === 'image-icon'\">\r\n <defs>\r\n <mask id=\"mask_image\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_image)\">\r\n <use xlink:href=\"#use_image\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_image\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_image\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"图片\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"6\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"6\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"图标/空文件夹 copy 2\" mask=\"url(#mask_image)\">\r\n <use xlink:href=\"#use_image\" />\r\n <g id=\"编组 27\">\r\n <path id=\"椭圆形\" d=\"M11.5 16.5C12.3284 16.5 13 15.8284 13 15C13 14.1716 12.3284 13.5 11.5 13.5C10.6716 13.5 10 14.1716 10 15C10 15.8284 10.6716 16.5 11.5 16.5Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"椭圆形\" d=\"M13 15C13 15.8284 12.3284 16.5 11.5 16.5C10.6716 16.5 10 15.8284 10 15C10 14.1716 10.6716 13.5 11.5 13.5C12.3284 13.5 13 14.1716 13 15ZM11.9634 14.8081C11.9878 14.867 12 14.931 12 15C12 15.069 11.9878 15.133 11.9634 15.1919C11.939 15.2509 11.9024 15.3047 11.8536 15.3536C11.8047 15.4024 11.7509 15.439 11.6919 15.4634C11.633 15.4878 11.569 15.5 11.5 15.5C11.431 15.5 11.367 15.4878 11.3081 15.4634C11.2491 15.439 11.1953 15.4024 11.1464 15.3536C11.0976 15.3047 11.061 15.2509 11.0366 15.1919C11.0122 15.133 11 15.069 11 15C11 14.931 11.0122 14.867 11.0366 14.8081C11.061 14.7491 11.0976 14.6953 11.1464 14.6464C11.1953 14.5976 11.2491 14.561 11.3081 14.5366C11.367 14.5122 11.431 14.5 11.5 14.5C11.569 14.5 11.633 14.5122 11.6919 14.5366C11.7509 14.561 11.8047 14.5976 11.8536 14.6464C11.9024 14.6953 11.939 14.7491 11.9634 14.8081Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M22.7002 23.126L18.6447 16.9265C18.3065 16.4096 17.5571 16.3873 17.1888 16.8831L15.2857 19.4454L13.7373 18.0224C13.3287 17.647 12.6798 17.734 12.3846 18.2038L9.28364 23.1397C8.91213 23.731 9.33716 24.5 10.0355 24.5L21.9572 24.5C22.6629 24.5 23.0866 23.7165 22.7002 23.126Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M14.5454 18.765L13.7373 18.0224C13.3287 17.647 12.6798 17.734 12.3846 18.2038L9.28364 23.1397C8.91213 23.731 9.33716 24.5 10.0355 24.5L21.9572 24.5C22.6629 24.5 23.0866 23.7165 22.7002 23.126L18.6447 16.9265C18.3065 16.4096 17.5571 16.3873 17.1888 16.8831L15.8852 18.6382L15.2857 19.4454L14.5454 18.765ZM17.8958 17.6084L15.4265 20.9329L13.1597 18.8498L10.2383 23.5L21.7499 23.5L17.8958 17.6084Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- PDF图标 -->\r\n <ng-container *ngIf=\"iconType === 'pdf-icon'\">\r\n <defs>\r\n <mask id=\"mask_pdf\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_pdf)\">\r\n <use xlink:href=\"#use_pdf\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_pdf\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(242,48,48)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_pdf\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"pdf\">\r\n <g id=\"图标/pdf文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\" mask=\"url(#mask_pdf)\">\r\n <use xlink:href=\"#use_pdf\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(250,167,163)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"path6\" d=\"M16.364 18.6456C18.7712 21.8711 23.2379 23.4328 23.4902 21.3188C23.7425 19.2048 19.0713 19.4571 14.9933 20.5482C10.9085 21.6324 7.37606 24.1215 8.83541 25.5399C10.2879 26.9584 11.7814 24.7489 13.8067 20.0504C15.8321 15.345 17.5164 11.0352 15.1979 11.0352C12.8793 11.0352 13.9499 15.42 16.364 18.6456Z\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path6\" d=\"M23.4902 21.3188C23.7425 19.2048 19.0713 19.4571 14.9933 20.5482C10.9085 21.6324 7.37606 24.1215 8.83541 25.5399C10.2879 26.9584 11.7814 24.7489 13.8067 20.0504C15.8321 15.345 17.5164 11.0352 15.1979 11.0352C12.8793 11.0352 13.9499 15.42 16.364 18.6456C18.7712 21.8711 23.2379 23.4328 23.4902 21.3188Z\" fill-rule=\"nonzero\" stroke=\"rgb(255,255,255)\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 未知文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'unknown-icon'\">\r\n <defs>\r\n <mask id=\"mask_15\" width=\"24\" height=\"28\" x=\"4\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline)\">\r\n <use xlink:href=\"#use_15\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_15\">\r\n <path id=\"蒙版\" d=\"M7 5L22 5L28 11L28 30C28 31.6569 26.6569 33 25 33L7 33C5.34315 33 4 31.6569 4 30L4 8C4 6.34315 5.34315 5 7 5Z\" fill=\"rgb(189,189,189)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M22 5L7 5C5.34315 5 4 6.34315 4 8L4 30C4 31.6569 5.34315 33 7 33L25 33C26.6569 33 28 31.6569 28 30L28 11L22 5ZM21.5858 6L27 11.4142L27 30C27 30.1577 26.9824 30.3113 26.9472 30.4607C26.9217 30.5687 26.8871 30.6745 26.8432 30.7782C26.7974 30.8867 26.7429 30.9896 26.6798 31.0869C26.6037 31.2041 26.5152 31.3132 26.4142 31.4142C26.3132 31.5152 26.2041 31.6037 26.0869 31.6797C25.9896 31.7429 25.8867 31.7974 25.7782 31.8432C25.6745 31.8871 25.5687 31.9217 25.4607 31.9472C25.3113 31.9824 25.1577 32 25 32L7 32C6.84229 32 6.68872 31.9824 6.53931 31.9472C6.43131 31.9217 6.32548 31.8871 6.22182 31.8432C6.11331 31.7973 6.01038 31.7428 5.91305 31.6797C5.79586 31.6037 5.68677 31.5152 5.58579 31.4142C5.48479 31.3132 5.39628 31.2041 5.32027 31.0869C5.25715 30.9896 5.20265 30.8867 5.15676 30.7782C5.11292 30.6745 5.07827 30.5687 5.05282 30.4607C5.01761 30.3113 5 30.1577 5 30L5 8C5 7.84228 5.01761 7.68871 5.05282 7.53929C5.07827 7.4313 5.11292 7.32547 5.15676 7.22182C5.20266 7.1133 5.25717 7.01037 5.32031 6.91303C5.39631 6.79585 5.4848 6.68677 5.58579 6.58579C5.68677 6.4848 5.79585 6.39631 5.91303 6.32031C6.01037 6.25717 6.1133 6.20266 6.22182 6.15676C6.32547 6.11292 6.4313 6.07827 6.53929 6.05282C6.68871 6.01761 6.84228 6 7 6L21.5858 6Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <filter id=\"filter_0\" width=\"16\" height=\"16\" x=\"17\" y=\"0\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix result=\"hardAlpha\" in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 \" />\r\n <feOffset dx=\"0\" dy=\"0\" />\r\n <feGaussianBlur stdDeviation=\"1.66666663\" />\r\n <feComposite k2=\"-1\" k3=\"1\" in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 1 0 \" />\r\n <feBlend result=\"effect_dropShadow_1\" in2=\"BackgroundImageFix\" mode=\"normal\" />\r\n <feBlend result=\"shape\" in=\"SourceGraphic\" in2=\"effect_dropShadow_1\" mode=\"normal\" />\r\n </filter>\r\n </defs>\r\n <g id=\"未知文件\">\r\n <g id=\"图标/未知文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"3\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"3.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_15)\">\r\n <use xlink:href=\"#use_15\" />\r\n <g id=\"ic_public_questionmark\">\r\n <path id=\"path4\" d=\"M15.25 26.22C15.25 25.8224 15.5724 25.5 15.97 25.5L16 25.5C16.4142 25.5 16.75 25.8358 16.75 26.25C16.75 26.6642 16.4142 27 16 27L15.97 27C15.5724 27 15.25 26.6776 15.25 26.28L15.25 26.28L15.25 26.22Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"path4\" d=\"M14.25 26.22C14.25 25.9872 14.2952 25.7639 14.3856 25.5502C14.4727 25.3443 14.5954 25.1622 14.7538 25.0038C14.9122 24.8454 15.0943 24.7227 15.3002 24.6356C15.5139 24.5452 15.7372 24.5 15.97 24.5L16 24.5C16.2369 24.5 16.4641 24.546 16.6815 24.6379C16.891 24.7265 17.0763 24.8514 17.2374 25.0126C17.3986 25.1737 17.5235 25.359 17.6121 25.5685C17.704 25.7859 17.75 26.0131 17.75 26.25C17.75 26.4869 17.704 26.7141 17.6121 26.9315C17.5235 27.141 17.3986 27.3263 17.2374 27.4874C17.0763 27.6486 16.891 27.7735 16.6815 27.8621C16.4641 27.954 16.2369 28 16 28L15.97 28C15.7372 28 15.5139 27.9548 15.3002 27.8644C15.0943 27.7773 14.9122 27.6546 14.7538 27.4962C14.5954 27.3378 14.4727 27.1557 14.3856 26.9498C14.2952 26.7361 14.25 26.5128 14.25 26.28L16.25 26.28C16.25 26.2027 16.2227 26.1367 16.168 26.082C16.1133 26.0273 16.0473 26 15.97 26L16 26C15.931 26 15.872 26.0244 15.8232 26.0732C15.7744 26.122 15.75 26.181 15.75 26.25C15.75 26.319 15.7744 26.378 15.8232 26.4268C15.872 26.4756 15.931 26.5 16 26.5L15.97 26.5C16.0473 26.5 16.1133 26.4727 16.168 26.418C16.2227 26.3633 16.25 26.2973 16.25 26.22L14.25 26.22ZM16.23 26.2L16.25 26.22C16.25 26.78 15.81 27.22 15.25 27.22C14.69 27.22 14.25 26.78 14.25 26.22L14.27 26.2L16.23 26.2ZMnan nanLnan nanCnan nan nan nan nan nanCnan nan nan nan nan nanLnan nan\" fill=\"rgb(25,25,25)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path5\" d=\"M16 23.5C16 23.2897 15.9663 22.5794 16 22.2727C16.028 22.0177 16.086 21.7987 16.2953 21.4564C16.6719 20.8404 17.836 20.1869 18.0114 20.0597C18.9117 19.407 19.5 18.3279 19.5 17.1072C19.5 15.115 17.933 13.5 16 13.5C14.067 13.5 12.5 15.115 12.5 17.1072\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n <g filter=\"url(#filter_0)\">\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L28 11Z\" fill=\"rgb(245,245,246)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L23 6L23 9C23 9.08264 23.0096 9.1629 23.0288 9.24079C23.0413 9.29117 23.0577 9.34055 23.0782 9.38894C23.1003 9.44134 23.1265 9.49116 23.1568 9.53839C23.1955 9.59887 23.2409 9.65511 23.2929 9.70711C23.3449 9.75911 23.4011 9.80448 23.4616 9.84322C23.5089 9.87346 23.5587 9.89966 23.6111 9.92183C23.6595 9.94229 23.7088 9.95874 23.7592 9.97117C23.8371 9.99039 23.9174 10 24 10L27 10L28 11Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 代码文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'code-file-icon'\">\r\n <defs>\r\n <mask id=\"mask_code\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_code)\">\r\n <use xlink:href=\"#use_code\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_code\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_code\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"代码类文件\">\r\n <g id=\"图标/图片文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\" mask=\"url(#mask_code)\">\r\n <use xlink:href=\"#use_code\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"ic_public_code\">\r\n <path id=\"ic_public_code_2_5\" d=\"M0 0L7.06296 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.351112,-0.936333,0.936333,0.351112,14.7598,21.8066)\" />\r\n <path id=\"矢量 772\" d=\"M12 15L9.05221 18.4391C9.0217 18.4747 9.02001 18.5267 9.04813 18.5642L12 22.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 772\" d=\"M3 0L0.0522046 3.43909C0.0217021 3.47468 0.0200084 3.52668 0.0481303 3.56417L3 7.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-1,0,0,1,23,15)\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 压缩文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'compressed-file-icon'\">\r\n <mask id=\"mask_compressed\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_compressed)\">\r\n <use xlink:href=\"#use_compressed\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_compressed\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(255,136,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_compressed\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"压缩文件\">\r\n <g id=\"图标/压缩文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\" mask=\"url(#mask_compressed)\">\r\n <use xlink:href=\"#use_compressed\" />\r\n <g id=\"编组-109\">\r\n <path id=\"Rectangle-16-Copy-2\" d=\"M11.8164 9.26886L14.6559 9.26886C14.844 9.26886 14.9966 9.42141 14.9966 9.60959L14.9966 10.7454C14.9966 10.9336 14.844 11.0861 14.6559 11.0861L11.8164 11.0861L11.8164 9.26886Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"Rectangle-16-Copy-4\" d=\"M11.8164 12.9036L14.6559 12.9036C14.844 12.9036 14.9966 13.0562 14.9966 13.2444L14.9966 14.7209L14.9966 14.7209L11.8164 14.7209L11.8164 12.9036Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"Rectangle-16-Copy\" d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,13.1802,7.45172)\" />\r\n <path id=\"Rectangle-16-Copy-6\" d=\"M0.340734 0L3.18019 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0.340734C0 0.152552 0.152552 0 0.340734 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,14.9966,5.63434)\" />\r\n <path id=\"Rectangle-16-Copy-6备份-3\" d=\"M0 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,14.9966,2.00006)\" />\r\n <path id=\"Rectangle-16-Copy-6备份-2\" d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,13.1802,3.8172)\" />\r\n <path id=\"Rectangle-16-Copy-3\" d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,13.1802,11.0862)\" />\r\n <path id=\"Combined-Shape\" d=\"M15 17.687L15 14.72L10.0026 14.72L10.0026 17.687C10.0026 18.0556 10.3015 18.3545 10.6701 18.3545L14.3324 18.3545C14.7011 18.3545 15 18.0556 15 17.687ZM11.2478 15.6313L13.7465 15.6313L13.7465 16.8807C13.7465 17.0689 13.5939 17.2214 13.4058 17.2214L11.5885 17.2214C11.4003 17.2214 11.2478 17.0689 11.2478 16.8807L11.2478 15.6313Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(252,213,164)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 文档文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'document-icon'\">\r\n <defs>\r\n <mask id=\"mask_document\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_document)\">\r\n <use xlink:href=\"#use_document\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_document\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_document\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"6\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"6\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"图标/空文件夹 copy 2\" mask=\"url(#mask_document)\">\r\n <use xlink:href=\"#use_document\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 29\">\r\n <circle id=\"椭圆形\" cx=\"9.25\" cy=\"13\" r=\"0.75\" fill=\"rgb(255,255,255)\" />\r\n <circle id=\"椭圆形\" cx=\"9.25\" cy=\"18\" r=\"0.75\" fill=\"rgb(255,255,255)\" />\r\n <circle id=\"椭圆形\" cx=\"9.25\" cy=\"23\" r=\"0.75\" fill=\"rgb(255,255,255)\" />\r\n </g>\r\n <path id=\"矢量 777\" d=\"M12 13L23 13\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 781\" d=\"M12 18L23 18\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 782\" d=\"M12 23L23 23\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- Excel文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'excel-icon'\">\r\n <defs>\r\n <mask id=\"mask_excel\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_excel)\">\r\n <use xlink:href=\"#use_excel\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_excel\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_excel\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"表格\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_excel)\">\r\n <use xlink:href=\"#use_excel\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"组合 3851\">\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M9 19L23 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M0 0L14 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0,-1,1,0,16,26)\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- PPT文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'ppt-icon'\">\r\n <g id=\"ppt\">\r\n <g id=\"图标/ppt文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\">\r\n <!-- 橙色背景形状 -->\r\n <path d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(255,136,0)\" fill-rule=\"evenodd\" />\r\n \r\n <!-- 内部白色 \"P\" 字母和装饰 -->\r\n <g fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\">\r\n <path d=\"M11.8164 9.26886L14.6559 9.26886C14.844 9.26886 14.9966 9.42141 14.9966 9.60959L14.9966 10.7454C14.9966 10.9336 14.844 11.0861 14.6559 11.0861L11.8164 11.0861L11.8164 9.26886Z\" />\r\n <path d=\"M11.8164 12.9036L14.6559 12.9036C14.844 12.9036 14.9966 13.0562 14.9966 13.2444L14.9966 14.7209L14.9966 14.7209L11.8164 14.7209L11.8164 12.9036Z\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,7.45172)\" />\r\n <path d=\"M0.340734 0L3.18019 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0.340734C0 0.152552 0.152552 0 0.340734 0Z\" transform=\"matrix(-1,0,0,1,14.9966,5.63434)\" />\r\n <path d=\"M0 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0L0 0Z\" transform=\"matrix(-1,0,0,1,14.9966,2.00006)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,3.8172)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,11.0862)\" />\r\n <path d=\"M15 17.687L15 14.72L10.0026 14.72L10.0026 17.687C10.0026 18.0556 10.3015 18.3545 10.6701 18.3545L14.3324 18.3545C14.7011 18.3545 15 18.0556 15 17.687ZM11.2478 15.6313L13.7465 15.6313L13.7465 16.8807C13.7465 17.0689 13.5939 17.2214 13.4058 17.2214L11.5885 17.2214C11.4003 17.2214 11.2478 17.0689 11.2478 16.8807L11.2478 15.6313Z\" />\r\n </g>\r\n \r\n <!-- 折角部分 -->\r\n <path d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(252,213,164)\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Markdown文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'markdown-icon'\">\r\n <mask id=\"mask_markdown\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_markdown)\">\r\n <use xlink:href=\"#use_markdown\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_markdown\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_markdown\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"markdown\">\r\n <g id=\"图标/markdown文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_markdown)\">\r\n <use xlink:href=\"#use_markdown\" />\r\n <g id=\"组合 3854\">\r\n <path id=\"矢量 770\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,9,14)\" />\r\n <path id=\"矢量 790\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,17,14)\" />\r\n <path id=\"矢量 794\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,22,14)\" />\r\n <path id=\"矢量 795\" d=\"M20 20L21.9293 21.9293C21.9683 21.9683 22.0317 21.9683 22.0707 21.9293L24 20\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 791\" d=\"M9 14L12.9106 21.8211C12.9474 21.8948 13.0526 21.8948 13.0894 21.8211L17 14\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- MP4文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mp4-icon'\">\r\n <defs>\r\n <g id=\"use_mp4\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mp4\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_mp4\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mp4)\">\r\n <use xlink:href=\"#use_mp4\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <g id=\"mp4\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_mp4)\">\r\n <use xlink:href=\"#use_mp4\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矢量 780\" d=\"M13.5 22.5433C13.5 22.6269 13.5965 22.6736 13.6621 22.6217L19.401 18.0784C19.4515 18.0384 19.4515 17.9616 19.401 17.9216L13.6621 13.3783C13.5965 13.3264 13.5 13.3731 13.5 13.4567L13.5 22.5433Z\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- EmailFile文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'email-file-icon'\">\r\n <defs>\r\n <g id=\"use_14\">\r\n <rect id=\"蒙版\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" rx=\"4\" fill=\"rgb(255,136,0)\" />\r\n <rect id=\"蒙版\" width=\"27\" height=\"21\" x=\"2.5\" y=\"5.5\" rx=\"4\" stroke=\"rgb(223,225,230)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_email\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_14\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_email)\">\r\n <use xlink:href=\"#use_14\" />\r\n </g>\r\n </mask>\r\n <linearGradient id=\"paint_linear_0\" x1=\"14.3386717\" x2=\"14.3386717\" y1=\"0\" y2=\"11.6952209\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint_linear_1\" x1=\"16\" x2=\"16\" y1=\"3\" y2=\"17\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n </defs>\r\n <g id=\"邮件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"矩形\" mask=\"url(#mask_14)\">\r\n <use xlink:href=\"#use_14\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill=\"url(#paint_linear_0)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"矩形\" d=\"M2.66145 3L29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3Z\" fill=\"url(#paint_linear_1)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形\" d=\"M29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3L29.3386 3Z\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,-0.707107,0.707107,0.707107,3,26)\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-0.707107,-0.707107,-0.707107,0.707107,29,26)\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Markdown文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'markdown-icon'\">\r\n <defs>\r\n <g id=\"use_18\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_markdown\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_18\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_markdown)\">\r\n <use xlink:href=\"#use_18\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <rect id=\"雪碧图/32px/markdown\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" />\r\n <g id=\"图标/markdown文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_18)\">\r\n <use xlink:href=\"#use_18\" />\r\n <g id=\"组合 3854\">\r\n <path id=\"矢量 770\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,9,14)\" />\r\n <path id=\"矢量 790\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,17,14)\" />\r\n <path id=\"矢量 794\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,22,14)\" />\r\n <path id=\"矢量 795\" d=\"M20 20L21.9293 21.9293C21.9683 21.9683 22.0317 21.9683 22.0707 21.9293L24 20\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 791\" d=\"M9 14L12.9106 21.8211C12.9474 21.8948 13.0526 21.8948 13.0894 21.8211L17 14\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Excel文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'excel-icon'\">\r\n <defs>\r\n <g id=\"use_6\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_excel\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_6\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_excel)\">\r\n <use xlink:href=\"#use_6\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <g id=\"表格\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_6)\">\r\n <use xlink:href=\"#use_6\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"组合 3851\">\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M9 19L23 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M0 0L14 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0,-1,1,0,16,26)\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Ppt文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'ppt-icon'\">\r\n <g>\r\n <!-- 橙色背景形状 -->\r\n <path d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(255,136,0)\" fill-rule=\"evenodd\" />\r\n \r\n <!-- 内部白色 \"P\" 字母和装饰 -->\r\n <g fill=\"#FFF\" fill-rule=\"evenodd\">\r\n <path d=\"M11.8164 9.26886L14.6559 9.26886C14.844 9.26886 14.9966 9.42141 14.9966 9.60959L14.9966 10.7454C14.9966 10.9336 14.844 11.0861 14.6559 11.0861L11.8164 11.0861L11.8164 9.26886Z\" />\r\n <path d=\"M11.8164 12.9036L14.6559 12.9036C14.844 12.9036 14.9966 13.0562 14.9966 13.2444L14.9966 14.7209L14.9966 14.7209L11.8164 14.7209L11.8164 12.9036Z\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,7.45172)\" />\r\n <path d=\"M0.340734 0L3.18019 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0.340734C0 0.152552 0.152552 0 0.340734 0Z\" transform=\"matrix(-1,0,0,1,14.9966,5.63434)\" />\r\n <path d=\"M0 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0L0 0Z\" transform=\"matrix(-1,0,0,1,14.9966,2.00006)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,3.8172)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,11.0862)\" />\r\n <path d=\"M15 17.687L15 14.72L10.0026 14.72L10.0026 17.687C10.0026 18.0556 10.3015 18.3545 10.6701 18.3545L14.3324 18.3545C14.7011 18.3545 15 18.0556 15 17.687ZM11.2478 15.6313L13.7465 15.6313L13.7465 16.8807C13.7465 17.0689 13.5939 17.2214 13.4058 17.2214L11.5885 17.2214C11.4003 17.2214 11.2478 17.0689 11.2478 16.8807L11.2478 15.6313Z\" />\r\n </g>\r\n \r\n <!-- 折角部分 -->\r\n <path d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(252,213,164)\" fill-rule=\"evenodd\" />\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Mp4文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mp4-icon'\">\r\n <defs>\r\n <g id=\"use_9\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mp4\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_9\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mp4)\">\r\n <use xlink:href=\"#use_9\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <g id=\"mp4\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_9)\">\r\n <use xlink:href=\"#use_9\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矢量 780\" d=\"M13.5 22.5433C13.5 22.6269 13.5965 22.6736 13.6621 22.6217L19.401 18.0784C19.4515 18.0384 19.4515 17.9616 19.401 17.9216L13.6621 13.3783C13.5965 13.3264 13.5 13.3731 13.5 13.4567L13.5 22.5433Z\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Unknown文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'unknown-icon'\">\r\n <defs>\r\n <g id=\"use_15\">\r\n <path id=\"蒙版\" d=\"M7 5L22 5L28 11L28 30C28 31.6569 26.6569 33 25 33L7 33C5.34315 33 4 31.6569 4 30L4 8C4 6.34315 5.34315 5 7 5Z\" fill=\"rgb(189,189,189)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M22 5L7 5C5.34315 5 4 6.34315 4 8L4 30C4 31.6569 5.34315 33 7 33L25 33C26.6569 33 28 31.6569 28 30L28 11L22 5ZM21.5858 6L27 11.4142L27 30C27 30.1577 26.9824 30.3113 26.9472 30.4607C26.9217 30.5687 26.8871 30.6745 26.8432 30.7782C26.7974 30.8867 26.7429 30.9896 26.6798 31.0869C26.6037 31.2041 26.5152 31.3132 26.4142 31.4142C26.3132 31.5152 26.2041 31.6037 26.0869 31.6797C25.9896 31.7429 25.8867 31.7974 25.7782 31.8432C25.6745 31.8871 25.5687 31.9217 25.4607 31.9472C25.3113 31.9824 25.1577 32 25 32L7 32C6.84229 32 6.68872 31.9824 6.53931 31.9472C6.43131 31.9217 6.32548 31.8871 6.22182 31.8432C6.11331 31.7973 6.01038 31.7428 5.91305 31.6797C5.79586 31.6037 5.68677 31.5152 5.58579 31.4142C5.48479 31.3132 5.39628 31.2041 5.32027 31.0869C5.25715 30.9896 5.20265 30.8867 5.15676 30.7782C5.11292 30.6745 5.07827 30.5687 5.05282 30.4607C5.01761 30.3113 5 30.1577 5 30L5 8C5 7.84228 5.01761 7.68871 5.05282 7.53929C5.07827 7.4313 5.11292 7.32547 5.15676 7.22182C5.20266 7.1133 5.25717 7.01037 5.32031 6.91303C5.39631 6.79585 5.4848 6.68677 5.58579 6.58579C5.68677 6.4848 5.79585 6.39631 5.91303 6.32031C6.01037 6.25717 6.1133 6.20266 6.22182 6.15676C6.32547 6.11292 6.4313 6.07827 6.53929 6.05282C6.68871 6.01761 6.84228 6 7 6L21.5858 6Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_unknown\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_15\" width=\"24\" height=\"28\" x=\"4\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_unknown)\">\r\n <use xlink:href=\"#use_15\" />\r\n </g>\r\n </mask>\r\n <filter id=\"filter_0\" width=\"16\" height=\"16\" x=\"17\" y=\"0\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix result=\"hardAlpha\" in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 \" />\r\n <feOffset dx=\"0\" dy=\"0\" />\r\n <feGaussianBlur stdDeviation=\"1.66666663\" />\r\n <feComposite k2=\"-1\" k3=\"1\" in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 1 0 \" />\r\n <feBlend result=\"effect_dropShadow_1\" in2=\"BackgroundImageFix\" mode=\"normal\" />\r\n <feBlend result=\"shape\" in=\"SourceGraphic\" in2=\"effect_dropShadow_1\" mode=\"normal\" />\r\n </filter>\r\n </defs>\r\n <g id=\"未知文件\">\r\n <g id=\"图标/未知文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"3\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"3.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_15)\">\r\n <use xlink:href=\"#use_15\" />\r\n <g id=\"ic_public_questionmark\">\r\n <path id=\"path4\" d=\"M15.25 26.22C15.25 25.8224 15.5724 25.5 15.97 25.5L16 25.5C16.4142 25.5 16.75 25.8358 16.75 26.25C16.75 26.6642 16.4142 27 16 27L15.97 27C15.5724 27 15.25 26.6776 15.25 26.28L15.25 26.28L15.25 26.22Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"path4\" d=\"M14.25 26.22C14.25 25.9872 14.2952 25.7639 14.3856 25.5502C14.4727 25.3443 14.5954 25.1622 14.7538 25.0038C14.9122 24.8454 15.0943 24.7227 15.3002 24.6356C15.5139 24.5452 15.7372 24.5 15.97 24.5L16 24.5C16.2369 24.5 16.4641 24.546 16.6815 24.6379C16.891 24.7265 17.0763 24.8514 17.2374 25.0126C17.3986 25.1737 17.5235 25.359 17.6121 25.5685C17.704 25.7859 17.75 26.0131 17.75 26.25C17.75 26.4869 17.704 26.7141 17.6121 26.9315C17.5235 27.141 17.3986 27.3263 17.2374 27.4874C17.0763 27.6486 16.891 27.7735 16.6815 27.8621C16.4641 27.954 16.2369 28 16 28L15.97 28C15.7372 28 15.5139 27.9548 15.3002 27.8644C15.0943 27.7773 14.9122 27.6546 14.7538 27.4962C14.5954 27.3378 14.4727 27.1557 14.3856 26.9498C14.2952 26.7361 14.25 26.5128 14.25 26.28L16.25 26.28C16.25 26.2027 16.2227 26.1367 16.168 26.082C16.1133 26.0273 16.0473 26 15.97 26L16 26C15.931 26 15.872 26.0244 15.8232 26.0732C15.7744 26.122 15.75 26.181 15.75 26.25C15.75 26.319 15.7744 26.378 15.8232 26.4268C15.872 26.4756 15.931 26.5 16 26.5L15.97 26.5C16.0473 26.5 16.1133 26.4727 16.168 26.418C16.2227 26.3633 16.25 26.2973 16.25 26.22L14.25 26.22ZM16.23 26.2L16.25 26.22C16.25 26.78 15.81 27.22 15.25 27.22C14.69 27.22 14.25 26.78 14.25 26.22L14.27 26.2L16.23 26.2ZMnan nanLnan nanCnan nan nan nan nan nanCnan nan nan nan nan nanLnan nan\" fill=\"rgb(25,25,25)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path5\" d=\"M16 23.5C16 23.2897 15.9663 22.5794 16 22.2727C16.028 22.0177 16.086 21.7987 16.2953 21.4564C16.6719 20.8404 17.836 20.1869 18.0114 20.0597C18.9117 19.407 19.5 18.3279 19.5 17.1072C19.5 15.115 17.933 13.5 16 13.5C14.067 13.5 12.5 15.115 12.5 17.1072\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n <g filter=\"url(#filter_0)\">\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L28 11Z\" fill=\"rgb(245,245,246)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L23 6L23 9C23 9.08264 23.0096 9.1629 23.0288 9.24079C23.0413 9.29117 23.0577 9.34055 23.0782 9.38894C23.1003 9.44134 23.1265 9.49116 23.1568 9.53839C23.1955 9.59887 23.2409 9.65511 23.2929 9.70711C23.3449 9.75911 23.4011 9.80448 23.4616 9.84322C23.5089 9.87346 23.5587 9.89966 23.6111 9.92183C23.6595 9.94229 23.7088 9.95874 23.7592 9.97117C23.8371 9.99039 23.9174 10 24 10L27 10L28 11Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- EmailFile文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'email-file-icon'\">\r\n <defs>\r\n\t<g id=\"use_14\">\r\n\t\t<rect id=\"蒙版\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" rx=\"4\" fill=\"rgb(255,136,0)\" />\r\n\t\t<rect id=\"蒙版\" width=\"27\" height=\"21\" x=\"2.5\" y=\"5.5\" rx=\"4\" stroke=\"rgb(223,225,230)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n\t</g>\r\n\t<filter id=\"pixso_custom_mask_type_outline_email\">\r\n\t\t<feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n\t</filter>\r\n\t<mask id=\"mask_14\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n\t<g filter=\"url(#pixso_custom_mask_type_outline_email)\">\r\n\t\t<use xlink:href=\"#use_14\" />\r\n\t</g>\r\n</mask>\r\n\t<linearGradient id=\"paint_linear_0\" x1=\"14.3386717\" x2=\"14.3386717\" y1=\"0\" y2=\"11.6952209\" gradientUnits=\"userSpaceOnUse\">\r\n\t\t<stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n\t\t<stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n\t</linearGradient>\r\n\t<linearGradient id=\"paint_linear_1\" x1=\"16\" x2=\"16\" y1=\"3\" y2=\"17\" gradientUnits=\"userSpaceOnUse\">\r\n\t\t<stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n\t\t<stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n\t</linearGradient>\r\n</defs>\r\n<g id=\"邮件\">\r\n\t<rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n\t<rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n\t<g id=\"矩形\" mask=\"url(#mask_14)\">\r\n\t\t<use xlink:href=\"#use_14\" />\r\n\t\t<path id=\"形状\" d=\"M2.66145 3L29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3Z\" fill=\"url(#paint_linear_1)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n\t\t<path id=\"矩形\" d=\"M29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3L29.3386 3Z\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n\t\t<path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,-0.707107,0.707107,0.707107,3,26)\" />\r\n\t\t<path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-0.707107,-0.707107,-0.707107,0.707107,29,26)\" />\r\n\t</g>\r\n</g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- DrawingBoard文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'drawing-board-icon'\">\r\n <defs>\r\n <g id=\"use_drawingboard\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_drawingboard\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_drawingboard\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_drawingboard)\">\r\n <use xlink:href=\"#use_drawingboard\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <clipPath id=\"clipPath_drawingboard\">\r\n <rect width=\"15\" height=\"16\" x=\"9\" y=\"11\" fill=\"rgb(255,255,255)\" />\r\n </clipPath>\r\n <g id=\"画板\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_drawingboard)\">\r\n <use xlink:href=\"#use_drawingboard\" />\r\n <g id=\"svg\" clip-path=\"url(#clipPath_drawingboard)\" customFrame=\"url(#clipPath_drawingboard)\">\r\n <rect id=\"svg\" width=\"15\" height=\"16\" x=\"9\" y=\"11\" />\r\n <g id=\"ic_public_office_brush-画笔/base/ic_public_office_brush1\">\r\n <path id=\"path6\" d=\"M13.5333 23.4382L9.875 24.8333L11.4169 20.7952L19.1124 13.1001C19.8016 12.4109 20.919 12.411 21.6081 13.1002C22.2973 13.7894 22.2973 14.9069 21.6081 15.5961L14.8912 22.3175\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <line id=\"path7\" x1=\"0\" x2=\"3.51560974\" y1=\"0\" y2=\"0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.705038,0.70917,-0.70917,0.705038,18.5347,13.6929)\" />\r\n <path id=\"path8\" d=\"M16.3501 23.632C16.7621 24.4423 17.2822 24.8475 17.9105 24.8475C18.8918 24.8475 19.3342 23.6954 20.1977 23.632C20.7734 23.5898 21.3469 23.8969 21.9183 24.5533\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 793\" d=\"M14 25.0878C14.1434 25.1785 14.5505 25.3054 15.0323 25.0878C15.514 24.8703 17.7849 24 18.2151 24C18.6452 24 18.7828 24.272 18.6452 24.6346C18.5075 24.9972 17.957 25.6318 18.129 25.9037C18.3011 26.1756 19.9355 25.8131 20.6237 25.5411C21.3118 25.2691 21.828 25.3598 22 25.5411\" opacity=\"0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"path9\" d=\"M20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575Z\" fill=\"rgb(255,255,255)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path9\" d=\"M22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384Z\" fill-rule=\"nonzero\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"0\" stroke-linejoin=\"round\" stroke-width=\"0.699999988\" />\r\n </g>\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14L8.5 21.3938Z\" opacity=\"0\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- EmailFile文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'email-file-icon'\">\r\n <mask id=\"mask_emailfile\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_emailfile)\">\r\n <use xlink:href=\"#use_emailfile\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_emailfile\">\r\n <rect id=\"蒙版\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" rx=\"4\" fill=\"rgb(255,136,0)\" />\r\n <rect id=\"蒙版\" width=\"27\" height=\"21\" x=\"2.5\" y=\"5.5\" rx=\"4\" stroke=\"rgb(223,225,230)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_emailfile\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <linearGradient id=\"paint_linear_0_emailfile\" x1=\"14.3386717\" x2=\"14.3386717\" y1=\"0\" y2=\"11.6952209\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint_linear_1_emailfile\" x1=\"16\" x2=\"16\" y1=\"3\" y2=\"17\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n </defs>\r\n <g id=\"邮件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"矩形\" mask=\"url(#mask_emailfile)\">\r\n <use xlink:href=\"#use_emailfile\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill=\"url(#paint_linear_0_emailfile)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"矩形\" d=\"M2.66145 3L29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3Z\" fill=\"url(#paint_linear_1_emailfile)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形\" d=\"M29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3L29.3386 3Z\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,-0.707107,0.707107,0.707107,3,26)\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-0.707107,-0.707107,-0.707107,0.707107,29,26)\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- FlowChart文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'flow-chart-icon'\">\r\n <mask id=\"mask_flowchart\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_flowchart)\">\r\n <use xlink:href=\"#use_flowchart\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_flowchart\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(242,48,48)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_flowchart\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"流程图\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_flowchart)\">\r\n <use xlink:href=\"#use_flowchart\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(250,167,163)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M6.54991 5L2.5 5C1.11929 5 -1.09279e-07 3.88071 -1.09279e-07 2.5C-1.09279e-07 1.11929 1.11929 0 2.5 0L12 0L6.54991 5Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,23.5,13)\" />\r\n <path id=\"路径\" d=\"M6.54991 5L2.5 5C1.11929 5 -1.09279e-07 3.88071 -1.09279e-07 2.5C-1.09279e-07 1.11929 1.11929 0 2.5 0L12 0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-1,0,0,1,23.5,13)\" />\r\n <path id=\"路径备份\" d=\"M8.64563 5L2.5 5C1.11929 5 -1.09278e-07 3.88071 -1.09278e-07 2.5C-1.09278e-07 1.11929 1.11929 0 2.5 0L11.9084 0L8.64563 5Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(1,0,0,-1,9,23)\" />\r\n <path id=\"路径备份\" d=\"M8.64563 5L2.5 5C1.11929 5 -1.09278e-07 3.88071 -1.09278e-07 2.5C-1.09278e-07 1.11929 1.11929 0 2.5 0L11.9084 0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(1,0,0,-1,9,23)\" />\r\n <rect id=\"矩形\" width=\"3\" height=\"3\" x=\"20.5\" y=\"21.5\" rx=\"1.5\" fill=\"rgb(18,119,255)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"3\" height=\"3\" x=\"20.5\" y=\"21.5\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 16\" width=\"3\" height=\"3\" x=\"0\" y=\"0\" rx=\"1.5\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" transform=\"matrix(0.707107,0.707107,-0.707107,0.707107,10.5,10.8787)\" />\r\n <rect id=\"矩形备份 16\" width=\"3\" height=\"3\" x=\"0\" y=\"0\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,0.707107,-0.707107,0.707107,10.5,10.8787)\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- DrawingBoard文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'drawing-board-icon'\">\r\n <mask id=\"mask_4\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_drawingboard)\">\r\n <use xlink:href=\"#use_4\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_4\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_drawingboard\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <clipPath id=\"clipPath_2\">\r\n <rect width=\"15\" height=\"16\" x=\"9\" y=\"11\" fill=\"rgb(255,255,255)\" />\r\n </clipPath>\r\n </defs>\r\n <g id=\"画板\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_4)\">\r\n <use xlink:href=\"#use_4\" />\r\n <g id=\"svg\" clip-path=\"url(#clipPath_2)\">\r\n <rect id=\"svg\" width=\"15\" height=\"16\" x=\"9\" y=\"11\" />\r\n <g id=\"ic_public_office_brush-画笔/base/ic_public_office_brush1\">\r\n <path id=\"path6\" d=\"M13.5333 23.4382L9.875 24.8333L11.4169 20.7952L19.1124 13.1001C19.8016 12.4109 20.919 12.411 21.6081 13.1002C22.2973 13.7894 22.2973 14.9069 21.6081 15.5961L14.8912 22.3175\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <line id=\"path7\" x1=\"0\" x2=\"3.51560974\" y1=\"0\" y2=\"0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.705038,0.70917,-0.70917,0.705038,18.5347,13.6929)\" />\r\n <path id=\"path8\" d=\"M16.3501 23.632C16.7621 24.4423 17.2822 24.8475 17.9105 24.8475C18.8918 24.8475 19.3342 23.6954 20.1977 23.632C20.7734 23.5898 21.3469 23.8969 21.9183 24.5533\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 793\" d=\"M14 25.0878C14.1434 25.1785 14.5505 25.3054 15.0323 25.0878C15.514 24.8703 17.7849 24 18.2151 24C18.6452 24 18.7828 24.272 18.6452 24.6346C18.5075 24.9972 17.957 25.6318 18.129 25.9037C18.3011 26.1756 19.9355 25.8131 20.6237 25.5411C21.3118 25.2691 21.828 25.3598 22 25.5411\" opacity=\"0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"path9\" d=\"M20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575Z\" fill=\"rgb(255,255,255)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path9\" d=\"M22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384Z\" fill-rule=\"nonzero\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"0\" stroke-linejoin=\"round\" stroke-width=\"0.699999988\" />\r\n </g>\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14L8.5 21.3938Z\" opacity=\"0\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- DrawingBoard文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'drawing-board-icon'\">\r\n <mask id=\"mask_4\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n\t<g filter=\"url(#pixso_custom_mask_type_outline_drawingboard)\">\r\n\t\t<use xlink:href=\"#use_4\" />\r\n\t</g>\r\n</mask>\r\n<defs>\r\n\t<g id=\"use_4\">\r\n\t\t<path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n\t\t<path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n\t</g>\r\n\t<filter id=\"pixso_custom_mask_type_outline_drawingboard\">\r\n\t\t<feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n\t</filter>\r\n\t<clipPath id=\"clipPath_2\">\r\n\t\t<rect width=\"15\" height=\"16\" x=\"9\" y=\"11\" fill=\"rgb(255,255,255)\" />\r\n\t</clipPath>\r\n</defs>\r\n<g id=\"画板\">\r\n\t<rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n\t<rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n\t<g id=\"路径\" mask=\"url(#mask_4)\">\r\n\t\t<use xlink:href=\"#use_4\" />\r\n\t\t<g id=\"svg\" clip-path=\"url(#clipPath_2)\">\r\n\t\t\t<rect id=\"svg\" width=\"15\" height=\"16\" x=\"9\" y=\"11\" />\r\n\t\t\t<g id=\"ic_public_office_brush-画笔/base/ic_public_office_brush1\">\r\n\t\t\t\t<path id=\"path6\" d=\"M13.5333 23.4382L9.875 24.8333L11.4169 20.7952L19.1124 13.1001C19.8016 12.4109 20.919 12.411 21.6081 13.1002C22.2973 13.7894 22.2973 14.9069 21.6081 15.5961L14.8912 22.3175\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n\t\t\t\t<line id=\"path7\" x1=\"0\" x2=\"3.51560974\" y1=\"0\" y2=\"0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.705038,0.70917,-0.70917,0.705038,18.5347,13.6929)\" />\r\n\t\t\t\t<path id=\"path8\" d=\"M16.3501 23.632C16.7621 24.4423 17.2822 24.8475 17.9105 24.8475C18.8918 24.8475 19.3342 23.6954 20.1977 23.632C20.7734 23.5898 21.3469 23.8969 21.9183 24.5533\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n\t\t\t</g>\r\n\t\t</g>\r\n\t\t<path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n\t\t<path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n\t</g>\r\n</g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Mind文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mind-icon'\">\r\n <mask id=\"mask_mind\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mind)\">\r\n <use xlink:href=\"#use_mind\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_mind\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(164,47,214)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mind\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"思维导图\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_mind)\">\r\n <use xlink:href=\"#use_mind\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(222,163,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 33\">\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径 5\" d=\"M12.5 19L16.0087 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244L19.446 23.5244Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- MultidimentionalTable文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'multidimentional-table-icon'\">\r\n <mask id=\"mask_multidimentionaltable\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_multidimentionaltable)\">\r\n <use xlink:href=\"#use_multidimentionaltable\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_multidimentionaltable\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(164,47,214)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_multidimentionaltable\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"多维表格\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_multidimentionaltable)\">\r\n <use xlink:href=\"#use_multidimentionaltable\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(222,163,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <rect id=\"矩形\" width=\"8\" height=\"5\" x=\"15.5\" y=\"18.5\" rx=\"1\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"8\" height=\"5\" x=\"15.5\" y=\"18.5\" rx=\"1\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 777\" d=\"M8.5 13.5L23.5 13.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 787\" d=\"M8.5 18.5L12.5 18.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 788\" d=\"M8.5 23.5L12.5 23.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- FolderClosed文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'folder-closed-icon'\">\r\n <g id=\"文件夹\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" opacity=\"0\" fill=\"rgb(216,216,216)\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" opacity=\"0\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <path id=\"路径\" d=\"M10.6827 3C11.4448 3 12.1642 3.32848 12.6706 3.89284L12.8502 4.11535L14.4435 6.3149C14.5736 6.49445 14.7581 6.61238 14.9591 6.65238L15.1124 6.6675L25.3046 6.6675C26.7138 6.6675 27.858 7.76563 27.9877 9.1545L28 9.41813L28 13.1331L4 13.2962L4 5.75062C4 4.32856 5.06133 3.14678 6.43445 3.01267L6.69538 3L10.6827 3Z\" fill=\"rgb(10,89,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M5.06048 11L26.9994 11C28.7906 11 30.1826 12.5593 29.9802 14.339L28.6154 26.339C28.443 27.8549 27.1603 29 25.6347 29L6.42524 29C4.89956 29 3.61686 27.8549 3.44446 26.339L2.0797 14.339C1.8773 12.5593 3.26934 11 5.06048 11Z\" fill=\"rgb(77.6591,136.773,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M26.9994 11L5.06048 11C3.26934 11 1.8773 12.5593 2.0797 14.339L3.44446 26.339C3.61686 27.8549 4.89956 29 6.42524 29L25.6347 29C27.1603 29 28.443 27.8549 28.6154 26.339L29.9802 14.339C30.1826 12.5593 28.7906 11 26.9994 11ZM5.06048 12L26.9994 12C27.1728 12 27.3408 12.021 27.5033 12.0631C27.6156 12.0922 27.7252 12.1312 27.8322 12.1803C27.945 12.2321 28.0512 12.2931 28.1509 12.3635C28.2745 12.4507 28.388 12.5522 28.4914 12.6681C28.5948 12.7839 28.6828 12.9081 28.7555 13.0407C28.8142 13.1477 28.8628 13.2602 28.9015 13.3781C28.9382 13.4901 28.9647 13.6034 28.9809 13.7182C29.0043 13.8845 29.0062 14.0537 28.9866 14.226L27.6218 26.226C27.6057 26.368 27.5754 26.5053 27.5309 26.6378C27.4974 26.7377 27.4558 26.8349 27.4062 26.9293C27.3545 27.0277 27.2956 27.1205 27.2295 27.2077C27.1518 27.3101 27.0642 27.4048 26.9666 27.492C26.869 27.5791 26.765 27.6554 26.6546 27.721C26.5603 27.7769 26.4614 27.825 26.3579 27.8652C26.2583 27.9039 26.157 27.9342 26.0538 27.9562C25.9172 27.9854 25.7775 28 25.6347 28L6.42524 28C6.2824 28 6.14267 27.9854 6.00606 27.9562C5.90294 27.9342 5.8016 27.9039 5.70203 27.8652C5.59843 27.825 5.49949 27.7769 5.40523 27.7209C5.29486 27.6554 5.19089 27.5791 5.09333 27.492C4.99575 27.4049 4.90817 27.3102 4.83058 27.2079C4.76434 27.1206 4.70539 27.0277 4.65372 26.9293C4.60407 26.8348 4.56248 26.7376 4.52894 26.6376C4.4845 26.5052 4.4542 26.368 4.43805 26.226L3.07329 14.226C3.0537 14.0537 3.05561 13.8844 3.07905 13.7182C3.09523 13.6034 3.12167 13.49 3.15838 13.3781C3.19704 13.2602 3.24569 13.1478 3.30431 13.0409C3.37702 12.9082 3.46509 12.7839 3.5685 12.6681C3.67191 12.5522 3.78541 12.4507 3.90901 12.3635C4.00866 12.2931 4.11488 12.2321 4.22766 12.1804C4.3347 12.1312 4.44435 12.0922 4.55659 12.0631C4.71911 12.021 4.88707 12 5.06048 12Z\" fill=\"rgb(151,151,151)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- FolderOpen文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'folder-open-icon'\">\r\n <g id=\"文件夹打开\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" opacity=\"0\" fill=\"rgb(216,216,216)\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" opacity=\"0\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <path id=\"形状结合\" d=\"M8.68272 3.00009C9.44485 3.00009 10.1642 3.32858 10.6706 3.89294L10.8502 4.11545L12.4435 6.315C12.5736 6.49454 12.7581 6.61249 12.9591 6.65247L13.1124 6.6676L23.3046 6.6676C24.7138 6.6676 25.858 7.76572 25.9877 9.1546L26 9.41821L26 10.0002L8.31796 10.0002C6.53639 10.0002 4.96957 11.1784 4.47511 12.89L2 21.4577L2 5.7507C2 4.32864 3.06133 3.14688 4.43445 3.01276L4.69539 3.00009L8.68272 3.00009Z\" fill=\"rgb(10,89,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M9.55932 12L27.5463 12C29.1323 12 30.2822 13.5109 29.8596 15.0395L26.4055 27.5329C26.1659 28.3997 25.3771 29 24.4778 29L4.10314 29C2.75891 29 1.79742 27.7004 2.19061 26.415L5.73426 14.83C6.24862 13.1484 7.80085 12 9.55932 12Z\" fill=\"rgb(77.6591,136.773,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M27.5463 12L9.55932 12C7.80085 12 6.24862 13.1484 5.73426 14.83L2.19061 26.415C1.79742 27.7004 2.75891 29 4.10314 29L24.4778 29C25.3771 29 26.1659 28.3997 26.4055 27.5329L29.8596 15.0395C30.2822 13.5109 29.1323 12 27.5463 12ZM9.55932 13L27.5463 13C27.6876 13 27.8231 13.0195 27.9527 13.0584C28.0311 13.082 28.1074 13.1127 28.1816 13.1506C28.262 13.1917 28.3371 13.2395 28.407 13.2942C28.5011 13.3678 28.5856 13.4538 28.6604 13.5521C28.7352 13.6505 28.7956 13.7548 28.8415 13.8652C28.8756 13.947 28.9017 14.0322 28.9198 14.1207C28.9366 14.2022 28.9458 14.2839 28.9477 14.3658C28.9507 14.5011 28.9334 14.6369 28.8957 14.7731L25.4417 27.2665C25.4117 27.3748 25.3669 27.4731 25.3072 27.5613C25.2475 27.6495 25.1729 27.7277 25.0834 27.7958C24.994 27.8638 24.8988 27.9149 24.7978 27.9489C24.6969 27.983 24.5902 28 24.4778 28L4.10314 28C3.99633 28 3.89442 27.9846 3.79741 27.9537C3.74453 27.9369 3.6931 27.9155 3.64313 27.8896C3.58717 27.8605 3.53485 27.8268 3.48618 27.7884C3.41636 27.7334 3.35405 27.6688 3.29924 27.5948C3.24443 27.5207 3.20094 27.4422 3.16875 27.3594C3.14631 27.3016 3.12937 27.2417 3.11792 27.1797C3.1077 27.1243 3.10229 27.0689 3.10168 27.0134C3.10057 26.9116 3.11563 26.8096 3.14688 26.7075L6.69053 15.1225C6.74279 14.9516 6.80901 14.7879 6.8892 14.6314C6.95529 14.5023 7.03085 14.3782 7.11591 14.2589C7.20303 14.1367 7.29816 14.0222 7.4013 13.9155C7.51597 13.7969 7.64054 13.6878 7.77502 13.5883C7.90949 13.4888 8.05021 13.4016 8.1972 13.3266C8.32942 13.2592 8.4667 13.2017 8.60905 13.1542C8.74802 13.1077 8.88885 13.0718 9.03156 13.0463C9.20473 13.0154 9.38064 13 9.55932 13Z\" fill=\"rgb(151,151,151)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Mind文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mind-icon'\">\r\n <mask id=\"mask_12\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mind)\">\r\n <use xlink:href=\"#use_12\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_12\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(164,47,214)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mind\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"思维导图\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_12)\">\r\n <use xlink:href=\"#use_12\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(222,163,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 33\">\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径 5\" d=\"M12.5 19L16.0087 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244L19.446 23.5244Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Page文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'page-icon'\">\r\n <mask id=\"mask_7\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline)\">\r\n <use xlink:href=\"#use_7\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_7\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"Page\">\r\n <g id=\"图标/word文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_7)\">\r\n <use xlink:href=\"#use_7\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 34\">\r\n <path id=\"路径\" d=\"M11.2618 22L10.5 22C9.39543 22 8.5 20.9553 8.5 19.6667L8.5 17.3333C8.5 16.0447 9.39543 15 10.5 15L11.4798 15L11.2618 22Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M11.2618 22L10.5 22C9.39543 22 8.5 20.9553 8.5 19.6667L8.5 17.3333C8.5 16.0447 9.39543 15 10.5 15L11.4798 15\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"3\" x=\"11.5\" y=\"13.5\" rx=\"1.5\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"3\" x=\"11.5\" y=\"13.5\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 11\" width=\"4\" height=\"3\" x=\"11.5\" y=\"20.5\" rx=\"1.5\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 11\" width=\"4\" height=\"3\" x=\"11.5\" y=\"20.5\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 774\" d=\"M19 13.5L23 13.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 775\" d=\"M19 18.5L23 18.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 776\" d=\"M19 23.5L23 23.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Wrong文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'wrong-icon'\">\r\n <!-- 背景三角 -->\r\n <path \r\n d=\"M7.84 0.99L13.88 12.12C14.13 12.57 13.95 13.14 13.49 13.38C13.35 13.46 13.2 13.5 13.04 13.5H0.95C0.42 13.5 0 13.08 0 12.56C0 12.4 0.03 12.25 0.11 12.12L6.15 0.99C6.4 0.53 6.98 0.36 7.44 0.61C7.61 0.69 7.75 0.83 7.84 0.99Z\" \r\n fill=\"white\"\r\n />\r\n <!-- 感叹号的点 -->\r\n <path \r\n d=\"M7 11.5C6.58 11.5 6.25 11.16 6.25 10.75C6.25 10.33 6.58 10 7 10C7.41 10 7.75 10.33 7.75 10.75C7.75 11.16 7.41 11.5 7 11.5Z\" \r\n fill=\"#F23030\"\r\n />\r\n <!-- 感叹号的竖线 -->\r\n <rect \r\n x=\"6.5\" \r\n y=\"4.5\" \r\n width=\"1\" \r\n height=\"4.5\" \r\n rx=\"0.5\" \r\n fill=\"#F23030\"\r\n />\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n</svg>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { LocaleService } from './locale.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: []\r\n})\r\nexport class LocaleModule {\r\n /**\r\n * 静态方法,用于配置模块并提供服务\r\n * 可以在AppModule中使用LocaleModule.forRoot()来初始化\r\n */\r\n static forRoot(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n providers: [\r\n LocaleService\r\n ]\r\n };\r\n }\r\n\r\n /**\r\n * 普通导入方法,用于特性模块中导入\r\n * 避免服务被多次实例化\r\n */\r\n static forChild(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n providers: [] // 子模块不提供服务实例\r\n };\r\n }\r\n}","// 导出Locale服务\r\nimport { LocaleService } from './locale.service';\r\nimport { LocaleModule } from './locale.module';\r\nimport { TranslatePipe } from './translate.pipe';\r\n\r\n// 重新导出类型\r\nexport type { LanguageCode, LocaleData } from './locale.service';\r\n\r\nexport {\r\n LocaleService,\r\n LocaleModule,\r\n TranslatePipe\r\n};","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { McTeleportComponent } from './Teleport/teleport.component';\r\nimport BaseComponent from '../Base/base.component';\r\nimport {\r\n FileItem,\r\n FileListContext,\r\n FileListEmits,\r\n FileListProps,\r\n PreviewType,\r\n} from '../components-common/FileList/common/fileList-types';\r\nimport {\r\n FileListAdapter,\r\n FileListFoundation,\r\n} from '../components-common/FileList/foundation';\r\nimport { LocaleService } from '../Locale';\r\nimport { McFileIconComponent } from './FileIcon/file-icon.component';\r\n\r\n@Component({\r\n selector: 'mc-file-list',\r\n standalone: true,\r\n imports: [CommonModule, McFileIconComponent, McTeleportComponent],\r\n templateUrl: './file-list.component.html',\r\n styleUrls: ['./file-list.component.scss'],\r\n})\r\nexport class McFileListComponent\r\n extends BaseComponent<FileListFoundation>\r\n implements OnInit\r\n{\r\n @Input() fileItems: FileItem[] = [];\r\n @Input() context: FileListContext = 'dialog';\r\n @Output() remove = new EventEmitter<FileItem>();\r\n @Output() retryUpload = new EventEmitter<FileItem>();\r\n @Output() download = new EventEmitter<[FileItem, Event]>();\r\n @Output() preview = new EventEmitter<FileItem>();\r\n @Output() retryDownload = new EventEmitter<FileItem>();\r\n\r\n hoveredFileUid: number | null = null;\r\n isPreviewVisible: boolean = false;\r\n previewFile: FileItem | null = null;\r\n\r\n constructor(\r\n private localeService: LocaleService,\r\n private sanitizer: DomSanitizer,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new FileListFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): FileListAdapter {\r\n return {\r\n emitRemove: (uid: number) => {\r\n const file = this.fileItems.find((item) => item.uid === uid);\r\n if (file) {\r\n this.remove.emit(file);\r\n }\r\n },\r\n emitRetryUpload: (uid: number) => {\r\n const file = this.fileItems.find((item) => item.uid === uid);\r\n if (file) {\r\n this.retryUpload.emit(file);\r\n }\r\n },\r\n emitDownload: (file: FileItem) => {\r\n this.download.emit([file, new Event('download')]);\r\n },\r\n emitPreview: (file: FileItem) => {\r\n this.preview.emit(file);\r\n },\r\n emitRetryDownload: (uid: number) => {\r\n const file = this.fileItems.find((item) => item.uid === uid);\r\n if (file) {\r\n this.retryDownload.emit(file);\r\n }\r\n },\r\n updateFileItem: (uid: number, updates: Partial<FileItem>) => {\r\n const index = this.fileItems.findIndex((item) => item.uid === uid);\r\n if (index !== -1) {\r\n this.fileItems[index] = { ...this.fileItems[index], ...updates };\r\n }\r\n },\r\n getProp: (key: string) => {\r\n return (this as any)[key];\r\n },\r\n getProps: () => {\r\n return {\r\n fileItems: this.fileItems,\r\n context: this.context,\r\n };\r\n },\r\n getState: (key: string) => {\r\n return (this as any)[key];\r\n },\r\n getStates: () => {\r\n return {\r\n isPreviewVisible: this.isPreviewVisible,\r\n previewFile: this.previewFile,\r\n hoveredFileUid: this.hoveredFileUid,\r\n };\r\n },\r\n setState: (s: any, callback?: any) => {\r\n Object.assign(this, s);\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n getCache: (c: string) => {\r\n return undefined;\r\n },\r\n getCaches: () => {\r\n return {};\r\n },\r\n setCache: (key: any, value: any) => {\r\n // 空实现\r\n },\r\n nextTick: (cb: (...args: any) => void) => {\r\n setTimeout(cb, 0);\r\n },\r\n };\r\n }\r\n\r\n formatFileSize(bytes: number): string {\r\n return this.foundation.formatFileSize(bytes);\r\n }\r\n\r\n getPreviewType(file: FileItem): PreviewType {\r\n return this.foundation.getPreviewType(file);\r\n }\r\n\r\n getIconComponent(file: FileItem): string {\r\n return this.foundation.getIconComponent(file);\r\n }\r\n\r\n getFileTypeString(filename: string): string {\r\n return this.foundation.getFileType(filename);\r\n }\r\n\r\n handleRemove(file: FileItem) {\r\n this.foundation.handleRemove(file.uid);\r\n }\r\n\r\n handleRetryUpload(file: FileItem) {\r\n this.foundation.handleRetryUpload(file.uid);\r\n }\r\n\r\n handleDownload(file: FileItem, event: Event) {\r\n this.foundation.handleDownload(file);\r\n }\r\n\r\n handlePreview(file: FileItem) {\r\n // 只有当文件有可供预览的 URL (url 或 thumbUrl) 时,才触发预览\r\n if (file.url || file['thumbUrl']) {\r\n this.previewFile = file;\r\n this.isPreviewVisible = true;\r\n this.foundation.handlePreview(file);\r\n }\r\n }\r\n\r\n // 确保 previewFile?.name 有默认值\r\n get previewFileName(): string {\r\n return this.previewFile?.name || '';\r\n }\r\n\r\n handleRetryDownload(file: FileItem) {\r\n this.foundation.handleRetryDownload(file.uid);\r\n }\r\n\r\n closePreview() {\r\n this.isPreviewVisible = false;\r\n this.previewFile = null;\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape' && this.isPreviewVisible) {\r\n this.closePreview();\r\n }\r\n }\r\n\r\n // 国际化翻译方法\r\n t(key: string, params?: Record<string, any>): string {\r\n try {\r\n return this.localeService.translate(key, params);\r\n } catch (error) {\r\n console.warn(`Translation error for key: ${key}`, error);\r\n return key;\r\n }\r\n }\r\n\r\n // 安全处理 URL\r\n sanitizeUrl(url: string | undefined): SafeResourceUrl {\r\n if (!url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl('');\r\n }\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","<div class=\"mc-file-list\" [class]=\"`mc-file-list--context-${context}`\">\r\n <div class=\"mc-file-list__container\">\r\n <div\r\n *ngFor=\"let file of fileItems\"\r\n class=\"mc-file-item\"\r\n [class]=\"file.status ? `mc-file-item--${file.status}` : ''\"\r\n (mouseenter)=\"hoveredFileUid = file.uid\"\r\n (mouseleave)=\"hoveredFileUid = null\"\r\n >\r\n <!-- 文件图标和进度 -->\r\n <div class=\"mc-file-item__icon-container\">\r\n <!-- 图片预览 -->\r\n <ng-container *ngIf=\"getPreviewType(file) === 'image' && (file['thumbUrl'] || file.url)\">\r\n <img [src]=\"sanitizeUrl(file['thumbUrl'] || file.url)\" [alt]=\"file.name\" class=\"mc-file-item__image-preview\" (click)=\"handlePreview(file)\">\r\n </ng-container>\r\n <!-- 原来的图标 -->\r\n <ng-container *ngIf=\"!(getPreviewType(file) === 'image' && (file['thumbUrl'] || file.url))\">\r\n <mc-file-icon class=\"mc-file-item__icon\" [iconType]=\"getIconComponent(file)\" [size]=\"36\" [title]=\"file.name\"></mc-file-icon>\r\n </ng-container>\r\n <!-- 进度覆盖层 (同时处理上传和下载) -->\r\n <div *ngIf=\"file.status === 'uploading' || file.status === 'downloading' || file.status === 'error' || file.status === 'uploadError' || file.status === 'downloadError'\" class=\"mc-file-item__progress-overlay\">\r\n <div class=\"mc-file-item__progress-mask\"></div>\r\n <!-- 失败状态:显示 Wrong 图标 -->\r\n <ng-container *ngIf=\"file.status === 'error' || file.status === 'uploadError' || file.status === 'downloadError'\">\r\n <svg class=\"mc-file-item__wrong-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <!-- 背景三角 -->\r\n <path \r\n d=\"M7.84 0.99L13.88 12.12C14.13 12.57 13.95 13.14 13.49 13.38C13.35 13.46 13.2 13.5 13.04 13.5H0.95C0.42 13.5 0 13.08 0 12.56C0 12.4 0.03 12.25 0.11 12.12L6.15 0.99C6.4 0.53 6.98 0.36 7.44 0.61C7.61 0.69 7.75 0.83 7.84 0.99Z\" \r\n fill=\"white\"\r\n />\r\n <!-- 感叹号的点 -->\r\n <path \r\n d=\"M7 11.5C6.58 11.5 6.25 11.16 6.25 10.75C6.25 10.33 6.58 10 7 10C7.41 10 7.75 10.33 7.75 10.75C7.75 11.16 7.41 11.5 7 11.5Z\" \r\n fill=\"#F23030\"\r\n />\r\n <!-- 感叹号的竖线 -->\r\n <rect \r\n x=\"6.5\" \r\n y=\"4.5\" \r\n width=\"1\" \r\n height=\"4.5\" \r\n rx=\"0.5\" \r\n fill=\"#F23030\"\r\n />\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngIf=\"file.status === 'uploading' || file.status === 'downloading'\">\r\n <svg class=\"mc-file-item__progress-ring\" viewBox=\"0 0 36 36\">\r\n <path class=\"mc-file-item__progress-ring-track\" d=\"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\" />\r\n <path\r\n class=\"mc-file-item__progress-ring-circle\"\r\n stroke-dasharray=\"100, 100\"\r\n [style.strokeDashoffset]=\"100 - (file.percentage || 0)\"\r\n d=\"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\"\r\n />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- 文件信息 -->\r\n <div class=\"mc-file-item__info\">\r\n <div class=\"mc-file-item__name\" [title]=\"file.name\">{{ file.name }}</div>\r\n <div class=\"mc-file-item__meta\">\r\n <!-- 1. 失败状态 (统一处理上传和下载失败) -->\r\n <ng-container *ngIf=\"file.status === 'error' || file.status === 'uploadError' || file.status === 'downloadError'\">\r\n <span \r\n class=\"mc-file-item__status mc-file-item__status--error\" \r\n [title]=\"typeof file.error === 'string' ? file.error : (file.status === 'downloadError' ? t('FileList.downloadFailed') : t('FileList.uploadFailed'))\"\r\n >\r\n {{ file.status === 'downloadError' ? t('FileList.downloadFailed') : t('FileList.uploadFailed') }}\r\n </span>\r\n <span\r\n class=\"mc-file-item__meta-action\"\r\n (click)=\"file.status === 'downloadError' ? handleRetryDownload(file) : handleRetryUpload(file)\"\r\n >{{ t('FileList.retry') }}</span>\r\n </ng-container>\r\n <!-- 2. 悬停状态 -->\r\n <ng-container *ngIf=\"hoveredFileUid === file.uid && file.status === 'success'\">\r\n <span class=\"mc-file-item__meta-action\" (click)=\"handleDownload(file, $event)\">{{ t('FileList.download') }}</span>\r\n <span class=\"mc-file-item__meta-action\" (click)=\"handlePreview(file)\">{{ t('FileList.preview') }}</span>\r\n </ng-container>\r\n <!-- 3. 上传/下载中状态 -->\r\n <ng-container *ngIf=\"file.status === 'uploading' || file.status === 'downloading'\">\r\n <span class=\"mc-file-item__status\">{{ t(`FileList.${file.status}`) }}</span>\r\n </ng-container>\r\n <!-- 4. 默认状态 -->\r\n <ng-container *ngIf=\"!file.status || file.status === 'success' && hoveredFileUid !== file.uid\">\r\n <span class=\"mc-file-item__file-type\">{{ getFileTypeString(file.name) }}</span>\r\n <span class=\"mc-file-item__size\">{{ formatFileSize(file.size) }}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- 删除按钮 -->\r\n <div class=\"mc-file-item__actions\" *ngIf=\"context === 'input'\">\r\n <!-- 删除按钮 -->\r\n <button (click)=\"handleRemove(file)\" class=\"mc-file-item__action-btn mc-file-item__action-btn--remove\" [title]=\"t('FileList.remove')\">\r\n X\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 使用 mc-teleport 组件加载文件预览 -->\r\n <mc-teleport [to]=\"'body'\">\r\n <div *ngIf=\"isPreviewVisible && previewFile\" class=\"mc-file-preview__overlay\" (click.self)=\"closePreview()\">\r\n <!-- 图片预览 -->\r\n <img *ngIf=\"getPreviewType(previewFile) === 'image'\" [src]=\"sanitizeUrl(previewFile?.['thumbUrl'] || previewFile?.url)\" [alt]=\"previewFile?.name\" class=\"mc-file-preview__content\" />\r\n <!-- 视频预览 -->\r\n <video *ngIf=\"getPreviewType(previewFile) === 'video'\" [src]=\"sanitizeUrl(previewFile?.url)\" controls class=\"mc-file-preview__content\"></video>\r\n <!-- PDF 和 文本文件预览 (使用 iframe) -->\r\n <iframe *ngIf=\"getPreviewType(previewFile) === 'iframe'\" [src]=\"sanitizeUrl(previewFile?.url)\" class=\"mc-file-preview__content mc-file-preview__iframe\"></iframe>\r\n <!-- 其他文件类型的占位符 -->\r\n <div *ngIf=\"getPreviewType(previewFile) === 'unsupported'\" class=\"mc-file-preview__unsupported\">\r\n <span>{{ t('FileList.unsupportedPreview', { fileName: previewFileName }) }}</span>\r\n <span class=\"mc-file-preview__unsupported-tip\">{{ t('FileList.tryDownload') }}</span>\r\n </div>\r\n <!-- 关闭按钮 -->\r\n <button class=\"mc-file-preview__close-btn\" (click)=\"closePreview()\" [title]=\"t('FileList.close')\">✕</button>\r\n </div>\r\n </mc-teleport>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { McFileListComponent } from './file-list.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, McFileListComponent],\r\n exports: [McFileListComponent],\r\n})\r\nexport class McFileListModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-header',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent {\r\n @Input() logoImg: string = '';\r\n @Input() title: string = '';\r\n @Input() logoClickable: boolean = false;\r\n\r\n @Output() logoClicked = new EventEmitter<void>();\r\n\r\n onLogoClicked(): void {\r\n if (this.logoClickable) {\r\n this.logoClicked.emit();\r\n }\r\n }\r\n}\r\n","<div class=\"mc-header\">\r\n <div class=\"mc-header-logo-container\" [class]=\"{ clickable: logoClickable }\" (click)=\"onLogoClicked()\">\r\n <img *ngIf=\"logoImg\" class=\"mc-header-logo\" [src]=\"logoImg\" [alt]=\"logoImg\" />\r\n <div class=\"mc-header-title\">{{ title }}</div>\r\n </div>\r\n <div class=\"mc-header-operation\">\r\n <ng-content select=\"[operationArea]\"></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { HeaderComponent } from './header.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, HeaderComponent],\r\n exports: [HeaderComponent],\r\n})\r\nexport class HeaderModule {}\r\n","export enum DisplayType {\r\n Simple = \"simple\",\r\n Full = \"full\",\r\n}\r\nexport enum InputVariant {\r\n Bordered = \"bordered\",\r\n BorderLess = \"borderless\",\r\n}\r\nexport enum SendBtnVariant {\r\n Simple = \"simple\",\r\n Full = \"full\",\r\n}\r\nexport enum SubmitShortKey {\r\n Enter = \"enter\",\r\n ShiftEnter = \"shiftEnter\",\r\n}\r\n\r\nexport interface ThemeTagItem {\r\n type: 'themeTag';\r\n themeTagKey?: string; // 主题标签的唯一标识\r\n themeTagText: string; // 主题标签的文本内容\r\n clearInput?: boolean; // 关闭主题标签时是否清空对应输入框内容\r\n popoverContent: string; // 主题标签的pop弹出提示内容\r\n}\r\n\r\nexport interface TipTagOption {\r\n tipTagKey?: string; // 前置提示标签的唯一标识\r\n tipTagText: string; // 前置提示标签的文本内容\r\n clearInput?: boolean; // 关闭前置标签时是否清空对应输入框内容\r\n popoverContent: string; // 前置提示标签的pop弹出提示内容\r\n}\r\n\r\nexport interface FormatTextItem {\r\n type: 'text';\r\n key: string; // 标签的唯一标识\r\n content: string; \r\n}\r\n\r\nexport interface FormatInputItem {\r\n type: 'input';\r\n key: string; // 标签的唯一标识\r\n placeholder?: string; // input标签的占位提示内容\r\n content?: string; // input标签的默认展示内容,与placeholder需保证有其一\r\n}\r\n\r\nexport type FormatContentItem = FormatTextItem | FormatInputItem | ThemeTagItem;\r\nexport interface FormatContentOptions {\r\n formatContent: FormatContentItem[]; // 当前仅支持最多设置一个ThemeTag,且必须放在数组的第一个位置\r\n}\r\n\r\nexport const TimeToViewRender = 50;","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-send-icon',\r\n standalone: true,\r\n templateUrl: './send-icon.component.html',\r\n styleUrls: ['./send-icon.component.scss']\r\n})\r\nexport class SendIconComponent {\r\n\r\n}","<svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n ></path>\r\n </g>\r\n</svg>\r\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport { SendBtnVariant } from './common/types';\r\n\r\nexport interface InputButtonAdapter extends DefaultAdapter {\r\n locale(key: string, params?: Record<string, string>): string;\r\n emitChange(): void;\r\n}\r\n\r\nexport class InputButtonFoundation extends BaseFoundation<InputButtonAdapter> {\r\n constructor(adapter: InputButtonAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n showClickWave(nativeElement: HTMLElement, event: MouseEvent): void {\r\n const rect = nativeElement.getBoundingClientRect();\r\n this.setState({\r\n waveStyle: {\r\n left: event.clientX - rect.left + 'px',\r\n top: event.clientY - rect.top + 'px',\r\n },\r\n showWave: true,\r\n });\r\n\r\n setTimeout(() => {\r\n this.setState({\r\n showWave: false,\r\n });\r\n }, 300);\r\n }\r\n\r\n getButtonClasses() {\r\n const { loading, sendBtnVariant } = this.getProps();\r\n const isMouseDown = this.getState('isMouseDown');\r\n return {\r\n 'mc-button': true,\r\n 'mc-button-loading': loading,\r\n mousedown: isMouseDown,\r\n 'mc-button-simple': sendBtnVariant === SendBtnVariant.Simple,\r\n };\r\n }\r\n}\r\n","import { Component, Input, EventEmitter, Output, HostListener, ViewChild, ElementRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SendIconComponent } from '../send-icon/send-icon.component';\r\nimport { SendBtnVariant } from '../../components-common/Input/common/types';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport { LocaleService, TranslatePipe } from '../../Locale';\r\nimport { InputButtonAdapter, InputButtonFoundation } from '../../components-common/Input/button-foundation';\r\n\r\n@Component({\r\n selector: 'mc-button',\r\n standalone: true,\r\n imports: [CommonModule, SendIconComponent, TranslatePipe],\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n})export class ButtonComponent extends BaseComponent<InputButtonFoundation> {\r\n @Input() disabled: boolean = false;\r\n @Input() loading: boolean = false;\r\n @Input() inputValue: string = '';\r\n @Input() sendBtnVariant: SendBtnVariant = SendBtnVariant.Full;\r\n \r\n @Output() submit = new EventEmitter<string>();\r\n @Output() cancel = new EventEmitter<void>();\r\n @Output() change = new EventEmitter<string>();\r\n \r\n @ViewChild('button') buttonElement!: ElementRef<HTMLButtonElement>;\r\n \r\n isMouseDown: boolean = false;\r\n showWave: boolean = false;\r\n waveStyle: { top: string; left: string } = { top: '0px', left: '0px' };\r\n \r\n constructor(private localeService: LocaleService) { super(); }\r\n \r\n get buttonClasses(): Record<string, any> {\r\n return this.foundation.getButtonClasses();\r\n }\r\n \r\n ngOnInit() {\r\n this.foundation = new InputButtonFoundation(this.adapter as InputButtonAdapter);\r\n this.foundation.init();\r\n }\r\n \r\n @HostListener('mousedown')\r\n onMouseDown(): void {\r\n this.isMouseDown = true;\r\n }\r\n \r\n @HostListener('mouseup')\r\n onMouseUp(): void {\r\n this.isMouseDown = false;\r\n }\r\n \r\n showClickWave(event: MouseEvent): void {\r\n this.foundation.showClickWave(this.buttonElement.nativeElement, event);\r\n }\r\n \r\n onConfirm(event: MouseEvent): void {\r\n this.showClickWave(event);\r\n \r\n if (this.loading) {\r\n this.cancel.emit();\r\n } else {\r\n this.submit.emit(this.inputValue);\r\n this.inputValue = '';\r\n this.change.emit(this.inputValue);\r\n }\r\n }\r\n \r\n\r\n}","<button\r\n #button\r\n [disabled]=\"disabled || (!loading && !inputValue)\"\r\n [ngClass]=\"buttonClasses\"\r\n (click)=\"onConfirm($event)\"\r\n [attr.aria-label]=\"loading ? ('Input.pauseAnswer' | translate) : ('Input.send' | translate)\"\r\n [attr.aria-disabled]=\"disabled || (!loading && !inputValue)\"\r\n [attr.aria-busy]=\"loading\"\r\n>\r\n <span class=\"mc-button-content\">\r\n <ng-container *ngIf=\"loading\">\r\n <ng-template [ngTemplateOutlet]=\"loadingIcon\"></ng-template>\r\n </ng-container>\r\n <mc-send-icon *ngIf=\"!loading\"></mc-send-icon>\r\n <span *ngIf=\"sendBtnVariant === 'full'\">\r\n {{\r\n loading ? (\"Input.pauseAnswer\" | translate) : (\"Input.send\" | translate)\r\n }}\r\n </span>\r\n </span>\r\n <div\r\n *ngIf=\"showWave\"\r\n class=\"mc-button-water-wave\"\r\n [style.top]=\"waveStyle.top\"\r\n [style.left]=\"waveStyle.left\"\r\n ></div>\r\n</button>\r\n\r\n<ng-template #loadingIcon>\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\nimport {\r\n DisplayType,\r\n InputVariant,\r\n SendBtnVariant,\r\n SubmitShortKey,\r\n} from './common/types';\r\n\r\nexport interface InputAdapter extends DefaultAdapter {\r\n locale(key: string, params?: Record<string, string>): string;\r\n emitChange(): void;\r\n submit(inputValue: string): void;\r\n}\r\n\r\nexport class InputFoundation extends BaseFoundation<InputAdapter> {\r\n constructor(adapter: InputAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getInputClasses() {\r\n const { disabled, displayType, variant } = this.getProps();\r\n return {\r\n 'mc-input': true,\r\n 'mc-input-disabled': disabled,\r\n 'mc-input-simple': displayType === DisplayType.Simple,\r\n 'mc-input-borderless': variant === InputVariant.BorderLess,\r\n };\r\n }\r\n\r\n getPlaceholderText() {\r\n const { placeholder, submitShortKey } = this.getProps();\r\n if (placeholder) {\r\n return placeholder;\r\n }\r\n\r\n let enterKey = '';\r\n let shiftEnterKey = '';\r\n\r\n if (submitShortKey === SubmitShortKey.Enter) {\r\n enterKey = 'Enter';\r\n shiftEnterKey = 'Shift + Enter';\r\n } else if (submitShortKey === SubmitShortKey.ShiftEnter) {\r\n enterKey = 'Shift + Enter';\r\n shiftEnterKey = 'Enter';\r\n }\r\n\r\n return enterKey\r\n ? this._adapter.locale('Input.pleaseEnterPlaceholder', {\r\n enterKey,\r\n shiftEnterKey,\r\n })\r\n : this._adapter.locale('Input.pleaseEnter');\r\n }\r\n\r\n clearInput(): void {\r\n this.setState({\r\n inputValue: '',\r\n });\r\n this._adapter.emitChange();\r\n }\r\n\r\n emitChange(): void {\r\n this._adapter.emitChange();\r\n }\r\n\r\n submit(inputValue: string): void {\r\n this._adapter.submit(inputValue);\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n const { submitShortKey, lock } = this.getProps();\r\n const inputValue = this.getState('inputValue');\r\n if (submitShortKey === null) {\r\n return;\r\n }\r\n\r\n const shiftKey =\r\n submitShortKey === SubmitShortKey.Enter\r\n ? !event.shiftKey\r\n : submitShortKey === SubmitShortKey.ShiftEnter\r\n ? event.shiftKey\r\n : false;\r\n\r\n if (shiftKey && event.key === 'Enter' && !lock) {\r\n event.preventDefault();\r\n this.submit(inputValue);\r\n this.setState({\r\n inputValue: '',\r\n });\r\n this.emitChange();\r\n }\r\n }\r\n}\r\n","export function insertText(text: string) {\r\n const selection = window.getSelection();\r\n if (selection && selection.rangeCount > 0) {\r\n const range = selection.getRangeAt(0);\r\n range.deleteContents();\r\n const textNode = document.createTextNode(text);\r\n range.insertNode(textNode);\r\n range.setStartAfter(textNode);\r\n range.setEndAfter(textNode);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n}\r\n\r\n\r\nexport const handlePaste = (e: any) => {\r\n e.preventDefault();\r\n const text = e.clipboardData?.getData(\"text/plain\") ||'';\r\n const sanitizedText = text.replace(/[\\r\\n]+/g, ' ');\r\n if (sanitizedText) {\r\n insertText(sanitizedText);\r\n }\r\n}\r\n\r\n// 使光标移动到文案末尾\r\nexport const moveCursorToTextEnd = (inputWarp: HTMLElement) => {\r\n if (inputWarp) {\r\n const range = document.createRange();\r\n const selection = window.getSelection();\r\n range.selectNodeContents(inputWarp);\r\n range.collapse(false);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n}\r\n\r\n","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport { LocaleService } from '../../Locale';\r\n\r\nimport { handlePaste } from '../../components-common/Input/common/util';\r\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\r\n\r\n\r\n@Component({\r\n selector: 'mc-input-tag',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './input-tag.component.html',\r\n styleUrls: ['./input-tag.component.scss'],\r\n})export class InputTagComponent extends BaseComponent<InputTagFoundation> {\r\n @Input() disabled: boolean = false;\r\n @Input() content: string = '';\r\n @Input() placeholder: string = '';\r\n @Output() change = new EventEmitter<string>();\r\n @ViewChild('editableSpanRef') editableSpanRef!: ElementRef<HTMLSpanElement>;\r\n \r\n isEditable: boolean = false;\r\n localValue: string = this.content;\r\n\r\n constructor(private localeService: LocaleService) { super(); }\r\n \r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['content']) {\r\n this.localValue = changes['content'].currentValue;\r\n }\r\n }\r\n\r\n handleFocus() {\r\n this.isEditable = !this.disabled;\r\n }\r\n\r\n handleBlur() {\r\n this.isEditable = false;\r\n }\r\n\r\n handleInput(e: any) {\r\n const prompt = this.editableSpanRef?.nativeElement.textContent || '';\r\n this.localValue = prompt;\r\n this.change.emit(prompt);\r\n }\r\n\r\n handleInputPaste(e: any) {\r\n handlePaste(e);\r\n this.handleInput(e);\r\n }\r\n}","<span class=\"editable-span\" contenteditable=\"false\">\r\n <span \r\n #editableSpanRef\r\n [attr.contenteditable]=\"isEditable\"\r\n [attr.placeholder]=\"placeholder\"\r\n tabindex=\"0\"\r\n class=\"input-custom-item\"\r\n [ngClass]=\"{'input-custom-placeholder': !localValue?.length, 'inline-text': localValue?.length}\"\r\n (input)=\"handleInput($event)\"\r\n (focus)=\"handleFocus()\"\r\n (blur)=\"handleBlur()\"\r\n (paste)=\"handleInputPaste($event)\"\r\n >{{content}}</span>\r\n</span>","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges, ContentChild, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport { LocaleService } from '../../Locale';\r\n\r\nimport { handlePaste, insertText, moveCursorToTextEnd } from '../../components-common/Input/common/util';\r\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\r\nimport { InputTagComponent } from '../InputTag/input-tag.component';\r\nimport { DisplayType, FormatContentItem, SubmitShortKey, ThemeTagItem, TimeToViewRender } from '../../components-common/Input/common/types';\r\n// import { PopoverModule } from 'ng-devui/popover';\r\n\r\n@Component({\r\n selector: 'mc-editable-block',\r\n standalone: true,\r\n imports: [CommonModule, InputTagComponent],\r\n templateUrl: './editable-block.component.html',\r\n styleUrls: ['./editable-block.component.scss'],\r\n})export class EditableBlockComponent extends BaseComponent<InputTagFoundation> {\r\n\r\n themeTag: ThemeTagItem = {\r\n themeTagText: '',\r\n clearInput: false,\r\n popoverContent: '',\r\n type: 'themeTag',\r\n };\r\n \r\n @Input() disabled: boolean = false;\r\n @Input() displayType: DisplayType = DisplayType.Full;\r\n @Input() placeholder: string = '';\r\n\r\n @Input() templateParts: any[] = [];\r\n @Input() maxLength: number | null = 2000;\r\n @Input() submitShortKey: SubmitShortKey | null | string =\r\n SubmitShortKey.Enter;\r\n @Input() autofocus: boolean = false;\r\n\r\n @Output() send = new EventEmitter<string>();\r\n @Output() input = new EventEmitter<string>();\r\n @Output() blur = new EventEmitter<FocusEvent>();\r\n @Output() focus = new EventEmitter<FocusEvent>();\r\n @Output() onBlockKeyArrowUp = new EventEmitter<KeyboardEvent>();\r\n @ViewChild('editableDivRef') editableDivRef!: ElementRef<HTMLDivElement>;\r\n @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\r\n localTemplateParts: any = [...this.templateParts];\r\n\r\n constructor(private localeService: LocaleService) { super(); }\r\n \r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['templateParts']) {\r\n this.localTemplateParts = [...changes['templateParts'].currentValue];\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.autofocus && this.editableDivRef?.nativeElement && !this.disabled) {\r\n this.onFocusInput();\r\n }\r\n }\r\n\r\n clearInput() {\r\n const inputWarp = this.editableDivRef?.nativeElement;\r\n if (inputWarp) {\r\n inputWarp.innerHTML = '';\r\n this.handleDivInput();\r\n }\r\n }\r\n\r\n getInput(){\r\n return this.getCurrentInputValue();\r\n }\r\n\r\n handleSend() {\r\n const prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\r\n if (this.maxLength && prompt.length > this.maxLength) {\r\n return;\r\n }\r\n this.send.emit(prompt);\r\n this.clearInput();\r\n }\r\n\r\n focusInput() {\r\n this.editableDivRef?.nativeElement.focus();\r\n moveCursorToTextEnd(this.editableDivRef?.nativeElement);\r\n }\r\n\r\n onFocus($event: FocusEvent) {\r\n this.focus.emit($event);\r\n }\r\n onBlur($event: FocusEvent) {\r\n this.blur.emit($event);\r\n }\r\n\r\n isComposing: boolean = false;\r\n\r\n handleCompositionEnd($event: CompositionEvent) {\r\n this.isComposing = false;\r\n this.handleDivInput();\r\n }\r\n handleCompositionStart($event: CompositionEvent) {\r\n this.isComposing = true;\r\n }\r\n handleDivPaste(e: any) {\r\n e.preventDefault();\r\n const text = (e.originalEvent || e).clipboardData?.getData('text/plain');\r\n insertText(text);\r\n this.handleDivInput();\r\n }\r\n handleDivKeydown(e: KeyboardEvent) {\r\n const shiftKey = this.submitShortKey === SubmitShortKey.Enter ? !e.shiftKey : this.submitShortKey === SubmitShortKey.ShiftEnter ? e.shiftKey : false;\r\n if (e.key === 'Enter' && shiftKey) {\r\n e.preventDefault();\r\n this.handleSend();\r\n }\r\n if(['ArrowLeft', 'ArrowRight','Backspace','Delete'].includes(e.key)){\r\n const selection = window.getSelection();\r\n if (!selection?.rangeCount || !selection.isCollapsed) {\r\n return\r\n }\r\n\r\n const range = selection.getRangeAt(0);\r\n const { startContainer: node, startOffset} = range;\r\n const direction = e.key === 'ArrowLeft' || e.key === 'Backspace' ? 'previous': 'next';\r\n const targetNode: any = this.findSiblingNode(node, startOffset, direction);\r\n if(targetNode && targetNode.nodeType === Node.ELEMENT_NODE){\r\n const editSpanDom = targetNode.querySelector('.input-custom-item');\r\n if(!editSpanDom){\r\n return;\r\n }\r\n e.preventDefault();\r\n editSpanDom.contentEditable = 'true';\r\n if(e.key === 'ArrowLeft' || e.key === 'ArrowRight'){\r\n const newRange = document.createRange();\r\n\r\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\r\n newRange.collapse(false);\r\n selection.removeAllRanges();\r\n selection.addRange(newRange);\r\n }else if(e.key === 'Backspace' || e.key === 'Delete'){\r\n if(editSpanDom.textContent.trim()){\r\n const newRange = document.createRange();\r\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\r\n newRange.collapse(false);\r\n selection.removeAllRanges();\r\n selection.addRange(newRange);\r\n\r\n }else{\r\n targetNode.remove();\r\n }\r\n }\r\n }\r\n }\r\n if(e.key === 'ArrowUp'){\r\n this.isCursorAtStart() ? this.onBlockKeyArrowUp.emit(e) : null;\r\n }\r\n }\r\n\r\n isCursorAtStart(){\r\n const selection = window.getSelection();\r\n if (!selection?.rangeCount) {\r\n return true;\r\n }\r\n const range = selection.getRangeAt(0);\r\n if(range.startOffset !== 0){\r\n return false;\r\n }\r\n let node :any= range.startContainer;\r\n while(node && !node.classList?.contains('editable-container')){\r\n if(node.previousSibling){\r\n return false;\r\n }\r\n node = node.parentNode;\r\n }\r\n return true;\r\n }\r\n\r\n findSiblingNode(node:any, startOffset: number, direction: 'previous' | 'next'){\r\n if(!node){\r\n return null;\r\n }\r\n\r\n let current = node;\r\n const isEditableContainer = node.classList?.contains('editable-container');\r\n if(isEditableContainer){\r\n const childNodes = node.childNodes;\r\n const index = Math.min(startOffset, childNodes.length - 1);\r\n current = childNodes[index];\r\n }\r\n if(!isEditableContainer && direction === 'previous' &&startOffset !== 0){\r\n return null;\r\n }\r\n if(!isEditableContainer && direction === 'next' && startOffset !== node.textContent.length){\r\n return null;\r\n }\r\n let target = null;\r\n let sibling = current;\r\n while(sibling){\r\n sibling = direction === 'next' ? sibling.nextSibling : sibling.previousSibling;\r\n if(!sibling){\r\n continue;\r\n }\r\n // 排除注释节点和值为空的文本节点\r\n if(sibling.nodeType !== Node.COMMENT_NODE && (sibling.nodeType !== Node.TEXT_NODE || (sibling.nodeType === Node.TEXT_NODE && sibling.nodeValue.trim() !== ''))){\r\n target = sibling;\r\n break;\r\n }\r\n \r\n }\r\n return target;\r\n }\r\n\r\n\r\n handleDivInput() {\r\n if(!this.isComposing) {\r\n this.processInput();\r\n }\r\n }\r\n\r\n getCurrentInputValue() {\r\n let prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\r\n // 前置标签TipTag的文本需要去除掉\r\n if(this.themeTag.themeTagText){\r\n const prefixSpan = this.editableDivRef?.nativeElement?.querySelector('.ai-input-prefix-wrapper');\r\n if(prefixSpan){\r\n prompt = prompt.replace(prefixSpan.textContent || '', ' ');\r\n }\r\n }\r\n return prompt;\r\n }\r\n\r\n processInput() {\r\n setTimeout(() => {\r\n const prompt = this.getCurrentInputValue();\r\n this.input.emit(prompt);\r\n }, TimeToViewRender);\r\n }\r\n\r\n setInputTag(key: string, placeholder: string, defaultValue?: string) {\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.localTemplateParts.push({\r\n key,\r\n type: 'input',\r\n placeholder,\r\n content: defaultValue,\r\n });\r\n this.onFocusInput();\r\n this.handleDivInput();\r\n }\r\n \r\n setMixTags(mixTagConfig:FormatContentItem[]) {\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.localTemplateParts = [...mixTagConfig];\r\n this.onFocusInput();\r\n this.handleDivInput();\r\n }\r\n\r\n setText(text:string) {\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.localTemplateParts.push({\r\n key: 'text',\r\n type: 'text',\r\n content: text,\r\n });\r\n this.onFocusInput();\r\n this.handleDivInput();\r\n }\r\n \r\n openTipTag(themeTagText:string, popoverContent:string, clearInput?: boolean){\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.themeTag = {\r\n themeTagText,\r\n popoverContent,\r\n clearInput: clearInput || false,\r\n type: 'themeTag'\r\n };\r\n\r\n }\r\n \r\n closeTipTag() {\r\n if(this.themeTag.themeTagText && this.themeTag.clearInput){\r\n this.clearInput();\r\n }else{\r\n this.themeTag = {\r\n themeTagText: '',\r\n popoverContent: '',\r\n clearInput: false,\r\n type: 'themeTag'\r\n };\r\n this.processInput();\r\n }\r\n }\r\n\r\n onFocusInput() {\r\n this.focusInput();\r\n }\r\n\r\n}"," <div \r\n #editableDivRef\r\n class=\"editable-container\"\r\n [ngClass]=\"{'mc-input-disabled': disabled,'mc-input-simple': displayType === 'simple' }\"\r\n [attr.contenteditable]=\"!disabled\"\r\n spellcheck=\"false\"\r\n [attr.placeholder]=\"placeholder\"\r\n (input)=\"handleDivInput()\"\r\n (keydown)=\"handleDivKeydown($event)\"\r\n (paste)=\"handleDivPaste($event)\"\r\n (compositionstart)=\"handleCompositionStart($event)\"\r\n (compositionend)=\"handleCompositionEnd($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (focus)=\"onFocus($event)\"\r\n >\r\n <!-- 前置标签 --> \r\n <span *ngIf=\"themeTag.themeTagText\" contenteditable=\"false\" >\r\n <span *ngIf=\"themeTag.themeTagText\" [title]=\"themeTag.popoverContent\" class=\"ai-input-prefix-wrapper\" (click)=\"closeTipTag()\" contenteditable=\"false\">\r\n <ng-container *ngIf=\"themeTagTemplate\">\r\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTag, themeTagText: themeTag.themeTagText}\"></ng-container>\r\n </ng-container>\r\n <span *ngIf=\"!themeTagTemplate\" class=\"ai-input-prefix\">{{themeTag.themeTagText}}</span>\r\n </span>\r\n <span contenteditable=\"false\" style=\"display: inline-block;width: 4px;\"></span>\r\n </span>\r\n\r\n <ng-container *ngFor=\"let part of localTemplateParts\" [ngSwitch]=\"part.type\">\r\n <ng-container *ngSwitchCase=\"'text'\">{{part.content}}</ng-container>\r\n <mc-input-tag *ngSwitchCase=\"'input'\" [content]=\"part.content\" [placeholder]=\"part.placeholder\" [disabled]=\"disabled\" (change)=\"handleDivInput()\"></mc-input-tag>\r\n </ng-container>\r\n </div>","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n DisplayType,\r\n FormatContentItem,\r\n FormatContentOptions,\r\n InputVariant,\r\n SendBtnVariant,\r\n SubmitShortKey,\r\n TimeToViewRender,\r\n} from '../components-common/Input/common/types';\r\nimport { ButtonComponent } from './button/button.component';\r\n\r\n// TextareaAutoSize类型定义\r\nexport type TextareaAutoSize = { minRows?: number; maxRows?: number } | boolean;\r\n\r\n// 默认的autosize配置\r\nconst DEFAULT_AUTOSIZE = {\r\n minRows: 1,\r\n maxRows: 5,\r\n};\r\n\r\nimport BaseComponent from '../Base/base.component';\r\nimport {\r\n InputAdapter,\r\n InputFoundation,\r\n} from '../components-common/Input/foundation';\r\nimport { LocaleService } from '../Locale/locale.service';\r\nimport { TranslatePipe } from '../Locale/translate.pipe';\r\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\r\n\r\n// 创建一个token用于组件间通信\r\nexport const inputContextToken = 'input-context';\r\n\r\n@Component({\r\n selector: 'mc-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ButtonComponent,\r\n TranslatePipe,\r\n EditableBlockComponent,\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [{ provide: inputContextToken, useExisting: InputComponent }],\r\n})\r\nexport class InputComponent\r\n extends BaseComponent<InputFoundation>\r\n implements OnInit\r\n{\r\n @Input() value: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() disabled: boolean = false;\r\n @Input() displayType: DisplayType = DisplayType.Full;\r\n @Input() variant: InputVariant = InputVariant.Bordered;\r\n @Input() sendBtnVariant: SendBtnVariant = SendBtnVariant.Full;\r\n @Input() loading: boolean = false;\r\n @Input() showCount: boolean = false;\r\n @Input() maxLength: number | null = null;\r\n @Input() submitShortKey: SubmitShortKey | null | string =\r\n SubmitShortKey.Enter;\r\n @Input() autofocus: boolean = false;\r\n @Input() autosize: TextareaAutoSize = false;\r\n @Input() formatContentOptions: FormatContentOptions = {\r\n formatContent: [],\r\n };\r\n\r\n // textarea样式\r\n textareaStyle: Record<string, string> = {};\r\n\r\n @Output() change = new EventEmitter<string>();\r\n @Output() submit = new EventEmitter<string>();\r\n @Output() cancel = new EventEmitter<void>();\r\n @Output() focus = new EventEmitter<FocusEvent>();\r\n @Output() blur = new EventEmitter<FocusEvent>();\r\n\r\n @ViewChild('textarea') textareaElement!: ElementRef<HTMLTextAreaElement>;\r\n @ViewChild('editableBlock') editableBlockRef!: EditableBlockComponent;\r\n\r\n @ContentChild('head') headTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('prefix') prefixTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('suffix') suffixTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('button') buttonTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('extra') extraTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\r\n inputValue: string = '';\r\n lock: boolean = false;\r\n showEditableBlock: boolean = false;\r\n\r\n constructor(private localeService: LocaleService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new InputFoundation(this.adapter);\r\n this.foundation.init();\r\n this.inputValue = this.value || '';\r\n }\r\n\r\n override get adapter(): InputAdapter {\r\n return {\r\n ...super.adapter,\r\n locale: (key, params) => this.localeService.translate(key, params),\r\n emitChange: () => {\r\n this.change.emit(this.inputValue);\r\n },\r\n submit: (inputValue) => {\r\n this.submit.emit(inputValue);\r\n },\r\n };\r\n }\r\n\r\n onChange(e): void {\r\n e.stopPropagation();\r\n this.foundation.emitChange();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['value']) {\r\n this.inputValue = changes['value']?.currentValue || '';\r\n // 值变化时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n\r\n if (changes['autosize']) {\r\n // autosize配置变化时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n if (changes['formatContentOptions']) {\r\n const formatContent =\r\n changes['formatContentOptions']?.currentValue?.formatContent || [];\r\n\r\n // 处理主题标签\r\n const themeTagItems = formatContent.filter(\r\n (item) => item.type === 'themeTag',\r\n );\r\n if (themeTagItems.length) {\r\n this.openTipTag(\r\n themeTagItems[0].themeTagText,\r\n themeTagItems[0].popoverContent,\r\n themeTagItems[0].clearInput,\r\n );\r\n } else {\r\n this.closeTipTag();\r\n }\r\n\r\n // 处理其他格式标签\r\n const otherFormatItems = formatContent.filter(\r\n (item) => item.type !== 'themeTag',\r\n );\r\n if (otherFormatItems.length) {\r\n this.setMixTags(otherFormatItems);\r\n } else {\r\n if (this.showEditableBlock) {\r\n this.setMixTags(otherFormatItems);\r\n }\r\n }\r\n }\r\n }\r\n\r\n get inputClasses(): Record<string, any> {\r\n return this.foundation.getInputClasses();\r\n }\r\n\r\n get maxlengthValue() {\r\n return this.maxLength !== undefined ? this.maxLength : null;\r\n }\r\n\r\n onInput(): void {\r\n if (!this.lock) {\r\n this.foundation.emitChange();\r\n // 输入时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n }\r\n\r\n onCompositionStart(): void {\r\n this.lock = true;\r\n }\r\n\r\n onCompositionEnd(): void {\r\n this.lock = false;\r\n this.foundation.emitChange();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n this.foundation.onKeydown(event);\r\n }\r\n\r\n clearInput(): void {\r\n if (this.showEditableBlock) {\r\n this.editableBlockRef?.clearInput();\r\n }\r\n this.foundation.clearInput();\r\n }\r\n\r\n getInput(): string {\r\n if (this.showEditableBlock) {\r\n return this.editableBlockRef?.getInput();\r\n }\r\n return this.inputValue;\r\n }\r\n\r\n setMixTags(mixTagConfig: FormatContentItem[]): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.showEditableBlock = true;\r\n setTimeout(() => {\r\n this.editableBlockRef?.setMixTags(mixTagConfig);\r\n }, TimeToViewRender);\r\n }\r\n\r\n openTipTag(\r\n themeTagText: string,\r\n popoverContent: string,\r\n clearInput?: boolean,\r\n ): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.showEditableBlock = true;\r\n setTimeout(() => {\r\n this.editableBlockRef?.openTipTag(\r\n themeTagText,\r\n popoverContent,\r\n clearInput,\r\n );\r\n }, TimeToViewRender);\r\n }\r\n\r\n closeTipTag(): void {\r\n if (!this.disabled && this.showEditableBlock) {\r\n this.editableBlockRef?.closeTipTag();\r\n }\r\n }\r\n\r\n handleDivInput(value: string) {\r\n if (!value) {\r\n setTimeout(() => {\r\n this.showEditableBlock = false;\r\n }, TimeToViewRender);\r\n }\r\n this.inputValue = value;\r\n this.change.emit(value);\r\n }\r\n\r\n handleDivSubmit(value: string) {\r\n this.submit.emit(value);\r\n }\r\n\r\n onDivBlur(e: FocusEvent) {\r\n this.blur.emit(e);\r\n }\r\n\r\n onDivFocus(e: FocusEvent) {\r\n this.focus.emit(e);\r\n }\r\n\r\n // 处理button组件的事件\r\n onButtonSubmit(value: string): void {\r\n this.submit.emit(value);\r\n this.clearInput();\r\n }\r\n\r\n onButtonCancel(): void {\r\n this.cancel.emit();\r\n }\r\n\r\n onButtonChange(value: string): void {\r\n this.inputValue = value;\r\n this.foundation.emitChange();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.autofocus && this.textareaElement && !this.disabled) {\r\n // 在下一个变更检测周期中聚焦,以确保视图已经完全初始化\r\n setTimeout(() => {\r\n this.textareaElement.nativeElement.focus();\r\n });\r\n }\r\n\r\n // 初始化时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n\r\n // 更新textarea样式\r\n updateTextareaStyle() {\r\n if (!this.textareaElement || this.autosize === false) {\r\n this.textareaStyle = {};\r\n return;\r\n }\r\n\r\n const config = this.getAutosizeConfig();\r\n const result = this.computeTextareaHeight(\r\n this.textareaElement.nativeElement,\r\n config.minRows,\r\n config.maxRows,\r\n );\r\n\r\n this.textareaStyle = {\r\n ...result,\r\n resize: 'none',\r\n };\r\n }\r\n\r\n // 获取autosize配置\r\n private getAutosizeConfig() {\r\n return typeof this.autosize === 'boolean'\r\n ? DEFAULT_AUTOSIZE\r\n : this.autosize;\r\n }\r\n\r\n // 计算textarea高度\r\n private computeTextareaHeight(\r\n targetElement: HTMLTextAreaElement,\r\n minRows = 1,\r\n maxRows?: number,\r\n ): Record<string, string> {\r\n const style = window.getComputedStyle(targetElement);\r\n const boxSizing = style.getPropertyValue('box-sizing');\r\n\r\n const paddingSize =\r\n Number.parseFloat(style.getPropertyValue('padding-top')) +\r\n Number.parseFloat(style.getPropertyValue('padding-bottom'));\r\n\r\n const borderSize =\r\n Number.parseFloat(style.getPropertyValue('border-top-width')) +\r\n Number.parseFloat(style.getPropertyValue('border-bottom-width'));\r\n\r\n // 创建临时textarea元素\r\n const tempTextarea = document.createElement('textarea');\r\n const sizingStyle = [\r\n 'letter-spacing',\r\n 'line-height',\r\n 'padding-top',\r\n 'padding-bottom',\r\n 'font-family',\r\n 'font-weight',\r\n 'font-size',\r\n 'font-variant',\r\n 'text-rendering',\r\n 'text-transform',\r\n 'width',\r\n 'text-indent',\r\n 'padding-left',\r\n 'padding-right',\r\n 'border-width',\r\n 'box-sizing',\r\n 'word-break',\r\n 'white-space',\r\n ];\r\n\r\n const contextStyle = sizingStyle\r\n .map((name) => `${name}:${style.getPropertyValue(name)}`)\r\n .join(';');\r\n\r\n const hiddenStyle = `\r\n min-height:0 !important;\r\n max-height:none !important;\r\n height:0 !important;\r\n visibility:hidden !important;\r\n overflow:hidden !important;\r\n position:absolute !important;\r\n z-index:-1000 !important;\r\n top:0 !important;\r\n right:0 !important;\r\n pointer-events:none !important;\r\n `;\r\n\r\n tempTextarea.setAttribute('style', `${contextStyle};${hiddenStyle}`);\r\n tempTextarea.value = targetElement.value || targetElement.placeholder || '';\r\n\r\n document.body.appendChild(tempTextarea);\r\n\r\n let height = tempTextarea.scrollHeight;\r\n const result: Record<string, string> = {\r\n height: `${height}px`,\r\n };\r\n\r\n if (minRows !== undefined || maxRows !== undefined) {\r\n tempTextarea.value = ' ';\r\n const singleRowHeight = tempTextarea.scrollHeight - paddingSize;\r\n\r\n if (minRows !== undefined) {\r\n let minHeight = singleRowHeight * minRows;\r\n if (boxSizing === 'border-box') {\r\n minHeight = minHeight + paddingSize + borderSize;\r\n }\r\n height = Math.max(minHeight, height);\r\n result['minHeight'] = `${minHeight}px`;\r\n }\r\n\r\n if (maxRows !== undefined) {\r\n let maxHeight = singleRowHeight * maxRows;\r\n if (boxSizing === 'border-box') {\r\n maxHeight = maxHeight + paddingSize + borderSize;\r\n }\r\n if (height > maxHeight) {\r\n height = maxHeight;\r\n result['overflowY'] = 'auto';\r\n }\r\n }\r\n }\r\n\r\n document.body.removeChild(tempTextarea);\r\n\r\n result['height'] = `${height}px`;\r\n return result;\r\n }\r\n\r\n get placeholderText(): string {\r\n return this.foundation.getPlaceholderText();\r\n }\r\n\r\n onFocus(event: FocusEvent) {\r\n this.focus.emit(event);\r\n }\r\n\r\n onBlur(event: FocusEvent) {\r\n this.blur.emit(event);\r\n }\r\n}\r\n","<div [ngClass]=\"inputClasses\">\r\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\r\n\r\n <div class=\"mc-input-content\">\r\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\r\n <!-- 替换Textarea -->\r\n <div *ngIf=\"showEditableBlock\" class=\"editable-block-container\">\r\n <mc-editable-block *ngIf=\"showEditableBlock\"\r\n #editableBlock\r\n [placeholder]=\"placeholder\"\r\n [maxLength]=\"maxLength\"\r\n [disabled]=\"disabled\"\r\n [submitShortKey]=\"submitShortKey\"\r\n [autofocus]=\"autofocus\"\r\n [displayType]=\"displayType\" \r\n (input)=\"handleDivInput($event)\"\r\n (send)=\"handleDivSubmit($event)\"\r\n (blur)=\"onDivBlur($event)\"\r\n (focus)=\"onDivFocus($event)\"\r\n >\r\n <ng-container *ngIf=\"themeTagTemplate\">\r\n <ng-template #themeTag let-themeTagText=\"themeTagText\">\r\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTagText, themeTagText: themeTagText}\"></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </mc-editable-block>\r\n </div>\r\n <textarea\r\n *ngIf=\"!showEditableBlock\"\r\n #textarea\r\n [(ngModel)]=\"inputValue\"\r\n [placeholder]=\"placeholderText\"\r\n [disabled]=\"disabled\"\r\n [maxlength]=\"maxLength\"\r\n class=\"mc-textarea\"\r\n [ngClass]=\"{\r\n 'mc-textarea-simple': displayType === 'simple',\r\n 'mc-textarea-disabled': disabled\r\n }\"\r\n [ngStyle]=\"textareaStyle\"\r\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\r\n [attr.aria-disabled]=\"disabled\"\r\n (input)=\"onInput()\"\r\n (change)=\"onChange($event)\"\r\n (compositionstart)=\"onCompositionStart()\"\r\n (compositionend)=\"onCompositionEnd()\"\r\n (keydown)=\"onKeydown($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"displayType === 'simple'\">\r\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\r\n <ng-container\r\n *ngIf=\"buttonTemplate; then buttonTemplate\"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultButton>\r\n <mc-button\r\n [disabled]=\"disabled || (!loading && !inputValue)\"\r\n [loading]=\"loading\"\r\n [inputValue]=\"inputValue\"\r\n [sendBtnVariant]=\"sendBtnVariant\"\r\n (submit)=\"onButtonSubmit($event)\"\r\n (cancel)=\"onButtonCancel()\"\r\n (change)=\"onButtonChange($event)\"\r\n ></mc-button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\r\n <div class=\"mc-input-foot-left\">\r\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\r\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\r\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\r\n </span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\r\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultFooterButton>\r\n <mc-button\r\n [disabled]=\"disabled || (!loading && !inputValue)\"\r\n [loading]=\"loading\"\r\n [inputValue]=\"inputValue\"\r\n [sendBtnVariant]=\"sendBtnVariant\"\r\n (submit)=\"onButtonSubmit($event)\"\r\n (cancel)=\"onButtonCancel()\"\r\n (change)=\"onButtonChange($event)\"\r\n ></mc-button>\r\n </ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { InputComponent } from './input.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonComponent } from './button/button.component';\r\nimport { SendIconComponent } from './send-icon/send-icon.component';\r\nimport { InputTagComponent } from './InputTag/input-tag.component';\r\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ButtonComponent,\r\n SendIconComponent,\r\n InputComponent,\r\n InputTagComponent,\r\n EditableBlockComponent,\r\n ],\r\n exports: [InputComponent],\r\n})\r\nexport class InputModule {}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\nimport type {\r\n IntroductionAlign,\r\n IntroductionBackground,\r\n} from './common/introduction-types';\r\n\r\nexport interface IntroductionAdapter extends DefaultAdapter {}\r\n\r\nexport class IntroductionFoundation extends BaseFoundation<IntroductionAdapter> {\r\n constructor(adapter: IntroductionAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getIntroductionClasses() {\r\n const align = this._adapter.getProp('align') as IntroductionAlign;\r\n const background = this._adapter.getProp(\r\n 'background',\r\n ) as IntroductionBackground;\r\n return [align, background].filter(Boolean).join(' ');\r\n }\r\n\r\n getLogoStyle() {\r\n const logoWidth = this._adapter.getProp('logoWidth') as number | string;\r\n const logoHeight = this._adapter.getProp('logoHeight') as number | string;\r\n const style: Record<string, string> = {};\r\n\r\n if (logoWidth) {\r\n style['width'] =\r\n typeof logoWidth === 'number' ? `${logoWidth}px` : logoWidth;\r\n }\r\n\r\n if (logoHeight) {\r\n style['height'] =\r\n typeof logoHeight === 'number' ? `${logoHeight}px` : logoHeight;\r\n }\r\n\r\n return style;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport BaseComponent from '../Base/base.component';\r\nimport type {\r\n IntroductionAlign,\r\n IntroductionBackground,\r\n} from '../components-common/Introduction/common/introduction-types';\r\nimport { IntroductionFoundation } from '../components-common/Introduction/foundation';\r\n\r\n@Component({\r\n selector: 'mc-introduction',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './introduction.component.html',\r\n styleUrls: ['./introduction.component.scss'],\r\n})\r\nexport class IntroductionComponent extends BaseComponent<IntroductionFoundation> {\r\n @Input() logoImg?: string;\r\n @Input() title?: string;\r\n @Input() subTitle?: string;\r\n @Input() description: string[] = [];\r\n @Input() logoWidth?: number | string;\r\n @Input() logoHeight?: number | string;\r\n @Input() background: IntroductionBackground = 'transparent';\r\n @Input() align: IntroductionAlign = 'center';\r\n\r\n constructor() {\r\n super();\r\n this.foundation = new IntroductionFoundation(this.adapter);\r\n }\r\n}\r\n","<div class=\"mc-introduction\" [ngClass]=\"foundation.getIntroductionClasses()\">\r\n <div class=\"mc-introduction-logo-container\">\r\n <img *ngIf=\"logoImg\" [src]=\"logoImg\" [alt]=\"title\" [ngStyle]=\"foundation.getLogoStyle()\" />\r\n <div class=\"mc-introduction-title\">{{ title }}</div>\r\n </div>\r\n <div *ngIf=\"subTitle\" class=\"mc-introduction-sub-title\">{{ subTitle }}</div>\r\n <div *ngIf=\"description && description.length\" class=\"mc-introduction-description\">\r\n <div *ngFor=\"let item of description; let i = index\">{{ item }}</div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IntroductionComponent } from './introduction.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, IntroductionComponent],\r\n exports: [IntroductionComponent],\r\n})\r\nexport class IntroductionModule {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout-aside',\r\n standalone: true,\r\n templateUrl: './aside.component.html',\r\n styleUrls: ['./aside.component.scss']\r\n})\r\nexport class LayoutAsideComponent {\r\n\r\n}","<div class=\"mc-layout-aside\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutAsideComponent } from './aside.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutAsideComponent,\r\n ],\r\n exports: [\r\n LayoutAsideComponent,\r\n ]\r\n})\r\nexport class LayoutAsideModule { }","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface LayoutContentAdapter extends DefaultAdapter {}\r\n\r\nexport class LayoutContentFoundation extends BaseFoundation<LayoutContentAdapter> {\r\n constructor(adapter: LayoutContentAdapter) {\r\n super({ ...adapter });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-arrow-down-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './arrow-down.component.html',\r\n})\r\nexport class ArrowDownIconComponent {}\r\n","<svg t=\"1773994085709\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4044\" width=\"16\" height=\"16\">\r\n <path d=\"M898.133333 512c-12.8-12.8-32-12.8-44.8-2.133333L544 800V149.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v650.666667L170.666667 509.866667c-12.8-12.8-34.133333-10.666667-44.8 2.133333-12.8 12.8-10.666667 34.133333 2.133333 44.8l362.666667 341.333333c2.133333 2.133333 6.4 4.266667 8.533333 6.4 4.266667 2.133333 6.4 2.133333 10.666667 2.133334s8.533333 0 10.666666-2.133334c4.266667-2.133333 6.4-4.266667 8.533334-6.4l362.666666-341.333333c17.066667-12.8 19.2-32 6.4-44.8z\" fill=\"#666666\" p-id=\"4045\"></path>\r\n</svg>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-arrow-up-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './arrow-up.component.html',\r\n})\r\nexport class ArrowUpIconComponent {}\r\n","<svg t=\"1773991901622\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"3858\" width=\"16\" height=\"16\">\r\n <path d=\"M896 467.2l-362.666667-341.333333c-2.133333-2.133333-6.4-4.266667-8.533333-6.4-4.266667-2.133333-6.4-2.133333-10.666667-2.133334s-8.533333 0-10.666666 2.133334c-4.266667 2.133333-6.4 4.266667-8.533334 6.4l-362.666666 341.333333c-12.8 12.8-12.8 32-2.133334 44.8 12.8 12.8 32 12.8 44.8 2.133333l309.333334-290.133333V874.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V224L853.333333 514.133333c6.4 6.4 14.933333 8.533333 21.333334 8.533334 8.533333 0 17.066667-4.266667 23.466666-10.666667 12.8-12.8 10.666667-32-2.133333-44.8z\" fill=\"#666666\" p-id=\"3859\"></path>\r\n</svg>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n type ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { debounce } from 'lodash-es';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport {\r\n type LayoutContentAdapter,\r\n LayoutContentFoundation,\r\n} from '../../components-common/Layout/content-foundation';\r\nimport { ArrowDownIconComponent } from './arrow-down/arrow-down.component';\r\nimport { ArrowUpIconComponent } from './arrow-up/arrow-up.component';\r\n\r\n@Component({\r\n selector: 'mc-layout-content',\r\n standalone: true,\r\n imports: [CommonModule, ArrowUpIconComponent, ArrowDownIconComponent],\r\n templateUrl: './content.component.html',\r\n styleUrls: ['./content.component.scss'],\r\n})\r\nexport class LayoutContentComponent extends BaseComponent<LayoutContentFoundation> {\r\n // 组件属性\r\n @Input() autoScroll: boolean = true;\r\n @Input() showScrollArrow: boolean = true;\r\n\r\n @Output() onScrollerScroll = new EventEmitter<Event>();\r\n @Output() onScrollerWheel = new EventEmitter<WheelEvent>();\r\n\r\n @ViewChild('scrollerRef') scrollerRef!: ElementRef;\r\n @ViewChild('contentRef') contentRef!: ElementRef;\r\n\r\n showUpArrow = false;\r\n showDownArrow = false;\r\n userControl = false;\r\n\r\n private contentResizeOb = new ResizeObserver(() => {\r\n this.updateScroll();\r\n });\r\n\r\n ngOnInit() {\r\n this.foundation = new LayoutContentFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n ngAfterViewInit(): void {\r\n this.contentResizeOb.observe(this.contentRef.nativeElement);\r\n this.scrollHandler({ target: this.scrollerRef.nativeElement } as any);\r\n this.initListener();\r\n }\r\n override ngOnDestroy(): void {\r\n this.contentResizeOb.disconnect();\r\n this.removeListener();\r\n super.ngOnDestroy();\r\n }\r\n\r\n override get adapter(): LayoutContentAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n autoScroll: this.autoScroll,\r\n showScrollArrow: this.showScrollArrow,\r\n }),\r\n };\r\n }\r\n\r\n private wheelHandler = (event: WheelEvent) => {\r\n if (!this.scrollerRef.nativeElement) {\r\n return;\r\n }\r\n const isBottom =\r\n Math.abs(\r\n this.scrollerRef.nativeElement.scrollTop +\r\n this.scrollerRef.nativeElement.clientHeight -\r\n this.scrollerRef.nativeElement.scrollHeight,\r\n ) < 32;\r\n if (event.deltaY !== 0) {\r\n this.userControl = !isBottom;\r\n }\r\n this.onScrollerWheel.emit(event);\r\n };\r\n private scrollHandler = debounce((event: Event) => {\r\n const target = event.target as HTMLDivElement;\r\n if (!target) {\r\n return;\r\n }\r\n this.showUpArrow = target.scrollTop !== 0;\r\n this.showDownArrow =\r\n target.scrollTop + target.clientHeight + 32 < target.scrollHeight;\r\n this.onScrollerScroll.emit(event);\r\n }, 100);\r\n private initListener() {\r\n this.scrollerRef.nativeElement?.addEventListener(\r\n 'scroll',\r\n this.scrollHandler,\r\n );\r\n this.scrollerRef.nativeElement?.addEventListener(\r\n 'wheel',\r\n this.wheelHandler,\r\n );\r\n }\r\n private removeListener() {\r\n this.scrollerRef.nativeElement?.removeEventListener(\r\n 'scroll',\r\n this.scrollHandler,\r\n );\r\n this.scrollerRef.nativeElement?.removeEventListener(\r\n 'wheel',\r\n this.wheelHandler,\r\n );\r\n }\r\n\r\n scrollToPosition = (position: number) => {\r\n if (this.scrollerRef.nativeElement) {\r\n this.scrollerRef.nativeElement.scrollTo({\r\n top: position,\r\n behavior: 'smooth',\r\n });\r\n }\r\n };\r\n scrollToBottom = () => {\r\n this.scrollToPosition(this.scrollerRef.nativeElement?.scrollHeight ?? 0);\r\n };\r\n scrollToTop = () => {\r\n this.scrollToPosition(0);\r\n };\r\n updateScroll = (force = false) => {\r\n if (!this.autoScroll) {\r\n return;\r\n }\r\n if (this.userControl && !force) {\r\n return;\r\n }\r\n this.scrollToBottom();\r\n };\r\n}\r\n","<div class=\"mc-layout-content-container\">\r\n <div class=\"mc-layout-content-scroller\" #scrollerRef>\r\n <div class=\"mc-layout-content\" #contentRef>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showScrollArrow\">\r\n <div *ngIf=\"showUpArrow\" class=\"mc-layout-content-arrow up\" (click)=\"scrollToTop()\">\r\n <div>\r\n <mc-arrow-up-icon />\r\n </div>\r\n </div>\r\n <div *ngIf=\"showDownArrow\" class=\"mc-layout-content-arrow down\" (click)=\"scrollToBottom()\">\r\n <div>\r\n <mc-arrow-down-icon />\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutContentComponent } from './content.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutContentComponent,\r\n ],\r\n exports: [\r\n LayoutContentComponent,\r\n ]\r\n})\r\nexport class LayoutContentModule { }","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout-header',\r\n standalone: true,\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class LayoutHeaderComponent {\r\n\r\n}","<div class=\"mc-layout-header\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutHeaderComponent } from './header.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutHeaderComponent,\r\n ],\r\n exports: [\r\n LayoutHeaderComponent,\r\n ]\r\n})\r\nexport class LayoutHeaderModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout',\r\n standalone: true,\r\n templateUrl: './layout.component.html',\r\n styleUrls: ['./layout.component.scss']\r\n})\r\nexport class LayoutComponent {\r\n\r\n}","<div class=\"mc-layout\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutComponent } from './layout.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutComponent,\r\n ],\r\n exports: [\r\n LayoutComponent,\r\n ]\r\n})\r\nexport class LayoutModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout-sender',\r\n standalone: true,\r\n templateUrl: './sender.component.html',\r\n styleUrls: ['./sender.component.scss']\r\n})\r\nexport class LayoutSenderComponent {\r\n\r\n}","<div class=\"mc-layout-sender\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutSenderComponent } from './sender.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutSenderComponent,\r\n ],\r\n exports: [\r\n LayoutSenderComponent,\r\n ]\r\n})\r\nexport class LayoutSenderModule { }\r\n","export enum ListDirection {\r\n Horizontal = 'horizontal',\r\n Vertical = 'vertical',\r\n}\r\nexport enum ListVariant {\r\n Transparent = 'transparent',\r\n Filled = 'filled',\r\n Bordered = 'bordered',\r\n None = 'none',\r\n}\r\nexport interface ListItemData {\r\n label: string;\r\n value: string | number;\r\n disabled?: boolean;\r\n active?: boolean;\r\n [key: string]: any;\r\n}\r\n","export const LazyLoadThreshold = 50;\r\nexport const InputTagNames = ['TEXTAREA', 'INPUT'];\r\nexport const ArrowUp = 'ArrowUp';\r\nexport const ArrowDown = 'ArrowDown';\r\nexport const Enter = 'Enter';\r\n","import BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\r\nimport { ListDirection } from \"./common/list-types\";\r\n\r\nexport interface ListAdapter extends DefaultAdapter {}\r\n\r\nexport class ListFoundation extends BaseFoundation<ListAdapter> {\r\n constructor(adapter: ListAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getListClasses() {\r\n const { direction, autoWrap } = this.getProps();\r\n return {\r\n 'mc-list': true,\r\n 'mc-list-horizontal': direction === ListDirection.Horizontal,\r\n 'mc-list-nowrap': direction === ListDirection.Horizontal && !autoWrap,\r\n };\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n type TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n ArrowDown,\r\n ArrowUp,\r\n Enter,\r\n InputTagNames,\r\n LazyLoadThreshold,\r\n} from '../components-common/List/common/list-const';\r\nimport {\r\n ListDirection,\r\n type ListItemData,\r\n ListVariant,\r\n} from '../components-common/List/common/list-types';\r\nimport {\r\n type ListAdapter,\r\n ListFoundation,\r\n} from '../components-common/List/foundation';\r\nimport BaseComponent from '../Base/base.component';\r\n\r\n@Component({\r\n selector: 'mc-list',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './list.component.html',\r\n styleUrls: ['./list.component.scss'],\r\n})\r\nexport class ListComponent extends BaseComponent<ListFoundation> {\r\n // 组件属性\r\n @Input() direction: ListDirection = ListDirection.Vertical;\r\n @Input() autoWrap: boolean = true;\r\n @Input() variant: ListVariant = ListVariant.Transparent;\r\n @Input() enableLazyLoad: boolean = false;\r\n @Input() enableShortKey: boolean = false;\r\n @Input() data: Array<ListItemData> = [];\r\n @Input() inputEl: HTMLElement;\r\n @Input() selectable: boolean = true;\r\n @Input() preSelectIndex: number = this.enableShortKey ? 0 : -1;\r\n\r\n @Output() loadMore = new EventEmitter<Event>();\r\n @Output() select = new EventEmitter<ListItemData>();\r\n\r\n // 内容投影模板引用\r\n @ContentChild('item') itemTemplate: TemplateRef<any> | null = null;\r\n\r\n protected readonly ListVariant = ListVariant;\r\n private listenDom: HTMLElement | Document;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new ListFoundation(this.adapter);\r\n this.foundation.init();\r\n this.initListenDom();\r\n this.initListener();\r\n }\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.removeListener();\r\n }\r\n\r\n override get adapter(): ListAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n direction: this.direction,\r\n autoWrap: this.autoWrap,\r\n variant: this.variant,\r\n enableLazyLoad: this.enableLazyLoad,\r\n enableShortKey: this.enableShortKey,\r\n data: this.data,\r\n inputEl: this.inputEl,\r\n selectable: this.selectable,\r\n }),\r\n };\r\n }\r\n\r\n // 计算属性\r\n get listClasses(): Record<string, any> {\r\n return this.foundation.getListClasses();\r\n }\r\n\r\n initListenDom() {\r\n if (this.inputEl) {\r\n const el = this.inputEl;\r\n if (InputTagNames.includes(el.tagName)) {\r\n this.listenDom = el;\r\n } else {\r\n this.listenDom =\r\n el.querySelector('textarea') || el.querySelector('input') || document;\r\n }\r\n } else {\r\n this.listenDom = document;\r\n }\r\n }\r\n initListener() {\r\n if (this.enableShortKey) {\r\n this.listenDom.addEventListener(\r\n 'keydown',\r\n this.onKeyDown.bind(this) as any,\r\n );\r\n }\r\n }\r\n removeListener() {\r\n this.listenDom.removeEventListener(\r\n 'keydown',\r\n this.onKeyDown.bind(this) as any,\r\n );\r\n }\r\n onListScroll(e: Event): void {\r\n if (!this.enableLazyLoad || this.direction !== ListDirection.Vertical) {\r\n return;\r\n }\r\n const targetEl = e.target as HTMLElement;\r\n const scrollHeight = targetEl.scrollHeight;\r\n const clientHeight = targetEl.clientHeight;\r\n const scrollTop = targetEl.scrollTop;\r\n\r\n if (scrollHeight - clientHeight - scrollTop < LazyLoadThreshold) {\r\n this.loadMore.emit(e);\r\n }\r\n }\r\n onItemClick(clickedItem: ListItemData): void {\r\n if (clickedItem.disabled) {\r\n return;\r\n }\r\n if (this.selectable) {\r\n for (let i = 0; i < this.data.length; i++) {\r\n this.data[i].active = this.data[i].value === clickedItem.value;\r\n }\r\n }\r\n this.select.emit({ ...clickedItem });\r\n }\r\n onKeyDown(e: KeyboardEvent) {\r\n if (e.code === ArrowUp) {\r\n this.preSelectIndex =\r\n this.preSelectIndex === 0\r\n ? this.data.length - 1\r\n : this.preSelectIndex - 1;\r\n }\r\n if (e.code === ArrowDown) {\r\n this.preSelectIndex =\r\n this.preSelectIndex === this.data.length - 1\r\n ? 0\r\n : this.preSelectIndex + 1;\r\n }\r\n if (e.code === Enter) {\r\n if (this.selectable) {\r\n this.onItemClick(this.data[this.preSelectIndex]);\r\n }\r\n }\r\n }\r\n}\r\n","<div [ngClass]=\"listClasses\" (scroll)=\"onListScroll($event)\">\r\n <ng-container *ngFor=\"let item of data; let index = index\">\r\n <ng-container *ngIf=\"variant === ListVariant.None\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"variant !== ListVariant.None\">\r\n <div\r\n class=\"mc-list-item\"\r\n [class]=\"variant\"\r\n [ngClass]=\"{\r\n 'mc-list-item-disabled': item.disabled,\r\n 'mc-list-item-active': item.active,\r\n 'mc-list-item-pre-selection': index === preSelectIndex\r\n }\"\r\n (click)=\"onItemClick(item)\"\r\n >\r\n <ng-container *ngIf=\"itemTemplate; else defaultLabel\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultLabel>\r\n {{ item['label'] }}\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ListComponent } from './list.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, ListComponent],\r\n exports: [ListComponent],\r\n})\r\nexport class ListModule {}\r\n","import { filterXSS, getDefaultCSSWhiteList, getDefaultWhiteList, type IWhiteList } from 'xss';\r\nimport type { CustomXssRule, MdPlugin } from './mdCard.types';\r\nexport class MDCardService {\r\n private xssWhiteList = getDefaultWhiteList();\r\n private cssWhiteList = getDefaultCSSWhiteList();\r\n\r\n constructor() {\r\n this.setDefaultXss();\r\n }\r\n\r\n private setDefaultXss() {\r\n this.xssWhiteList['input'] = ['type', 'checked', 'disabled', 'class'];\r\n this.xssWhiteList['label'] = ['for'];\r\n this.xssWhiteList['ul'] = ['class'];\r\n this.xssWhiteList['div'] = ['class', 'key'];\r\n this.xssWhiteList['a'] = ['href', 'class', 'target', 'name'];\r\n this.xssWhiteList['ol'] = ['start'];\r\n\r\n this.xssWhiteList['p'] = ['class'];\r\n this.xssWhiteList['span'] = ['style', 'class', 'title', 'id'];\r\n this.xssWhiteList['svg'] = ['style', 'class', 'width', 'height', 'viewbox', 'preserveaspectratio', 'id', 'fill', 'stroke'];\r\n this.xssWhiteList['path'] = ['style', 'class', 'd', 'id', 'fill', 'stroke'];\r\n this.xssWhiteList['th'] = ['style'];\r\n this.xssWhiteList['td'] = ['style'];\r\n\r\n }\r\n\r\n getXssWhiteList() {\r\n return this.xssWhiteList;\r\n }\r\n\r\n setXssWhiteList(list: IWhiteList) {\r\n this.xssWhiteList = list;\r\n }\r\n\r\n setCustomXssRules(rules: CustomXssRule[]) {\r\n if (rules) {\r\n rules.forEach((rule) => {\r\n if (rule['value'] === null) {\r\n delete this.xssWhiteList[rule['key']];\r\n } else {\r\n this.xssWhiteList[rule['key']] = rule['value'];\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n setMdPlugins(plugins: MdPlugin[], mdt: any) {\r\n if (plugins && plugins.length) {\r\n plugins.forEach(item => {\r\n const { plugin, opts } = item;\r\n mdt.use(plugin, opts);\r\n })\r\n }\r\n }\r\n\r\n filterHtml(html: string) {\r\n return filterXSS(html, {\r\n whiteList: this.xssWhiteList,\r\n css: {\r\n whiteList: Object.assign({}, this.cssWhiteList, {\r\n top: true,\r\n left: true,\r\n bottom: true,\r\n right: true,\r\n }),\r\n },\r\n });\r\n }\r\n}\r\n","import type { MermaidConfig } from './mdCard.types';\r\n\r\ninterface MermaidViewState {\r\n scale: number;\r\n offsetX: number;\r\n offsetY: number;\r\n dragging: boolean;\r\n dragStart: { x: number; y: number };\r\n lastOffset: { x: number; y: number };\r\n}\r\n\r\nexport class MermaidService {\r\n private mermaidInstance: any = null;\r\n private isLoading = false;\r\n private lastValidResult: string = '';\r\n private viewStateMap = new WeakMap<HTMLElement, MermaidViewState>();\r\n private containerHeight = 400;\r\n\r\n constructor(private config: MermaidConfig = {}) {}\r\n\r\n private async loadMermaid() {\r\n if (this.mermaidInstance) {\r\n return this.mermaidInstance;\r\n }\r\n\r\n if (this.isLoading) {\r\n return new Promise((resolve) => {\r\n const checkInstance = () => {\r\n if (this.mermaidInstance) {\r\n resolve(this.mermaidInstance);\r\n } else {\r\n setTimeout(checkInstance, 50);\r\n }\r\n };\r\n checkInstance();\r\n });\r\n }\r\n\r\n this.isLoading = true;\r\n try {\r\n const { default: mermaid } = await import('mermaid') as any;\r\n mermaid.initialize({\r\n theme: this.config.theme || 'default',\r\n startOnLoad: false,\r\n suppressErrorRendering: true,\r\n ...this.config\r\n });\r\n this.mermaidInstance = mermaid;\r\n return mermaid;\r\n } catch (error) {\r\n console.error('Failed to load mermaid:', error);\r\n throw new Error('Failed to load mermaid library');\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n async renderToContainer(container: HTMLElement, code: string, theme: 'light' | 'dark' = 'light') {\r\n const svgStr = await this.renderMermaid(code, theme);\r\n container.innerHTML = svgStr;\r\n const svg = container.querySelector('svg');\r\n if (svg) {\r\n this.initViewState(container, svg);\r\n this.applyTransform(container, svg);\r\n svg.addEventListener('mousedown', (e) => this.onSvgMouseDown(e, container, svg));\r\n }\r\n }\r\n\r\n private initViewState(container: HTMLElement, svg: SVGSVGElement) {\r\n // 获取svg的viewBox或宽高\r\n let vb = svg.getAttribute('viewBox');\r\n let svgW = 0, svgH = 0;\r\n if (vb) {\r\n const arr = vb.split(/\\s+/);\r\n svgW = parseFloat(arr[2]);\r\n svgH = parseFloat(arr[3]);\r\n } else {\r\n svgW = svg.width.baseVal.value || svg.getBoundingClientRect().width;\r\n svgH = svg.height.baseVal.value || svg.getBoundingClientRect().height;\r\n }\r\n const contW = container.clientWidth || 0;\r\n const contH = this.containerHeight;\r\n let scale = 1;\r\n if (svgW && svgH && contW && contH) {\r\n scale = Math.min(contW / svgW, contH / svgH, 1);\r\n }\r\n this.viewStateMap.set(container, {\r\n scale,\r\n offsetX: 0,\r\n offsetY: 0,\r\n dragging: false,\r\n dragStart: { x: 0, y: 0 },\r\n lastOffset: { x: 0, y: 0 },\r\n });\r\n }\r\n\r\n private applyTransform(container: HTMLElement, svg: SVGSVGElement) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state) return;\r\n svg.style.maxWidth = '90%';\r\n svg.style.maxHeight = '90%';\r\n svg.style.position = 'absolute';\r\n svg.style.left = '50%';\r\n svg.style.top = '50%';\r\n svg.style.transform = `translate(-50%, -50%) translate(${state.offsetX}px, ${state.offsetY}px) scale(${state.scale})`;\r\n svg.style.transformOrigin = 'center center';\r\n svg.style.cursor = state.dragging ? 'grabbing' : 'grab';\r\n }\r\n\r\n zoomIn(container: HTMLElement) {\r\n const svg = container.querySelector('svg');\r\n const state = this.viewStateMap.get(container);\r\n if (svg && state) {\r\n state.scale = Math.min(state.scale + 0.2, 3);\r\n this.applyTransform(container, svg);\r\n }\r\n }\r\n\r\n zoomOut(container: HTMLElement) {\r\n const svg = container.querySelector('svg');\r\n const state = this.viewStateMap.get(container);\r\n if (svg && state) {\r\n state.scale = Math.max(state.scale - 0.2, 0.2);\r\n this.applyTransform(container, svg);\r\n }\r\n }\r\n\r\n reset(container: HTMLElement) {\r\n const svg = container.querySelector('svg');\r\n if (svg) {\r\n this.initViewState(container, svg);\r\n this.applyTransform(container, svg);\r\n }\r\n }\r\n\r\n async download(container: HTMLElement, filename: string = 'diagram.png'): Promise<void> {\r\n const svg = container.querySelector('svg');\r\n if (!svg) return;\r\n\r\n try {\r\n const clonedSvg = svg.cloneNode(true) as SVGSVGElement;\r\n\r\n const svgData = new XMLSerializer().serializeToString(clonedSvg);\r\n\r\n const svgUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgData)}`;\r\n\r\n const img = new Image();\r\n await new Promise<void>((resolve, reject) => {\r\n img.onload = () => resolve();\r\n img.onerror = (e) => reject(new Error('Image loading failed'));\r\n img.src = svgUrl;\r\n });\r\n\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) throw new Error('Canvas context not available');\r\n\r\n canvas.width = img.width * 2;\r\n canvas.height = img.height * 2;\r\n\r\n ctx.fillStyle = 'white';\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n ctx.drawImage(img, 0, 0);\r\n\r\n canvas.toBlob((blob) => {\r\n if (!blob) {\r\n console.error('Failed to create blob from canvas');\r\n return;\r\n }\r\n\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n\r\n setTimeout(() => {\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }, 100);\r\n }, 'image/png');\r\n } catch (error) {\r\n console.error('Failed to download diagram:', error);\r\n }\r\n }\r\n\r\n private onSvgMouseDown(e: MouseEvent, container: HTMLElement, svg: SVGSVGElement) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state) return;\r\n state.dragging = true;\r\n state.dragStart = { x: e.clientX, y: e.clientY };\r\n state.lastOffset = { x: state.offsetX, y: state.offsetY };\r\n const move = (ev: MouseEvent) => this.onSvgMouseMove(ev, container, svg);\r\n const up = () => this.onSvgMouseUp(container, svg, move, up);\r\n document.addEventListener('mousemove', move);\r\n document.addEventListener('mouseup', up);\r\n this.applyTransform(container, svg);\r\n }\r\n private onSvgMouseMove(e: MouseEvent, container: HTMLElement, svg: SVGSVGElement) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state || !state.dragging) return;\r\n state.offsetX = state.lastOffset.x + (e.clientX - state.dragStart.x);\r\n state.offsetY = state.lastOffset.y + (e.clientY - state.dragStart.y);\r\n this.applyTransform(container, svg);\r\n }\r\n private onSvgMouseUp(container: HTMLElement, svg: SVGSVGElement, move: any, up: any) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state) return;\r\n state.dragging = false;\r\n document.removeEventListener('mousemove', move);\r\n document.removeEventListener('mouseup', up);\r\n this.applyTransform(container, svg);\r\n }\r\n\r\n async renderMermaid(code: string, theme: 'light' | 'dark' = 'light'): Promise<string> {\r\n try {\r\n const mermaid = await this.loadMermaid();\r\n if (this.config.theme !== theme) {\r\n mermaid.initialize({\r\n startOnLoad: false,\r\n suppressErrorRendering: true,\r\n theme: theme === 'dark' ? 'dark' : 'default',\r\n ...this.config\r\n });\r\n }\r\n const id = `mc_mermaid_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\r\n const { svg } = await mermaid.render(id, code);\r\n this.lastValidResult = svg;\r\n return svg;\r\n } catch (error) {\r\n return this.lastValidResult;\r\n }\r\n }\r\n\r\n // 设置配置\r\n setConfig(config: MermaidConfig = {}): void {\r\n this.config = {\r\n theme: 'default',\r\n ...config\r\n };\r\n }\r\n}\r\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport type { Token } from 'markdown-it';\r\nimport type { ASTNode, MermaidConfig } from './common/mdCard.types';\r\nimport { defaultTypingConfig } from './common/mdCard.types';\r\nimport { MermaidService } from './common/MermaidService';\r\nimport hljs from 'highlight.js';\r\nimport { MDCardService } from './common/MDCardService';\r\n\r\nexport interface CodeBlockAdapter extends DefaultAdapter {\r\n getContainer(): HTMLElement | null;\r\n highlightCodeChange(code: string, language: string): void;\r\n}\r\n\r\nexport class CodeBlockFoundation extends BaseFoundation<CodeBlockAdapter> {\r\n mermaidService?: MermaidService;\r\n mdCardService: MDCardService;\r\n constructor(adapter: CodeBlockAdapter) {\r\n super({ ...adapter });\r\n this.mdCardService = new MDCardService();\r\n }\r\n\r\n toggleExpand = () => {\r\n this.setState({ expanded: !this.getStates().expanded });\r\n };\r\n\r\n zoomOut = () => {\r\n const container = this._adapter.getContainer();\r\n if (container && this.mermaidService) {\r\n this.mermaidService.zoomOut(container);\r\n }\r\n };\r\n\r\n zoomIn = () => {\r\n const container = this._adapter.getContainer();\r\n if (container && this.mermaidService) {\r\n this.mermaidService.zoomIn(container);\r\n }\r\n };\r\n\r\n checkIsMermaid = () => {\r\n const { enableMermaid, language } = this.getProps();\r\n return enableMermaid && language?.toLowerCase() === 'mermaid';\r\n };\r\n\r\n download = () => {\r\n const container = this._adapter.getContainer();\r\n if (container && this.mermaidService) {\r\n this.mermaidService.download(container);\r\n }\r\n };\r\n\r\n handleCopySuccess = () => {\r\n this.setState({ copied: true });\r\n setTimeout(() => {\r\n this.setState({ copied: false });\r\n }, 1500);\r\n };\r\n\r\n copyCodeInternal() {\r\n const { code } = this.getProps();\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(code).then(() => {\r\n this.handleCopySuccess();\r\n });\r\n } else {\r\n const textarea = document.createElement('textarea');\r\n textarea.style.position = 'fixed';\r\n textarea.style.top = '-9999px';\r\n textarea.style.left = '-9999px';\r\n textarea.style.zIndex = '-1';\r\n textarea.value = code;\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n this.handleCopySuccess();\r\n }\r\n }\r\n\r\n updateHighlightedCode = () => {\r\n const { code, language } = this.getProps();\r\n let highlightedCode = '';\r\n try {\r\n const typeIndex = code.indexOf(`<span class=\"mc-typewriter`);\r\n\r\n if (language && hljs.getLanguage(language)) {\r\n if (typeIndex !== -1) {\r\n highlightedCode =\r\n hljs.highlight(code.slice(0, typeIndex), {\r\n language,\r\n }).value + code.slice(typeIndex);\r\n } else {\r\n highlightedCode = hljs.highlight(code, {\r\n language,\r\n }).value;\r\n }\r\n } else {\r\n if (typeof hljs.highlightAuto !== 'undefined') {\r\n if (typeIndex !== -1) {\r\n highlightedCode =\r\n hljs.highlightAuto(code.slice(0, typeIndex)).value +\r\n code.slice(typeIndex);\r\n } else {\r\n highlightedCode = hljs.highlightAuto(code).value;\r\n }\r\n } else {\r\n highlightedCode = this.mdCardService.filterHtml(code);\r\n }\r\n }\r\n } catch (_) {\r\n highlightedCode = code;\r\n }\r\n this._adapter.highlightCodeChange(highlightedCode, language);\r\n };\r\n\r\n renderMermaid = async () => {\r\n const {\r\n code,\r\n theme,\r\n mermaidConfig,\r\n } = this.getProps();\r\n const { mermaidContentRef} = this.getStates();\r\n const isMermaid = this.checkIsMermaid();\r\n if (!isMermaid || !code || !mermaidContentRef) {\r\n return;\r\n }\r\n\r\n if (!this.mermaidService) {\r\n try {\r\n this.mermaidService = new MermaidService();\r\n const config: MermaidConfig = {\r\n theme: theme === 'dark' ? 'dark' : 'default',\r\n ...mermaidConfig,\r\n };\r\n this.mermaidService.setConfig(config);\r\n } catch (error) {\r\n console.error('Failed to load MermaidService:', error);\r\n return;\r\n }\r\n }\r\n this.nextTick(async () => {\r\n const container = mermaidContentRef.nativeElement;\r\n if (container) {\r\n // 移除打字效果相关的span标签\r\n const cleanCode = code.replace(\r\n /<span[^>]*\\bclass\\s*=\\s*['\"]mc-typewriter[^>]*>([\\s\\S]*?)<\\/span>/g,\r\n `$1`\r\n );\r\n await this.mermaidService?.renderToContainer(\r\n container,\r\n cleanCode,\r\n theme\r\n );\r\n }\r\n });\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n ViewChildren,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { debounceTime, Subject } from 'rxjs';\r\nimport hljs from 'highlight.js';\r\nimport { TemplateRef } from '@angular/core';\r\nimport type { MermaidConfig } from '../components-common/MarkdownCard/common/mdCard.types';\r\nimport BaseComponent from '../Base/base.component';\r\nimport morphdom from 'morphdom';\r\nimport {\r\n CodeBlockAdapter,\r\n CodeBlockFoundation,\r\n} from '../components-common/MarkdownCard/codeblock-foundation';\r\n@Component({\r\n selector: 'mc-code-block',\r\n templateUrl: './code-block.component.html',\r\n standalone: false,\r\n styleUrls: ['./code-block.component.scss'],\r\n})\r\nexport class CodeBlockComponent\r\n extends BaseComponent<CodeBlockFoundation>\r\n implements OnInit, OnChanges\r\n{\r\n @Input() code: string = '';\r\n @Input() language: string = '';\r\n @Input() blockIndex: number = 0;\r\n @Input() theme: 'light' | 'dark' = 'light';\r\n @Input() enableMermaid: boolean = false;\r\n @Input() mermaidConfig: MermaidConfig = {};\r\n @Input() contentTemplate: TemplateRef<any> | null = null;\r\n @Input() headerTemplate: TemplateRef<any> | null = null;\r\n @Input() actionsTemplate: TemplateRef<any> | null = null;\r\n\r\n @ViewChild('rootRef') rootRef!: ElementRef;\r\n @ViewChild('mermaidContent') mermaidContentRef: ElementRef;\r\n @ViewChild('codeElement', { static: false }) codeElementRef: ElementRef;\r\n @ViewChildren('codeElementTemplate')\r\n codeElementTemplates: QueryList<ElementRef>;\r\n\r\n expanded: boolean = true;\r\n copied: boolean = false;\r\n mermaidContent: string = '';\r\n\r\n private _showMermaidDiagram: boolean = true;\r\n get showMermaidDiagram(): boolean {\r\n return this._showMermaidDiagram;\r\n }\r\n set showMermaidDiagram(value: boolean) {\r\n if (this._showMermaidDiagram !== value) {\r\n this._showMermaidDiagram = value;\r\n // 当切换为显示图表且当前是mermaid类型时,渲染图表\r\n if (value && this.isMermaid) {\r\n // 在视图更新后渲染mermaid\r\n setTimeout(() => {\r\n this.renderMermaid();\r\n });\r\n }\r\n }\r\n }\r\n highlightedCode: string = '';\r\n isMermaid: boolean = false;\r\n\r\n private copySubject = new Subject<void>();\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n this.copySubject\r\n .pipe(debounceTime(300))\r\n .subscribe(() => this.copyCodeInternal());\r\n this.foundation = new CodeBlockFoundation(this.adapter);\r\n }\r\n\r\n override get adapter(): CodeBlockAdapter {\r\n return {\r\n ...super.adapter,\r\n getContainer: () => {\r\n return this.mermaidContentRef.nativeElement;\r\n },\r\n highlightCodeChange: (highlightedCode: string, language: string) => {\r\n this.highlightedCode = highlightedCode;\r\n if (this.codeElementRef?.nativeElement) {\r\n const newElement = document.createElement('code');\r\n newElement.className = `hljs language-${language}`;\r\n newElement.innerHTML = highlightedCode;\r\n morphdom(this.codeElementRef.nativeElement, newElement);\r\n }\r\n },\r\n };\r\n }\r\n\r\n switchShowMermaid(show: boolean): void {\r\n this.showMermaidDiagram = show;\r\n if (!this.showMermaidDiagram) {\r\n this.codeElementTemplates.changes.subscribe(() => {\r\n if (this.codeElementRef?.nativeElement && !this.showMermaidDiagram) {\r\n this.codeElementRef.nativeElement.innerHTML = this.highlightedCode;\r\n }\r\n });\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkIsMermaid();\r\n this.updateHighlightedCode();\r\n if (this.isMermaid) {\r\n this.renderMermaid();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.updateHighlightedCode();\r\n if (this.isMermaid) {\r\n this.renderMermaid();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['code'] || changes['language']) {\r\n this.checkIsMermaid();\r\n this.updateHighlightedCode();\r\n }\r\n if (changes['enableMermaid'] || changes['theme'] || changes['code']) {\r\n this.checkIsMermaid();\r\n if (this.isMermaid) {\r\n this.renderMermaid();\r\n }\r\n }\r\n if (\r\n changes['showMermaidDiagram'] &&\r\n this.isMermaid &&\r\n this.showMermaidDiagram\r\n ) {\r\n this.renderMermaid();\r\n }\r\n }\r\n\r\n private checkIsMermaid(): void {\r\n this.isMermaid = this.foundation.checkIsMermaid();\r\n }\r\n\r\n private updateHighlightedCode(): void {\r\n setTimeout(() => {\r\n this.foundation.updateHighlightedCode();\r\n });\r\n }\r\n\r\n zoomIn(): void {\r\n this.foundation.zoomIn();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n zoomOut(): void {\r\n this.foundation.zoomOut();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n download(): void {\r\n this.foundation.download();\r\n }\r\n\r\n async renderMermaid(): Promise<void> {\r\n await this.foundation.renderMermaid();\r\n }\r\n\r\n toggleExpand(): void {\r\n this.foundation.toggleExpand();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n copyCode(): void {\r\n this.copySubject.next();\r\n }\r\n\r\n copyCodeInternal(): void {\r\n this.foundation.copyCodeInternal();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div\r\n class=\"mc-code-block\"\r\n [ngClass]=\"theme === 'dark' ? 'mc-code-block-dark' : 'mc-code-block-light'\"\r\n #rootRef\r\n>\r\n <div class=\"mc-code-block-header\" *ngIf=\"!headerTemplate\">\r\n <span class=\"mc-code-lang\">{{ language }}</span>\r\n <ng-container *ngIf=\"!actionsTemplate\">\r\n <div class=\"mc-code-block-actions\">\r\n <div *ngIf=\"isMermaid\" style=\"margin-right: 8px\">\r\n <ul\r\n class=\"mc-diagram-switch\"\r\n [ngClass]=\"{ 'mc-show-code': !showMermaidDiagram }\"\r\n >\r\n <li\r\n (click)=\"switchShowMermaid(true)\"\r\n [ngClass]=\"{ 'mc-diagram-switch-active': showMermaidDiagram }\"\r\n >\r\n 图表\r\n </li>\r\n <li\r\n (click)=\"switchShowMermaid(false)\"\r\n [ngClass]=\"{ 'mc-diagram-switch-active': !showMermaidDiagram }\"\r\n >\r\n 代码\r\n </li>\r\n </ul>\r\n </div>\r\n <div\r\n *ngIf=\"isMermaid && showMermaidDiagram\"\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n [title]=\"'Md.zoomIn' | translate\"\r\n (click)=\"zoomIn()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"enlarge\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n *ngIf=\"isMermaid && showMermaidDiagram\"\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n title=\"缩小\"\r\n (click)=\"zoomOut()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"zoom-out\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n *ngIf=\"isMermaid && showMermaidDiagram\"\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n title=\"下载\"\r\n (click)=\"download()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g>\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n title=\"展开/折叠\"\r\n (click)=\"toggleExpand()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n class=\"mc-action-btn mc-copy-btn\"\r\n title=\"复制\"\r\n (click)=\"copyCode()\"\r\n >\r\n @if(copied) {\r\n <span>\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <defs>\r\n <polygon\r\n id=\"path-1\"\r\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\"\r\n ></polygon>\r\n </defs>\r\n <g\r\n id=\"status/whiteBG/correct\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-1\"></use>\r\n </mask>\r\n <use id=\"Mask\" fill=\"#3DCCA6\" xlink:href=\"#path-1\"></use>\r\n </g>\r\n </svg>\r\n </span>\r\n } @else {\r\n <span>\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"页面-1\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g\r\n transform=\"translate(-592.000000, -204.000000)\"\r\n >\r\n <g\r\n transform=\"translate(560.000000, 180.000000)\"\r\n >\r\n <text\r\n font-family=\"PingFangSC-Regular, PingFang SC\"\r\n font-size=\"12\"\r\n font-weight=\"normal\"\r\n line-spacing=\"16\"\r\n fill=\"#71757F\"\r\n >\r\n <tspan x=\"27.136\" y=\"61\">复制</tspan>\r\n </text>\r\n </g>\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionsTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"actionsTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"headerTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\r\n </ng-container>\r\n\r\n <div [ngClass]=\"{ 'mc-block-hidden': !expanded }\" >\r\n @if (showMermaidDiagram && isMermaid && !contentTemplate) {\r\n <div class=\"mc-mermaid-content\" #mermaidContent></div>\r\n } @else if(!contentTemplate) {\r\n <pre #codeElementTemplate><code #codeElement [ngClass]=\"'hljs language-' + language\" ></code></pre>\r\n } @else {\r\n <ng-container *ngIf=\"contentTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\r\n </ng-container>\r\n }\r\n </div>\r\n</div>\r\n","import type { Options, PluginSimple, PluginWithOptions, PluginWithParams } from 'markdown-it';\r\nimport type { Token } from 'markdown-it';\r\nexport interface MermaidConfig {\r\n theme?: string;\r\n}\r\n\r\nexport interface CustomXssRule {\r\n key: string;\r\n value: string[] | null;\r\n}\r\n\r\nexport interface CodBlockData {\r\n code: string;\r\n language: string;\r\n}\r\n\r\nexport type CodeBlockSlot = {\r\n actions?: () => void;\r\n header?: () => void;\r\n content?: () => void;\r\n};\r\n\r\nexport type Theme = 'light' | 'dark';\r\n\r\nexport type TypingStyle = 'normal' | 'cursor' | 'color' | 'gradient';\r\n\r\nexport type IntervalType = number | [number, number];\r\n\r\nexport const defaultTypingConfig = {\r\n step: 2,\r\n interval: 50,\r\n style: 'normal' as TypingStyle,\r\n};\r\n\r\nexport interface MdPlugin {\r\n plugin: PluginSimple | PluginWithOptions | PluginWithParams;\r\n opts?: unknown;\r\n}\r\n\r\nexport interface MarkdownCardProps {\r\n content?: string;\r\n typing?: boolean;\r\n enableThink?: boolean;\r\n typingOptions?: {\r\n step?: number;\r\n interval?: number | [number, number];\r\n style?: TypingStyle;\r\n };\r\n thinkOptions?: {\r\n customClass?: string;\r\n };\r\n mdOptions?: Options;\r\n mdPlugins?: Array<MdPlugin>;\r\n customXssRules?: Array<CustomXssRule>;\r\n theme?: Theme;\r\n enableMermaid?: boolean;\r\n mermaidConfig?: MermaidConfig;\r\n}\r\n\r\n// 定义 AST 节点接口\r\nexport interface ASTNode {\r\n nodeType: string;\r\n openNode: Token | null;\r\n closeNode: Token | null;\r\n children: (ASTNode | Token)[];\r\n vNodeKey: string;\r\n}\r\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport type { Token } from 'markdown-it';\r\nimport type { ASTNode } from './common/mdCard.types';\r\nimport { defaultTypingConfig } from './common/mdCard.types';\r\n\r\nexport interface MarkdownCardAdapter extends DefaultAdapter {\r\n locale(key: string, params?: Record<string, string>): string;\r\n typingStart: () => void;\r\n typingEnd: () => void;\r\n typingEvent: () => void;\r\n parseContent: (content: string) => void;\r\n}\r\n\r\nexport class MarkdownCardFoundation extends BaseFoundation<MarkdownCardAdapter> {\r\n constructor(adapter: MarkdownCardAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n isToken = (node: ASTNode | Token): node is Token => {\r\n return 'type' in node && 'content' in node;\r\n };\r\n\r\n typewriterEnd = () => {\r\n this.setState({ isTyping: false });\r\n this._adapter.typingEnd?.();\r\n };\r\n\r\n getThinkContent = (content: string, thinkOptions: any) => {\r\n const thinkClass = thinkOptions?.customClass || 'mc-think-block';\r\n return (\r\n content\r\n ?.replace('<think>', `<div class=\"${thinkClass}\">`)\r\n ?.replace('</think>', '\\n\\n</div>\\n\\n') || ''\r\n );\r\n };\r\n\r\n parseTypingContent = (content: string) => {\r\n const { typingOptions } = this.getProps();\r\n const { typingIndex } = this.getStates();\r\n content = content.slice(0, typingIndex) || '';\r\n const options = { ...defaultTypingConfig, ...typingOptions };\r\n\r\n if (options.style === 'cursor') {\r\n content += `<span class=\"mc-typewriter mc-typewriter-cursor\">|</span>`;\r\n } else if (options.style === 'color' || options.style === 'gradient') {\r\n content =\r\n content.slice(0, -5) +\r\n `<span class=\"mc-typewriter mc-typewriter-${\r\n options.style\r\n }\">${content.slice(-5)}</span>`;\r\n }\r\n return content || '';\r\n };\r\n\r\n parseContent = () => {\r\n const { content, thinkOptions, enableThink } = this.getProps();\r\n const { typing, isTyping } = this.getStates();\r\n let parseContent = content || '';\r\n if (typing && isTyping) {\r\n parseContent = this.parseTypingContent(content);\r\n }\r\n\r\n if (enableThink) {\r\n parseContent = this.getThinkContent(content, thinkOptions);\r\n }\r\n\r\n parseContent = this._adapter.parseContent(parseContent);\r\n };\r\n\r\n typewriterStart = () => {\r\n const { typingOptions } = this.getProps();\r\n const { timer } = this.getStates();\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n this.setState({ isTyping: true });\r\n this._adapter.typingStart?.();\r\n const options = { ...defaultTypingConfig, ...typingOptions };\r\n\r\n const typingStep = () => {\r\n const { typingIndex, content } = this.getStates();\r\n\r\n let step = options.step || 2;\r\n if (Array.isArray(options.step)) {\r\n step =\r\n options.step[0] +\r\n Math.floor(Math.random() * (options.step[1] - options.step[0]));\r\n }\r\n let index = typingIndex + step;\r\n this.setState({ typingIndex: index });\r\n this.parseContent();\r\n this._adapter.typingEvent();\r\n\r\n if (index >= content!.length) {\r\n this.typewriterEnd();\r\n this.parseContent();\r\n return;\r\n }\r\n\r\n let typingTimeout = setTimeout(\r\n typingStep,\r\n typeof options.interval === 'number' ? options.interval : 50\r\n );\r\n this.setState({\r\n timer: typingTimeout,\r\n });\r\n };\r\n\r\n let typingStepTimeout = setTimeout(typingStep);\r\n this.setState({\r\n timer: typingStepTimeout,\r\n });\r\n };\r\n}\r\n","import type { Token } from \"markdown-it\";\r\nimport type { ASTNode } from './mdCard.types';\r\n// 判断是否自闭合标签\r\nexport const isSelfClosingTag = (token: Token): boolean => {\r\n // 判断token.content里面是否包含完整的HTML结构(所有开始标签都有对应的结束标签)\r\n const content = token.content || '';\r\n\r\n // 检查是否是自闭合标签(如 <img />, <br /> 等)\r\n if (content.match(/<(\\w+)[^>]*\\/>/)) {\r\n return true;\r\n }\r\n\r\n // 检查是否包含完整的HTML结构\r\n const tagStack: string[] = [];\r\n const openTagRegex = /<(\\w+)[^>]*>/g;\r\n const closeTagRegex = /<\\/(\\w+)>/g;\r\n\r\n let openMatch;\r\n let closeMatch;\r\n\r\n // 重置正则表达式的lastIndex\r\n openTagRegex.lastIndex = 0;\r\n closeTagRegex.lastIndex = 0;\r\n\r\n // 按顺序处理所有标签\r\n const allMatches: Array<{ type: 'open' | 'close', tagName: string, index: number }> = [];\r\n\r\n // 收集所有开始标签\r\n while ((openMatch = openTagRegex.exec(content)) !== null) {\r\n allMatches.push({\r\n type: 'open',\r\n tagName: openMatch[1],\r\n index: openMatch.index\r\n });\r\n }\r\n\r\n // 收集所有结束标签\r\n while ((closeMatch = closeTagRegex.exec(content)) !== null) {\r\n allMatches.push({\r\n type: 'close',\r\n tagName: closeMatch[1],\r\n index: closeMatch.index\r\n });\r\n }\r\n\r\n // 按位置排序\r\n allMatches.sort((a, b) => a.index - b.index);\r\n\r\n // 检查标签是否完全匹配\r\n for (const match of allMatches) {\r\n if (match.type === 'open') {\r\n tagStack.push(match.tagName);\r\n } else {\r\n if (tagStack.length === 0) {\r\n return false; // 没有对应的开始标签\r\n }\r\n const lastOpenTag = tagStack[tagStack.length - 1];\r\n if (lastOpenTag !== match.tagName) {\r\n return false; // 标签不匹配\r\n }\r\n tagStack.pop();\r\n }\r\n }\r\n\r\n // 只有当所有标签都正确匹配时,才认为是自闭合的\r\n return tagStack.length === 0;\r\n}\r\n\r\n// 判断是否是结束标签\r\nexport const isClosingTag = (openToken: Token, closeToken: Token): boolean => {\r\n const openContent = openToken?.content || '';\r\n const closeContent = closeToken?.content || '';\r\n\r\n const openTagMatch = openContent.match(/<(\\w+)/);\r\n const closeTagMatch = closeContent.match(/<\\/(\\w+)/);\r\n\r\n if (openTagMatch && closeTagMatch) {\r\n return openTagMatch[1] === closeTagMatch[1];\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// 创建ast树节点\r\nexport const genTreeNode = (node: Token | null): ASTNode => {\r\n return {\r\n nodeType: node ? node.type.replace('_open', '') : 'root',\r\n openNode: node,\r\n closeNode: null,\r\n children: [],\r\n vNodeKey: (node as any)?.vNodeKey || ''\r\n };\r\n};\r\n\r\n// 匹配成对html token\r\nexport const matchHtmlToken = (token: Token, stack: Token[]) => {\r\n // 简单排除单独的闭合标签\r\n const isCloseTag = token.content.startsWith('</');\r\n if (!stack.length) {\r\n token.nesting = isCloseTag ? 0 : 1;\r\n stack.push(token);\r\n return;\r\n }\r\n // 判断当前token是否是上一个html token的闭合标签\r\n const prevToken = stack[stack.length - 1];\r\n const closing = isClosingTag(prevToken, token);\r\n if (closing) {\r\n token.nesting = -1;\r\n stack.pop();\r\n } else {\r\n if (isCloseTag) {\r\n token.nesting = 0;\r\n } else {\r\n token.nesting = 1;\r\n stack.push(token);\r\n }\r\n }\r\n}\r\n\r\nexport const isValidTagName = (tagName: string | undefined): boolean => {\r\n if (!tagName) return false\r\n try {\r\n document.createElement(tagName)\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n}\r\n\r\nexport const tokensToAst = (tokens: Token[]) => {\r\n // 递归处理 inline 类型的 token\r\n const processInlineToken = (token: Token): ASTNode => {\r\n const node = genTreeNode(token);\r\n\r\n // 如果 token 有 children,递归处理它们\r\n if (token.children && token.children.length > 0) {\r\n node.children = tokensToAst(token.children);\r\n }\r\n\r\n return node;\r\n };\r\n\r\n // 创建根节点\r\n const rootNode = genTreeNode(null);\r\n let curr: ASTNode = rootNode;\r\n const stack: ASTNode[] = [];\r\n const htmlInlineTokenStack: Token[] = [];\r\n const htmlBlockTokenStack: Token[] = [];\r\n // 处理html token nesting值\r\n tokens.forEach((tok: Token, idx: number) => {\r\n (tok as any).vNodeKey = `mc-markdown-content-key-${idx}`;\r\n (tok as any).tokenIndex = idx;\r\n\r\n if (tok.type.includes('html_')) {\r\n if (isSelfClosingTag(tok)) {\r\n tok.nesting = 0;\r\n return;\r\n }\r\n\r\n const stack =\r\n tok.type === 'html_block'\r\n ? htmlBlockTokenStack\r\n : htmlInlineTokenStack;\r\n\r\n matchHtmlToken(tok, stack);\r\n }\r\n });\r\n\r\n tokens.forEach((tok: Token, idx: number) => {\r\n let tmp: ASTNode;\r\n if (tok.nesting === 1) {\r\n // 开始标签\r\n tmp = genTreeNode(tok);\r\n curr.children.push(tmp);\r\n stack.push(curr);\r\n curr = tmp;\r\n } else if (tok.nesting === -1) {\r\n // 结束标签\r\n curr.closeNode = tok;\r\n if (!stack.length) {\r\n throw new Error('AST stack underflow.');\r\n }\r\n tmp = stack.pop()!;\r\n curr = tmp;\r\n } else if (tok.nesting === 0) {\r\n // 自闭合标签或 inline 内容\r\n if (tok.type === 'inline' && tok.children && tok.children.length > 0) {\r\n // 对于 inline 类型,递归处理其 children\r\n const inlineNode = processInlineToken(tok);\r\n curr.children.push(inlineNode);\r\n } else {\r\n // 普通 token,直接添加\r\n curr.children.push(tok);\r\n }\r\n } else {\r\n throw new Error(`Invalid nesting level found in token index ${idx}.`);\r\n }\r\n });\r\n\r\n if (stack.length !== 0) {\r\n // throw new Error('Unbalanced block open/close tokens.');\r\n }\r\n return rootNode.children as ASTNode[];\r\n };\r\n\r\n/**\r\n * 递归查找所有层级中 className 包含 code-block-wrapper 的 DIV 节点\r\n * @param {Array} vnodes - 待查找的 vnode 列表\r\n * @returns {Array} 符合条件的节点列表\r\n */\r\nexport function findCodeBlockWrappers(vnodes: any[]): any[] {\r\n const result: any[] = [];\r\n\r\n // 遍历当前层级的 vnode\r\n vnodes.forEach((node: any) => {\r\n // 检查当前节点是否符合条件\r\n if (node.nodeName === 'DIV' && node.className?.includes('code-block-wrapper')) {\r\n result.push(node);\r\n }\r\n\r\n // 递归处理子节点(如果存在子节点且为数组)\r\n if (node.childNodes?.length) {\r\n result.push(...findCodeBlockWrappers(node.childNodes));\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * 清空Dom节点的所有子节点\r\n * @param {HTMLElement} element - 需要清空的Dom节点\r\n * @returns {void}\r\n */\r\nexport function clearElementChildren(element: HTMLElement): void {\r\n if (typeof element.replaceChildren === 'function') {\r\n element.replaceChildren();\r\n } else {\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n }\r\n}\r\n\r\n// 声明一个utils静态默认导出\r\nexport default {\r\n isSelfClosingTag,\r\n isClosingTag,\r\n tokensToAst,\r\n genTreeNode,\r\n matchHtmlToken,\r\n isValidTagName,\r\n findCodeBlockWrappers,\r\n clearElementChildren,\r\n}\r\n","import morphdom from 'morphdom';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n SimpleChanges,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n Renderer2,\r\n ViewContainerRef,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport markdownit from 'markdown-it';\r\nimport type { Token } from 'markdown-it';\r\nimport { MDCardService } from '../components-common/MarkdownCard/common/MDCardService';\r\nimport type { ASTNode } from '../components-common/MarkdownCard/common/mdCard.types';\r\nimport { CodeBlockComponent } from './code-block.component';\r\nimport {\r\n MarkdownCardProps,\r\n defaultTypingConfig,\r\n} from '../components-common/MarkdownCard/common/mdCard.types';\r\nimport BaseComponent from '../Base/base.component';\r\nimport {\r\n MarkdownCardAdapter,\r\n MarkdownCardFoundation,\r\n} from '../components-common/MarkdownCard/foundation';\r\nimport MdParserUtils from '../components-common/MarkdownCard/common/parser';\r\n\r\n@Component({\r\n selector: 'mc-markdown-card',\r\n standalone: false,\r\n templateUrl: './markdown-card.component.html',\r\n styleUrls: ['./markdown-card.component.scss'],\r\n})\r\nexport class MarkdownCardComponent\r\n extends BaseComponent<MarkdownCardFoundation>\r\n implements OnInit, OnChanges, OnDestroy\r\n{\r\n @Input() content: string = '';\r\n @Input() typing: boolean = false;\r\n @Input() enableThink: boolean = false;\r\n @Input() typingOptions: MarkdownCardProps['typingOptions'] | any = {};\r\n @Input() thinkOptions: MarkdownCardProps['thinkOptions'] = {};\r\n @Input() mdOptions: MarkdownCardProps['mdOptions'] = {};\r\n @Input() mdPlugins: MarkdownCardProps['mdPlugins'] = [];\r\n @Input() customXssRules: MarkdownCardProps['customXssRules'] = [];\r\n @Input() theme: 'light' | 'dark' | any = 'light';\r\n @Input() enableMermaid: boolean = false;\r\n @Input() incrementalDom: boolean = true;\r\n @Input() mermaidConfig: MarkdownCardProps['mermaidConfig'] = {};\r\n @Input() actionsTemplate: TemplateRef<any> | null = null;\r\n @Input() headerTemplate: TemplateRef<any> | null = null;\r\n @Input() contentTemplate: TemplateRef<any> | null = null;\r\n\r\n // 组件缓存映射表,用于存储已创建的CodeBlockComponent实例\r\n private codeBlockComponentsCache: Map<\r\n string,\r\n { componentRef: any; container: HTMLElement }\r\n > = new Map();\r\n\r\n @Output() afterMdtInit = new EventEmitter<markdownit>();\r\n @Output() mdRenderChange = new EventEmitter<string>();\r\n @Output() typingStart = new EventEmitter<void>();\r\n @Output() typingEvent = new EventEmitter<void>();\r\n @Output() typingEnd = new EventEmitter<void>();\r\n\r\n @ViewChild('markdownContainer', { read: ViewContainerRef, static: true })\r\n markdownContainer!: ViewContainerRef;\r\n\r\n private mdt: markdownit;\r\n typingIndex: number = 0;\r\n isTyping: boolean = false;\r\n timer: number | null = null;\r\n parser = MdParserUtils;\r\n mdCardService: MDCardService;\r\n\r\n constructor(private renderer: Renderer2, public cdr: ChangeDetectorRef) {\r\n super();\r\n this.mdt = markdownit({\r\n breaks: true,\r\n linkify: true,\r\n html: true,\r\n highlight: (str, lang) => {\r\n // 与Vue组件保持一致的高亮处理\r\n return '';\r\n },\r\n ...this.mdOptions,\r\n });\r\n this.mdCardService = new MDCardService();\r\n this.foundation = new MarkdownCardFoundation(this.adapter);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\r\n this.mdCardService.setCustomXssRules(this.customXssRules || []);\r\n this.parseContent();\r\n this.afterMdtInit.emit(this.mdt);\r\n }\r\n\r\n override get adapter(): MarkdownCardAdapter {\r\n return {\r\n ...super.adapter,\r\n locale: (key: string, params?: Record<string, string>) =>\r\n this.adapter.locale(key, params),\r\n typingStart: () => this.typingStart.emit(),\r\n typingEnd: () => this.typingEnd.emit(),\r\n typingEvent: () => this.typingEvent.emit(),\r\n parseContent: (content: string) => {\r\n // 解析 Markdown 内容\r\n const tokens: any = this.mdt.parse(content, {});\r\n const ast = this.parser.tokensToAst(tokens);\r\n const vnodes = this.astToVnodes(ast);\r\n this.renderContent(vnodes);\r\n },\r\n };\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['content']) {\r\n this.contentChange(changes['content']);\r\n }\r\n\r\n if (changes['customXssRules'] && !changes['customXssRules'].firstChange) {\r\n this.mdCardService.setCustomXssRules(this.customXssRules || []);\r\n this.parseContent();\r\n }\r\n\r\n if (\r\n (changes['enableThink'] && !changes['enableThink'].firstChange) ||\r\n (changes['thinkOptions'] && !changes['thinkOptions'].firstChange) ||\r\n (changes['theme'] && !changes['theme'].firstChange)\r\n ) {\r\n this.parseContent();\r\n }\r\n\r\n if (changes['mdPlugins'] && !changes['mdPlugins'].firstChange) {\r\n this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\r\n this.parseContent();\r\n }\r\n }\r\n\r\n contentChange(change) {\r\n if (this.content?.indexOf(change.previousValue) === -1) {\r\n this.clearCodeBlockCache();\r\n }\r\n if (!this.typing) {\r\n this.typingIndex = this.content?.length || 0;\r\n this.parseContent();\r\n } else {\r\n if (this.content?.indexOf(change.previousValue) === -1) {\r\n this.typingIndex = 0;\r\n }\r\n // 使用setTimeout模拟Vue的nextTick行为\r\n setTimeout(() => this.typewriterStart());\r\n }\r\n }\r\n\r\n private parseContent() {\r\n this.foundation.parseContent();\r\n }\r\n\r\n private renderContent(vnodes) {\r\n if (!this.markdownContainer || !this.markdownContainer.element) {\r\n return;\r\n }\r\n\r\n if (!this.incrementalDom) {\r\n this.renderContentNoDiff(vnodes);\r\n return;\r\n }\r\n\r\n const container = this.markdownContainer.element.nativeElement;\r\n const parser = new DOMParser();\r\n const newContainerDiv = parser.parseFromString(`<div></div>`, 'text/html');\r\n const codeBlockWrappers = this.parser.findCodeBlockWrappers(vnodes);\r\n\r\n vnodes.forEach((node) => {\r\n if (\r\n node &&\r\n (node.nodeType ||\r\n typeof node === 'string' ||\r\n node instanceof HTMLElement)\r\n ) {\r\n if (codeBlockWrappers.includes(node)) {\r\n newContainerDiv.body.firstChild?.appendChild(\r\n this.getEmptyCodeBlock(node)\r\n );\r\n } else {\r\n newContainerDiv.body.firstChild?.appendChild(node);\r\n }\r\n }\r\n });\r\n let newContainerDivHTML =\r\n (newContainerDiv.body?.firstChild as HTMLElement)?.outerHTML || '';\r\n const filteredHTML = this.mdCardService.filterHtml(newContainerDivHTML);\r\n\r\n // 使用morphdom进行DOM更新\r\n const newElement = document.createElement('div');\r\n newElement.innerHTML = filteredHTML;\r\n morphdom(container, filteredHTML, {\r\n onBeforeElUpdated: (fromEl, toEl) => {\r\n if (\r\n fromEl.nodeName === 'DIV' &&\r\n fromEl.classList.contains('code-block-wrapper') &&\r\n toEl.nodeName === 'DIV' &&\r\n toEl.classList.contains('code-block-wrapper') &&\r\n fromEl.getAttribute('key') === toEl.getAttribute('key') &&\r\n this.codeBlockComponentsCache.has(fromEl.getAttribute('key') || '')\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n });\r\n // 将codeBlockWrappers中的每个div元素替换container中的对应key属性的元素\r\n codeBlockWrappers.forEach((newCodeBlock) => {\r\n if (\r\n newCodeBlock &&\r\n newCodeBlock.attributes &&\r\n newCodeBlock.attributes.key\r\n ) {\r\n const key = newCodeBlock?.attributes?.key?.value;\r\n const existingElement = container.querySelector(`[key=\"${key}\"]`);\r\n if (\r\n existingElement &&\r\n newCodeBlock instanceof HTMLElement &&\r\n existingElement !== newCodeBlock &&\r\n newCodeBlock?.firstChild\r\n ) {\r\n MdParserUtils.clearElementChildren(existingElement);\r\n existingElement.appendChild(newCodeBlock?.firstChild);\r\n }\r\n }\r\n });\r\n this.mdRenderChange.emit(newContainerDivHTML);\r\n }\r\n\r\n private getEmptyCodeBlock(node) {\r\n const codeNode = document.createElement('div');\r\n codeNode.className = 'code-block-wrapper';\r\n codeNode.setAttribute('key', node?.attributes?.key?.value);\r\n return codeNode;\r\n }\r\n\r\n private astToVnodes(nodes: ASTNode[]) {\r\n return nodes.map((node) => this.processASTNode(node));\r\n }\r\n\r\n private processASTNode(node: ASTNode | Token | any) {\r\n if (node.nodeType === 'html_inline' || node.nodeType === 'html_block') {\r\n return this.processHTMLNode(node);\r\n }\r\n\r\n if (node.nodeType === 'inline') {\r\n return this.processInlineToken(node);\r\n }\r\n if (this.foundation.isToken(node)) {\r\n return this.processToken(node);\r\n }\r\n\r\n return this.processASTNodeInternal(node);\r\n }\r\n\r\n private processHTMLNode(node: ASTNode) {\r\n if (!node.openNode?.content) return;\r\n\r\n const parser = new DOMParser();\r\n const tagName = node.nodeType === 'html_block' ? 'div' : 'span';\r\n const containerDocument = parser.parseFromString(\r\n `<${tagName}>${node.openNode.content}</${tagName}>`,\r\n 'text/html'\r\n );\r\n const containerBody = containerDocument.body.firstChild;\r\n // 处理子节点\r\n if (node.children && node.children.length > 0) {\r\n node.children.forEach((child) => {\r\n const childVnode = this.processASTNode(child as any);\r\n if (childVnode && containerBody) {\r\n (containerBody?.firstChild || containerBody).appendChild(childVnode);\r\n }\r\n });\r\n }\r\n return containerBody;\r\n }\r\n\r\n private renderContentNoDiff(vnodes) {\r\n const container = this.markdownContainer.element.nativeElement;\r\n const newContentFragement = this.renderer.createElement('div');\r\n vnodes.forEach((node) => {\r\n if (\r\n node &&\r\n (node.nodeType ||\r\n typeof node === 'string' ||\r\n node instanceof HTMLElement)\r\n ) {\r\n newContentFragement.appendChild(node);\r\n }\r\n });\r\n while (container.firstChild) {\r\n container.removeChild(container.firstChild);\r\n }\r\n container.appendChild(newContentFragement);\r\n }\r\n\r\n private processInlineToken(node: ASTNode | any) {\r\n let html = '';\r\n try {\r\n if (!node.openNode) {\r\n return null;\r\n }\r\n html = this.mdt.renderer.render([node.openNode], this.mdt.options, {});\r\n } catch (error) {\r\n console.error('Error rendering inline token:', node);\r\n return null;\r\n }\r\n\r\n // 将HTML字符串转换为DOM节点\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(`<div>${html}</div>`, 'text/html');\r\n const token = doc.body.firstChild;\r\n // 如果只有一个子节点,直接返回子节点而不是包含div\r\n if (token && token.childNodes.length === 1) {\r\n return token.firstChild;\r\n }\r\n return token;\r\n }\r\n\r\n private processFenceNode(token: Token) {\r\n const language =\r\n token.info?.replace(/<span\\b[^>]*>/i, '').replace('</span>', '') || '';\r\n const code = token.content || '';\r\n return this.createCodeBlock(language, code, (token as any).tokenIndex || 0);\r\n }\r\n\r\n private processASTNodeInternal(node: ASTNode | any) {\r\n let tagName = 'div';\r\n if (node.openNode?.tag && this.parser.isValidTagName(node.openNode?.tag)) {\r\n tagName = node.openNode?.tag;\r\n }\r\n const element = this.renderer.createElement(tagName);\r\n\r\n // 设置属性\r\n if (node.openNode.attrs) {\r\n node.openNode.attrs.forEach(([key, value]) => {\r\n this.renderer.setAttribute(element, key, value);\r\n });\r\n }\r\n\r\n // 特殊处理fence类型的token\r\n if (node.openNode.type === 'fence') {\r\n return this.processFenceNode(node.openNode as unknown as Token);\r\n }\r\n\r\n // 处理所有带tag的AST节点\r\n if (node.openNode?.tag) {\r\n let tagName = this.parser.isValidTagName(node.openNode?.tag)\r\n ? node.openNode?.tag\r\n : 'div';\r\n const element = this.renderer.createElement(tagName);\r\n\r\n // 递归处理所有子节点并添加到当前元素\r\n node.children.forEach((child) => {\r\n const childNode = this.processASTNode(child);\r\n if (childNode) {\r\n element.appendChild(childNode);\r\n }\r\n });\r\n return element;\r\n }\r\n\r\n node.children.forEach((child) => {\r\n const childNode = this.processASTNode(child);\r\n if (childNode) {\r\n element.appendChild(childNode);\r\n }\r\n });\r\n return element;\r\n }\r\n\r\n private processToken(token: Token) {\r\n if (token.type === 'text') {\r\n return this.renderer.createText(token.content || '');\r\n }\r\n\r\n if (token.type === 'inline') {\r\n return this.processInlineToken(token);\r\n }\r\n\r\n if (token.type === 'fence') {\r\n return this.processFenceNode(token);\r\n }\r\n\r\n if (token.type === 'softbreak') {\r\n if (this.mdt.options.breaks) {\r\n return this.renderer.createElement('br');\r\n } else {\r\n return this.renderer.createText('\\n');\r\n }\r\n }\r\n\r\n if (token.type === 'html_block' || token.type === 'html_inline') {\r\n const parser = new DOMParser();\r\n const tagName = token.type === 'html_block' ? 'div' : 'span';\r\n const doc = parser.parseFromString(\r\n `<${tagName}>${token.content}</${tagName}>`,\r\n 'text/html'\r\n );\r\n const tokenDom = doc.body;\r\n // 如果只有一个子节点,直接返回子节点而不是包含div\r\n if (tokenDom.firstChild && tokenDom.childNodes.length === 1) {\r\n return tokenDom.firstChild;\r\n }\r\n return tokenDom;\r\n }\r\n\r\n if (token.tag) {\r\n const tagName = this.parser.isValidTagName(token.tag) ? token.tag : 'div';\r\n const element = this.renderer.createElement(tagName);\r\n\r\n if (token.attrs) {\r\n token.attrs.forEach(([key, value]) => {\r\n this.renderer.setAttribute(element, key, value);\r\n });\r\n }\r\n\r\n // 设置内容\r\n if (token.content) {\r\n const textNode = this.renderer.createText(token.content);\r\n element.appendChild(textNode);\r\n }\r\n return element;\r\n }\r\n\r\n return this.renderer.createText(token.content || '');\r\n }\r\n\r\n private createCodeBlock(language: string, code: string, blockIndex: number) {\r\n const key = `code-block-${blockIndex}`;\r\n\r\n // 检查缓存中是否已存在相同blockIndex的组件\r\n if (this.codeBlockComponentsCache.has(key)) {\r\n const cachedItem = this.codeBlockComponentsCache.get(key);\r\n if (cachedItem) {\r\n // 更新现有组件的属性\r\n const componentRef = cachedItem.componentRef;\r\n componentRef.setInput('language', language);\r\n componentRef.setInput('code', code);\r\n componentRef.setInput('theme', this.theme);\r\n\r\n // 触发变更检测\r\n componentRef.changeDetectorRef.detectChanges();\r\n // 返回缓存的容器,无需重新创建\r\n return cachedItem.container;\r\n }\r\n }\r\n\r\n // 缓存中不存在,创建新组件\r\n const codeBlockContainer = this.renderer.createElement('div');\r\n this.renderer.setAttribute(codeBlockContainer, 'key', key);\r\n\r\n const componentRef = this.markdownContainer.createComponent(\r\n CodeBlockComponent,\r\n {\r\n projectableNodes: [],\r\n injector: this.markdownContainer.injector,\r\n }\r\n );\r\n\r\n // 设置组件属性\r\n componentRef.instance.language = language;\r\n componentRef.instance.code = code;\r\n componentRef.instance.blockIndex = blockIndex;\r\n componentRef.instance.theme = this.theme;\r\n componentRef.instance.enableMermaid = this.enableMermaid;\r\n componentRef.instance.mermaidConfig = this.mermaidConfig || {};\r\n componentRef.instance.actionsTemplate = this.actionsTemplate;\r\n componentRef.instance.headerTemplate = this.headerTemplate;\r\n componentRef.instance.contentTemplate = this.contentTemplate;\r\n\r\n // 触发变更检测\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n // 将组件的DOM元素附加到容器中\r\n this.renderer.appendChild(\r\n codeBlockContainer,\r\n componentRef.location.nativeElement\r\n );\r\n\r\n // 添加样式类\r\n this.renderer.addClass(codeBlockContainer, 'code-block-wrapper');\r\n\r\n // 缓存组件实例和容器\r\n this.codeBlockComponentsCache.set(key, {\r\n componentRef: componentRef,\r\n container: codeBlockContainer,\r\n });\r\n\r\n // 返回创建的DOM容器\r\n return codeBlockContainer;\r\n }\r\n\r\n private typewriterStart(): void {\r\n this.foundation.typewriterStart();\r\n }\r\n\r\n clearCodeBlockCache() {\r\n this.codeBlockComponentsCache.forEach((cachedItem) => {\r\n cachedItem.componentRef.destroy();\r\n });\r\n this.codeBlockComponentsCache.clear();\r\n }\r\n\r\n // 在组件销毁时清理缓存,避免内存泄漏\r\n override ngOnDestroy(): void {\r\n this.clearCodeBlockCache();\r\n }\r\n}\r\n","<div class=\"mc-markdown-render\" [ngClass]=\"theme === 'dark' ? 'mc-markdown-render-dark' : 'mc-markdown-render-light'\">\r\n <div #markdownContainer></div>\r\n</div>\r\n<ng-content></ng-content>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslatePipe } from '../Locale';\r\nimport { MarkdownCardComponent } from './markdown-card.component';\r\nimport { CodeBlockComponent } from './code-block.component';\r\nimport { LocaleModule } from '../Locale';\r\n@NgModule({\r\n declarations: [\r\n CodeBlockComponent,\r\n MarkdownCardComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslatePipe,\r\n LocaleModule,\r\n \r\n ],\r\n exports: [\r\n CodeBlockComponent,\r\n MarkdownCardComponent\r\n ],\r\n providers: [\r\n ],\r\n bootstrap: []\r\n})\r\nexport class MarkdownCardModule {\r\n static forRoot(): ModuleWithProviders<MarkdownCardModule> {\r\n return {\r\n ngModule: MarkdownCardModule,\r\n providers: [\r\n ]\r\n };\r\n }\r\n}","// Mention组件的公共常量定义\r\nexport const MentionSeparator = ' ';\r\nexport const ArrowLeft = 'ArrowLeft';\r\nexport const ArrowRight = 'ArrowRight';\r\nexport const ArrowUp = 'ArrowUp';\r\nexport const ArrowDown = 'ArrowDown';\r\nexport const Escape = 'Escape';","import { MentionProps, SearchChangeEvent, Trigger } from './common/mention-types';\r\nimport { MentionSeparator, ArrowLeft, ArrowRight, ArrowUp, ArrowDown, Escape } from './common/mention-constants';\r\nimport BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport { computePosition, offset, autoUpdate } from '@floating-ui/dom';\r\nimport { debounce, isObject } from 'lodash-es';\r\n\r\nexport interface MentionAdapter extends DefaultAdapter {\r\n updateModelValue: (val: boolean) => void;\r\n searchChange: (event: SearchChangeEvent) => void;\r\n activeIndexChange: (index: number) => void;\r\n toggleChange: (val: boolean) => void;\r\n}\r\n\r\nexport class MentionFoundation extends BaseFoundation<MentionAdapter> {\r\n private props: MentionProps;\r\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\r\n private originEl: HTMLElement | null = null;\r\n private overlayEl: HTMLElement | null = null;\r\n private currentTrigger: string = '';\r\n private currentSearchValue: string = '';\r\n private currentTriggerIndex: number = -1;\r\n private currentCursorIndex: number = -1;\r\n private autoUpdateCleanup: (() => void) | null = null;\r\n\r\n constructor(adapter: MentionAdapter) {\r\n super({ ...adapter });\r\n this.props = {\r\n modelValue: false,\r\n prefix: [],\r\n fitHostWidth: true,\r\n optionsCount: 0,\r\n ...this.getProps()\r\n };\r\n \r\n // 创建防抖版本的handleInput方法\r\n this.handleInput = debounce(this.handleInput, 300);\r\n }\r\n\r\n // 更新配置选项\r\n updateOptions(options: Partial<MentionProps>) {\r\n this.props = { ...this.props, ...options };\r\n this.updateOverlayPosition();\r\n }\r\n\r\n // 设置输入元素\r\n setInputEl(el: HTMLInputElement | HTMLTextAreaElement | null) {\r\n this.inputEl = el;\r\n }\r\n\r\n // 设置原点元素\r\n setOriginEl(el: HTMLElement | null) {\r\n this.originEl = el;\r\n this.updateOverlayPosition();\r\n }\r\n\r\n // 设置覆盖层元素\r\n setOverlayEl(el: HTMLElement | null) {\r\n this.overlayEl = el;\r\n this.updateOverlayPosition();\r\n }\r\n\r\n // 初始化事件\r\n initEvents() {\r\n if (this.inputEl) {\r\n this.inputEl.addEventListener('input', this.handleInput);\r\n this.inputEl.addEventListener('keydown', this.handleKeyDown as EventListener);\r\n this.inputEl.addEventListener('click', this.handleClick);\r\n }\r\n // 监听文档点击事件,用于处理点击外部关闭下拉菜单\r\n document.addEventListener('click', this.handleDocumentClick);\r\n }\r\n\r\n // 销毁事件\r\n override destroy() {\r\n if (this.inputEl) {\r\n this.inputEl.removeEventListener('input', this.handleInput);\r\n this.inputEl.removeEventListener('keydown', this.handleKeyDown as EventListener);\r\n this.inputEl.removeEventListener('click', this.handleClick);\r\n }\r\n // 移除文档点击事件监听\r\n document.removeEventListener('click', this.handleDocumentClick);\r\n // 清理autoUpdate\r\n if (this.autoUpdateCleanup) {\r\n this.autoUpdateCleanup();\r\n this.autoUpdateCleanup = null;\r\n }\r\n this.inputEl = null;\r\n this.originEl = null;\r\n this.overlayEl = null;\r\n }\r\n\r\n // 重置Mention状态\r\n resetMention() {\r\n this.currentTrigger = '';\r\n this.currentSearchValue = '';\r\n this.currentTriggerIndex = -1;\r\n this.currentCursorIndex = -1;\r\n this.updateModelValue(false);\r\n }\r\n\r\n // 更新模型值\r\n private updateModelValue(val: boolean) {\r\n if (this.props.modelValue !== val) {\r\n this.props.modelValue = val;\r\n this._adapter.updateModelValue(val);\r\n this._adapter.toggleChange(val);\r\n }\r\n }\r\n\r\n // 处理输入事件\r\n handleInput = () => {\r\n if (!this.inputEl) return;\r\n\r\n const value = this.inputEl.value;\r\n const cursorPosition = this.inputEl.selectionStart || 0;\r\n\r\n // 检查是否匹配触发词\r\n const matchResult = this.checkPrefixMatch(value, cursorPosition);\r\n if (matchResult) {\r\n const { trigger, triggerIndex, searchValue } = matchResult;\r\n this.currentTrigger = trigger;\r\n this.currentSearchValue = searchValue;\r\n this.currentTriggerIndex = triggerIndex;\r\n this.currentCursorIndex = cursorPosition;\r\n\r\n // 触发搜索变化事件\r\n this._adapter.searchChange({\r\n value: searchValue,\r\n trigger,\r\n triggerIndex,\r\n cursorIndex: cursorPosition\r\n });\r\n\r\n // 当有匹配的触发词时,就显示弹窗\r\n // 这样可以确保在用户输入过程中,弹窗始终显示,直到用户选择了一个选项或者点击了其他地方\r\n this.updateModelValue(true);\r\n\r\n // 这里不再直接调用updateOverlayPosition,而是通过watch modelValue的nextTick来调用,确保overlayEl已渲染完成\r\n } else {\r\n // 没有匹配的触发词,关闭选择面板\r\n this.resetMention();\r\n }\r\n };\r\n\r\n // 处理键盘事件\r\n handleKeyDown = (event: KeyboardEvent) => {\r\n if (!this.inputEl) return;\r\n\r\n switch (event.key) {\r\n case ArrowUp:\r\n if (this.props.modelValue) {\r\n event.preventDefault();\r\n this.handleArrowKey(-1);\r\n }\r\n break;\r\n case ArrowDown:\r\n if (this.props.modelValue) {\r\n event.preventDefault();\r\n this.handleArrowKey(1);\r\n }\r\n break;\r\n case ArrowLeft:\r\n case ArrowRight:\r\n // 左右箭头键:延迟检查是否需要触发提及\r\n setTimeout(() => {\r\n this.handleInput();\r\n });\r\n break;\r\n case Escape:\r\n event.preventDefault();\r\n this.resetMention();\r\n break;\r\n case MentionSeparator:\r\n // 只有在面板打开时才阻止空格的默认行为\r\n if (this.props.modelValue) {\r\n this.resetMention();\r\n }\r\n break;\r\n default:\r\n // 其他按键不做处理\r\n break;\r\n }\r\n };\r\n\r\n // 处理点击事件\r\n private handleClick = () => {\r\n if (!this.inputEl) return;\r\n\r\n // 点击事件触发提及检查\r\n this.handleInput();\r\n };\r\n\r\n // 处理文档点击事件\r\n private handleDocumentClick = (e: Event) => {\r\n if (this.originEl) {\r\n if (this.props.modelValue) {\r\n // 如果下拉菜单是打开的,检查点击是否发生在originEl外部\r\n if (!this.originEl.contains(e.target as HTMLElement)) {\r\n this.resetMention();\r\n }\r\n } else {\r\n // 如果下拉菜单是关闭的,检查点击是否发生在originEl内部\r\n if (this.originEl.contains(e.target as HTMLElement)) {\r\n this.handleInput();\r\n }\r\n }\r\n }\r\n };\r\n\r\n // 检查前缀匹配\r\n private checkPrefixMatch(value: string, cursorPosition: number): { trigger: string; triggerIndex: number; searchValue: string } | null {\r\n if (!this.props.prefix || this.props.prefix.length === 0) return null;\r\n\r\n const text = value.replace(/[\\r\\n]/g, MentionSeparator);\r\n const beforeCursor = text.substring(0, cursorPosition);\r\n\r\n // 检查所有前缀\r\n for (const prefixItem of this.props.prefix) {\r\n let trigger = '';\r\n let onlyInputStart = false;\r\n\r\n if (typeof prefixItem === 'string') {\r\n trigger = prefixItem;\r\n } else if (isObject(prefixItem)) {\r\n trigger = prefixItem.key;\r\n onlyInputStart = Boolean(prefixItem.onlyInputStart);\r\n } else {\r\n continue;\r\n }\r\n\r\n // 查找最后一个触发词的位置\r\n const triggerIndex = beforeCursor.lastIndexOf(trigger);\r\n // 查找最后一个分隔符的位置\r\n const separatorPos = beforeCursor.lastIndexOf(MentionSeparator);\r\n // 触发词到光标的字符串\r\n const mentionStr = beforeCursor.substring(triggerIndex, cursorPosition);\r\n // 提及字符串的最后一个字符\r\n const lastMentionChar = mentionStr.charAt(mentionStr.length - 1);\r\n\r\n // 条件判断:\r\n // 1. 触发词位置有效\r\n // 2. 如果设置了onlyInputStart,触发词必须在输入开始处\r\n // 3. 触发词位置必须在最后一个分隔符之后\r\n // 4. 提及字符串的最后一个字符不能是分隔符\r\n if (triggerIndex < 0 || \r\n (triggerIndex > 0 && onlyInputStart) || \r\n triggerIndex < separatorPos || \r\n lastMentionChar === MentionSeparator) {\r\n continue;\r\n } else {\r\n const searchValue = mentionStr.slice(trigger.length);\r\n return { trigger, triggerIndex, searchValue };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // 处理箭头键\r\n private handleArrowKey(direction: number) {\r\n let newIndex = (this.getCurrentActiveIndex() + direction) % this.props.optionsCount;\r\n if (newIndex < 0) {\r\n newIndex = this.props.optionsCount - 1;\r\n }\r\n this._adapter.activeIndexChange(newIndex);\r\n }\r\n\r\n // 获取当前活动索引\r\n private getCurrentActiveIndex(): number {\r\n // 默认返回0,实际实现可能需要根据adapter获取\r\n return 0;\r\n }\r\n\r\n // 处理选择事件\r\n private handleSelect() {\r\n if (!this.inputEl || this.currentTriggerIndex === -1) return;\r\n\r\n const value = this.inputEl.value;\r\n const beforeTrigger = value.substring(0, this.currentTriggerIndex);\r\n const afterCursor = value.substring(this.currentCursorIndex);\r\n\r\n // 这里需要根据实际选择的项进行替换,暂时使用示例实现\r\n const selectedValue = `${beforeTrigger}@selected ${afterCursor}`;\r\n this.inputEl.value = selectedValue;\r\n\r\n // 设置光标位置\r\n const newCursorPosition = beforeTrigger.length + '@selected '.length;\r\n this.inputEl.setSelectionRange(newCursorPosition, newCursorPosition);\r\n\r\n // 关闭选择面板\r\n this.resetMention();\r\n\r\n // 触发input事件以更新绑定值\r\n this.inputEl.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n\r\n // 更新覆盖层位置\r\n updateOverlayPosition(): Promise<{ top: string; left: string; width: string; } | undefined> {\r\n return new Promise((resolve) => {\r\n if (!this.originEl || !this.overlayEl) {\r\n resolve(undefined);\r\n return;\r\n }\r\n\r\n // 设置宽度\r\n if (this.props.fitHostWidth) {\r\n const originRect = this.originEl.getBoundingClientRect();\r\n this.overlayEl.style.width = `${originRect.width}px`;\r\n } else {\r\n this.overlayEl.style.width = '';\r\n }\r\n\r\n // 清理之前的autoUpdate\r\n if (this.autoUpdateCleanup) {\r\n this.autoUpdateCleanup();\r\n this.autoUpdateCleanup = null;\r\n }\r\n\r\n // 设置位置:使用@floating-ui/dom计算位置,与Vue版本保持一致\r\n computePosition(this.originEl, this.overlayEl, {\r\n strategy: 'fixed',\r\n placement: 'top-start',\r\n middleware: [offset(4)],\r\n }).then(({ x, y }) => {\r\n this.overlayEl!.style.top = `${y}px`;\r\n this.overlayEl!.style.left = `${x}px`;\r\n this.overlayEl!.style.position = 'fixed';\r\n \r\n // 返回位置信息,用于Vue组件同步样式\r\n resolve({\r\n top: `${y}px`,\r\n left: `${x}px`,\r\n width: this.props.fitHostWidth ? `${this.originEl!.getBoundingClientRect().width}px` : ''\r\n });\r\n \r\n // 设置autoUpdate,自动处理滚动、调整大小和视口变化事件\r\n this.autoUpdateCleanup = autoUpdate(\r\n this.originEl!,\r\n this.overlayEl!,\r\n () => {\r\n if (this.originEl && this.overlayEl) {\r\n // 当fitHostWidth为true时,更新宽度\r\n if (this.props.fitHostWidth) {\r\n const originRect = this.originEl.getBoundingClientRect();\r\n this.overlayEl.style.width = `${originRect.width}px`;\r\n }\r\n \r\n computePosition(this.originEl, this.overlayEl, {\r\n strategy: 'fixed',\r\n placement: 'top-start',\r\n middleware: [offset(4)],\r\n }).then(({ x, y }) => {\r\n this.overlayEl!.style.top = `${y}px`;\r\n this.overlayEl!.style.left = `${x}px`;\r\n });\r\n }\r\n },\r\n {\r\n // 添加对视口变化的更全面监听,确保浏览器F12打开/关闭时位置能正确更新\r\n animationFrame: true,\r\n elementResize: true,\r\n ancestorScroll: true,\r\n ancestorResize: true,\r\n layoutShift: true\r\n }\r\n ); \r\n }).catch(() => {\r\n // 处理计算位置失败的情况\r\n resolve(undefined);\r\n });\r\n });\r\n }\r\n\r\n // 获取当前搜索值\r\n getCurrentSearchValue(): string {\r\n return this.currentSearchValue;\r\n }\r\n\r\n // 获取当前触发词\r\n getCurrentTrigger(): string {\r\n return this.currentTrigger;\r\n }\r\n}","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy, OnInit, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { trigger, style, animate, transition } from '@angular/animations';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SearchChangeEvent, Trigger } from '../components-common/Mention/common/mention-types';\r\nimport { MentionFoundation } from '../components-common/Mention/foundation';\r\nimport BaseComponent from '../Base/base.component';\r\n\r\n@Component({\r\n selector: 'mc-mention',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './mention.component.html',\r\n styleUrls: ['./mention.component.scss'],\r\n animations: [\r\n trigger('fade', [\r\n transition(':enter', [\r\n style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }),\r\n animate('0.2s cubic-bezier(0.16, 0.75, 0.5, 1)', style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }))\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }),\r\n animate('0.2s cubic-bezier(0.5, 0, 0.84, 0.25)', style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }))\r\n ])\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MentionComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MentionComponent extends BaseComponent<MentionFoundation> implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n @Input() prefix: Array<string | Trigger> = ['@'];\r\n @Input() fitHostWidth: boolean = true;\r\n @Input() menuClass?: string;\r\n // 选项数量,用于键盘导航\r\n private _optionsCount: number = 0;\r\n \r\n @Input()\r\n set optionsCount(val: number) {\r\n this._optionsCount = val;\r\n // 当optionsCount变化时,更新foundation的配置\r\n if (this.foundation) {\r\n this.foundation.updateOptions({ optionsCount: val });\r\n }\r\n }\r\n \r\n get optionsCount(): number {\r\n return this._optionsCount;\r\n }\r\n\r\n @Output() updateModelValue = new EventEmitter<boolean>();\r\n @Output() searchChange = new EventEmitter<SearchChangeEvent>();\r\n @Output() toggleChange = new EventEmitter<boolean>();\r\n // 当前选中索引变化事件\r\n @Output() activeIndexChange = new EventEmitter<number>();\r\n\r\n // 当前选中的索引\r\n activeIndex: number = -1;\r\n\r\n @ViewChild('popperTrigger') popperTriggerEl!: ElementRef;\r\n @ViewChild('origin') originEl!: ElementRef;\r\n @ViewChild('overlayEl') overlayEl!: ElementRef;\r\n\r\n overlayStyle: { top: string; left: string; width: string } = { top: '0px', left: '0px', width: '' };\r\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\r\n \r\n constructor() { \r\n super(); \r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new MentionFoundation(this.adapter);\r\n }\r\n\r\n override get adapter(): any {\r\n return {\r\n ...super.adapter,\r\n updateModelValue: (val: boolean) => {\r\n // 调用modelValue的setter方法,确保位置更新逻辑被执行\r\n this.modelValue = val;\r\n },\r\n searchChange: (event: SearchChangeEvent) => this.searchChange.emit(event),\r\n activeIndexChange: (index: number) => {\r\n this.activeIndex = index;\r\n this.activeIndexChange.emit(index);\r\n },\r\n toggleChange: (val: boolean) => this.toggleChange.emit(val)\r\n };\r\n }\r\n\r\n ngAfterViewInit() {\r\n // 添加安全检查 - 仅检查必要元素,overlayEl有*ngIf条件可能不会立即渲染\r\n if (!this.popperTriggerEl || !this.originEl) {\r\n console.error('ViewChild elements not found');\r\n return;\r\n }\r\n\r\n const hostElement = this.popperTriggerEl.nativeElement;\r\n let foundInputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\r\n\r\n // 检查hostElement本身是否是输入元素\r\n if (hostElement.tagName === 'TEXTAREA' || hostElement.tagName === 'INPUT') {\r\n foundInputEl = hostElement;\r\n } else {\r\n // 先查找mc-input组件\r\n const mcInputComponent = hostElement.querySelector('mc-input');\r\n if (mcInputComponent) {\r\n // 如果找到mc-input组件,查找其内部的textarea元素\r\n foundInputEl = mcInputComponent.querySelector('textarea');\r\n } else {\r\n // 否则在hostElement内部查找原生输入元素\r\n foundInputEl = hostElement.querySelector('textarea') || hostElement.querySelector('input');\r\n }\r\n }\r\n\r\n if (!foundInputEl) {\r\n console.error('Input/Textarea element not found in Mention component');\r\n return;\r\n }\r\n\r\n // 初始化foundation的元素\r\n this.inputEl = foundInputEl;\r\n this.foundation.setInputEl(this.inputEl);\r\n this.foundation.setOriginEl(this.originEl.nativeElement);\r\n // 仅在overlayEl存在时设置,否则Foundation会在需要时处理\r\n if (this.overlayEl) {\r\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\r\n }\r\n // 初始化事件\r\n this.foundation.initEvents();\r\n }\r\n\r\n override ngOnDestroy() { // 清理文档点击事件\r\n this.cleanupDocumentClick();\r\n // 清理Foundation资源\r\n this.foundation.destroy();\r\n super.ngOnDestroy();\r\n }\r\n\r\n // 监听modelValue变化,更新overlay位置\r\n @Input()\r\n set modelValue(val: boolean) {\r\n if (this._modelValue !== val) {\r\n this._modelValue = val;\r\n // 当显示Mention面板时,确保overlay元素已传递给foundation并更新位置\r\n if (val && this.foundation) {\r\n // 使用setTimeout确保overlayEl已经渲染完成\r\n setTimeout(() => {\r\n // 检查overlayEl是否可用,如果可用则传递给foundation\r\n if (this.overlayEl) {\r\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\r\n // 获取位置信息并更新组件样式\r\n const positionInfo = this.foundation.updateOverlayPosition();\r\n if (positionInfo instanceof Promise) {\r\n positionInfo.then(pos => {\r\n if (pos) {\r\n this.overlayStyle = pos;\r\n }\r\n });\r\n } else if (positionInfo) {\r\n this.overlayStyle = positionInfo;\r\n }\r\n }\r\n }, 0);\r\n }\r\n // 调用onChange回调,支持ngModel双向绑定\r\n this.onChange(val);\r\n // 仍然触发updateModelValue事件,保持向后兼容\r\n this.updateModelValue.emit(val);\r\n }\r\n }\r\n\r\n get modelValue(): boolean {\r\n return this._modelValue;\r\n }\r\n\r\n // 私有属性存储实际的modelValue\r\n private _modelValue: boolean = false;\r\n\r\n // ControlValueAccessor 接口实现\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.modelValue = value;\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // 如果需要禁用功能,可以在这里实现\r\n }\r\n\r\n // 初始化文档点击事件(已在ngAfterViewInit中处理,无需重复)\r\n ngAfterContentInit() {\r\n }\r\n\r\n // 清理文档点击事件\r\n private cleanupDocumentClick() {\r\n document.removeEventListener('click', this.onDocumentClick);\r\n }\r\n\r\n // 处理文档点击事件,点击外部关闭Mention面板\r\n private onDocumentClick = (e: Event) => {\r\n if (this.originEl && this.originEl.nativeElement && this.modelValue) {\r\n if (!this.originEl.nativeElement.contains(e.target as HTMLElement)) {\r\n this.foundation.resetMention();\r\n }\r\n }\r\n };\r\n}","<!-- Mention组件的模板 -->\r\n\r\n<!-- 触发器元素 -->\r\n<div #popperTrigger #origin class=\"mc-mention-trigger\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<!-- 提及菜单的弹出层 -->\r\n<div \r\n #overlayEl \r\n *ngIf=\"modelValue\" \r\n [@fade]\r\n class=\"mc-mention mc-mention-fade\" \r\n [ngClass]=\"menuClass\" \r\n [ngStyle]=\"overlayStyle\"\r\n>\r\n <ng-content select=\"[slot=menu]\"></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MentionComponent } from './mention.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n MentionComponent\r\n ],\r\n exports: [MentionComponent],\r\n})\r\nexport class MentionModule {}","// Mention组件的导出文件\r\nexport * from './mention.component';\r\nexport * from './mention.module';","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface PromptAdapter extends DefaultAdapter {}\r\n\r\nexport class PromptFoundation extends BaseFoundation<PromptAdapter> {\r\n constructor(adapter: PromptAdapter) {\r\n super({ ...adapter });\r\n }\r\n}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface PromptItemAdapter extends DefaultAdapter {}\r\n\r\nexport class PromptItemFoundation extends BaseFoundation<PromptItemAdapter> {\r\n constructor(adapter: PromptItemAdapter) {\r\n super({ ...adapter });\r\n }\r\n}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface PromptIconAdapter extends DefaultAdapter {}\r\n\r\nexport class PromptIconFoundation extends BaseFoundation<PromptIconAdapter> {\r\n constructor(adapter: PromptIconAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getIconSize(): string {\r\n const { size } = this.getProps();\r\n return typeof size === 'number' ? `${size}px` : size;\r\n }\r\n getFontIconClass(): string {\r\n const { name } = this.getProps();\r\n return /^icon-/.test(name) ? name : '';\r\n }\r\n getIsComponent(): boolean {\r\n const { component } = this.getProps();\r\n return !!component;\r\n }\r\n getIsUrl(): boolean {\r\n const { name } = this.getProps();\r\n return /^((http|https):)?\\/\\//.test(name);\r\n }\r\n getImageAlt(): string {\r\n const { name } = this.getProps();\r\n return name.split('/').pop() || '';\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport {\r\n type PromptIconAdapter,\r\n PromptIconFoundation,\r\n} from '../../components-common/Prompt/icon-foundation';\r\n\r\n@Component({\r\n selector: 'mc-prompt-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './prompt-icon.component.html',\r\n styleUrls: ['./prompt-icon.component.scss'],\r\n})\r\nexport class PromptIconComponent extends BaseComponent<PromptIconFoundation> {\r\n @Input() name: string = '';\r\n @Input() color: string | undefined = '';\r\n @Input() size: number | string | undefined = '';\r\n @Input() component?: any;\r\n\r\n @ViewChild('dynamicIconComponent', { read: ViewContainerRef })\r\n iconComponent!: ViewContainerRef;\r\n\r\n override get adapter(): PromptIconAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n name: this.name,\r\n color: this.color,\r\n size: this.size,\r\n component: this.component,\r\n }),\r\n };\r\n }\r\n get iconSize() {\r\n return this.foundation.getIconSize();\r\n }\r\n get fontIconClass() {\r\n return this.foundation.getFontIconClass();\r\n }\r\n get isComponent() {\r\n return this.foundation.getIsComponent();\r\n }\r\n get isUrl() {\r\n return this.foundation.getIsUrl();\r\n }\r\n get imageAlt() {\r\n return this.foundation.getImageAlt();\r\n }\r\n ngOnInit() {\r\n this.foundation = new PromptIconFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n ngAfterViewInit() {\r\n this.loadIconComponent();\r\n }\r\n loadIconComponent() {\r\n if (!this.isComponent) {\r\n return;\r\n }\r\n this.iconComponent.createComponent(this.component);\r\n }\r\n}\r\n","<div class=\"mc-prompt-icon\">\r\n <ng-container *ngIf=\"isComponent\" #dynamicIconComponent>\r\n </ng-container>\r\n \r\n <img\r\n *ngIf=\"!isComponent && isUrl\"\r\n [src]=\"name\"\r\n [alt]=\"imageAlt\"\r\n [style]=\"{ width: iconSize || '', verticalAlign: 'middle' }\"\r\n />\r\n \r\n <i\r\n *ngIf=\"!isComponent && !isUrl\"\r\n [class]=\"fontIconClass\"\r\n [style.fontSize]=\"iconSize\"\r\n [style.color]=\"color\"\r\n ></i>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport type { Prompt } from '../../components-common/Prompt/common/prompt-types';\r\nimport {\r\n type PromptItemAdapter,\r\n PromptItemFoundation,\r\n} from '../../components-common/Prompt/item-foundation';\r\nimport { PromptIconComponent } from '../prompt-icon/prompt-icon.component';\r\n\r\n@Component({\r\n selector: 'mc-prompt-item',\r\n standalone: true,\r\n imports: [CommonModule, PromptIconComponent],\r\n templateUrl: './prompt-item.component.html',\r\n styleUrls: ['./prompt-item.component.scss'],\r\n})\r\nexport class PromptItemComponent extends BaseComponent<PromptItemFoundation> {\r\n // 组件属性\r\n @Input() prompt: Prompt = {} as Prompt;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new PromptItemFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): PromptItemAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n prompt: this.prompt,\r\n }),\r\n };\r\n }\r\n}\r\n","<div *ngIf=\"prompt\" class=\"mc-prompt-item\">\r\n <div class=\"mc-prompt-item-icon\" [ngClass]=\"{ 'no-description': !prompt.desc }\">\r\n <mc-prompt-icon\r\n *ngIf=\"prompt.iconConfig\"\r\n [name]=\"prompt.iconConfig.name\"\r\n [color]=\"prompt.iconConfig.color\"\r\n [size]=\"prompt.iconConfig.size\"\r\n [component]=\"prompt.iconConfig.component\"\r\n />\r\n </div>\r\n <div *ngIf=\"prompt.label || prompt.desc\" class=\"mc-prompt-item-content\">\r\n <div *ngIf=\"prompt.label\" class=\"mc-prompt-item-label\">{{ prompt.label }}</div>\r\n <div *ngIf=\"prompt.desc\" class=\"mc-prompt-item-description\">{{ prompt.desc }}</div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport BaseComponent from '../Base/base.component';\r\nimport type { Prompt } from '../components-common/Prompt/common/prompt-types';\r\nimport {\r\n type PromptAdapter,\r\n PromptFoundation,\r\n} from '../components-common/Prompt/foundation';\r\nimport { ListDirection, ListModule, ListVariant } from '../List/index';\r\nimport { PromptItemComponent } from './prompt-item/prompt-item.component';\r\n\r\n@Component({\r\n selector: 'mc-prompt',\r\n standalone: true,\r\n imports: [CommonModule, ListModule, PromptItemComponent],\r\n templateUrl: './prompt.component.html',\r\n styleUrls: ['./prompt.component.scss'],\r\n})\r\nexport class PromptComponent extends BaseComponent<PromptFoundation> {\r\n // 组件属性\r\n @Input() direction: ListDirection = ListDirection.Vertical;\r\n @Input() list: Prompt[] = [];\r\n @Input() variant: ListVariant = ListVariant.Filled;\r\n\r\n @Output() itemClick = new EventEmitter<Prompt>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new PromptFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): PromptAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n direction: this.direction,\r\n list: this.list,\r\n variant: this.variant,\r\n }),\r\n };\r\n }\r\n\r\n handleItemClick(item: Prompt) {\r\n this.itemClick.emit(item);\r\n }\r\n}\r\n","<div class=\"mc-prompt\">\r\n <mc-list [data]=\"list\" [direction]=\"direction\" [variant]=\"variant\" [selectable]=\"false\">\r\n <ng-template #item let-item>\r\n <mc-prompt-item\r\n [prompt]=\"item\"\r\n (click)=\"handleItemClick(item)\"\r\n ></mc-prompt-item>\r\n </ng-template>\r\n </mc-list>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { PromptComponent } from './prompt.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, PromptComponent],\r\n exports: [PromptComponent],\r\n})\r\nexport class PromptModule {}\r\n","export function copyToClipboard(text: any) {\r\n if (typeof text !== 'string') {\r\n return Promise.reject();\r\n }\r\n\r\n // 现代浏览器优先使用 Clipboard API\r\n if (navigator.clipboard && window.isSecureContext) {\r\n return navigator.clipboard\r\n .writeText(text)\r\n .then(() => {})\r\n .catch((err) => {\r\n return fallbackCopyTextToClipboard(text); // 降级处理\r\n });\r\n }\r\n\r\n // 低版本浏览器直接使用降级方案\r\n return fallbackCopyTextToClipboard(text);\r\n}\r\n\r\nexport function fallbackCopyTextToClipboard(text: string) {\r\n return new Promise((resolve, reject) => {\r\n // 创建隐藏的 textarea 元素\r\n const textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n\r\n // 样式:隐藏且不影响布局\r\n textarea.style.position = 'fixed';\r\n textarea.style.top = '-9999px';\r\n textarea.style.left = '-9999px';\r\n textarea.style.opacity = '0';\r\n textarea.style.zIndex = '-1000';\r\n\r\n // 解决 iOS 下无法选中的问题\r\n textarea.setAttribute('readonly', '');\r\n\r\n document.body.appendChild(textarea);\r\n\r\n try {\r\n // 选中内容(兼容 iOS)\r\n textarea.select();\r\n textarea.setSelectionRange(0, textarea.value.length); // 移动端必须\r\n\r\n // 执行复制\r\n const success = document.execCommand('copy');\r\n if (success) {\r\n resolve(null);\r\n } else {\r\n reject();\r\n }\r\n } catch (err) {\r\n reject();\r\n } finally {\r\n // 移除临时元素\r\n document.body.removeChild(textarea);\r\n }\r\n });\r\n}\r\n","export const TOOLBAR_GAP_DEFAULT_VALUE = 0;\r\nexport const TOOLBAR_ICON_SIZE_DEFAULT_VALUE = 16;\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { copyToClipboard } from '../../components-common/Toolbar/common/toolbar-common-fun';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-copy-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './copy-icon.component.html',\r\n styleUrls: ['./copy-icon.component.scss'],\r\n})\r\nexport class CopyIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() text: string = '';\r\n @Input() title: string = '';\r\n\r\n copied = false;\r\n\r\n async handleClick() {\r\n setTimeout(() => {\r\n this.copied = false;\r\n }, 1500);\r\n try {\r\n await copyToClipboard(this.text);\r\n this.copied = true;\r\n } catch (error) {}\r\n }\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n *ngIf=\"copied\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <desc>Created with Sketch.</desc>\r\n <defs>\r\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>\r\n </defs>\r\n <g id=\"status/whiteBG/correct\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-1\"></use>\r\n </mask>\r\n <use id=\"Mask\" fill=\"currentColor\" xlink:href=\"#path-1\"></use>\r\n </g>\r\n </svg>\r\n <svg\r\n *ngIf=\"!copied\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n (click)=\"handleClick()\"\r\n >\r\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"API-starter-图标入库\" transform=\"translate(-592.000000, -204.000000)\">\r\n <g id=\"方格备份-16\" transform=\"translate(560.000000, 180.000000)\">\r\n <text id=\"图标\" font-family=\"PingFangSC-Regular, PingFang SC\" font-size=\"12\" font-weight=\"normal\" line-spacing=\"16\" fill=\"#71757F\">\r\n <tspan x=\"27.136\" y=\"61\">复制</tspan>\r\n </text>\r\n </g>\r\n <path\r\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\"\r\n id=\"形状结合\"\r\n fill=\"currentColor\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-delete-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './delete-icon.component.html',\r\n styleUrls: ['./delete-icon.component.scss'],\r\n})\r\nexport class DeleteIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"codehub-delete-op\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n type OnChanges,\r\n Output,\r\n type SimpleChanges,\r\n} from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-dislike-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './dislike-icon.component.html',\r\n styleUrls: ['./dislike-icon.component.scss'],\r\n})\r\nexport class DislikeIconComponent implements OnChanges {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n active = this.isActive;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['isActive']) {\r\n this.active = changes['isActive'].currentValue;\r\n }\r\n }\r\n\r\n handleClick(): void {\r\n this.active = !this.active;\r\n this.activeChange.emit(this.active);\r\n }\r\n}\r\n","<div\r\n class=\"mc-action-item\"\r\n [title]=\"title\"\r\n [class.mc-action-item-active]=\"active\"\r\n (click)=\"handleClick()\"\r\n>\r\n <svg\r\n *ngIf=\"active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <path\r\n id=\"矢量 1\"\r\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\"\r\n fill-rule=\"evenodd\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <svg\r\n *ngIf=\"!active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"Dislike\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n id=\"形状结合\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n type OnChanges,\r\n Output,\r\n type SimpleChanges,\r\n} from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-like-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './like-icon.component.html',\r\n styleUrls: ['./like-icon.component.scss'],\r\n})\r\nexport class LikeIconComponent implements OnChanges {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n active = this.isActive;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['isActive']) {\r\n this.active = changes['isActive'].currentValue;\r\n }\r\n }\r\n\r\n handleClick(): void {\r\n this.active = !this.active;\r\n this.activeChange.emit(this.active);\r\n }\r\n}\r\n","<div\r\n class=\"mc-action-item\"\r\n [title]=\"title\"\r\n [class.mc-action-item-active]=\"active\"\r\n (click)=\"handleClick()\"\r\n>\r\n <svg\r\n *ngIf=\"active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <desc>Created with Sketch.</desc>\r\n <path\r\n id=\"矢量 1\"\r\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\"\r\n fill-rule=\"evenodd\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <svg\r\n *ngIf=\"!active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n id=\"dislike\"\r\n fill=\"currentColor\"\r\n transform=\"translate(8.167337, 8.168474) scale(-1, 1) rotate(-180.000000) translate(-8.167337, -8.168474) \"\r\n ></path>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-refresh-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './refresh-icon.component.html',\r\n styleUrls: ['./refresh-icon.component.scss'],\r\n})\r\nexport class RefreshIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <g id=\"Re-generate\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n id=\"形状结合\"\r\n fill=\"currentColor\"\r\n />\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-share-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './share-icon.component.html',\r\n styleUrls: ['./share-icon.component.scss'],\r\n})\r\nexport class ShareIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <desc>Created with Sketch.</desc>\r\n <g id=\"释义图标/分享\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"分享\" fill=\"currentColor\" fill-rule=\"nonzero\">\r\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=\"形状\"/>\r\n </g>\r\n </g>\r\n </svg>\r\n</div>\r\n","export enum ToolbarAction {\r\n COPY = 'copy',\r\n LIKE = 'like',\r\n DISLIKE = 'dislike',\r\n REFRESH = 'refresh',\r\n SHARE = 'share',\r\n DELETE = 'delete',\r\n}\r\n\r\nexport interface ActionItem {\r\n key: string; // 唯一标识\r\n icon?: ToolbarAction; // icon部分名称\r\n label?: string; // 操作项title\r\n onClick?: (actionItem: ActionItem, e: MouseEvent) => void; // 点击事件\r\n isActive?: boolean; // 是否激活状态,点赞点踩用\r\n text?: string; // 需要复制的文本\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n type AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n type OnInit,\r\n Output,\r\n type QueryList,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n type ActionItem,\r\n ToolbarAction,\r\n} from '../components-common/Toolbar/common/toolbar.types';\r\nimport {\r\n TOOLBAR_GAP_DEFAULT_VALUE,\r\n TOOLBAR_ICON_SIZE_DEFAULT_VALUE,\r\n} from '../components-common/Toolbar/common/toolbar-constants';\r\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\r\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\r\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\r\nimport { LikeIconComponent } from './like-icon/like-icon.component';\r\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\r\nimport { ShareIconComponent } from './share-icon/share-icon.component';\r\n\r\n@Component({\r\n selector: 'mc-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n CopyIconComponent,\r\n DeleteIconComponent,\r\n RefreshIconComponent,\r\n ShareIconComponent,\r\n LikeIconComponent,\r\n DislikeIconComponent,\r\n ],\r\n styleUrls: ['./toolbar.component.scss'],\r\n})\r\nexport class ToolbarComponent implements OnInit, AfterContentInit {\r\n // 输入属性\r\n @Input() items: ActionItem[] = [];\r\n @Input() gap = TOOLBAR_GAP_DEFAULT_VALUE; // 默认间距\r\n @Input() iconSize = TOOLBAR_ICON_SIZE_DEFAULT_VALUE; // 默认图标大小\r\n\r\n // 输出事件\r\n @Output() onClick = new EventEmitter<{\r\n item: ActionItem;\r\n event: MouseEvent;\r\n }>();\r\n\r\n // 关键:获取所有投影进来的 ng-template 模板(包含变量名)\r\n @ContentChildren(TemplateRef, { read: TemplateRef })\r\n private allTemplates!: QueryList<TemplateRef<any>>;\r\n // 用户自定义插槽映射\r\n CustomSlotComponent = {};\r\n\r\n // 响应式操作项(深拷贝避免修改原数据)\r\n actionItems: ActionItem[] = [];\r\n\r\n ToolbarAction = ToolbarAction;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n // 深拷贝输入的items\r\n this.actionItems = this.items?.map((item) => ({ ...item }));\r\n // 初始化点赞/点踩互斥\r\n this.init();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n // 初始化阶段:解析所有模板的变量名,构建映射关系\r\n this.allTemplates.forEach((template: any) => {\r\n // 通过模板的 nativeElement 获取其变量名(#xxx 中的 xxx)\r\n const templateName = template._declarationTContainer?.localNames?.[0];\r\n if (templateName) {\r\n this.CustomSlotComponent[templateName] = template;\r\n }\r\n });\r\n console.log('ngAfterContentInit', this.CustomSlotComponent);\r\n }\r\n\r\n trackByKey(index: number, item: ActionItem) {\r\n return item.key;\r\n }\r\n\r\n /** 初始化:确保点赞和点踩不同时激活 */\r\n private init(): void {\r\n const likeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.LIKE,\r\n );\r\n const dislikeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.DISLIKE,\r\n );\r\n\r\n if (likeAction?.isActive && dislikeAction) {\r\n dislikeAction.isActive = false;\r\n }\r\n }\r\n\r\n /** 点赞点击处理:取消点踩状态 */\r\n private handleLikeClick(): void {\r\n const dislikeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.DISLIKE,\r\n );\r\n if (dislikeAction) {\r\n dislikeAction.isActive = false;\r\n }\r\n }\r\n\r\n /** 点踩点击处理:取消点赞状态 */\r\n private handleDislikeClick(): void {\r\n const likeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.LIKE,\r\n );\r\n if (likeAction) {\r\n likeAction.isActive = false;\r\n }\r\n }\r\n\r\n /** 操作项点击事件 */\r\n actionClick(event: MouseEvent, actionItem: ActionItem): void {\r\n // 处理点赞/点踩互斥\r\n if (actionItem.icon === ToolbarAction.LIKE) {\r\n this.handleLikeClick();\r\n } else if (actionItem.icon === ToolbarAction.DISLIKE) {\r\n this.handleDislikeClick();\r\n }\r\n console.log('actionClick', event, actionItem);\r\n\r\n // 执行item自身的点击回调\r\n if (actionItem.onClick) {\r\n actionItem.onClick(actionItem, event);\r\n }\r\n\r\n // 触发组件输出事件\r\n this.onClick.emit({ item: actionItem, event });\r\n }\r\n\r\n /** 激活状态变更 */\r\n activeChange(isActive: boolean, actionItem: ActionItem): void {\r\n actionItem.isActive = isActive;\r\n }\r\n}\r\n","<div class=\"mc-actions\" [style.gap.px]=\"gap\">\r\n <!-- 遍历操作项 -->\r\n <ng-container *ngFor=\"let item of actionItems; trackBy: trackByKey\">\r\n <!-- 整个操作项自定义 -->\r\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key]\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!CustomSlotComponent[item.key]\">\r\n <!-- 只自定义Icon部分 -->\r\n <div\r\n *ngIf=\"CustomSlotComponent[item.key + 'Icon']\"\r\n class=\"mc-action-item\"\r\n [title]=\"item.label\"\r\n (click)=\"actionClick($event, item)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key + 'Icon']; context: { actionData: item }\"></ng-container>\r\n </div>\r\n\r\n <!-- 完全使用内置组件情况 -->\r\n <mc-copy-icon\r\n *ngIf=\"item.icon === ToolbarAction.COPY\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [text]=\"item.text ?? ''\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-copy-icon>\r\n <mc-delete-icon\r\n *ngIf=\"item.icon === ToolbarAction.DELETE\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-delete-icon>\r\n <mc-refresh-icon\r\n *ngIf=\"item.icon === ToolbarAction.REFRESH\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-refresh-icon>\r\n <mc-share-icon\r\n *ngIf=\"item.icon === ToolbarAction.SHARE\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-share-icon>\r\n <mc-like-icon\r\n *ngIf=\"item.icon === ToolbarAction.LIKE\"\r\n [isActive]=\"item.isActive ?? false\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (activeChange)=\"activeChange($event, item)\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-like-icon>\r\n <mc-dislike-icon\r\n *ngIf=\"item.icon === ToolbarAction.DISLIKE\"\r\n [isActive]=\"item.isActive ?? false\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (activeChange)=\"activeChange($event, item)\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-dislike-icon>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n// 导入所有图标组件\r\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\r\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\r\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\r\nimport { LikeIconComponent } from './like-icon/like-icon.component';\r\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\r\nimport { ShareIconComponent } from './share-icon/share-icon.component';\r\nimport { ToolbarComponent } from './toolbar.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n ToolbarComponent,\r\n CopyIconComponent,\r\n DeleteIconComponent,\r\n RefreshIconComponent,\r\n ShareIconComponent,\r\n LikeIconComponent,\r\n DislikeIconComponent,\r\n ],\r\n exports: [\r\n ToolbarComponent,\r\n CopyIconComponent,\r\n DeleteIconComponent,\r\n RefreshIconComponent,\r\n ShareIconComponent,\r\n LikeIconComponent,\r\n DislikeIconComponent,\r\n ],\r\n})\r\nexport class ToolbarModule {}\r\n","/*\r\n * Public API Surface of components-ng\r\n */\r\n\r\nexport * from './Attachment/index';\r\nexport * from './Bubble/index';\r\nexport * from './FileList/index';\r\nexport * from './Header/index';\r\nexport * from './Input/index';\r\nexport * from './Introduction/index';\r\nexport * from './Layout/index';\r\nexport * from './List/index';\r\nexport * from './Locale/index';\r\nexport * from './MarkdownCard/index';\r\nexport * from './Mention/index';\r\nexport * from './Prompt/index';\r\nexport * from './Toolbar/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocaleService","i3","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/FileList/Teleport/teleport.component.ts","../../../projects/components-ng/src/components-common/FileList/foundation.ts","../../../projects/components-ng/src/FileList/FileIcon/file-icon.component.ts","../../../projects/components-ng/src/FileList/FileIcon/file-icon.component.html","../../../projects/components-ng/src/Locale/locale.module.ts","../../../projects/components-ng/src/Locale/index.ts","../../../projects/components-ng/src/FileList/file-list.component.ts","../../../projects/components-ng/src/FileList/file-list.component.html","../../../projects/components-ng/src/FileList/file-list.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/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/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/components-common/Layout/content-foundation.ts","../../../projects/components-ng/src/Layout/content/arrow-down/arrow-down.component.ts","../../../projects/components-ng/src/Layout/content/arrow-down/arrow-down.component.html","../../../projects/components-ng/src/Layout/content/arrow-up/arrow-up.component.ts","../../../projects/components-ng/src/Layout/content/arrow-up/arrow-up.component.html","../../../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/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/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/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/public-api.ts","../../../projects/components-ng/src/matechat-ng.ts"],"sourcesContent":["export default {\r\n Input: {\r\n send: '发送',\r\n pauseAnswer: '停止回答',\r\n pleaseEnter: '请输入您的问题...',\r\n pleaseEnterPlaceholder:\r\n '请输入您的问题,并按{enterKey}发送,按{shiftEnterKey}换行',\r\n ariaLabel: '输入框',\r\n },\r\n Md: {\r\n toggle: '收起/展开',\r\n copy: '复制',\r\n diagram: '图形',\r\n code: '代码',\r\n zoomIn: '放大',\r\n zoomOut: '缩小',\r\n downLoad: '下载',\r\n },\r\n Bubble: {\r\n ariaLabel: '聊天消息气泡',\r\n emptyAvatar: '无头像占位',\r\n userName: '用户名称: {name}',\r\n content: '消息内容',\r\n avatar: '用户头像: {name}',\r\n },\r\n Attachment: {\r\n dragToUpload: '拖拽到此处上传',\r\n },\r\n FileList: {\r\n uploadFailed: '上传失败',\r\n downloadFailed: '下载失败',\r\n retry: '重试',\r\n download: '下载',\r\n preview: '预览',\r\n uploading: '上传中...',\r\n downloading: '下载中...',\r\n remove: '删除',\r\n unsupportedPreview: '浏览器不支持预览此文件类型:{fileName}',\r\n tryDownload: '请尝试下载后查看',\r\n close: '关闭',\r\n },\r\n};\r\n","export default {\r\n Input: {\r\n send: 'Send',\r\n pauseAnswer: 'Stop',\r\n pleaseEnter: 'Please enter your question...',\r\n pleaseEnterPlaceholder:\r\n 'Please enter your question and press {enterKey} to send, {shiftEnterKey} to wrap.',\r\n ariaLabel: 'Input box',\r\n },\r\n Md: {\r\n toggle: 'Collapse/Expand',\r\n copy: 'Copy',\r\n diagram: 'Diagram',\r\n code: 'Code',\r\n zoomIn: 'Zoom In',\r\n zoomOut: 'Zoom Out',\r\n downLoad: 'Download',\r\n },\r\n Bubble: {\r\n ariaLabel: 'Chat message bubble',\r\n emptyAvatar: 'Empty avatar placeholder',\r\n userName: 'User name: {name}',\r\n content: 'Message content',\r\n avatar: 'User avatar: {name}',\r\n },\r\n Attachment: {\r\n dragToUpload: 'Drag to upload',\r\n },\r\n FileList: {\r\n uploadFailed: 'Upload failed',\r\n downloadFailed: 'Download failed',\r\n retry: 'Retry',\r\n download: 'Download',\r\n preview: 'Preview',\r\n uploading: 'Uploading...',\r\n downloading: 'Downloading...',\r\n remove: 'Remove',\r\n unsupportedPreview:\r\n 'Browser does not support previewing this file type: {fileName}',\r\n tryDownload: 'Please try downloading to view',\r\n close: 'Close',\r\n },\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport zhCN from '../components-common/Locale/lang/zh-cn';\r\nimport enUS from '../components-common/Locale/lang/en-us';\r\n\r\n// 定义语言包接口\r\nexport interface LocaleData {\r\n [key: string]: any;\r\n}\r\n\r\n// 定义支持的语言类型\r\nexport type LanguageCode = 'zh-cn' | 'en-us' | string;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocaleService {\r\n // 当前语言\r\n private _currentLanguage: LanguageCode = 'zh-cn';\r\n // 语言包存储\r\n private _localeData: Map<LanguageCode, LocaleData> = new Map();\r\n // 语言变更通知\r\n private _languageChange = new Subject<LanguageCode>();\r\n // 公开语言变更Observable\r\n languageChange$ = this._languageChange.asObservable();\r\n\r\n constructor() {\r\n // 首先尝试从localStorage获取语言设置\r\n const savedLang = localStorage.getItem('lang');\r\n if (savedLang) {\r\n this._currentLanguage = savedLang;\r\n }\r\n \r\n // 初始化默认语言包\r\n this.loadDefaultLocales();\r\n }\r\n\r\n /**\r\n * 加载默认语言包\r\n */\r\n private async loadDefaultLocales(): Promise<void> {\r\n try {\r\n // 动态导入默认语言包\r\n\r\n this._localeData.set('zh-cn', zhCN);\r\n this._localeData.set('en-us', enUS);\r\n } catch (error) {\r\n console.error('Failed to load default locales:', error);\r\n }\r\n }\r\n\r\n /**\r\n * 设置当前语言\r\n */\r\n setLanguage(language: LanguageCode): void {\r\n if (this._currentLanguage !== language) {\r\n this._currentLanguage = language;\r\n // 保存到localStorage\r\n localStorage.setItem('lang', language);\r\n this._languageChange.next(language);\r\n }\r\n }\r\n\r\n /**\r\n * 获取当前语言\r\n */\r\n getLanguage(): LanguageCode {\r\n return this._currentLanguage;\r\n }\r\n\r\n /**\r\n * 翻译文本\r\n * @param key 翻译键,支持嵌套路径如 'Input.send'\r\n * @param params 替换参数\r\n */\r\n translate(key: string, params?: { [key: string]: string | number }): string {\r\n if (!key) return key;\r\n\r\n // 获取当前语言的语言包\r\n const localeData = this._localeData.get(this._currentLanguage) || {};\r\n \r\n // 解析嵌套键\r\n const keys = key.split('.');\r\n let value: any = localeData;\r\n \r\n for (const k of keys) {\r\n if (value && typeof value === 'object' && k in value) {\r\n value = value[k];\r\n } else {\r\n // 如果键不存在,返回原始键\r\n return key;\r\n }\r\n }\r\n\r\n // 处理替换参数\r\n if (typeof value === 'string' && params) {\r\n let result = value;\r\n for (const [paramKey, paramValue] of Object.entries(params)) {\r\n const regex = new RegExp(`\\\\{${paramKey}\\\\}`, 'g');\r\n result = result.replace(regex, String(paramValue));\r\n }\r\n return result;\r\n }\r\n\r\n return value as string;\r\n }\r\n\r\n /**\r\n * 添加新的语言\r\n */\r\n addLanguage(language: LanguageCode, localeData: LocaleData): void {\r\n this._localeData.set(language, localeData);\r\n }\r\n\r\n /**\r\n * 覆盖现有语言的部分翻译\r\n */\r\n overrideLocale(language: LanguageCode, localeData: LocaleData): void {\r\n if (this._localeData.has(language)) {\r\n const existingLocale = this._localeData.get(language) || {};\r\n // 深度合并语言包\r\n const mergedLocale = this.deepMerge(existingLocale, localeData);\r\n this._localeData.set(language, mergedLocale);\r\n } else {\r\n // 如果语言不存在,则添加新语言\r\n this.addLanguage(language, localeData);\r\n }\r\n }\r\n\r\n /**\r\n * 获取所有支持的语言\r\n */\r\n getSupportedLanguages(): LanguageCode[] {\r\n return Array.from(this._localeData.keys());\r\n }\r\n\r\n /**\r\n * 深度合并对象\r\n */\r\n private deepMerge(target: any, source: any): any {\r\n const result = { ...target };\r\n \r\n for (const key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n if (source[key] instanceof Object && key in target) {\r\n result[key] = this.deepMerge(target[key], source[key]);\r\n } else {\r\n result[key] = source[key];\r\n }\r\n }\r\n }\r\n \r\n return result;\r\n }\r\n}","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\nimport { LocaleService } from './locale.service';\r\n\r\n/**\r\n * 翻译管道,用于在Angular模板中直接使用翻译功能\r\n * 用法:{{ 'Input.send' | translate }}\r\n * 带参数:{{ 'Input.pleaseEnterPlaceholder' | translate:{ enterKey: 'Enter', shiftEnterKey: 'Shift + Enter' } }}\r\n */\r\n@Pipe({\r\n name: 'translate',\r\n pure: false, // 设置为非纯管道,以便在语言变化时自动更新视图\r\n standalone: true // 标记为standalone,以便在standalone组件中直接使用\r\n})\r\n@Injectable()\r\nexport class TranslatePipe implements PipeTransform {\r\n constructor(private localeService: LocaleService) {}\r\n\r\n /**\r\n * 转换方法,实现PipeTransform接口\r\n * @param key 翻译键\r\n * @param params 替换参数\r\n */\r\n transform(key: string, params?: { [key: string]: string | number }): string {\r\n if (!key) return key;\r\n \r\n // 调用LocaleService的翻译方法\r\n return this.localeService.translate(key, params);\r\n }\r\n}","import type { FileItem, UploadOptions } from './attachment-types';\r\n\r\ninterface UploaderOptions {\r\n file: File;\r\n fileItem: FileItem;\r\n options: UploadOptions;\r\n onProgress: (percentage: number) => void;\r\n onSuccess: (response: unknown) => void;\r\n onError: (error: unknown) => void;\r\n}\r\n\r\nexport function upload(config: UploaderOptions): void {\r\n const { file, options, onProgress, onSuccess, onError } = config;\r\n\r\n const xhr = new XMLHttpRequest();\r\n\r\n // 进度回调\r\n xhr.upload.onprogress = (e: ProgressEvent) => {\r\n if (e.lengthComputable) {\r\n const percentage = Math.round((e.loaded * 100) / e.total);\r\n onProgress(percentage);\r\n }\r\n };\r\n\r\n // 错误处理\r\n xhr.onerror = () => {\r\n onError({\r\n message: 'Upload failed due to a network error.',\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n });\r\n };\r\n\r\n // 响应处理\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n const response =\r\n options.responseType === 'text' || !xhr.response\r\n ? xhr.responseText\r\n : xhr.response;\r\n onSuccess(response);\r\n } else {\r\n onError({\r\n message: `Upload failed with status: ${xhr.status}`,\r\n status: xhr.status,\r\n statusText: xhr.statusText,\r\n response: xhr.response,\r\n });\r\n }\r\n };\r\n\r\n // 准备 FormData\r\n const formData = new FormData();\r\n const fileFieldName = options.fileFieldName || 'file';\r\n formData.append(fileFieldName, file, file.name);\r\n\r\n if (options.additionalParameter) {\r\n for (const key of Object.keys(options.additionalParameter)) {\r\n formData.append(key, options.additionalParameter[key]);\r\n }\r\n }\r\n\r\n // 打开请求\r\n xhr.open(options.method || 'POST', options.uri, true);\r\n\r\n // 设置 withCredentials\r\n if (options.withCredentials) {\r\n xhr.withCredentials = true;\r\n }\r\n\r\n // 设置 responseType\r\n if (options.responseType) {\r\n xhr.responseType = options.responseType;\r\n }\r\n\r\n // 设置 Headers\r\n if (options.headers) {\r\n for (const key of Object.keys(options.headers)) {\r\n xhr.setRequestHeader(key, options.headers[key]);\r\n }\r\n }\r\n\r\n // 设置认证 Token\r\n if (options.authToken) {\r\n const authTokenHeader = options.authTokenHeader || 'Authorization';\r\n xhr.setRequestHeader(authTokenHeader, options.authToken);\r\n }\r\n\r\n // 发送请求\r\n xhr.send(formData);\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n Renderer2,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-drop-area',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './drop-area.component.html',\r\n styleUrls: ['./drop-area.component.scss'],\r\n})\r\nexport class DropAreaComponent implements AfterViewInit, OnDestroy {\r\n @Input() getDropContainer: () => HTMLElement;\r\n @Input() isDisabled: boolean = false;\r\n @Output() drop = new EventEmitter<File[]>();\r\n\r\n @ViewChild('dropArea') dropAreaEl!: ElementRef<HTMLDivElement>;\r\n\r\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef){}\r\n\r\n container: HTMLElement;\r\n isDragging = false;\r\n // 使用计数器来跟踪 dragenter 和 dragleave 事件,防止进入子元素导致的状态变化\r\n dragCounter = 0;\r\n dragEnterListener: () => void;\r\n dragOverListener: () => void;\r\n dragLeaveListener: () => void;\r\n dropListener: () => void;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['getDropContainer'] && this.getDropContainer) {\r\n const newContainer = this.getDropContainer();\r\n if (this.container !== newContainer) {\r\n this.container = newContainer;\r\n }\r\n }\r\n }\r\n\r\n handleDragEnter = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.dragCounter++;\r\n if (this.dragCounter === 1) {\r\n this.isDragging = true;\r\n this.cdr.detectChanges();\r\n }\r\n if (this.container && this.dropAreaEl.nativeElement) {\r\n if (this.container === document.body) {\r\n this.dropAreaEl.nativeElement.style.inset = '0';\r\n } else {\r\n const { x, y, width, height } = this.container.getBoundingClientRect();\r\n this.dropAreaEl.nativeElement.style.width = `${width}px`;\r\n this.dropAreaEl.nativeElement.style.height = `${height}px`;\r\n this.dropAreaEl.nativeElement.style.top = `${y}px`;\r\n this.dropAreaEl.nativeElement.style.left = `${x}px`;\r\n }\r\n }\r\n };\r\n handleDragOver = (e: DragEvent) => {\r\n e.preventDefault();\r\n };\r\n\r\n handleDragLeave = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.dragCounter--;\r\n if (this.dragCounter === 0) {\r\n this.isDragging = false;\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n handleDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.isDragging = false;\r\n this.cdr.detectChanges();\r\n this.dragCounter = 0; // 重置计数器\r\n if (this.isDisabled) return;\r\n\r\n const files = Array.from(e.dataTransfer?.files || []);\r\n if (files.length > 0) {\r\n this.drop.emit(files);\r\n }\r\n };\r\n onBodyDrop = (e: DragEvent) => {\r\n e.preventDefault();\r\n this.isDragging = false;\r\n this.cdr.detectChanges();\r\n this.dragCounter = 0;\r\n };\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.appendChild(document.body, this.dropAreaEl.nativeElement);\r\n if (this.getDropContainer) {\r\n this.container = this.getDropContainer();\r\n }\r\n this.dragEnterListener = this.renderer.listen(document.body, 'dragenter', this.handleDragEnter);\r\n this.dragOverListener = this.renderer.listen(document.body, 'dragover', this.handleDragOver);\r\n this.dragLeaveListener = this.renderer.listen(document.body, 'dragleave', this.handleDragLeave);\r\n this.dropListener = this.renderer.listen(document.body, 'drop', this.onBodyDrop);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dragEnterListener?.();\r\n this.dragOverListener?.();\r\n this.dragLeaveListener?.();\r\n this.dropListener?.();\r\n }\r\n}\r\n","<div\r\n #dropArea\r\n [ngClass]=\"{\r\n 'mc-attachment-drop-area': true,\r\n 'hide-drop-area': !isDragging,\r\n }\"\r\n (drop)=\"handleDrop($event)\"\r\n>\r\n <ng-content />\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ElementRef,\r\n ContentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslatePipe } from '../Locale/translate.pipe';\r\nimport type {\r\n UploadOptions,\r\n BeforeUpload,\r\n ChangeEventArg,\r\n SuccessEventArg,\r\n ErrorEventArg,\r\n ProgressEventArg,\r\n IValidResult,\r\n FileItem,\r\n} from './attachment-types';\r\nimport { upload } from '../components-common/Attachment/common/uploader';\r\nimport { DropAreaComponent } from './drop-area/drop-area.component';\r\n\r\n@Component({\r\n selector: 'mc-attachment',\r\n standalone: true,\r\n imports: [CommonModule, TranslatePipe, DropAreaComponent],\r\n templateUrl: './attachment.component.html',\r\n styleUrls: ['./attachment.component.scss'],\r\n})\r\nexport class AttachmentComponent {\r\n @Input() uploadOptions: UploadOptions = { uri: '' };\r\n @Input() disabled: boolean = false;\r\n @Input() accept: string = '';\r\n @Input() dropPlaceholder: string | undefined;\r\n @Input() maxCount: number = Number.POSITIVE_INFINITY;\r\n @Input() maxSize: number = Number.POSITIVE_INFINITY;\r\n @Input() multiple: boolean = true;\r\n @Input() draggable: boolean = true;\r\n @Input() beforeUpload: BeforeUpload;\r\n @Input() getDropContainer: () => HTMLElement;\r\n\r\n @Output() change = new EventEmitter<ChangeEventArg>();\r\n @Output() success = new EventEmitter<SuccessEventArg>();\r\n @Output() error = new EventEmitter<ErrorEventArg>();\r\n @Output() progress = new EventEmitter<ProgressEventArg>();\r\n @Output() drop = new EventEmitter<File[]>();\r\n @Output() validChange = new EventEmitter<IValidResult[]>();\r\n\r\n @ContentChild('dropPlaceholder')\r\n dropPlaceholderTemplate: TemplateRef<any> | null = null;\r\n\r\n @ViewChild('input') inputEl!: ElementRef<HTMLInputElement>;\r\n\r\n fileList: FileItem[] = [];\r\n uid = Date.now();\r\n\r\n get isDisabled() {\r\n return this.disabled || this.fileList.length >= this.maxCount;\r\n }\r\n\r\n onDrop(e: File[]) {\r\n this.uploadFiles(e);\r\n this.drop.emit(e);\r\n }\r\n\r\n getFileItem = (file: File): FileItem => {\r\n const localUrl = URL.createObjectURL(file);\r\n return {\r\n uid: this.uid++,\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n status: 'uploading',\r\n percentage: 0,\r\n url: localUrl,\r\n thumbUrl: localUrl,\r\n };\r\n };\r\n\r\n uploadFiles = async (files: File[]) => {\r\n if (files.length === 0) return;\r\n\r\n // 检查文件数量限制\r\n if (this.fileList.length + files.length > this.maxCount) {\r\n this.validChange.emit([{ type: 'exceedCount' }]);\r\n return;\r\n }\r\n\r\n const validFiles: File[] = [];\r\n const validRes: IValidResult[] = [];\r\n\r\n // 2. 遍历并校验每个文件\r\n for (const file of files) {\r\n let isFileValid = true;\r\n\r\n // 2.1 文件类型校验\r\n if (this.accept && this.accept !== '*') {\r\n const acceptedTypes = this.accept\r\n .split(',')\r\n .map((t) => t.trim().toLowerCase());\r\n const fileType = file.type.toLowerCase();\r\n const fileName = file.name.toLowerCase();\r\n const isTypeValid = acceptedTypes.some((type) => {\r\n if (type.endsWith('/*'))\r\n return fileType.startsWith(type.slice(0, -1));\r\n if (type.startsWith('.')) return fileName.endsWith(type);\r\n return fileType === type;\r\n });\r\n\r\n if (!isTypeValid) {\r\n validRes.push({ type: 'unsupportedFileType', file });\r\n isFileValid = false;\r\n }\r\n }\r\n\r\n // 2.2 文件大小校验\r\n if (isFileValid && file.size / 1024 / 1024 > this.maxSize) {\r\n validRes.push({ type: 'exceedSizeLimit', file });\r\n isFileValid = false;\r\n }\r\n\r\n // 2.3 上传前钩子校验\r\n if (isFileValid && this.beforeUpload) {\r\n try {\r\n const result = await Promise.resolve(this.beforeUpload(file));\r\n if (result === false) {\r\n validRes.push({ type: 'beforeUploadRejected', file });\r\n isFileValid = false;\r\n }\r\n } catch (e) {\r\n validRes.push({ type: 'beforeUploadRejected', file });\r\n isFileValid = false;\r\n }\r\n }\r\n\r\n if (isFileValid) {\r\n validFiles.push(file);\r\n }\r\n }\r\n\r\n if (validRes.length > 0) {\r\n this.validChange.emit(validRes);\r\n }\r\n\r\n // 只处理通过所有校验的有效文件\r\n if (validFiles.length === 0) return;\r\n\r\n for (const file of validFiles) {\r\n const fileItem = this.getFileItem(file);\r\n this.fileList.push(fileItem);\r\n this.change.emit({ file, fileList: [...this.fileList] });\r\n this.performUpload(file, fileItem);\r\n }\r\n };\r\n\r\n // 执行上传\r\n performUpload = (file: File, fileItem: FileItem) => {\r\n const findFileIndex = () =>\r\n this.fileList.findIndex((item) => item.uid === fileItem.uid);\r\n\r\n upload({\r\n file,\r\n fileItem,\r\n options: this.uploadOptions,\r\n onProgress: (percentage: number) => {\r\n const index = findFileIndex();\r\n if (index > -1) {\r\n this.fileList[index].percentage = percentage;\r\n this.progress.emit({ file, fileList: [...this.fileList] });\r\n }\r\n },\r\n onSuccess: (response: unknown) => {\r\n const index = findFileIndex();\r\n if (index > -1) {\r\n this.fileList[index].status = 'success';\r\n this.fileList[index].response = response;\r\n this.success.emit({ file, response, fileList: [...this.fileList] });\r\n }\r\n },\r\n onError: (error: unknown) => {\r\n const index = findFileIndex();\r\n if (index > -1) {\r\n this.fileList[index].status = 'uploadError';\r\n this.fileList[index].error = error;\r\n this.error.emit({ file, error, fileList: [...this.fileList] });\r\n }\r\n },\r\n });\r\n };\r\n\r\n handleFileChange = (e: Event) => {\r\n const files = (e.target as HTMLInputElement).files;\r\n if (files) {\r\n this.uploadFiles(Array.from(files));\r\n }\r\n };\r\n\r\n handleClick() {\r\n if (this.isDisabled) {\r\n return;\r\n }\r\n this.inputEl.nativeElement.click();\r\n }\r\n}\r\n","<div\r\n class=\"mc-attachment\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"{ 'is-disabled': isDisabled }\"\r\n>\r\n <ng-content></ng-content>\r\n <input\r\n #input\r\n type=\"file\"\r\n class=\"mc-attachment-file\"\r\n [accept]=\"accept\"\r\n [multiple]=\"multiple\"\r\n [disabled]=\"isDisabled\"\r\n (change)=\"handleFileChange($event)\"\r\n />\r\n <mc-drop-area\r\n *ngIf=\"draggable\"\r\n [getDropContainer]=\"getDropContainer\"\r\n [isDisabled]=\"isDisabled\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n <ng-container *ngIf=\"dropPlaceholderTemplate; else defaultFooterButton\">\r\n <ng-container\r\n *ngIf=\"dropPlaceholderTemplate; then dropPlaceholderTemplate\"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultFooterButton>\r\n {{ dropPlaceholder ?? (\"Attachment.dragToUpload\" | translate) }}\r\n </ng-template>\r\n </mc-drop-area>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AttachmentComponent } from './attachment.component';\r\nimport { DropAreaComponent } from './drop-area/drop-area.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, DropAreaComponent, AttachmentComponent],\r\n exports: [AttachmentComponent],\r\n})\r\nexport class AttachmentModule {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-bubble-loading',\r\n standalone: true,\r\n templateUrl: './bubble-loading.component.html',\r\n styleUrls: ['./bubble-loading.component.scss']\r\n})\r\nexport class BubbleLoadingComponent {\r\n\r\n}","<div class=\"mc-bubble-loading\">\r\n <div class=\"loading-dot dot-start\"></div>\r\n <div class=\"loading-dot dot-middle\"></div>\r\n <div class=\"loading-dot dot-end\"></div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-avatar-body-icon',\r\n standalone: true,\r\n templateUrl: './avatar-body-icon.component.html',\r\n styleUrls: ['./avatar-body-icon.component.scss']\r\n})\r\nexport class AvatarBodyIconComponent {\r\n @Input() width: number = 16;\r\n @Input() height: number = 16;\r\n}","<svg\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n style=\"vertical-align: middle;\"\r\n viewBox=\"0 0 30 30\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <circle id=\"Oval\" fill=\"#CACFD8\" cx=\"15\" cy=\"15\" r=\"15\"></circle>\r\n <path\r\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\"\r\n fill=\"#FFFFFF\"\r\n ></path>\r\n </g>\r\n</svg>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-avatar-no-body-icon',\r\n standalone: true,\r\n templateUrl: './avatar-no-body-icon.component.html',\r\n styleUrls: ['./avatar-no-body-icon.component.scss']\r\n})\r\nexport class AvatarNoBodyIconComponent {\r\n @Input() width: number = 16;\r\n @Input() height: number = 16;\r\n}","<svg\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n style=\"vertical-align: middle;\"\r\n viewBox=\"0 0 30 30\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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 \r\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 \r\n L22.31,19.2474562 Z M14.9297866,14.9974562 C12.4445053, 14.9974562 10.4297866,12.9827376 10.4297866,10.4974562 \r\n C10.4297866, 8.01217483 12.4445053,5.9974562 14.9297866,5.9974562 C17.415068, 5.9974562 19.4297866,8.01217483 \r\n 19.4297866,10.4974562 C19.4297866, 12.9827376 17.415068,14.9974562 14.9297866,14.9974562 Z M19.6797866, 20.2474562 \r\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 \r\n 17.9612467,15.983021 19.2414296, 16.7474562 L17.06,16.7474562 L17.06,20.2474562 L19.6797866,20.2474562 Z\"\r\n fill=\"#959EB2\"\r\n ></path>\r\n <path\r\n d=\"M0,15 L1,15 C1,15.6118966 1.03919561,16.2186526 1.11683409,\r\n 16.8178549 L0.125124012,16.9463505 C0.0425740367,16.309242 0,\r\n 15.6595925 0,15 Z M0.503241262,18.867175 L1.46961749,18.6100428 C1.62594651,\r\n 19.1975718 1.8203704,19.7729973 2.05141295,20.3332823 L1.12693074,\r\n 20.7145074 C0.880599065,20.1171459 0.67172715,19.500393 0.503241262,\r\n 18.867175 Z M1.99122134,22.4730778 L2.85786221,21.9741453 C3.16078316,\r\n 22.5003161 3.49772502,23.0063252 3.86631639,23.4889602 L3.0715754,\r\n 24.0959089 C2.6777461,23.5802273 2.31659753,23.0382531 1.99122134,\r\n 22.4730778 Z M4.38894559,25.6021078 L5.09634867,24.8952974 C5.52582519,\r\n 25.3251341 5.98272136,25.7268214 6.46397085,26.0975793 L5.85367498,\r\n 26.8897529 C5.33779918,26.4923186 4.84851395,26.0620615 4.38894559,\r\n 25.6021078 Z M7.4424647,27.9597887 L7.94703323,27.096417 C8.47111119,\r\n 27.4026968 9.0146817,27.6746032 9.57453904,27.9101878 L9.18668461,\r\n 28.8319084 C8.58423501,28.5784013 8.00181692,28.2866833 7.4424647,\r\n 27.9597887 Z M11.0671021,29.4791103 L11.3286494,28.5139196 C11.9126912,\r\n 28.6721832 12.5080563,28.7925378 13.1119738,28.8738935 L12.9784667,\r\n 29.8649413 C12.3271613,29.7772019 11.6891102,29.647662 11.0671021,\r\n 29.4791103 Z M15,30 C14.9951965,30 14.9903936,29.9999977 14.9855912,\r\n 30 L14.9865313,28.9999937 C14.9929361,28.9999987 14.9929361,\r\n 28.9999987 14.999296,29 C15.6071552,29 16.2093364,28.9614092 16.8041774,\r\n 28.8849313 L16.9316965,29.8767674 C16.2992813,29.9580762 15.6545362,\r\n 30 15,30 Z M18.8545762,29.5001051 L18.5982903,28.5335041 C19.1860387,\r\n 28.3776677 19.7617059,28.1837179 20.3222555,27.9531286 L20.7026875,\r\n 28.8779375 C20.1050484,29.123784 19.4880358,29.3321488 18.8545762,\r\n 29.5001051 Z M22.4608087,28.0158343 L21.9626951,27.1487226 C22.4893928,\r\n 26.8461604 22.9959399,26.5095265 23.479119,26.1411926 L24.0853678,\r\n 26.9364676 C23.5691101,27.3300178 23.0265585,27.6908386 22.4608087,\r\n 28.0158343 Z M25.5921583,25.6209863 L24.8860071,24.9129252 C25.3161421,\r\n 24.4839504 25.7181674,24.0275419 26.0893023,23.5467621 L26.8808873,\r\n 24.1578212 C26.4830546,24.6731862 26.0524368,25.1619493 25.5921583,\r\n 25.6209863 Z M27.9526445,22.5697466 L27.0897495,22.0643633 C27.3964738,\r\n 21.5406601 27.6688549,20.9974409 27.904942,20.4379104 L28.8262855,\r\n 20.8266601 C28.5722411,21.4287497 28.2800163,22.0107897 27.9526445,\r\n 22.5697466 Z M29.4756977,18.9454696 L28.5107363,18.6830777 C28.6695136,\r\n 18.099165 28.7903877,17.5039035 28.8722662,16.9000659 L29.8631978,\r\n 17.0344333 C29.7748946,17.6856516 29.6447979,18.3235936 29.4756977,\r\n 18.9454696 Z M30,15 C30,15.0093541 29.9999914,15.0187063 29.9999743,\r\n 15.0280564 L28.999976,15.0262257 C28.9999956,15.0134169 28.9999956,\r\n 15.0134169 29,15.0006466 C29,14.3970304 28.9619395,13.7989704 28.8865088,\r\n 13.208136 L29.8784576,13.0814959 C29.9586571,13.7096843 30,14.3500145 30,\r\n 15 Z M29.5038108,11.1594275 L28.5369608,11.4147728 C28.3816616,\r\n 10.8267413 28.1882232,10.2507676 27.9581175,9.68988857 L28.8832852,\r\n 9.31033004 C29.1286141,9.90831524 29.3364318,10.5256569 29.5038108,\r\n 11.1594275 Z M28.0228788,7.55146763 L27.1552968,8.0487618 C26.853241,\r\n 7.52179373 26.5170958,7.0149453 26.1492295,6.53143425 L26.9450761,\r\n 5.92593594 C27.3381231,6.44254364 27.6984223,6.98541919 28.0228788,\r\n 7.55146763 Z M25.6309089,4.41780044 L24.9221905,5.12329189 C24.4935639,\r\n 4.69270467 24.0374698,4.2902078 23.5569705,3.9185855 L24.1687554,\r\n 3.12756133 C24.6838129,3.52591118 25.1722392,3.95703271 25.6309089,\r\n 4.41780044 Z M22.5819506,2.05451093 L22.0757531,2.91692851 C21.5523008,\r\n 2.60968727 21.0092999,2.33677531 20.4499564,2.10014728 L20.8395722,\r\n 1.17916981 C21.4414531,1.43379309 22.0232574,1.72658499 22.5819506,\r\n 2.05451093 Z M18.9594329,0.528106464 L18.696103,1.4928123 C18.1122842,\r\n 1.33345081 17.517086,1.21199245 16.9132846,1.12953261 L17.0485964,\r\n 0.138729543 C17.6997753,0.227659622 18.3376514,0.358382523 18.9594329,\r\n 0.528106464 Z M15,-1.11022302e-16 C15.0139048,-1.11022302e-16 15.0278052,\r\n 1.892004e-05 15.0417011,5.673578e-05 L15.0389797,1.00005303 C15.0197685,\r\n 1.00000934 15.0197685,1.00000934 15.0005868,1.00000001 C14.4012162,\r\n 1 13.8072783,1.03753392 13.2204527,1.11192427 L13.0946918,0.119863691 C13.7186509,\r\n 0.0407660189 14.3545651,-1.11022302e-16 15,-1.11022302e-16 Z M11.1720354,\r\n 0.492865376 L11.4265338,1.45993857 C10.8386468,1.61464899 10.2627801,\r\n 1.80746996 9.70196444,2.03693489 L9.32327455,1.11141127 C9.92118954,\r\n 0.86676666 10.5384173,0.659610554 11.1720354,0.492865376 Z M7.56375123,\r\n 1.97008801 L8.06022548,2.83813946 C7.53298826,3.13968806 7.02583975,\r\n 3.47534367 6.54199783,3.84274131 L5.93725081,3.04632368 C6.4542073,\r\n 2.65378102 6.99740556,2.29400434 7.56375123,1.97008801 Z M4.42776842,\r\n 4.35917772 L5.13259949,5.06855291 C4.70156141,5.49682984 4.29859416,\r\n 5.95260763 3.92648544,6.43282469 L3.13602297,5.82031423 C3.53488885,\r\n 5.30556625 3.96651291,4.81747851 4.42776842,4.35917772 Z M2.0616775,\r\n 7.40585279 L2.92361696,7.91286401 C2.61586086,8.43606175 2.34241977,\r\n 8.97884042 2.10525197,9.53799293 L1.18464153,9.14751063 C1.43984243,\r\n 8.54584288 1.73319965,7.96427837 2.0616775,7.40585279 Z M0.531541456,\r\n 11.0280046 L1.49601653,11.2921785 C1.33614878,11.8758413 1.21417484,\r\n 12.4709081 1.13119244,13.074601 L0.140507978,12.9384235 C0.230001486,12.2873626 0.361276825,11.6496255 0.531541456,11.0280046 Z\"\r\n fill=\"#CACFD8\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n</svg>","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AvatarBodyIconComponent } from '../avatar-body-icon/avatar-body-icon.component';\r\nimport { AvatarNoBodyIconComponent } from '../avatar-no-body-icon/avatar-no-body-icon.component';\r\nimport { TranslatePipe } from '../../Locale/translate.pipe';\r\n\r\n@Component({\r\n selector: 'mc-avatar',\r\n standalone: true,\r\n imports: [CommonModule, AvatarBodyIconComponent, AvatarNoBodyIconComponent, TranslatePipe],\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss']\r\n})\r\nexport class AvatarComponent implements OnInit, OnChanges {\r\n @Input() imgSrc: string = '';\r\n @Input() name: string = '';\r\n @Input() width: number = 36;\r\n @Input() height: number = 36;\r\n @Input() isRound: boolean = true;\r\n @Input() gender: string = '';\r\n\r\n isErrorImg: boolean = false;\r\n isNobody: boolean = true;\r\n code: number = 1;\r\n fontSize: number = 12;\r\n nameDisplay: string = '';\r\n\r\n ngOnInit(): void {\r\n this.calcValues(this.name);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['name'] || changes['width'] || changes['height'] || changes['gender']) {\r\n this.calcValues(this.name);\r\n }\r\n }\r\n\r\n onErrorImg(): void {\r\n this.isErrorImg = true;\r\n }\r\n\r\n private getBackgroundColor(char: string): void {\r\n if (this.gender) {\r\n if (this.gender.toLowerCase() === 'male') {\r\n this.code = 1;\r\n } else if (this.gender.toLowerCase() === 'female') {\r\n this.code = 0;\r\n }\r\n return;\r\n }\r\n const unicode = char.charCodeAt(0);\r\n this.code = unicode % 2;\r\n }\r\n\r\n private setDisplayName(nameValue: string, widthValue: number): void {\r\n if (!nameValue) {\r\n this.nameDisplay = '';\r\n return;\r\n }\r\n\r\n if (nameValue.length < 2) {\r\n this.nameDisplay = nameValue;\r\n } else {\r\n // 以中文开头显示最后两个字符\r\n if (/^[\\u4e00-\\u9fa5]/.test(nameValue)) {\r\n this.nameDisplay = nameValue.substr(nameValue.length - 2, 2);\r\n // 英文开头\r\n } else if (/^[A-Za-z]/.test(nameValue)) {\r\n // 含有两个及以上,包含空格,下划线,中划线分隔符的英文名取前两个字母的首字母\r\n if (/[_ -]/.test(nameValue)) {\r\n const parts = nameValue.split(/_|-|\\s+/);\r\n if (parts.length >= 2) {\r\n this.nameDisplay = parts[0].substr(0, 1).toUpperCase() + parts[1].substr(0, 1).toUpperCase();\r\n } else {\r\n this.nameDisplay = nameValue.substr(0, 2).toUpperCase();\r\n }\r\n } else {\r\n // 一个英文名的情况显示前两个字母\r\n this.nameDisplay = nameValue.substr(0, 2).toUpperCase();\r\n }\r\n } else {\r\n // 非中英文开头默认取前两个字符\r\n this.nameDisplay = nameValue.substr(0, 2);\r\n }\r\n }\r\n if (widthValue < 30) {\r\n this.nameDisplay = nameValue.substr(0, 1).toUpperCase();\r\n }\r\n this.getBackgroundColor(nameValue.substr(0, 1));\r\n }\r\n\r\n private calcValues(nameInput: string): void {\r\n const userName = nameInput;\r\n const minNum = Math.min(this.width, this.height);\r\n if (userName) {\r\n this.isNobody = false;\r\n this.setDisplayName(userName, minNum);\r\n } else if (userName === '') {\r\n this.isNobody = false;\r\n this.nameDisplay = '';\r\n } else {\r\n this.isNobody = true;\r\n }\r\n this.fontSize = minNum / 4 + 3;\r\n }\r\n}","<span class=\"mc-bubble-avatar-wrapper\">\r\n <img\r\n *ngIf=\"imgSrc && !isErrorImg\"\r\n [src]=\"imgSrc\"\r\n [attr.alt]=\"'Bubble.avatar' | translate:{ name: name }\"\r\n (error)=\"onErrorImg()\"\r\n [ngStyle]=\"{\r\n height: height + 'px',\r\n width: width + 'px',\r\n borderRadius: isRound ? '100%' : '0'\r\n }\"\r\n />\r\n <span\r\n *ngIf=\"!imgSrc && !isNobody && nameDisplay?.length !== 0\"\r\n [ngClass]=\"['mc-bubble-avatar-style', 'mc-bubble-avatar-background-' + code]\"\r\n [ngStyle]=\"{\r\n height: height + 'px',\r\n width: width + 'px',\r\n lineHeight: height + 'px',\r\n fontSize: fontSize + 'px',\r\n borderRadius: isRound ? '100%' : '0'\r\n }\"\r\n >\r\n {{ nameDisplay }}\r\n </span>\r\n <span\r\n *ngIf=\"!imgSrc && !isNobody && nameDisplay?.length === 0\"\r\n class=\"mc-bubble-avatar-style\"\r\n [ngStyle]=\"{ borderRadius: isRound ? '100%' : '0' }\"\r\n >\r\n <mc-avatar-body-icon [width]=\"width\" [height]=\"height\" />\r\n </span>\r\n <span\r\n *ngIf=\"(!imgSrc && isNobody) || (imgSrc && isErrorImg)\"\r\n class=\"mc-bubble-avatar-style\"\r\n [ngStyle]=\"{ borderRadius: isRound ? '100%' : '0' }\"\r\n >\r\n <mc-avatar-no-body-icon [width]=\"width\" [height]=\"height\" />\r\n </span>\r\n</span>","export const DEFAULT_AVATAR_WIDTH = 36;\r\nexport const DEFAULT_AVATAR_HEIGHT = 36;\r\nexport const AVATAR_NAME = 'name';\r\nexport const AVATAR_IMG = 'imgSrc';\r\n","const noop = () => {};\r\nexport type noopFunction = (...args: any) => any;\r\n\r\nexport interface DefaultAdapter {\r\n getProp(key: string): any;\r\n getProps(): any;\r\n getState(key: string): any;\r\n getStates(): any;\r\n setState(s: any, callback?: any): void;\r\n getCache(c: string): any;\r\n getCaches(): any;\r\n setCache(key: any, value: any): void;\r\n nextTick(cb: (...args: any) => void): void;\r\n}\r\n\r\nclass BaseFoundation<T extends DefaultAdapter> {\r\n static get cssClasses() {\r\n return {};\r\n }\r\n\r\n static get strings() {\r\n return {};\r\n }\r\n\r\n static get numbers() {\r\n return {};\r\n }\r\n\r\n static get defaultAdapter() {\r\n return {\r\n getProp: noop,\r\n getProps: noop,\r\n getState: noop,\r\n getStates: noop,\r\n setState: noop,\r\n getContext: noop,\r\n getContexts: noop,\r\n getCache: noop,\r\n setCache: noop,\r\n getCaches: noop,\r\n stopPropagation: noop,\r\n };\r\n }\r\n\r\n _adapter!: T;\r\n\r\n constructor(adapter: T) {\r\n this._adapter = { ...BaseFoundation.defaultAdapter, ...adapter };\r\n }\r\n\r\n getProp(key: string) {\r\n return this._adapter.getProp(key);\r\n }\r\n\r\n getProps(): any {\r\n return this._adapter.getProps() as any;\r\n }\r\n\r\n getState(key: string) {\r\n return this._adapter.getState(key);\r\n }\r\n\r\n getStates(): any {\r\n return this._adapter.getStates();\r\n }\r\n\r\n setState(states: any, cb?: (...args: any) => void) {\r\n return this._adapter.setState({ ...states }, cb);\r\n }\r\n\r\n /* istanbul ignore next */\r\n getCaches() {\r\n return this._adapter.getCaches();\r\n }\r\n\r\n getCache(key: string) {\r\n return this._adapter.getCache(key);\r\n }\r\n\r\n setCache(key: string, value: any) {\r\n return key && this._adapter.setCache(key, value);\r\n }\r\n\r\n nextTick(cb: (...args: any) => void) {\r\n return this._adapter.nextTick(cb);\r\n }\r\n\r\n _isInProps(key: string) {\r\n const props = this.getProps();\r\n return key in (props as any);\r\n }\r\n\r\n init(lifecycle?: any) {}\r\n\r\n destroy() {}\r\n}\r\nexport default BaseFoundation;\r\n","import { AVATAR_NAME, AVATAR_IMG } from \"./common/bubble-constants\";\r\nimport { BubbleAvatar, BubbleAlign } from \"./common/bubble-types\";\r\nimport BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\r\n\r\nexport interface BubbleAdapter extends DefaultAdapter {}\r\n\r\nexport class BubbleFoundation extends BaseFoundation<BubbleAdapter> {\r\n constructor(adapter: BubbleAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getBubbleClasses() {\r\n const { align, loading, isEmptyAvatar, avatarPosition } = this.getProps();\r\n return [\r\n `mc-bubble-avatar-${avatarPosition}`,\r\n `mc-bubble-${align}`,\r\n loading ? \"mc-bubble-loading\" : \"\",\r\n isEmptyAvatar ? \"mc-bubble-avatar-empty\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n }\r\n\r\n getIsEmptyAvatar(avatarConfig: BubbleAvatar | undefined) {\r\n if (avatarConfig) {\r\n // 传了 avatarConfig,但是没有 name 和 imgSrc 时表示头像区域仅占位\r\n const keys = Object.keys(avatarConfig);\r\n const shouldShow = keys.some(\r\n (k) => k === AVATAR_NAME || k === AVATAR_IMG\r\n );\r\n return keys.length < 1 || !shouldShow;\r\n } else {\r\n return true;\r\n }\r\n }\r\n}\r\n","import BaseFoundation, { DefaultAdapter } from '../components-common/Base/foundation';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mate-base-component',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport default class BaseComponent<T extends BaseFoundation<DefaultAdapter>> {\r\n foundation: T;\r\n cache: any;\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.foundation &&\r\n typeof this.foundation.destroy === 'function' &&\r\n this.foundation.destroy();\r\n }\r\n\r\n get adapter(): DefaultAdapter {\r\n return {\r\n getProp: (key: string) => {\r\n return this[key];\r\n },\r\n getProps: () => {\r\n return this;\r\n },\r\n setState: (states, cb) => {\r\n for (const key in states) {\r\n if (states.hasOwnProperty(key)) {\r\n this[key] = states[key];\r\n }\r\n cb && cb();\r\n }\r\n },\r\n getState: (key) => this[key],\r\n getStates: () => this,\r\n getCache: (key) => key && this.cache[key],\r\n getCaches: () => this.cache,\r\n setCache: (key, value) => key && (this.cache[key] = value),\r\n nextTick: (cb) => setTimeout(cb, 0),\r\n };\r\n }\r\n}\r\n","import { Component, Input, computed, ContentChild, TemplateRef, ContentChildren, QueryList } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { DEFAULT_AVATAR_WIDTH, DEFAULT_AVATAR_HEIGHT, AVATAR_NAME, AVATAR_IMG } from '../components-common/Bubble/common/bubble-constants';\r\nimport { BubbleAlign, BubbleVariant, AvatarPosition, BubbleAvatar } from '../components-common//Bubble/common/bubble-types';\r\nimport { BubbleAdapter, BubbleFoundation } from '../components-common/Bubble/foundation';\r\nimport BaseComponent from '../Base/base.component';\r\nimport { TranslatePipe } from '../Locale/translate.pipe';\r\n\r\n@Component({\r\n selector: 'mc-bubble',\r\n standalone: true,\r\n imports: [CommonModule, BubbleLoadingComponent, AvatarComponent, TranslatePipe],\r\n templateUrl: './bubble.component.html',\r\n styleUrls: ['./bubble.component.scss']\r\n})\r\nexport class BubbleComponent extends BaseComponent<BubbleFoundation> {\r\n // 组件属性\r\n @Input() content: string = '';\r\n @Input() loading: boolean = false;\r\n @Input() align: BubbleAlign = 'left';\r\n @Input() avatarPosition: AvatarPosition = 'side';\r\n @Input() variant: BubbleVariant = 'filled';\r\n @Input() avatarConfig?: BubbleAvatar;\r\n\r\n // 内容投影模板引用\r\n @ContentChild('avatar') avatarTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('top') topTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('loadingTpl') loadingTplTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('bottom') bottomTemplate: TemplateRef<any> | null = null;\r\n \r\n // 检测是否有内容投影\r\n @ContentChildren('ng-content') contentChildren: QueryList<any>;\r\n \r\n // 计算是否有内容投影\r\n get ngContentProjected(): boolean {\r\n return this.contentChildren && this.contentChildren.length > 0;\r\n }\r\n \r\n constructor() { super(); }\r\n\r\n ngOnInit() {\r\n this.foundation = new BubbleFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): BubbleAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n content: this.content,\r\n loading: this.loading,\r\n align: this.align,\r\n avatarPosition: this.avatarPosition,\r\n variant: this.variant,\r\n avatarConfig: this.avatarConfig,\r\n }),\r\n }\r\n }\r\n\r\n // 计算属性\r\n get bubbleClasses(): string {\r\n return this.foundation.getBubbleClasses();\r\n };\r\n\r\n get isEmptyAvatar(): boolean {\r\n return this.foundation.getIsEmptyAvatar(this.avatarConfig);\r\n };\r\n}\r\n","<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\r\n <!-- 自定义头像区域 -->\r\n <div *ngIf=\"avatarTemplate\" class=\"mc-bubble-avatar\" role=\"img\">\r\n <ng-container *ngTemplateOutlet=\"avatarTemplate\"></ng-container>\r\n <ng-content select=\"[avatar]\"></ng-content>\r\n </div>\r\n \r\n <!-- 默认头像配置 -->\r\n <div *ngIf=\"!avatarTemplate && avatarConfig\"\r\n class=\"mc-bubble-avatar\" role=\"img\"\r\n [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\r\n >\r\n <mc-avatar\r\n *ngIf=\"!isEmptyAvatar\"\r\n [imgSrc]=\"avatarConfig?.imgSrc || ''\"\r\n [name]=\"avatarConfig?.name || ''\"\r\n [width]=\"avatarConfig?.width || 36\"\r\n [height]=\"avatarConfig?.height || 36\"\r\n [gender]=\"avatarConfig?.gender || ''\"\r\n />\r\n <div *ngIf=\"isEmptyAvatar\" class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\r\n [style.width.px]=\"avatarConfig?.width || 36\"\r\n [style.height.px]=\"avatarConfig?.height || 36\"></div>\r\n <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\r\n avatarConfig?.displayName\r\n }}</span>\r\n </div>\r\n <div\r\n class=\"mc-bubble-content-container\" aria-live=\"polite\"\r\n [ngClass]=\"{ 'with-avatar': avatarTemplate || avatarConfig }\"\r\n >\r\n <!-- 顶部内容投影 -->\r\n <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\r\n <ng-content select=\"[top]\"></ng-content>\r\n </ng-container>\r\n \r\n <!-- 加载状态 -->\r\n <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\r\n <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\r\n <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\r\n <ng-content select=\"[loadingTpl]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultLoadingTemplate>\r\n <mc-bubble-loading></mc-bubble-loading>\r\n </ng-template>\r\n </div>\r\n \r\n <!-- 主要内容 -->\r\n <div\r\n *ngIf=\"!loading\"\r\n class=\"mc-bubble-content\"\r\n [ngClass]=\"[variant]\"\r\n role=\"region\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"content && !ngContentProjected\">\r\n <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\r\n </ng-container>\r\n </div>\r\n \r\n <!-- 底部内容投影 -->\r\n <ng-container *ngIf=\"!loading\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\r\n <ng-content select=\"[bottom]\"></ng-content>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BubbleComponent } from './bubble.component';\r\nimport { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n BubbleComponent,\r\n BubbleLoadingComponent,\r\n AvatarComponent\r\n ],\r\n exports: [\r\n BubbleComponent,\r\n BubbleLoadingComponent,\r\n AvatarComponent\r\n ]\r\n})\r\nexport class BubbleModule { }","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-teleport',\r\n standalone: true,\r\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\r\n styles: [''],\r\n})\r\nexport class McTeleportComponent implements OnInit, OnDestroy {\r\n @Input() to: string | Element;\r\n\r\n @ViewChild('content', { static: true }) contentTemplate: TemplateRef<any>;\r\n\r\n private insertedElements: Node[] = [];\r\n private targetElement: Element | null = null;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.targetElement = this.getTargetElement();\r\n if (this.targetElement && this.contentTemplate) {\r\n this.teleportContent();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeContent();\r\n }\r\n\r\n private getTargetElement(): Element | null {\r\n if (typeof this.to === 'string') {\r\n if (this.to === 'body') {\r\n return document.body;\r\n }\r\n return document.querySelector(this.to);\r\n }\r\n return this.to as Element;\r\n }\r\n\r\n private teleportContent(): void {\r\n if (!this.targetElement || !this.contentTemplate) return;\r\n\r\n // 创建一个注释节点作为标记\r\n const startComment = this.renderer.createComment('mc-teleport-start');\r\n const endComment = this.renderer.createComment('mc-teleport-end');\r\n\r\n // 将注释节点添加到目标位置\r\n this.renderer.appendChild(this.targetElement, startComment);\r\n this.renderer.appendChild(this.targetElement, endComment);\r\n\r\n // 保存插入的节点\r\n this.insertedElements.push(startComment, endComment);\r\n\r\n // 使用 ViewContainerRef 创建嵌入式视图\r\n const viewRef = this.viewContainerRef.createEmbeddedView(\r\n this.contentTemplate,\r\n );\r\n\r\n // 将视图的根节点移动到目标位置\r\n viewRef.rootNodes.forEach((node) => {\r\n this.renderer.insertBefore(this.targetElement!, node, endComment);\r\n this.insertedElements.push(node);\r\n });\r\n }\r\n\r\n private removeContent(): void {\r\n // 移除所有插入的节点\r\n this.insertedElements.forEach((node) => {\r\n if (node.parentNode) {\r\n this.renderer.removeChild(node.parentNode, node);\r\n }\r\n });\r\n\r\n // 清空插入的节点列表\r\n this.insertedElements = [];\r\n\r\n // 清空视图容器\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\nimport {\r\n type FileItem,\r\n FileListContext,\r\n type PreviewType,\r\n} from './common/fileList-types';\r\n\r\nexport interface FileListAdapter extends DefaultAdapter {\r\n emitRemove: (uid: number) => void;\r\n emitRetryUpload: (uid: number) => void;\r\n emitPreview: (file: FileItem) => void;\r\n emitDownload: (file: FileItem) => void;\r\n emitRetryDownload: (uid: number) => void;\r\n updateFileItem: (uid: number, updates: Partial<FileItem>) => void;\r\n}\r\n\r\nexport class FileListFoundation extends BaseFoundation<FileListAdapter> {\r\n constructor(adapter: FileListAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 B';\r\n const k = 1024;\r\n const sizes = ['B', 'KB', 'MB', 'GB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / k ** i).toFixed(2)) + ' ' + sizes[i];\r\n }\r\n\r\n getFileType(name: string): string {\r\n const ext = name.split('.').pop()?.toLowerCase();\r\n if (!ext) return 'file';\r\n\r\n const imageExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'];\r\n const videoExts = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm'];\r\n const audioExts = ['mp3', 'wav', 'ogg', 'flac', 'aac'];\r\n const docExts = ['doc', 'docx', 'txt', 'pdf', 'rtf', 'md'];\r\n const sheetExts = ['xls', 'xlsx', 'csv'];\r\n const pptExts = ['ppt', 'pptx'];\r\n const codeExts = [\r\n 'js',\r\n 'ts',\r\n 'jsx',\r\n 'tsx',\r\n 'html',\r\n 'css',\r\n 'scss',\r\n 'json',\r\n 'xml',\r\n 'yml',\r\n 'yaml',\r\n ];\r\n const archiveExts = ['zip', 'rar', '7z', 'tar', 'gz'];\r\n\r\n if (imageExts.includes(ext)) return 'image';\r\n if (videoExts.includes(ext)) return 'video';\r\n if (audioExts.includes(ext)) return 'audio';\r\n if (docExts.includes(ext)) return 'document';\r\n if (sheetExts.includes(ext)) return 'spreadsheet';\r\n if (pptExts.includes(ext)) return 'presentation';\r\n if (codeExts.includes(ext)) return 'code';\r\n if (archiveExts.includes(ext)) return 'archive';\r\n\r\n return 'file';\r\n }\r\n\r\n getPreviewType(file: FileItem): PreviewType {\r\n const name = file.name;\r\n const ext = name.split('.').pop()?.toLowerCase();\r\n if (!ext) return 'unsupported';\r\n\r\n const imageExts = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];\r\n const videoExts = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm'];\r\n const iframeExts = ['pdf', 'html'];\r\n\r\n if (imageExts.includes(ext)) return 'image';\r\n if (videoExts.includes(ext)) return 'video';\r\n if (iframeExts.includes(ext)) return 'iframe';\r\n\r\n return 'unsupported';\r\n }\r\n\r\n handleRemove(uid: number): void {\r\n this._adapter.emitRemove(uid);\r\n }\r\n\r\n handleRetryUpload(uid: number): void {\r\n this._adapter.emitRetryUpload(uid);\r\n }\r\n\r\n handlePreview(file: FileItem): void {\r\n this._adapter.emitPreview(file);\r\n }\r\n\r\n handleDownload(file: FileItem): void {\r\n this._adapter.emitDownload(file);\r\n }\r\n\r\n handleRetryDownload(uid: number): void {\r\n this._adapter.emitRetryDownload(uid);\r\n }\r\n\r\n handleMouseEnter(uid: number): void {\r\n this._adapter.updateFileItem(uid, { isHovered: true });\r\n }\r\n\r\n handleMouseLeave(uid: number): void {\r\n this._adapter.updateFileItem(uid, { isHovered: false });\r\n }\r\n\r\n getIconComponent(file: FileItem): string {\r\n if (file.type) {\r\n if (file.type?.startsWith('image/')) return 'image-icon';\r\n if (file.type?.startsWith('video/')) return 'mp4-icon';\r\n if (file.type?.startsWith('audio/')) return 'mp4-icon';\r\n if (file.type?.startsWith('text/')) return 'document-icon';\r\n if (file.type === 'application/pdf') return 'pdf-icon';\r\n if (file.type === 'application/zip' || file.type?.includes('compress'))\r\n return 'compressed-file-icon';\r\n }\r\n const extension = file.name.split('.').pop()?.toLowerCase();\r\n\r\n const extensionMap: Record<string, string> = {\r\n // Office & Documents\r\n ppt: 'ppt-icon',\r\n pptx: 'ppt-icon',\r\n pdf: 'pdf-icon',\r\n doc: 'document-icon',\r\n docx: 'document-icon',\r\n xls: 'excel-icon',\r\n xlsx: 'excel-icon',\r\n csv: 'excel-icon',\r\n txt: 'document-icon',\r\n rtf: 'document-icon',\r\n page: 'page-icon',\r\n md: 'markdown-icon',\r\n markdown: 'markdown-icon',\r\n // Image\r\n jpg: 'image-icon',\r\n jpeg: 'image-icon',\r\n png: 'image-icon',\r\n gif: 'image-icon',\r\n webp: 'image-icon',\r\n svg: 'image-icon',\r\n bmp: 'image-icon',\r\n // Video\r\n mp4: 'mp4-icon',\r\n avi: 'mp4-icon',\r\n mov: 'mp4-icon',\r\n wmv: 'mp4-icon',\r\n flv: 'mp4-icon',\r\n webm: 'mp4-icon',\r\n mkv: 'mp4-icon',\r\n // Audio\r\n mp3: 'mp4-icon',\r\n wav: 'mp4-icon',\r\n ogg: 'mp4-icon',\r\n flac: 'mp4-icon',\r\n aac: 'mp4-icon',\r\n // Code\r\n js: 'code-file-icon',\r\n ts: 'code-file-icon',\r\n jsx: 'code-file-icon',\r\n tsx: 'code-file-icon',\r\n html: 'code-file-icon',\r\n css: 'code-file-icon',\r\n scss: 'code-file-icon',\r\n less: 'code-file-icon',\r\n json: 'code-file-icon',\r\n yaml: 'code-file-icon',\r\n yml: 'code-file-icon',\r\n xml: 'code-file-icon',\r\n // Compressed\r\n zip: 'compressed-file-icon',\r\n rar: 'compressed-file-icon',\r\n '7z': 'compressed-file-icon',\r\n tar: 'compressed-file-icon',\r\n gz: 'compressed-file-icon',\r\n // Other\r\n mind: 'mind-icon',\r\n board: 'drawing-board-icon',\r\n flow: 'flow-chart-icon',\r\n email: 'email-file-icon',\r\n };\r\n\r\n return extensionMap[extension || ''] || 'unknown-icon';\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, type OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-file-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './file-icon.component.html',\r\n styleUrls: ['./file-icon.component.scss'],\r\n})\r\nexport class McFileIconComponent implements OnInit {\r\n @Input() iconType: string = 'unknown-icon';\r\n @Input() size: number | string = 36;\r\n @Input() title?: string;\r\n @Input() customClass?: string;\r\n\r\n get className(): string {\r\n return this.customClass || '';\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log('iconType', this.iconType);\r\n }\r\n}\r\n","<svg\r\n [attr.width]=\"size\"\r\n [attr.height]=\"size\"\r\n viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" fill=\"none\"\r\n role=\"img\"\r\n [attr.aria-label]=\"title\"\r\n [class]=\"className\"\r\n>\r\n <!-- 图片图标 -->\r\n <ng-container *ngIf=\"iconType === 'image-icon'\">\r\n <defs>\r\n <mask id=\"mask_image\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_image)\">\r\n <use xlink:href=\"#use_image\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_image\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_image\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"图片\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"6\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"6\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"图标/空文件夹 copy 2\" mask=\"url(#mask_image)\">\r\n <use xlink:href=\"#use_image\" />\r\n <g id=\"编组 27\">\r\n <path id=\"椭圆形\" d=\"M11.5 16.5C12.3284 16.5 13 15.8284 13 15C13 14.1716 12.3284 13.5 11.5 13.5C10.6716 13.5 10 14.1716 10 15C10 15.8284 10.6716 16.5 11.5 16.5Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"椭圆形\" d=\"M13 15C13 15.8284 12.3284 16.5 11.5 16.5C10.6716 16.5 10 15.8284 10 15C10 14.1716 10.6716 13.5 11.5 13.5C12.3284 13.5 13 14.1716 13 15ZM11.9634 14.8081C11.9878 14.867 12 14.931 12 15C12 15.069 11.9878 15.133 11.9634 15.1919C11.939 15.2509 11.9024 15.3047 11.8536 15.3536C11.8047 15.4024 11.7509 15.439 11.6919 15.4634C11.633 15.4878 11.569 15.5 11.5 15.5C11.431 15.5 11.367 15.4878 11.3081 15.4634C11.2491 15.439 11.1953 15.4024 11.1464 15.3536C11.0976 15.3047 11.061 15.2509 11.0366 15.1919C11.0122 15.133 11 15.069 11 15C11 14.931 11.0122 14.867 11.0366 14.8081C11.061 14.7491 11.0976 14.6953 11.1464 14.6464C11.1953 14.5976 11.2491 14.561 11.3081 14.5366C11.367 14.5122 11.431 14.5 11.5 14.5C11.569 14.5 11.633 14.5122 11.6919 14.5366C11.7509 14.561 11.8047 14.5976 11.8536 14.6464C11.9024 14.6953 11.939 14.7491 11.9634 14.8081Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M22.7002 23.126L18.6447 16.9265C18.3065 16.4096 17.5571 16.3873 17.1888 16.8831L15.2857 19.4454L13.7373 18.0224C13.3287 17.647 12.6798 17.734 12.3846 18.2038L9.28364 23.1397C8.91213 23.731 9.33716 24.5 10.0355 24.5L21.9572 24.5C22.6629 24.5 23.0866 23.7165 22.7002 23.126Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M14.5454 18.765L13.7373 18.0224C13.3287 17.647 12.6798 17.734 12.3846 18.2038L9.28364 23.1397C8.91213 23.731 9.33716 24.5 10.0355 24.5L21.9572 24.5C22.6629 24.5 23.0866 23.7165 22.7002 23.126L18.6447 16.9265C18.3065 16.4096 17.5571 16.3873 17.1888 16.8831L15.8852 18.6382L15.2857 19.4454L14.5454 18.765ZM17.8958 17.6084L15.4265 20.9329L13.1597 18.8498L10.2383 23.5L21.7499 23.5L17.8958 17.6084Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- PDF图标 -->\r\n <ng-container *ngIf=\"iconType === 'pdf-icon'\">\r\n <defs>\r\n <mask id=\"mask_pdf\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_pdf)\">\r\n <use xlink:href=\"#use_pdf\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_pdf\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(242,48,48)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_pdf\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"pdf\">\r\n <g id=\"图标/pdf文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\" mask=\"url(#mask_pdf)\">\r\n <use xlink:href=\"#use_pdf\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(250,167,163)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"path6\" d=\"M16.364 18.6456C18.7712 21.8711 23.2379 23.4328 23.4902 21.3188C23.7425 19.2048 19.0713 19.4571 14.9933 20.5482C10.9085 21.6324 7.37606 24.1215 8.83541 25.5399C10.2879 26.9584 11.7814 24.7489 13.8067 20.0504C15.8321 15.345 17.5164 11.0352 15.1979 11.0352C12.8793 11.0352 13.9499 15.42 16.364 18.6456Z\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path6\" d=\"M23.4902 21.3188C23.7425 19.2048 19.0713 19.4571 14.9933 20.5482C10.9085 21.6324 7.37606 24.1215 8.83541 25.5399C10.2879 26.9584 11.7814 24.7489 13.8067 20.0504C15.8321 15.345 17.5164 11.0352 15.1979 11.0352C12.8793 11.0352 13.9499 15.42 16.364 18.6456C18.7712 21.8711 23.2379 23.4328 23.4902 21.3188Z\" fill-rule=\"nonzero\" stroke=\"rgb(255,255,255)\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 未知文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'unknown-icon'\">\r\n <defs>\r\n <mask id=\"mask_15\" width=\"24\" height=\"28\" x=\"4\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline)\">\r\n <use xlink:href=\"#use_15\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_15\">\r\n <path id=\"蒙版\" d=\"M7 5L22 5L28 11L28 30C28 31.6569 26.6569 33 25 33L7 33C5.34315 33 4 31.6569 4 30L4 8C4 6.34315 5.34315 5 7 5Z\" fill=\"rgb(189,189,189)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M22 5L7 5C5.34315 5 4 6.34315 4 8L4 30C4 31.6569 5.34315 33 7 33L25 33C26.6569 33 28 31.6569 28 30L28 11L22 5ZM21.5858 6L27 11.4142L27 30C27 30.1577 26.9824 30.3113 26.9472 30.4607C26.9217 30.5687 26.8871 30.6745 26.8432 30.7782C26.7974 30.8867 26.7429 30.9896 26.6798 31.0869C26.6037 31.2041 26.5152 31.3132 26.4142 31.4142C26.3132 31.5152 26.2041 31.6037 26.0869 31.6797C25.9896 31.7429 25.8867 31.7974 25.7782 31.8432C25.6745 31.8871 25.5687 31.9217 25.4607 31.9472C25.3113 31.9824 25.1577 32 25 32L7 32C6.84229 32 6.68872 31.9824 6.53931 31.9472C6.43131 31.9217 6.32548 31.8871 6.22182 31.8432C6.11331 31.7973 6.01038 31.7428 5.91305 31.6797C5.79586 31.6037 5.68677 31.5152 5.58579 31.4142C5.48479 31.3132 5.39628 31.2041 5.32027 31.0869C5.25715 30.9896 5.20265 30.8867 5.15676 30.7782C5.11292 30.6745 5.07827 30.5687 5.05282 30.4607C5.01761 30.3113 5 30.1577 5 30L5 8C5 7.84228 5.01761 7.68871 5.05282 7.53929C5.07827 7.4313 5.11292 7.32547 5.15676 7.22182C5.20266 7.1133 5.25717 7.01037 5.32031 6.91303C5.39631 6.79585 5.4848 6.68677 5.58579 6.58579C5.68677 6.4848 5.79585 6.39631 5.91303 6.32031C6.01037 6.25717 6.1133 6.20266 6.22182 6.15676C6.32547 6.11292 6.4313 6.07827 6.53929 6.05282C6.68871 6.01761 6.84228 6 7 6L21.5858 6Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <filter id=\"filter_0\" width=\"16\" height=\"16\" x=\"17\" y=\"0\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix result=\"hardAlpha\" in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 \" />\r\n <feOffset dx=\"0\" dy=\"0\" />\r\n <feGaussianBlur stdDeviation=\"1.66666663\" />\r\n <feComposite k2=\"-1\" k3=\"1\" in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 1 0 \" />\r\n <feBlend result=\"effect_dropShadow_1\" in2=\"BackgroundImageFix\" mode=\"normal\" />\r\n <feBlend result=\"shape\" in=\"SourceGraphic\" in2=\"effect_dropShadow_1\" mode=\"normal\" />\r\n </filter>\r\n </defs>\r\n <g id=\"未知文件\">\r\n <g id=\"图标/未知文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"3\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"3.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_15)\">\r\n <use xlink:href=\"#use_15\" />\r\n <g id=\"ic_public_questionmark\">\r\n <path id=\"path4\" d=\"M15.25 26.22C15.25 25.8224 15.5724 25.5 15.97 25.5L16 25.5C16.4142 25.5 16.75 25.8358 16.75 26.25C16.75 26.6642 16.4142 27 16 27L15.97 27C15.5724 27 15.25 26.6776 15.25 26.28L15.25 26.28L15.25 26.22Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"path4\" d=\"M14.25 26.22C14.25 25.9872 14.2952 25.7639 14.3856 25.5502C14.4727 25.3443 14.5954 25.1622 14.7538 25.0038C14.9122 24.8454 15.0943 24.7227 15.3002 24.6356C15.5139 24.5452 15.7372 24.5 15.97 24.5L16 24.5C16.2369 24.5 16.4641 24.546 16.6815 24.6379C16.891 24.7265 17.0763 24.8514 17.2374 25.0126C17.3986 25.1737 17.5235 25.359 17.6121 25.5685C17.704 25.7859 17.75 26.0131 17.75 26.25C17.75 26.4869 17.704 26.7141 17.6121 26.9315C17.5235 27.141 17.3986 27.3263 17.2374 27.4874C17.0763 27.6486 16.891 27.7735 16.6815 27.8621C16.4641 27.954 16.2369 28 16 28L15.97 28C15.7372 28 15.5139 27.9548 15.3002 27.8644C15.0943 27.7773 14.9122 27.6546 14.7538 27.4962C14.5954 27.3378 14.4727 27.1557 14.3856 26.9498C14.2952 26.7361 14.25 26.5128 14.25 26.28L16.25 26.28C16.25 26.2027 16.2227 26.1367 16.168 26.082C16.1133 26.0273 16.0473 26 15.97 26L16 26C15.931 26 15.872 26.0244 15.8232 26.0732C15.7744 26.122 15.75 26.181 15.75 26.25C15.75 26.319 15.7744 26.378 15.8232 26.4268C15.872 26.4756 15.931 26.5 16 26.5L15.97 26.5C16.0473 26.5 16.1133 26.4727 16.168 26.418C16.2227 26.3633 16.25 26.2973 16.25 26.22L14.25 26.22ZM16.23 26.2L16.25 26.22C16.25 26.78 15.81 27.22 15.25 27.22C14.69 27.22 14.25 26.78 14.25 26.22L14.27 26.2L16.23 26.2ZMnan nanLnan nanCnan nan nan nan nan nanCnan nan nan nan nan nanLnan nan\" fill=\"rgb(25,25,25)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path5\" d=\"M16 23.5C16 23.2897 15.9663 22.5794 16 22.2727C16.028 22.0177 16.086 21.7987 16.2953 21.4564C16.6719 20.8404 17.836 20.1869 18.0114 20.0597C18.9117 19.407 19.5 18.3279 19.5 17.1072C19.5 15.115 17.933 13.5 16 13.5C14.067 13.5 12.5 15.115 12.5 17.1072\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n <g filter=\"url(#filter_0)\">\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L28 11Z\" fill=\"rgb(245,245,246)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L23 6L23 9C23 9.08264 23.0096 9.1629 23.0288 9.24079C23.0413 9.29117 23.0577 9.34055 23.0782 9.38894C23.1003 9.44134 23.1265 9.49116 23.1568 9.53839C23.1955 9.59887 23.2409 9.65511 23.2929 9.70711C23.3449 9.75911 23.4011 9.80448 23.4616 9.84322C23.5089 9.87346 23.5587 9.89966 23.6111 9.92183C23.6595 9.94229 23.7088 9.95874 23.7592 9.97117C23.8371 9.99039 23.9174 10 24 10L27 10L28 11Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 代码文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'code-file-icon'\">\r\n <defs>\r\n <mask id=\"mask_code\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_code)\">\r\n <use xlink:href=\"#use_code\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_code\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_code\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"代码类文件\">\r\n <g id=\"图标/图片文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\" mask=\"url(#mask_code)\">\r\n <use xlink:href=\"#use_code\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"ic_public_code\">\r\n <path id=\"ic_public_code_2_5\" d=\"M0 0L7.06296 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.351112,-0.936333,0.936333,0.351112,14.7598,21.8066)\" />\r\n <path id=\"矢量 772\" d=\"M12 15L9.05221 18.4391C9.0217 18.4747 9.02001 18.5267 9.04813 18.5642L12 22.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 772\" d=\"M3 0L0.0522046 3.43909C0.0217021 3.47468 0.0200084 3.52668 0.0481303 3.56417L3 7.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-1,0,0,1,23,15)\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 压缩文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'compressed-file-icon'\">\r\n <mask id=\"mask_compressed\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_compressed)\">\r\n <use xlink:href=\"#use_compressed\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_compressed\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(255,136,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_compressed\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"压缩文件\">\r\n <g id=\"图标/压缩文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\" mask=\"url(#mask_compressed)\">\r\n <use xlink:href=\"#use_compressed\" />\r\n <g id=\"编组-109\">\r\n <path id=\"Rectangle-16-Copy-2\" d=\"M11.8164 9.26886L14.6559 9.26886C14.844 9.26886 14.9966 9.42141 14.9966 9.60959L14.9966 10.7454C14.9966 10.9336 14.844 11.0861 14.6559 11.0861L11.8164 11.0861L11.8164 9.26886Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"Rectangle-16-Copy-4\" d=\"M11.8164 12.9036L14.6559 12.9036C14.844 12.9036 14.9966 13.0562 14.9966 13.2444L14.9966 14.7209L14.9966 14.7209L11.8164 14.7209L11.8164 12.9036Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"Rectangle-16-Copy\" d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,13.1802,7.45172)\" />\r\n <path id=\"Rectangle-16-Copy-6\" d=\"M0.340734 0L3.18019 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0.340734C0 0.152552 0.152552 0 0.340734 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,14.9966,5.63434)\" />\r\n <path id=\"Rectangle-16-Copy-6备份-3\" d=\"M0 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,14.9966,2.00006)\" />\r\n <path id=\"Rectangle-16-Copy-6备份-2\" d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,13.1802,3.8172)\" />\r\n <path id=\"Rectangle-16-Copy-3\" d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,13.1802,11.0862)\" />\r\n <path id=\"Combined-Shape\" d=\"M15 17.687L15 14.72L10.0026 14.72L10.0026 17.687C10.0026 18.0556 10.3015 18.3545 10.6701 18.3545L14.3324 18.3545C14.7011 18.3545 15 18.0556 15 17.687ZM11.2478 15.6313L13.7465 15.6313L13.7465 16.8807C13.7465 17.0689 13.5939 17.2214 13.4058 17.2214L11.5885 17.2214C11.4003 17.2214 11.2478 17.0689 11.2478 16.8807L11.2478 15.6313Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(252,213,164)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 文档文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'document-icon'\">\r\n <defs>\r\n <mask id=\"mask_document\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_document)\">\r\n <use xlink:href=\"#use_document\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_document\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_document\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"6\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"6\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"图标/空文件夹 copy 2\" mask=\"url(#mask_document)\">\r\n <use xlink:href=\"#use_document\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 29\">\r\n <circle id=\"椭圆形\" cx=\"9.25\" cy=\"13\" r=\"0.75\" fill=\"rgb(255,255,255)\" />\r\n <circle id=\"椭圆形\" cx=\"9.25\" cy=\"18\" r=\"0.75\" fill=\"rgb(255,255,255)\" />\r\n <circle id=\"椭圆形\" cx=\"9.25\" cy=\"23\" r=\"0.75\" fill=\"rgb(255,255,255)\" />\r\n </g>\r\n <path id=\"矢量 777\" d=\"M12 13L23 13\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 781\" d=\"M12 18L23 18\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 782\" d=\"M12 23L23 23\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- Excel文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'excel-icon'\">\r\n <defs>\r\n <mask id=\"mask_excel\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_excel)\">\r\n <use xlink:href=\"#use_excel\" />\r\n </g>\r\n </mask>\r\n <g id=\"use_excel\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_excel\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"表格\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_excel)\">\r\n <use xlink:href=\"#use_excel\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"组合 3851\">\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M9 19L23 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M0 0L14 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0,-1,1,0,16,26)\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- PPT文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'ppt-icon'\">\r\n <g id=\"ppt\">\r\n <g id=\"图标/ppt文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\">\r\n <g id=\"路径\">\r\n <!-- 橙色背景形状 -->\r\n <path d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(255,136,0)\" fill-rule=\"evenodd\" />\r\n \r\n <!-- 内部白色 \"P\" 字母和装饰 -->\r\n <g fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\">\r\n <path d=\"M11.8164 9.26886L14.6559 9.26886C14.844 9.26886 14.9966 9.42141 14.9966 9.60959L14.9966 10.7454C14.9966 10.9336 14.844 11.0861 14.6559 11.0861L11.8164 11.0861L11.8164 9.26886Z\" />\r\n <path d=\"M11.8164 12.9036L14.6559 12.9036C14.844 12.9036 14.9966 13.0562 14.9966 13.2444L14.9966 14.7209L14.9966 14.7209L11.8164 14.7209L11.8164 12.9036Z\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,7.45172)\" />\r\n <path d=\"M0.340734 0L3.18019 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0.340734C0 0.152552 0.152552 0 0.340734 0Z\" transform=\"matrix(-1,0,0,1,14.9966,5.63434)\" />\r\n <path d=\"M0 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0L0 0Z\" transform=\"matrix(-1,0,0,1,14.9966,2.00006)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,3.8172)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,11.0862)\" />\r\n <path d=\"M15 17.687L15 14.72L10.0026 14.72L10.0026 17.687C10.0026 18.0556 10.3015 18.3545 10.6701 18.3545L14.3324 18.3545C14.7011 18.3545 15 18.0556 15 17.687ZM11.2478 15.6313L13.7465 15.6313L13.7465 16.8807C13.7465 17.0689 13.5939 17.2214 13.4058 17.2214L11.5885 17.2214C11.4003 17.2214 11.2478 17.0689 11.2478 16.8807L11.2478 15.6313Z\" />\r\n </g>\r\n \r\n <!-- 折角部分 -->\r\n <path d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(252,213,164)\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Markdown文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'markdown-icon'\">\r\n <mask id=\"mask_markdown\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_markdown)\">\r\n <use xlink:href=\"#use_markdown\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_markdown\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_markdown\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"markdown\">\r\n <g id=\"图标/markdown文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_markdown)\">\r\n <use xlink:href=\"#use_markdown\" />\r\n <g id=\"组合 3854\">\r\n <path id=\"矢量 770\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,9,14)\" />\r\n <path id=\"矢量 790\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,17,14)\" />\r\n <path id=\"矢量 794\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,22,14)\" />\r\n <path id=\"矢量 795\" d=\"M20 20L21.9293 21.9293C21.9683 21.9683 22.0317 21.9683 22.0707 21.9293L24 20\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 791\" d=\"M9 14L12.9106 21.8211C12.9474 21.8948 13.0526 21.8948 13.0894 21.8211L17 14\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- MP4文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mp4-icon'\">\r\n <defs>\r\n <g id=\"use_mp4\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mp4\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_mp4\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mp4)\">\r\n <use xlink:href=\"#use_mp4\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <g id=\"mp4\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_mp4)\">\r\n <use xlink:href=\"#use_mp4\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矢量 780\" d=\"M13.5 22.5433C13.5 22.6269 13.5965 22.6736 13.6621 22.6217L19.401 18.0784C19.4515 18.0384 19.4515 17.9616 19.401 17.9216L13.6621 13.3783C13.5965 13.3264 13.5 13.3731 13.5 13.4567L13.5 22.5433Z\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- EmailFile文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'email-file-icon'\">\r\n <defs>\r\n <g id=\"use_14\">\r\n <rect id=\"蒙版\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" rx=\"4\" fill=\"rgb(255,136,0)\" />\r\n <rect id=\"蒙版\" width=\"27\" height=\"21\" x=\"2.5\" y=\"5.5\" rx=\"4\" stroke=\"rgb(223,225,230)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_email\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_14\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_email)\">\r\n <use xlink:href=\"#use_14\" />\r\n </g>\r\n </mask>\r\n <linearGradient id=\"paint_linear_0\" x1=\"14.3386717\" x2=\"14.3386717\" y1=\"0\" y2=\"11.6952209\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint_linear_1\" x1=\"16\" x2=\"16\" y1=\"3\" y2=\"17\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n </defs>\r\n <g id=\"邮件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"矩形\" mask=\"url(#mask_14)\">\r\n <use xlink:href=\"#use_14\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill=\"url(#paint_linear_0)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"矩形\" d=\"M2.66145 3L29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3Z\" fill=\"url(#paint_linear_1)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形\" d=\"M29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3L29.3386 3Z\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,-0.707107,0.707107,0.707107,3,26)\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-0.707107,-0.707107,-0.707107,0.707107,29,26)\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Markdown文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'markdown-icon'\">\r\n <defs>\r\n <g id=\"use_18\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_markdown\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_18\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_markdown)\">\r\n <use xlink:href=\"#use_18\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <rect id=\"雪碧图/32px/markdown\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" />\r\n <g id=\"图标/markdown文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_18)\">\r\n <use xlink:href=\"#use_18\" />\r\n <g id=\"组合 3854\">\r\n <path id=\"矢量 770\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,9,14)\" />\r\n <path id=\"矢量 790\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,17,14)\" />\r\n <path id=\"矢量 794\" d=\"M0 0L8 0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" transform=\"matrix(0,1,-1,0,22,14)\" />\r\n <path id=\"矢量 795\" d=\"M20 20L21.9293 21.9293C21.9683 21.9683 22.0317 21.9683 22.0707 21.9293L24 20\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 791\" d=\"M9 14L12.9106 21.8211C12.9474 21.8948 13.0526 21.8948 13.0894 21.8211L17 14\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Excel文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'excel-icon'\">\r\n <defs>\r\n <g id=\"use_6\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_excel\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_6\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_excel)\">\r\n <use xlink:href=\"#use_6\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <g id=\"表格\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_6)\">\r\n <use xlink:href=\"#use_6\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"组合 3851\">\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"15\" height=\"13\" x=\"8.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M9 19L23 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 773\" d=\"M0 0L14 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0,-1,1,0,16,26)\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Ppt文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'ppt-icon'\">\r\n <g>\r\n <!-- 橙色背景形状 -->\r\n <path d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(255,136,0)\" fill-rule=\"evenodd\" />\r\n \r\n <!-- 内部白色 \"P\" 字母和装饰 -->\r\n <g fill=\"#FFF\" fill-rule=\"evenodd\">\r\n <path d=\"M11.8164 9.26886L14.6559 9.26886C14.844 9.26886 14.9966 9.42141 14.9966 9.60959L14.9966 10.7454C14.9966 10.9336 14.844 11.0861 14.6559 11.0861L11.8164 11.0861L11.8164 9.26886Z\" />\r\n <path d=\"M11.8164 12.9036L14.6559 12.9036C14.844 12.9036 14.9966 13.0562 14.9966 13.2444L14.9966 14.7209L14.9966 14.7209L11.8164 14.7209L11.8164 12.9036Z\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,7.45172)\" />\r\n <path d=\"M0.340734 0L3.18019 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0.340734C0 0.152552 0.152552 0 0.340734 0Z\" transform=\"matrix(-1,0,0,1,14.9966,5.63434)\" />\r\n <path d=\"M0 0L3.18019 0L3.18019 1.81725L0.340734 1.81725C0.152552 1.81725 0 1.6647 0 1.47652L0 0L0 0Z\" transform=\"matrix(-1,0,0,1,14.9966,2.00006)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,3.8172)\" />\r\n <path d=\"M0 0L2.83945 0C3.02763 0 3.18019 0.152552 3.18019 0.340734L3.18019 1.47652C3.18019 1.6647 3.02763 1.81725 2.83945 1.81725L0 1.81725L0 0Z\" transform=\"matrix(-1,0,0,1,13.1802,11.0862)\" />\r\n <path d=\"M15 17.687L15 14.72L10.0026 14.72L10.0026 17.687C10.0026 18.0556 10.3015 18.3545 10.6701 18.3545L14.3324 18.3545C14.7011 18.3545 15 18.0556 15 17.687ZM11.2478 15.6313L13.7465 15.6313L13.7465 16.8807C13.7465 17.0689 13.5939 17.2214 13.4058 17.2214L11.5885 17.2214C11.4003 17.2214 11.2478 17.0689 11.2478 16.8807L11.2478 15.6313Z\" />\r\n </g>\r\n \r\n <!-- 折角部分 -->\r\n <path d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(252,213,164)\" fill-rule=\"evenodd\" />\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Mp4文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mp4-icon'\">\r\n <defs>\r\n <g id=\"use_9\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(57,121,249)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mp4\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_9\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mp4)\">\r\n <use xlink:href=\"#use_9\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <g id=\"mp4\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_9)\">\r\n <use xlink:href=\"#use_9\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(157,189,252)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矢量 780\" d=\"M13.5 22.5433C13.5 22.6269 13.5965 22.6736 13.6621 22.6217L19.401 18.0784C19.4515 18.0384 19.4515 17.9616 19.401 17.9216L13.6621 13.3783C13.5965 13.3264 13.5 13.3731 13.5 13.4567L13.5 22.5433Z\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Unknown文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'unknown-icon'\">\r\n <defs>\r\n <g id=\"use_15\">\r\n <path id=\"蒙版\" d=\"M7 5L22 5L28 11L28 30C28 31.6569 26.6569 33 25 33L7 33C5.34315 33 4 31.6569 4 30L4 8C4 6.34315 5.34315 5 7 5Z\" fill=\"rgb(189,189,189)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M22 5L7 5C5.34315 5 4 6.34315 4 8L4 30C4 31.6569 5.34315 33 7 33L25 33C26.6569 33 28 31.6569 28 30L28 11L22 5ZM21.5858 6L27 11.4142L27 30C27 30.1577 26.9824 30.3113 26.9472 30.4607C26.9217 30.5687 26.8871 30.6745 26.8432 30.7782C26.7974 30.8867 26.7429 30.9896 26.6798 31.0869C26.6037 31.2041 26.5152 31.3132 26.4142 31.4142C26.3132 31.5152 26.2041 31.6037 26.0869 31.6797C25.9896 31.7429 25.8867 31.7974 25.7782 31.8432C25.6745 31.8871 25.5687 31.9217 25.4607 31.9472C25.3113 31.9824 25.1577 32 25 32L7 32C6.84229 32 6.68872 31.9824 6.53931 31.9472C6.43131 31.9217 6.32548 31.8871 6.22182 31.8432C6.11331 31.7973 6.01038 31.7428 5.91305 31.6797C5.79586 31.6037 5.68677 31.5152 5.58579 31.4142C5.48479 31.3132 5.39628 31.2041 5.32027 31.0869C5.25715 30.9896 5.20265 30.8867 5.15676 30.7782C5.11292 30.6745 5.07827 30.5687 5.05282 30.4607C5.01761 30.3113 5 30.1577 5 30L5 8C5 7.84228 5.01761 7.68871 5.05282 7.53929C5.07827 7.4313 5.11292 7.32547 5.15676 7.22182C5.20266 7.1133 5.25717 7.01037 5.32031 6.91303C5.39631 6.79585 5.4848 6.68677 5.58579 6.58579C5.68677 6.4848 5.79585 6.39631 5.91303 6.32031C6.01037 6.25717 6.1133 6.20266 6.22182 6.15676C6.32547 6.11292 6.4313 6.07827 6.53929 6.05282C6.68871 6.01761 6.84228 6 7 6L21.5858 6Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_unknown\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_15\" width=\"24\" height=\"28\" x=\"4\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_unknown)\">\r\n <use xlink:href=\"#use_15\" />\r\n </g>\r\n </mask>\r\n <filter id=\"filter_0\" width=\"16\" height=\"16\" x=\"17\" y=\"0\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix result=\"hardAlpha\" in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0 \" />\r\n <feOffset dx=\"0\" dy=\"0\" />\r\n <feGaussianBlur stdDeviation=\"1.66666663\" />\r\n <feComposite k2=\"-1\" k3=\"1\" in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 0 0.643137 0 0 0 1 0 \" />\r\n <feBlend result=\"effect_dropShadow_1\" in2=\"BackgroundImageFix\" mode=\"normal\" />\r\n <feBlend result=\"shape\" in=\"SourceGraphic\" in2=\"effect_dropShadow_1\" mode=\"normal\" />\r\n </filter>\r\n </defs>\r\n <g id=\"未知文件\">\r\n <g id=\"图标/未知文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"3\" rx=\"8\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"3.5\" rx=\"8\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_15)\">\r\n <use xlink:href=\"#use_15\" />\r\n <g id=\"ic_public_questionmark\">\r\n <path id=\"path4\" d=\"M15.25 26.22C15.25 25.8224 15.5724 25.5 15.97 25.5L16 25.5C16.4142 25.5 16.75 25.8358 16.75 26.25C16.75 26.6642 16.4142 27 16 27L15.97 27C15.5724 27 15.25 26.6776 15.25 26.28L15.25 26.28L15.25 26.22Z\" fill=\"rgb(255,255,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"path4\" d=\"M14.25 26.22C14.25 25.9872 14.2952 25.7639 14.3856 25.5502C14.4727 25.3443 14.5954 25.1622 14.7538 25.0038C14.9122 24.8454 15.0943 24.7227 15.3002 24.6356C15.5139 24.5452 15.7372 24.5 15.97 24.5L16 24.5C16.2369 24.5 16.4641 24.546 16.6815 24.6379C16.891 24.7265 17.0763 24.8514 17.2374 25.0126C17.3986 25.1737 17.5235 25.359 17.6121 25.5685C17.704 25.7859 17.75 26.0131 17.75 26.25C17.75 26.4869 17.704 26.7141 17.6121 26.9315C17.5235 27.141 17.3986 27.3263 17.2374 27.4874C17.0763 27.6486 16.891 27.7735 16.6815 27.8621C16.4641 27.954 16.2369 28 16 28L15.97 28C15.7372 28 15.5139 27.9548 15.3002 27.8644C15.0943 27.7773 14.9122 27.6546 14.7538 27.4962C14.5954 27.3378 14.4727 27.1557 14.3856 26.9498C14.2952 26.7361 14.25 26.5128 14.25 26.28L16.25 26.28C16.25 26.2027 16.2227 26.1367 16.168 26.082C16.1133 26.0273 16.0473 26 15.97 26L16 26C15.931 26 15.872 26.0244 15.8232 26.0732C15.7744 26.122 15.75 26.181 15.75 26.25C15.75 26.319 15.7744 26.378 15.8232 26.4268C15.872 26.4756 15.931 26.5 16 26.5L15.97 26.5C16.0473 26.5 16.1133 26.4727 16.168 26.418C16.2227 26.3633 16.25 26.2973 16.25 26.22L14.25 26.22ZM16.23 26.2L16.25 26.22C16.25 26.78 15.81 27.22 15.25 27.22C14.69 27.22 14.25 26.78 14.25 26.22L14.27 26.2L16.23 26.2ZMnan nanLnan nanCnan nan nan nan nan nanCnan nan nan nan nan nanLnan nan\" fill=\"rgb(25,25,25)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path5\" d=\"M16 23.5C16 23.2897 15.9663 22.5794 16 22.2727C16.028 22.0177 16.086 21.7987 16.2953 21.4564C16.6719 20.8404 17.836 20.1869 18.0114 20.0597C18.9117 19.407 19.5 18.3279 19.5 17.1072C19.5 15.115 17.933 13.5 16 13.5C14.067 13.5 12.5 15.115 12.5 17.1072\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n <g filter=\"url(#filter_0)\">\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L28 11Z\" fill=\"rgb(245,245,246)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 11L24 11C22.8954 11 22 10.1046 22 9L22 5L23 6L23 9C23 9.08264 23.0096 9.1629 23.0288 9.24079C23.0413 9.29117 23.0577 9.34055 23.0782 9.38894C23.1003 9.44134 23.1265 9.49116 23.1568 9.53839C23.1955 9.59887 23.2409 9.65511 23.2929 9.70711C23.3449 9.75911 23.4011 9.80448 23.4616 9.84322C23.5089 9.87346 23.5587 9.89966 23.6111 9.92183C23.6595 9.94229 23.7088 9.95874 23.7592 9.97117C23.8371 9.99039 23.9174 10 24 10L27 10L28 11Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- EmailFile文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'email-file-icon'\">\r\n <defs>\r\n\t<g id=\"use_14\">\r\n\t\t<rect id=\"蒙版\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" rx=\"4\" fill=\"rgb(255,136,0)\" />\r\n\t\t<rect id=\"蒙版\" width=\"27\" height=\"21\" x=\"2.5\" y=\"5.5\" rx=\"4\" stroke=\"rgb(223,225,230)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n\t</g>\r\n\t<filter id=\"pixso_custom_mask_type_outline_email\">\r\n\t\t<feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n\t</filter>\r\n\t<mask id=\"mask_14\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n\t<g filter=\"url(#pixso_custom_mask_type_outline_email)\">\r\n\t\t<use xlink:href=\"#use_14\" />\r\n\t</g>\r\n</mask>\r\n\t<linearGradient id=\"paint_linear_0\" x1=\"14.3386717\" x2=\"14.3386717\" y1=\"0\" y2=\"11.6952209\" gradientUnits=\"userSpaceOnUse\">\r\n\t\t<stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n\t\t<stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n\t</linearGradient>\r\n\t<linearGradient id=\"paint_linear_1\" x1=\"16\" x2=\"16\" y1=\"3\" y2=\"17\" gradientUnits=\"userSpaceOnUse\">\r\n\t\t<stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n\t\t<stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n\t</linearGradient>\r\n</defs>\r\n<g id=\"邮件\">\r\n\t<rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n\t<rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n\t<g id=\"矩形\" mask=\"url(#mask_14)\">\r\n\t\t<use xlink:href=\"#use_14\" />\r\n\t\t<path id=\"形状\" d=\"M2.66145 3L29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3Z\" fill=\"url(#paint_linear_1)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n\t\t<path id=\"矩形\" d=\"M29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3L29.3386 3Z\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n\t\t<path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,-0.707107,0.707107,0.707107,3,26)\" />\r\n\t\t<path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-0.707107,-0.707107,-0.707107,0.707107,29,26)\" />\r\n\t</g>\r\n</g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- DrawingBoard文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'drawing-board-icon'\">\r\n <defs>\r\n <g id=\"use_drawingboard\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_drawingboard\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <mask id=\"mask_drawingboard\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_drawingboard)\">\r\n <use xlink:href=\"#use_drawingboard\" />\r\n </g>\r\n </mask>\r\n </defs>\r\n <clipPath id=\"clipPath_drawingboard\">\r\n <rect width=\"15\" height=\"16\" x=\"9\" y=\"11\" fill=\"rgb(255,255,255)\" />\r\n </clipPath>\r\n <g id=\"画板\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_drawingboard)\">\r\n <use xlink:href=\"#use_drawingboard\" />\r\n <g id=\"svg\" clip-path=\"url(#clipPath_drawingboard)\" customFrame=\"url(#clipPath_drawingboard)\">\r\n <rect id=\"svg\" width=\"15\" height=\"16\" x=\"9\" y=\"11\" />\r\n <g id=\"ic_public_office_brush-画笔/base/ic_public_office_brush1\">\r\n <path id=\"path6\" d=\"M13.5333 23.4382L9.875 24.8333L11.4169 20.7952L19.1124 13.1001C19.8016 12.4109 20.919 12.411 21.6081 13.1002C22.2973 13.7894 22.2973 14.9069 21.6081 15.5961L14.8912 22.3175\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <line id=\"path7\" x1=\"0\" x2=\"3.51560974\" y1=\"0\" y2=\"0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.705038,0.70917,-0.70917,0.705038,18.5347,13.6929)\" />\r\n <path id=\"path8\" d=\"M16.3501 23.632C16.7621 24.4423 17.2822 24.8475 17.9105 24.8475C18.8918 24.8475 19.3342 23.6954 20.1977 23.632C20.7734 23.5898 21.3469 23.8969 21.9183 24.5533\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 793\" d=\"M14 25.0878C14.1434 25.1785 14.5505 25.3054 15.0323 25.0878C15.514 24.8703 17.7849 24 18.2151 24C18.6452 24 18.7828 24.272 18.6452 24.6346C18.5075 24.9972 17.957 25.6318 18.129 25.9037C18.3011 26.1756 19.9355 25.8131 20.6237 25.5411C21.3118 25.2691 21.828 25.3598 22 25.5411\" opacity=\"0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"path9\" d=\"M20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575Z\" fill=\"rgb(255,255,255)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path9\" d=\"M22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384Z\" fill-rule=\"nonzero\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"0\" stroke-linejoin=\"round\" stroke-width=\"0.699999988\" />\r\n </g>\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14L8.5 21.3938Z\" opacity=\"0\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- EmailFile文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'email-file-icon'\">\r\n <mask id=\"mask_emailfile\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_emailfile)\">\r\n <use xlink:href=\"#use_emailfile\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_emailfile\">\r\n <rect id=\"蒙版\" width=\"28\" height=\"22\" x=\"2\" y=\"5\" rx=\"4\" fill=\"rgb(255,136,0)\" />\r\n <rect id=\"蒙版\" width=\"27\" height=\"21\" x=\"2.5\" y=\"5.5\" rx=\"4\" stroke=\"rgb(223,225,230)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_emailfile\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <linearGradient id=\"paint_linear_0_emailfile\" x1=\"14.3386717\" x2=\"14.3386717\" y1=\"0\" y2=\"11.6952209\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n <linearGradient id=\"paint_linear_1_emailfile\" x1=\"16\" x2=\"16\" y1=\"3\" y2=\"17\" gradientUnits=\"userSpaceOnUse\">\r\n <stop stop-color=\"rgb(246,247,253)\" offset=\"0\" stop-opacity=\"1\" />\r\n <stop stop-color=\"rgb(233,237,250)\" offset=\"1\" stop-opacity=\"1\" />\r\n </linearGradient>\r\n </defs>\r\n <g id=\"邮件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"矩形\" mask=\"url(#mask_emailfile)\">\r\n <use xlink:href=\"#use_emailfile\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill=\"url(#paint_linear_0_emailfile)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"形状\" d=\"M0.341524 1.75256L11.7046 11.6952L0.999972 0C0.711642 0 0.43735 0.124481 0.247408 0.341492C-0.116239 0.757141 -0.074125 1.38889 0.341524 1.75256ZM27.6773 0C28.2296 0 28.6773 0.447723 28.6773 1C28.6773 1.28836 28.5528 1.56268 28.3358 1.75256L16.9727 11.6952L27.6773 0Z\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(1,0,0,-1,1.66125,27.4999)\" />\r\n <path id=\"矩形\" d=\"M2.66145 3L29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3Z\" fill=\"url(#paint_linear_1_emailfile)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形\" d=\"M29.3386 3C30.2619 3 30.692 4.14454 29.9971 4.75258L18.634 14.6952C17.1259 16.0148 14.8741 16.0148 13.366 14.6952L2.00294 4.75258C1.30804 4.14454 1.73808 3 2.66145 3L29.3386 3Z\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,-0.707107,0.707107,0.707107,3,26)\" />\r\n <path id=\"矢量 789\" d=\"M0 0L15.5563 0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-0.707107,-0.707107,-0.707107,0.707107,29,26)\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- FlowChart文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'flow-chart-icon'\">\r\n <mask id=\"mask_flowchart\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_flowchart)\">\r\n <use xlink:href=\"#use_flowchart\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_flowchart\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(242,48,48)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_flowchart\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"流程图\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_flowchart)\">\r\n <use xlink:href=\"#use_flowchart\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(250,167,163)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M6.54991 5L2.5 5C1.11929 5 -1.09279e-07 3.88071 -1.09279e-07 2.5C-1.09279e-07 1.11929 1.11929 0 2.5 0L12 0L6.54991 5Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(-1,0,0,1,23.5,13)\" />\r\n <path id=\"路径\" d=\"M6.54991 5L2.5 5C1.11929 5 -1.09279e-07 3.88071 -1.09279e-07 2.5C-1.09279e-07 1.11929 1.11929 0 2.5 0L12 0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(-1,0,0,1,23.5,13)\" />\r\n <path id=\"路径备份\" d=\"M8.64563 5L2.5 5C1.11929 5 -1.09278e-07 3.88071 -1.09278e-07 2.5C-1.09278e-07 1.11929 1.11929 0 2.5 0L11.9084 0L8.64563 5Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" transform=\"matrix(1,0,0,-1,9,23)\" />\r\n <path id=\"路径备份\" d=\"M8.64563 5L2.5 5C1.11929 5 -1.09278e-07 3.88071 -1.09278e-07 2.5C-1.09278e-07 1.11929 1.11929 0 2.5 0L11.9084 0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(1,0,0,-1,9,23)\" />\r\n <rect id=\"矩形\" width=\"3\" height=\"3\" x=\"20.5\" y=\"21.5\" rx=\"1.5\" fill=\"rgb(18,119,255)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"3\" height=\"3\" x=\"20.5\" y=\"21.5\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 16\" width=\"3\" height=\"3\" x=\"0\" y=\"0\" rx=\"1.5\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" transform=\"matrix(0.707107,0.707107,-0.707107,0.707107,10.5,10.8787)\" />\r\n <rect id=\"矩形备份 16\" width=\"3\" height=\"3\" x=\"0\" y=\"0\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" transform=\"matrix(0.707107,0.707107,-0.707107,0.707107,10.5,10.8787)\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- DrawingBoard文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'drawing-board-icon'\">\r\n <mask id=\"mask_4\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_drawingboard)\">\r\n <use xlink:href=\"#use_4\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_4\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_drawingboard\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n <clipPath id=\"clipPath_2\">\r\n <rect width=\"15\" height=\"16\" x=\"9\" y=\"11\" fill=\"rgb(255,255,255)\" />\r\n </clipPath>\r\n </defs>\r\n <g id=\"画板\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_4)\">\r\n <use xlink:href=\"#use_4\" />\r\n <g id=\"svg\" clip-path=\"url(#clipPath_2)\">\r\n <rect id=\"svg\" width=\"15\" height=\"16\" x=\"9\" y=\"11\" />\r\n <g id=\"ic_public_office_brush-画笔/base/ic_public_office_brush1\">\r\n <path id=\"path6\" d=\"M13.5333 23.4382L9.875 24.8333L11.4169 20.7952L19.1124 13.1001C19.8016 12.4109 20.919 12.411 21.6081 13.1002C22.2973 13.7894 22.2973 14.9069 21.6081 15.5961L14.8912 22.3175\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <line id=\"path7\" x1=\"0\" x2=\"3.51560974\" y1=\"0\" y2=\"0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.705038,0.70917,-0.70917,0.705038,18.5347,13.6929)\" />\r\n <path id=\"path8\" d=\"M16.3501 23.632C16.7621 24.4423 17.2822 24.8475 17.9105 24.8475C18.8918 24.8475 19.3342 23.6954 20.1977 23.632C20.7734 23.5898 21.3469 23.8969 21.9183 24.5533\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 793\" d=\"M14 25.0878C14.1434 25.1785 14.5505 25.3054 15.0323 25.0878C15.514 24.8703 17.7849 24 18.2151 24C18.6452 24 18.7828 24.272 18.6452 24.6346C18.5075 24.9972 17.957 25.6318 18.129 25.9037C18.3011 26.1756 19.9355 25.8131 20.6237 25.5411C21.3118 25.2691 21.828 25.3598 22 25.5411\" opacity=\"0\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"path9\" d=\"M20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575Z\" fill=\"rgb(255,255,255)\" fill-opacity=\"0\" fill-rule=\"nonzero\" />\r\n <path id=\"path9\" d=\"M22.0503 24.4384C22.1137 24.5113 22.1061 24.6219 22.0332 24.6853C21.9603 24.7488 21.8497 24.7411 21.7863 24.6682C21.2478 24.0496 20.7235 23.7689 20.2105 23.8065C19.9376 23.8265 19.7196 23.9568 19.338 24.287C19.2903 24.3284 19.2903 24.3284 19.2421 24.3704C18.6985 24.8433 18.3888 25.0225 17.9105 25.0225C17.2076 25.0225 16.6332 24.5751 16.1941 23.7113C16.1503 23.6251 16.1846 23.5198 16.2708 23.476C16.3569 23.4322 16.4623 23.4665 16.5061 23.5527C16.8908 24.3095 17.3568 24.6725 17.9105 24.6725C18.2771 24.6725 18.5295 24.5264 19.0123 24.1063C19.0605 24.0644 19.0605 24.0644 19.109 24.0223C19.5446 23.6454 19.8136 23.4847 20.1849 23.4575C20.8232 23.4106 21.4459 23.7441 22.0503 24.4384Z\" fill-rule=\"nonzero\" stroke=\"rgb(255,255,255)\" stroke-opacity=\"0\" stroke-linejoin=\"round\" stroke-width=\"0.699999988\" />\r\n </g>\r\n </g>\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14L8.5 21.3938Z\" opacity=\"0\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径 6\" d=\"M8.5 21.3938L12.2173 17.4814L16.3341 22L23.5 14\" opacity=\"0\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- DrawingBoard文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'drawing-board-icon'\">\r\n <mask id=\"mask_4\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n\t<g filter=\"url(#pixso_custom_mask_type_outline_drawingboard)\">\r\n\t\t<use xlink:href=\"#use_4\" />\r\n\t</g>\r\n</mask>\r\n<defs>\r\n\t<g id=\"use_4\">\r\n\t\t<path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(92,179,0)\" fill-rule=\"evenodd\" />\r\n\t\t<path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n\t</g>\r\n\t<filter id=\"pixso_custom_mask_type_outline_drawingboard\">\r\n\t\t<feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n\t</filter>\r\n\t<clipPath id=\"clipPath_2\">\r\n\t\t<rect width=\"15\" height=\"16\" x=\"9\" y=\"11\" fill=\"rgb(255,255,255)\" />\r\n\t</clipPath>\r\n</defs>\r\n<g id=\"画板\">\r\n\t<rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n\t<rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n\t<g id=\"路径\" mask=\"url(#mask_4)\">\r\n\t\t<use xlink:href=\"#use_4\" />\r\n\t\t<g id=\"svg\" clip-path=\"url(#clipPath_2)\">\r\n\t\t\t<rect id=\"svg\" width=\"15\" height=\"16\" x=\"9\" y=\"11\" />\r\n\t\t\t<g id=\"ic_public_office_brush-画笔/base/ic_public_office_brush1\">\r\n\t\t\t\t<path id=\"path6\" d=\"M13.5333 23.4382L9.875 24.8333L11.4169 20.7952L19.1124 13.1001C19.8016 12.4109 20.919 12.411 21.6081 13.1002C22.2973 13.7894 22.2973 14.9069 21.6081 15.5961L14.8912 22.3175\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n\t\t\t\t<line id=\"path7\" x1=\"0\" x2=\"3.51560974\" y1=\"0\" y2=\"0\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"square\" stroke-linejoin=\"round\" stroke-width=\"1.5\" transform=\"matrix(0.705038,0.70917,-0.70917,0.705038,18.5347,13.6929)\" />\r\n\t\t\t\t<path id=\"path8\" d=\"M16.3501 23.632C16.7621 24.4423 17.2822 24.8475 17.9105 24.8475C18.8918 24.8475 19.3342 23.6954 20.1977 23.632C20.7734 23.5898 21.3469 23.8969 21.9183 24.5533\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" />\r\n\t\t\t</g>\r\n\t\t</g>\r\n\t\t<path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(185,230,131)\" fill-rule=\"evenodd\" />\r\n\t\t<path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n\t</g>\r\n</g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Mind文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mind-icon'\">\r\n <mask id=\"mask_mind\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mind)\">\r\n <use xlink:href=\"#use_mind\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_mind\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(164,47,214)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mind\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"思维导图\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_mind)\">\r\n <use xlink:href=\"#use_mind\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(222,163,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 33\">\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径 5\" d=\"M12.5 19L16.0087 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244L19.446 23.5244Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- MultidimentionalTable文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'multidimentional-table-icon'\">\r\n <mask id=\"mask_multidimentionaltable\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_multidimentionaltable)\">\r\n <use xlink:href=\"#use_multidimentionaltable\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_multidimentionaltable\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(164,47,214)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_multidimentionaltable\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"多维表格\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"路径\" mask=\"url(#mask_multidimentionaltable)\">\r\n <use xlink:href=\"#use_multidimentionaltable\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(222,163,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <rect id=\"矩形\" width=\"8\" height=\"5\" x=\"15.5\" y=\"18.5\" rx=\"1\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"8\" height=\"5\" x=\"15.5\" y=\"18.5\" rx=\"1\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 777\" d=\"M8.5 13.5L23.5 13.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 787\" d=\"M8.5 18.5L12.5 18.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 788\" d=\"M8.5 23.5L12.5 23.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- FolderClosed文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'folder-closed-icon'\">\r\n <g id=\"文件夹\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" opacity=\"0\" fill=\"rgb(216,216,216)\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" opacity=\"0\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <path id=\"路径\" d=\"M10.6827 3C11.4448 3 12.1642 3.32848 12.6706 3.89284L12.8502 4.11535L14.4435 6.3149C14.5736 6.49445 14.7581 6.61238 14.9591 6.65238L15.1124 6.6675L25.3046 6.6675C26.7138 6.6675 27.858 7.76563 27.9877 9.1545L28 9.41813L28 13.1331L4 13.2962L4 5.75062C4 4.32856 5.06133 3.14678 6.43445 3.01267L6.69538 3L10.6827 3Z\" fill=\"rgb(10,89,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M5.06048 11L26.9994 11C28.7906 11 30.1826 12.5593 29.9802 14.339L28.6154 26.339C28.443 27.8549 27.1603 29 25.6347 29L6.42524 29C4.89956 29 3.61686 27.8549 3.44446 26.339L2.0797 14.339C1.8773 12.5593 3.26934 11 5.06048 11Z\" fill=\"rgb(77.6591,136.773,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M26.9994 11L5.06048 11C3.26934 11 1.8773 12.5593 2.0797 14.339L3.44446 26.339C3.61686 27.8549 4.89956 29 6.42524 29L25.6347 29C27.1603 29 28.443 27.8549 28.6154 26.339L29.9802 14.339C30.1826 12.5593 28.7906 11 26.9994 11ZM5.06048 12L26.9994 12C27.1728 12 27.3408 12.021 27.5033 12.0631C27.6156 12.0922 27.7252 12.1312 27.8322 12.1803C27.945 12.2321 28.0512 12.2931 28.1509 12.3635C28.2745 12.4507 28.388 12.5522 28.4914 12.6681C28.5948 12.7839 28.6828 12.9081 28.7555 13.0407C28.8142 13.1477 28.8628 13.2602 28.9015 13.3781C28.9382 13.4901 28.9647 13.6034 28.9809 13.7182C29.0043 13.8845 29.0062 14.0537 28.9866 14.226L27.6218 26.226C27.6057 26.368 27.5754 26.5053 27.5309 26.6378C27.4974 26.7377 27.4558 26.8349 27.4062 26.9293C27.3545 27.0277 27.2956 27.1205 27.2295 27.2077C27.1518 27.3101 27.0642 27.4048 26.9666 27.492C26.869 27.5791 26.765 27.6554 26.6546 27.721C26.5603 27.7769 26.4614 27.825 26.3579 27.8652C26.2583 27.9039 26.157 27.9342 26.0538 27.9562C25.9172 27.9854 25.7775 28 25.6347 28L6.42524 28C6.2824 28 6.14267 27.9854 6.00606 27.9562C5.90294 27.9342 5.8016 27.9039 5.70203 27.8652C5.59843 27.825 5.49949 27.7769 5.40523 27.7209C5.29486 27.6554 5.19089 27.5791 5.09333 27.492C4.99575 27.4049 4.90817 27.3102 4.83058 27.2079C4.76434 27.1206 4.70539 27.0277 4.65372 26.9293C4.60407 26.8348 4.56248 26.7376 4.52894 26.6376C4.4845 26.5052 4.4542 26.368 4.43805 26.226L3.07329 14.226C3.0537 14.0537 3.05561 13.8844 3.07905 13.7182C3.09523 13.6034 3.12167 13.49 3.15838 13.3781C3.19704 13.2602 3.24569 13.1478 3.30431 13.0409C3.37702 12.9082 3.46509 12.7839 3.5685 12.6681C3.67191 12.5522 3.78541 12.4507 3.90901 12.3635C4.00866 12.2931 4.11488 12.2321 4.22766 12.1804C4.3347 12.1312 4.44435 12.0922 4.55659 12.0631C4.71911 12.021 4.88707 12 5.06048 12Z\" fill=\"rgb(151,151,151)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- FolderOpen文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'folder-open-icon'\">\r\n <g id=\"文件夹打开\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" opacity=\"0\" fill=\"rgb(216,216,216)\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" opacity=\"0\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <path id=\"形状结合\" d=\"M8.68272 3.00009C9.44485 3.00009 10.1642 3.32858 10.6706 3.89294L10.8502 4.11545L12.4435 6.315C12.5736 6.49454 12.7581 6.61249 12.9591 6.65247L13.1124 6.6676L23.3046 6.6676C24.7138 6.6676 25.858 7.76572 25.9877 9.1546L26 9.41821L26 10.0002L8.31796 10.0002C6.53639 10.0002 4.96957 11.1784 4.47511 12.89L2 21.4577L2 5.7507C2 4.32864 3.06133 3.14688 4.43445 3.01276L4.69539 3.00009L8.68272 3.00009Z\" fill=\"rgb(10,89,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M9.55932 12L27.5463 12C29.1323 12 30.2822 13.5109 29.8596 15.0395L26.4055 27.5329C26.1659 28.3997 25.3771 29 24.4778 29L4.10314 29C2.75891 29 1.79742 27.7004 2.19061 26.415L5.73426 14.83C6.24862 13.1484 7.80085 12 9.55932 12Z\" fill=\"rgb(77.6591,136.773,255)\" fill-rule=\"evenodd\" />\r\n <path id=\"矩形备份\" d=\"M27.5463 12L9.55932 12C7.80085 12 6.24862 13.1484 5.73426 14.83L2.19061 26.415C1.79742 27.7004 2.75891 29 4.10314 29L24.4778 29C25.3771 29 26.1659 28.3997 26.4055 27.5329L29.8596 15.0395C30.2822 13.5109 29.1323 12 27.5463 12ZM9.55932 13L27.5463 13C27.6876 13 27.8231 13.0195 27.9527 13.0584C28.0311 13.082 28.1074 13.1127 28.1816 13.1506C28.262 13.1917 28.3371 13.2395 28.407 13.2942C28.5011 13.3678 28.5856 13.4538 28.6604 13.5521C28.7352 13.6505 28.7956 13.7548 28.8415 13.8652C28.8756 13.947 28.9017 14.0322 28.9198 14.1207C28.9366 14.2022 28.9458 14.2839 28.9477 14.3658C28.9507 14.5011 28.9334 14.6369 28.8957 14.7731L25.4417 27.2665C25.4117 27.3748 25.3669 27.4731 25.3072 27.5613C25.2475 27.6495 25.1729 27.7277 25.0834 27.7958C24.994 27.8638 24.8988 27.9149 24.7978 27.9489C24.6969 27.983 24.5902 28 24.4778 28L4.10314 28C3.99633 28 3.89442 27.9846 3.79741 27.9537C3.74453 27.9369 3.6931 27.9155 3.64313 27.8896C3.58717 27.8605 3.53485 27.8268 3.48618 27.7884C3.41636 27.7334 3.35405 27.6688 3.29924 27.5948C3.24443 27.5207 3.20094 27.4422 3.16875 27.3594C3.14631 27.3016 3.12937 27.2417 3.11792 27.1797C3.1077 27.1243 3.10229 27.0689 3.10168 27.0134C3.10057 26.9116 3.11563 26.8096 3.14688 26.7075L6.69053 15.1225C6.74279 14.9516 6.80901 14.7879 6.8892 14.6314C6.95529 14.5023 7.03085 14.3782 7.11591 14.2589C7.20303 14.1367 7.29816 14.0222 7.4013 13.9155C7.51597 13.7969 7.64054 13.6878 7.77502 13.5883C7.90949 13.4888 8.05021 13.4016 8.1972 13.3266C8.32942 13.2592 8.4667 13.2017 8.60905 13.1542C8.74802 13.1077 8.88885 13.0718 9.03156 13.0463C9.20473 13.0154 9.38064 13 9.55932 13Z\" fill=\"rgb(151,151,151)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Mind文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'mind-icon'\">\r\n <mask id=\"mask_12\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline_mind)\">\r\n <use xlink:href=\"#use_12\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_12\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(164,47,214)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline_mind\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"思维导图\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" fill=\"rgb(0,0,0)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_12)\">\r\n <use xlink:href=\"#use_12\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(222,163,247)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 33\">\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"4\" x=\"8.5\" y=\"17\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 13\" width=\"4\" height=\"4\" x=\"19.5\" y=\"12.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 15\" width=\"4\" height=\"4\" x=\"19.5\" y=\"21.5\" rx=\"2\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径 5\" d=\"M12.5 19L16.0087 19\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244L19.446 23.5244Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M19.446 23.5244L17.9496 23.5139C16.8505 23.5139 15.9636 22.6131 15.9636 21.514L15.9636 16.5141C15.9636 15.404 16.8676 14.5141 17.9776 14.5141L19.446 14.5244\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Page文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'page-icon'\">\r\n <mask id=\"mask_7\" width=\"24\" height=\"28\" x=\"4\" y=\"2\" maskUnits=\"userSpaceOnUse\" mask-type=\"outline\">\r\n <g filter=\"url(#pixso_custom_mask_type_outline)\">\r\n <use xlink:href=\"#use_7\" />\r\n </g>\r\n </mask>\r\n <defs>\r\n <g id=\"use_7\">\r\n <path id=\"蒙版\" d=\"M7 2L20 2L28 10L28 27C28 28.6569 26.6569 30 25 30L7 30C5.34315 30 4 28.6569 4 27L4 5C4 3.34315 5.34315 2 7 2Z\" fill=\"rgb(37,194,81)\" fill-rule=\"evenodd\" />\r\n <path id=\"蒙版\" d=\"M20 2L7 2C5.34315 2 4 3.34315 4 5L4 27C4 28.6569 5.34315 30 7 30L25 30C26.6569 30 28 28.6569 28 27L28 10L20 2ZM19.5858 3L27 10.4142L27 27C27 27.1577 26.9824 27.3113 26.9472 27.4607C26.9217 27.5687 26.8871 27.6745 26.8432 27.7782C26.7974 27.8867 26.7429 27.9896 26.6798 28.0869C26.6037 28.2041 26.5152 28.3132 26.4142 28.4142C26.3132 28.5152 26.2041 28.6037 26.0869 28.6797C25.9896 28.7429 25.8867 28.7974 25.7782 28.8432C25.6745 28.8871 25.5687 28.9217 25.4607 28.9472C25.3113 28.9824 25.1577 29 25 29L7 29C6.84229 29 6.68872 28.9824 6.53931 28.9472C6.43131 28.9217 6.32548 28.8871 6.22182 28.8432C6.11331 28.7973 6.01038 28.7428 5.91305 28.6797C5.79586 28.6037 5.68677 28.5152 5.58579 28.4142C5.48479 28.3132 5.39628 28.2041 5.32027 28.0869C5.25715 27.9896 5.20265 27.8867 5.15676 27.7782C5.11292 27.6745 5.07827 27.5687 5.05282 27.4607C5.01761 27.3113 5 27.1577 5 27L5 5C5 4.84228 5.01761 4.68871 5.05282 4.53929C5.07827 4.4313 5.11292 4.32547 5.15676 4.22182C5.20266 4.1133 5.25717 4.01037 5.32031 3.91303C5.39631 3.79585 5.4848 3.68677 5.58579 3.58579C5.68677 3.4848 5.79585 3.39631 5.91303 3.32031C6.01037 3.25717 6.1133 3.20266 6.22182 3.15676C6.32547 3.11292 6.4313 3.07827 6.53929 3.05282C6.68871 3.01761 6.84228 3 7 3L19.5858 3Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n </g>\r\n <filter id=\"pixso_custom_mask_type_outline\">\r\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 255 0 \" />\r\n </filter>\r\n </defs>\r\n <g id=\"Page\">\r\n <g id=\"图标/word文件\">\r\n <rect id=\"矩形\" width=\"32\" height=\"32\" x=\"0\" y=\"0\" rx=\"4\" fill=\"rgb(238,240,245)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"31\" height=\"31\" x=\"0.5\" y=\"0.5\" rx=\"4\" stroke=\"rgb(151,151,151)\" stroke-opacity=\"0\" stroke-width=\"1\" />\r\n <g id=\"编组 2\" mask=\"url(#mask_7)\">\r\n <use xlink:href=\"#use_7\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L28 10Z\" fill=\"rgb(146,224,165)\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M28 10L21.5 10C20.6716 10 20 9.32843 20 8.5L20 2L21 3L21 8.5C21 8.56903 21.0122 8.63301 21.0366 8.69194C21.061 8.75087 21.0976 8.80474 21.1464 8.85355C21.1953 8.90237 21.2491 8.93898 21.3081 8.96339C21.367 8.9878 21.431 9 21.5 9L27 9L28 10Z\" fill=\"rgb(223,225,230)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <g id=\"编组 34\">\r\n <path id=\"路径\" d=\"M11.2618 22L10.5 22C9.39543 22 8.5 20.9553 8.5 19.6667L8.5 17.3333C8.5 16.0447 9.39543 15 10.5 15L11.4798 15L11.2618 22Z\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" fill-rule=\"evenodd\" />\r\n <path id=\"路径\" d=\"M11.2618 22L10.5 22C9.39543 22 8.5 20.9553 8.5 19.6667L8.5 17.3333C8.5 16.0447 9.39543 15 10.5 15L11.4798 15\" fill-rule=\"evenodd\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"3\" x=\"11.5\" y=\"13.5\" rx=\"1.5\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形\" width=\"4\" height=\"3\" x=\"11.5\" y=\"13.5\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <rect id=\"矩形备份 11\" width=\"4\" height=\"3\" x=\"11.5\" y=\"20.5\" rx=\"1.5\" fill=\"rgb(216,216,216)\" fill-opacity=\"0\" />\r\n <rect id=\"矩形备份 11\" width=\"4\" height=\"3\" x=\"11.5\" y=\"20.5\" rx=\"1.5\" stroke=\"rgb(255,255,255)\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 774\" d=\"M19 13.5L23 13.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 775\" d=\"M19 18.5L23 18.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n <path id=\"矢量 776\" d=\"M19 23.5L23 23.5\" stroke=\"rgb(255,255,255)\" stroke-linecap=\"round\" stroke-width=\"1.5\" />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n\r\n <!-- Wrong文件图标 -->\r\n <ng-container *ngIf=\"iconType === 'wrong-icon'\">\r\n <!-- 背景三角 -->\r\n <path \r\n d=\"M7.84 0.99L13.88 12.12C14.13 12.57 13.95 13.14 13.49 13.38C13.35 13.46 13.2 13.5 13.04 13.5H0.95C0.42 13.5 0 13.08 0 12.56C0 12.4 0.03 12.25 0.11 12.12L6.15 0.99C6.4 0.53 6.98 0.36 7.44 0.61C7.61 0.69 7.75 0.83 7.84 0.99Z\" \r\n fill=\"white\"\r\n />\r\n <!-- 感叹号的点 -->\r\n <path \r\n d=\"M7 11.5C6.58 11.5 6.25 11.16 6.25 10.75C6.25 10.33 6.58 10 7 10C7.41 10 7.75 10.33 7.75 10.75C7.75 11.16 7.41 11.5 7 11.5Z\" \r\n fill=\"#F23030\"\r\n />\r\n <!-- 感叹号的竖线 -->\r\n <rect \r\n x=\"6.5\" \r\n y=\"4.5\" \r\n width=\"1\" \r\n height=\"4.5\" \r\n rx=\"0.5\" \r\n fill=\"#F23030\"\r\n />\r\n </ng-container>\r\n\r\n <!-- 其他图标类型可以在这里添加 -->\r\n</svg>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { LocaleService } from './locale.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: []\r\n})\r\nexport class LocaleModule {\r\n /**\r\n * 静态方法,用于配置模块并提供服务\r\n * 可以在AppModule中使用LocaleModule.forRoot()来初始化\r\n */\r\n static forRoot(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n providers: [\r\n LocaleService\r\n ]\r\n };\r\n }\r\n\r\n /**\r\n * 普通导入方法,用于特性模块中导入\r\n * 避免服务被多次实例化\r\n */\r\n static forChild(): ModuleWithProviders<LocaleModule> {\r\n return {\r\n ngModule: LocaleModule,\r\n providers: [] // 子模块不提供服务实例\r\n };\r\n }\r\n}","// 导出Locale服务\r\nimport { LocaleService } from './locale.service';\r\nimport { LocaleModule } from './locale.module';\r\nimport { TranslatePipe } from './translate.pipe';\r\n\r\n// 重新导出类型\r\nexport type { LanguageCode, LocaleData } from './locale.service';\r\n\r\nexport {\r\n LocaleService,\r\n LocaleModule,\r\n TranslatePipe\r\n};","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { McTeleportComponent } from './Teleport/teleport.component';\r\nimport BaseComponent from '../Base/base.component';\r\nimport {\r\n FileItem,\r\n FileListContext,\r\n FileListEmits,\r\n FileListProps,\r\n PreviewType,\r\n} from '../components-common/FileList/common/fileList-types';\r\nimport {\r\n FileListAdapter,\r\n FileListFoundation,\r\n} from '../components-common/FileList/foundation';\r\nimport { LocaleService } from '../Locale';\r\nimport { McFileIconComponent } from './FileIcon/file-icon.component';\r\n\r\n@Component({\r\n selector: 'mc-file-list',\r\n standalone: true,\r\n imports: [CommonModule, McFileIconComponent, McTeleportComponent],\r\n templateUrl: './file-list.component.html',\r\n styleUrls: ['./file-list.component.scss'],\r\n})\r\nexport class McFileListComponent\r\n extends BaseComponent<FileListFoundation>\r\n implements OnInit\r\n{\r\n @Input() fileItems: FileItem[] = [];\r\n @Input() context: FileListContext = 'dialog';\r\n @Output() remove = new EventEmitter<FileItem>();\r\n @Output() retryUpload = new EventEmitter<FileItem>();\r\n @Output() download = new EventEmitter<[FileItem, Event]>();\r\n @Output() preview = new EventEmitter<FileItem>();\r\n @Output() retryDownload = new EventEmitter<FileItem>();\r\n\r\n hoveredFileUid: number | null = null;\r\n isPreviewVisible: boolean = false;\r\n previewFile: FileItem | null = null;\r\n\r\n constructor(\r\n private localeService: LocaleService,\r\n private sanitizer: DomSanitizer,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new FileListFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): FileListAdapter {\r\n return {\r\n emitRemove: (uid: number) => {\r\n const file = this.fileItems.find((item) => item.uid === uid);\r\n if (file) {\r\n this.remove.emit(file);\r\n }\r\n },\r\n emitRetryUpload: (uid: number) => {\r\n const file = this.fileItems.find((item) => item.uid === uid);\r\n if (file) {\r\n this.retryUpload.emit(file);\r\n }\r\n },\r\n emitDownload: (file: FileItem) => {\r\n this.download.emit([file, new Event('download')]);\r\n },\r\n emitPreview: (file: FileItem) => {\r\n this.preview.emit(file);\r\n },\r\n emitRetryDownload: (uid: number) => {\r\n const file = this.fileItems.find((item) => item.uid === uid);\r\n if (file) {\r\n this.retryDownload.emit(file);\r\n }\r\n },\r\n updateFileItem: (uid: number, updates: Partial<FileItem>) => {\r\n const index = this.fileItems.findIndex((item) => item.uid === uid);\r\n if (index !== -1) {\r\n this.fileItems[index] = { ...this.fileItems[index], ...updates };\r\n }\r\n },\r\n getProp: (key: string) => {\r\n return (this as any)[key];\r\n },\r\n getProps: () => {\r\n return {\r\n fileItems: this.fileItems,\r\n context: this.context,\r\n };\r\n },\r\n getState: (key: string) => {\r\n return (this as any)[key];\r\n },\r\n getStates: () => {\r\n return {\r\n isPreviewVisible: this.isPreviewVisible,\r\n previewFile: this.previewFile,\r\n hoveredFileUid: this.hoveredFileUid,\r\n };\r\n },\r\n setState: (s: any, callback?: any) => {\r\n Object.assign(this, s);\r\n if (callback) {\r\n callback();\r\n }\r\n },\r\n getCache: (c: string) => {\r\n return undefined;\r\n },\r\n getCaches: () => {\r\n return {};\r\n },\r\n setCache: (key: any, value: any) => {\r\n // 空实现\r\n },\r\n nextTick: (cb: (...args: any) => void) => {\r\n setTimeout(cb, 0);\r\n },\r\n };\r\n }\r\n\r\n formatFileSize(bytes: number): string {\r\n return this.foundation.formatFileSize(bytes);\r\n }\r\n\r\n getPreviewType(file: FileItem): PreviewType {\r\n return this.foundation.getPreviewType(file);\r\n }\r\n\r\n getIconComponent(file: FileItem): string {\r\n return this.foundation.getIconComponent(file);\r\n }\r\n\r\n getFileTypeString(filename: string): string {\r\n return this.foundation.getFileType(filename);\r\n }\r\n\r\n handleRemove(file: FileItem) {\r\n this.foundation.handleRemove(file.uid);\r\n }\r\n\r\n handleRetryUpload(file: FileItem) {\r\n this.foundation.handleRetryUpload(file.uid);\r\n }\r\n\r\n handleDownload(file: FileItem, event: Event) {\r\n this.foundation.handleDownload(file);\r\n }\r\n\r\n handlePreview(file: FileItem) {\r\n // 只有当文件有可供预览的 URL (url 或 thumbUrl) 时,才触发预览\r\n if (file.url || file['thumbUrl']) {\r\n this.previewFile = file;\r\n this.isPreviewVisible = true;\r\n this.foundation.handlePreview(file);\r\n }\r\n }\r\n\r\n // 确保 previewFile?.name 有默认值\r\n get previewFileName(): string {\r\n return this.previewFile?.name || '';\r\n }\r\n\r\n handleRetryDownload(file: FileItem) {\r\n this.foundation.handleRetryDownload(file.uid);\r\n }\r\n\r\n closePreview() {\r\n this.isPreviewVisible = false;\r\n this.previewFile = null;\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape' && this.isPreviewVisible) {\r\n this.closePreview();\r\n }\r\n }\r\n\r\n // 国际化翻译方法\r\n t(key: string, params?: Record<string, any>): string {\r\n try {\r\n return this.localeService.translate(key, params);\r\n } catch (error) {\r\n console.warn(`Translation error for key: ${key}`, error);\r\n return key;\r\n }\r\n }\r\n\r\n // 安全处理 URL\r\n sanitizeUrl(url: string | undefined): SafeResourceUrl {\r\n if (!url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl('');\r\n }\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","<div class=\"mc-file-list\" [class]=\"`mc-file-list--context-${context}`\">\r\n <div class=\"mc-file-list__container\">\r\n <div\r\n *ngFor=\"let file of fileItems\"\r\n class=\"mc-file-item\"\r\n [class]=\"file.status ? `mc-file-item--${file.status}` : ''\"\r\n (mouseenter)=\"hoveredFileUid = file.uid\"\r\n (mouseleave)=\"hoveredFileUid = null\"\r\n >\r\n <!-- 文件图标和进度 -->\r\n <div class=\"mc-file-item__icon-container\">\r\n <!-- 图片预览 -->\r\n <ng-container *ngIf=\"getPreviewType(file) === 'image' && (file['thumbUrl'] || file.url)\">\r\n <img [src]=\"sanitizeUrl(file['thumbUrl'] || file.url)\" [alt]=\"file.name\" class=\"mc-file-item__image-preview\" (click)=\"handlePreview(file)\">\r\n </ng-container>\r\n <!-- 原来的图标 -->\r\n <ng-container *ngIf=\"!(getPreviewType(file) === 'image' && (file['thumbUrl'] || file.url))\">\r\n <mc-file-icon class=\"mc-file-item__icon\" [iconType]=\"getIconComponent(file)\" [size]=\"36\" [title]=\"file.name\"></mc-file-icon>\r\n </ng-container>\r\n <!-- 进度覆盖层 (同时处理上传和下载) -->\r\n <div *ngIf=\"file.status === 'uploading' || file.status === 'downloading' || file.status === 'error' || file.status === 'uploadError' || file.status === 'downloadError'\" class=\"mc-file-item__progress-overlay\">\r\n <div class=\"mc-file-item__progress-mask\"></div>\r\n <!-- 失败状态:显示 Wrong 图标 -->\r\n <ng-container *ngIf=\"file.status === 'error' || file.status === 'uploadError' || file.status === 'downloadError'\">\r\n <svg class=\"mc-file-item__wrong-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <!-- 背景三角 -->\r\n <path \r\n d=\"M7.84 0.99L13.88 12.12C14.13 12.57 13.95 13.14 13.49 13.38C13.35 13.46 13.2 13.5 13.04 13.5H0.95C0.42 13.5 0 13.08 0 12.56C0 12.4 0.03 12.25 0.11 12.12L6.15 0.99C6.4 0.53 6.98 0.36 7.44 0.61C7.61 0.69 7.75 0.83 7.84 0.99Z\" \r\n fill=\"white\"\r\n />\r\n <!-- 感叹号的点 -->\r\n <path \r\n d=\"M7 11.5C6.58 11.5 6.25 11.16 6.25 10.75C6.25 10.33 6.58 10 7 10C7.41 10 7.75 10.33 7.75 10.75C7.75 11.16 7.41 11.5 7 11.5Z\" \r\n fill=\"#F23030\"\r\n />\r\n <!-- 感叹号的竖线 -->\r\n <rect \r\n x=\"6.5\" \r\n y=\"4.5\" \r\n width=\"1\" \r\n height=\"4.5\" \r\n rx=\"0.5\" \r\n fill=\"#F23030\"\r\n />\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngIf=\"file.status === 'uploading' || file.status === 'downloading'\">\r\n <svg class=\"mc-file-item__progress-ring\" viewBox=\"0 0 36 36\">\r\n <path class=\"mc-file-item__progress-ring-track\" d=\"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\" />\r\n <path\r\n class=\"mc-file-item__progress-ring-circle\"\r\n stroke-dasharray=\"100, 100\"\r\n [style.strokeDashoffset]=\"100 - (file.percentage || 0)\"\r\n d=\"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\"\r\n />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <!-- 文件信息 -->\r\n <div class=\"mc-file-item__info\">\r\n <div class=\"mc-file-item__name\" [title]=\"file.name\">{{ file.name }}</div>\r\n <div class=\"mc-file-item__meta\">\r\n <!-- 1. 失败状态 (统一处理上传和下载失败) -->\r\n <ng-container *ngIf=\"file.status === 'error' || file.status === 'uploadError' || file.status === 'downloadError'\">\r\n <span \r\n class=\"mc-file-item__status mc-file-item__status--error\" \r\n [title]=\"typeof file.error === 'string' ? file.error : (file.status === 'downloadError' ? t('FileList.downloadFailed') : t('FileList.uploadFailed'))\"\r\n >\r\n {{ file.status === 'downloadError' ? t('FileList.downloadFailed') : t('FileList.uploadFailed') }}\r\n </span>\r\n <span\r\n class=\"mc-file-item__meta-action\"\r\n (click)=\"file.status === 'downloadError' ? handleRetryDownload(file) : handleRetryUpload(file)\"\r\n >{{ t('FileList.retry') }}</span>\r\n </ng-container>\r\n <!-- 2. 悬停状态 -->\r\n <ng-container *ngIf=\"hoveredFileUid === file.uid && file.status === 'success'\">\r\n <span class=\"mc-file-item__meta-action\" (click)=\"handleDownload(file, $event)\">{{ t('FileList.download') }}</span>\r\n <span class=\"mc-file-item__meta-action\" (click)=\"handlePreview(file)\">{{ t('FileList.preview') }}</span>\r\n </ng-container>\r\n <!-- 3. 上传/下载中状态 -->\r\n <ng-container *ngIf=\"file.status === 'uploading' || file.status === 'downloading'\">\r\n <span class=\"mc-file-item__status\">{{ t(`FileList.${file.status}`) }}</span>\r\n </ng-container>\r\n <!-- 4. 默认状态 -->\r\n <ng-container *ngIf=\"!file.status || file.status === 'success' && hoveredFileUid !== file.uid\">\r\n <span class=\"mc-file-item__file-type\">{{ getFileTypeString(file.name) }}</span>\r\n <span class=\"mc-file-item__size\">{{ formatFileSize(file.size) }}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- 删除按钮 -->\r\n <div class=\"mc-file-item__actions\" *ngIf=\"context === 'input'\">\r\n <!-- 删除按钮 -->\r\n <button (click)=\"handleRemove(file)\" class=\"mc-file-item__action-btn mc-file-item__action-btn--remove\" [title]=\"t('FileList.remove')\">\r\n X\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- 使用 mc-teleport 组件加载文件预览 -->\r\n <mc-teleport [to]=\"'body'\">\r\n <div *ngIf=\"isPreviewVisible && previewFile\" class=\"mc-file-preview__overlay\" (click.self)=\"closePreview()\">\r\n <!-- 图片预览 -->\r\n <img *ngIf=\"getPreviewType(previewFile) === 'image'\" [src]=\"sanitizeUrl(previewFile?.['thumbUrl'] || previewFile?.url)\" [alt]=\"previewFile?.name\" class=\"mc-file-preview__content\" />\r\n <!-- 视频预览 -->\r\n <video *ngIf=\"getPreviewType(previewFile) === 'video'\" [src]=\"sanitizeUrl(previewFile?.url)\" controls class=\"mc-file-preview__content\"></video>\r\n <!-- PDF 和 文本文件预览 (使用 iframe) -->\r\n <iframe *ngIf=\"getPreviewType(previewFile) === 'iframe'\" [src]=\"sanitizeUrl(previewFile?.url)\" class=\"mc-file-preview__content mc-file-preview__iframe\"></iframe>\r\n <!-- 其他文件类型的占位符 -->\r\n <div *ngIf=\"getPreviewType(previewFile) === 'unsupported'\" class=\"mc-file-preview__unsupported\">\r\n <span>{{ t('FileList.unsupportedPreview', { fileName: previewFileName }) }}</span>\r\n <span class=\"mc-file-preview__unsupported-tip\">{{ t('FileList.tryDownload') }}</span>\r\n </div>\r\n <!-- 关闭按钮 -->\r\n <button class=\"mc-file-preview__close-btn\" (click)=\"closePreview()\" [title]=\"t('FileList.close')\">✕</button>\r\n </div>\r\n </mc-teleport>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { McFileListComponent } from './file-list.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, McFileListComponent],\r\n exports: [McFileListComponent],\r\n})\r\nexport class McFileListModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-header',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent {\r\n @Input() logoImg: string = '';\r\n @Input() title: string = '';\r\n @Input() logoClickable: boolean = false;\r\n\r\n @Output() logoClicked = new EventEmitter<void>();\r\n\r\n onLogoClicked(): void {\r\n if (this.logoClickable) {\r\n this.logoClicked.emit();\r\n }\r\n }\r\n}\r\n","<div class=\"mc-header\">\r\n <div class=\"mc-header-logo-container\" [class]=\"{ clickable: logoClickable }\" (click)=\"onLogoClicked()\">\r\n <img *ngIf=\"logoImg\" class=\"mc-header-logo\" [src]=\"logoImg\" [alt]=\"logoImg\" />\r\n <div class=\"mc-header-title\">{{ title }}</div>\r\n </div>\r\n <div class=\"mc-header-operation\">\r\n <ng-content select=\"[operationArea]\"></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { HeaderComponent } from './header.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, HeaderComponent],\r\n exports: [HeaderComponent],\r\n})\r\nexport class HeaderModule {}\r\n","export enum DisplayType {\r\n Simple = \"simple\",\r\n Full = \"full\",\r\n}\r\nexport enum InputVariant {\r\n Bordered = \"bordered\",\r\n BorderLess = \"borderless\",\r\n}\r\nexport enum SendBtnVariant {\r\n Simple = \"simple\",\r\n Full = \"full\",\r\n}\r\nexport enum SubmitShortKey {\r\n Enter = \"enter\",\r\n ShiftEnter = \"shiftEnter\",\r\n}\r\n\r\nexport interface ThemeTagItem {\r\n type: 'themeTag';\r\n themeTagKey?: string; // 主题标签的唯一标识\r\n themeTagText: string; // 主题标签的文本内容\r\n clearInput?: boolean; // 关闭主题标签时是否清空对应输入框内容\r\n popoverContent: string; // 主题标签的pop弹出提示内容\r\n}\r\n\r\nexport interface TipTagOption {\r\n tipTagKey?: string; // 前置提示标签的唯一标识\r\n tipTagText: string; // 前置提示标签的文本内容\r\n clearInput?: boolean; // 关闭前置标签时是否清空对应输入框内容\r\n popoverContent: string; // 前置提示标签的pop弹出提示内容\r\n}\r\n\r\nexport interface FormatTextItem {\r\n type: 'text';\r\n key: string; // 标签的唯一标识\r\n content: string; \r\n}\r\n\r\nexport interface FormatInputItem {\r\n type: 'input';\r\n key: string; // 标签的唯一标识\r\n placeholder?: string; // input标签的占位提示内容\r\n content?: string; // input标签的默认展示内容,与placeholder需保证有其一\r\n}\r\n\r\nexport type FormatContentItem = FormatTextItem | FormatInputItem | ThemeTagItem;\r\nexport interface FormatContentOptions {\r\n formatContent: FormatContentItem[]; // 当前仅支持最多设置一个ThemeTag,且必须放在数组的第一个位置\r\n}\r\n\r\nexport const TimeToViewRender = 50;","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-send-icon',\r\n standalone: true,\r\n templateUrl: './send-icon.component.html',\r\n styleUrls: ['./send-icon.component.scss']\r\n})\r\nexport class SendIconComponent {\r\n\r\n}","<svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n ></path>\r\n </g>\r\n</svg>\r\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport { SendBtnVariant } from './common/types';\r\n\r\nexport interface InputButtonAdapter extends DefaultAdapter {\r\n locale(key: string, params?: Record<string, string>): string;\r\n emitChange(): void;\r\n}\r\n\r\nexport class InputButtonFoundation extends BaseFoundation<InputButtonAdapter> {\r\n constructor(adapter: InputButtonAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n showClickWave(nativeElement: HTMLElement, event: MouseEvent): void {\r\n const rect = nativeElement.getBoundingClientRect();\r\n this.setState({\r\n waveStyle: {\r\n left: event.clientX - rect.left + 'px',\r\n top: event.clientY - rect.top + 'px',\r\n },\r\n showWave: true,\r\n });\r\n\r\n setTimeout(() => {\r\n this.setState({\r\n showWave: false,\r\n });\r\n }, 300);\r\n }\r\n\r\n getButtonClasses() {\r\n const { loading, sendBtnVariant } = this.getProps();\r\n const isMouseDown = this.getState('isMouseDown');\r\n return {\r\n 'mc-button': true,\r\n 'mc-button-loading': loading,\r\n mousedown: isMouseDown,\r\n 'mc-button-simple': sendBtnVariant === SendBtnVariant.Simple,\r\n };\r\n }\r\n}\r\n","import { Component, Input, EventEmitter, Output, HostListener, ViewChild, ElementRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SendIconComponent } from '../send-icon/send-icon.component';\r\nimport { SendBtnVariant } from '../../components-common/Input/common/types';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport { LocaleService, TranslatePipe } from '../../Locale';\r\nimport { InputButtonAdapter, InputButtonFoundation } from '../../components-common/Input/button-foundation';\r\n\r\n@Component({\r\n selector: 'mc-button',\r\n standalone: true,\r\n imports: [CommonModule, SendIconComponent, TranslatePipe],\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n})export class ButtonComponent extends BaseComponent<InputButtonFoundation> {\r\n @Input() disabled: boolean = false;\r\n @Input() loading: boolean = false;\r\n @Input() inputValue: string = '';\r\n @Input() sendBtnVariant: SendBtnVariant = SendBtnVariant.Full;\r\n \r\n @Output() submit = new EventEmitter<string>();\r\n @Output() cancel = new EventEmitter<void>();\r\n @Output() change = new EventEmitter<string>();\r\n \r\n @ViewChild('button') buttonElement!: ElementRef<HTMLButtonElement>;\r\n \r\n isMouseDown: boolean = false;\r\n showWave: boolean = false;\r\n waveStyle: { top: string; left: string } = { top: '0px', left: '0px' };\r\n \r\n constructor(private localeService: LocaleService) { super(); }\r\n \r\n get buttonClasses(): Record<string, any> {\r\n return this.foundation.getButtonClasses();\r\n }\r\n \r\n ngOnInit() {\r\n this.foundation = new InputButtonFoundation(this.adapter as InputButtonAdapter);\r\n this.foundation.init();\r\n }\r\n \r\n @HostListener('mousedown')\r\n onMouseDown(): void {\r\n this.isMouseDown = true;\r\n }\r\n \r\n @HostListener('mouseup')\r\n onMouseUp(): void {\r\n this.isMouseDown = false;\r\n }\r\n \r\n showClickWave(event: MouseEvent): void {\r\n this.foundation.showClickWave(this.buttonElement.nativeElement, event);\r\n }\r\n \r\n onConfirm(event: MouseEvent): void {\r\n this.showClickWave(event);\r\n \r\n if (this.loading) {\r\n this.cancel.emit();\r\n } else {\r\n this.submit.emit(this.inputValue);\r\n this.inputValue = '';\r\n this.change.emit(this.inputValue);\r\n }\r\n }\r\n \r\n\r\n}","<button\r\n #button\r\n [disabled]=\"disabled || (!loading && !inputValue)\"\r\n [ngClass]=\"buttonClasses\"\r\n (click)=\"onConfirm($event)\"\r\n [attr.aria-label]=\"loading ? ('Input.pauseAnswer' | translate) : ('Input.send' | translate)\"\r\n [attr.aria-disabled]=\"disabled || (!loading && !inputValue)\"\r\n [attr.aria-busy]=\"loading\"\r\n>\r\n <span class=\"mc-button-content\">\r\n <ng-container *ngIf=\"loading\">\r\n <ng-template [ngTemplateOutlet]=\"loadingIcon\"></ng-template>\r\n </ng-container>\r\n <mc-send-icon *ngIf=\"!loading\"></mc-send-icon>\r\n <span *ngIf=\"sendBtnVariant === 'full'\">\r\n {{\r\n loading ? (\"Input.pauseAnswer\" | translate) : (\"Input.send\" | translate)\r\n }}\r\n </span>\r\n </span>\r\n <div\r\n *ngIf=\"showWave\"\r\n class=\"mc-button-water-wave\"\r\n [style.top]=\"waveStyle.top\"\r\n [style.left]=\"waveStyle.left\"\r\n ></div>\r\n</button>\r\n\r\n<ng-template #loadingIcon>\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</ng-template>\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\nimport {\r\n DisplayType,\r\n InputVariant,\r\n SendBtnVariant,\r\n SubmitShortKey,\r\n} from './common/types';\r\n\r\nexport interface InputAdapter extends DefaultAdapter {\r\n locale(key: string, params?: Record<string, string>): string;\r\n emitChange(): void;\r\n submit(inputValue: string): void;\r\n}\r\n\r\nexport class InputFoundation extends BaseFoundation<InputAdapter> {\r\n constructor(adapter: InputAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getInputClasses() {\r\n const { disabled, displayType, variant } = this.getProps();\r\n return {\r\n 'mc-input': true,\r\n 'mc-input-disabled': disabled,\r\n 'mc-input-simple': displayType === DisplayType.Simple,\r\n 'mc-input-borderless': variant === InputVariant.BorderLess,\r\n };\r\n }\r\n\r\n getPlaceholderText() {\r\n const { placeholder, submitShortKey } = this.getProps();\r\n if (placeholder) {\r\n return placeholder;\r\n }\r\n\r\n let enterKey = '';\r\n let shiftEnterKey = '';\r\n\r\n if (submitShortKey === SubmitShortKey.Enter) {\r\n enterKey = 'Enter';\r\n shiftEnterKey = 'Shift + Enter';\r\n } else if (submitShortKey === SubmitShortKey.ShiftEnter) {\r\n enterKey = 'Shift + Enter';\r\n shiftEnterKey = 'Enter';\r\n }\r\n\r\n return enterKey\r\n ? this._adapter.locale('Input.pleaseEnterPlaceholder', {\r\n enterKey,\r\n shiftEnterKey,\r\n })\r\n : this._adapter.locale('Input.pleaseEnter');\r\n }\r\n\r\n clearInput(): void {\r\n this.setState({\r\n inputValue: '',\r\n });\r\n this._adapter.emitChange();\r\n }\r\n\r\n emitChange(): void {\r\n this._adapter.emitChange();\r\n }\r\n\r\n submit(inputValue: string): void {\r\n this._adapter.submit(inputValue);\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n const { submitShortKey, lock } = this.getProps();\r\n const inputValue = this.getState('inputValue');\r\n if (submitShortKey === null) {\r\n return;\r\n }\r\n\r\n const shiftKey =\r\n submitShortKey === SubmitShortKey.Enter\r\n ? !event.shiftKey\r\n : submitShortKey === SubmitShortKey.ShiftEnter\r\n ? event.shiftKey\r\n : false;\r\n\r\n if (shiftKey && event.key === 'Enter' && !lock) {\r\n event.preventDefault();\r\n this.submit(inputValue);\r\n this.setState({\r\n inputValue: '',\r\n });\r\n this.emitChange();\r\n }\r\n }\r\n}\r\n","export function insertText(text: string) {\r\n const selection = window.getSelection();\r\n if (selection && selection.rangeCount > 0) {\r\n const range = selection.getRangeAt(0);\r\n range.deleteContents();\r\n const textNode = document.createTextNode(text);\r\n range.insertNode(textNode);\r\n range.setStartAfter(textNode);\r\n range.setEndAfter(textNode);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n}\r\n\r\n\r\nexport const handlePaste = (e: any) => {\r\n e.preventDefault();\r\n const text = e.clipboardData?.getData(\"text/plain\") ||'';\r\n const sanitizedText = text.replace(/[\\r\\n]+/g, ' ');\r\n if (sanitizedText) {\r\n insertText(sanitizedText);\r\n }\r\n}\r\n\r\n// 使光标移动到文案末尾\r\nexport const moveCursorToTextEnd = (inputWarp: HTMLElement) => {\r\n if (inputWarp) {\r\n const range = document.createRange();\r\n const selection = window.getSelection();\r\n range.selectNodeContents(inputWarp);\r\n range.collapse(false);\r\n selection?.removeAllRanges();\r\n selection?.addRange(range);\r\n }\r\n}\r\n\r\n","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport { LocaleService } from '../../Locale';\r\n\r\nimport { handlePaste } from '../../components-common/Input/common/util';\r\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\r\n\r\n\r\n@Component({\r\n selector: 'mc-input-tag',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './input-tag.component.html',\r\n styleUrls: ['./input-tag.component.scss'],\r\n})export class InputTagComponent extends BaseComponent<InputTagFoundation> {\r\n @Input() disabled: boolean = false;\r\n @Input() content: string = '';\r\n @Input() placeholder: string = '';\r\n @Output() change = new EventEmitter<string>();\r\n @ViewChild('editableSpanRef') editableSpanRef!: ElementRef<HTMLSpanElement>;\r\n \r\n isEditable: boolean = false;\r\n localValue: string = this.content;\r\n\r\n constructor(private localeService: LocaleService) { super(); }\r\n \r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['content']) {\r\n this.localValue = changes['content'].currentValue;\r\n }\r\n }\r\n\r\n handleFocus() {\r\n this.isEditable = !this.disabled;\r\n }\r\n\r\n handleBlur() {\r\n this.isEditable = false;\r\n }\r\n\r\n handleInput(e: any) {\r\n const prompt = this.editableSpanRef?.nativeElement.textContent || '';\r\n this.localValue = prompt;\r\n this.change.emit(prompt);\r\n }\r\n\r\n handleInputPaste(e: any) {\r\n handlePaste(e);\r\n this.handleInput(e);\r\n }\r\n}","<span class=\"editable-span\" contenteditable=\"false\">\r\n <span \r\n #editableSpanRef\r\n [attr.contenteditable]=\"isEditable\"\r\n [attr.placeholder]=\"placeholder\"\r\n tabindex=\"0\"\r\n class=\"input-custom-item\"\r\n [ngClass]=\"{'input-custom-placeholder': !localValue?.length, 'inline-text': localValue?.length}\"\r\n (input)=\"handleInput($event)\"\r\n (focus)=\"handleFocus()\"\r\n (blur)=\"handleBlur()\"\r\n (paste)=\"handleInputPaste($event)\"\r\n >{{content}}</span>\r\n</span>","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, SimpleChanges, ContentChild, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport { LocaleService } from '../../Locale';\r\n\r\nimport { handlePaste, insertText, moveCursorToTextEnd } from '../../components-common/Input/common/util';\r\nimport { InputTagFoundation } from '../../components-common/Input/input-tag-foundation';\r\nimport { InputTagComponent } from '../InputTag/input-tag.component';\r\nimport { DisplayType, FormatContentItem, SubmitShortKey, ThemeTagItem, TimeToViewRender } from '../../components-common/Input/common/types';\r\n// import { PopoverModule } from 'ng-devui/popover';\r\n\r\n@Component({\r\n selector: 'mc-editable-block',\r\n standalone: true,\r\n imports: [CommonModule, InputTagComponent],\r\n templateUrl: './editable-block.component.html',\r\n styleUrls: ['./editable-block.component.scss'],\r\n})export class EditableBlockComponent extends BaseComponent<InputTagFoundation> {\r\n\r\n themeTag: ThemeTagItem = {\r\n themeTagText: '',\r\n clearInput: false,\r\n popoverContent: '',\r\n type: 'themeTag',\r\n };\r\n \r\n @Input() disabled: boolean = false;\r\n @Input() displayType: DisplayType = DisplayType.Full;\r\n @Input() placeholder: string = '';\r\n\r\n @Input() templateParts: any[] = [];\r\n @Input() maxLength: number | null = 2000;\r\n @Input() submitShortKey: SubmitShortKey | null | string =\r\n SubmitShortKey.Enter;\r\n @Input() autofocus: boolean = false;\r\n\r\n @Output() send = new EventEmitter<string>();\r\n @Output() input = new EventEmitter<string>();\r\n @Output() blur = new EventEmitter<FocusEvent>();\r\n @Output() focus = new EventEmitter<FocusEvent>();\r\n @Output() onBlockKeyArrowUp = new EventEmitter<KeyboardEvent>();\r\n @ViewChild('editableDivRef') editableDivRef!: ElementRef<HTMLDivElement>;\r\n @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\r\n localTemplateParts: any = [...this.templateParts];\r\n\r\n constructor(private localeService: LocaleService) { super(); }\r\n \r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['templateParts']) {\r\n this.localTemplateParts = [...changes['templateParts'].currentValue];\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.autofocus && this.editableDivRef?.nativeElement && !this.disabled) {\r\n this.onFocusInput();\r\n }\r\n }\r\n\r\n clearInput() {\r\n const inputWarp = this.editableDivRef?.nativeElement;\r\n if (inputWarp) {\r\n inputWarp.innerHTML = '';\r\n this.handleDivInput();\r\n }\r\n }\r\n\r\n getInput(){\r\n return this.getCurrentInputValue();\r\n }\r\n\r\n handleSend() {\r\n const prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\r\n if (this.maxLength && prompt.length > this.maxLength) {\r\n return;\r\n }\r\n this.send.emit(prompt);\r\n this.clearInput();\r\n }\r\n\r\n focusInput() {\r\n this.editableDivRef?.nativeElement.focus();\r\n moveCursorToTextEnd(this.editableDivRef?.nativeElement);\r\n }\r\n\r\n onFocus($event: FocusEvent) {\r\n this.focus.emit($event);\r\n }\r\n onBlur($event: FocusEvent) {\r\n this.blur.emit($event);\r\n }\r\n\r\n isComposing: boolean = false;\r\n\r\n handleCompositionEnd($event: CompositionEvent) {\r\n this.isComposing = false;\r\n this.handleDivInput();\r\n }\r\n handleCompositionStart($event: CompositionEvent) {\r\n this.isComposing = true;\r\n }\r\n handleDivPaste(e: any) {\r\n e.preventDefault();\r\n const text = (e.originalEvent || e).clipboardData?.getData('text/plain');\r\n insertText(text);\r\n this.handleDivInput();\r\n }\r\n handleDivKeydown(e: KeyboardEvent) {\r\n const shiftKey = this.submitShortKey === SubmitShortKey.Enter ? !e.shiftKey : this.submitShortKey === SubmitShortKey.ShiftEnter ? e.shiftKey : false;\r\n if (e.key === 'Enter' && shiftKey) {\r\n e.preventDefault();\r\n this.handleSend();\r\n }\r\n if(['ArrowLeft', 'ArrowRight','Backspace','Delete'].includes(e.key)){\r\n const selection = window.getSelection();\r\n if (!selection?.rangeCount || !selection.isCollapsed) {\r\n return\r\n }\r\n\r\n const range = selection.getRangeAt(0);\r\n const { startContainer: node, startOffset} = range;\r\n const direction = e.key === 'ArrowLeft' || e.key === 'Backspace' ? 'previous': 'next';\r\n const targetNode: any = this.findSiblingNode(node, startOffset, direction);\r\n if(targetNode && targetNode.nodeType === Node.ELEMENT_NODE){\r\n const editSpanDom = targetNode.querySelector('.input-custom-item');\r\n if(!editSpanDom){\r\n return;\r\n }\r\n e.preventDefault();\r\n editSpanDom.contentEditable = 'true';\r\n if(e.key === 'ArrowLeft' || e.key === 'ArrowRight'){\r\n const newRange = document.createRange();\r\n\r\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\r\n newRange.collapse(false);\r\n selection.removeAllRanges();\r\n selection.addRange(newRange);\r\n }else if(e.key === 'Backspace' || e.key === 'Delete'){\r\n if(editSpanDom.textContent.trim()){\r\n const newRange = document.createRange();\r\n newRange.setStart(editSpanDom, direction === 'previous' ? editSpanDom.childNodes.length : 0);\r\n newRange.collapse(false);\r\n selection.removeAllRanges();\r\n selection.addRange(newRange);\r\n\r\n }else{\r\n targetNode.remove();\r\n }\r\n }\r\n }\r\n }\r\n if(e.key === 'ArrowUp'){\r\n this.isCursorAtStart() ? this.onBlockKeyArrowUp.emit(e) : null;\r\n }\r\n }\r\n\r\n isCursorAtStart(){\r\n const selection = window.getSelection();\r\n if (!selection?.rangeCount) {\r\n return true;\r\n }\r\n const range = selection.getRangeAt(0);\r\n if(range.startOffset !== 0){\r\n return false;\r\n }\r\n let node :any= range.startContainer;\r\n while(node && !node.classList?.contains('editable-container')){\r\n if(node.previousSibling){\r\n return false;\r\n }\r\n node = node.parentNode;\r\n }\r\n return true;\r\n }\r\n\r\n findSiblingNode(node:any, startOffset: number, direction: 'previous' | 'next'){\r\n if(!node){\r\n return null;\r\n }\r\n\r\n let current = node;\r\n const isEditableContainer = node.classList?.contains('editable-container');\r\n if(isEditableContainer){\r\n const childNodes = node.childNodes;\r\n const index = Math.min(startOffset, childNodes.length - 1);\r\n current = childNodes[index];\r\n }\r\n if(!isEditableContainer && direction === 'previous' &&startOffset !== 0){\r\n return null;\r\n }\r\n if(!isEditableContainer && direction === 'next' && startOffset !== node.textContent.length){\r\n return null;\r\n }\r\n let target = null;\r\n let sibling = current;\r\n while(sibling){\r\n sibling = direction === 'next' ? sibling.nextSibling : sibling.previousSibling;\r\n if(!sibling){\r\n continue;\r\n }\r\n // 排除注释节点和值为空的文本节点\r\n if(sibling.nodeType !== Node.COMMENT_NODE && (sibling.nodeType !== Node.TEXT_NODE || (sibling.nodeType === Node.TEXT_NODE && sibling.nodeValue.trim() !== ''))){\r\n target = sibling;\r\n break;\r\n }\r\n \r\n }\r\n return target;\r\n }\r\n\r\n\r\n handleDivInput() {\r\n if(!this.isComposing) {\r\n this.processInput();\r\n }\r\n }\r\n\r\n getCurrentInputValue() {\r\n let prompt = (this.editableDivRef?.nativeElement as any)?.textContent;\r\n // 前置标签TipTag的文本需要去除掉\r\n if(this.themeTag.themeTagText){\r\n const prefixSpan = this.editableDivRef?.nativeElement?.querySelector('.ai-input-prefix-wrapper');\r\n if(prefixSpan){\r\n prompt = prompt.replace(prefixSpan.textContent || '', ' ');\r\n }\r\n }\r\n return prompt;\r\n }\r\n\r\n processInput() {\r\n setTimeout(() => {\r\n const prompt = this.getCurrentInputValue();\r\n this.input.emit(prompt);\r\n }, TimeToViewRender);\r\n }\r\n\r\n setInputTag(key: string, placeholder: string, defaultValue?: string) {\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.localTemplateParts.push({\r\n key,\r\n type: 'input',\r\n placeholder,\r\n content: defaultValue,\r\n });\r\n this.onFocusInput();\r\n this.handleDivInput();\r\n }\r\n \r\n setMixTags(mixTagConfig:FormatContentItem[]) {\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.localTemplateParts = [...mixTagConfig];\r\n this.onFocusInput();\r\n this.handleDivInput();\r\n }\r\n\r\n setText(text:string) {\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.localTemplateParts.push({\r\n key: 'text',\r\n type: 'text',\r\n content: text,\r\n });\r\n this.onFocusInput();\r\n this.handleDivInput();\r\n }\r\n \r\n openTipTag(themeTagText:string, popoverContent:string, clearInput?: boolean){\r\n if(this.disabled) {\r\n return;\r\n }\r\n this.themeTag = {\r\n themeTagText,\r\n popoverContent,\r\n clearInput: clearInput || false,\r\n type: 'themeTag'\r\n };\r\n\r\n }\r\n \r\n closeTipTag() {\r\n if(this.themeTag.themeTagText && this.themeTag.clearInput){\r\n this.clearInput();\r\n }else{\r\n this.themeTag = {\r\n themeTagText: '',\r\n popoverContent: '',\r\n clearInput: false,\r\n type: 'themeTag'\r\n };\r\n this.processInput();\r\n }\r\n }\r\n\r\n onFocusInput() {\r\n this.focusInput();\r\n }\r\n\r\n}"," <div \r\n #editableDivRef\r\n class=\"editable-container\"\r\n [ngClass]=\"{'mc-input-disabled': disabled,'mc-input-simple': displayType === 'simple' }\"\r\n [attr.contenteditable]=\"!disabled\"\r\n spellcheck=\"false\"\r\n [attr.placeholder]=\"placeholder\"\r\n (input)=\"handleDivInput()\"\r\n (keydown)=\"handleDivKeydown($event)\"\r\n (paste)=\"handleDivPaste($event)\"\r\n (compositionstart)=\"handleCompositionStart($event)\"\r\n (compositionend)=\"handleCompositionEnd($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (focus)=\"onFocus($event)\"\r\n >\r\n <!-- 前置标签 --> \r\n <span *ngIf=\"themeTag.themeTagText\" contenteditable=\"false\" >\r\n <span *ngIf=\"themeTag.themeTagText\" [title]=\"themeTag.popoverContent\" class=\"ai-input-prefix-wrapper\" (click)=\"closeTipTag()\" contenteditable=\"false\">\r\n <ng-container *ngIf=\"themeTagTemplate\">\r\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTag, themeTagText: themeTag.themeTagText}\"></ng-container>\r\n </ng-container>\r\n <span *ngIf=\"!themeTagTemplate\" class=\"ai-input-prefix\">{{themeTag.themeTagText}}</span>\r\n </span>\r\n <span contenteditable=\"false\" style=\"display: inline-block;width: 4px;\"></span>\r\n </span>\r\n\r\n <ng-container *ngFor=\"let part of localTemplateParts\" [ngSwitch]=\"part.type\">\r\n <ng-container *ngSwitchCase=\"'text'\">{{part.content}}</ng-container>\r\n <mc-input-tag *ngSwitchCase=\"'input'\" [content]=\"part.content\" [placeholder]=\"part.placeholder\" [disabled]=\"disabled\" (change)=\"handleDivInput()\"></mc-input-tag>\r\n </ng-container>\r\n </div>","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n DisplayType,\r\n FormatContentItem,\r\n FormatContentOptions,\r\n InputVariant,\r\n SendBtnVariant,\r\n SubmitShortKey,\r\n TimeToViewRender,\r\n} from '../components-common/Input/common/types';\r\nimport { ButtonComponent } from './button/button.component';\r\n\r\n// TextareaAutoSize类型定义\r\nexport type TextareaAutoSize = { minRows?: number; maxRows?: number } | boolean;\r\n\r\n// 默认的autosize配置\r\nconst DEFAULT_AUTOSIZE = {\r\n minRows: 1,\r\n maxRows: 5,\r\n};\r\n\r\nimport BaseComponent from '../Base/base.component';\r\nimport {\r\n InputAdapter,\r\n InputFoundation,\r\n} from '../components-common/Input/foundation';\r\nimport { LocaleService } from '../Locale/locale.service';\r\nimport { TranslatePipe } from '../Locale/translate.pipe';\r\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\r\n\r\n// 创建一个token用于组件间通信\r\nexport const inputContextToken = 'input-context';\r\n\r\n@Component({\r\n selector: 'mc-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ButtonComponent,\r\n TranslatePipe,\r\n EditableBlockComponent,\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [{ provide: inputContextToken, useExisting: InputComponent }],\r\n})\r\nexport class InputComponent\r\n extends BaseComponent<InputFoundation>\r\n implements OnInit\r\n{\r\n @Input() value: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() disabled: boolean = false;\r\n @Input() displayType: DisplayType = DisplayType.Full;\r\n @Input() variant: InputVariant = InputVariant.Bordered;\r\n @Input() sendBtnVariant: SendBtnVariant = SendBtnVariant.Full;\r\n @Input() loading: boolean = false;\r\n @Input() showCount: boolean = false;\r\n @Input() maxLength: number | null = null;\r\n @Input() submitShortKey: SubmitShortKey | null | string =\r\n SubmitShortKey.Enter;\r\n @Input() autofocus: boolean = false;\r\n @Input() autosize: TextareaAutoSize = false;\r\n @Input() formatContentOptions: FormatContentOptions = {\r\n formatContent: [],\r\n };\r\n\r\n // textarea样式\r\n textareaStyle: Record<string, string> = {};\r\n\r\n @Output() change = new EventEmitter<string>();\r\n @Output() submit = new EventEmitter<string>();\r\n @Output() cancel = new EventEmitter<void>();\r\n @Output() focus = new EventEmitter<FocusEvent>();\r\n @Output() blur = new EventEmitter<FocusEvent>();\r\n\r\n @ViewChild('textarea') textareaElement!: ElementRef<HTMLTextAreaElement>;\r\n @ViewChild('editableBlock') editableBlockRef!: EditableBlockComponent;\r\n\r\n @ContentChild('head') headTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('prefix') prefixTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('suffix') suffixTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('button') buttonTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('extra') extraTemplate: TemplateRef<any> | null = null;\r\n @ContentChild('themeTag') themeTagTemplate: TemplateRef<any> | null = null;\r\n inputValue: string = '';\r\n lock: boolean = false;\r\n showEditableBlock: boolean = false;\r\n\r\n constructor(private localeService: LocaleService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new InputFoundation(this.adapter);\r\n this.foundation.init();\r\n this.inputValue = this.value || '';\r\n }\r\n\r\n override get adapter(): InputAdapter {\r\n return {\r\n ...super.adapter,\r\n locale: (key, params) => this.localeService.translate(key, params),\r\n emitChange: () => {\r\n this.change.emit(this.inputValue);\r\n },\r\n submit: (inputValue) => {\r\n this.submit.emit(inputValue);\r\n },\r\n };\r\n }\r\n\r\n onChange(e): void {\r\n e.stopPropagation();\r\n this.foundation.emitChange();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['value']) {\r\n this.inputValue = changes['value']?.currentValue || '';\r\n // 值变化时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n\r\n if (changes['autosize']) {\r\n // autosize配置变化时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n if (changes['formatContentOptions']) {\r\n const formatContent =\r\n changes['formatContentOptions']?.currentValue?.formatContent || [];\r\n\r\n // 处理主题标签\r\n const themeTagItems = formatContent.filter(\r\n (item) => item.type === 'themeTag',\r\n );\r\n if (themeTagItems.length) {\r\n this.openTipTag(\r\n themeTagItems[0].themeTagText,\r\n themeTagItems[0].popoverContent,\r\n themeTagItems[0].clearInput,\r\n );\r\n } else {\r\n this.closeTipTag();\r\n }\r\n\r\n // 处理其他格式标签\r\n const otherFormatItems = formatContent.filter(\r\n (item) => item.type !== 'themeTag',\r\n );\r\n if (otherFormatItems.length) {\r\n this.setMixTags(otherFormatItems);\r\n } else {\r\n if (this.showEditableBlock) {\r\n this.setMixTags(otherFormatItems);\r\n }\r\n }\r\n }\r\n }\r\n\r\n get inputClasses(): Record<string, any> {\r\n return this.foundation.getInputClasses();\r\n }\r\n\r\n get maxlengthValue() {\r\n return this.maxLength !== undefined ? this.maxLength : null;\r\n }\r\n\r\n onInput(): void {\r\n if (!this.lock) {\r\n this.foundation.emitChange();\r\n // 输入时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n }\r\n\r\n onCompositionStart(): void {\r\n this.lock = true;\r\n }\r\n\r\n onCompositionEnd(): void {\r\n this.lock = false;\r\n this.foundation.emitChange();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n this.foundation.onKeydown(event);\r\n }\r\n\r\n clearInput(): void {\r\n if (this.showEditableBlock) {\r\n this.editableBlockRef?.clearInput();\r\n }\r\n this.foundation.clearInput();\r\n }\r\n\r\n getInput(): string {\r\n if (this.showEditableBlock) {\r\n return this.editableBlockRef?.getInput();\r\n }\r\n return this.inputValue;\r\n }\r\n\r\n setMixTags(mixTagConfig: FormatContentItem[]): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.showEditableBlock = true;\r\n setTimeout(() => {\r\n this.editableBlockRef?.setMixTags(mixTagConfig);\r\n }, TimeToViewRender);\r\n }\r\n\r\n openTipTag(\r\n themeTagText: string,\r\n popoverContent: string,\r\n clearInput?: boolean,\r\n ): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.showEditableBlock = true;\r\n setTimeout(() => {\r\n this.editableBlockRef?.openTipTag(\r\n themeTagText,\r\n popoverContent,\r\n clearInput,\r\n );\r\n }, TimeToViewRender);\r\n }\r\n\r\n closeTipTag(): void {\r\n if (!this.disabled && this.showEditableBlock) {\r\n this.editableBlockRef?.closeTipTag();\r\n }\r\n }\r\n\r\n handleDivInput(value: string) {\r\n if (!value) {\r\n setTimeout(() => {\r\n this.showEditableBlock = false;\r\n }, TimeToViewRender);\r\n }\r\n this.inputValue = value;\r\n this.change.emit(value);\r\n }\r\n\r\n handleDivSubmit(value: string) {\r\n this.submit.emit(value);\r\n }\r\n\r\n onDivBlur(e: FocusEvent) {\r\n this.blur.emit(e);\r\n }\r\n\r\n onDivFocus(e: FocusEvent) {\r\n this.focus.emit(e);\r\n }\r\n\r\n // 处理button组件的事件\r\n onButtonSubmit(value: string): void {\r\n this.submit.emit(value);\r\n this.clearInput();\r\n }\r\n\r\n onButtonCancel(): void {\r\n this.cancel.emit();\r\n }\r\n\r\n onButtonChange(value: string): void {\r\n this.inputValue = value;\r\n this.foundation.emitChange();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.autofocus && this.textareaElement && !this.disabled) {\r\n // 在下一个变更检测周期中聚焦,以确保视图已经完全初始化\r\n setTimeout(() => {\r\n this.textareaElement.nativeElement.focus();\r\n });\r\n }\r\n\r\n // 初始化时更新textarea样式\r\n this.updateTextareaStyle();\r\n }\r\n\r\n // 更新textarea样式\r\n updateTextareaStyle() {\r\n if (!this.textareaElement || this.autosize === false) {\r\n this.textareaStyle = {};\r\n return;\r\n }\r\n\r\n const config = this.getAutosizeConfig();\r\n const result = this.computeTextareaHeight(\r\n this.textareaElement.nativeElement,\r\n config.minRows,\r\n config.maxRows,\r\n );\r\n\r\n this.textareaStyle = {\r\n ...result,\r\n resize: 'none',\r\n };\r\n }\r\n\r\n // 获取autosize配置\r\n private getAutosizeConfig() {\r\n return typeof this.autosize === 'boolean'\r\n ? DEFAULT_AUTOSIZE\r\n : this.autosize;\r\n }\r\n\r\n // 计算textarea高度\r\n private computeTextareaHeight(\r\n targetElement: HTMLTextAreaElement,\r\n minRows = 1,\r\n maxRows?: number,\r\n ): Record<string, string> {\r\n const style = window.getComputedStyle(targetElement);\r\n const boxSizing = style.getPropertyValue('box-sizing');\r\n\r\n const paddingSize =\r\n Number.parseFloat(style.getPropertyValue('padding-top')) +\r\n Number.parseFloat(style.getPropertyValue('padding-bottom'));\r\n\r\n const borderSize =\r\n Number.parseFloat(style.getPropertyValue('border-top-width')) +\r\n Number.parseFloat(style.getPropertyValue('border-bottom-width'));\r\n\r\n // 创建临时textarea元素\r\n const tempTextarea = document.createElement('textarea');\r\n const sizingStyle = [\r\n 'letter-spacing',\r\n 'line-height',\r\n 'padding-top',\r\n 'padding-bottom',\r\n 'font-family',\r\n 'font-weight',\r\n 'font-size',\r\n 'font-variant',\r\n 'text-rendering',\r\n 'text-transform',\r\n 'width',\r\n 'text-indent',\r\n 'padding-left',\r\n 'padding-right',\r\n 'border-width',\r\n 'box-sizing',\r\n 'word-break',\r\n 'white-space',\r\n ];\r\n\r\n const contextStyle = sizingStyle\r\n .map((name) => `${name}:${style.getPropertyValue(name)}`)\r\n .join(';');\r\n\r\n const hiddenStyle = `\r\n min-height:0 !important;\r\n max-height:none !important;\r\n height:0 !important;\r\n visibility:hidden !important;\r\n overflow:hidden !important;\r\n position:absolute !important;\r\n z-index:-1000 !important;\r\n top:0 !important;\r\n right:0 !important;\r\n pointer-events:none !important;\r\n `;\r\n\r\n tempTextarea.setAttribute('style', `${contextStyle};${hiddenStyle}`);\r\n tempTextarea.value = targetElement.value || targetElement.placeholder || '';\r\n\r\n document.body.appendChild(tempTextarea);\r\n\r\n let height = tempTextarea.scrollHeight;\r\n const result: Record<string, string> = {\r\n height: `${height}px`,\r\n };\r\n\r\n if (minRows !== undefined || maxRows !== undefined) {\r\n tempTextarea.value = ' ';\r\n const singleRowHeight = tempTextarea.scrollHeight - paddingSize;\r\n\r\n if (minRows !== undefined) {\r\n let minHeight = singleRowHeight * minRows;\r\n if (boxSizing === 'border-box') {\r\n minHeight = minHeight + paddingSize + borderSize;\r\n }\r\n height = Math.max(minHeight, height);\r\n result['minHeight'] = `${minHeight}px`;\r\n }\r\n\r\n if (maxRows !== undefined) {\r\n let maxHeight = singleRowHeight * maxRows;\r\n if (boxSizing === 'border-box') {\r\n maxHeight = maxHeight + paddingSize + borderSize;\r\n }\r\n if (height > maxHeight) {\r\n height = maxHeight;\r\n result['overflowY'] = 'auto';\r\n }\r\n }\r\n }\r\n\r\n document.body.removeChild(tempTextarea);\r\n\r\n result['height'] = `${height}px`;\r\n return result;\r\n }\r\n\r\n get placeholderText(): string {\r\n return this.foundation.getPlaceholderText();\r\n }\r\n\r\n onFocus(event: FocusEvent) {\r\n this.focus.emit(event);\r\n }\r\n\r\n onBlur(event: FocusEvent) {\r\n this.blur.emit(event);\r\n }\r\n}\r\n","<div [ngClass]=\"inputClasses\">\r\n <ng-container *ngIf=\"headTemplate; then headTemplate\"></ng-container>\r\n\r\n <div class=\"mc-input-content\">\r\n <ng-container *ngIf=\"prefixTemplate; then prefixTemplate\"></ng-container>\r\n <!-- 替换Textarea -->\r\n <div *ngIf=\"showEditableBlock\" class=\"editable-block-container\">\r\n <mc-editable-block *ngIf=\"showEditableBlock\"\r\n #editableBlock\r\n [placeholder]=\"placeholder\"\r\n [maxLength]=\"maxLength\"\r\n [disabled]=\"disabled\"\r\n [submitShortKey]=\"submitShortKey\"\r\n [autofocus]=\"autofocus\"\r\n [displayType]=\"displayType\" \r\n (input)=\"handleDivInput($event)\"\r\n (send)=\"handleDivSubmit($event)\"\r\n (blur)=\"onDivBlur($event)\"\r\n (focus)=\"onDivFocus($event)\"\r\n >\r\n <ng-container *ngIf=\"themeTagTemplate\">\r\n <ng-template #themeTag let-themeTagText=\"themeTagText\">\r\n <ng-container *ngTemplateOutlet=\"themeTagTemplate; context: {$implicit: themeTagText, themeTagText: themeTagText}\"></ng-container>\r\n </ng-template>\r\n </ng-container>\r\n </mc-editable-block>\r\n </div>\r\n <textarea\r\n *ngIf=\"!showEditableBlock\"\r\n #textarea\r\n [(ngModel)]=\"inputValue\"\r\n [placeholder]=\"placeholderText\"\r\n [disabled]=\"disabled\"\r\n [maxlength]=\"maxLength\"\r\n class=\"mc-textarea\"\r\n [ngClass]=\"{\r\n 'mc-textarea-simple': displayType === 'simple',\r\n 'mc-textarea-disabled': disabled\r\n }\"\r\n [ngStyle]=\"textareaStyle\"\r\n [attr.aria-label]=\"'Input.ariaLabel' | translate\"\r\n [attr.aria-disabled]=\"disabled\"\r\n (input)=\"onInput()\"\r\n (change)=\"onChange($event)\"\r\n (compositionstart)=\"onCompositionStart()\"\r\n (compositionend)=\"onCompositionEnd()\"\r\n (keydown)=\"onKeydown($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n ></textarea>\r\n <ng-container *ngIf=\"suffixTemplate; then suffixTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"displayType === 'simple'\">\r\n <ng-container *ngIf=\"buttonTemplate; else defaultButton\">\r\n <ng-container\r\n *ngIf=\"buttonTemplate; then buttonTemplate\"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultButton>\r\n <mc-button\r\n [disabled]=\"disabled || (!loading && !inputValue)\"\r\n [loading]=\"loading\"\r\n [inputValue]=\"inputValue\"\r\n [sendBtnVariant]=\"sendBtnVariant\"\r\n (submit)=\"onButtonSubmit($event)\"\r\n (cancel)=\"onButtonCancel()\"\r\n (change)=\"onButtonChange($event)\"\r\n ></mc-button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"displayType === 'full'\" class=\"mc-input-foot\">\r\n <div class=\"mc-input-foot-left\">\r\n <ng-container *ngIf=\"extraTemplate; then extraTemplate\"></ng-container>\r\n <span *ngIf=\"showCount\" id=\"mc-input-count\" class=\"mc-input-foot-count\">\r\n {{ inputValue.length }}{{ !maxLength ? \"\" : \"/\" + maxLength }}\r\n </span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"buttonTemplate; else defaultFooterButton\">\r\n <ng-container *ngIf=\"buttonTemplate; then buttonTemplate\"></ng-container>\r\n </ng-container>\r\n <ng-template #defaultFooterButton>\r\n <mc-button\r\n [disabled]=\"disabled || (!loading && !inputValue)\"\r\n [loading]=\"loading\"\r\n [inputValue]=\"inputValue\"\r\n [sendBtnVariant]=\"sendBtnVariant\"\r\n (submit)=\"onButtonSubmit($event)\"\r\n (cancel)=\"onButtonCancel()\"\r\n (change)=\"onButtonChange($event)\"\r\n ></mc-button>\r\n </ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { InputComponent } from './input.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonComponent } from './button/button.component';\r\nimport { SendIconComponent } from './send-icon/send-icon.component';\r\nimport { InputTagComponent } from './InputTag/input-tag.component';\r\nimport { EditableBlockComponent } from './EditableBlock/editable-block.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ButtonComponent,\r\n SendIconComponent,\r\n InputComponent,\r\n InputTagComponent,\r\n EditableBlockComponent,\r\n ],\r\n exports: [InputComponent],\r\n})\r\nexport class InputModule {}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\nimport type {\r\n IntroductionAlign,\r\n IntroductionBackground,\r\n} from './common/introduction-types';\r\n\r\nexport interface IntroductionAdapter extends DefaultAdapter {}\r\n\r\nexport class IntroductionFoundation extends BaseFoundation<IntroductionAdapter> {\r\n constructor(adapter: IntroductionAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getIntroductionClasses() {\r\n const align = this._adapter.getProp('align') as IntroductionAlign;\r\n const background = this._adapter.getProp(\r\n 'background',\r\n ) as IntroductionBackground;\r\n return [align, background].filter(Boolean).join(' ');\r\n }\r\n\r\n getLogoStyle() {\r\n const logoWidth = this._adapter.getProp('logoWidth') as number | string;\r\n const logoHeight = this._adapter.getProp('logoHeight') as number | string;\r\n const style: Record<string, string> = {};\r\n\r\n if (logoWidth) {\r\n style['width'] =\r\n typeof logoWidth === 'number' ? `${logoWidth}px` : logoWidth;\r\n }\r\n\r\n if (logoHeight) {\r\n style['height'] =\r\n typeof logoHeight === 'number' ? `${logoHeight}px` : logoHeight;\r\n }\r\n\r\n return style;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport BaseComponent from '../Base/base.component';\r\nimport type {\r\n IntroductionAlign,\r\n IntroductionBackground,\r\n} from '../components-common/Introduction/common/introduction-types';\r\nimport { IntroductionFoundation } from '../components-common/Introduction/foundation';\r\n\r\n@Component({\r\n selector: 'mc-introduction',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './introduction.component.html',\r\n styleUrls: ['./introduction.component.scss'],\r\n})\r\nexport class IntroductionComponent extends BaseComponent<IntroductionFoundation> {\r\n @Input() logoImg?: string;\r\n @Input() title?: string;\r\n @Input() subTitle?: string;\r\n @Input() description: string[] = [];\r\n @Input() logoWidth?: number | string;\r\n @Input() logoHeight?: number | string;\r\n @Input() background: IntroductionBackground = 'transparent';\r\n @Input() align: IntroductionAlign = 'center';\r\n\r\n constructor() {\r\n super();\r\n this.foundation = new IntroductionFoundation(this.adapter);\r\n }\r\n}\r\n","<div class=\"mc-introduction\" [ngClass]=\"foundation.getIntroductionClasses()\">\r\n <div class=\"mc-introduction-logo-container\">\r\n <img *ngIf=\"logoImg\" [src]=\"logoImg\" [alt]=\"title\" [ngStyle]=\"foundation.getLogoStyle()\" />\r\n <div class=\"mc-introduction-title\">{{ title }}</div>\r\n </div>\r\n <div *ngIf=\"subTitle\" class=\"mc-introduction-sub-title\">{{ subTitle }}</div>\r\n <div *ngIf=\"description && description.length\" class=\"mc-introduction-description\">\r\n <div *ngFor=\"let item of description; let i = index\">{{ item }}</div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IntroductionComponent } from './introduction.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, IntroductionComponent],\r\n exports: [IntroductionComponent],\r\n})\r\nexport class IntroductionModule {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout-aside',\r\n standalone: true,\r\n templateUrl: './aside.component.html',\r\n styleUrls: ['./aside.component.scss']\r\n})\r\nexport class LayoutAsideComponent {\r\n\r\n}","<div class=\"mc-layout-aside\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutAsideComponent } from './aside.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutAsideComponent,\r\n ],\r\n exports: [\r\n LayoutAsideComponent,\r\n ]\r\n})\r\nexport class LayoutAsideModule { }","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface LayoutContentAdapter extends DefaultAdapter {}\r\n\r\nexport class LayoutContentFoundation extends BaseFoundation<LayoutContentAdapter> {\r\n constructor(adapter: LayoutContentAdapter) {\r\n super({ ...adapter });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-arrow-down-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './arrow-down.component.html',\r\n})\r\nexport class ArrowDownIconComponent {}\r\n","<svg t=\"1773994085709\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4044\" width=\"16\" height=\"16\">\r\n <path d=\"M898.133333 512c-12.8-12.8-32-12.8-44.8-2.133333L544 800V149.333333c0-17.066667-14.933333-32-32-32s-32 14.933333-32 32v650.666667L170.666667 509.866667c-12.8-12.8-34.133333-10.666667-44.8 2.133333-12.8 12.8-10.666667 34.133333 2.133333 44.8l362.666667 341.333333c2.133333 2.133333 6.4 4.266667 8.533333 6.4 4.266667 2.133333 6.4 2.133333 10.666667 2.133334s8.533333 0 10.666666-2.133334c4.266667-2.133333 6.4-4.266667 8.533334-6.4l362.666666-341.333333c17.066667-12.8 19.2-32 6.4-44.8z\" fill=\"#666666\" p-id=\"4045\"></path>\r\n</svg>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-arrow-up-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './arrow-up.component.html',\r\n})\r\nexport class ArrowUpIconComponent {}\r\n","<svg t=\"1773991901622\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"3858\" width=\"16\" height=\"16\">\r\n <path d=\"M896 467.2l-362.666667-341.333333c-2.133333-2.133333-6.4-4.266667-8.533333-6.4-4.266667-2.133333-6.4-2.133333-10.666667-2.133334s-8.533333 0-10.666666 2.133334c-4.266667 2.133333-6.4 4.266667-8.533334 6.4l-362.666666 341.333333c-12.8 12.8-12.8 32-2.133334 44.8 12.8 12.8 32 12.8 44.8 2.133333l309.333334-290.133333V874.666667c0 17.066667 14.933333 32 32 32s32-14.933333 32-32V224L853.333333 514.133333c6.4 6.4 14.933333 8.533333 21.333334 8.533334 8.533333 0 17.066667-4.266667 23.466666-10.666667 12.8-12.8 10.666667-32-2.133333-44.8z\" fill=\"#666666\" p-id=\"3859\"></path>\r\n</svg>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n type ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { debounce } from 'lodash-es';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport {\r\n type LayoutContentAdapter,\r\n LayoutContentFoundation,\r\n} from '../../components-common/Layout/content-foundation';\r\nimport { ArrowDownIconComponent } from './arrow-down/arrow-down.component';\r\nimport { ArrowUpIconComponent } from './arrow-up/arrow-up.component';\r\n\r\n@Component({\r\n selector: 'mc-layout-content',\r\n standalone: true,\r\n imports: [CommonModule, ArrowUpIconComponent, ArrowDownIconComponent],\r\n templateUrl: './content.component.html',\r\n styleUrls: ['./content.component.scss'],\r\n})\r\nexport class LayoutContentComponent extends BaseComponent<LayoutContentFoundation> {\r\n // 组件属性\r\n @Input() autoScroll: boolean = true;\r\n @Input() showScrollArrow: boolean = true;\r\n\r\n @Output() onScrollerScroll = new EventEmitter<Event>();\r\n @Output() onScrollerWheel = new EventEmitter<WheelEvent>();\r\n\r\n @ViewChild('scrollerRef') scrollerRef!: ElementRef;\r\n @ViewChild('contentRef') contentRef!: ElementRef;\r\n\r\n showUpArrow = false;\r\n showDownArrow = false;\r\n userControl = false;\r\n\r\n private contentResizeOb = new ResizeObserver(() => {\r\n this.updateScroll();\r\n });\r\n\r\n ngOnInit() {\r\n this.foundation = new LayoutContentFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n ngAfterViewInit(): void {\r\n this.contentResizeOb.observe(this.contentRef.nativeElement);\r\n this.scrollHandler({ target: this.scrollerRef.nativeElement } as any);\r\n this.initListener();\r\n }\r\n override ngOnDestroy(): void {\r\n this.contentResizeOb.disconnect();\r\n this.removeListener();\r\n super.ngOnDestroy();\r\n }\r\n\r\n override get adapter(): LayoutContentAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n autoScroll: this.autoScroll,\r\n showScrollArrow: this.showScrollArrow,\r\n }),\r\n };\r\n }\r\n\r\n private wheelHandler = (event: WheelEvent) => {\r\n if (!this.scrollerRef.nativeElement) {\r\n return;\r\n }\r\n const isBottom =\r\n Math.abs(\r\n this.scrollerRef.nativeElement.scrollTop +\r\n this.scrollerRef.nativeElement.clientHeight -\r\n this.scrollerRef.nativeElement.scrollHeight,\r\n ) < 32;\r\n if (event.deltaY !== 0) {\r\n this.userControl = !isBottom;\r\n }\r\n this.onScrollerWheel.emit(event);\r\n };\r\n private scrollHandler = debounce((event: Event) => {\r\n const target = event.target as HTMLDivElement;\r\n if (!target) {\r\n return;\r\n }\r\n this.showUpArrow = target.scrollTop !== 0;\r\n this.showDownArrow =\r\n target.scrollTop + target.clientHeight + 32 < target.scrollHeight;\r\n this.onScrollerScroll.emit(event);\r\n }, 100);\r\n private initListener() {\r\n this.scrollerRef.nativeElement?.addEventListener(\r\n 'scroll',\r\n this.scrollHandler,\r\n );\r\n this.scrollerRef.nativeElement?.addEventListener(\r\n 'wheel',\r\n this.wheelHandler,\r\n );\r\n }\r\n private removeListener() {\r\n this.scrollerRef.nativeElement?.removeEventListener(\r\n 'scroll',\r\n this.scrollHandler,\r\n );\r\n this.scrollerRef.nativeElement?.removeEventListener(\r\n 'wheel',\r\n this.wheelHandler,\r\n );\r\n }\r\n\r\n scrollToPosition = (position: number) => {\r\n if (this.scrollerRef.nativeElement) {\r\n this.scrollerRef.nativeElement.scrollTo({\r\n top: position,\r\n behavior: 'smooth',\r\n });\r\n }\r\n };\r\n scrollToBottom = () => {\r\n this.scrollToPosition(this.scrollerRef.nativeElement?.scrollHeight ?? 0);\r\n };\r\n scrollToTop = () => {\r\n this.scrollToPosition(0);\r\n };\r\n updateScroll = (force = false) => {\r\n if (!this.autoScroll) {\r\n return;\r\n }\r\n if (this.userControl && !force) {\r\n return;\r\n }\r\n this.scrollToBottom();\r\n };\r\n}\r\n","<div class=\"mc-layout-content-container\">\r\n <div class=\"mc-layout-content-scroller\" #scrollerRef>\r\n <div class=\"mc-layout-content\" #contentRef>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showScrollArrow\">\r\n <div *ngIf=\"showUpArrow\" class=\"mc-layout-content-arrow up\" (click)=\"scrollToTop()\">\r\n <div>\r\n <mc-arrow-up-icon />\r\n </div>\r\n </div>\r\n <div *ngIf=\"showDownArrow\" class=\"mc-layout-content-arrow down\" (click)=\"scrollToBottom()\">\r\n <div>\r\n <mc-arrow-down-icon />\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutContentComponent } from './content.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutContentComponent,\r\n ],\r\n exports: [\r\n LayoutContentComponent,\r\n ]\r\n})\r\nexport class LayoutContentModule { }","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout-header',\r\n standalone: true,\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class LayoutHeaderComponent {\r\n\r\n}","<div class=\"mc-layout-header\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutHeaderComponent } from './header.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutHeaderComponent,\r\n ],\r\n exports: [\r\n LayoutHeaderComponent,\r\n ]\r\n})\r\nexport class LayoutHeaderModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout',\r\n standalone: true,\r\n templateUrl: './layout.component.html',\r\n styleUrls: ['./layout.component.scss']\r\n})\r\nexport class LayoutComponent {\r\n\r\n}","<div class=\"mc-layout\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutComponent } from './layout.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutComponent,\r\n ],\r\n exports: [\r\n LayoutComponent,\r\n ]\r\n})\r\nexport class LayoutModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'mc-layout-sender',\r\n standalone: true,\r\n templateUrl: './sender.component.html',\r\n styleUrls: ['./sender.component.scss']\r\n})\r\nexport class LayoutSenderComponent {\r\n\r\n}","<div class=\"mc-layout-sender\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LayoutSenderComponent } from './sender.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n \r\n ],\r\n imports: [\r\n CommonModule,\r\n LayoutSenderComponent,\r\n ],\r\n exports: [\r\n LayoutSenderComponent,\r\n ]\r\n})\r\nexport class LayoutSenderModule { }\r\n","export enum ListDirection {\r\n Horizontal = 'horizontal',\r\n Vertical = 'vertical',\r\n}\r\nexport enum ListVariant {\r\n Transparent = 'transparent',\r\n Filled = 'filled',\r\n Bordered = 'bordered',\r\n None = 'none',\r\n}\r\nexport interface ListItemData {\r\n label: string;\r\n value: string | number;\r\n disabled?: boolean;\r\n active?: boolean;\r\n [key: string]: any;\r\n}\r\n","export const LazyLoadThreshold = 50;\r\nexport const InputTagNames = ['TEXTAREA', 'INPUT'];\r\nexport const ArrowUp = 'ArrowUp';\r\nexport const ArrowDown = 'ArrowDown';\r\nexport const Enter = 'Enter';\r\n","import BaseFoundation, { DefaultAdapter } from \"../Base/foundation\";\r\nimport { ListDirection } from \"./common/list-types\";\r\n\r\nexport interface ListAdapter extends DefaultAdapter {}\r\n\r\nexport class ListFoundation extends BaseFoundation<ListAdapter> {\r\n constructor(adapter: ListAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getListClasses() {\r\n const { direction, autoWrap } = this.getProps();\r\n return {\r\n 'mc-list': true,\r\n 'mc-list-horizontal': direction === ListDirection.Horizontal,\r\n 'mc-list-nowrap': direction === ListDirection.Horizontal && !autoWrap,\r\n };\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ContentChild,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n type TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n ArrowDown,\r\n ArrowUp,\r\n Enter,\r\n InputTagNames,\r\n LazyLoadThreshold,\r\n} from '../components-common/List/common/list-const';\r\nimport {\r\n ListDirection,\r\n type ListItemData,\r\n ListVariant,\r\n} from '../components-common/List/common/list-types';\r\nimport {\r\n type ListAdapter,\r\n ListFoundation,\r\n} from '../components-common/List/foundation';\r\nimport BaseComponent from '../Base/base.component';\r\n\r\n@Component({\r\n selector: 'mc-list',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './list.component.html',\r\n styleUrls: ['./list.component.scss'],\r\n})\r\nexport class ListComponent extends BaseComponent<ListFoundation> {\r\n // 组件属性\r\n @Input() direction: ListDirection = ListDirection.Vertical;\r\n @Input() autoWrap: boolean = true;\r\n @Input() variant: ListVariant = ListVariant.Transparent;\r\n @Input() enableLazyLoad: boolean = false;\r\n @Input() enableShortKey: boolean = false;\r\n @Input() data: Array<ListItemData> = [];\r\n @Input() inputEl: HTMLElement;\r\n @Input() selectable: boolean = true;\r\n @Input() preSelectIndex: number = this.enableShortKey ? 0 : -1;\r\n\r\n @Output() loadMore = new EventEmitter<Event>();\r\n @Output() select = new EventEmitter<ListItemData>();\r\n\r\n // 内容投影模板引用\r\n @ContentChild('item') itemTemplate: TemplateRef<any> | null = null;\r\n\r\n protected readonly ListVariant = ListVariant;\r\n private listenDom: HTMLElement | Document;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new ListFoundation(this.adapter);\r\n this.foundation.init();\r\n this.initListenDom();\r\n this.initListener();\r\n }\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.removeListener();\r\n }\r\n\r\n override get adapter(): ListAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n direction: this.direction,\r\n autoWrap: this.autoWrap,\r\n variant: this.variant,\r\n enableLazyLoad: this.enableLazyLoad,\r\n enableShortKey: this.enableShortKey,\r\n data: this.data,\r\n inputEl: this.inputEl,\r\n selectable: this.selectable,\r\n }),\r\n };\r\n }\r\n\r\n // 计算属性\r\n get listClasses(): Record<string, any> {\r\n return this.foundation.getListClasses();\r\n }\r\n\r\n initListenDom() {\r\n if (this.inputEl) {\r\n const el = this.inputEl;\r\n if (InputTagNames.includes(el.tagName)) {\r\n this.listenDom = el;\r\n } else {\r\n this.listenDom =\r\n el.querySelector('textarea') || el.querySelector('input') || document;\r\n }\r\n } else {\r\n this.listenDom = document;\r\n }\r\n }\r\n initListener() {\r\n if (this.enableShortKey) {\r\n this.listenDom.addEventListener(\r\n 'keydown',\r\n this.onKeyDown.bind(this) as any,\r\n );\r\n }\r\n }\r\n removeListener() {\r\n this.listenDom.removeEventListener(\r\n 'keydown',\r\n this.onKeyDown.bind(this) as any,\r\n );\r\n }\r\n onListScroll(e: Event): void {\r\n if (!this.enableLazyLoad || this.direction !== ListDirection.Vertical) {\r\n return;\r\n }\r\n const targetEl = e.target as HTMLElement;\r\n const scrollHeight = targetEl.scrollHeight;\r\n const clientHeight = targetEl.clientHeight;\r\n const scrollTop = targetEl.scrollTop;\r\n\r\n if (scrollHeight - clientHeight - scrollTop < LazyLoadThreshold) {\r\n this.loadMore.emit(e);\r\n }\r\n }\r\n onItemClick(clickedItem: ListItemData): void {\r\n if (clickedItem.disabled) {\r\n return;\r\n }\r\n if (this.selectable) {\r\n for (let i = 0; i < this.data.length; i++) {\r\n this.data[i].active = this.data[i].value === clickedItem.value;\r\n }\r\n }\r\n this.select.emit({ ...clickedItem });\r\n }\r\n onKeyDown(e: KeyboardEvent) {\r\n if (e.code === ArrowUp) {\r\n this.preSelectIndex =\r\n this.preSelectIndex === 0\r\n ? this.data.length - 1\r\n : this.preSelectIndex - 1;\r\n }\r\n if (e.code === ArrowDown) {\r\n this.preSelectIndex =\r\n this.preSelectIndex === this.data.length - 1\r\n ? 0\r\n : this.preSelectIndex + 1;\r\n }\r\n if (e.code === Enter) {\r\n if (this.selectable) {\r\n this.onItemClick(this.data[this.preSelectIndex]);\r\n }\r\n }\r\n }\r\n}\r\n","<div [ngClass]=\"listClasses\" (scroll)=\"onListScroll($event)\">\r\n <ng-container *ngFor=\"let item of data; let index = index\">\r\n <ng-container *ngIf=\"variant === ListVariant.None\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"variant !== ListVariant.None\">\r\n <div\r\n class=\"mc-list-item\"\r\n [class]=\"variant\"\r\n [ngClass]=\"{\r\n 'mc-list-item-disabled': item.disabled,\r\n 'mc-list-item-active': item.active,\r\n 'mc-list-item-pre-selection': index === preSelectIndex\r\n }\"\r\n (click)=\"onItemClick(item)\"\r\n >\r\n <ng-container *ngIf=\"itemTemplate; else defaultLabel\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultLabel>\r\n {{ item['label'] }}\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ListComponent } from './list.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, ListComponent],\r\n exports: [ListComponent],\r\n})\r\nexport class ListModule {}\r\n","import { filterXSS, getDefaultCSSWhiteList, getDefaultWhiteList, type IWhiteList } from 'xss';\r\nimport type { CustomXssRule, MdPlugin } from './mdCard.types';\r\nexport class MDCardService {\r\n private xssWhiteList = getDefaultWhiteList();\r\n private cssWhiteList = getDefaultCSSWhiteList();\r\n\r\n constructor() {\r\n this.setDefaultXss();\r\n }\r\n\r\n private setDefaultXss() {\r\n this.xssWhiteList['input'] = ['type', 'checked', 'disabled', 'class'];\r\n this.xssWhiteList['label'] = ['for'];\r\n this.xssWhiteList['ul'] = ['class'];\r\n this.xssWhiteList['div'] = ['class', 'key'];\r\n this.xssWhiteList['a'] = ['href', 'class', 'target', 'name'];\r\n this.xssWhiteList['ol'] = ['start'];\r\n\r\n this.xssWhiteList['p'] = ['class'];\r\n this.xssWhiteList['span'] = ['style', 'class', 'title', 'id'];\r\n this.xssWhiteList['svg'] = ['style', 'class', 'width', 'height', 'viewbox', 'preserveaspectratio', 'id', 'fill', 'stroke'];\r\n this.xssWhiteList['path'] = ['style', 'class', 'd', 'id', 'fill', 'stroke'];\r\n this.xssWhiteList['th'] = ['style'];\r\n this.xssWhiteList['td'] = ['style'];\r\n\r\n }\r\n\r\n getXssWhiteList() {\r\n return this.xssWhiteList;\r\n }\r\n\r\n setXssWhiteList(list: IWhiteList) {\r\n this.xssWhiteList = list;\r\n }\r\n\r\n setCustomXssRules(rules: CustomXssRule[]) {\r\n if (rules) {\r\n rules.forEach((rule) => {\r\n if (rule['value'] === null) {\r\n delete this.xssWhiteList[rule['key']];\r\n } else {\r\n this.xssWhiteList[rule['key']] = rule['value'];\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n setMdPlugins(plugins: MdPlugin[], mdt: any) {\r\n if (plugins && plugins.length) {\r\n plugins.forEach(item => {\r\n const { plugin, opts } = item;\r\n mdt.use(plugin, opts);\r\n })\r\n }\r\n }\r\n\r\n filterHtml(html: string) {\r\n return filterXSS(html, {\r\n whiteList: this.xssWhiteList,\r\n css: {\r\n whiteList: Object.assign({}, this.cssWhiteList, {\r\n top: true,\r\n left: true,\r\n bottom: true,\r\n right: true,\r\n }),\r\n },\r\n });\r\n }\r\n}\r\n","import type { MermaidConfig } from './mdCard.types';\r\n\r\ninterface MermaidViewState {\r\n scale: number;\r\n offsetX: number;\r\n offsetY: number;\r\n dragging: boolean;\r\n dragStart: { x: number; y: number };\r\n lastOffset: { x: number; y: number };\r\n}\r\n\r\nexport class MermaidService {\r\n private mermaidInstance: any = null;\r\n private isLoading = false;\r\n private lastValidResult: string = '';\r\n private viewStateMap = new WeakMap<HTMLElement, MermaidViewState>();\r\n private containerHeight = 400;\r\n\r\n constructor(private config: MermaidConfig = {}) {}\r\n\r\n private async loadMermaid() {\r\n if (this.mermaidInstance) {\r\n return this.mermaidInstance;\r\n }\r\n\r\n if (this.isLoading) {\r\n return new Promise((resolve) => {\r\n const checkInstance = () => {\r\n if (this.mermaidInstance) {\r\n resolve(this.mermaidInstance);\r\n } else {\r\n setTimeout(checkInstance, 50);\r\n }\r\n };\r\n checkInstance();\r\n });\r\n }\r\n\r\n this.isLoading = true;\r\n try {\r\n const { default: mermaid } = await import('mermaid') as any;\r\n mermaid.initialize({\r\n theme: this.config.theme || 'default',\r\n startOnLoad: false,\r\n suppressErrorRendering: true,\r\n ...this.config\r\n });\r\n this.mermaidInstance = mermaid;\r\n return mermaid;\r\n } catch (error) {\r\n console.error('Failed to load mermaid:', error);\r\n throw new Error('Failed to load mermaid library');\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n async renderToContainer(container: HTMLElement, code: string, theme: 'light' | 'dark' = 'light') {\r\n const svgStr = await this.renderMermaid(code, theme);\r\n container.innerHTML = svgStr;\r\n const svg = container.querySelector('svg');\r\n if (svg) {\r\n this.initViewState(container, svg);\r\n this.applyTransform(container, svg);\r\n svg.addEventListener('mousedown', (e) => this.onSvgMouseDown(e, container, svg));\r\n }\r\n }\r\n\r\n private initViewState(container: HTMLElement, svg: SVGSVGElement) {\r\n // 获取svg的viewBox或宽高\r\n let vb = svg.getAttribute('viewBox');\r\n let svgW = 0, svgH = 0;\r\n if (vb) {\r\n const arr = vb.split(/\\s+/);\r\n svgW = parseFloat(arr[2]);\r\n svgH = parseFloat(arr[3]);\r\n } else {\r\n svgW = svg.width.baseVal.value || svg.getBoundingClientRect().width;\r\n svgH = svg.height.baseVal.value || svg.getBoundingClientRect().height;\r\n }\r\n const contW = container.clientWidth || 0;\r\n const contH = this.containerHeight;\r\n let scale = 1;\r\n if (svgW && svgH && contW && contH) {\r\n scale = Math.min(contW / svgW, contH / svgH, 1);\r\n }\r\n this.viewStateMap.set(container, {\r\n scale,\r\n offsetX: 0,\r\n offsetY: 0,\r\n dragging: false,\r\n dragStart: { x: 0, y: 0 },\r\n lastOffset: { x: 0, y: 0 },\r\n });\r\n }\r\n\r\n private applyTransform(container: HTMLElement, svg: SVGSVGElement) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state) return;\r\n svg.style.maxWidth = '90%';\r\n svg.style.maxHeight = '90%';\r\n svg.style.position = 'absolute';\r\n svg.style.left = '50%';\r\n svg.style.top = '50%';\r\n svg.style.transform = `translate(-50%, -50%) translate(${state.offsetX}px, ${state.offsetY}px) scale(${state.scale})`;\r\n svg.style.transformOrigin = 'center center';\r\n svg.style.cursor = state.dragging ? 'grabbing' : 'grab';\r\n }\r\n\r\n zoomIn(container: HTMLElement) {\r\n const svg = container.querySelector('svg');\r\n const state = this.viewStateMap.get(container);\r\n if (svg && state) {\r\n state.scale = Math.min(state.scale + 0.2, 3);\r\n this.applyTransform(container, svg);\r\n }\r\n }\r\n\r\n zoomOut(container: HTMLElement) {\r\n const svg = container.querySelector('svg');\r\n const state = this.viewStateMap.get(container);\r\n if (svg && state) {\r\n state.scale = Math.max(state.scale - 0.2, 0.2);\r\n this.applyTransform(container, svg);\r\n }\r\n }\r\n\r\n reset(container: HTMLElement) {\r\n const svg = container.querySelector('svg');\r\n if (svg) {\r\n this.initViewState(container, svg);\r\n this.applyTransform(container, svg);\r\n }\r\n }\r\n\r\n async download(container: HTMLElement, filename: string = 'diagram.png'): Promise<void> {\r\n const svg = container.querySelector('svg');\r\n if (!svg) return;\r\n\r\n try {\r\n const clonedSvg = svg.cloneNode(true) as SVGSVGElement;\r\n\r\n const svgData = new XMLSerializer().serializeToString(clonedSvg);\r\n\r\n const svgUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgData)}`;\r\n\r\n const img = new Image();\r\n await new Promise<void>((resolve, reject) => {\r\n img.onload = () => resolve();\r\n img.onerror = (e) => reject(new Error('Image loading failed'));\r\n img.src = svgUrl;\r\n });\r\n\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) throw new Error('Canvas context not available');\r\n\r\n canvas.width = img.width * 2;\r\n canvas.height = img.height * 2;\r\n\r\n ctx.fillStyle = 'white';\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n ctx.drawImage(img, 0, 0);\r\n\r\n canvas.toBlob((blob) => {\r\n if (!blob) {\r\n console.error('Failed to create blob from canvas');\r\n return;\r\n }\r\n\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n\r\n setTimeout(() => {\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n }, 100);\r\n }, 'image/png');\r\n } catch (error) {\r\n console.error('Failed to download diagram:', error);\r\n }\r\n }\r\n\r\n private onSvgMouseDown(e: MouseEvent, container: HTMLElement, svg: SVGSVGElement) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state) return;\r\n state.dragging = true;\r\n state.dragStart = { x: e.clientX, y: e.clientY };\r\n state.lastOffset = { x: state.offsetX, y: state.offsetY };\r\n const move = (ev: MouseEvent) => this.onSvgMouseMove(ev, container, svg);\r\n const up = () => this.onSvgMouseUp(container, svg, move, up);\r\n document.addEventListener('mousemove', move);\r\n document.addEventListener('mouseup', up);\r\n this.applyTransform(container, svg);\r\n }\r\n private onSvgMouseMove(e: MouseEvent, container: HTMLElement, svg: SVGSVGElement) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state || !state.dragging) return;\r\n state.offsetX = state.lastOffset.x + (e.clientX - state.dragStart.x);\r\n state.offsetY = state.lastOffset.y + (e.clientY - state.dragStart.y);\r\n this.applyTransform(container, svg);\r\n }\r\n private onSvgMouseUp(container: HTMLElement, svg: SVGSVGElement, move: any, up: any) {\r\n const state = this.viewStateMap.get(container);\r\n if (!state) return;\r\n state.dragging = false;\r\n document.removeEventListener('mousemove', move);\r\n document.removeEventListener('mouseup', up);\r\n this.applyTransform(container, svg);\r\n }\r\n\r\n async renderMermaid(code: string, theme: 'light' | 'dark' = 'light'): Promise<string> {\r\n try {\r\n const mermaid = await this.loadMermaid();\r\n if (this.config.theme !== theme) {\r\n mermaid.initialize({\r\n startOnLoad: false,\r\n suppressErrorRendering: true,\r\n theme: theme === 'dark' ? 'dark' : 'default',\r\n ...this.config\r\n });\r\n }\r\n const id = `mc_mermaid_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\r\n const { svg } = await mermaid.render(id, code);\r\n this.lastValidResult = svg;\r\n return svg;\r\n } catch (error) {\r\n return this.lastValidResult;\r\n }\r\n }\r\n\r\n // 设置配置\r\n setConfig(config: MermaidConfig = {}): void {\r\n this.config = {\r\n theme: 'default',\r\n ...config\r\n };\r\n }\r\n}\r\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport type { Token } from 'markdown-it';\r\nimport type { ASTNode, MermaidConfig } from './common/mdCard.types';\r\nimport { defaultTypingConfig } from './common/mdCard.types';\r\nimport { MermaidService } from './common/MermaidService';\r\nimport hljs from 'highlight.js';\r\nimport { MDCardService } from './common/MDCardService';\r\n\r\nexport interface CodeBlockAdapter extends DefaultAdapter {\r\n getContainer(): HTMLElement | null;\r\n highlightCodeChange(code: string, language: string): void;\r\n}\r\n\r\nexport class CodeBlockFoundation extends BaseFoundation<CodeBlockAdapter> {\r\n mermaidService?: MermaidService;\r\n mdCardService: MDCardService;\r\n constructor(adapter: CodeBlockAdapter) {\r\n super({ ...adapter });\r\n this.mdCardService = new MDCardService();\r\n }\r\n\r\n toggleExpand = () => {\r\n this.setState({ expanded: !this.getStates().expanded });\r\n };\r\n\r\n zoomOut = () => {\r\n const container = this._adapter.getContainer();\r\n if (container && this.mermaidService) {\r\n this.mermaidService.zoomOut(container);\r\n }\r\n };\r\n\r\n zoomIn = () => {\r\n const container = this._adapter.getContainer();\r\n if (container && this.mermaidService) {\r\n this.mermaidService.zoomIn(container);\r\n }\r\n };\r\n\r\n checkIsMermaid = () => {\r\n const { enableMermaid, language } = this.getProps();\r\n return enableMermaid && language?.toLowerCase() === 'mermaid';\r\n };\r\n\r\n download = () => {\r\n const container = this._adapter.getContainer();\r\n if (container && this.mermaidService) {\r\n this.mermaidService.download(container);\r\n }\r\n };\r\n\r\n handleCopySuccess = () => {\r\n this.setState({ copied: true });\r\n setTimeout(() => {\r\n this.setState({ copied: false });\r\n }, 1500);\r\n };\r\n\r\n copyCodeInternal() {\r\n const { code } = this.getProps();\r\n if (navigator.clipboard) {\r\n navigator.clipboard.writeText(code).then(() => {\r\n this.handleCopySuccess();\r\n });\r\n } else {\r\n const textarea = document.createElement('textarea');\r\n textarea.style.position = 'fixed';\r\n textarea.style.top = '-9999px';\r\n textarea.style.left = '-9999px';\r\n textarea.style.zIndex = '-1';\r\n textarea.value = code;\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n this.handleCopySuccess();\r\n }\r\n }\r\n\r\n updateHighlightedCode = () => {\r\n const { code, language } = this.getProps();\r\n let highlightedCode = '';\r\n try {\r\n const typeIndex = code.indexOf(`<span class=\"mc-typewriter`);\r\n\r\n if (language && hljs.getLanguage(language)) {\r\n if (typeIndex !== -1) {\r\n highlightedCode =\r\n hljs.highlight(code.slice(0, typeIndex), {\r\n language,\r\n }).value + code.slice(typeIndex);\r\n } else {\r\n highlightedCode = hljs.highlight(code, {\r\n language,\r\n }).value;\r\n }\r\n } else {\r\n if (typeof hljs.highlightAuto !== 'undefined') {\r\n if (typeIndex !== -1) {\r\n highlightedCode =\r\n hljs.highlightAuto(code.slice(0, typeIndex)).value +\r\n code.slice(typeIndex);\r\n } else {\r\n highlightedCode = hljs.highlightAuto(code).value;\r\n }\r\n } else {\r\n highlightedCode = this.mdCardService.filterHtml(code);\r\n }\r\n }\r\n } catch (_) {\r\n highlightedCode = code;\r\n }\r\n this._adapter.highlightCodeChange(highlightedCode, language);\r\n };\r\n\r\n renderMermaid = async () => {\r\n const {\r\n code,\r\n theme,\r\n mermaidConfig,\r\n } = this.getProps();\r\n const { mermaidContentRef} = this.getStates();\r\n const isMermaid = this.checkIsMermaid();\r\n if (!isMermaid || !code || !mermaidContentRef) {\r\n return;\r\n }\r\n\r\n if (!this.mermaidService) {\r\n try {\r\n this.mermaidService = new MermaidService();\r\n const config: MermaidConfig = {\r\n theme: theme === 'dark' ? 'dark' : 'default',\r\n ...mermaidConfig,\r\n };\r\n this.mermaidService.setConfig(config);\r\n } catch (error) {\r\n console.error('Failed to load MermaidService:', error);\r\n return;\r\n }\r\n }\r\n this.nextTick(async () => {\r\n const container = mermaidContentRef.nativeElement;\r\n if (container) {\r\n // 移除打字效果相关的span标签\r\n const cleanCode = code.replace(\r\n /<span[^>]*\\bclass\\s*=\\s*['\"]mc-typewriter[^>]*>([\\s\\S]*?)<\\/span>/g,\r\n `$1`\r\n );\r\n await this.mermaidService?.renderToContainer(\r\n container,\r\n cleanCode,\r\n theme\r\n );\r\n }\r\n });\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n ViewChildren,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { debounceTime, Subject } from 'rxjs';\r\nimport hljs from 'highlight.js';\r\nimport { TemplateRef } from '@angular/core';\r\nimport type { MermaidConfig } from '../components-common/MarkdownCard/common/mdCard.types';\r\nimport BaseComponent from '../Base/base.component';\r\nimport morphdom from 'morphdom';\r\nimport {\r\n CodeBlockAdapter,\r\n CodeBlockFoundation,\r\n} from '../components-common/MarkdownCard/codeblock-foundation';\r\n@Component({\r\n selector: 'mc-code-block',\r\n templateUrl: './code-block.component.html',\r\n standalone: false,\r\n styleUrls: ['./code-block.component.scss'],\r\n})\r\nexport class CodeBlockComponent\r\n extends BaseComponent<CodeBlockFoundation>\r\n implements OnInit, OnChanges\r\n{\r\n @Input() code: string = '';\r\n @Input() language: string = '';\r\n @Input() blockIndex: number = 0;\r\n @Input() theme: 'light' | 'dark' = 'light';\r\n @Input() enableMermaid: boolean = false;\r\n @Input() mermaidConfig: MermaidConfig = {};\r\n @Input() contentTemplate: TemplateRef<any> | null = null;\r\n @Input() headerTemplate: TemplateRef<any> | null = null;\r\n @Input() actionsTemplate: TemplateRef<any> | null = null;\r\n\r\n @ViewChild('rootRef') rootRef!: ElementRef;\r\n @ViewChild('mermaidContent') mermaidContentRef: ElementRef;\r\n @ViewChild('codeElement', { static: false }) codeElementRef: ElementRef;\r\n @ViewChildren('codeElementTemplate')\r\n codeElementTemplates: QueryList<ElementRef>;\r\n\r\n expanded: boolean = true;\r\n copied: boolean = false;\r\n mermaidContent: string = '';\r\n\r\n private _showMermaidDiagram: boolean = true;\r\n get showMermaidDiagram(): boolean {\r\n return this._showMermaidDiagram;\r\n }\r\n set showMermaidDiagram(value: boolean) {\r\n if (this._showMermaidDiagram !== value) {\r\n this._showMermaidDiagram = value;\r\n // 当切换为显示图表且当前是mermaid类型时,渲染图表\r\n if (value && this.isMermaid) {\r\n // 在视图更新后渲染mermaid\r\n setTimeout(() => {\r\n this.renderMermaid();\r\n });\r\n }\r\n }\r\n }\r\n highlightedCode: string = '';\r\n isMermaid: boolean = false;\r\n\r\n private copySubject = new Subject<void>();\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n this.copySubject\r\n .pipe(debounceTime(300))\r\n .subscribe(() => this.copyCodeInternal());\r\n this.foundation = new CodeBlockFoundation(this.adapter);\r\n }\r\n\r\n override get adapter(): CodeBlockAdapter {\r\n return {\r\n ...super.adapter,\r\n getContainer: () => {\r\n return this.mermaidContentRef.nativeElement;\r\n },\r\n highlightCodeChange: (highlightedCode: string, language: string) => {\r\n this.highlightedCode = highlightedCode;\r\n if (this.codeElementRef?.nativeElement) {\r\n const newElement = document.createElement('code');\r\n newElement.className = `hljs language-${language}`;\r\n newElement.innerHTML = highlightedCode;\r\n morphdom(this.codeElementRef.nativeElement, newElement);\r\n }\r\n },\r\n };\r\n }\r\n\r\n switchShowMermaid(show: boolean): void {\r\n this.showMermaidDiagram = show;\r\n if (!this.showMermaidDiagram) {\r\n this.codeElementTemplates.changes.subscribe(() => {\r\n if (this.codeElementRef?.nativeElement && !this.showMermaidDiagram) {\r\n this.codeElementRef.nativeElement.innerHTML = this.highlightedCode;\r\n }\r\n });\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.checkIsMermaid();\r\n this.updateHighlightedCode();\r\n if (this.isMermaid) {\r\n this.renderMermaid();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.updateHighlightedCode();\r\n if (this.isMermaid) {\r\n this.renderMermaid();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['code'] || changes['language']) {\r\n this.checkIsMermaid();\r\n this.updateHighlightedCode();\r\n }\r\n if (changes['enableMermaid'] || changes['theme'] || changes['code']) {\r\n this.checkIsMermaid();\r\n if (this.isMermaid) {\r\n this.renderMermaid();\r\n }\r\n }\r\n if (\r\n changes['showMermaidDiagram'] &&\r\n this.isMermaid &&\r\n this.showMermaidDiagram\r\n ) {\r\n this.renderMermaid();\r\n }\r\n }\r\n\r\n private checkIsMermaid(): void {\r\n this.isMermaid = this.foundation.checkIsMermaid();\r\n }\r\n\r\n private updateHighlightedCode(): void {\r\n setTimeout(() => {\r\n this.foundation.updateHighlightedCode();\r\n });\r\n }\r\n\r\n zoomIn(): void {\r\n this.foundation.zoomIn();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n zoomOut(): void {\r\n this.foundation.zoomOut();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n download(): void {\r\n this.foundation.download();\r\n }\r\n\r\n async renderMermaid(): Promise<void> {\r\n await this.foundation.renderMermaid();\r\n }\r\n\r\n toggleExpand(): void {\r\n this.foundation.toggleExpand();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n copyCode(): void {\r\n this.copySubject.next();\r\n }\r\n\r\n copyCodeInternal(): void {\r\n this.foundation.copyCodeInternal();\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div\r\n class=\"mc-code-block\"\r\n [ngClass]=\"theme === 'dark' ? 'mc-code-block-dark' : 'mc-code-block-light'\"\r\n #rootRef\r\n>\r\n <div class=\"mc-code-block-header\" *ngIf=\"!headerTemplate\">\r\n <span class=\"mc-code-lang\">{{ language }}</span>\r\n <ng-container *ngIf=\"!actionsTemplate\">\r\n <div class=\"mc-code-block-actions\">\r\n <div *ngIf=\"isMermaid\" style=\"margin-right: 8px\">\r\n <ul\r\n class=\"mc-diagram-switch\"\r\n [ngClass]=\"{ 'mc-show-code': !showMermaidDiagram }\"\r\n >\r\n <li\r\n (click)=\"switchShowMermaid(true)\"\r\n [ngClass]=\"{ 'mc-diagram-switch-active': showMermaidDiagram }\"\r\n >\r\n 图表\r\n </li>\r\n <li\r\n (click)=\"switchShowMermaid(false)\"\r\n [ngClass]=\"{ 'mc-diagram-switch-active': !showMermaidDiagram }\"\r\n >\r\n 代码\r\n </li>\r\n </ul>\r\n </div>\r\n <div\r\n *ngIf=\"isMermaid && showMermaidDiagram\"\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n [title]=\"'Md.zoomIn' | translate\"\r\n (click)=\"zoomIn()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"enlarge\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n *ngIf=\"isMermaid && showMermaidDiagram\"\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n title=\"缩小\"\r\n (click)=\"zoomOut()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"zoom-out\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n *ngIf=\"isMermaid && showMermaidDiagram\"\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n title=\"下载\"\r\n (click)=\"download()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g>\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n class=\"mc-action-btn mc-toggle-btn\"\r\n title=\"展开/折叠\"\r\n (click)=\"toggleExpand()\"\r\n >\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </div>\r\n <div\r\n class=\"mc-action-btn mc-copy-btn\"\r\n title=\"复制\"\r\n (click)=\"copyCode()\"\r\n >\r\n @if(copied) {\r\n <span>\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <defs>\r\n <polygon\r\n id=\"path-1\"\r\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\"\r\n ></polygon>\r\n </defs>\r\n <g\r\n id=\"status/whiteBG/correct\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-1\"></use>\r\n </mask>\r\n <use id=\"Mask\" fill=\"#3DCCA6\" xlink:href=\"#path-1\"></use>\r\n </g>\r\n </svg>\r\n </span>\r\n } @else {\r\n <span>\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"页面-1\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <g\r\n transform=\"translate(-592.000000, -204.000000)\"\r\n >\r\n <g\r\n transform=\"translate(560.000000, 180.000000)\"\r\n >\r\n <text\r\n font-family=\"PingFangSC-Regular, PingFang SC\"\r\n font-size=\"12\"\r\n font-weight=\"normal\"\r\n line-spacing=\"16\"\r\n fill=\"#71757F\"\r\n >\r\n <tspan x=\"27.136\" y=\"61\">复制</tspan>\r\n </text>\r\n </g>\r\n <path\r\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\"\r\n fill=\"#71757F\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"actionsTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"actionsTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"headerTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\r\n </ng-container>\r\n\r\n <div [ngClass]=\"{ 'mc-block-hidden': !expanded }\" >\r\n @if (showMermaidDiagram && isMermaid && !contentTemplate) {\r\n <div class=\"mc-mermaid-content\" #mermaidContent></div>\r\n } @else if(!contentTemplate) {\r\n <pre #codeElementTemplate><code #codeElement [ngClass]=\"'hljs language-' + language\" ></code></pre>\r\n } @else {\r\n <ng-container *ngIf=\"contentTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\" [ngTemplateOutletContext]=\"{ $implicit: {code, language}, codeBlockData: {code, language} }\"></ng-template>\r\n </ng-container>\r\n }\r\n </div>\r\n</div>\r\n","import type { Options, PluginSimple, PluginWithOptions, PluginWithParams } from 'markdown-it';\r\nimport type { Token } from 'markdown-it';\r\nexport interface MermaidConfig {\r\n theme?: string;\r\n}\r\n\r\nexport interface CustomXssRule {\r\n key: string;\r\n value: string[] | null;\r\n}\r\n\r\nexport interface CodBlockData {\r\n code: string;\r\n language: string;\r\n}\r\n\r\nexport type CodeBlockSlot = {\r\n actions?: () => void;\r\n header?: () => void;\r\n content?: () => void;\r\n};\r\n\r\nexport type Theme = 'light' | 'dark';\r\n\r\nexport type TypingStyle = 'normal' | 'cursor' | 'color' | 'gradient';\r\n\r\nexport type IntervalType = number | [number, number];\r\n\r\nexport const defaultTypingConfig = {\r\n step: 2,\r\n interval: 50,\r\n style: 'normal' as TypingStyle,\r\n};\r\n\r\nexport interface MdPlugin {\r\n plugin: PluginSimple | PluginWithOptions | PluginWithParams;\r\n opts?: unknown;\r\n}\r\n\r\nexport interface MarkdownCardProps {\r\n content?: string;\r\n typing?: boolean;\r\n enableThink?: boolean;\r\n typingOptions?: {\r\n step?: number;\r\n interval?: number | [number, number];\r\n style?: TypingStyle;\r\n };\r\n thinkOptions?: {\r\n customClass?: string;\r\n };\r\n mdOptions?: Options;\r\n mdPlugins?: Array<MdPlugin>;\r\n customXssRules?: Array<CustomXssRule>;\r\n theme?: Theme;\r\n enableMermaid?: boolean;\r\n mermaidConfig?: MermaidConfig;\r\n}\r\n\r\n// 定义 AST 节点接口\r\nexport interface ASTNode {\r\n nodeType: string;\r\n openNode: Token | null;\r\n closeNode: Token | null;\r\n children: (ASTNode | Token)[];\r\n vNodeKey: string;\r\n}\r\n","import BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport type { Token } from 'markdown-it';\r\nimport type { ASTNode } from './common/mdCard.types';\r\nimport { defaultTypingConfig } from './common/mdCard.types';\r\n\r\nexport interface MarkdownCardAdapter extends DefaultAdapter {\r\n locale(key: string, params?: Record<string, string>): string;\r\n typingStart: () => void;\r\n typingEnd: () => void;\r\n typingEvent: () => void;\r\n parseContent: (content: string) => void;\r\n}\r\n\r\nexport class MarkdownCardFoundation extends BaseFoundation<MarkdownCardAdapter> {\r\n constructor(adapter: MarkdownCardAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n isToken = (node: ASTNode | Token): node is Token => {\r\n return 'type' in node && 'content' in node;\r\n };\r\n\r\n typewriterEnd = () => {\r\n this.setState({ isTyping: false });\r\n this._adapter.typingEnd?.();\r\n };\r\n\r\n getThinkContent = (content: string, thinkOptions: any) => {\r\n const thinkClass = thinkOptions?.customClass || 'mc-think-block';\r\n return (\r\n content\r\n ?.replace('<think>', `<div class=\"${thinkClass}\">`)\r\n ?.replace('</think>', '\\n\\n</div>\\n\\n') || ''\r\n );\r\n };\r\n\r\n parseTypingContent = (content: string) => {\r\n const { typingOptions } = this.getProps();\r\n const { typingIndex } = this.getStates();\r\n content = content.slice(0, typingIndex) || '';\r\n const options = { ...defaultTypingConfig, ...typingOptions };\r\n\r\n if (options.style === 'cursor') {\r\n content += `<span class=\"mc-typewriter mc-typewriter-cursor\">|</span>`;\r\n } else if (options.style === 'color' || options.style === 'gradient') {\r\n content =\r\n content.slice(0, -5) +\r\n `<span class=\"mc-typewriter mc-typewriter-${\r\n options.style\r\n }\">${content.slice(-5)}</span>`;\r\n }\r\n return content || '';\r\n };\r\n\r\n parseContent = () => {\r\n const { content, thinkOptions, enableThink } = this.getProps();\r\n const { typing, isTyping } = this.getStates();\r\n let parseContent = content || '';\r\n if (typing && isTyping) {\r\n parseContent = this.parseTypingContent(content);\r\n }\r\n\r\n if (enableThink) {\r\n parseContent = this.getThinkContent(content, thinkOptions);\r\n }\r\n\r\n parseContent = this._adapter.parseContent(parseContent);\r\n };\r\n\r\n typewriterStart = () => {\r\n const { typingOptions } = this.getProps();\r\n const { timer } = this.getStates();\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n this.setState({ isTyping: true });\r\n this._adapter.typingStart?.();\r\n const options = { ...defaultTypingConfig, ...typingOptions };\r\n\r\n const typingStep = () => {\r\n const { typingIndex, content } = this.getStates();\r\n\r\n let step = options.step || 2;\r\n if (Array.isArray(options.step)) {\r\n step =\r\n options.step[0] +\r\n Math.floor(Math.random() * (options.step[1] - options.step[0]));\r\n }\r\n let index = typingIndex + step;\r\n this.setState({ typingIndex: index });\r\n this.parseContent();\r\n this._adapter.typingEvent();\r\n\r\n if (index >= content!.length) {\r\n this.typewriterEnd();\r\n this.parseContent();\r\n return;\r\n }\r\n\r\n let typingTimeout = setTimeout(\r\n typingStep,\r\n typeof options.interval === 'number' ? options.interval : 50\r\n );\r\n this.setState({\r\n timer: typingTimeout,\r\n });\r\n };\r\n\r\n let typingStepTimeout = setTimeout(typingStep);\r\n this.setState({\r\n timer: typingStepTimeout,\r\n });\r\n };\r\n}\r\n","import type { Token } from \"markdown-it\";\r\nimport type { ASTNode } from './mdCard.types';\r\n// 判断是否自闭合标签\r\nexport const isSelfClosingTag = (token: Token): boolean => {\r\n // 判断token.content里面是否包含完整的HTML结构(所有开始标签都有对应的结束标签)\r\n const content = token.content || '';\r\n\r\n // 检查是否是自闭合标签(如 <img />, <br /> 等)\r\n if (content.match(/<(\\w+)[^>]*\\/>/)) {\r\n return true;\r\n }\r\n\r\n // 检查是否包含完整的HTML结构\r\n const tagStack: string[] = [];\r\n const openTagRegex = /<(\\w+)[^>]*>/g;\r\n const closeTagRegex = /<\\/(\\w+)>/g;\r\n\r\n let openMatch;\r\n let closeMatch;\r\n\r\n // 重置正则表达式的lastIndex\r\n openTagRegex.lastIndex = 0;\r\n closeTagRegex.lastIndex = 0;\r\n\r\n // 按顺序处理所有标签\r\n const allMatches: Array<{ type: 'open' | 'close', tagName: string, index: number }> = [];\r\n\r\n // 收集所有开始标签\r\n while ((openMatch = openTagRegex.exec(content)) !== null) {\r\n allMatches.push({\r\n type: 'open',\r\n tagName: openMatch[1],\r\n index: openMatch.index\r\n });\r\n }\r\n\r\n // 收集所有结束标签\r\n while ((closeMatch = closeTagRegex.exec(content)) !== null) {\r\n allMatches.push({\r\n type: 'close',\r\n tagName: closeMatch[1],\r\n index: closeMatch.index\r\n });\r\n }\r\n\r\n // 按位置排序\r\n allMatches.sort((a, b) => a.index - b.index);\r\n\r\n // 检查标签是否完全匹配\r\n for (const match of allMatches) {\r\n if (match.type === 'open') {\r\n tagStack.push(match.tagName);\r\n } else {\r\n if (tagStack.length === 0) {\r\n return false; // 没有对应的开始标签\r\n }\r\n const lastOpenTag = tagStack[tagStack.length - 1];\r\n if (lastOpenTag !== match.tagName) {\r\n return false; // 标签不匹配\r\n }\r\n tagStack.pop();\r\n }\r\n }\r\n\r\n // 只有当所有标签都正确匹配时,才认为是自闭合的\r\n return tagStack.length === 0;\r\n}\r\n\r\n// 判断是否是结束标签\r\nexport const isClosingTag = (openToken: Token, closeToken: Token): boolean => {\r\n const openContent = openToken?.content || '';\r\n const closeContent = closeToken?.content || '';\r\n\r\n const openTagMatch = openContent.match(/<(\\w+)/);\r\n const closeTagMatch = closeContent.match(/<\\/(\\w+)/);\r\n\r\n if (openTagMatch && closeTagMatch) {\r\n return openTagMatch[1] === closeTagMatch[1];\r\n }\r\n\r\n return false;\r\n}\r\n\r\n// 创建ast树节点\r\nexport const genTreeNode = (node: Token | null): ASTNode => {\r\n return {\r\n nodeType: node ? node.type.replace('_open', '') : 'root',\r\n openNode: node,\r\n closeNode: null,\r\n children: [],\r\n vNodeKey: (node as any)?.vNodeKey || ''\r\n };\r\n};\r\n\r\n// 匹配成对html token\r\nexport const matchHtmlToken = (token: Token, stack: Token[]) => {\r\n // 简单排除单独的闭合标签\r\n const isCloseTag = token.content.startsWith('</');\r\n if (!stack.length) {\r\n token.nesting = isCloseTag ? 0 : 1;\r\n stack.push(token);\r\n return;\r\n }\r\n // 判断当前token是否是上一个html token的闭合标签\r\n const prevToken = stack[stack.length - 1];\r\n const closing = isClosingTag(prevToken, token);\r\n if (closing) {\r\n token.nesting = -1;\r\n stack.pop();\r\n } else {\r\n if (isCloseTag) {\r\n token.nesting = 0;\r\n } else {\r\n token.nesting = 1;\r\n stack.push(token);\r\n }\r\n }\r\n}\r\n\r\nexport const isValidTagName = (tagName: string | undefined): boolean => {\r\n if (!tagName) return false\r\n try {\r\n document.createElement(tagName)\r\n return true\r\n } catch (error) {\r\n return false\r\n }\r\n}\r\n\r\nexport const tokensToAst = (tokens: Token[]) => {\r\n // 递归处理 inline 类型的 token\r\n const processInlineToken = (token: Token): ASTNode => {\r\n const node = genTreeNode(token);\r\n\r\n // 如果 token 有 children,递归处理它们\r\n if (token.children && token.children.length > 0) {\r\n node.children = tokensToAst(token.children);\r\n }\r\n\r\n return node;\r\n };\r\n\r\n // 创建根节点\r\n const rootNode = genTreeNode(null);\r\n let curr: ASTNode = rootNode;\r\n const stack: ASTNode[] = [];\r\n const htmlInlineTokenStack: Token[] = [];\r\n const htmlBlockTokenStack: Token[] = [];\r\n // 处理html token nesting值\r\n tokens.forEach((tok: Token, idx: number) => {\r\n (tok as any).vNodeKey = `mc-markdown-content-key-${idx}`;\r\n (tok as any).tokenIndex = idx;\r\n\r\n if (tok.type.includes('html_')) {\r\n if (isSelfClosingTag(tok)) {\r\n tok.nesting = 0;\r\n return;\r\n }\r\n\r\n const stack =\r\n tok.type === 'html_block'\r\n ? htmlBlockTokenStack\r\n : htmlInlineTokenStack;\r\n\r\n matchHtmlToken(tok, stack);\r\n }\r\n });\r\n\r\n tokens.forEach((tok: Token, idx: number) => {\r\n let tmp: ASTNode;\r\n if (tok.nesting === 1) {\r\n // 开始标签\r\n tmp = genTreeNode(tok);\r\n curr.children.push(tmp);\r\n stack.push(curr);\r\n curr = tmp;\r\n } else if (tok.nesting === -1) {\r\n // 结束标签\r\n curr.closeNode = tok;\r\n if (!stack.length) {\r\n throw new Error('AST stack underflow.');\r\n }\r\n tmp = stack.pop()!;\r\n curr = tmp;\r\n } else if (tok.nesting === 0) {\r\n // 自闭合标签或 inline 内容\r\n if (tok.type === 'inline' && tok.children && tok.children.length > 0) {\r\n // 对于 inline 类型,递归处理其 children\r\n const inlineNode = processInlineToken(tok);\r\n curr.children.push(inlineNode);\r\n } else {\r\n // 普通 token,直接添加\r\n curr.children.push(tok);\r\n }\r\n } else {\r\n throw new Error(`Invalid nesting level found in token index ${idx}.`);\r\n }\r\n });\r\n\r\n if (stack.length !== 0) {\r\n // throw new Error('Unbalanced block open/close tokens.');\r\n }\r\n return rootNode.children as ASTNode[];\r\n };\r\n\r\n/**\r\n * 递归查找所有层级中 className 包含 code-block-wrapper 的 DIV 节点\r\n * @param {Array} vnodes - 待查找的 vnode 列表\r\n * @returns {Array} 符合条件的节点列表\r\n */\r\nexport function findCodeBlockWrappers(vnodes: any[]): any[] {\r\n const result: any[] = [];\r\n\r\n // 遍历当前层级的 vnode\r\n vnodes.forEach((node: any) => {\r\n // 检查当前节点是否符合条件\r\n if (node.nodeName === 'DIV' && node.className?.includes('code-block-wrapper')) {\r\n result.push(node);\r\n }\r\n\r\n // 递归处理子节点(如果存在子节点且为数组)\r\n if (node.childNodes?.length) {\r\n result.push(...findCodeBlockWrappers(node.childNodes));\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * 清空Dom节点的所有子节点\r\n * @param {HTMLElement} element - 需要清空的Dom节点\r\n * @returns {void}\r\n */\r\nexport function clearElementChildren(element: HTMLElement): void {\r\n if (typeof element.replaceChildren === 'function') {\r\n element.replaceChildren();\r\n } else {\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n }\r\n}\r\n\r\n// 声明一个utils静态默认导出\r\nexport default {\r\n isSelfClosingTag,\r\n isClosingTag,\r\n tokensToAst,\r\n genTreeNode,\r\n matchHtmlToken,\r\n isValidTagName,\r\n findCodeBlockWrappers,\r\n clearElementChildren,\r\n}\r\n","import morphdom from 'morphdom';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n SimpleChanges,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n Renderer2,\r\n ViewContainerRef,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport markdownit from 'markdown-it';\r\nimport type { Token } from 'markdown-it';\r\nimport { MDCardService } from '../components-common/MarkdownCard/common/MDCardService';\r\nimport type { ASTNode } from '../components-common/MarkdownCard/common/mdCard.types';\r\nimport { CodeBlockComponent } from './code-block.component';\r\nimport {\r\n MarkdownCardProps,\r\n defaultTypingConfig,\r\n} from '../components-common/MarkdownCard/common/mdCard.types';\r\nimport BaseComponent from '../Base/base.component';\r\nimport {\r\n MarkdownCardAdapter,\r\n MarkdownCardFoundation,\r\n} from '../components-common/MarkdownCard/foundation';\r\nimport MdParserUtils from '../components-common/MarkdownCard/common/parser';\r\n\r\n@Component({\r\n selector: 'mc-markdown-card',\r\n standalone: false,\r\n templateUrl: './markdown-card.component.html',\r\n styleUrls: ['./markdown-card.component.scss'],\r\n})\r\nexport class MarkdownCardComponent\r\n extends BaseComponent<MarkdownCardFoundation>\r\n implements OnInit, OnChanges, OnDestroy\r\n{\r\n @Input() content: string = '';\r\n @Input() typing: boolean = false;\r\n @Input() enableThink: boolean = false;\r\n @Input() typingOptions: MarkdownCardProps['typingOptions'] | any = {};\r\n @Input() thinkOptions: MarkdownCardProps['thinkOptions'] = {};\r\n @Input() mdOptions: MarkdownCardProps['mdOptions'] = {};\r\n @Input() mdPlugins: MarkdownCardProps['mdPlugins'] = [];\r\n @Input() customXssRules: MarkdownCardProps['customXssRules'] = [];\r\n @Input() theme: 'light' | 'dark' | any = 'light';\r\n @Input() enableMermaid: boolean = false;\r\n @Input() incrementalDom: boolean = true;\r\n @Input() mermaidConfig: MarkdownCardProps['mermaidConfig'] = {};\r\n @Input() actionsTemplate: TemplateRef<any> | null = null;\r\n @Input() headerTemplate: TemplateRef<any> | null = null;\r\n @Input() contentTemplate: TemplateRef<any> | null = null;\r\n\r\n // 组件缓存映射表,用于存储已创建的CodeBlockComponent实例\r\n private codeBlockComponentsCache: Map<\r\n string,\r\n { componentRef: any; container: HTMLElement }\r\n > = new Map();\r\n\r\n @Output() afterMdtInit = new EventEmitter<markdownit>();\r\n @Output() mdRenderChange = new EventEmitter<string>();\r\n @Output() typingStart = new EventEmitter<void>();\r\n @Output() typingEvent = new EventEmitter<void>();\r\n @Output() typingEnd = new EventEmitter<void>();\r\n\r\n @ViewChild('markdownContainer', { read: ViewContainerRef, static: true })\r\n markdownContainer!: ViewContainerRef;\r\n\r\n private mdt: markdownit;\r\n typingIndex: number = 0;\r\n isTyping: boolean = false;\r\n timer: number | null = null;\r\n parser = MdParserUtils;\r\n mdCardService: MDCardService;\r\n\r\n constructor(private renderer: Renderer2, public cdr: ChangeDetectorRef) {\r\n super();\r\n this.mdt = markdownit({\r\n breaks: true,\r\n linkify: true,\r\n html: true,\r\n highlight: (str, lang) => {\r\n // 与Vue组件保持一致的高亮处理\r\n return '';\r\n },\r\n ...this.mdOptions,\r\n });\r\n this.mdCardService = new MDCardService();\r\n this.foundation = new MarkdownCardFoundation(this.adapter);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\r\n this.mdCardService.setCustomXssRules(this.customXssRules || []);\r\n this.parseContent();\r\n this.afterMdtInit.emit(this.mdt);\r\n }\r\n\r\n override get adapter(): MarkdownCardAdapter {\r\n return {\r\n ...super.adapter,\r\n locale: (key: string, params?: Record<string, string>) =>\r\n this.adapter.locale(key, params),\r\n typingStart: () => this.typingStart.emit(),\r\n typingEnd: () => this.typingEnd.emit(),\r\n typingEvent: () => this.typingEvent.emit(),\r\n parseContent: (content: string) => {\r\n // 解析 Markdown 内容\r\n const tokens: any = this.mdt.parse(content, {});\r\n const ast = this.parser.tokensToAst(tokens);\r\n const vnodes = this.astToVnodes(ast);\r\n this.renderContent(vnodes);\r\n },\r\n };\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['content']) {\r\n this.contentChange(changes['content']);\r\n }\r\n\r\n if (changes['customXssRules'] && !changes['customXssRules'].firstChange) {\r\n this.mdCardService.setCustomXssRules(this.customXssRules || []);\r\n this.parseContent();\r\n }\r\n\r\n if (\r\n (changes['enableThink'] && !changes['enableThink'].firstChange) ||\r\n (changes['thinkOptions'] && !changes['thinkOptions'].firstChange) ||\r\n (changes['theme'] && !changes['theme'].firstChange)\r\n ) {\r\n this.parseContent();\r\n }\r\n\r\n if (changes['mdPlugins'] && !changes['mdPlugins'].firstChange) {\r\n this.mdCardService.setMdPlugins(this.mdPlugins || [], this.mdt);\r\n this.parseContent();\r\n }\r\n }\r\n\r\n contentChange(change) {\r\n if (this.content?.indexOf(change.previousValue) === -1) {\r\n this.clearCodeBlockCache();\r\n }\r\n if (!this.typing) {\r\n this.typingIndex = this.content?.length || 0;\r\n this.parseContent();\r\n } else {\r\n if (this.content?.indexOf(change.previousValue) === -1) {\r\n this.typingIndex = 0;\r\n }\r\n // 使用setTimeout模拟Vue的nextTick行为\r\n setTimeout(() => this.typewriterStart());\r\n }\r\n }\r\n\r\n private parseContent() {\r\n this.foundation.parseContent();\r\n }\r\n\r\n private renderContent(vnodes) {\r\n if (!this.markdownContainer || !this.markdownContainer.element) {\r\n return;\r\n }\r\n\r\n if (!this.incrementalDom) {\r\n this.renderContentNoDiff(vnodes);\r\n return;\r\n }\r\n\r\n const container = this.markdownContainer.element.nativeElement;\r\n const parser = new DOMParser();\r\n const newContainerDiv = parser.parseFromString(`<div></div>`, 'text/html');\r\n const codeBlockWrappers = this.parser.findCodeBlockWrappers(vnodes);\r\n\r\n vnodes.forEach((node) => {\r\n if (\r\n node &&\r\n (node.nodeType ||\r\n typeof node === 'string' ||\r\n node instanceof HTMLElement)\r\n ) {\r\n if (codeBlockWrappers.includes(node)) {\r\n newContainerDiv.body.firstChild?.appendChild(\r\n this.getEmptyCodeBlock(node)\r\n );\r\n } else {\r\n newContainerDiv.body.firstChild?.appendChild(node);\r\n }\r\n }\r\n });\r\n let newContainerDivHTML =\r\n (newContainerDiv.body?.firstChild as HTMLElement)?.outerHTML || '';\r\n const filteredHTML = this.mdCardService.filterHtml(newContainerDivHTML);\r\n\r\n // 使用morphdom进行DOM更新\r\n const newElement = document.createElement('div');\r\n newElement.innerHTML = filteredHTML;\r\n morphdom(container, filteredHTML, {\r\n onBeforeElUpdated: (fromEl, toEl) => {\r\n if (\r\n fromEl.nodeName === 'DIV' &&\r\n fromEl.classList.contains('code-block-wrapper') &&\r\n toEl.nodeName === 'DIV' &&\r\n toEl.classList.contains('code-block-wrapper') &&\r\n fromEl.getAttribute('key') === toEl.getAttribute('key') &&\r\n this.codeBlockComponentsCache.has(fromEl.getAttribute('key') || '')\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n });\r\n // 将codeBlockWrappers中的每个div元素替换container中的对应key属性的元素\r\n codeBlockWrappers.forEach((newCodeBlock) => {\r\n if (\r\n newCodeBlock &&\r\n newCodeBlock.attributes &&\r\n newCodeBlock.attributes.key\r\n ) {\r\n const key = newCodeBlock?.attributes?.key?.value;\r\n const existingElement = container.querySelector(`[key=\"${key}\"]`);\r\n if (\r\n existingElement &&\r\n newCodeBlock instanceof HTMLElement &&\r\n existingElement !== newCodeBlock &&\r\n newCodeBlock?.firstChild\r\n ) {\r\n MdParserUtils.clearElementChildren(existingElement);\r\n existingElement.appendChild(newCodeBlock?.firstChild);\r\n }\r\n }\r\n });\r\n this.mdRenderChange.emit(newContainerDivHTML);\r\n }\r\n\r\n private getEmptyCodeBlock(node) {\r\n const codeNode = document.createElement('div');\r\n codeNode.className = 'code-block-wrapper';\r\n codeNode.setAttribute('key', node?.attributes?.key?.value);\r\n return codeNode;\r\n }\r\n\r\n private astToVnodes(nodes: ASTNode[]) {\r\n return nodes.map((node) => this.processASTNode(node));\r\n }\r\n\r\n private processASTNode(node: ASTNode | Token | any) {\r\n if (node.nodeType === 'html_inline' || node.nodeType === 'html_block') {\r\n return this.processHTMLNode(node);\r\n }\r\n\r\n if (node.nodeType === 'inline') {\r\n return this.processInlineToken(node);\r\n }\r\n if (this.foundation.isToken(node)) {\r\n return this.processToken(node);\r\n }\r\n\r\n return this.processASTNodeInternal(node);\r\n }\r\n\r\n private processHTMLNode(node: ASTNode) {\r\n if (!node.openNode?.content) return;\r\n\r\n const parser = new DOMParser();\r\n const tagName = node.nodeType === 'html_block' ? 'div' : 'span';\r\n const containerDocument = parser.parseFromString(\r\n `<${tagName}>${node.openNode.content}</${tagName}>`,\r\n 'text/html'\r\n );\r\n const containerBody = containerDocument.body.firstChild;\r\n // 处理子节点\r\n if (node.children && node.children.length > 0) {\r\n node.children.forEach((child) => {\r\n const childVnode = this.processASTNode(child as any);\r\n if (childVnode && containerBody) {\r\n (containerBody?.firstChild || containerBody).appendChild(childVnode);\r\n }\r\n });\r\n }\r\n return containerBody;\r\n }\r\n\r\n private renderContentNoDiff(vnodes) {\r\n const container = this.markdownContainer.element.nativeElement;\r\n const newContentFragement = this.renderer.createElement('div');\r\n vnodes.forEach((node) => {\r\n if (\r\n node &&\r\n (node.nodeType ||\r\n typeof node === 'string' ||\r\n node instanceof HTMLElement)\r\n ) {\r\n newContentFragement.appendChild(node);\r\n }\r\n });\r\n while (container.firstChild) {\r\n container.removeChild(container.firstChild);\r\n }\r\n container.appendChild(newContentFragement);\r\n }\r\n\r\n private processInlineToken(node: ASTNode | any) {\r\n let html = '';\r\n try {\r\n if (!node.openNode) {\r\n return null;\r\n }\r\n html = this.mdt.renderer.render([node.openNode], this.mdt.options, {});\r\n } catch (error) {\r\n console.error('Error rendering inline token:', node);\r\n return null;\r\n }\r\n\r\n // 将HTML字符串转换为DOM节点\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(`<div>${html}</div>`, 'text/html');\r\n const token = doc.body.firstChild;\r\n // 如果只有一个子节点,直接返回子节点而不是包含div\r\n if (token && token.childNodes.length === 1) {\r\n return token.firstChild;\r\n }\r\n return token;\r\n }\r\n\r\n private processFenceNode(token: Token) {\r\n const language =\r\n token.info?.replace(/<span\\b[^>]*>/i, '').replace('</span>', '') || '';\r\n const code = token.content || '';\r\n return this.createCodeBlock(language, code, (token as any).tokenIndex || 0);\r\n }\r\n\r\n private processASTNodeInternal(node: ASTNode | any) {\r\n let tagName = 'div';\r\n if (node.openNode?.tag && this.parser.isValidTagName(node.openNode?.tag)) {\r\n tagName = node.openNode?.tag;\r\n }\r\n const element = this.renderer.createElement(tagName);\r\n\r\n // 设置属性\r\n if (node.openNode.attrs) {\r\n node.openNode.attrs.forEach(([key, value]) => {\r\n this.renderer.setAttribute(element, key, value);\r\n });\r\n }\r\n\r\n // 特殊处理fence类型的token\r\n if (node.openNode.type === 'fence') {\r\n return this.processFenceNode(node.openNode as unknown as Token);\r\n }\r\n\r\n // 处理所有带tag的AST节点\r\n if (node.openNode?.tag) {\r\n let tagName = this.parser.isValidTagName(node.openNode?.tag)\r\n ? node.openNode?.tag\r\n : 'div';\r\n const element = this.renderer.createElement(tagName);\r\n\r\n // 递归处理所有子节点并添加到当前元素\r\n node.children.forEach((child) => {\r\n const childNode = this.processASTNode(child);\r\n if (childNode) {\r\n element.appendChild(childNode);\r\n }\r\n });\r\n return element;\r\n }\r\n\r\n node.children.forEach((child) => {\r\n const childNode = this.processASTNode(child);\r\n if (childNode) {\r\n element.appendChild(childNode);\r\n }\r\n });\r\n return element;\r\n }\r\n\r\n private processToken(token: Token) {\r\n if (token.type === 'text') {\r\n return this.renderer.createText(token.content || '');\r\n }\r\n\r\n if (token.type === 'inline') {\r\n return this.processInlineToken(token);\r\n }\r\n\r\n if (token.type === 'fence') {\r\n return this.processFenceNode(token);\r\n }\r\n\r\n if (token.type === 'softbreak') {\r\n if (this.mdt.options.breaks) {\r\n return this.renderer.createElement('br');\r\n } else {\r\n return this.renderer.createText('\\n');\r\n }\r\n }\r\n\r\n if (token.type === 'html_block' || token.type === 'html_inline') {\r\n const parser = new DOMParser();\r\n const tagName = token.type === 'html_block' ? 'div' : 'span';\r\n const doc = parser.parseFromString(\r\n `<${tagName}>${token.content}</${tagName}>`,\r\n 'text/html'\r\n );\r\n const tokenDom = doc.body;\r\n // 如果只有一个子节点,直接返回子节点而不是包含div\r\n if (tokenDom.firstChild && tokenDom.childNodes.length === 1) {\r\n return tokenDom.firstChild;\r\n }\r\n return tokenDom;\r\n }\r\n\r\n if (token.tag) {\r\n const tagName = this.parser.isValidTagName(token.tag) ? token.tag : 'div';\r\n const element = this.renderer.createElement(tagName);\r\n\r\n if (token.attrs) {\r\n token.attrs.forEach(([key, value]) => {\r\n this.renderer.setAttribute(element, key, value);\r\n });\r\n }\r\n\r\n // 设置内容\r\n if (token.content) {\r\n const textNode = this.renderer.createText(token.content);\r\n element.appendChild(textNode);\r\n }\r\n return element;\r\n }\r\n\r\n return this.renderer.createText(token.content || '');\r\n }\r\n\r\n private createCodeBlock(language: string, code: string, blockIndex: number) {\r\n const key = `code-block-${blockIndex}`;\r\n\r\n // 检查缓存中是否已存在相同blockIndex的组件\r\n if (this.codeBlockComponentsCache.has(key)) {\r\n const cachedItem = this.codeBlockComponentsCache.get(key);\r\n if (cachedItem) {\r\n // 更新现有组件的属性\r\n const componentRef = cachedItem.componentRef;\r\n componentRef.setInput('language', language);\r\n componentRef.setInput('code', code);\r\n componentRef.setInput('theme', this.theme);\r\n\r\n // 触发变更检测\r\n componentRef.changeDetectorRef.detectChanges();\r\n // 返回缓存的容器,无需重新创建\r\n return cachedItem.container;\r\n }\r\n }\r\n\r\n // 缓存中不存在,创建新组件\r\n const codeBlockContainer = this.renderer.createElement('div');\r\n this.renderer.setAttribute(codeBlockContainer, 'key', key);\r\n\r\n const componentRef = this.markdownContainer.createComponent(\r\n CodeBlockComponent,\r\n {\r\n projectableNodes: [],\r\n injector: this.markdownContainer.injector,\r\n }\r\n );\r\n\r\n // 设置组件属性\r\n componentRef.instance.language = language;\r\n componentRef.instance.code = code;\r\n componentRef.instance.blockIndex = blockIndex;\r\n componentRef.instance.theme = this.theme;\r\n componentRef.instance.enableMermaid = this.enableMermaid;\r\n componentRef.instance.mermaidConfig = this.mermaidConfig || {};\r\n componentRef.instance.actionsTemplate = this.actionsTemplate;\r\n componentRef.instance.headerTemplate = this.headerTemplate;\r\n componentRef.instance.contentTemplate = this.contentTemplate;\r\n\r\n // 触发变更检测\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n // 将组件的DOM元素附加到容器中\r\n this.renderer.appendChild(\r\n codeBlockContainer,\r\n componentRef.location.nativeElement\r\n );\r\n\r\n // 添加样式类\r\n this.renderer.addClass(codeBlockContainer, 'code-block-wrapper');\r\n\r\n // 缓存组件实例和容器\r\n this.codeBlockComponentsCache.set(key, {\r\n componentRef: componentRef,\r\n container: codeBlockContainer,\r\n });\r\n\r\n // 返回创建的DOM容器\r\n return codeBlockContainer;\r\n }\r\n\r\n private typewriterStart(): void {\r\n this.foundation.typewriterStart();\r\n }\r\n\r\n clearCodeBlockCache() {\r\n this.codeBlockComponentsCache.forEach((cachedItem) => {\r\n cachedItem.componentRef.destroy();\r\n });\r\n this.codeBlockComponentsCache.clear();\r\n }\r\n\r\n // 在组件销毁时清理缓存,避免内存泄漏\r\n override ngOnDestroy(): void {\r\n this.clearCodeBlockCache();\r\n }\r\n}\r\n","<div class=\"mc-markdown-render\" [ngClass]=\"theme === 'dark' ? 'mc-markdown-render-dark' : 'mc-markdown-render-light'\">\r\n <div #markdownContainer></div>\r\n</div>\r\n<ng-content></ng-content>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslatePipe } from '../Locale';\r\nimport { MarkdownCardComponent } from './markdown-card.component';\r\nimport { CodeBlockComponent } from './code-block.component';\r\nimport { LocaleModule } from '../Locale';\r\n@NgModule({\r\n declarations: [\r\n CodeBlockComponent,\r\n MarkdownCardComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslatePipe,\r\n LocaleModule,\r\n \r\n ],\r\n exports: [\r\n CodeBlockComponent,\r\n MarkdownCardComponent\r\n ],\r\n providers: [\r\n ],\r\n bootstrap: []\r\n})\r\nexport class MarkdownCardModule {\r\n static forRoot(): ModuleWithProviders<MarkdownCardModule> {\r\n return {\r\n ngModule: MarkdownCardModule,\r\n providers: [\r\n ]\r\n };\r\n }\r\n}","// Mention组件的公共常量定义\r\nexport const MentionSeparator = ' ';\r\nexport const ArrowLeft = 'ArrowLeft';\r\nexport const ArrowRight = 'ArrowRight';\r\nexport const ArrowUp = 'ArrowUp';\r\nexport const ArrowDown = 'ArrowDown';\r\nexport const Escape = 'Escape';","import { MentionProps, SearchChangeEvent, Trigger } from './common/mention-types';\r\nimport { MentionSeparator, ArrowLeft, ArrowRight, ArrowUp, ArrowDown, Escape } from './common/mention-constants';\r\nimport BaseFoundation, { DefaultAdapter } from '../Base/foundation';\r\nimport { computePosition, offset, autoUpdate } from '@floating-ui/dom';\r\nimport { debounce, isObject } from 'lodash-es';\r\n\r\nexport interface MentionAdapter extends DefaultAdapter {\r\n updateModelValue: (val: boolean) => void;\r\n searchChange: (event: SearchChangeEvent) => void;\r\n activeIndexChange: (index: number) => void;\r\n toggleChange: (val: boolean) => void;\r\n}\r\n\r\nexport class MentionFoundation extends BaseFoundation<MentionAdapter> {\r\n private props: MentionProps;\r\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\r\n private originEl: HTMLElement | null = null;\r\n private overlayEl: HTMLElement | null = null;\r\n private currentTrigger: string = '';\r\n private currentSearchValue: string = '';\r\n private currentTriggerIndex: number = -1;\r\n private currentCursorIndex: number = -1;\r\n private autoUpdateCleanup: (() => void) | null = null;\r\n\r\n constructor(adapter: MentionAdapter) {\r\n super({ ...adapter });\r\n this.props = {\r\n modelValue: false,\r\n prefix: [],\r\n fitHostWidth: true,\r\n optionsCount: 0,\r\n ...this.getProps()\r\n };\r\n \r\n // 创建防抖版本的handleInput方法\r\n this.handleInput = debounce(this.handleInput, 300);\r\n }\r\n\r\n // 更新配置选项\r\n updateOptions(options: Partial<MentionProps>) {\r\n this.props = { ...this.props, ...options };\r\n this.updateOverlayPosition();\r\n }\r\n\r\n // 设置输入元素\r\n setInputEl(el: HTMLInputElement | HTMLTextAreaElement | null) {\r\n this.inputEl = el;\r\n }\r\n\r\n // 设置原点元素\r\n setOriginEl(el: HTMLElement | null) {\r\n this.originEl = el;\r\n this.updateOverlayPosition();\r\n }\r\n\r\n // 设置覆盖层元素\r\n setOverlayEl(el: HTMLElement | null) {\r\n this.overlayEl = el;\r\n this.updateOverlayPosition();\r\n }\r\n\r\n // 初始化事件\r\n initEvents() {\r\n if (this.inputEl) {\r\n this.inputEl.addEventListener('input', this.handleInput);\r\n this.inputEl.addEventListener('keydown', this.handleKeyDown as EventListener);\r\n this.inputEl.addEventListener('click', this.handleClick);\r\n }\r\n // 监听文档点击事件,用于处理点击外部关闭下拉菜单\r\n document.addEventListener('click', this.handleDocumentClick);\r\n }\r\n\r\n // 销毁事件\r\n override destroy() {\r\n if (this.inputEl) {\r\n this.inputEl.removeEventListener('input', this.handleInput);\r\n this.inputEl.removeEventListener('keydown', this.handleKeyDown as EventListener);\r\n this.inputEl.removeEventListener('click', this.handleClick);\r\n }\r\n // 移除文档点击事件监听\r\n document.removeEventListener('click', this.handleDocumentClick);\r\n // 清理autoUpdate\r\n if (this.autoUpdateCleanup) {\r\n this.autoUpdateCleanup();\r\n this.autoUpdateCleanup = null;\r\n }\r\n this.inputEl = null;\r\n this.originEl = null;\r\n this.overlayEl = null;\r\n }\r\n\r\n // 重置Mention状态\r\n resetMention() {\r\n this.currentTrigger = '';\r\n this.currentSearchValue = '';\r\n this.currentTriggerIndex = -1;\r\n this.currentCursorIndex = -1;\r\n this.updateModelValue(false);\r\n }\r\n\r\n // 更新模型值\r\n private updateModelValue(val: boolean) {\r\n if (this.props.modelValue !== val) {\r\n this.props.modelValue = val;\r\n this._adapter.updateModelValue(val);\r\n this._adapter.toggleChange(val);\r\n }\r\n }\r\n\r\n // 处理输入事件\r\n handleInput = () => {\r\n if (!this.inputEl) return;\r\n\r\n const value = this.inputEl.value;\r\n const cursorPosition = this.inputEl.selectionStart || 0;\r\n\r\n // 检查是否匹配触发词\r\n const matchResult = this.checkPrefixMatch(value, cursorPosition);\r\n if (matchResult) {\r\n const { trigger, triggerIndex, searchValue } = matchResult;\r\n this.currentTrigger = trigger;\r\n this.currentSearchValue = searchValue;\r\n this.currentTriggerIndex = triggerIndex;\r\n this.currentCursorIndex = cursorPosition;\r\n\r\n // 触发搜索变化事件\r\n this._adapter.searchChange({\r\n value: searchValue,\r\n trigger,\r\n triggerIndex,\r\n cursorIndex: cursorPosition\r\n });\r\n\r\n // 当有匹配的触发词时,就显示弹窗\r\n // 这样可以确保在用户输入过程中,弹窗始终显示,直到用户选择了一个选项或者点击了其他地方\r\n this.updateModelValue(true);\r\n\r\n // 这里不再直接调用updateOverlayPosition,而是通过watch modelValue的nextTick来调用,确保overlayEl已渲染完成\r\n } else {\r\n // 没有匹配的触发词,关闭选择面板\r\n this.resetMention();\r\n }\r\n };\r\n\r\n // 处理键盘事件\r\n handleKeyDown = (event: KeyboardEvent) => {\r\n if (!this.inputEl) return;\r\n\r\n switch (event.key) {\r\n case ArrowUp:\r\n if (this.props.modelValue) {\r\n event.preventDefault();\r\n this.handleArrowKey(-1);\r\n }\r\n break;\r\n case ArrowDown:\r\n if (this.props.modelValue) {\r\n event.preventDefault();\r\n this.handleArrowKey(1);\r\n }\r\n break;\r\n case ArrowLeft:\r\n case ArrowRight:\r\n // 左右箭头键:延迟检查是否需要触发提及\r\n setTimeout(() => {\r\n this.handleInput();\r\n });\r\n break;\r\n case Escape:\r\n event.preventDefault();\r\n this.resetMention();\r\n break;\r\n case MentionSeparator:\r\n // 只有在面板打开时才阻止空格的默认行为\r\n if (this.props.modelValue) {\r\n this.resetMention();\r\n }\r\n break;\r\n default:\r\n // 其他按键不做处理\r\n break;\r\n }\r\n };\r\n\r\n // 处理点击事件\r\n private handleClick = () => {\r\n if (!this.inputEl) return;\r\n\r\n // 点击事件触发提及检查\r\n this.handleInput();\r\n };\r\n\r\n // 处理文档点击事件\r\n private handleDocumentClick = (e: Event) => {\r\n if (this.originEl) {\r\n if (this.props.modelValue) {\r\n // 如果下拉菜单是打开的,检查点击是否发生在originEl外部\r\n if (!this.originEl.contains(e.target as HTMLElement)) {\r\n this.resetMention();\r\n }\r\n } else {\r\n // 如果下拉菜单是关闭的,检查点击是否发生在originEl内部\r\n if (this.originEl.contains(e.target as HTMLElement)) {\r\n this.handleInput();\r\n }\r\n }\r\n }\r\n };\r\n\r\n // 检查前缀匹配\r\n private checkPrefixMatch(value: string, cursorPosition: number): { trigger: string; triggerIndex: number; searchValue: string } | null {\r\n if (!this.props.prefix || this.props.prefix.length === 0) return null;\r\n\r\n const text = value.replace(/[\\r\\n]/g, MentionSeparator);\r\n const beforeCursor = text.substring(0, cursorPosition);\r\n\r\n // 检查所有前缀\r\n for (const prefixItem of this.props.prefix) {\r\n let trigger = '';\r\n let onlyInputStart = false;\r\n\r\n if (typeof prefixItem === 'string') {\r\n trigger = prefixItem;\r\n } else if (isObject(prefixItem)) {\r\n trigger = prefixItem.key;\r\n onlyInputStart = Boolean(prefixItem.onlyInputStart);\r\n } else {\r\n continue;\r\n }\r\n\r\n // 查找最后一个触发词的位置\r\n const triggerIndex = beforeCursor.lastIndexOf(trigger);\r\n // 查找最后一个分隔符的位置\r\n const separatorPos = beforeCursor.lastIndexOf(MentionSeparator);\r\n // 触发词到光标的字符串\r\n const mentionStr = beforeCursor.substring(triggerIndex, cursorPosition);\r\n // 提及字符串的最后一个字符\r\n const lastMentionChar = mentionStr.charAt(mentionStr.length - 1);\r\n\r\n // 条件判断:\r\n // 1. 触发词位置有效\r\n // 2. 如果设置了onlyInputStart,触发词必须在输入开始处\r\n // 3. 触发词位置必须在最后一个分隔符之后\r\n // 4. 提及字符串的最后一个字符不能是分隔符\r\n if (triggerIndex < 0 || \r\n (triggerIndex > 0 && onlyInputStart) || \r\n triggerIndex < separatorPos || \r\n lastMentionChar === MentionSeparator) {\r\n continue;\r\n } else {\r\n const searchValue = mentionStr.slice(trigger.length);\r\n return { trigger, triggerIndex, searchValue };\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // 处理箭头键\r\n private handleArrowKey(direction: number) {\r\n let newIndex = (this.getCurrentActiveIndex() + direction) % this.props.optionsCount;\r\n if (newIndex < 0) {\r\n newIndex = this.props.optionsCount - 1;\r\n }\r\n this._adapter.activeIndexChange(newIndex);\r\n }\r\n\r\n // 获取当前活动索引\r\n private getCurrentActiveIndex(): number {\r\n // 默认返回0,实际实现可能需要根据adapter获取\r\n return 0;\r\n }\r\n\r\n // 处理选择事件\r\n private handleSelect() {\r\n if (!this.inputEl || this.currentTriggerIndex === -1) return;\r\n\r\n const value = this.inputEl.value;\r\n const beforeTrigger = value.substring(0, this.currentTriggerIndex);\r\n const afterCursor = value.substring(this.currentCursorIndex);\r\n\r\n // 这里需要根据实际选择的项进行替换,暂时使用示例实现\r\n const selectedValue = `${beforeTrigger}@selected ${afterCursor}`;\r\n this.inputEl.value = selectedValue;\r\n\r\n // 设置光标位置\r\n const newCursorPosition = beforeTrigger.length + '@selected '.length;\r\n this.inputEl.setSelectionRange(newCursorPosition, newCursorPosition);\r\n\r\n // 关闭选择面板\r\n this.resetMention();\r\n\r\n // 触发input事件以更新绑定值\r\n this.inputEl.dispatchEvent(new Event('input', { bubbles: true }));\r\n }\r\n\r\n // 更新覆盖层位置\r\n updateOverlayPosition(): Promise<{ top: string; left: string; width: string; } | undefined> {\r\n return new Promise((resolve) => {\r\n if (!this.originEl || !this.overlayEl) {\r\n resolve(undefined);\r\n return;\r\n }\r\n\r\n // 设置宽度\r\n if (this.props.fitHostWidth) {\r\n const originRect = this.originEl.getBoundingClientRect();\r\n this.overlayEl.style.width = `${originRect.width}px`;\r\n } else {\r\n this.overlayEl.style.width = '';\r\n }\r\n\r\n // 清理之前的autoUpdate\r\n if (this.autoUpdateCleanup) {\r\n this.autoUpdateCleanup();\r\n this.autoUpdateCleanup = null;\r\n }\r\n\r\n // 设置位置:使用@floating-ui/dom计算位置,与Vue版本保持一致\r\n computePosition(this.originEl, this.overlayEl, {\r\n strategy: 'fixed',\r\n placement: 'top-start',\r\n middleware: [offset(4)],\r\n }).then(({ x, y }) => {\r\n this.overlayEl!.style.top = `${y}px`;\r\n this.overlayEl!.style.left = `${x}px`;\r\n this.overlayEl!.style.position = 'fixed';\r\n \r\n // 返回位置信息,用于Vue组件同步样式\r\n resolve({\r\n top: `${y}px`,\r\n left: `${x}px`,\r\n width: this.props.fitHostWidth ? `${this.originEl!.getBoundingClientRect().width}px` : ''\r\n });\r\n \r\n // 设置autoUpdate,自动处理滚动、调整大小和视口变化事件\r\n this.autoUpdateCleanup = autoUpdate(\r\n this.originEl!,\r\n this.overlayEl!,\r\n () => {\r\n if (this.originEl && this.overlayEl) {\r\n // 当fitHostWidth为true时,更新宽度\r\n if (this.props.fitHostWidth) {\r\n const originRect = this.originEl.getBoundingClientRect();\r\n this.overlayEl.style.width = `${originRect.width}px`;\r\n }\r\n \r\n computePosition(this.originEl, this.overlayEl, {\r\n strategy: 'fixed',\r\n placement: 'top-start',\r\n middleware: [offset(4)],\r\n }).then(({ x, y }) => {\r\n this.overlayEl!.style.top = `${y}px`;\r\n this.overlayEl!.style.left = `${x}px`;\r\n });\r\n }\r\n },\r\n {\r\n // 添加对视口变化的更全面监听,确保浏览器F12打开/关闭时位置能正确更新\r\n animationFrame: true,\r\n elementResize: true,\r\n ancestorScroll: true,\r\n ancestorResize: true,\r\n layoutShift: true\r\n }\r\n ); \r\n }).catch(() => {\r\n // 处理计算位置失败的情况\r\n resolve(undefined);\r\n });\r\n });\r\n }\r\n\r\n // 获取当前搜索值\r\n getCurrentSearchValue(): string {\r\n return this.currentSearchValue;\r\n }\r\n\r\n // 获取当前触发词\r\n getCurrentTrigger(): string {\r\n return this.currentTrigger;\r\n }\r\n}","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy, OnInit, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { trigger, style, animate, transition } from '@angular/animations';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SearchChangeEvent, Trigger } from '../components-common/Mention/common/mention-types';\r\nimport { MentionFoundation } from '../components-common/Mention/foundation';\r\nimport BaseComponent from '../Base/base.component';\r\n\r\n@Component({\r\n selector: 'mc-mention',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './mention.component.html',\r\n styleUrls: ['./mention.component.scss'],\r\n animations: [\r\n trigger('fade', [\r\n transition(':enter', [\r\n style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }),\r\n animate('0.2s cubic-bezier(0.16, 0.75, 0.5, 1)', style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }))\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1, transform: 'scaleY(0.9999) translateY(0)' }),\r\n animate('0.2s cubic-bezier(0.5, 0, 0.84, 0.25)', style({ opacity: 0.8, transform: 'scaleY(0.8) translateY(4px)' }))\r\n ])\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MentionComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class MentionComponent extends BaseComponent<MentionFoundation> implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n @Input() prefix: Array<string | Trigger> = ['@'];\r\n @Input() fitHostWidth: boolean = true;\r\n @Input() menuClass?: string;\r\n // 选项数量,用于键盘导航\r\n private _optionsCount: number = 0;\r\n \r\n @Input()\r\n set optionsCount(val: number) {\r\n this._optionsCount = val;\r\n // 当optionsCount变化时,更新foundation的配置\r\n if (this.foundation) {\r\n this.foundation.updateOptions({ optionsCount: val });\r\n }\r\n }\r\n \r\n get optionsCount(): number {\r\n return this._optionsCount;\r\n }\r\n\r\n @Output() updateModelValue = new EventEmitter<boolean>();\r\n @Output() searchChange = new EventEmitter<SearchChangeEvent>();\r\n @Output() toggleChange = new EventEmitter<boolean>();\r\n // 当前选中索引变化事件\r\n @Output() activeIndexChange = new EventEmitter<number>();\r\n\r\n // 当前选中的索引\r\n activeIndex: number = -1;\r\n\r\n @ViewChild('popperTrigger') popperTriggerEl!: ElementRef;\r\n @ViewChild('origin') originEl!: ElementRef;\r\n @ViewChild('overlayEl') overlayEl!: ElementRef;\r\n\r\n overlayStyle: { top: string; left: string; width: string } = { top: '0px', left: '0px', width: '' };\r\n private inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\r\n \r\n constructor() { \r\n super(); \r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new MentionFoundation(this.adapter);\r\n }\r\n\r\n override get adapter(): any {\r\n return {\r\n ...super.adapter,\r\n updateModelValue: (val: boolean) => {\r\n // 调用modelValue的setter方法,确保位置更新逻辑被执行\r\n this.modelValue = val;\r\n },\r\n searchChange: (event: SearchChangeEvent) => this.searchChange.emit(event),\r\n activeIndexChange: (index: number) => {\r\n this.activeIndex = index;\r\n this.activeIndexChange.emit(index);\r\n },\r\n toggleChange: (val: boolean) => this.toggleChange.emit(val)\r\n };\r\n }\r\n\r\n ngAfterViewInit() {\r\n // 添加安全检查 - 仅检查必要元素,overlayEl有*ngIf条件可能不会立即渲染\r\n if (!this.popperTriggerEl || !this.originEl) {\r\n console.error('ViewChild elements not found');\r\n return;\r\n }\r\n\r\n const hostElement = this.popperTriggerEl.nativeElement;\r\n let foundInputEl: HTMLInputElement | HTMLTextAreaElement | null = null;\r\n\r\n // 检查hostElement本身是否是输入元素\r\n if (hostElement.tagName === 'TEXTAREA' || hostElement.tagName === 'INPUT') {\r\n foundInputEl = hostElement;\r\n } else {\r\n // 先查找mc-input组件\r\n const mcInputComponent = hostElement.querySelector('mc-input');\r\n if (mcInputComponent) {\r\n // 如果找到mc-input组件,查找其内部的textarea元素\r\n foundInputEl = mcInputComponent.querySelector('textarea');\r\n } else {\r\n // 否则在hostElement内部查找原生输入元素\r\n foundInputEl = hostElement.querySelector('textarea') || hostElement.querySelector('input');\r\n }\r\n }\r\n\r\n if (!foundInputEl) {\r\n console.error('Input/Textarea element not found in Mention component');\r\n return;\r\n }\r\n\r\n // 初始化foundation的元素\r\n this.inputEl = foundInputEl;\r\n this.foundation.setInputEl(this.inputEl);\r\n this.foundation.setOriginEl(this.originEl.nativeElement);\r\n // 仅在overlayEl存在时设置,否则Foundation会在需要时处理\r\n if (this.overlayEl) {\r\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\r\n }\r\n // 初始化事件\r\n this.foundation.initEvents();\r\n }\r\n\r\n override ngOnDestroy() { // 清理文档点击事件\r\n this.cleanupDocumentClick();\r\n // 清理Foundation资源\r\n this.foundation.destroy();\r\n super.ngOnDestroy();\r\n }\r\n\r\n // 监听modelValue变化,更新overlay位置\r\n @Input()\r\n set modelValue(val: boolean) {\r\n if (this._modelValue !== val) {\r\n this._modelValue = val;\r\n // 当显示Mention面板时,确保overlay元素已传递给foundation并更新位置\r\n if (val && this.foundation) {\r\n // 使用setTimeout确保overlayEl已经渲染完成\r\n setTimeout(() => {\r\n // 检查overlayEl是否可用,如果可用则传递给foundation\r\n if (this.overlayEl) {\r\n this.foundation.setOverlayEl(this.overlayEl.nativeElement);\r\n // 获取位置信息并更新组件样式\r\n const positionInfo = this.foundation.updateOverlayPosition();\r\n if (positionInfo instanceof Promise) {\r\n positionInfo.then(pos => {\r\n if (pos) {\r\n this.overlayStyle = pos;\r\n }\r\n });\r\n } else if (positionInfo) {\r\n this.overlayStyle = positionInfo;\r\n }\r\n }\r\n }, 0);\r\n }\r\n // 调用onChange回调,支持ngModel双向绑定\r\n this.onChange(val);\r\n // 仍然触发updateModelValue事件,保持向后兼容\r\n this.updateModelValue.emit(val);\r\n }\r\n }\r\n\r\n get modelValue(): boolean {\r\n return this._modelValue;\r\n }\r\n\r\n // 私有属性存储实际的modelValue\r\n private _modelValue: boolean = false;\r\n\r\n // ControlValueAccessor 接口实现\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.modelValue = value;\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // 如果需要禁用功能,可以在这里实现\r\n }\r\n\r\n // 初始化文档点击事件(已在ngAfterViewInit中处理,无需重复)\r\n ngAfterContentInit() {\r\n }\r\n\r\n // 清理文档点击事件\r\n private cleanupDocumentClick() {\r\n document.removeEventListener('click', this.onDocumentClick);\r\n }\r\n\r\n // 处理文档点击事件,点击外部关闭Mention面板\r\n private onDocumentClick = (e: Event) => {\r\n if (this.originEl && this.originEl.nativeElement && this.modelValue) {\r\n if (!this.originEl.nativeElement.contains(e.target as HTMLElement)) {\r\n this.foundation.resetMention();\r\n }\r\n }\r\n };\r\n}","<!-- Mention组件的模板 -->\r\n\r\n<!-- 触发器元素 -->\r\n<div #popperTrigger #origin class=\"mc-mention-trigger\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<!-- 提及菜单的弹出层 -->\r\n<div \r\n #overlayEl \r\n *ngIf=\"modelValue\" \r\n [@fade]\r\n class=\"mc-mention mc-mention-fade\" \r\n [ngClass]=\"menuClass\" \r\n [ngStyle]=\"overlayStyle\"\r\n>\r\n <ng-content select=\"[slot=menu]\"></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MentionComponent } from './mention.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n MentionComponent\r\n ],\r\n exports: [MentionComponent],\r\n})\r\nexport class MentionModule {}","// Mention组件的导出文件\r\nexport * from './mention.component';\r\nexport * from './mention.module';","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface PromptAdapter extends DefaultAdapter {}\r\n\r\nexport class PromptFoundation extends BaseFoundation<PromptAdapter> {\r\n constructor(adapter: PromptAdapter) {\r\n super({ ...adapter });\r\n }\r\n}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface PromptItemAdapter extends DefaultAdapter {}\r\n\r\nexport class PromptItemFoundation extends BaseFoundation<PromptItemAdapter> {\r\n constructor(adapter: PromptItemAdapter) {\r\n super({ ...adapter });\r\n }\r\n}\r\n","import BaseFoundation, { type DefaultAdapter } from '../Base/foundation';\r\n\r\nexport interface PromptIconAdapter extends DefaultAdapter {}\r\n\r\nexport class PromptIconFoundation extends BaseFoundation<PromptIconAdapter> {\r\n constructor(adapter: PromptIconAdapter) {\r\n super({ ...adapter });\r\n }\r\n\r\n getIconSize(): string {\r\n const { size } = this.getProps();\r\n return typeof size === 'number' ? `${size}px` : size;\r\n }\r\n getFontIconClass(): string {\r\n const { name } = this.getProps();\r\n return /^icon-/.test(name) ? name : '';\r\n }\r\n getIsComponent(): boolean {\r\n const { component } = this.getProps();\r\n return !!component;\r\n }\r\n getIsUrl(): boolean {\r\n const { name } = this.getProps();\r\n return /^((http|https):)?\\/\\//.test(name);\r\n }\r\n getImageAlt(): string {\r\n const { name } = this.getProps();\r\n return name.split('/').pop() || '';\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport {\r\n type PromptIconAdapter,\r\n PromptIconFoundation,\r\n} from '../../components-common/Prompt/icon-foundation';\r\n\r\n@Component({\r\n selector: 'mc-prompt-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './prompt-icon.component.html',\r\n styleUrls: ['./prompt-icon.component.scss'],\r\n})\r\nexport class PromptIconComponent extends BaseComponent<PromptIconFoundation> {\r\n @Input() name: string = '';\r\n @Input() color: string | undefined = '';\r\n @Input() size: number | string | undefined = '';\r\n @Input() component?: any;\r\n\r\n @ViewChild('dynamicIconComponent', { read: ViewContainerRef })\r\n iconComponent!: ViewContainerRef;\r\n\r\n override get adapter(): PromptIconAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n name: this.name,\r\n color: this.color,\r\n size: this.size,\r\n component: this.component,\r\n }),\r\n };\r\n }\r\n get iconSize() {\r\n return this.foundation.getIconSize();\r\n }\r\n get fontIconClass() {\r\n return this.foundation.getFontIconClass();\r\n }\r\n get isComponent() {\r\n return this.foundation.getIsComponent();\r\n }\r\n get isUrl() {\r\n return this.foundation.getIsUrl();\r\n }\r\n get imageAlt() {\r\n return this.foundation.getImageAlt();\r\n }\r\n ngOnInit() {\r\n this.foundation = new PromptIconFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n ngAfterViewInit() {\r\n this.loadIconComponent();\r\n }\r\n loadIconComponent() {\r\n if (!this.isComponent) {\r\n return;\r\n }\r\n this.iconComponent.createComponent(this.component);\r\n }\r\n}\r\n","<div class=\"mc-prompt-icon\">\r\n <ng-container *ngIf=\"isComponent\" #dynamicIconComponent>\r\n </ng-container>\r\n \r\n <img\r\n *ngIf=\"!isComponent && isUrl\"\r\n [src]=\"name\"\r\n [alt]=\"imageAlt\"\r\n [style]=\"{ width: iconSize || '', verticalAlign: 'middle' }\"\r\n />\r\n \r\n <i\r\n *ngIf=\"!isComponent && !isUrl\"\r\n [class]=\"fontIconClass\"\r\n [style.fontSize]=\"iconSize\"\r\n [style.color]=\"color\"\r\n ></i>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport BaseComponent from '../../Base/base.component';\r\nimport type { Prompt } from '../../components-common/Prompt/common/prompt-types';\r\nimport {\r\n type PromptItemAdapter,\r\n PromptItemFoundation,\r\n} from '../../components-common/Prompt/item-foundation';\r\nimport { PromptIconComponent } from '../prompt-icon/prompt-icon.component';\r\n\r\n@Component({\r\n selector: 'mc-prompt-item',\r\n standalone: true,\r\n imports: [CommonModule, PromptIconComponent],\r\n templateUrl: './prompt-item.component.html',\r\n styleUrls: ['./prompt-item.component.scss'],\r\n})\r\nexport class PromptItemComponent extends BaseComponent<PromptItemFoundation> {\r\n // 组件属性\r\n @Input() prompt: Prompt = {} as Prompt;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new PromptItemFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): PromptItemAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n prompt: this.prompt,\r\n }),\r\n };\r\n }\r\n}\r\n","<div *ngIf=\"prompt\" class=\"mc-prompt-item\">\r\n <div class=\"mc-prompt-item-icon\" [ngClass]=\"{ 'no-description': !prompt.desc }\">\r\n <mc-prompt-icon\r\n *ngIf=\"prompt.iconConfig\"\r\n [name]=\"prompt.iconConfig.name\"\r\n [color]=\"prompt.iconConfig.color\"\r\n [size]=\"prompt.iconConfig.size\"\r\n [component]=\"prompt.iconConfig.component\"\r\n />\r\n </div>\r\n <div *ngIf=\"prompt.label || prompt.desc\" class=\"mc-prompt-item-content\">\r\n <div *ngIf=\"prompt.label\" class=\"mc-prompt-item-label\">{{ prompt.label }}</div>\r\n <div *ngIf=\"prompt.desc\" class=\"mc-prompt-item-description\">{{ prompt.desc }}</div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport BaseComponent from '../Base/base.component';\r\nimport type { Prompt } from '../components-common/Prompt/common/prompt-types';\r\nimport {\r\n type PromptAdapter,\r\n PromptFoundation,\r\n} from '../components-common/Prompt/foundation';\r\nimport { ListDirection, ListModule, ListVariant } from '../List/index';\r\nimport { PromptItemComponent } from './prompt-item/prompt-item.component';\r\n\r\n@Component({\r\n selector: 'mc-prompt',\r\n standalone: true,\r\n imports: [CommonModule, ListModule, PromptItemComponent],\r\n templateUrl: './prompt.component.html',\r\n styleUrls: ['./prompt.component.scss'],\r\n})\r\nexport class PromptComponent extends BaseComponent<PromptFoundation> {\r\n // 组件属性\r\n @Input() direction: ListDirection = ListDirection.Vertical;\r\n @Input() list: Prompt[] = [];\r\n @Input() variant: ListVariant = ListVariant.Filled;\r\n\r\n @Output() itemClick = new EventEmitter<Prompt>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.foundation = new PromptFoundation(this.adapter);\r\n this.foundation.init();\r\n }\r\n\r\n override get adapter(): PromptAdapter {\r\n return {\r\n ...super.adapter,\r\n getProps: () => ({\r\n direction: this.direction,\r\n list: this.list,\r\n variant: this.variant,\r\n }),\r\n };\r\n }\r\n\r\n handleItemClick(item: Prompt) {\r\n this.itemClick.emit(item);\r\n }\r\n}\r\n","<div class=\"mc-prompt\">\r\n <mc-list [data]=\"list\" [direction]=\"direction\" [variant]=\"variant\" [selectable]=\"false\">\r\n <ng-template #item let-item>\r\n <mc-prompt-item\r\n [prompt]=\"item\"\r\n (click)=\"handleItemClick(item)\"\r\n ></mc-prompt-item>\r\n </ng-template>\r\n </mc-list>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { PromptComponent } from './prompt.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, PromptComponent],\r\n exports: [PromptComponent],\r\n})\r\nexport class PromptModule {}\r\n","export function copyToClipboard(text: any) {\r\n if (typeof text !== 'string') {\r\n return Promise.reject();\r\n }\r\n\r\n // 现代浏览器优先使用 Clipboard API\r\n if (navigator.clipboard && window.isSecureContext) {\r\n return navigator.clipboard\r\n .writeText(text)\r\n .then(() => {})\r\n .catch((err) => {\r\n return fallbackCopyTextToClipboard(text); // 降级处理\r\n });\r\n }\r\n\r\n // 低版本浏览器直接使用降级方案\r\n return fallbackCopyTextToClipboard(text);\r\n}\r\n\r\nexport function fallbackCopyTextToClipboard(text: string) {\r\n return new Promise((resolve, reject) => {\r\n // 创建隐藏的 textarea 元素\r\n const textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n\r\n // 样式:隐藏且不影响布局\r\n textarea.style.position = 'fixed';\r\n textarea.style.top = '-9999px';\r\n textarea.style.left = '-9999px';\r\n textarea.style.opacity = '0';\r\n textarea.style.zIndex = '-1000';\r\n\r\n // 解决 iOS 下无法选中的问题\r\n textarea.setAttribute('readonly', '');\r\n\r\n document.body.appendChild(textarea);\r\n\r\n try {\r\n // 选中内容(兼容 iOS)\r\n textarea.select();\r\n textarea.setSelectionRange(0, textarea.value.length); // 移动端必须\r\n\r\n // 执行复制\r\n const success = document.execCommand('copy');\r\n if (success) {\r\n resolve(null);\r\n } else {\r\n reject();\r\n }\r\n } catch (err) {\r\n reject();\r\n } finally {\r\n // 移除临时元素\r\n document.body.removeChild(textarea);\r\n }\r\n });\r\n}\r\n","export const TOOLBAR_GAP_DEFAULT_VALUE = 0;\r\nexport const TOOLBAR_ICON_SIZE_DEFAULT_VALUE = 16;\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { copyToClipboard } from '../../components-common/Toolbar/common/toolbar-common-fun';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-copy-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './copy-icon.component.html',\r\n styleUrls: ['./copy-icon.component.scss'],\r\n})\r\nexport class CopyIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() text: string = '';\r\n @Input() title: string = '';\r\n\r\n copied = false;\r\n\r\n async handleClick() {\r\n setTimeout(() => {\r\n this.copied = false;\r\n }, 1500);\r\n try {\r\n await copyToClipboard(this.text);\r\n this.copied = true;\r\n } catch (error) {}\r\n }\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n *ngIf=\"copied\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <desc>Created with Sketch.</desc>\r\n <defs>\r\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>\r\n </defs>\r\n <g id=\"status/whiteBG/correct\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-1\"></use>\r\n </mask>\r\n <use id=\"Mask\" fill=\"currentColor\" xlink:href=\"#path-1\"></use>\r\n </g>\r\n </svg>\r\n <svg\r\n *ngIf=\"!copied\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n (click)=\"handleClick()\"\r\n >\r\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"API-starter-图标入库\" transform=\"translate(-592.000000, -204.000000)\">\r\n <g id=\"方格备份-16\" transform=\"translate(560.000000, 180.000000)\">\r\n <text id=\"图标\" font-family=\"PingFangSC-Regular, PingFang SC\" font-size=\"12\" font-weight=\"normal\" line-spacing=\"16\" fill=\"#71757F\">\r\n <tspan x=\"27.136\" y=\"61\">复制</tspan>\r\n </text>\r\n </g>\r\n <path\r\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\"\r\n id=\"形状结合\"\r\n fill=\"currentColor\"\r\n fill-rule=\"nonzero\"\r\n ></path>\r\n </g>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-delete-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './delete-icon.component.html',\r\n styleUrls: ['./delete-icon.component.scss'],\r\n})\r\nexport class DeleteIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g\r\n id=\"codehub-delete-op\"\r\n stroke=\"none\"\r\n stroke-width=\"1\"\r\n fill=\"none\"\r\n fill-rule=\"evenodd\"\r\n >\r\n <path\r\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\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n type OnChanges,\r\n Output,\r\n type SimpleChanges,\r\n} from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-dislike-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './dislike-icon.component.html',\r\n styleUrls: ['./dislike-icon.component.scss'],\r\n})\r\nexport class DislikeIconComponent implements OnChanges {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n active = this.isActive;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['isActive']) {\r\n this.active = changes['isActive'].currentValue;\r\n }\r\n }\r\n\r\n handleClick(): void {\r\n this.active = !this.active;\r\n this.activeChange.emit(this.active);\r\n }\r\n}\r\n","<div\r\n class=\"mc-action-item\"\r\n [title]=\"title\"\r\n [class.mc-action-item-active]=\"active\"\r\n (click)=\"handleClick()\"\r\n>\r\n <svg\r\n *ngIf=\"active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <path\r\n id=\"矢量 1\"\r\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\"\r\n fill-rule=\"evenodd\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <svg\r\n *ngIf=\"!active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"Dislike\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n id=\"形状结合\"\r\n fill=\"currentColor\"\r\n ></path>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n type OnChanges,\r\n Output,\r\n type SimpleChanges,\r\n} from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-like-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './like-icon.component.html',\r\n styleUrls: ['./like-icon.component.scss'],\r\n})\r\nexport class LikeIconComponent implements OnChanges {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n active = this.isActive;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['isActive']) {\r\n this.active = changes['isActive'].currentValue;\r\n }\r\n }\r\n\r\n handleClick(): void {\r\n this.active = !this.active;\r\n this.activeChange.emit(this.active);\r\n }\r\n}\r\n","<div\r\n class=\"mc-action-item\"\r\n [title]=\"title\"\r\n [class.mc-action-item-active]=\"active\"\r\n (click)=\"handleClick()\"\r\n>\r\n <svg\r\n *ngIf=\"active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <desc>Created with Sketch.</desc>\r\n <path\r\n id=\"矢量 1\"\r\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\"\r\n fill-rule=\"evenodd\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n <svg\r\n *ngIf=\"!active\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"页面-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n id=\"dislike\"\r\n fill=\"currentColor\"\r\n transform=\"translate(8.167337, 8.168474) scale(-1, 1) rotate(-180.000000) translate(-8.167337, -8.168474) \"\r\n ></path>\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-refresh-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './refresh-icon.component.html',\r\n styleUrls: ['./refresh-icon.component.scss'],\r\n})\r\nexport class RefreshIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <g id=\"Re-generate\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\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\"\r\n id=\"形状结合\"\r\n fill=\"currentColor\"\r\n />\r\n </g>\r\n </svg>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TOOLBAR_ICON_SIZE_DEFAULT_VALUE } from '../../components-common/Toolbar/common/toolbar-constants';\r\n\r\n@Component({\r\n selector: 'mc-share-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './share-icon.component.html',\r\n styleUrls: ['./share-icon.component.scss'],\r\n})\r\nexport class ShareIconComponent {\r\n @Input() width: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() height: number = TOOLBAR_ICON_SIZE_DEFAULT_VALUE;\r\n @Input() isActive: boolean = false;\r\n @Input() title: string = '';\r\n @Input() text: string = '';\r\n}\r\n","<div class=\"mc-action-item\" [title]=\"title\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n [attr.width]=\"width\"\r\n [attr.height]=\"height\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <desc>Created with Sketch.</desc>\r\n <g id=\"释义图标/分享\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g id=\"分享\" fill=\"currentColor\" fill-rule=\"nonzero\">\r\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=\"形状\"/>\r\n </g>\r\n </g>\r\n </svg>\r\n</div>\r\n","export enum ToolbarAction {\r\n COPY = 'copy',\r\n LIKE = 'like',\r\n DISLIKE = 'dislike',\r\n REFRESH = 'refresh',\r\n SHARE = 'share',\r\n DELETE = 'delete',\r\n}\r\n\r\nexport interface ActionItem {\r\n key: string; // 唯一标识\r\n icon?: ToolbarAction; // icon部分名称\r\n label?: string; // 操作项title\r\n onClick?: (actionItem: ActionItem, e: MouseEvent) => void; // 点击事件\r\n isActive?: boolean; // 是否激活状态,点赞点踩用\r\n text?: string; // 需要复制的文本\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n type AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n type OnInit,\r\n Output,\r\n type QueryList,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n type ActionItem,\r\n ToolbarAction,\r\n} from '../components-common/Toolbar/common/toolbar.types';\r\nimport {\r\n TOOLBAR_GAP_DEFAULT_VALUE,\r\n TOOLBAR_ICON_SIZE_DEFAULT_VALUE,\r\n} from '../components-common/Toolbar/common/toolbar-constants';\r\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\r\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\r\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\r\nimport { LikeIconComponent } from './like-icon/like-icon.component';\r\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\r\nimport { ShareIconComponent } from './share-icon/share-icon.component';\r\n\r\n@Component({\r\n selector: 'mc-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n CopyIconComponent,\r\n DeleteIconComponent,\r\n RefreshIconComponent,\r\n ShareIconComponent,\r\n LikeIconComponent,\r\n DislikeIconComponent,\r\n ],\r\n styleUrls: ['./toolbar.component.scss'],\r\n})\r\nexport class ToolbarComponent implements OnInit, AfterContentInit {\r\n // 输入属性\r\n @Input() items: ActionItem[] = [];\r\n @Input() gap = TOOLBAR_GAP_DEFAULT_VALUE; // 默认间距\r\n @Input() iconSize = TOOLBAR_ICON_SIZE_DEFAULT_VALUE; // 默认图标大小\r\n\r\n // 输出事件\r\n @Output() onClick = new EventEmitter<{\r\n item: ActionItem;\r\n event: MouseEvent;\r\n }>();\r\n\r\n // 关键:获取所有投影进来的 ng-template 模板(包含变量名)\r\n @ContentChildren(TemplateRef, { read: TemplateRef })\r\n private allTemplates!: QueryList<TemplateRef<any>>;\r\n // 用户自定义插槽映射\r\n CustomSlotComponent = {};\r\n\r\n // 响应式操作项(深拷贝避免修改原数据)\r\n actionItems: ActionItem[] = [];\r\n\r\n ToolbarAction = ToolbarAction;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n // 深拷贝输入的items\r\n this.actionItems = this.items?.map((item) => ({ ...item }));\r\n // 初始化点赞/点踩互斥\r\n this.init();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n // 初始化阶段:解析所有模板的变量名,构建映射关系\r\n this.allTemplates.forEach((template: any) => {\r\n // 通过模板的 nativeElement 获取其变量名(#xxx 中的 xxx)\r\n const templateName = template._declarationTContainer?.localNames?.[0];\r\n if (templateName) {\r\n this.CustomSlotComponent[templateName] = template;\r\n }\r\n });\r\n console.log('ngAfterContentInit', this.CustomSlotComponent);\r\n }\r\n\r\n trackByKey(index: number, item: ActionItem) {\r\n return item.key;\r\n }\r\n\r\n /** 初始化:确保点赞和点踩不同时激活 */\r\n private init(): void {\r\n const likeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.LIKE,\r\n );\r\n const dislikeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.DISLIKE,\r\n );\r\n\r\n if (likeAction?.isActive && dislikeAction) {\r\n dislikeAction.isActive = false;\r\n }\r\n }\r\n\r\n /** 点赞点击处理:取消点踩状态 */\r\n private handleLikeClick(): void {\r\n const dislikeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.DISLIKE,\r\n );\r\n if (dislikeAction) {\r\n dislikeAction.isActive = false;\r\n }\r\n }\r\n\r\n /** 点踩点击处理:取消点赞状态 */\r\n private handleDislikeClick(): void {\r\n const likeAction = this.actionItems.find(\r\n (item) => item.icon === ToolbarAction.LIKE,\r\n );\r\n if (likeAction) {\r\n likeAction.isActive = false;\r\n }\r\n }\r\n\r\n /** 操作项点击事件 */\r\n actionClick(event: MouseEvent, actionItem: ActionItem): void {\r\n // 处理点赞/点踩互斥\r\n if (actionItem.icon === ToolbarAction.LIKE) {\r\n this.handleLikeClick();\r\n } else if (actionItem.icon === ToolbarAction.DISLIKE) {\r\n this.handleDislikeClick();\r\n }\r\n console.log('actionClick', event, actionItem);\r\n\r\n // 执行item自身的点击回调\r\n if (actionItem.onClick) {\r\n actionItem.onClick(actionItem, event);\r\n }\r\n\r\n // 触发组件输出事件\r\n this.onClick.emit({ item: actionItem, event });\r\n }\r\n\r\n /** 激活状态变更 */\r\n activeChange(isActive: boolean, actionItem: ActionItem): void {\r\n actionItem.isActive = isActive;\r\n }\r\n}\r\n","<div class=\"mc-actions\" [style.gap.px]=\"gap\">\r\n <!-- 遍历操作项 -->\r\n <ng-container *ngFor=\"let item of actionItems; trackBy: trackByKey\">\r\n <!-- 整个操作项自定义 -->\r\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key]\"></ng-container>\r\n\r\n <ng-container *ngIf=\"!CustomSlotComponent[item.key]\">\r\n <!-- 只自定义Icon部分 -->\r\n <div\r\n *ngIf=\"CustomSlotComponent[item.key + 'Icon']\"\r\n class=\"mc-action-item\"\r\n [title]=\"item.label\"\r\n (click)=\"actionClick($event, item)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"CustomSlotComponent[item.key + 'Icon']; context: { actionData: item }\"></ng-container>\r\n </div>\r\n\r\n <!-- 完全使用内置组件情况 -->\r\n <mc-copy-icon\r\n *ngIf=\"item.icon === ToolbarAction.COPY\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [text]=\"item.text ?? ''\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-copy-icon>\r\n <mc-delete-icon\r\n *ngIf=\"item.icon === ToolbarAction.DELETE\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-delete-icon>\r\n <mc-refresh-icon\r\n *ngIf=\"item.icon === ToolbarAction.REFRESH\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-refresh-icon>\r\n <mc-share-icon\r\n *ngIf=\"item.icon === ToolbarAction.SHARE\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-share-icon>\r\n <mc-like-icon\r\n *ngIf=\"item.icon === ToolbarAction.LIKE\"\r\n [isActive]=\"item.isActive ?? false\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (activeChange)=\"activeChange($event, item)\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-like-icon>\r\n <mc-dislike-icon\r\n *ngIf=\"item.icon === ToolbarAction.DISLIKE\"\r\n [isActive]=\"item.isActive ?? false\"\r\n [width]=\"iconSize\"\r\n [height]=\"iconSize\"\r\n [title]=\"item.label ?? ''\"\r\n (activeChange)=\"activeChange($event, item)\"\r\n (click)=\"actionClick($event, item)\"\r\n ></mc-dislike-icon>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n// 导入所有图标组件\r\nimport { CopyIconComponent } from './copy-icon/copy-icon.component';\r\nimport { DeleteIconComponent } from './delete-icon/delete-icon.component';\r\nimport { DislikeIconComponent } from './dislike-icon/dislike-icon.component';\r\nimport { LikeIconComponent } from './like-icon/like-icon.component';\r\nimport { RefreshIconComponent } from './refresh-icon/refresh-icon.component';\r\nimport { ShareIconComponent } from './share-icon/share-icon.component';\r\nimport { ToolbarComponent } from './toolbar.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n ToolbarComponent,\r\n CopyIconComponent,\r\n DeleteIconComponent,\r\n RefreshIconComponent,\r\n ShareIconComponent,\r\n LikeIconComponent,\r\n DislikeIconComponent,\r\n ],\r\n exports: [\r\n ToolbarComponent,\r\n CopyIconComponent,\r\n DeleteIconComponent,\r\n RefreshIconComponent,\r\n ShareIconComponent,\r\n LikeIconComponent,\r\n DislikeIconComponent,\r\n ],\r\n})\r\nexport class ToolbarModule {}\r\n","/*\r\n * Public API Surface of components-ng\r\n */\r\n\r\nexport * from './Attachment/index';\r\nexport * from './Bubble/index';\r\nexport * from './FileList/index';\r\nexport * from './Header/index';\r\nexport * from './Input/index';\r\nexport * from './Introduction/index';\r\nexport * from './Layout/index';\r\nexport * from './List/index';\r\nexport * from './Locale/index';\r\nexport * from './MarkdownCard/index';\r\nexport * from './Mention/index';\r\nexport * from './Prompt/index';\r\nexport * from './Toolbar/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LocaleService","i3","i2","ArrowUp","ArrowDown","i2.TranslatePipe"],"mappings":"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"}