bhd-components 0.10.33 → 0.10.35
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/dist/index.esm.es5.development.css +14476 -0
- package/dist/index.esm.es5.development.js +16330 -0
- package/dist/index.esm.es5.production.css +10 -0
- package/dist/index.esm.es5.production.js +1 -0
- package/dist/vendor.esm.es5.development.css +119 -0
- package/dist/vendor.esm.es5.development.js +182678 -0
- package/dist/vendor.esm.es5.production.css +11 -0
- package/dist/vendor.esm.es5.production.js +493 -0
- package/es2017/customerService/function.d.ts +3 -1
- package/es2017/customerService/function.js +34 -1
- package/es2017/customerService/index.js +85 -68
- package/es2017/customerService/index.module.less +2 -1
- package/es2017/customerService/index2.module.less +2 -1
- package/esm/customerService/function.d.ts +3 -1
- package/esm/customerService/function.js +36 -1
- package/esm/customerService/index.js +88 -72
- package/esm/customerService/index.module.less +2 -1
- package/esm/customerService/index2.module.less +2 -1
- package/package.json +2 -3
|
@@ -22,4 +22,6 @@ declare const getBase64Image: (src: any) => Promise<unknown>;
|
|
|
22
22
|
declare const formatDate: (dateStr: any) => any;
|
|
23
23
|
declare const urlToBase64: (url: string) => Promise<unknown>;
|
|
24
24
|
declare const toHashString: (str: string) => string;
|
|
25
|
-
|
|
25
|
+
declare const removeMermaidBlockComments: (markdownContent: any) => any;
|
|
26
|
+
declare const handleRenderSyntaxBlock: (markdownContent: any, flag: boolean) => any;
|
|
27
|
+
export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString, removeMermaidBlockComments, handleRenderSyntaxBlock, };
|
|
@@ -191,4 +191,37 @@ const toHashString = (str)=>{
|
|
|
191
191
|
// 转换为正数并格式化为8位十六进制
|
|
192
192
|
return (result >>> 0).toString(16).padStart(8, '0');
|
|
193
193
|
};
|
|
194
|
-
|
|
194
|
+
// 正则:匹配```mermaid代码块内 ‘// 注释的内容’ 移除
|
|
195
|
+
const removeMermaidBlockComments = (markdownContent)=>{
|
|
196
|
+
// 正则匹配 ```mermaid 代码块,捕获块内内容
|
|
197
|
+
const mermaidBlockRegex = /(```mermaid\n)([\s\S]*?)(\n```)/gm;
|
|
198
|
+
// 替换逻辑:保留代码块标识,仅清理块内注释
|
|
199
|
+
return markdownContent.replace(mermaidBlockRegex, (match, prefix, content, suffix)=>{
|
|
200
|
+
// 清理块内注释的正则(同之前逻辑,优先保留字符串)
|
|
201
|
+
const commentRegex = /(".*?"|'.*?')|(\/\*[\s\S]*?\*\/)|(\/\/.*?$)/gm;
|
|
202
|
+
const cleanContent = content.replace(commentRegex, (m, stringPart)=>stringPart || '').replace(/<br>/g, '');
|
|
203
|
+
// 拼接回完整代码块(保留 ```mermaid 和 ``` 标识)
|
|
204
|
+
return `${prefix}${cleanContent}${suffix}`;
|
|
205
|
+
});
|
|
206
|
+
};
|
|
207
|
+
// 处理渲染语法
|
|
208
|
+
const handleRenderSyntaxBlock = (markdownContent, flag)=>{
|
|
209
|
+
if (flag) {
|
|
210
|
+
// 正则匹配  图片语法
|
|
211
|
+
const imgBlockRegex = /\[([^\]]*)\]\[\]\((https?:\/\/[^\s)]+)\)/gm;
|
|
212
|
+
markdownContent = markdownContent.replace(imgBlockRegex, (match, altText, url)=>{
|
|
213
|
+
return ``;
|
|
214
|
+
});
|
|
215
|
+
markdownContent = markdownContent.replaceAll('```mermaid-code', '```mermaid');
|
|
216
|
+
return markdownContent;
|
|
217
|
+
} else {
|
|
218
|
+
// 正则匹配  图片语法
|
|
219
|
+
const imgBlockRegex = /!\[([^\]]*)\]\((https?:\/\/[^\s)]+)\)/gm;
|
|
220
|
+
markdownContent = markdownContent.replace(imgBlockRegex, (match, altText, url)=>{
|
|
221
|
+
return `[${altText}][](${url})`;
|
|
222
|
+
});
|
|
223
|
+
markdownContent = markdownContent.replaceAll('```mermaid', '```mermaid-code');
|
|
224
|
+
return markdownContent;
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString, removeMermaidBlockComments, handleRenderSyntaxBlock };
|
|
@@ -25,14 +25,13 @@ import { Remarkable } from "remarkable";
|
|
|
25
25
|
import hljs from "highlight.js";
|
|
26
26
|
import "highlight.js/styles/github.css";
|
|
27
27
|
import mermaid from "mermaid";
|
|
28
|
-
import ViewMemaid from "./viewMemaid";
|
|
29
28
|
import { render } from "react-dom";
|
|
30
29
|
import Provider from "../provider";
|
|
31
30
|
const { TextArea } = Input;
|
|
32
31
|
// import './html2canvas.test.js';
|
|
33
32
|
import knowledge_icon from "./images/knowledge_icon.png";
|
|
34
33
|
// import { useMediaRecorder } from "./useMediaRecorder"; //录音使用文件
|
|
35
|
-
import { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, urlToBase64, toHashString } from "./function"; //一些方法
|
|
34
|
+
import { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, urlToBase64, toHashString, removeMermaidBlockComments, handleRenderSyntaxBlock } from "./function"; //一些方法
|
|
36
35
|
// import html2canvas from "html2canvas";
|
|
37
36
|
// const screenShot = require('./screenShotPlugin.esm')
|
|
38
37
|
import ScreenShot from "./js-screen-shot/main";
|
|
@@ -60,8 +59,13 @@ mermaid.initialize({
|
|
|
60
59
|
theme: 'default',
|
|
61
60
|
securityLevel: 'loose',
|
|
62
61
|
flowchart: {
|
|
62
|
+
useMaxWidth: true,
|
|
63
63
|
htmlLabels: true,
|
|
64
64
|
curve: 'basis'
|
|
65
|
+
},
|
|
66
|
+
pie: {
|
|
67
|
+
useMaxWidth: true,
|
|
68
|
+
useWidth: 360
|
|
65
69
|
}
|
|
66
70
|
});
|
|
67
71
|
const CustomerService = (props)=>{
|
|
@@ -136,9 +140,9 @@ const CustomerService = (props)=>{
|
|
|
136
140
|
html: true,
|
|
137
141
|
highlight: function(str, lang) {
|
|
138
142
|
// 特殊处理 mermaid 代码块
|
|
139
|
-
if (lang === 'mermaid') {
|
|
140
|
-
|
|
141
|
-
}
|
|
143
|
+
// if (lang === 'mermaid') {
|
|
144
|
+
// return str; // 不高亮 mermaid 代码
|
|
145
|
+
// }
|
|
142
146
|
if (lang && hljs.getLanguage(lang)) {
|
|
143
147
|
try {
|
|
144
148
|
return hljs.highlight(lang, str).value;
|
|
@@ -154,8 +158,16 @@ const CustomerService = (props)=>{
|
|
|
154
158
|
remarkable.renderer.rules.fence_custom = {
|
|
155
159
|
mermaid: function(tokens, idx) {
|
|
156
160
|
const token = tokens[idx];
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
try {
|
|
162
|
+
if (mermaid.parse(token.content)) {
|
|
163
|
+
const id = 'mermaid_' + toHashString(token.content);
|
|
164
|
+
return `<span class="${styles.maskZoomBox}"><pre class="${styles.mermaid}" id="${id}">${token.content}</pre><span class="${styles.zoomBox}" onclick="openViewMemaid('${id}')"><svg viewBox="64 64 896 896" focusable="false" data-icon="zoom-in" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"></path></svg></span></span>`;
|
|
165
|
+
} else {
|
|
166
|
+
return `<pre><code class="language-mermaid">${token.content}</code></pre>`;
|
|
167
|
+
}
|
|
168
|
+
} catch (error) {
|
|
169
|
+
return `<pre><code class="language-mermaid">${token.content}</code></pre>`;
|
|
170
|
+
}
|
|
159
171
|
}
|
|
160
172
|
};
|
|
161
173
|
remarkable.renderer.rules.image = (tokens, idx)=>{
|
|
@@ -185,8 +197,16 @@ const CustomerService = (props)=>{
|
|
|
185
197
|
newRemarkable.renderer.rules.fence_custom = {
|
|
186
198
|
mermaid: function(tokens, idx) {
|
|
187
199
|
const token = tokens[idx];
|
|
188
|
-
|
|
189
|
-
|
|
200
|
+
try {
|
|
201
|
+
if (mermaid.parse(token.content)) {
|
|
202
|
+
const id = 'mermaid_' + toHashString(token.content);
|
|
203
|
+
return `<span class="${styles.maskZoomBox}"><pre class="${styles.mermaid}" id="${id}">${token.content}</pre><span class="${styles.zoomBox}" onclick="openViewMemaid('${id}')"><svg viewBox="64 64 896 896" focusable="false" data-icon="zoom-in" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"></path></svg></span></span>`;
|
|
204
|
+
} else {
|
|
205
|
+
return `<pre><code class="language-mermaid">${token.content}</code></pre>`;
|
|
206
|
+
}
|
|
207
|
+
} catch (error) {
|
|
208
|
+
return `<pre><code class="language-mermaid">${token.content}</code></pre>`;
|
|
209
|
+
}
|
|
190
210
|
}
|
|
191
211
|
};
|
|
192
212
|
remarkable.renderer.rules.image = (tokens, idx)=>{
|
|
@@ -413,38 +433,44 @@ const CustomerService = (props)=>{
|
|
|
413
433
|
setVisible(true);
|
|
414
434
|
}
|
|
415
435
|
function openViewMemaid(id) {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
436
|
+
try {
|
|
437
|
+
var _document_querySelector, _svgDomClone;
|
|
438
|
+
console.log('openViewMemaid');
|
|
439
|
+
const svgDomClone = (_document_querySelector = document.querySelector(`#${id} svg`)) === null || _document_querySelector === void 0 ? void 0 : _document_querySelector.cloneNode(true);
|
|
440
|
+
if (!svgDomClone) {
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
svgDomClone.style.backgroundColor = '#fafafa';
|
|
444
|
+
svgDomClone.style.width = "auto";
|
|
445
|
+
svgDomClone.style.height = "auto";
|
|
446
|
+
const viewBox = svgDomClone.getAttribute('viewBox');
|
|
447
|
+
let [x, y, width, height] = viewBox ? viewBox.split(' ').map(Number) : [
|
|
448
|
+
0,
|
|
449
|
+
0,
|
|
450
|
+
0,
|
|
451
|
+
0
|
|
452
|
+
];
|
|
453
|
+
x -= 10;
|
|
454
|
+
y -= 10;
|
|
455
|
+
width += 20;
|
|
456
|
+
height += 20;
|
|
457
|
+
svgDomClone.setAttribute('viewBox', `${x} ${y} ${width} ${height}`);
|
|
458
|
+
let svgString = ((_svgDomClone = svgDomClone) === null || _svgDomClone === void 0 ? void 0 : _svgDomClone.outerHTML.toString()) || "";
|
|
459
|
+
const blob = new Blob([
|
|
460
|
+
svgString
|
|
461
|
+
], {
|
|
462
|
+
type: 'image/svg+xml;charset=utf-8'
|
|
463
|
+
});
|
|
464
|
+
console.log('blob', blob);
|
|
465
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
466
|
+
console.log('blobUrl', blobUrl);
|
|
467
|
+
setViewBase64(blobUrl);
|
|
468
|
+
setVisible(true);
|
|
469
|
+
// setMemaidContent(id);
|
|
470
|
+
// setShowMemaid(true);
|
|
471
|
+
} catch (error) {
|
|
472
|
+
console.log('error', error);
|
|
421
473
|
}
|
|
422
|
-
svgDomClone.style.backgroundColor = '#fafafa';
|
|
423
|
-
svgDomClone.style.width = "auto";
|
|
424
|
-
svgDomClone.style.height = "auto";
|
|
425
|
-
const viewBox = svgDomClone.getAttribute('viewBox');
|
|
426
|
-
let [x, y, width, height] = viewBox ? viewBox.split(' ').map(Number) : [
|
|
427
|
-
0,
|
|
428
|
-
0,
|
|
429
|
-
0,
|
|
430
|
-
0
|
|
431
|
-
];
|
|
432
|
-
x -= 10;
|
|
433
|
-
y -= 10;
|
|
434
|
-
width += 20;
|
|
435
|
-
height += 20;
|
|
436
|
-
svgDomClone.setAttribute('viewBox', `${x} ${y} ${width} ${height}`);
|
|
437
|
-
const svgString = ((_svgDomClone = svgDomClone) === null || _svgDomClone === void 0 ? void 0 : _svgDomClone.outerHTML.toString()) || "";
|
|
438
|
-
const blob = new Blob([
|
|
439
|
-
svgString
|
|
440
|
-
], {
|
|
441
|
-
type: 'image/svg+xml;charset=utf-8'
|
|
442
|
-
});
|
|
443
|
-
const blobUrl = URL.createObjectURL(blob);
|
|
444
|
-
setViewBase64(blobUrl);
|
|
445
|
-
setVisible(true);
|
|
446
|
-
// setMemaidContent(id);
|
|
447
|
-
// setShowMemaid(true);
|
|
448
474
|
}
|
|
449
475
|
window.openViewBase64 = openViewBase64;
|
|
450
476
|
window.openViewMemaid = openViewMemaid;
|
|
@@ -468,13 +494,7 @@ const CustomerService = (props)=>{
|
|
|
468
494
|
]);
|
|
469
495
|
useEffect(()=>{
|
|
470
496
|
historyMessageListRef.current = historyMessageList;
|
|
471
|
-
|
|
472
|
-
mermaid.init({
|
|
473
|
-
querySelector: `.${styles.mermaid}:not([data-processed="true"])`,
|
|
474
|
-
suppressErrors: true
|
|
475
|
-
}, `.${styles.mermaid}:not([data-processed="true"])`);
|
|
476
|
-
clearTimeout(timer);
|
|
477
|
-
}, 500);
|
|
497
|
+
renderMermaid(500);
|
|
478
498
|
}, [
|
|
479
499
|
historyMessageList
|
|
480
500
|
]);
|
|
@@ -609,6 +629,7 @@ const CustomerService = (props)=>{
|
|
|
609
629
|
if (!message) return;
|
|
610
630
|
let codeConment = '';
|
|
611
631
|
let i = 0;
|
|
632
|
+
message = removeMermaidBlockComments(message);
|
|
612
633
|
message.replaceAll(new RegExp(/```(?:.|\n)*?```/, "ig"), (con)=>{
|
|
613
634
|
i++;
|
|
614
635
|
if (i == position) {
|
|
@@ -1424,6 +1445,10 @@ const CustomerService = (props)=>{
|
|
|
1424
1445
|
//发送结束
|
|
1425
1446
|
finishedRef.current = true;
|
|
1426
1447
|
setFinished(true);
|
|
1448
|
+
renderMermaid();
|
|
1449
|
+
setTimeout(()=>{
|
|
1450
|
+
scrollToBottom();
|
|
1451
|
+
}, 500);
|
|
1427
1452
|
}
|
|
1428
1453
|
};
|
|
1429
1454
|
//问题记录到实验报告中
|
|
@@ -2251,6 +2276,15 @@ const CustomerService = (props)=>{
|
|
|
2251
2276
|
// setRoomId(id);
|
|
2252
2277
|
// }
|
|
2253
2278
|
};
|
|
2279
|
+
const renderMermaid = (duration = 100)=>{
|
|
2280
|
+
const t = setTimeout(()=>{
|
|
2281
|
+
mermaid.init({
|
|
2282
|
+
querySelector: `.${styles.mermaid}:not([data-processed="true"])`,
|
|
2283
|
+
suppressErrors: true
|
|
2284
|
+
}, `.${styles.mermaid}:not([data-processed="true"])`);
|
|
2285
|
+
clearTimeout(t);
|
|
2286
|
+
}, duration);
|
|
2287
|
+
};
|
|
2254
2288
|
//渲染问答
|
|
2255
2289
|
const renderQuestion = ()=>{
|
|
2256
2290
|
function itemContent(index, item) {
|
|
@@ -2291,6 +2325,8 @@ const CustomerService = (props)=>{
|
|
|
2291
2325
|
// let code = message.split("```");
|
|
2292
2326
|
// code = code[1];
|
|
2293
2327
|
// console.log(code,888888888);
|
|
2328
|
+
message = removeMermaidBlockComments(message);
|
|
2329
|
+
message = handleRenderSyntaxBlock(message, finishedRef.current || i != historyMessageList.length - 1);
|
|
2294
2330
|
if (lastId == item.id && keyWordProblem != "") {
|
|
2295
2331
|
//点击历史记录时,找到关键字,防止关键字和标签名重复
|
|
2296
2332
|
// let key_sign = 'sign_'+new Date().getTime();+'sign';
|
|
@@ -2344,13 +2380,6 @@ const CustomerService = (props)=>{
|
|
|
2344
2380
|
</span><span class="copyCode">复制代码</span></p><pre`;
|
|
2345
2381
|
return text;
|
|
2346
2382
|
});
|
|
2347
|
-
// message = message.replaceAll(
|
|
2348
|
-
// new RegExp(`<img`, "ig"),
|
|
2349
|
-
// (i: any, index: any) => {
|
|
2350
|
-
// let text = `<div class='${styles.a}'><img`;
|
|
2351
|
-
// return text;
|
|
2352
|
-
// }
|
|
2353
|
-
// );
|
|
2354
2383
|
if (item.sender == mid) {
|
|
2355
2384
|
//只有引用和复制功能
|
|
2356
2385
|
li = /*#__PURE__*/ _jsxs(_Fragment, {
|
|
@@ -2769,13 +2798,7 @@ const CustomerService = (props)=>{
|
|
|
2769
2798
|
},
|
|
2770
2799
|
initialItemCount: 10,
|
|
2771
2800
|
itemsRendered: ()=>{
|
|
2772
|
-
|
|
2773
|
-
mermaid.init({
|
|
2774
|
-
querySelector: `.${styles.mermaid}:not([data-processed="true"])`,
|
|
2775
|
-
suppressErrors: true
|
|
2776
|
-
}, `.${styles.mermaid}:not([data-processed="true"])`);
|
|
2777
|
-
clearTimeout(t);
|
|
2778
|
-
}, 100);
|
|
2801
|
+
renderMermaid();
|
|
2779
2802
|
},
|
|
2780
2803
|
// startReached={(index) => {
|
|
2781
2804
|
// console.log('atTopStateChange-startReached',index,lastIdRef.current)
|
|
@@ -2849,7 +2872,7 @@ const CustomerService = (props)=>{
|
|
|
2849
2872
|
},
|
|
2850
2873
|
// context={{ loading }}
|
|
2851
2874
|
firstItemIndex: firstItemIndex,
|
|
2852
|
-
logLevel
|
|
2875
|
+
// logLevel={0}
|
|
2853
2876
|
overscan: {
|
|
2854
2877
|
main: 1000,
|
|
2855
2878
|
reverse: 1000
|
|
@@ -4232,12 +4255,6 @@ const CustomerService = (props)=>{
|
|
|
4232
4255
|
resolve(viewBase64);
|
|
4233
4256
|
});
|
|
4234
4257
|
}
|
|
4235
|
-
}),
|
|
4236
|
-
showMemaid && memaidContent && /*#__PURE__*/ _jsx(ViewMemaid, {
|
|
4237
|
-
visible: showMemaid,
|
|
4238
|
-
onCancel: ()=>setShowMemaid(false),
|
|
4239
|
-
className: "",
|
|
4240
|
-
content: memaidContent
|
|
4241
4258
|
})
|
|
4242
4259
|
]
|
|
4243
4260
|
});
|
|
@@ -503,7 +503,6 @@
|
|
|
503
503
|
margin-bottom: 8px;
|
|
504
504
|
border-radius: 0 0 4px 4px;
|
|
505
505
|
&.mermaid{
|
|
506
|
-
text-align: center;
|
|
507
506
|
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
|
508
507
|
border-radius: 4px;
|
|
509
508
|
margin: 0;
|
|
@@ -524,6 +523,8 @@
|
|
|
524
523
|
display: inline-block;
|
|
525
524
|
max-width: 100%;
|
|
526
525
|
padding: 0 !important;
|
|
526
|
+
margin-top: 8px;
|
|
527
|
+
margin-bottom: 8px;
|
|
527
528
|
>img{
|
|
528
529
|
max-width: 100%;
|
|
529
530
|
}
|
|
@@ -496,7 +496,6 @@
|
|
|
496
496
|
margin-bottom: 8px;
|
|
497
497
|
border-radius: 0 0 4px 4px;
|
|
498
498
|
&.mermaid{
|
|
499
|
-
text-align: center;
|
|
500
499
|
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
|
501
500
|
border-radius: 4px;
|
|
502
501
|
margin:0;
|
|
@@ -518,6 +517,8 @@
|
|
|
518
517
|
display: inline-block;
|
|
519
518
|
max-width: 100%;
|
|
520
519
|
padding: 0 !important;
|
|
520
|
+
margin-top: 8px;
|
|
521
|
+
margin-bottom: 8px;
|
|
521
522
|
>img{
|
|
522
523
|
max-width: 100%;
|
|
523
524
|
}
|
|
@@ -22,4 +22,6 @@ declare const getBase64Image: (src: any) => Promise<unknown>;
|
|
|
22
22
|
declare const formatDate: (dateStr: any) => any;
|
|
23
23
|
declare const urlToBase64: (url: string) => Promise<unknown>;
|
|
24
24
|
declare const toHashString: (str: string) => string;
|
|
25
|
-
|
|
25
|
+
declare const removeMermaidBlockComments: (markdownContent: any) => any;
|
|
26
|
+
declare const handleRenderSyntaxBlock: (markdownContent: any, flag: boolean) => any;
|
|
27
|
+
export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString, removeMermaidBlockComments, handleRenderSyntaxBlock, };
|
|
@@ -195,4 +195,39 @@ var toHashString = function(str) {
|
|
|
195
195
|
// 转换为正数并格式化为8位十六进制
|
|
196
196
|
return (result >>> 0).toString(16).padStart(8, "0");
|
|
197
197
|
};
|
|
198
|
-
|
|
198
|
+
// 正则:匹配```mermaid代码块内 ‘// 注释的内容’ 移除
|
|
199
|
+
var removeMermaidBlockComments = function(markdownContent) {
|
|
200
|
+
// 正则匹配 ```mermaid 代码块,捕获块内内容
|
|
201
|
+
var mermaidBlockRegex = /(```mermaid\n)([\s\S]*?)(\n```)/gm;
|
|
202
|
+
// 替换逻辑:保留代码块标识,仅清理块内注释
|
|
203
|
+
return markdownContent.replace(mermaidBlockRegex, function(match, prefix, content, suffix) {
|
|
204
|
+
// 清理块内注释的正则(同之前逻辑,优先保留字符串)
|
|
205
|
+
var commentRegex = /(".*?"|'.*?')|(\/\*[\s\S]*?\*\/)|(\/\/.*?$)/gm;
|
|
206
|
+
var cleanContent = content.replace(commentRegex, function(m, stringPart) {
|
|
207
|
+
return stringPart || "";
|
|
208
|
+
}).replace(/<br>/g, "");
|
|
209
|
+
// 拼接回完整代码块(保留 ```mermaid 和 ``` 标识)
|
|
210
|
+
return "".concat(prefix).concat(cleanContent).concat(suffix);
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
// 处理渲染语法
|
|
214
|
+
var handleRenderSyntaxBlock = function(markdownContent, flag) {
|
|
215
|
+
if (flag) {
|
|
216
|
+
// 正则匹配  图片语法
|
|
217
|
+
var imgBlockRegex = /\[([^\]]*)\]\[\]\((https?:\/\/[^\s)]+)\)/gm;
|
|
218
|
+
markdownContent = markdownContent.replace(imgBlockRegex, function(match, altText, url) {
|
|
219
|
+
return ".concat(url, ")");
|
|
220
|
+
});
|
|
221
|
+
markdownContent = markdownContent.replaceAll("```mermaid-code", "```mermaid");
|
|
222
|
+
return markdownContent;
|
|
223
|
+
} else {
|
|
224
|
+
// 正则匹配  图片语法
|
|
225
|
+
var imgBlockRegex1 = /!\[([^\]]*)\]\((https?:\/\/[^\s)]+)\)/gm;
|
|
226
|
+
markdownContent = markdownContent.replace(imgBlockRegex1, function(match, altText, url) {
|
|
227
|
+
return "[".concat(altText, "][](").concat(url, ")");
|
|
228
|
+
});
|
|
229
|
+
markdownContent = markdownContent.replaceAll("```mermaid", "```mermaid-code");
|
|
230
|
+
return markdownContent;
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString, removeMermaidBlockComments, handleRenderSyntaxBlock };
|