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.
@@ -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
- export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString };
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
- export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString };
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
+ // 正则匹配 ![alt](url) 图片语法
211
+ const imgBlockRegex = /\[([^\]]*)\]\[\]\((https?:\/\/[^\s)]+)\)/gm;
212
+ markdownContent = markdownContent.replace(imgBlockRegex, (match, altText, url)=>{
213
+ return `![${altText}](${url})`;
214
+ });
215
+ markdownContent = markdownContent.replaceAll('```mermaid-code', '```mermaid');
216
+ return markdownContent;
217
+ } else {
218
+ // 正则匹配 ![alt](url) 图片语法
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
- return str; // 不高亮 mermaid 代码
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
- const id = 'mermaid_' + toHashString(token.content);
158
- 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>`;
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
- const id = 'mermaid_' + toHashString(token.content);
189
- 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>`;
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
- var _document_querySelector, _svgDomClone;
417
- console.log('openViewMemaid');
418
- const svgDomClone = (_document_querySelector = document.querySelector(`#${id} svg`)) === null || _document_querySelector === void 0 ? void 0 : _document_querySelector.cloneNode(true);
419
- if (!svgDomClone) {
420
- return;
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
- const timer = setTimeout(()=>{
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
- const t = setTimeout(()=>{
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: 0,
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
- export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString };
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
- export { readMessage, getByteLen, serverUrl, copyText, getDataTime, getQuery, resetStyles, findParent, delegate, getBase64Image, formatDate, urlToBase64, toHashString };
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
+ // 正则匹配 ![alt](url) 图片语法
217
+ var imgBlockRegex = /\[([^\]]*)\]\[\]\((https?:\/\/[^\s)]+)\)/gm;
218
+ markdownContent = markdownContent.replace(imgBlockRegex, function(match, altText, url) {
219
+ return "![".concat(altText, "](").concat(url, ")");
220
+ });
221
+ markdownContent = markdownContent.replaceAll("```mermaid-code", "```mermaid");
222
+ return markdownContent;
223
+ } else {
224
+ // 正则匹配 ![alt](url) 图片语法
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 };