Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
水玉婷
ai-wechat
Commits
ced88523
Commit
ced88523
authored
Dec 24, 2025
by
水玉婷
Browse files
feat:优化md,tips样式,md图片渲染问题以及历史记录完成思考
parent
d7e7c0e3
Changes
4
Hide whitespace changes
Inline
Side-by-side
package-lock.json
View file @
ced88523
...
@@ -520,39 +520,39 @@
...
@@ -520,39 +520,39 @@
}
}
},
},
"node_modules/@vue/compiler-core"
:
{
"node_modules/@vue/compiler-core"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig
=="
,
"integrity"
:
"sha512-
vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@babel/parser"
:
"^7.28.5"
,
"@babel/parser"
:
"^7.28.5"
,
"@vue/shared"
:
"3.5.2
4
"
,
"@vue/shared"
:
"3.5.2
6
"
,
"entities"
:
"^
4.5
.0"
,
"entities"
:
"^
7.0
.0"
,
"estree-walker"
:
"^2.0.2"
,
"estree-walker"
:
"^2.0.2"
,
"source-map-js"
:
"^1.2.1"
"source-map-js"
:
"^1.2.1"
}
}
},
},
"node_modules/@vue/compiler-dom"
:
{
"node_modules/@vue/compiler-dom"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw
=="
,
"integrity"
:
"sha512-
y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/compiler-core"
:
"3.5.2
4
"
,
"@vue/compiler-core"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
"@vue/shared"
:
"3.5.2
6
"
}
}
},
},
"node_modules/@vue/compiler-sfc"
:
{
"node_modules/@vue/compiler-sfc"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g
=="
,
"integrity"
:
"sha512-
egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@babel/parser"
:
"^7.28.5"
,
"@babel/parser"
:
"^7.28.5"
,
"@vue/compiler-core"
:
"3.5.2
4
"
,
"@vue/compiler-core"
:
"3.5.2
6
"
,
"@vue/compiler-dom"
:
"3.5.2
4
"
,
"@vue/compiler-dom"
:
"3.5.2
6
"
,
"@vue/compiler-ssr"
:
"3.5.2
4
"
,
"@vue/compiler-ssr"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
,
"@vue/shared"
:
"3.5.2
6
"
,
"estree-walker"
:
"^2.0.2"
,
"estree-walker"
:
"^2.0.2"
,
"magic-string"
:
"^0.30.21"
,
"magic-string"
:
"^0.30.21"
,
"postcss"
:
"^8.5.6"
,
"postcss"
:
"^8.5.6"
,
...
@@ -560,13 +560,13 @@
...
@@ -560,13 +560,13 @@
}
}
},
},
"node_modules/@vue/compiler-ssr"
:
{
"node_modules/@vue/compiler-ssr"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg
=="
,
"integrity"
:
"sha512-
lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/compiler-dom"
:
"3.5.2
4
"
,
"@vue/compiler-dom"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
"@vue/shared"
:
"3.5.2
6
"
}
}
},
},
"node_modules/@vue/devtools-api"
:
{
"node_modules/@vue/devtools-api"
:
{
...
@@ -576,53 +576,53 @@
...
@@ -576,53 +576,53 @@
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/@vue/reactivity"
:
{
"node_modules/@vue/reactivity"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg
=="
,
"integrity"
:
"sha512-
9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/shared"
:
"3.5.2
4
"
"@vue/shared"
:
"3.5.2
6
"
}
}
},
},
"node_modules/@vue/runtime-core"
:
{
"node_modules/@vue/runtime-core"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9und
Q=="
,
"integrity"
:
"sha512-
xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/
Q=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/reactivity"
:
"3.5.2
4
"
,
"@vue/reactivity"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
"@vue/shared"
:
"3.5.2
6
"
}
}
},
},
"node_modules/@vue/runtime-dom"
:
{
"node_modules/@vue/runtime-dom"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw
=="
,
"integrity"
:
"sha512-
XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/reactivity"
:
"3.5.2
4
"
,
"@vue/reactivity"
:
"3.5.2
6
"
,
"@vue/runtime-core"
:
"3.5.2
4
"
,
"@vue/runtime-core"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
,
"@vue/shared"
:
"3.5.2
6
"
,
"csstype"
:
"^3.
1
.3"
"csstype"
:
"^3.
2
.3"
}
}
},
},
"node_modules/@vue/server-renderer"
:
{
"node_modules/@vue/server-renderer"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w
=="
,
"integrity"
:
"sha512-
TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/compiler-ssr"
:
"3.5.2
4
"
,
"@vue/compiler-ssr"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
"@vue/shared"
:
"3.5.2
6
"
},
},
"peerDependencies"
:
{
"peerDependencies"
:
{
"vue"
:
"3.5.2
4
"
"vue"
:
"3.5.2
6
"
}
}
},
},
"node_modules/@vue/shared"
:
{
"node_modules/@vue/shared"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/@vue/shared/-/shared-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/@vue/shared/-/shared-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1
A=="
,
"integrity"
:
"sha512-
7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4
A=="
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/ant-design-vue"
:
{
"node_modules/ant-design-vue"
:
{
...
@@ -802,9 +802,9 @@
...
@@ -802,9 +802,9 @@
}
}
},
},
"node_modules/entities"
:
{
"node_modules/entities"
:
{
"version"
:
"
4.5
.0"
,
"version"
:
"
7.0
.0"
,
"resolved"
:
"https://registry.npmjs.org/entities/-/entities-
4.5
.0.tgz"
,
"resolved"
:
"https://registry.npmjs.org/entities/-/entities-
7.0
.0.tgz"
,
"integrity"
:
"sha512-
V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw
=="
,
"integrity"
:
"sha512-
FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ
=="
,
"license"
:
"BSD-2-Clause"
,
"license"
:
"BSD-2-Clause"
,
"engines"
:
{
"engines"
:
{
"node"
:
">=0.12"
"node"
:
">=0.12"
...
@@ -1129,10 +1129,11 @@
...
@@ -1129,10 +1129,11 @@
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/less"
:
{
"node_modules/less"
:
{
"version"
:
"4.
4.2
"
,
"version"
:
"4.
5.1
"
,
"resolved"
:
"https://registry.npmjs.org/less/-/less-4.
4.2
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/less/-/less-4.
5.1
.tgz"
,
"integrity"
:
"sha512-
j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g
=="
,
"integrity"
:
"sha512-
UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw
=="
,
"dev"
:
true
,
"dev"
:
true
,
"hasInstallScript"
:
true
,
"license"
:
"Apache-2.0"
,
"license"
:
"Apache-2.0"
,
"dependencies"
:
{
"dependencies"
:
{
"copy-anything"
:
"^2.0.1"
,
"copy-anything"
:
"^2.0.1"
,
...
@@ -1162,9 +1163,9 @@
...
@@ -1162,9 +1163,9 @@
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/lodash-es"
:
{
"node_modules/lodash-es"
:
{
"version"
:
"4.17.2
1
"
,
"version"
:
"4.17.2
2
"
,
"resolved"
:
"https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.2
1
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.2
2
.tgz"
,
"integrity"
:
"sha512-
mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw
=="
,
"integrity"
:
"sha512-
XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q
=="
,
"license"
:
"MIT"
"license"
:
"MIT"
},
},
"node_modules/loose-envify"
:
{
"node_modules/loose-envify"
:
{
...
@@ -1506,16 +1507,16 @@
...
@@ -1506,16 +1507,16 @@
}
}
},
},
"node_modules/vue"
:
{
"node_modules/vue"
:
{
"version"
:
"3.5.2
4
"
,
"version"
:
"3.5.2
6
"
,
"resolved"
:
"https://registry.npmjs.org/vue/-/vue-3.5.2
4
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vue/-/vue-3.5.2
6
.tgz"
,
"integrity"
:
"sha512-
uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg
=="
,
"integrity"
:
"sha512-
SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA
=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/compiler-dom"
:
"3.5.2
4
"
,
"@vue/compiler-dom"
:
"3.5.2
6
"
,
"@vue/compiler-sfc"
:
"3.5.2
4
"
,
"@vue/compiler-sfc"
:
"3.5.2
6
"
,
"@vue/runtime-dom"
:
"3.5.2
4
"
,
"@vue/runtime-dom"
:
"3.5.2
6
"
,
"@vue/server-renderer"
:
"3.5.2
4
"
,
"@vue/server-renderer"
:
"3.5.2
6
"
,
"@vue/shared"
:
"3.5.2
4
"
"@vue/shared"
:
"3.5.2
6
"
},
},
"peerDependencies"
:
{
"peerDependencies"
:
{
"typescript"
:
"*"
"typescript"
:
"*"
...
@@ -1527,9 +1528,9 @@
...
@@ -1527,9 +1528,9 @@
}
}
},
},
"node_modules/vue-router"
:
{
"node_modules/vue-router"
:
{
"version"
:
"4.6.
3
"
,
"version"
:
"4.6.
4
"
,
"resolved"
:
"https://registry.npmjs.org/vue-router/-/vue-router-4.6.
3
.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vue-router/-/vue-router-4.6.
4
.tgz"
,
"integrity"
:
"sha512-
ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQ
g=="
,
"integrity"
:
"sha512-
Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgV
g=="
,
"license"
:
"MIT"
,
"license"
:
"MIT"
,
"dependencies"
:
{
"dependencies"
:
{
"@vue/devtools-api"
:
"^6.6.4"
"@vue/devtools-api"
:
"^6.6.4"
...
...
src/views/components/style.less
View file @
ced88523
...
@@ -947,7 +947,10 @@ li {
...
@@ -947,7 +947,10 @@ li {
font-weight: 500;
font-weight: 500;
line-height: 1.4;
line-height: 1.4;
}
}
.message-inner-box:has(.message-tips) + .message-inner-box :deep(.message-markdown) {
margin: -1px 0 8px ;
border-radius: 0 0 8px 8px;
}
// =============================================
// =============================================
// Markdown消息样式
// Markdown消息样式
// =============================================
// =============================================
...
@@ -955,11 +958,11 @@ li {
...
@@ -955,11 +958,11 @@ li {
:deep(.message-markdown) {
:deep(.message-markdown) {
width: 100%;
width: 100%;
max-width: 100%;
max-width: 100%;
margin:
-1
px 0
8px
;
margin:
8
px 0;
border-radius:
0 0 8px
8px;
border-radius:8px;
background-color: @white;
background-color: @white;
border: 1px solid @blue-light-3;
border: 1px solid @blue-light-3;
border-top:
none
;
border-top:
1px solid @blue-light-3
;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
overflow: hidden;
overflow: hidden;
...
...
src/views/components/utils/contentTemplateService.ts
View file @
ced88523
...
@@ -424,9 +424,8 @@ export class ContentTemplateService {
...
@@ -424,9 +424,8 @@ export class ContentTemplateService {
// 计算思考用时
// 计算思考用时
const
thinkingTime
=
this
.
thinkingStartTime
?
Math
.
round
((
Date
.
now
()
-
this
.
thinkingStartTime
)
/
1000
)
:
0
;
const
thinkingTime
=
this
.
thinkingStartTime
?
Math
.
round
((
Date
.
now
()
-
this
.
thinkingStartTime
)
/
1000
)
:
0
;
// const thinkingTimeText = thinkingTime > 0 ? `已完成思考 (用时:${thinkingTime}s)` : '';
// 对于历史数据,直接显示"已完成思考",不显示具体用时
const
thinkingTimeText
=
thinkingTime
>
0
?
`已完成思考`
:
''
;
const
thinkingTimeText
=
isHistoryData
?
'
已完成思考
'
:
(
thinkingTime
>
0
?
'
已完成思考
'
:
''
);
updatedResponse
.
contentBlocks
[
updatedBlockIndex
].
thinkContent
=
currentThinkContent
;
updatedResponse
.
contentBlocks
[
updatedBlockIndex
].
thinkContent
=
currentThinkContent
;
// 添加思考时长信息到内容块中,供前端模板使用
// 添加思考时长信息到内容块中,供前端模板使用
...
...
src/views/components/utils/markdownTemplate.ts
View file @
ced88523
...
@@ -651,7 +651,14 @@ export const processStreamingMarkdown = (text: string): string => {
...
@@ -651,7 +651,14 @@ export const processStreamingMarkdown = (text: string): string => {
// 清理危险的HTML标签,防止XSS攻击,但保留图片和必要的容器标签
// 清理危险的HTML标签,防止XSS攻击,但保留图片和必要的容器标签
text
=
text
.
replace
(
/<script
\b[^
<
]
*
(?:(?!
<
\/
script>
)
<
[^
<
]
*
)
*<
\/
script>/gi
,
''
);
text
=
text
.
replace
(
/<script
\b[^
<
]
*
(?:(?!
<
\/
script>
)
<
[^
<
]
*
)
*<
\/
script>/gi
,
''
);
// 移除其他危险标签,但保留img、div、span等安全标签
// 移除其他危险标签,但保留img、div、span等安全标签
text
=
text
.
replace
(
/<
(?!\/?(
img|div|span|p|br|ol|ul|li|table|tr|td|th|blockquote|pre|code|strong|em|a|h
[
1-6
])(\s
+
[^
>
]
*
)?
>
)[^
>
]
*>/gi
,
''
);
text
=
text
.
replace
(
/<
(?!\/?)(
img|div|span|p|br|ol|ul|li|table|tr|td|th|blockquote|pre|code|strong|em|a|h
[
1-6
])(\s
+
[^
>
]
*
)?
>/gi
,
''
);
// 首先检查文本中是否包含图片,如果有图片,优先处理图片
const
imageMatch
=
text
.
match
(
/!
\[([^\]]
*
)\]\(([^\)]
+
)\)
/
);
if
(
imageMatch
)
{
// 如果文本包含图片,直接使用完整的Markdown解析器处理
return
parseMarkdown
(
text
);
}
// 使用流式列表处理器处理文本
// 使用流式列表处理器处理文本
const
listResult
=
streamingListProcessor
.
processText
(
text
);
const
listResult
=
streamingListProcessor
.
processText
(
text
);
...
@@ -668,7 +675,10 @@ export const processStreamingMarkdown = (text: string): string => {
...
@@ -668,7 +675,10 @@ export const processStreamingMarkdown = (text: string): string => {
if
(
remainingText
&&
!
isListItem
(
remainingText
))
{
if
(
remainingText
&&
!
isListItem
(
remainingText
))
{
// 有剩余的非列表内容(如图片),需要继续处理
// 有剩余的非列表内容(如图片),需要继续处理
const
remainingResult
=
parseMarkdown
(
remainingText
);
const
remainingResult
=
parseMarkdown
(
remainingText
);
return
listResult
+
remainingResult
;
// 将列表和剩余内容合并,然后统一处理
const
combinedContent
=
listResult
+
remainingResult
;
// 重新解析合并后的内容,确保所有内容都在正确的容器中
return
combinedContent
;
}
}
return
listResult
;
return
listResult
;
}
}
...
@@ -684,7 +694,7 @@ export const processStreamingMarkdown = (text: string): string => {
...
@@ -684,7 +694,7 @@ export const processStreamingMarkdown = (text: string): string => {
// 如果表格处理器返回了完整表格,需要确保表格内容中的Markdown格式也被处理
// 如果表格处理器返回了完整表格,需要确保表格内容中的Markdown格式也被处理
if
(
tableResult
.
includes
(
'
<table
'
))
{
if
(
tableResult
.
includes
(
'
<table
'
))
{
// 对表格内容进行Markdown格式处理
// 对表格内容进行Markdown格式处理
return
processMarkdownFormat
(
tableResult
)
;
return
tableResult
;
}
}
// 否则,处理其他Markdown语法
// 否则,处理其他Markdown语法
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment