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