@ant-design/agentic-ui 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (581) hide show
  1. package/dist/AgentRunBar/Robot.js +105 -57
  2. package/dist/AgentRunBar/icons/PauseIcon.js +38 -38
  3. package/dist/AgentRunBar/icons/PlayIcon.js +38 -38
  4. package/dist/AgentRunBar/icons/SimplePauseIcon.js +38 -38
  5. package/dist/AgentRunBar/icons/SimplePlayIcon.js +38 -38
  6. package/dist/AgentRunBar/icons/SimpleStopIcon.js +38 -38
  7. package/dist/AgentRunBar/icons/StopIcon.js +41 -50
  8. package/dist/AgentRunBar/icons/index.js +0 -1
  9. package/dist/AgentRunBar/index.js +270 -237
  10. package/dist/AgentRunBar/style.js +273 -239
  11. package/dist/AgenticLayout/index.js +140 -85
  12. package/dist/AgenticLayout/style.js +126 -107
  13. package/dist/AnswerAlert/components/CloseIcon.js +12 -21
  14. package/dist/AnswerAlert/components/ErrorIcon.js +42 -38
  15. package/dist/AnswerAlert/components/InfoIcon.js +42 -38
  16. package/dist/AnswerAlert/components/LoaderIcon.js +12 -21
  17. package/dist/AnswerAlert/components/SuccessIcon.js +42 -38
  18. package/dist/AnswerAlert/components/WarningIcon.js +42 -38
  19. package/dist/AnswerAlert/index.js +155 -75
  20. package/dist/AnswerAlert/style.js +159 -147
  21. package/dist/BackTo/BackBottom.js +154 -70
  22. package/dist/BackTo/BackTop.js +148 -68
  23. package/dist/BackTo/ScrollVisibleButton.js +124 -98
  24. package/dist/BackTo/hooks/useScrollVisible.js +79 -33
  25. package/dist/BackTo/icons/BottomIcon.js +37 -37
  26. package/dist/BackTo/icons/TopIcon.js +37 -37
  27. package/dist/BackTo/index.js +22 -7
  28. package/dist/BackTo/style.js +93 -70
  29. package/dist/Bubble/AIBubble.js +469 -406
  30. package/dist/Bubble/Avatar/index.js +139 -85
  31. package/dist/Bubble/Avatar/isEmoji.js +2 -6
  32. package/dist/Bubble/Bubble.js +114 -38
  33. package/dist/Bubble/BubbleBeforeNode.js +104 -74
  34. package/dist/Bubble/BubbleConfigProvide.js +3 -7
  35. package/dist/Bubble/FileView.js +63 -69
  36. package/dist/Bubble/List/PureBubbleList.js +130 -131
  37. package/dist/Bubble/List/SkeletonList.js +33 -24
  38. package/dist/Bubble/List/index.js +187 -124
  39. package/dist/Bubble/List/style.js +76 -47
  40. package/dist/Bubble/MessagesContent/BubbleContext.js +6 -12
  41. package/dist/Bubble/MessagesContent/BubbleExtra.js +663 -355
  42. package/dist/Bubble/MessagesContent/CopyButton/index.js +326 -96
  43. package/dist/Bubble/MessagesContent/DocInfo.js +351 -386
  44. package/dist/Bubble/MessagesContent/EXCEPTION.js +42 -22
  45. package/dist/Bubble/MessagesContent/MarkdownPreview.js +206 -156
  46. package/dist/Bubble/MessagesContent/VoiceButton/index.js +213 -115
  47. package/dist/Bubble/MessagesContent/VoiceButton/style.js +129 -105
  48. package/dist/Bubble/MessagesContent/VoiceButton/types.js +9 -0
  49. package/dist/Bubble/MessagesContent/docInfoStyle.js +118 -88
  50. package/dist/Bubble/MessagesContent/icons.js +157 -57
  51. package/dist/Bubble/MessagesContent/index.js +609 -368
  52. package/dist/Bubble/PureBubble.js +439 -326
  53. package/dist/Bubble/Title.js +110 -87
  54. package/dist/Bubble/UserBubble.js +218 -279
  55. package/dist/Bubble/index.js +10 -16
  56. package/dist/Bubble/style.js +248 -227
  57. package/dist/Bubble/type.js +3 -0
  58. package/dist/Bubble/types/BubbleExtra.js +1 -0
  59. package/dist/Bubble/types/DocInfo.js +1 -0
  60. package/dist/ChatBootPage/ButtonTab.js +25 -45
  61. package/dist/ChatBootPage/ButtonTabGroup.js +74 -47
  62. package/dist/ChatBootPage/ButtonTabGroupStyle.js +73 -45
  63. package/dist/ChatBootPage/ButtonTabStyle.js +121 -98
  64. package/dist/ChatBootPage/CaseReply.js +119 -113
  65. package/dist/ChatBootPage/CaseReplyStyle.js +217 -189
  66. package/dist/ChatBootPage/Title.js +19 -23
  67. package/dist/ChatBootPage/index.js +9 -11
  68. package/dist/ChatBootPage/style.js +80 -50
  69. package/dist/ChatLayout/index.js +93 -57
  70. package/dist/ChatLayout/style.js +206 -176
  71. package/dist/ChatLayout/types.js +1 -0
  72. package/dist/Components/ActionIconBox/index.js +571 -197
  73. package/dist/Components/ActionIconBox/style.js +141 -111
  74. package/dist/Components/ActionItemBox/ActionItemBox.js +95 -149
  75. package/dist/Components/ActionItemBox/index.js +7 -7
  76. package/dist/Components/ActionItemBox/style.js +353 -361
  77. package/dist/Components/Button/IconButton/index.js +35 -43
  78. package/dist/Components/Button/IconButton/style.js +357 -331
  79. package/dist/Components/Button/SwitchButton/index.js +243 -87
  80. package/dist/Components/Button/SwitchButton/style.js +160 -146
  81. package/dist/Components/Button/ToggleButton/index.js +46 -57
  82. package/dist/Components/Button/ToggleButton/style.js +283 -258
  83. package/dist/Components/Button/index.js +6 -2
  84. package/dist/Components/GradientText/index.js +21 -27
  85. package/dist/Components/GradientText/style.js +88 -63
  86. package/dist/Components/ImageList.js +111 -133
  87. package/dist/Components/LayoutHeader/index.js +145 -81
  88. package/dist/Components/LayoutHeader/style.js +89 -64
  89. package/dist/Components/LayoutHeader/types.js +3 -0
  90. package/dist/Components/Loading/index.js +53 -22
  91. package/dist/Components/Robot/index.js +90 -56
  92. package/dist/Components/Robot/lotties/DazingLottie/index.js +78 -47
  93. package/dist/Components/Robot/lotties/ThinkingLottie/index.js +78 -47
  94. package/dist/Components/Robot/lotties/index.js +0 -1
  95. package/dist/Components/SuggestionList/index.js +354 -182
  96. package/dist/Components/SuggestionList/style.js +204 -186
  97. package/dist/Components/TextAnimate/index.js +494 -362
  98. package/dist/Components/TextAnimate/style.js +72 -48
  99. package/dist/Components/TypingAnimation/index.js +214 -169
  100. package/dist/Components/TypingAnimation/style.js +76 -52
  101. package/dist/Components/VisualList/index.js +267 -180
  102. package/dist/Components/VisualList/style.js +140 -124
  103. package/dist/Components/icons/LoadingSpinnerIcon.js +124 -73
  104. package/dist/Components/lotties/DazingLottie/index.js +78 -47
  105. package/dist/Components/lotties/LoadingLottie/index.js +82 -48
  106. package/dist/Components/lotties/TextLoading/index.js +73 -49
  107. package/dist/Components/lotties/TextLoading/style.js +95 -78
  108. package/dist/Components/lotties/ThinkingLottie/index.js +78 -47
  109. package/dist/Components/lotties/index.js +0 -1
  110. package/dist/Constants/colors.js +71 -97
  111. package/dist/History/components/HistoryActionsBox.js +407 -180
  112. package/dist/History/components/HistoryEmpty.js +38 -42
  113. package/dist/History/components/HistoryEmptyIcon.js +682 -964
  114. package/dist/History/components/HistoryItem.js +683 -471
  115. package/dist/History/components/HistoryList.js +170 -87
  116. package/dist/History/components/HistoryRunningIcon.js +160 -111
  117. package/dist/History/components/LoadMoreComponent.js +308 -103
  118. package/dist/History/components/NewChatComponent.js +261 -69
  119. package/dist/History/components/NewChatComponent.style.js +79 -53
  120. package/dist/History/components/SearchComponent.js +367 -156
  121. package/dist/History/components/index.js +11 -23
  122. package/dist/History/hooks/useHistory.js +404 -129
  123. package/dist/History/index.js +301 -186
  124. package/dist/History/menu.js +158 -212
  125. package/dist/History/style.js +282 -276
  126. package/dist/History/types/HistoryData.js +6 -10
  127. package/dist/History/types/HistoryList.js +3 -0
  128. package/dist/History/types/index.js +3 -0
  129. package/dist/History/utils/index.js +35 -32
  130. package/dist/Hooks/useAutoScroll.js +262 -84
  131. package/dist/Hooks/useClickAway.js +60 -21
  132. package/dist/Hooks/useCopied.js +72 -20
  133. package/dist/Hooks/useDebounceFn/index.js +213 -55
  134. package/dist/Hooks/useIntersectionOnce.js +163 -74
  135. package/dist/Hooks/useLanguage.js +67 -26
  136. package/dist/Hooks/useRefFunction/index.js +76 -11
  137. package/dist/Hooks/useSpeechSynthesis.js +143 -99
  138. package/dist/Hooks/useStyle/index.js +95 -60
  139. package/dist/Hooks/useThrottleFn/index.js +41 -41
  140. package/dist/I18n/index.js +246 -109
  141. package/dist/I18n/locales.js +718 -711
  142. package/dist/Icons/animated/VoicePlayLottie/index.js +75 -46
  143. package/dist/Icons/animated/VoicingLottie/index.js +78 -47
  144. package/dist/MarkdownEditor/BaseMarkdownEditor.js +421 -349
  145. package/dist/MarkdownEditor/editor/Editor.js +1160 -843
  146. package/dist/MarkdownEditor/editor/components/CommentList/index.js +407 -239
  147. package/dist/MarkdownEditor/editor/components/CommentList/style.js +119 -89
  148. package/dist/MarkdownEditor/editor/components/ContributorAvatar/index.js +61 -63
  149. package/dist/MarkdownEditor/editor/components/ContributorAvatar/style.js +82 -52
  150. package/dist/MarkdownEditor/editor/components/LazyElement/index.js +208 -106
  151. package/dist/MarkdownEditor/editor/components/LazyElement/style.js +69 -42
  152. package/dist/MarkdownEditor/editor/components/fntTag/index.js +7 -11
  153. package/dist/MarkdownEditor/editor/components/fntTag/style.js +66 -36
  154. package/dist/MarkdownEditor/editor/components/index.js +0 -1
  155. package/dist/MarkdownEditor/editor/elements/Blockquote.js +95 -37
  156. package/dist/MarkdownEditor/editor/elements/Break.js +56 -25
  157. package/dist/MarkdownEditor/editor/elements/Card/index.js +131 -52
  158. package/dist/MarkdownEditor/editor/elements/Code.js +89 -67
  159. package/dist/MarkdownEditor/editor/elements/Comment/index.js +79 -50
  160. package/dist/MarkdownEditor/editor/elements/ErrorBoundary.js +117 -21
  161. package/dist/MarkdownEditor/editor/elements/FootnoteDefinition.js +83 -64
  162. package/dist/MarkdownEditor/editor/elements/FootnoteReference.js +115 -41
  163. package/dist/MarkdownEditor/editor/elements/Head.js +131 -67
  164. package/dist/MarkdownEditor/editor/elements/Hr.js +63 -38
  165. package/dist/MarkdownEditor/editor/elements/Image/index.js +636 -494
  166. package/dist/MarkdownEditor/editor/elements/InlineKatex.js +60 -44
  167. package/dist/MarkdownEditor/editor/elements/Katex.js +71 -55
  168. package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +79 -175
  169. package/dist/MarkdownEditor/editor/elements/LinkCard/style.js +130 -100
  170. package/dist/MarkdownEditor/editor/elements/List/List.js +96 -69
  171. package/dist/MarkdownEditor/editor/elements/List/ListItem.js +422 -247
  172. package/dist/MarkdownEditor/editor/elements/List/index.js +1 -5
  173. package/dist/MarkdownEditor/editor/elements/List/style.js +131 -117
  174. package/dist/MarkdownEditor/editor/elements/Media.js +637 -519
  175. package/dist/MarkdownEditor/editor/elements/Mermaid.js +79 -54
  176. package/dist/MarkdownEditor/editor/elements/Paragraph.js +144 -83
  177. package/dist/MarkdownEditor/editor/elements/Schema.js +167 -128
  178. package/dist/MarkdownEditor/editor/elements/Table/ReadonlyTableComponent.js +211 -178
  179. package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +73 -49
  180. package/dist/MarkdownEditor/editor/elements/Table/Table.js +285 -204
  181. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/index.js +397 -280
  182. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/style.js +126 -101
  183. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/index.js +381 -276
  184. package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/style.js +120 -98
  185. package/dist/MarkdownEditor/editor/elements/Table/TableContext.js +64 -21
  186. package/dist/MarkdownEditor/editor/elements/Table/TableRowIndex/index.js +52 -42
  187. package/dist/MarkdownEditor/editor/elements/Table/TableRowIndex/style.js +69 -39
  188. package/dist/MarkdownEditor/editor/elements/Table/Td/index.js +126 -72
  189. package/dist/MarkdownEditor/editor/elements/Table/Td/style.js +85 -55
  190. package/dist/MarkdownEditor/editor/elements/Table/index.js +204 -105
  191. package/dist/MarkdownEditor/editor/elements/Table/style.js +244 -233
  192. package/dist/MarkdownEditor/editor/elements/Table/useScrollShadow.js +119 -62
  193. package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +438 -276
  194. package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +103 -77
  195. package/dist/MarkdownEditor/editor/elements/index.js +437 -424
  196. package/dist/MarkdownEditor/editor/parser/json-parse.js +38 -9
  197. package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1753 -1168
  198. package/dist/MarkdownEditor/editor/parser/parserMdToSchema.js +16 -20
  199. package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +1021 -606
  200. package/dist/MarkdownEditor/editor/parser/remarkParse.js +158 -102
  201. package/dist/MarkdownEditor/editor/plugins/catchError.js +78 -17
  202. package/dist/MarkdownEditor/editor/plugins/elements.js +458 -342
  203. package/dist/MarkdownEditor/editor/plugins/handlePaste.js +752 -300
  204. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/arrow.js +215 -129
  205. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +325 -180
  206. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/enter.js +576 -418
  207. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/match.js +157 -47
  208. package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +331 -209
  209. package/dist/MarkdownEditor/editor/plugins/index.js +0 -1
  210. package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +1245 -507
  211. package/dist/MarkdownEditor/editor/plugins/parseMarkdownToNodesAndInsert.js +36 -24
  212. package/dist/MarkdownEditor/editor/plugins/useHighlight.js +267 -116
  213. package/dist/MarkdownEditor/editor/plugins/useKeyboard.js +234 -160
  214. package/dist/MarkdownEditor/editor/plugins/useOnchange.js +253 -92
  215. package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +728 -439
  216. package/dist/MarkdownEditor/editor/store.js +1819 -1389
  217. package/dist/MarkdownEditor/editor/style.js +551 -506
  218. package/dist/MarkdownEditor/editor/tagStyles.js +43 -43
  219. package/dist/MarkdownEditor/editor/tools/DragHandle.js +56 -54
  220. package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +1049 -732
  221. package/dist/MarkdownEditor/editor/tools/InsertLink.js +232 -181
  222. package/dist/MarkdownEditor/editor/tools/Leading.js +566 -303
  223. package/dist/MarkdownEditor/editor/tools/ToolBar/BaseBar.js +415 -377
  224. package/dist/MarkdownEditor/editor/tools/ToolBar/FloatBar.js +162 -125
  225. package/dist/MarkdownEditor/editor/tools/ToolBar/ReadonlyBaseBar.js +480 -258
  226. package/dist/MarkdownEditor/editor/tools/ToolBar/ToolBar.js +44 -44
  227. package/dist/MarkdownEditor/editor/tools/ToolBar/components/ClearFormatButton.js +20 -35
  228. package/dist/MarkdownEditor/editor/tools/ToolBar/components/ColorPickerButton.js +69 -73
  229. package/dist/MarkdownEditor/editor/tools/ToolBar/components/FormatButton.js +13 -19
  230. package/dist/MarkdownEditor/editor/tools/ToolBar/components/FormattingTools.js +34 -41
  231. package/dist/MarkdownEditor/editor/tools/ToolBar/components/HeadingDropdown.js +53 -47
  232. package/dist/MarkdownEditor/editor/tools/ToolBar/components/LinkButton.js +11 -19
  233. package/dist/MarkdownEditor/editor/tools/ToolBar/components/ToolBarItem.js +23 -43
  234. package/dist/MarkdownEditor/editor/tools/ToolBar/components/UndoRedoButtons.js +14 -25
  235. package/dist/MarkdownEditor/editor/tools/ToolBar/config/toolsConfig.js +139 -102
  236. package/dist/MarkdownEditor/editor/tools/ToolBar/floatBarStyle.js +95 -65
  237. package/dist/MarkdownEditor/editor/tools/ToolBar/hooks/useToolBarLogic.js +252 -161
  238. package/dist/MarkdownEditor/editor/tools/ToolBar/index.js +14 -24
  239. package/dist/MarkdownEditor/editor/tools/ToolBar/toolBarStyle.js +95 -65
  240. package/dist/MarkdownEditor/editor/tools/insertAutocompleteStyle.js +82 -52
  241. package/dist/MarkdownEditor/editor/types/Table.js +1 -0
  242. package/dist/MarkdownEditor/editor/utils/InlineChromiumBugfix.js +11 -16
  243. package/dist/MarkdownEditor/editor/utils/ace.js +136 -40
  244. package/dist/MarkdownEditor/editor/utils/docx/docxDeserializer.js +29 -32
  245. package/dist/MarkdownEditor/editor/utils/docx/index.js +0 -1
  246. package/dist/MarkdownEditor/editor/utils/docx/module.js +193 -164
  247. package/dist/MarkdownEditor/editor/utils/docx/utils.js +113 -98
  248. package/dist/MarkdownEditor/editor/utils/dom.js +119 -90
  249. package/dist/MarkdownEditor/editor/utils/editorUtils.js +1369 -906
  250. package/dist/MarkdownEditor/editor/utils/htmlToMarkdown.js +196 -184
  251. package/dist/MarkdownEditor/editor/utils/index.js +354 -215
  252. package/dist/MarkdownEditor/editor/utils/isMarkdown.js +56 -44
  253. package/dist/MarkdownEditor/editor/utils/keyboard.js +1229 -664
  254. package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +294 -76
  255. package/dist/MarkdownEditor/editor/utils/media.js +274 -99
  256. package/dist/MarkdownEditor/editor/utils/path.js +22 -16
  257. package/dist/MarkdownEditor/editor/utils/performanceMonitor.js +370 -168
  258. package/dist/MarkdownEditor/editor/utils/useLocalState.js +96 -37
  259. package/dist/MarkdownEditor/el.js +1 -0
  260. package/dist/MarkdownEditor/hooks/editor.js +123 -41
  261. package/dist/MarkdownEditor/hooks/subscribe.js +18 -15
  262. package/dist/MarkdownEditor/index.js +118 -30
  263. package/dist/MarkdownEditor/plugin.js +2 -5
  264. package/dist/MarkdownEditor/style.js +96 -66
  265. package/dist/MarkdownEditor/types.js +1 -0
  266. package/dist/MarkdownEditor/utils/exportHtml.js +42 -83
  267. package/dist/MarkdownEditor/utils/native-table/index.js +0 -1
  268. package/dist/MarkdownEditor/utils/native-table/native-table-editor.js +337 -222
  269. package/dist/MarkdownEditor/utils/native-table/native-table-keyboard.js +201 -113
  270. package/dist/MarkdownInputField/AttachmentButton/AttachmentButtonPopover.js +86 -79
  271. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileIcon.js +62 -33
  272. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +147 -125
  273. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/index.js +174 -129
  274. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/style.js +263 -237
  275. package/dist/MarkdownInputField/AttachmentButton/index.js +465 -205
  276. package/dist/MarkdownInputField/AttachmentButton/style.js +143 -114
  277. package/dist/MarkdownInputField/AttachmentButton/types.js +3 -0
  278. package/dist/MarkdownInputField/AttachmentButton/utils.js +64 -34
  279. package/dist/MarkdownInputField/BeforeToolContainer/BeforeToolContainer.js +438 -404
  280. package/dist/MarkdownInputField/Enlargement/index.js +7 -17
  281. package/dist/MarkdownInputField/FileMapView/FileMapViewItem.js +193 -216
  282. package/dist/MarkdownInputField/FileMapView/index.js +387 -174
  283. package/dist/MarkdownInputField/FileMapView/style.js +281 -259
  284. package/dist/MarkdownInputField/FilePaste/index.js +239 -65
  285. package/dist/MarkdownInputField/FileUploadManager/index.js +460 -170
  286. package/dist/MarkdownInputField/MarkdownInputField.js +819 -549
  287. package/dist/MarkdownInputField/QuickActions/index.js +304 -134
  288. package/dist/MarkdownInputField/RefinePromptButton/index.js +24 -33
  289. package/dist/MarkdownInputField/RefinePromptButton/style.js +99 -73
  290. package/dist/MarkdownInputField/SendActions/index.js +179 -197
  291. package/dist/MarkdownInputField/SendButton/index.js +150 -110
  292. package/dist/MarkdownInputField/SendButton/style.js +95 -64
  293. package/dist/MarkdownInputField/SkillModeBar/hooks/index.js +3 -5
  294. package/dist/MarkdownInputField/SkillModeBar/hooks/useSkillModeState.js +51 -26
  295. package/dist/MarkdownInputField/SkillModeBar/index.js +119 -106
  296. package/dist/MarkdownInputField/SkillModeBar/style.js +124 -98
  297. package/dist/MarkdownInputField/Suggestion/index.js +391 -154
  298. package/dist/MarkdownInputField/TopOperatingArea/index.js +37 -44
  299. package/dist/MarkdownInputField/TopOperatingArea/style.js +98 -81
  300. package/dist/MarkdownInputField/VoiceInput/index.js +210 -82
  301. package/dist/MarkdownInputField/VoiceInput/style.js +85 -59
  302. package/dist/MarkdownInputField/VoiceInputManager/index.js +321 -94
  303. package/dist/MarkdownInputField/style.js +296 -233
  304. package/dist/Plugins/chart/AreaChart/index.js +541 -393
  305. package/dist/Plugins/chart/AreaChart/style.js +114 -90
  306. package/dist/Plugins/chart/BarChart/index.d.ts +4 -0
  307. package/dist/Plugins/chart/BarChart/index.js +865 -697
  308. package/dist/Plugins/chart/BarChart/style.js +114 -90
  309. package/dist/Plugins/chart/ChartAttrToolBar/ChartAttrToolBarStyle.js +82 -52
  310. package/dist/Plugins/chart/ChartAttrToolBar/index.js +94 -65
  311. package/dist/Plugins/chart/ChartMark/Area.js +176 -150
  312. package/dist/Plugins/chart/ChartMark/Bar.js +181 -152
  313. package/dist/Plugins/chart/ChartMark/Column.js +181 -151
  314. package/dist/Plugins/chart/ChartMark/Container.js +116 -75
  315. package/dist/Plugins/chart/ChartMark/Line.js +179 -151
  316. package/dist/Plugins/chart/ChartMark/Pie.js +79 -63
  317. package/dist/Plugins/chart/ChartMark/index.js +6 -13
  318. package/dist/Plugins/chart/ChartMark/useChart.js +1 -0
  319. package/dist/Plugins/chart/ChartRender.js +981 -696
  320. package/dist/Plugins/chart/ChartStatistic/index.js +47 -62
  321. package/dist/Plugins/chart/ChartStatistic/style.js +142 -143
  322. package/dist/Plugins/chart/ChartStatistic/utils.js +37 -27
  323. package/dist/Plugins/chart/DonutChart/Legend.js +94 -124
  324. package/dist/Plugins/chart/DonutChart/constants.js +4 -11
  325. package/dist/Plugins/chart/DonutChart/hooks.js +183 -112
  326. package/dist/Plugins/chart/DonutChart/index.js +588 -516
  327. package/dist/Plugins/chart/DonutChart/plugins.js +47 -44
  328. package/dist/Plugins/chart/DonutChart/style.js +186 -175
  329. package/dist/Plugins/chart/DonutChart/types.js +1 -0
  330. package/dist/Plugins/chart/FunnelChart/index.js +844 -647
  331. package/dist/Plugins/chart/FunnelChart/style.js +97 -71
  332. package/dist/Plugins/chart/LineChart/index.js +516 -393
  333. package/dist/Plugins/chart/LineChart/style.js +114 -90
  334. package/dist/Plugins/chart/RadarChart/index.js +580 -582
  335. package/dist/Plugins/chart/RadarChart/style.js +122 -112
  336. package/dist/Plugins/chart/ScatterChart/index.js +633 -640
  337. package/dist/Plugins/chart/ScatterChart/style.js +108 -94
  338. package/dist/Plugins/chart/components/ChartContainer/ChartContainer.js +151 -80
  339. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.js +160 -41
  340. package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundaryExample.js +80 -62
  341. package/dist/Plugins/chart/components/ChartContainer/index.js +2 -7
  342. package/dist/Plugins/chart/components/ChartContainer/style.js +121 -91
  343. package/dist/Plugins/chart/components/ChartFilter/ChartFilter.js +58 -90
  344. package/dist/Plugins/chart/components/ChartFilter/style.js +169 -154
  345. package/dist/Plugins/chart/components/ChartToolBar/ChartToolBar.js +54 -59
  346. package/dist/Plugins/chart/components/ChartToolBar/style.js +132 -117
  347. package/dist/Plugins/chart/components/icons/TimeIcon.js +20 -26
  348. package/dist/Plugins/chart/components/index.js +32 -34
  349. package/dist/Plugins/chart/const.js +34 -25
  350. package/dist/Plugins/chart/hooks/useChartStatistic.js +1 -0
  351. package/dist/Plugins/chart/index.js +436 -339
  352. package/dist/Plugins/chart/loadChartRuntime.js +209 -110
  353. package/dist/Plugins/chart/utils.js +311 -87
  354. package/dist/Plugins/code/CodeUI/Katex/Katex.js +112 -66
  355. package/dist/Plugins/code/components/AceEditor.js +334 -237
  356. package/dist/Plugins/code/components/AceEditorContainer.js +23 -32
  357. package/dist/Plugins/code/components/CodeContainer.js +41 -56
  358. package/dist/Plugins/code/components/CodeRenderer.js +202 -155
  359. package/dist/Plugins/code/components/CodeToolbar.js +137 -181
  360. package/dist/Plugins/code/components/HtmlPreview.js +19 -22
  361. package/dist/Plugins/code/components/LanguageSelector.js +162 -96
  362. package/dist/Plugins/code/components/LoadImage.js +145 -46
  363. package/dist/Plugins/code/components/ThinkBlock.js +38 -42
  364. package/dist/Plugins/code/components/index.js +13 -23
  365. package/dist/Plugins/code/hooks/index.js +7 -9
  366. package/dist/Plugins/code/hooks/useCodeEditorState.js +139 -62
  367. package/dist/Plugins/code/hooks/useRenderConditions.js +31 -23
  368. package/dist/Plugins/code/hooks/useToolbarConfig.js +44 -46
  369. package/dist/Plugins/code/index.js +141 -89
  370. package/dist/Plugins/code/langIconMap.js +400 -108
  371. package/dist/Plugins/code/langIcons/AbapIcon.js +90 -57
  372. package/dist/Plugins/code/langIcons/ActionscriptIcon.js +89 -56
  373. package/dist/Plugins/code/langIcons/AdaIcon.js +89 -52
  374. package/dist/Plugins/code/langIcons/ApacheIcon.js +205 -254
  375. package/dist/Plugins/code/langIcons/ApexIcon.js +108 -82
  376. package/dist/Plugins/code/langIcons/AplIcon.js +90 -54
  377. package/dist/Plugins/code/langIcons/ApplescriptIcon.js +89 -56
  378. package/dist/Plugins/code/langIcons/AstroIcon.js +91 -58
  379. package/dist/Plugins/code/langIcons/AwkIcon.js +98 -68
  380. package/dist/Plugins/code/langIcons/BallerinaIcon.js +92 -59
  381. package/dist/Plugins/code/langIcons/BatIcon.js +158 -229
  382. package/dist/Plugins/code/langIcons/BicepIcon.js +91 -58
  383. package/dist/Plugins/code/langIcons/BladeIcon.js +90 -58
  384. package/dist/Plugins/code/langIcons/CIcon.js +90 -55
  385. package/dist/Plugins/code/langIcons/CadenceIcon.js +89 -56
  386. package/dist/Plugins/code/langIcons/ClojureIcon.js +96 -75
  387. package/dist/Plugins/code/langIcons/CmakeIcon.js +93 -62
  388. package/dist/Plugins/code/langIcons/CobolIcon.js +99 -70
  389. package/dist/Plugins/code/langIcons/CodeqlIcon.js +96 -76
  390. package/dist/Plugins/code/langIcons/CoffeeIcon.js +89 -56
  391. package/dist/Plugins/code/langIcons/ConsoleIcon.js +89 -56
  392. package/dist/Plugins/code/langIcons/CppIcon.js +90 -55
  393. package/dist/Plugins/code/langIcons/CrystalIcon.js +90 -57
  394. package/dist/Plugins/code/langIcons/CsharpIcon.js +90 -59
  395. package/dist/Plugins/code/langIcons/CssIcon.js +89 -52
  396. package/dist/Plugins/code/langIcons/DIcon.js +90 -53
  397. package/dist/Plugins/code/langIcons/DartIcon.js +92 -71
  398. package/dist/Plugins/code/langIcons/DatabaseIcon.js +90 -57
  399. package/dist/Plugins/code/langIcons/DiffIcon.js +90 -57
  400. package/dist/Plugins/code/langIcons/DockerIcon.js +89 -56
  401. package/dist/Plugins/code/langIcons/DotenvIcon.js +94 -56
  402. package/dist/Plugins/code/langIcons/ElixirIcon.js +91 -58
  403. package/dist/Plugins/code/langIcons/ElmIcon.js +105 -58
  404. package/dist/Plugins/code/langIcons/ErbIcon.js +90 -54
  405. package/dist/Plugins/code/langIcons/ErlangIcon.js +89 -56
  406. package/dist/Plugins/code/langIcons/FsharpIcon.js +93 -62
  407. package/dist/Plugins/code/langIcons/GdscriptIcon.js +96 -88
  408. package/dist/Plugins/code/langIcons/GlslIcon.js +90 -58
  409. package/dist/Plugins/code/langIcons/GnuplotIcon.js +98 -77
  410. package/dist/Plugins/code/langIcons/GoIcon.js +114 -93
  411. package/dist/Plugins/code/langIcons/GraphqlIcon.js +106 -66
  412. package/dist/Plugins/code/langIcons/GroovyIcon.js +89 -56
  413. package/dist/Plugins/code/langIcons/HackIcon.js +97 -64
  414. package/dist/Plugins/code/langIcons/HamlIcon.js +89 -56
  415. package/dist/Plugins/code/langIcons/HandlebarsIcon.js +89 -56
  416. package/dist/Plugins/code/langIcons/HaskellIcon.js +93 -64
  417. package/dist/Plugins/code/langIcons/HclIcon.js +118 -93
  418. package/dist/Plugins/code/langIcons/HclLightIcon.js +118 -97
  419. package/dist/Plugins/code/langIcons/HjsonIcon.js +94 -62
  420. package/dist/Plugins/code/langIcons/HlslIcon.js +96 -76
  421. package/dist/Plugins/code/langIcons/HtmlIcon.js +89 -56
  422. package/dist/Plugins/code/langIcons/HttpIcon.js +89 -56
  423. package/dist/Plugins/code/langIcons/ImbaIcon.js +98 -65
  424. package/dist/Plugins/code/langIcons/IniIcon.js +90 -54
  425. package/dist/Plugins/code/langIcons/JavaIcon.js +89 -56
  426. package/dist/Plugins/code/langIcons/JavascriptIcon.js +89 -56
  427. package/dist/Plugins/code/langIcons/JinjaIcon.js +100 -68
  428. package/dist/Plugins/code/langIcons/Json5Icon.js +100 -82
  429. package/dist/Plugins/code/langIcons/JsonIcon.js +89 -56
  430. package/dist/Plugins/code/langIcons/JsonnetIcon.js +102 -86
  431. package/dist/Plugins/code/langIcons/JuliaIcon.js +105 -52
  432. package/dist/Plugins/code/langIcons/KotlinIcon.js +104 -74
  433. package/dist/Plugins/code/langIcons/KustoIcon.js +90 -57
  434. package/dist/Plugins/code/langIcons/LessIcon.js +90 -57
  435. package/dist/Plugins/code/langIcons/LiquidIcon.js +91 -58
  436. package/dist/Plugins/code/langIcons/LispIcon.js +89 -56
  437. package/dist/Plugins/code/langIcons/LuaIcon.js +93 -60
  438. package/dist/Plugins/code/langIcons/MakefileIcon.js +91 -58
  439. package/dist/Plugins/code/langIcons/MarkdownIcon.js +89 -56
  440. package/dist/Plugins/code/langIcons/MarkojsIcon.js +96 -73
  441. package/dist/Plugins/code/langIcons/MatlabIcon.js +93 -64
  442. package/dist/Plugins/code/langIcons/MdxIcon.js +90 -53
  443. package/dist/Plugins/code/langIcons/MermaidIcon.js +95 -64
  444. package/dist/Plugins/code/langIcons/MojoIcon.js +95 -62
  445. package/dist/Plugins/code/langIcons/NginxIcon.js +94 -61
  446. package/dist/Plugins/code/langIcons/NimIcon.js +91 -54
  447. package/dist/Plugins/code/langIcons/NixIcon.js +92 -56
  448. package/dist/Plugins/code/langIcons/ObjectiveCIcon.js +90 -59
  449. package/dist/Plugins/code/langIcons/ObjectiveCppIcon.js +90 -57
  450. package/dist/Plugins/code/langIcons/OcamlIcon.js +90 -61
  451. package/dist/Plugins/code/langIcons/PascalIcon.js +95 -55
  452. package/dist/Plugins/code/langIcons/Perl6Icon.js +299 -320
  453. package/dist/Plugins/code/langIcons/PerlIcon.js +89 -56
  454. package/dist/Plugins/code/langIcons/PhpIcon.js +89 -52
  455. package/dist/Plugins/code/langIcons/PostcssIcon.js +130 -113
  456. package/dist/Plugins/code/langIcons/PowershellIcon.js +91 -58
  457. package/dist/Plugins/code/langIcons/PrismaIcon.js +97 -68
  458. package/dist/Plugins/code/langIcons/PrologIcon.js +91 -58
  459. package/dist/Plugins/code/langIcons/ProtoIcon.js +94 -68
  460. package/dist/Plugins/code/langIcons/PugIcon.js +177 -145
  461. package/dist/Plugins/code/langIcons/PuppetIcon.js +96 -52
  462. package/dist/Plugins/code/langIcons/PurescriptIcon.js +93 -61
  463. package/dist/Plugins/code/langIcons/PythonIcon.js +90 -61
  464. package/dist/Plugins/code/langIcons/RIcon.js +89 -52
  465. package/dist/Plugins/code/langIcons/RazorIcon.js +90 -57
  466. package/dist/Plugins/code/langIcons/ReactIcon.js +89 -56
  467. package/dist/Plugins/code/langIcons/ReactTsIcon.js +90 -57
  468. package/dist/Plugins/code/langIcons/RubyIcon.js +91 -58
  469. package/dist/Plugins/code/langIcons/RustIcon.js +89 -56
  470. package/dist/Plugins/code/langIcons/SasIcon.js +89 -52
  471. package/dist/Plugins/code/langIcons/SassIcon.js +90 -57
  472. package/dist/Plugins/code/langIcons/ScalaIcon.js +96 -53
  473. package/dist/Plugins/code/langIcons/SchemeIcon.js +91 -58
  474. package/dist/Plugins/code/langIcons/ShaderlabIcon.js +89 -56
  475. package/dist/Plugins/code/langIcons/SolidityIcon.js +94 -52
  476. package/dist/Plugins/code/langIcons/SparqlIcon.js +94 -64
  477. package/dist/Plugins/code/langIcons/StataIcon.js +126 -108
  478. package/dist/Plugins/code/langIcons/StylusIcon.js +92 -59
  479. package/dist/Plugins/code/langIcons/SvelteIcon.js +91 -58
  480. package/dist/Plugins/code/langIcons/SwiftIcon.js +90 -57
  481. package/dist/Plugins/code/langIcons/SystemverilogIcon.js +115 -102
  482. package/dist/Plugins/code/langIcons/TclIcon.js +89 -52
  483. package/dist/Plugins/code/langIcons/TexIcon.js +99 -65
  484. package/dist/Plugins/code/langIcons/TomlIcon.js +94 -70
  485. package/dist/Plugins/code/langIcons/TwigIcon.js +89 -56
  486. package/dist/Plugins/code/langIcons/TypescriptIcon.js +93 -60
  487. package/dist/Plugins/code/langIcons/VerilogIcon.js +89 -56
  488. package/dist/Plugins/code/langIcons/VhdlIcon.js +94 -64
  489. package/dist/Plugins/code/langIcons/VimIcon.js +278 -420
  490. package/dist/Plugins/code/langIcons/VueIcon.js +92 -59
  491. package/dist/Plugins/code/langIcons/WebassemblyIcon.js +103 -76
  492. package/dist/Plugins/code/langIcons/WenyanIcon.js +104 -100
  493. package/dist/Plugins/code/langIcons/WgslIcon.js +93 -77
  494. package/dist/Plugins/code/langIcons/WolframlanguageIcon.js +100 -71
  495. package/dist/Plugins/code/langIcons/XmlIcon.js +89 -52
  496. package/dist/Plugins/code/langIcons/XslIcon.js +94 -66
  497. package/dist/Plugins/code/langIcons/YamlIcon.js +89 -56
  498. package/dist/Plugins/code/langIcons/ZigIcon.js +106 -81
  499. package/dist/Plugins/code/langIcons/index.js +128 -259
  500. package/dist/Plugins/code/utils/index.js +5 -5
  501. package/dist/Plugins/code/utils/langOptions.js +86 -11
  502. package/dist/Plugins/defaultPlugins.js +9 -13
  503. package/dist/Plugins/formatter/index.js +205 -105
  504. package/dist/Plugins/index.js +6 -2
  505. package/dist/Plugins/katex/InlineKatex.js +196 -107
  506. package/dist/Plugins/katex/Katex.js +139 -65
  507. package/dist/Plugins/katex/index.js +163 -103
  508. package/dist/Plugins/mermaid/Mermaid.js +472 -197
  509. package/dist/Plugins/mermaid/index.js +237 -142
  510. package/dist/Quote/index.js +112 -73
  511. package/dist/Quote/style.js +176 -160
  512. package/dist/Schema/SchemaEditor/AceEditorWrapper.js +163 -119
  513. package/dist/Schema/SchemaEditor/index.js +385 -275
  514. package/dist/Schema/SchemaEditor/style.js +261 -269
  515. package/dist/Schema/SchemaForm/index.js +443 -268
  516. package/dist/Schema/SchemaForm/types.js +1 -0
  517. package/dist/Schema/SchemaRenderer/index.js +973 -588
  518. package/dist/Schema/SchemaRenderer/templateEngine.js +106 -26
  519. package/dist/Schema/index.js +7 -11
  520. package/dist/Schema/types.js +1 -0
  521. package/dist/Schema/validator.js +74 -36
  522. package/dist/TaskList/index.js +197 -142
  523. package/dist/TaskList/style.js +143 -122
  524. package/dist/ThoughtChainList/CostMillis.js +88 -54
  525. package/dist/ThoughtChainList/DeepThink.js +187 -152
  526. package/dist/ThoughtChainList/DotAni/index.js +29 -14
  527. package/dist/ThoughtChainList/DotAni/style.js +82 -50
  528. package/dist/ThoughtChainList/FlipText/index.js +74 -30
  529. package/dist/ThoughtChainList/MarkdownEditor.js +126 -72
  530. package/dist/ThoughtChainList/RagRetrievalInfo.js +113 -145
  531. package/dist/ThoughtChainList/TableSql.js +413 -459
  532. package/dist/ThoughtChainList/ThoughtChainListItem.js +388 -222
  533. package/dist/ThoughtChainList/TitleInfo.js +189 -185
  534. package/dist/ThoughtChainList/ToolCall.js +429 -463
  535. package/dist/ThoughtChainList/WebSearch.js +192 -162
  536. package/dist/ThoughtChainList/index.js +449 -410
  537. package/dist/ThoughtChainList/style.js +253 -232
  538. package/dist/ThoughtChainList/types.js +1 -0
  539. package/dist/ToolUseBar/ToolUseBarItem.js +183 -139
  540. package/dist/ToolUseBar/ToolUseBarItemComponents.js +345 -276
  541. package/dist/ToolUseBar/ToolUseBarThink.js +335 -396
  542. package/dist/ToolUseBar/index.js +226 -113
  543. package/dist/ToolUseBar/style.js +334 -308
  544. package/dist/ToolUseBar/thinkStyle.js +350 -328
  545. package/dist/Types/common.js +1 -0
  546. package/dist/Types/index.js +4 -2
  547. package/dist/Types/message.js +1 -0
  548. package/dist/Utils/easings.js +9 -12
  549. package/dist/Utils/formatTime.js +41 -17
  550. package/dist/Utils/getScroll.js +41 -41
  551. package/dist/Utils/language.js +355 -150
  552. package/dist/Utils/proxySandbox/ProxySandbox.js +1637 -1076
  553. package/dist/Utils/proxySandbox/SecurityContextManager.js +607 -343
  554. package/dist/Utils/proxySandbox/index.js +554 -267
  555. package/dist/Utils/proxySandbox/types.js +187 -52
  556. package/dist/Utils/scrollTo.js +48 -56
  557. package/dist/Utils/throttleByAnimationFrame.js +46 -20
  558. package/dist/WelcomeMessage/index.js +106 -58
  559. package/dist/WelcomeMessage/style.js +80 -55
  560. package/dist/Workspace/Browser/index.js +102 -40
  561. package/dist/Workspace/Browser/style.js +62 -33
  562. package/dist/Workspace/File/DataSourceStrategy.js +419 -217
  563. package/dist/Workspace/File/FileComponent.js +1004 -791
  564. package/dist/Workspace/File/FileTypeProcessor.js +337 -184
  565. package/dist/Workspace/File/PreviewComponent.js +472 -532
  566. package/dist/Workspace/File/index.js +3 -10
  567. package/dist/Workspace/File/style.js +397 -424
  568. package/dist/Workspace/File/utils.js +160 -106
  569. package/dist/Workspace/HtmlPreview/index.js +238 -137
  570. package/dist/Workspace/HtmlPreview/style.js +99 -77
  571. package/dist/Workspace/RealtimeFollow/index.js +411 -413
  572. package/dist/Workspace/RealtimeFollow/style.js +299 -303
  573. package/dist/Workspace/Task/index.js +53 -35
  574. package/dist/Workspace/Task/style.js +99 -73
  575. package/dist/Workspace/index.js +332 -254
  576. package/dist/Workspace/style.js +165 -146
  577. package/dist/Workspace/types.js +471 -252
  578. package/dist/Workspace/utils/codeLanguageUtils.js +148 -129
  579. package/dist/Workspace/utils.js +28 -20
  580. package/dist/index.js +27 -17
  581. package/package.json +3 -2
@@ -1,25 +1,118 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
1
+ /**
2
+ * 此文件包含大量相互依赖的函数,为了保持代码的可读性和逻辑分组,
3
+ * 我们允许函数在定义前使用(函数提升)
4
+ */ /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable @typescript-eslint/no-unused-expressions */ function _array_like_to_array(arr, len) {
5
+ if (len == null || len > arr.length) len = arr.length;
6
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
7
+ return arr2;
8
+ }
9
+ function _array_with_holes(arr) {
10
+ if (Array.isArray(arr)) return arr;
11
+ }
12
+ function _array_without_holes(arr) {
13
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
14
+ }
15
+ function _define_property(obj, key, value) {
16
+ if (key in obj) {
17
+ Object.defineProperty(obj, key, {
18
+ value: value,
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true
22
+ });
23
+ } else {
24
+ obj[key] = value;
16
25
  }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
-
21
- // src/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.ts
26
+ return obj;
27
+ }
28
+ function _iterable_to_array(iter) {
29
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
30
+ }
31
+ function _iterable_to_array_limit(arr, i) {
32
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
33
+ if (_i == null) return;
34
+ var _arr = [];
35
+ var _n = true;
36
+ var _d = false;
37
+ var _s, _e;
38
+ try {
39
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
40
+ _arr.push(_s.value);
41
+ if (i && _arr.length === i) break;
42
+ }
43
+ } catch (err) {
44
+ _d = true;
45
+ _e = err;
46
+ } finally{
47
+ try {
48
+ if (!_n && _i["return"] != null) _i["return"]();
49
+ } finally{
50
+ if (_d) throw _e;
51
+ }
52
+ }
53
+ return _arr;
54
+ }
55
+ function _non_iterable_rest() {
56
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
57
+ }
58
+ function _non_iterable_spread() {
59
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
60
+ }
61
+ function _object_spread(target) {
62
+ for(var i = 1; i < arguments.length; i++){
63
+ var source = arguments[i] != null ? arguments[i] : {};
64
+ var ownKeys = Object.keys(source);
65
+ if (typeof Object.getOwnPropertySymbols === "function") {
66
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
67
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
68
+ }));
69
+ }
70
+ ownKeys.forEach(function(key) {
71
+ _define_property(target, key, source[key]);
72
+ });
73
+ }
74
+ return target;
75
+ }
76
+ function ownKeys(object, enumerableOnly) {
77
+ var keys = Object.keys(object);
78
+ if (Object.getOwnPropertySymbols) {
79
+ var symbols = Object.getOwnPropertySymbols(object);
80
+ if (enumerableOnly) {
81
+ symbols = symbols.filter(function(sym) {
82
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
83
+ });
84
+ }
85
+ keys.push.apply(keys, symbols);
86
+ }
87
+ return keys;
88
+ }
89
+ function _object_spread_props(target, source) {
90
+ source = source != null ? source : {};
91
+ if (Object.getOwnPropertyDescriptors) {
92
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
93
+ } else {
94
+ ownKeys(Object(source)).forEach(function(key) {
95
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
96
+ });
97
+ }
98
+ return target;
99
+ }
100
+ function _sliced_to_array(arr, i) {
101
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
102
+ }
103
+ function _to_consumable_array(arr) {
104
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
105
+ }
106
+ function _unsupported_iterable_to_array(o, minLen) {
107
+ if (!o) return;
108
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
109
+ var n = Object.prototype.toString.call(o).slice(8, -1);
110
+ if (n === "Object" && o.constructor) n = o.constructor.name;
111
+ if (n === "Map" || n === "Set") return Array.from(n);
112
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
113
+ }
22
114
  import json5 from "json5";
115
+ //@ts-ignore
23
116
  import rehypeKatex from "rehype-katex";
24
117
  import rehypeRaw from "rehype-raw";
25
118
  import { remark } from "remark";
@@ -33,1258 +126,1750 @@ import { htmlToFragmentList } from "../plugins/insertParsedHtmlNodes";
33
126
  import { EditorUtils } from "../utils";
34
127
  import partialJsonParse from "./json-parse";
35
128
  import mdastParser from "./remarkParse";
36
- var EMPTY_LINE_DISTANCE_THRESHOLD = 4;
37
- var EMPTY_LINE_CALCULATION_OFFSET = 2;
38
- var EMPTY_LINE_DIVISOR = 2;
39
- var MIN_TABLE_CELL_LENGTH = 5;
40
- var INLINE_MATH_SUFFIX_PATTERN = "(?:%|[kKmMbB]|千|万|亿|兆|万亿|百万|亿万)?";
41
- var INLINE_MATH_CURRENCY_PATTERN = new RegExp(
42
- `^[+-]?\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?${INLINE_MATH_SUFFIX_PATTERN}$`
43
- );
44
- var INLINE_MATH_SIMPLE_NUMBER_PATTERN = new RegExp(
45
- `^[+-]?\\d+(?:\\.\\d+)?${INLINE_MATH_SUFFIX_PATTERN}$`
46
- );
47
- var shouldTreatInlineMathAsText = (rawValue) => {
48
- const trimmedValue = rawValue.trim();
49
- if (!trimmedValue) {
50
- return true;
51
- }
52
- if (/[=^_\\{}]/.test(trimmedValue)) {
53
- return false;
54
- }
55
- return INLINE_MATH_CURRENCY_PATTERN.test(trimmedValue) || INLINE_MATH_SIMPLE_NUMBER_PATTERN.test(trimmedValue);
129
+ // 常量定义
130
+ var EMPTY_LINE_DISTANCE_THRESHOLD = 4; // 两个元素之间的行距阈值
131
+ var EMPTY_LINE_CALCULATION_OFFSET = 2; // 计算空行数量时的偏移量
132
+ var EMPTY_LINE_DIVISOR = 2; // 计算空行数量的除数
133
+ var MIN_TABLE_CELL_LENGTH = 5; // 表格单元格最小长度
134
+ var INLINE_MATH_SUFFIX_PATTERN = '(?:%|[kKmMbB]|千|万|亿|兆|万亿|百万|亿万)?';
135
+ var INLINE_MATH_CURRENCY_PATTERN = new RegExp("^[+-]?\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?".concat(INLINE_MATH_SUFFIX_PATTERN, "$"));
136
+ var INLINE_MATH_SIMPLE_NUMBER_PATTERN = new RegExp("^[+-]?\\d+(?:\\.\\d+)?".concat(INLINE_MATH_SUFFIX_PATTERN, "$"));
137
+ var shouldTreatInlineMathAsText = function(rawValue) {
138
+ var trimmedValue = rawValue.trim();
139
+ if (!trimmedValue) {
140
+ return true;
141
+ }
142
+ if (/[=^_\\{}]/.test(trimmedValue)) {
143
+ return false;
144
+ }
145
+ return INLINE_MATH_CURRENCY_PATTERN.test(trimmedValue) || INLINE_MATH_SIMPLE_NUMBER_PATTERN.test(trimmedValue);
56
146
  };
57
- var processSchemaLanguage = (element, value) => {
58
- let json = [];
59
- try {
60
- json = json5.parse(value || "[]");
61
- } catch (error) {
147
+ // 处理schema类型语言的辅助函数
148
+ var processSchemaLanguage = function(element, value) {
149
+ var json = [];
62
150
  try {
63
- json = partialJsonParse(value || "[]");
64
- } catch (error2) {
65
- json = value;
66
- console.error("parse schema error", error2);
151
+ json = json5.parse(value || '[]');
152
+ } catch (error) {
153
+ try {
154
+ json = partialJsonParse(value || '[]');
155
+ } catch (error) {
156
+ json = value;
157
+ console.error('parse schema error', error);
158
+ }
67
159
  }
68
- }
69
- return __spreadProps(__spreadValues({}, element), {
70
- type: "apaasify",
71
- value: json,
72
- children: [{ text: value }]
73
- });
160
+ return _object_spread_props(_object_spread({}, element), {
161
+ type: 'apaasify',
162
+ value: json,
163
+ children: [
164
+ {
165
+ text: value
166
+ }
167
+ ]
168
+ });
74
169
  };
170
+ // 语言类型处理策略配置
75
171
  var LANGUAGE_HANDLERS = {
76
- mermaid: (element) => __spreadProps(__spreadValues({}, element), {
77
- type: "mermaid"
78
- }),
79
- schema: processSchemaLanguage,
80
- apaasify: processSchemaLanguage,
81
- apassify: processSchemaLanguage,
82
- katex: (element) => __spreadProps(__spreadValues({}, element), {
83
- type: "katex"
84
- }),
85
- "agentar-card": processSchemaLanguage
172
+ mermaid: function(element) {
173
+ return _object_spread_props(_object_spread({}, element), {
174
+ type: 'mermaid'
175
+ });
176
+ },
177
+ schema: processSchemaLanguage,
178
+ apaasify: processSchemaLanguage,
179
+ apassify: processSchemaLanguage,
180
+ katex: function(element) {
181
+ return _object_spread_props(_object_spread({}, element), {
182
+ type: 'katex'
183
+ });
184
+ },
185
+ 'agentar-card': processSchemaLanguage
86
186
  };
87
- var advancedNumericCheck = (value) => {
88
- const numericPattern = /^[-+]?[0-9,]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
89
- return typeof value === "number" || typeof value === "string" && numericPattern.test(value);
187
+ var advancedNumericCheck = function(value) {
188
+ var numericPattern = /^[-+]?[0-9,]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;
189
+ return typeof value === 'number' || typeof value === 'string' && numericPattern.test(value);
90
190
  };
91
- var isNumericValue = (value) => {
92
- return typeof value === "number" || !isNaN(parseFloat(value)) && isFinite(value) || advancedNumericCheck(value);
191
+ var isNumericValue = function(value) {
192
+ return typeof value === 'number' || !isNaN(parseFloat(value)) && isFinite(value) || advancedNumericCheck(value);
93
193
  };
94
- var hasIncompleteNumericInput = (values) => {
95
- return values.some((val) => {
96
- if (typeof val !== "string")
97
- return false;
98
- return val.endsWith(".") && /\d/.test(val) || // 以小数点结尾
99
- val === "-" || // 只有负号
100
- val === "+" || // 只有正号
101
- val.length === 1 && /\d/.test(val);
102
- });
194
+ /**
195
+ * 判断是否包含不完整输入
196
+ * 如果一行中包含可能尚未完成的数字输入,返回 true
197
+ */ var hasIncompleteNumericInput = function(values) {
198
+ // 检查是否有可能是正在输入的不完整数字
199
+ // 例如: '12.' 或 '0.' 或 '-' 仅有一个数字字符的情况
200
+ return values.some(function(val) {
201
+ if (typeof val !== 'string') return false;
202
+ return val.endsWith('.') && /\d/.test(val) || // 以小数点结尾
203
+ val === '-' || // 只有负号
204
+ val === '+' || // 只有正号
205
+ val.length === 1 && /\d/.test(val) // 只有一个数字
206
+ ;
207
+ });
103
208
  };
104
- var getColumnAlignment = (data, columns) => {
105
- if (!data.length)
106
- return [];
107
- const prevAlignments = [];
108
- return columns.map((col, index) => {
109
- const values = data.map((row) => row[col.dataIndex]).filter(Boolean);
110
- values == null ? void 0 : values.pop();
111
- if (hasIncompleteNumericInput(values)) {
112
- return prevAlignments[index] || null;
113
- }
114
- const alignment = values.every(isNumericValue) ? "right" : null;
115
- prevAlignments[index] = alignment;
116
- return alignment;
117
- });
209
+ var getColumnAlignment = function(data, columns) {
210
+ if (!data.length) return [];
211
+ // 缓存上一次的对齐结果,避免频繁切换
212
+ var prevAlignments = [];
213
+ return columns.map(function(col, index) {
214
+ var values = data.map(function(row) {
215
+ return row[col.dataIndex];
216
+ }).filter(Boolean);
217
+ values === null || values === void 0 ? void 0 : values.pop();
218
+ // 如果检测到可能正在输入的数字,保持当前对齐状态
219
+ if (hasIncompleteNumericInput(values)) {
220
+ return prevAlignments[index] || null;
221
+ }
222
+ var alignment = values.every(isNumericValue) ? 'right' : null;
223
+ prevAlignments[index] = alignment;
224
+ return alignment;
225
+ });
118
226
  };
119
227
  var stringifyObj = remark().use(remarkParse).use(fixStrongWithSpecialChars).use(remarkMath, {
120
- singleDollarTextMath: false
121
- }).use(remarkRehype, { allowDangerousHtml: true }).use(rehypeRaw).use(rehypeKatex).use(remarkGfm).use(remarkFrontmatter, ["yaml"]);
228
+ singleDollarTextMath: false
229
+ }).use(remarkRehype, {
230
+ allowDangerousHtml: true
231
+ }).use(rehypeRaw).use(rehypeKatex).use(remarkGfm).use(remarkFrontmatter, [
232
+ 'yaml'
233
+ ]);
122
234
  var myRemark = {
123
- stringify: (obj) => {
124
- const mdStr = stringifyObj.stringify(obj);
125
- return mdStr;
126
- }
235
+ stringify: function(obj) {
236
+ var mdStr = stringifyObj.stringify(obj);
237
+ return mdStr;
238
+ }
127
239
  };
128
- var findThinkElement = (str) => {
129
- try {
130
- const thinkMatch = str.match(/^\s*<think>([\s\S]*?)<\/think>\s*$/);
131
- if (thinkMatch) {
132
- return {
133
- content: thinkMatch[1].trim()
134
- };
240
+ /**
241
+ * 检测和解析 think 标签
242
+ * @param str - 要检测的字符串
243
+ * @returns think 标签的内容,如果不是 think 标签则返回 null
244
+ */ var findThinkElement = function(str) {
245
+ try {
246
+ // 匹配 <think>内容</think> 格式
247
+ var thinkMatch = str.match(/^\s*<think>([\s\S]*?)<\/think>\s*$/);
248
+ if (thinkMatch) {
249
+ return {
250
+ content: thinkMatch[1].trim()
251
+ };
252
+ }
253
+ return null;
254
+ } catch (e) {
255
+ return null;
135
256
  }
136
- return null;
137
- } catch (e) {
138
- return null;
139
- }
140
257
  };
141
- var findAnswerElement = (str) => {
142
- try {
143
- const answerMatch = str.match(/^\s*<answer>([\s\S]*?)<\/answer>\s*$/);
144
- if (answerMatch) {
145
- return {
146
- content: answerMatch[1].trim()
147
- };
258
+ /**
259
+ * 检测和解析 answer 标签
260
+ * @param str - 要检测的字符串
261
+ * @returns answer 标签的内容,如果不是 answer 标签则返回 null
262
+ */ var findAnswerElement = function(str) {
263
+ try {
264
+ // 匹配 <answer>内容</answer> 格式
265
+ var answerMatch = str.match(/^\s*<answer>([\s\S]*?)<\/answer>\s*$/);
266
+ if (answerMatch) {
267
+ return {
268
+ content: answerMatch[1].trim()
269
+ };
270
+ }
271
+ return null;
272
+ } catch (e) {
273
+ return null;
148
274
  }
149
- return null;
150
- } catch (e) {
151
- return null;
152
- }
153
275
  };
154
- var extractMediaAttributes = (str) => {
155
- var _a, _b, _c, _d, _e;
156
- return {
157
- height: (_a = str.match(/height="(\d+)"/)) == null ? void 0 : _a[1],
158
- width: (_b = str.match(/width="(\d+)"/)) == null ? void 0 : _b[1],
159
- align: (_c = str.match(/data-align="(\w+)"/)) == null ? void 0 : _c[1],
160
- alt: (_d = str.match(/alt="([^"\n]+)"/)) == null ? void 0 : _d[1],
161
- controls: str.match(/controls/),
162
- autoplay: str.match(/autoplay/),
163
- loop: str.match(/loop/),
164
- muted: str.match(/muted/),
165
- poster: (_e = str.match(/poster="([^"\n]+)"/)) == null ? void 0 : _e[1]
166
- };
276
+ /**
277
+ * HTML 字符串中提取媒体元素属性
278
+ */ var extractMediaAttributes = function(str) {
279
+ var _str_match, _str_match1, _str_match2, _str_match3, _str_match4;
280
+ return {
281
+ height: (_str_match = str.match(/height="(\d+)"/)) === null || _str_match === void 0 ? void 0 : _str_match[1],
282
+ width: (_str_match1 = str.match(/width="(\d+)"/)) === null || _str_match1 === void 0 ? void 0 : _str_match1[1],
283
+ align: (_str_match2 = str.match(/data-align="(\w+)"/)) === null || _str_match2 === void 0 ? void 0 : _str_match2[1],
284
+ alt: (_str_match3 = str.match(/alt="([^"\n]+)"/)) === null || _str_match3 === void 0 ? void 0 : _str_match3[1],
285
+ controls: str.match(/controls/),
286
+ autoplay: str.match(/autoplay/),
287
+ loop: str.match(/loop/),
288
+ muted: str.match(/muted/),
289
+ poster: (_str_match4 = str.match(/poster="([^"\n]+)"/)) === null || _str_match4 === void 0 ? void 0 : _str_match4[1]
290
+ };
167
291
  };
168
- var buildMediaElement = (url, tagName, attrs) => {
169
- return {
170
- url,
171
- height: attrs.height ? +attrs.height : void 0,
172
- width: attrs.width ? +attrs.width : void 0,
173
- align: attrs.align,
174
- alt: attrs.alt,
175
- tagName,
176
- controls: !!attrs.controls,
177
- autoplay: !!attrs.autoplay,
178
- loop: !!attrs.loop,
179
- muted: !!attrs.muted,
180
- poster: attrs.poster
181
- };
292
+ /**
293
+ * 构建媒体元素对象
294
+ */ var buildMediaElement = function(url, tagName, attrs) {
295
+ return {
296
+ url: url,
297
+ height: attrs.height ? +attrs.height : undefined,
298
+ width: attrs.width ? +attrs.width : undefined,
299
+ align: attrs.align,
300
+ alt: attrs.alt,
301
+ tagName: tagName,
302
+ controls: !!attrs.controls,
303
+ autoplay: !!attrs.autoplay,
304
+ loop: !!attrs.loop,
305
+ muted: !!attrs.muted,
306
+ poster: attrs.poster
307
+ };
182
308
  };
183
- var extractVideoSource = (str, tagName) => {
184
- let url = str.match(/src="([^"\n]+)"/);
185
- if (tagName === "video" && !url) {
186
- const sourceMatch = str.match(/<source[^>]*src="([^"\n]+)"[^>]*>/);
187
- if (sourceMatch) {
188
- url = sourceMatch;
309
+ /**
310
+ * 从字符串中提取视频源 URL
311
+ */ var extractVideoSource = function(str, tagName) {
312
+ // 首先尝试从标签本身获取 src 属性
313
+ var url = str.match(/src="([^"\n]+)"/);
314
+ // 如果是 video 标签且没有找到 src,尝试从 source 标签中获取
315
+ if (tagName === 'video' && !url) {
316
+ var sourceMatch = str.match(/<source[^>]*src="([^"\n]+)"[^>]*>/);
317
+ if (sourceMatch) {
318
+ url = sourceMatch;
319
+ }
189
320
  }
190
- }
191
- return url == null ? void 0 : url[1];
321
+ return url === null || url === void 0 ? void 0 : url[1];
192
322
  };
193
- var findImageElement = (str) => {
194
- var _a;
195
- try {
196
- const videoWithSourceMatch = str.match(
197
- /^\s*<video[^>\n]*>[\s\S]*?<source[^>]*src="([^"\n]+)"[^>]*>[\s\S]*?<\/video>\s*$/
198
- );
199
- if (videoWithSourceMatch) {
200
- const attrs = extractMediaAttributes(str);
201
- return buildMediaElement(videoWithSourceMatch[1], "video", attrs);
202
- }
203
- const patterns = [
204
- /^\s*<(img|video|iframe)[^>\n]*>.*?<\/(?:img|video|iframe)>\s*$/,
205
- // 完整标签对
206
- /^\s*<(img|video|iframe)[^>\n]*\/?>(.*<\/(?:img|video|iframe)>)?\s*$/,
207
- // 完整标签
208
- /^\s*<(img|video|iframe)[^>\n]*\/>\s*$/,
209
- // 自闭合标签
210
- /^\s*<(img|video|iframe)[^>\n]*>\s*$/
211
- // 仅开始标签
212
- ];
213
- for (const pattern of patterns) {
214
- const match = str.match(pattern);
215
- if (match) {
216
- const tagName = (_a = match[0].match(/<(img|video|iframe)/)) == null ? void 0 : _a[1];
217
- const url = extractVideoSource(match[0], tagName);
218
- const attrs = extractMediaAttributes(match[0]);
219
- return buildMediaElement(url, tagName, attrs);
220
- }
323
+ /**
324
+ * 查找并解析媒体元素(img/video/iframe)
325
+ */ var findImageElement = function(str) {
326
+ try {
327
+ // 首先尝试匹配包含 source 标签的 video 格式
328
+ var videoWithSourceMatch = str.match(/^\s*<video[^>\n]*>[\s\S]*?<source[^>]*src="([^"\n]+)"[^>]*>[\s\S]*?<\/video>\s*$/);
329
+ if (videoWithSourceMatch) {
330
+ var attrs = extractMediaAttributes(str);
331
+ return buildMediaElement(videoWithSourceMatch[1], 'video', attrs);
332
+ }
333
+ // 尝试匹配各种媒体标签格式
334
+ var patterns = [
335
+ /^\s*<(img|video|iframe)[^>\n]*>.*?<\/(?:img|video|iframe)>\s*$/,
336
+ /^\s*<(img|video|iframe)[^>\n]*\/?>(.*<\/(?:img|video|iframe)>)?\s*$/,
337
+ /^\s*<(img|video|iframe)[^>\n]*\/>\s*$/,
338
+ /^\s*<(img|video|iframe)[^>\n]*>\s*$/
339
+ ];
340
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
341
+ try {
342
+ for(var _iterator = patterns[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
343
+ var pattern = _step.value;
344
+ var match = str.match(pattern);
345
+ if (match) {
346
+ var _match__match;
347
+ var tagName = (_match__match = match[0].match(/<(img|video|iframe)/)) === null || _match__match === void 0 ? void 0 : _match__match[1];
348
+ var url = extractVideoSource(match[0], tagName);
349
+ var attrs1 = extractMediaAttributes(match[0]);
350
+ return buildMediaElement(url, tagName, attrs1);
351
+ }
352
+ }
353
+ } catch (err) {
354
+ _didIteratorError = true;
355
+ _iteratorError = err;
356
+ } finally{
357
+ try {
358
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
359
+ _iterator.return();
360
+ }
361
+ } finally{
362
+ if (_didIteratorError) {
363
+ throw _iteratorError;
364
+ }
365
+ }
366
+ }
367
+ return null;
368
+ } catch (e) {
369
+ console.error('Failed to parse media element:', e);
370
+ return null;
221
371
  }
222
- return null;
223
- } catch (e) {
224
- console.error("Failed to parse media element:", e);
225
- return null;
226
- }
227
372
  };
228
- var createMediaNodeFromElement = (mediaElement) => {
229
- if (!mediaElement)
230
- return null;
231
- const mediaTypeMap = {
232
- video: "video",
233
- iframe: "iframe",
234
- img: "image"
235
- };
236
- const mediaType = mediaTypeMap[mediaElement.tagName] || "image";
237
- return EditorUtils.createMediaNode(
238
- decodeURIComponentUrl(mediaElement.url || ""),
239
- mediaType,
240
- {
241
- align: mediaElement.align,
242
- alt: mediaElement.alt,
243
- height: mediaElement.height,
244
- width: mediaElement.width,
245
- controls: mediaElement.controls,
246
- autoplay: mediaElement.autoplay,
247
- loop: mediaElement.loop,
248
- muted: mediaElement.muted,
249
- poster: mediaElement.poster
250
- }
251
- );
373
+ /**
374
+ * 根据媒体元素信息创建编辑器节点
375
+ */ var createMediaNodeFromElement = function(mediaElement) {
376
+ if (!mediaElement) return null;
377
+ // 根据标签类型确定媒体类型
378
+ var mediaTypeMap = {
379
+ video: 'video',
380
+ iframe: 'iframe',
381
+ img: 'image'
382
+ };
383
+ var mediaType = mediaTypeMap[mediaElement.tagName] || 'image';
384
+ return EditorUtils.createMediaNode(decodeURIComponentUrl(mediaElement.url || ''), mediaType, {
385
+ align: mediaElement.align,
386
+ alt: mediaElement.alt,
387
+ height: mediaElement.height,
388
+ width: mediaElement.width,
389
+ controls: mediaElement.controls,
390
+ autoplay: mediaElement.autoplay,
391
+ loop: mediaElement.loop,
392
+ muted: mediaElement.muted,
393
+ poster: mediaElement.poster
394
+ });
252
395
  };
253
- var findAttachment = (str) => {
254
- try {
255
- const match = str.match(/^\s*<a[^>\n]*download[^>\n]*\/?>(.*<\/a>:?)?\s*$/);
256
- if (match) {
257
- const url = match[0].match(/href="([^"\n]+)"/);
258
- const size = match[0].match(/data-size="(\d+)"/);
259
- if (url) {
260
- return { url: url[1], size: Number((size == null ? void 0 : size[1]) || 0) };
261
- }
396
+ var findAttachment = function(str) {
397
+ try {
398
+ var match = str.match(/^\s*<a[^>\n]*download[^>\n]*\/?>(.*<\/a>:?)?\s*$/);
399
+ if (match) {
400
+ var url = match[0].match(/href="([^"\n]+)"/);
401
+ var size = match[0].match(/data-size="(\d+)"/);
402
+ if (url) {
403
+ return {
404
+ url: url[1],
405
+ size: Number((size === null || size === void 0 ? void 0 : size[1]) || 0)
406
+ };
407
+ }
408
+ }
409
+ return null;
410
+ } catch (e) {
411
+ return null;
262
412
  }
263
- return null;
264
- } catch (e) {
265
- return null;
266
- }
267
413
  };
268
- var parseText = (els, leaf = {
269
- data: {}
270
- }) => {
271
- let leafs = [];
272
- for (let n of els) {
273
- if (n.type === "strong")
274
- leafs = leafs.concat(parseText(n.children, __spreadProps(__spreadValues({}, leaf), { bold: true })));
275
- if (n.type === "emphasis")
276
- leafs = leafs.concat(parseText(n.children, __spreadProps(__spreadValues({}, leaf), { italic: true })));
277
- if (n.type === "delete")
278
- leafs = leafs.concat(
279
- parseText(n.children, __spreadProps(__spreadValues({}, leaf), { strikethrough: true }))
280
- );
281
- if (n.type === "link") {
282
- leafs = leafs.concat(parseText(n.children, __spreadProps(__spreadValues({}, leaf), { url: n == null ? void 0 : n.url })));
283
- }
284
- if (n.type === "inlineCode")
285
- leafs.push(__spreadProps(__spreadValues({}, leaf), { text: n.value, code: true }));
286
- if (n.type === "inlineMath") {
287
- const inlineMathValue = typeof n.value === "string" ? n.value : "";
288
- if (shouldTreatInlineMathAsText(inlineMathValue)) {
289
- leafs.push(__spreadProps(__spreadValues({}, leaf), { text: `$${inlineMathValue}$` }));
290
- continue;
291
- }
292
- leafs.push(__spreadProps(__spreadValues({}, leaf), {
293
- type: "inline-katex",
294
- children: [{ text: inlineMathValue }]
295
- }));
296
- continue;
414
+ var parseText = function(els) {
415
+ var leaf = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {
416
+ data: {}
417
+ };
418
+ var leafs = [];
419
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
420
+ try {
421
+ for(var _iterator = els[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
422
+ var n = _step.value;
423
+ if (n.type === 'strong') leafs = leafs.concat(parseText(n.children, _object_spread_props(_object_spread({}, leaf), {
424
+ bold: true
425
+ })));
426
+ if (n.type === 'emphasis') leafs = leafs.concat(parseText(n.children, _object_spread_props(_object_spread({}, leaf), {
427
+ italic: true
428
+ })));
429
+ if (n.type === 'delete') leafs = leafs.concat(parseText(n.children, _object_spread_props(_object_spread({}, leaf), {
430
+ strikethrough: true
431
+ })));
432
+ if (n.type === 'link') {
433
+ leafs = leafs.concat(parseText(n.children, _object_spread_props(_object_spread({}, leaf), {
434
+ url: n === null || n === void 0 ? void 0 : n.url
435
+ })));
436
+ }
437
+ if (n.type === 'inlineCode') leafs.push(_object_spread_props(_object_spread({}, leaf), {
438
+ text: n.value,
439
+ code: true
440
+ }));
441
+ if (n.type === 'inlineMath') {
442
+ var inlineMathValue = typeof n.value === 'string' ? n.value : '';
443
+ if (shouldTreatInlineMathAsText(inlineMathValue)) {
444
+ leafs.push(_object_spread_props(_object_spread({}, leaf), {
445
+ text: "$".concat(inlineMathValue, "$")
446
+ }));
447
+ continue;
448
+ }
449
+ // 处理内联数学公式,返回一个特殊的节点而不是叶子节点
450
+ leafs.push(_object_spread_props(_object_spread({}, leaf), {
451
+ type: 'inline-katex',
452
+ children: [
453
+ {
454
+ text: inlineMathValue
455
+ }
456
+ ]
457
+ }));
458
+ continue; // 跳过后面的默认处理
459
+ }
460
+ // @ts-ignore
461
+ leafs.push(_object_spread_props(_object_spread({}, leaf), {
462
+ text: n.value || ''
463
+ }));
464
+ }
465
+ } catch (err) {
466
+ _didIteratorError = true;
467
+ _iteratorError = err;
468
+ } finally{
469
+ try {
470
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
471
+ _iterator.return();
472
+ }
473
+ } finally{
474
+ if (_didIteratorError) {
475
+ throw _iteratorError;
476
+ }
477
+ }
297
478
  }
298
- leafs.push(__spreadProps(__spreadValues({}, leaf), { text: n.value || "" }));
299
- }
300
- return leafs;
479
+ return leafs;
301
480
  };
302
- var parseTableOrChart = (table, preNode, plugins) => {
303
- var _a, _b, _c, _d, _e, _f, _g;
304
- const keyMap = /* @__PURE__ */ new Map();
305
- const config = (
481
+ var parseTableOrChart = function(table, preNode, plugins) {
482
+ var _table_children, _tableHeader_children, _table_children_slice, _table_children1, _table_align, _config_at, _config_at1;
483
+ var keyMap = new Map();
306
484
  // @ts-ignore
307
- (preNode == null ? void 0 : preNode.type) === "code" && // @ts-ignore
308
- (preNode == null ? void 0 : preNode.language) === "html" && // @ts-ignore
309
- (preNode == null ? void 0 : preNode.otherProps) ? (
310
- // @ts-ignore
311
- preNode == null ? void 0 : preNode.otherProps
312
- ) : {}
313
- );
314
- const tableHeader = (_a = table == null ? void 0 : table.children) == null ? void 0 : _a.at(0);
315
- const columns = ((_b = tableHeader == null ? void 0 : tableHeader.children) == null ? void 0 : _b.map((node2) => {
316
- var _a2;
317
- return (_a2 = myRemark.stringify({
318
- type: "root",
319
- children: [node2]
320
- })) == null ? void 0 : _a2.replace(/\n/g, "").trim();
321
- }).map((title) => (title == null ? void 0 : title.replaceAll("\\", "")) || " ").map((title, index) => {
322
- var _a2, _b2, _c2;
323
- if (keyMap.has(title)) {
324
- keyMap.set(title, keyMap.get(title) + "_" + index);
325
- return {
326
- title: (_c2 = (_b2 = (_a2 = title == null ? void 0 : title.replace(/\n/g, "")) == null ? void 0 : _a2.replace(/\\(?=")/g, "")) == null ? void 0 : _b2.replace(/\\_/g, "")) == null ? void 0 : _c2.trim(),
327
- dataIndex: title + "_" + index,
328
- key: title + "_" + index
329
- };
330
- }
331
- keyMap.set(title, title);
332
- return {
333
- title,
334
- dataIndex: title,
335
- key: title
336
- };
337
- })) || [];
338
- const dataSource = ((_d = (_c = table == null ? void 0 : table.children) == null ? void 0 : _c.slice(1)) == null ? void 0 : _d.map((row) => {
339
- var _a2;
340
- return (_a2 = row.children) == null ? void 0 : _a2.reduce((acc, cell, index) => {
341
- var _a3, _b2, _c2, _d2;
342
- if (index >= columns.length) {
343
- return acc;
344
- }
345
- acc[columns[index].dataIndex] = (_d2 = (_c2 = (_b2 = (_a3 = myRemark.stringify({
346
- type: "root",
347
- children: [cell]
348
- })) == null ? void 0 : _a3.replace(/\n/g, "")) == null ? void 0 : _b2.replace(/\\(?=")/g, "")) == null ? void 0 : _c2.replace(/\\_/g, "")) == null ? void 0 : _d2.trim();
349
- return acc;
350
- }, {});
351
- })) || [];
352
- if ((_e = table.align) == null ? void 0 : _e.every((item) => !item)) {
353
- const aligns2 = getColumnAlignment(dataSource, columns);
354
- table.align = aligns2;
355
- }
356
- const aligns = table.align;
357
- const isChart = (config == null ? void 0 : config.chartType) || ((_g = (_f = config == null ? void 0 : config.at) == null ? void 0 : _f.call(config, 0)) == null ? void 0 : _g.chartType);
358
- const mergeCells = config.mergeCells || [];
359
- const mergeMap = /* @__PURE__ */ new Map();
360
- mergeCells == null ? void 0 : mergeCells.forEach(
361
- ({ row, col, rowSpan, rowspan, colSpan, colspan }) => {
362
- let rawRowSpan = rowSpan || rowspan;
363
- let rawColSpan = colSpan || colspan;
364
- mergeMap.set(`${row}-${col}`, {
365
- rowSpan: rawRowSpan,
366
- colSpan: rawColSpan
367
- });
368
- for (let r = row; r < row + rawRowSpan; r++) {
369
- for (let c = col; c < col + rawColSpan; c++) {
370
- if (r !== row || c !== col) {
371
- mergeMap.set(`${r}-${c}`, { rowSpan: 1, colSpan: 1, hidden: true });
372
- }
485
+ var config = // @ts-ignore
486
+ (preNode === null || preNode === void 0 ? void 0 : preNode.type) === 'code' && // @ts-ignore
487
+ (preNode === null || preNode === void 0 ? void 0 : preNode.language) === 'html' && (// @ts-ignore
488
+ preNode === null || preNode === void 0 ? void 0 : preNode.otherProps) ? preNode === null || preNode === void 0 ? void 0 : preNode.otherProps : {};
489
+ var tableHeader = table === null || table === void 0 ? void 0 : (_table_children = table.children) === null || _table_children === void 0 ? void 0 : _table_children.at(0);
490
+ var columns = (tableHeader === null || tableHeader === void 0 ? void 0 : (_tableHeader_children = tableHeader.children) === null || _tableHeader_children === void 0 ? void 0 : _tableHeader_children.map(function(node) {
491
+ var _myRemark_stringify;
492
+ return (_myRemark_stringify = myRemark.stringify({
493
+ type: 'root',
494
+ children: [
495
+ node
496
+ ]
497
+ })) === null || _myRemark_stringify === void 0 ? void 0 : _myRemark_stringify.replace(/\n/g, '').trim();
498
+ }).map(function(title) {
499
+ return (title === null || title === void 0 ? void 0 : title.replaceAll('\\', '')) || ' ';
500
+ }).map(function(title, index) {
501
+ if (keyMap.has(title)) {
502
+ var _title_replace_replace_replace, _title_replace_replace, _title_replace;
503
+ keyMap.set(title, keyMap.get(title) + '_' + index);
504
+ return {
505
+ title: title === null || title === void 0 ? void 0 : (_title_replace = title.replace(/\n/g, '')) === null || _title_replace === void 0 ? void 0 : (_title_replace_replace = _title_replace.replace(/\\(?=")/g, '')) === null || _title_replace_replace === void 0 ? void 0 : (_title_replace_replace_replace = _title_replace_replace.replace(/\\_/g, '')) === null || _title_replace_replace_replace === void 0 ? void 0 : _title_replace_replace_replace.trim(),
506
+ dataIndex: title + '_' + index,
507
+ key: title + '_' + index
508
+ };
373
509
  }
374
- }
510
+ keyMap.set(title, title);
511
+ return {
512
+ title: title,
513
+ dataIndex: title,
514
+ key: title
515
+ };
516
+ })) || [];
517
+ var dataSource = (table === null || table === void 0 ? void 0 : (_table_children1 = table.children) === null || _table_children1 === void 0 ? void 0 : (_table_children_slice = _table_children1.slice(1)) === null || _table_children_slice === void 0 ? void 0 : _table_children_slice.map(function(row) {
518
+ var _row_children;
519
+ return (_row_children = row.children) === null || _row_children === void 0 ? void 0 : _row_children.reduce(function(acc, cell, index) {
520
+ var _myRemark_stringify_replace_replace_replace, _myRemark_stringify_replace_replace, _myRemark_stringify_replace, _myRemark_stringify;
521
+ // 如果数据列数超出表头列数,舍弃多余的数据
522
+ if (index >= columns.length) {
523
+ return acc;
524
+ }
525
+ acc[columns[index].dataIndex] = (_myRemark_stringify = myRemark.stringify({
526
+ type: 'root',
527
+ children: [
528
+ cell
529
+ ]
530
+ })) === null || _myRemark_stringify === void 0 ? void 0 : (_myRemark_stringify_replace = _myRemark_stringify.replace(/\n/g, '')) === null || _myRemark_stringify_replace === void 0 ? void 0 : (_myRemark_stringify_replace_replace = _myRemark_stringify_replace.replace(/\\(?=")/g, '')) === null || _myRemark_stringify_replace_replace === void 0 ? void 0 : (_myRemark_stringify_replace_replace_replace = _myRemark_stringify_replace_replace.replace(/\\_/g, '')) === null || _myRemark_stringify_replace_replace_replace === void 0 ? void 0 : _myRemark_stringify_replace_replace_replace.trim();
531
+ return acc;
532
+ }, {});
533
+ })) || [];
534
+ if ((_table_align = table.align) === null || _table_align === void 0 ? void 0 : _table_align.every(function(item) {
535
+ return !item;
536
+ })) {
537
+ var aligns = getColumnAlignment(dataSource, columns);
538
+ table.align = aligns;
375
539
  }
376
- );
377
- const children = table.children.map((r, l) => {
378
- return {
379
- type: "table-row",
380
- align: (aligns == null ? void 0 : aligns[l]) || void 0,
381
- children: r.children.map(
382
- (c, i) => {
383
- var _a2;
384
- const mergeInfo = mergeMap.get(`${l}-${i}`);
385
- return __spreadProps(__spreadValues(__spreadValues(__spreadValues({
386
- type: "table-cell",
387
- align: (aligns == null ? void 0 : aligns[i]) || void 0,
388
- title: l === 0,
389
- rows: l,
390
- cols: i
391
- }, (mergeInfo == null ? void 0 : mergeInfo.rowSpan) && mergeInfo.rowSpan > 1 ? { rowSpan: mergeInfo.rowSpan } : {}), (mergeInfo == null ? void 0 : mergeInfo.colSpan) && mergeInfo.colSpan > 1 ? { colSpan: mergeInfo.colSpan } : {}), (mergeInfo == null ? void 0 : mergeInfo.hidden) ? { hidden: true } : {}), {
392
- children: ((_a2 = c.children) == null ? void 0 : _a2.length) ? [
393
- {
394
- type: "paragraph",
395
- children: parseNodes(
396
- c.children,
397
- plugins,
398
- false,
399
- c
400
- )
401
- }
402
- ] : [
403
- {
404
- type: "paragraph",
405
- children: [{ text: "" }]
406
- }
407
- ]
408
- });
540
+ var aligns1 = table.align;
541
+ var isChart = (config === null || config === void 0 ? void 0 : config.chartType) || (config === null || config === void 0 ? void 0 : (_config_at1 = config.at) === null || _config_at1 === void 0 ? void 0 : (_config_at = _config_at1.call(config, 0)) === null || _config_at === void 0 ? void 0 : _config_at.chartType);
542
+ /**
543
+ * 如果是分栏,将表格转换为分栏节点
544
+ */ // 计算合并单元格信息
545
+ var mergeCells = config.mergeCells || [];
546
+ // 创建合并单元格映射,用于快速查找
547
+ var mergeMap = new Map();
548
+ mergeCells === null || mergeCells === void 0 ? void 0 : mergeCells.forEach(function(param) {
549
+ var row = param.row, col = param.col, rowSpan = param.rowSpan, rowspan = param.rowspan, colSpan = param.colSpan, colspan = param.colspan;
550
+ var rawRowSpan = rowSpan || rowspan;
551
+ var rawColSpan = colSpan || colspan;
552
+ // 主单元格
553
+ mergeMap.set("".concat(row, "-").concat(col), {
554
+ rowSpan: rawRowSpan,
555
+ colSpan: rawColSpan
556
+ });
557
+ // 被合并的单元格标记为隐藏
558
+ for(var r = row; r < row + rawRowSpan; r++){
559
+ for(var c = col; c < col + rawColSpan; c++){
560
+ if (r !== row || c !== col) {
561
+ mergeMap.set("".concat(r, "-").concat(c), {
562
+ rowSpan: 1,
563
+ colSpan: 1,
564
+ hidden: true
565
+ });
566
+ }
567
+ }
409
568
  }
410
- )
569
+ });
570
+ var children = table.children.map(function(r, l) {
571
+ return {
572
+ type: 'table-row',
573
+ align: (aligns1 === null || aligns1 === void 0 ? void 0 : aligns1[l]) || undefined,
574
+ children: r.children.map(function(c, i) {
575
+ var _c_children;
576
+ var mergeInfo = mergeMap.get("".concat(l, "-").concat(i));
577
+ return _object_spread_props(_object_spread({
578
+ type: 'table-cell',
579
+ align: (aligns1 === null || aligns1 === void 0 ? void 0 : aligns1[i]) || undefined,
580
+ title: l === 0,
581
+ rows: l,
582
+ cols: i
583
+ }, (mergeInfo === null || mergeInfo === void 0 ? void 0 : mergeInfo.rowSpan) && mergeInfo.rowSpan > 1 ? {
584
+ rowSpan: mergeInfo.rowSpan
585
+ } : {}, (mergeInfo === null || mergeInfo === void 0 ? void 0 : mergeInfo.colSpan) && mergeInfo.colSpan > 1 ? {
586
+ colSpan: mergeInfo.colSpan
587
+ } : {}, (mergeInfo === null || mergeInfo === void 0 ? void 0 : mergeInfo.hidden) ? {
588
+ hidden: true
589
+ } : {}), {
590
+ children: ((_c_children = c.children) === null || _c_children === void 0 ? void 0 : _c_children.length) ? [
591
+ {
592
+ type: 'paragraph',
593
+ children: parseNodes(c.children, plugins, false, c)
594
+ }
595
+ ] : [
596
+ {
597
+ type: 'paragraph',
598
+ children: [
599
+ {
600
+ text: ''
601
+ }
602
+ ]
603
+ }
604
+ ]
605
+ });
606
+ })
607
+ };
608
+ });
609
+ var otherProps = _object_spread_props(_object_spread({}, isChart ? {
610
+ config: config
611
+ } : config), {
612
+ columns: columns,
613
+ dataSource: dataSource.map(function(item) {
614
+ item === null || item === void 0 ? true : delete item.chartType;
615
+ return _object_spread({}, item);
616
+ })
617
+ });
618
+ var node = {
619
+ type: isChart ? 'chart' : 'table',
620
+ children: children,
621
+ otherProps: otherProps
411
622
  };
412
- });
413
- const otherProps = __spreadProps(__spreadValues({}, isChart ? {
414
- config
415
- } : config), {
416
- columns,
417
- dataSource: dataSource.map((item) => {
418
- item == null ? true : delete item.chartType;
419
- return __spreadValues({}, item);
420
- })
421
- });
422
- const node = {
423
- type: isChart ? "chart" : "table",
424
- children,
425
- otherProps
426
- };
427
- return EditorUtils.wrapperCardNode(node);
623
+ return EditorUtils.wrapperCardNode(node);
428
624
  };
429
- var handleHeading = (currentElement, plugins) => {
430
- var _a;
431
- return {
432
- type: "head",
433
- level: currentElement.depth,
434
- children: ((_a = currentElement.children) == null ? void 0 : _a.length) ? parseNodes(currentElement.children, plugins, false, currentElement) : [{ text: "" }]
435
- };
436
- };
437
- var decodeURIComponentUrl = (url) => {
438
- try {
439
- return decodeURIComponent(url);
440
- } catch (e) {
441
- console.error("Failed to decode URI component:", e);
442
- return url;
443
- }
625
+ /**
626
+ * 处理标题节点
627
+ * @param currentElement - 当前处理的标题元素,包含depth和children属性
628
+ * @returns 返回格式化的标题节点对象
629
+ */ var handleHeading = function(currentElement, plugins) {
630
+ var _currentElement_children;
631
+ return {
632
+ type: 'head',
633
+ level: currentElement.depth,
634
+ children: ((_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.length) ? parseNodes(currentElement.children, plugins, false, currentElement) : [
635
+ {
636
+ text: ''
637
+ }
638
+ ]
639
+ };
444
640
  };
445
- var handleHtml = (currentElement, parent, htmlTag) => {
446
- var _a, _b, _c, _d, _e, _f;
447
- const value = ((_a = currentElement == null ? void 0 : currentElement.value) == null ? void 0 : _a.replace("<!--", "").replace("-->", "").trim()) || "{}";
448
- let contextProps = {};
449
- if (value && ((_c = (_b = currentElement == null ? void 0 : currentElement.value) == null ? void 0 : _b.trim()) == null ? void 0 : _c.endsWith("-->")) && ((_d = currentElement == null ? void 0 : currentElement.value.trim()) == null ? void 0 : _d.startsWith("<!--"))) {
641
+ export var decodeURIComponentUrl = function(url) {
450
642
  try {
451
- contextProps = json5.parse(value);
643
+ return decodeURIComponent(url);
452
644
  } catch (e) {
453
- try {
454
- contextProps = partialJsonParse(value);
455
- } catch (parseError) {
456
- console.warn("Failed to parse HTML comment as JSON or partial JSON:", {
457
- value,
458
- error: parseError
459
- });
460
- }
461
- console.warn("HTML comment parse fallback attempted:", e);
645
+ console.error('Failed to decode URI component:', e);
646
+ return url;
462
647
  }
463
- }
464
- let el;
465
- if (!parent || ["listItem", "blockquote"].includes(parent.type)) {
466
- const thinkElement = findThinkElement(currentElement.value);
467
- if (thinkElement) {
468
- el = {
469
- type: "code",
470
- language: "think",
471
- value: thinkElement.content,
472
- children: [
473
- {
474
- text: thinkElement.content
475
- }
476
- ]
477
- };
478
- } else {
479
- const answerElement = findAnswerElement(currentElement.value);
480
- if (answerElement) {
481
- el = { text: answerElement.content };
482
- } else {
483
- const mediaElement = findImageElement(currentElement.value);
484
- if (mediaElement) {
485
- el = createMediaNodeFromElement(mediaElement);
486
- } else if (currentElement.value === "<br/>") {
487
- el = { type: "paragraph", children: [{ text: "" }] };
488
- } else if (currentElement.value.match(/^<\/(img|video|iframe)>/)) {
489
- el = null;
648
+ };
649
+ /**
650
+ * 处理HTML节点
651
+ * @param currentElement - 当前处理的HTML元素
652
+ * @param parent - 父级元素,用于判断上下文
653
+ * @param htmlTag - HTML标签栈,用于跟踪嵌套的HTML标签
654
+ * @returns 返回包含解析后元素和上下文属性的对象
655
+ */ var handleHtml = function(currentElement, parent, htmlTag) {
656
+ var _currentElement_value, _currentElement_value_trim, _currentElement_value1, _currentElement_value_trim1;
657
+ var value = (currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_value = currentElement.value) === null || _currentElement_value === void 0 ? void 0 : _currentElement_value.replace('<!--', '').replace('-->', '').trim()) || '{}';
658
+ var contextProps = {};
659
+ if (value && (currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_value1 = currentElement.value) === null || _currentElement_value1 === void 0 ? void 0 : (_currentElement_value_trim = _currentElement_value1.trim()) === null || _currentElement_value_trim === void 0 ? void 0 : _currentElement_value_trim.endsWith('-->')) && (currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_value_trim1 = currentElement.value.trim()) === null || _currentElement_value_trim1 === void 0 ? void 0 : _currentElement_value_trim1.startsWith('<!--'))) {
660
+ try {
661
+ contextProps = json5.parse(value);
662
+ } catch (e) {
663
+ try {
664
+ contextProps = partialJsonParse(value);
665
+ } catch (parseError) {
666
+ console.warn('Failed to parse HTML comment as JSON or partial JSON:', {
667
+ value: value,
668
+ error: parseError
669
+ });
670
+ }
671
+ console.warn('HTML comment parse fallback attempted:', e);
672
+ }
673
+ }
674
+ var el;
675
+ if (!parent || [
676
+ 'listItem',
677
+ 'blockquote'
678
+ ].includes(parent.type)) {
679
+ // 检查是否为 <think> 标签
680
+ var thinkElement = findThinkElement(currentElement.value);
681
+ if (thinkElement) {
682
+ // 将 <think> 标签转换为 think 类型的代码块
683
+ el = {
684
+ type: 'code',
685
+ language: 'think',
686
+ value: thinkElement.content,
687
+ children: [
688
+ {
689
+ text: thinkElement.content
690
+ }
691
+ ]
692
+ };
490
693
  } else {
491
- const isComment = currentElement.value.trim().startsWith("<!--") && currentElement.value.trim().endsWith("-->");
492
- if (isComment || isStandardHtmlElement(currentElement.value)) {
493
- el = currentElement.value.match(
494
- /<\/?(table|div|ul|li|ol|p|strong)[^\n>]*?>/
495
- ) ? htmlToFragmentList(currentElement.value, "") : {
496
- type: "code",
497
- language: "html",
498
- render: true,
499
- value: currentElement.value,
500
- children: [
501
- {
502
- text: currentElement.value
694
+ // 检查是否为 <answer> 标签
695
+ var answerElement = findAnswerElement(currentElement.value);
696
+ if (answerElement) {
697
+ // 将 <answer> 标签的内容作为普通文本
698
+ el = {
699
+ text: answerElement.content
700
+ };
701
+ } else {
702
+ var mediaElement = findImageElement(currentElement.value);
703
+ if (mediaElement) {
704
+ el = createMediaNodeFromElement(mediaElement);
705
+ } else if (currentElement.value === '<br/>') {
706
+ el = {
707
+ type: 'paragraph',
708
+ children: [
709
+ {
710
+ text: ''
711
+ }
712
+ ]
713
+ };
714
+ } else if (currentElement.value.match(/^<\/(img|video|iframe)>/)) {
715
+ // 如果是媒体标签的结束标签,跳过处理
716
+ el = null;
717
+ } else {
718
+ // 检查是否为注释(注释需要特殊处理以提取配置)
719
+ var isComment = currentElement.value.trim().startsWith('<!--') && currentElement.value.trim().endsWith('-->');
720
+ // 检查是否为标准 HTML 元素或注释
721
+ if (isComment || isStandardHtmlElement(currentElement.value)) {
722
+ // 标准 HTML 元素或注释:按原逻辑处理
723
+ el = currentElement.value.match(/<\/?(table|div|ul|li|ol|p|strong)[^\n>]*?>/) ? htmlToFragmentList(currentElement.value, '') : {
724
+ type: 'code',
725
+ language: 'html',
726
+ render: true,
727
+ value: currentElement.value,
728
+ children: [
729
+ {
730
+ text: currentElement.value
731
+ }
732
+ ]
733
+ };
734
+ } else {
735
+ // 非标准元素(如自定义标签):当作普通文本处理
736
+ el = {
737
+ text: currentElement.value
738
+ };
739
+ }
503
740
  }
504
- ]
505
- };
506
- } else {
507
- el = { text: currentElement.value };
508
- }
741
+ }
509
742
  }
510
- }
743
+ } else {
744
+ el = processInlineHtml(currentElement, htmlTag);
511
745
  }
512
- } else {
513
- el = processInlineHtml(currentElement, htmlTag);
514
- }
515
- if (el && !Array.isArray(el)) {
516
- if (!("text" in el && Object.keys(el).length === 1)) {
517
- el.isConfig = (_f = (_e = currentElement == null ? void 0 : currentElement.value) == null ? void 0 : _e.trim()) == null ? void 0 : _f.startsWith("<!--");
518
- el.otherProps = contextProps;
746
+ if (el && !Array.isArray(el)) {
747
+ // 只有非文本节点才设置 isConfig 和 otherProps
748
+ if (!('text' in el && Object.keys(el).length === 1)) {
749
+ var _currentElement_value_trim2, _currentElement_value2;
750
+ el.isConfig = currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_value2 = currentElement.value) === null || _currentElement_value2 === void 0 ? void 0 : (_currentElement_value_trim2 = _currentElement_value2.trim()) === null || _currentElement_value_trim2 === void 0 ? void 0 : _currentElement_value_trim2.startsWith('<!--');
751
+ el.otherProps = contextProps;
752
+ }
519
753
  }
520
- }
521
- return { el, contextProps };
754
+ return {
755
+ el: el,
756
+ contextProps: contextProps
757
+ };
522
758
  };
523
- var processInlineHtml = (currentElement, htmlTag) => {
524
- const breakMatch = currentElement.value.match(/<br\/?>/);
525
- if (breakMatch) {
526
- return { type: "break", children: [{ text: "\n" }] };
527
- }
528
- const answerElement = findAnswerElement(currentElement.value);
529
- if (answerElement) {
530
- return { text: answerElement.content };
531
- }
532
- if (!isStandardHtmlElement(currentElement.value)) {
533
- return { text: currentElement.value };
534
- }
535
- const htmlMatch = currentElement.value.match(
536
- /<\/?(b|i|del|font|code|span|sup|sub|strong|a)[^\n>]*?>/
537
- );
538
- if (htmlMatch) {
539
- const [str, tag] = htmlMatch;
540
- if (str.startsWith("</") && htmlTag.length && htmlTag[htmlTag.length - 1].tag === tag) {
541
- htmlTag.pop();
759
+ /**
760
+ * 处理内联HTML元素
761
+ * @param currentElement - 当前处理的HTML元素
762
+ * @param htmlTag - HTML标签栈
763
+ * @returns 返回处理后的元素对象,如果是标签则返回null
764
+ */ var processInlineHtml = function(currentElement, htmlTag) {
765
+ var breakMatch = currentElement.value.match(/<br\/?>/);
766
+ if (breakMatch) {
767
+ return {
768
+ type: 'break',
769
+ children: [
770
+ {
771
+ text: '\n'
772
+ }
773
+ ]
774
+ };
775
+ }
776
+ // 检查是否为 <answer> 标签(内联场景)
777
+ var answerElement = findAnswerElement(currentElement.value);
778
+ if (answerElement) {
779
+ // 将 <answer> 标签的内容作为普通文本
780
+ return {
781
+ text: answerElement.content
782
+ };
542
783
  }
543
- if (!str.startsWith("</")) {
544
- processHtmlTag(str, tag, htmlTag);
784
+ // 检查是否为非标准 HTML 元素,如果是则直接当作文本
785
+ if (!isStandardHtmlElement(currentElement.value)) {
786
+ return {
787
+ text: currentElement.value
788
+ };
545
789
  }
546
- return null;
547
- } else {
548
- const mediaElement = findImageElement(currentElement.value);
549
- if (mediaElement) {
550
- return createMediaNodeFromElement(mediaElement);
790
+ var htmlMatch = currentElement.value.match(/<\/?(b|i|del|font|code|span|sup|sub|strong|a)[^\n>]*?>/);
791
+ if (htmlMatch) {
792
+ var _htmlMatch = _sliced_to_array(htmlMatch, 2), str = _htmlMatch[0], tag = _htmlMatch[1];
793
+ if (str.startsWith('</') && htmlTag.length && htmlTag[htmlTag.length - 1].tag === tag) {
794
+ htmlTag.pop();
795
+ }
796
+ if (!str.startsWith('</')) {
797
+ processHtmlTag(str, tag, htmlTag);
798
+ }
799
+ return null;
551
800
  } else {
552
- return { text: currentElement.value };
801
+ var mediaElement = findImageElement(currentElement.value);
802
+ if (mediaElement) {
803
+ return createMediaNodeFromElement(mediaElement);
804
+ } else {
805
+ return {
806
+ text: currentElement.value
807
+ };
808
+ }
553
809
  }
554
- }
555
810
  };
556
- var processHtmlTag = (str, tag, htmlTag) => {
557
- if (tag === "span") {
558
- try {
559
- const styles = str.match(/style="([^"\n]+)"/);
560
- if (styles) {
561
- const stylesMap = new Map(
562
- styles[1].split(";").map(
563
- (item) => item.split(":").map((item2) => item2.trim())
564
- )
565
- );
566
- if (stylesMap.get("color")) {
567
- htmlTag.push({
568
- tag,
569
- color: stylesMap.get("color")
570
- });
811
+ /**
812
+ * 处理HTML标签并添加到标签栈中
813
+ * @param str - HTML标签字符串
814
+ * @param tag - 标签名称
815
+ * @param htmlTag - HTML标签栈
816
+ */ var processHtmlTag = function(str, tag, htmlTag) {
817
+ if (tag === 'span') {
818
+ try {
819
+ var styles = str.match(/style="([^"\n]+)"/);
820
+ if (styles) {
821
+ var stylesMap = new Map(styles[1].split(';').map(function(item) {
822
+ return item.split(':').map(function(item) {
823
+ return item.trim();
824
+ });
825
+ }));
826
+ if (stylesMap.get('color')) {
827
+ htmlTag.push({
828
+ tag: tag,
829
+ color: stylesMap.get('color')
830
+ });
831
+ }
832
+ }
833
+ } catch (e) {
834
+ console.warn('Failed to parse span style attribute:', {
835
+ str: str,
836
+ error: e
837
+ });
571
838
  }
572
- }
573
- } catch (e) {
574
- console.warn("Failed to parse span style attribute:", { str, error: e });
575
- }
576
- } else if (tag === "a") {
577
- const url = str.match(/href="([\w:./_\-#\\]+)"/);
578
- if (url) {
579
- htmlTag.push({
580
- tag,
581
- url: url[1]
582
- });
583
- }
584
- } else if (tag === "font") {
585
- let color = str.match(/color="([^"\n]+)"/);
586
- if (!color) {
587
- color = str.match(/color=([^"\n]+)/);
588
- }
589
- if (color) {
590
- htmlTag.push({
591
- tag,
592
- color: color[1].replaceAll(">", "")
593
- });
839
+ } else if (tag === 'a') {
840
+ var url = str.match(/href="([\w:./_\-#\\]+)"/);
841
+ if (url) {
842
+ htmlTag.push({
843
+ tag: tag,
844
+ url: url[1]
845
+ });
846
+ }
847
+ } else if (tag === 'font') {
848
+ var color = str.match(/color="([^"\n]+)"/);
849
+ if (!color) {
850
+ color = str.match(/color=([^"\n]+)/);
851
+ }
852
+ if (color) {
853
+ htmlTag.push({
854
+ tag: tag,
855
+ color: color[1].replaceAll('>', '')
856
+ });
857
+ }
858
+ } else {
859
+ htmlTag.push({
860
+ tag: tag
861
+ });
594
862
  }
595
- } else {
596
- htmlTag.push({ tag });
597
- }
598
863
  };
599
- var handleImage = (currentElement) => {
600
- return EditorUtils.createMediaNode(
601
- decodeURIComponent(currentElement == null ? void 0 : currentElement.url),
602
- "image",
603
- {
604
- alt: currentElement.alt
605
- }
606
- );
864
+ /**
865
+ * 处理图片节点
866
+ * @param currentElement - 当前处理的图片元素,包含url和alt属性
867
+ * @returns 返回格式化的图片节点对象
868
+ */ var handleImage = function(currentElement) {
869
+ return EditorUtils.createMediaNode(decodeURIComponent(currentElement === null || currentElement === void 0 ? void 0 : currentElement.url), 'image', {
870
+ alt: currentElement.alt
871
+ });
607
872
  };
608
- var handleInlineMath = (currentElement) => {
609
- const inlineMathValue = typeof (currentElement == null ? void 0 : currentElement.value) === "string" ? currentElement.value : "";
610
- if (shouldTreatInlineMathAsText(inlineMathValue)) {
873
+ /**
874
+ * 处理内联数学公式
875
+ * @param currentElement - 当前处理的内联数学公式元素
876
+ * @returns 返回格式化的内联KaTeX节点对象
877
+ */ var handleInlineMath = function(currentElement) {
878
+ var inlineMathValue = typeof (currentElement === null || currentElement === void 0 ? void 0 : currentElement.value) === 'string' ? currentElement.value : '';
879
+ if (shouldTreatInlineMathAsText(inlineMathValue)) {
880
+ return {
881
+ type: 'paragraph',
882
+ children: [
883
+ {
884
+ text: "$".concat(inlineMathValue, "$")
885
+ }
886
+ ]
887
+ };
888
+ }
611
889
  return {
612
- type: "paragraph",
613
- children: [{ text: `$${inlineMathValue}$` }]
890
+ type: 'inline-katex',
891
+ children: [
892
+ {
893
+ text: inlineMathValue
894
+ }
895
+ ]
614
896
  };
615
- }
616
- return {
617
- type: "inline-katex",
618
- children: [{ text: inlineMathValue }]
619
- };
620
897
  };
621
- var handleMath = (currentElement) => {
622
- return {
623
- type: "katex",
624
- language: "latex",
625
- katex: true,
626
- value: currentElement.value,
627
- children: [{ text: "" }]
628
- };
898
+ /**
899
+ * 处理数学公式块
900
+ * @param currentElement - 当前处理的数学公式块元素
901
+ * @returns 返回格式化的KaTeX块节点对象
902
+ */ var handleMath = function(currentElement) {
903
+ return {
904
+ type: 'katex',
905
+ language: 'latex',
906
+ katex: true,
907
+ value: currentElement.value,
908
+ children: [
909
+ {
910
+ text: ''
911
+ }
912
+ ]
913
+ };
629
914
  };
630
- var handleList = (currentElement, plugins) => {
631
- var _a;
632
- const el = {
633
- type: "list",
634
- order: currentElement.ordered,
635
- start: currentElement.start,
636
- children: parseNodes(
637
- currentElement.children,
638
- plugins,
639
- false,
640
- currentElement
641
- )
642
- };
643
- el.task = (_a = el.children) == null ? void 0 : _a.some((s) => typeof s.checked === "boolean");
644
- return el;
915
+ /**
916
+ * 处理列表节点
917
+ * @param currentElement - 当前处理的列表元素,包含ordered、start等属性
918
+ * @returns 返回格式化的列表节点对象
919
+ */ var handleList = function(currentElement, plugins) {
920
+ var _el_children;
921
+ var el = {
922
+ type: 'list',
923
+ order: currentElement.ordered,
924
+ start: currentElement.start,
925
+ children: parseNodes(currentElement.children, plugins, false, currentElement)
926
+ };
927
+ el.task = (_el_children = el.children) === null || _el_children === void 0 ? void 0 : _el_children.some(function(s) {
928
+ return typeof s.checked === 'boolean';
929
+ });
930
+ return el;
645
931
  };
646
- var handleFootnoteReference = (currentElement) => {
647
- var _a;
648
- return {
649
- text: `${(_a = currentElement.identifier) == null ? void 0 : _a.toUpperCase()}`,
650
- identifier: currentElement.identifier,
651
- type: "footnoteReference"
652
- };
932
+ /**
933
+ * 处理脚注引用
934
+ * @param currentElement - 当前处理的脚注引用元素
935
+ * @returns 返回格式化的脚注引用节点对象
936
+ */ var handleFootnoteReference = function(currentElement) {
937
+ var _currentElement_identifier;
938
+ return {
939
+ text: "".concat((_currentElement_identifier = currentElement.identifier) === null || _currentElement_identifier === void 0 ? void 0 : _currentElement_identifier.toUpperCase()),
940
+ identifier: currentElement.identifier,
941
+ type: 'footnoteReference'
942
+ };
653
943
  };
654
- var handleFootnoteDefinition = (currentElement, plugins) => {
655
- var _a, _b;
656
- const linkNode = (_a = parseNodes(
657
- currentElement.children,
658
- plugins,
659
- false,
660
- currentElement
661
- )) == null ? void 0 : _a.at(0);
662
- const cellNode = (_b = linkNode == null ? void 0 : linkNode.children) == null ? void 0 : _b.at(0);
663
- return {
664
- value: cellNode == null ? void 0 : cellNode.text,
665
- url: cellNode == null ? void 0 : cellNode.url,
666
- type: "footnoteDefinition",
667
- identifier: currentElement.identifier,
668
- children: [cellNode]
669
- };
944
+ /**
945
+ * 处理脚注定义
946
+ * @param currentElement - 当前处理的脚注定义元素
947
+ * @returns 返回格式化的脚注定义节点对象
948
+ */ var handleFootnoteDefinition = function(currentElement, plugins) {
949
+ var _parseNodes, _linkNode_children;
950
+ var linkNode = (_parseNodes = parseNodes(currentElement.children, plugins, false, currentElement)) === null || _parseNodes === void 0 ? void 0 : _parseNodes.at(0);
951
+ var cellNode = linkNode === null || linkNode === void 0 ? void 0 : (_linkNode_children = linkNode.children) === null || _linkNode_children === void 0 ? void 0 : _linkNode_children.at(0);
952
+ return {
953
+ value: cellNode === null || cellNode === void 0 ? void 0 : cellNode.text,
954
+ url: cellNode === null || cellNode === void 0 ? void 0 : cellNode.url,
955
+ type: 'footnoteDefinition',
956
+ identifier: currentElement.identifier,
957
+ children: [
958
+ cellNode
959
+ ]
960
+ };
670
961
  };
671
- var handleListItem = (currentElement, plugins) => {
672
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
673
- const children = ((_a = currentElement.children) == null ? void 0 : _a.length) ? parseNodes(currentElement.children, plugins, false, currentElement) : [{ type: "paragraph", children: [{ text: "" }] }];
674
- let mentions = void 0;
675
- if (((_e = (_d = (_c = (_b = currentElement.children) == null ? void 0 : _b[0]) == null ? void 0 : _c.children) == null ? void 0 : _d[0]) == null ? void 0 : _e.type) === "link" && ((_h = (_g = (_f = currentElement.children) == null ? void 0 : _f[0]) == null ? void 0 : _g.children) == null ? void 0 : _h.length) > 1) {
676
- const item = (_j = (_i = children == null ? void 0 : children[0]) == null ? void 0 : _i.children) == null ? void 0 : _j[0];
677
- const label = item == null ? void 0 : item.text;
678
- if (label) {
679
- mentions = [
962
+ /**
963
+ * 处理列表项节点
964
+ * @param currentElement - 当前处理的列表项元素
965
+ * @returns 返回格式化的列表项节点对象,包含复选框状态和提及信息
966
+ */ var handleListItem = function(currentElement, plugins) {
967
+ var _currentElement_children, _currentElement_children__children_, _currentElement_children__children, _currentElement_children_, _currentElement_children1, _currentElement_children__children1, _currentElement_children_1, _currentElement_children2, _children__children_;
968
+ var children = ((_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.length) ? parseNodes(currentElement.children, plugins, false, currentElement) : [
680
969
  {
681
- avatar: item == null ? void 0 : item.url,
682
- name: label,
683
- id: new URLSearchParams("?" + ((_k = item == null ? void 0 : item.url) == null ? void 0 : _k.split("?")[1])).get("id") || void 0
970
+ type: 'paragraph',
971
+ children: [
972
+ {
973
+ text: ''
974
+ }
975
+ ]
976
+ }
977
+ ];
978
+ var mentions = undefined;
979
+ if (((_currentElement_children1 = currentElement.children) === null || _currentElement_children1 === void 0 ? void 0 : (_currentElement_children_ = _currentElement_children1[0]) === null || _currentElement_children_ === void 0 ? void 0 : (_currentElement_children__children = _currentElement_children_.children) === null || _currentElement_children__children === void 0 ? void 0 : (_currentElement_children__children_ = _currentElement_children__children[0]) === null || _currentElement_children__children_ === void 0 ? void 0 : _currentElement_children__children_.type) === 'link' && ((_currentElement_children2 = currentElement.children) === null || _currentElement_children2 === void 0 ? void 0 : (_currentElement_children_1 = _currentElement_children2[0]) === null || _currentElement_children_1 === void 0 ? void 0 : (_currentElement_children__children1 = _currentElement_children_1.children) === null || _currentElement_children__children1 === void 0 ? void 0 : _currentElement_children__children1.length) > 1) {
980
+ var _children__children, _children_;
981
+ var item = children === null || children === void 0 ? void 0 : (_children_ = children[0]) === null || _children_ === void 0 ? void 0 : (_children__children = _children_.children) === null || _children__children === void 0 ? void 0 : _children__children[0];
982
+ var label = item === null || item === void 0 ? void 0 : item.text;
983
+ if (label) {
984
+ var _item_url, _children__children1, _children_1, _children_2;
985
+ mentions = [
986
+ {
987
+ avatar: item === null || item === void 0 ? void 0 : item.url,
988
+ name: label,
989
+ id: new URLSearchParams('?' + (item === null || item === void 0 ? void 0 : (_item_url = item.url) === null || _item_url === void 0 ? void 0 : _item_url.split('?')[1])).get('id') || undefined
990
+ }
991
+ ];
992
+ children === null || children === void 0 ? true : (_children_1 = children[0]) === null || _children_1 === void 0 ? true : (_children__children1 = _children_1.children) === null || _children__children1 === void 0 ? true : delete _children__children1[0];
993
+ if (children === null || children === void 0 ? void 0 : (_children_2 = children[0]) === null || _children_2 === void 0 ? void 0 : _children_2.children) {
994
+ var _children__children2, _children_3;
995
+ children[0].children = children === null || children === void 0 ? void 0 : (_children_3 = children[0]) === null || _children_3 === void 0 ? void 0 : (_children__children2 = _children_3.children) === null || _children__children2 === void 0 ? void 0 : _children__children2.filter(Boolean);
996
+ }
684
997
  }
685
- ];
686
- (_m = (_l = children == null ? void 0 : children[0]) == null ? void 0 : _l.children) == null ? true : delete _m[0];
687
- if ((_n = children == null ? void 0 : children[0]) == null ? void 0 : _n.children) {
688
- children[0].children = (_p = (_o = children == null ? void 0 : children[0]) == null ? void 0 : _o.children) == null ? void 0 : _p.filter(Boolean);
689
- }
690
998
  }
691
- }
692
- if (children[0].type === "paragraph" && ((_q = children[0].children[0]) == null ? void 0 : _q.text)) {
693
- const text = (_r = children[0].children[0]) == null ? void 0 : _r.text;
694
- const m = text.match(/^\[([x\s])]/);
695
- if (m) {
696
- children[0].children[0].text = text.replace(/^\[([x\s])]/, "");
697
- return {
698
- type: "list-item",
699
- checked: m ? m[1] === "x" : void 0,
700
- children,
701
- mentions
702
- };
999
+ if (children[0].type === 'paragraph' && ((_children__children_ = children[0].children[0]) === null || _children__children_ === void 0 ? void 0 : _children__children_.text)) {
1000
+ var _children__children_1;
1001
+ var text = (_children__children_1 = children[0].children[0]) === null || _children__children_1 === void 0 ? void 0 : _children__children_1.text;
1002
+ var m = text.match(/^\[([x\s])]/);
1003
+ if (m) {
1004
+ children[0].children[0].text = text.replace(/^\[([x\s])]/, '');
1005
+ return {
1006
+ type: 'list-item',
1007
+ checked: m ? m[1] === 'x' : undefined,
1008
+ children: children,
1009
+ mentions: mentions
1010
+ };
1011
+ }
703
1012
  }
704
- }
705
- return {
706
- type: "list-item",
707
- checked: currentElement.checked,
708
- children,
709
- mentions
710
- };
1013
+ return {
1014
+ type: 'list-item',
1015
+ checked: currentElement.checked,
1016
+ children: children,
1017
+ mentions: mentions
1018
+ };
711
1019
  };
712
- var handleAttachmentLink = (currentElement) => {
713
- const text = currentElement.children.map((n) => n.value || "").join("");
714
- const attach = findAttachment(text);
715
- if (!attach)
716
- return null;
717
- const name = text.match(/>(.*)<\/a>/);
718
- return {
719
- type: "attach",
720
- url: decodeURIComponentUrl(attach == null ? void 0 : attach.url),
721
- size: attach.size,
722
- children: [
723
- {
724
- type: "card-before",
725
- children: [{ text: "" }]
726
- },
727
- {
728
- type: "card-after",
729
- children: [{ text: "" }]
730
- }
731
- ],
732
- name: name ? name[1] : attach == null ? void 0 : attach.url
733
- };
1020
+ /**
1021
+ * 处理附件链接
1022
+ */ var handleAttachmentLink = function(currentElement) {
1023
+ var text = currentElement.children.map(function(n) {
1024
+ return n.value || '';
1025
+ }).join('');
1026
+ var attach = findAttachment(text);
1027
+ if (!attach) return null;
1028
+ var name = text.match(/>(.*)<\/a>/);
1029
+ return {
1030
+ type: 'attach',
1031
+ url: decodeURIComponentUrl(attach === null || attach === void 0 ? void 0 : attach.url),
1032
+ size: attach.size,
1033
+ children: [
1034
+ {
1035
+ type: 'card-before',
1036
+ children: [
1037
+ {
1038
+ text: ''
1039
+ }
1040
+ ]
1041
+ },
1042
+ {
1043
+ type: 'card-after',
1044
+ children: [
1045
+ {
1046
+ text: ''
1047
+ }
1048
+ ]
1049
+ }
1050
+ ],
1051
+ name: name ? name[1] : attach === null || attach === void 0 ? void 0 : attach.url
1052
+ };
734
1053
  };
735
- var handleLinkCard = (currentElement, config) => {
736
- var _a;
737
- const link = (_a = currentElement == null ? void 0 : currentElement.children) == null ? void 0 : _a.at(0);
738
- return __spreadProps(__spreadValues({}, config), {
739
- type: "link-card",
740
- url: decodeURIComponentUrl(link == null ? void 0 : link.url),
741
- children: [
742
- {
743
- type: "card-before",
744
- children: [{ text: "" }]
745
- },
746
- {
747
- type: "card-after",
748
- children: [{ text: "" }]
749
- }
750
- ],
751
- name: link.title
752
- });
1054
+ /**
1055
+ * 处理链接卡片
1056
+ */ var handleLinkCard = function(currentElement, config) {
1057
+ var _currentElement_children;
1058
+ var link = currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.at(0);
1059
+ return _object_spread_props(_object_spread({}, config), {
1060
+ type: 'link-card',
1061
+ url: decodeURIComponentUrl(link === null || link === void 0 ? void 0 : link.url),
1062
+ children: [
1063
+ {
1064
+ type: 'card-before',
1065
+ children: [
1066
+ {
1067
+ text: ''
1068
+ }
1069
+ ]
1070
+ },
1071
+ {
1072
+ type: 'card-after',
1073
+ children: [
1074
+ {
1075
+ text: ''
1076
+ }
1077
+ ]
1078
+ }
1079
+ ],
1080
+ name: link.title
1081
+ });
753
1082
  };
754
- var processParagraphChildren = (currentElement, plugins) => {
755
- const elements = [];
756
- let textNodes = [];
757
- for (let currentChild of currentElement.children || []) {
758
- if (currentChild.type === "image") {
759
- if (textNodes.length) {
1083
+ /**
1084
+ * 处理段落中的子元素
1085
+ */ var processParagraphChildren = function(currentElement, plugins) {
1086
+ var elements = [];
1087
+ var textNodes = [];
1088
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1089
+ try {
1090
+ for(var _iterator = (currentElement.children || [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1091
+ var currentChild = _step.value;
1092
+ if (currentChild.type === 'image') {
1093
+ // 将累积的文本节点生成段落
1094
+ if (textNodes.length) {
1095
+ elements.push({
1096
+ type: 'paragraph',
1097
+ children: parseNodes(textNodes, plugins, false, currentElement)
1098
+ });
1099
+ textNodes = [];
1100
+ }
1101
+ // 添加图片节点
1102
+ elements.push(EditorUtils.createMediaNode(decodeURIComponentUrl(currentChild === null || currentChild === void 0 ? void 0 : currentChild.url), 'image', {
1103
+ alt: currentChild.alt
1104
+ }));
1105
+ } else if (currentChild.type === 'html') {
1106
+ // 跳过媒体标签的结束标签
1107
+ if (currentChild.value.match(/^<\/(img|video|iframe)>/)) {
1108
+ continue;
1109
+ }
1110
+ var mediaElement = findImageElement(currentChild.value);
1111
+ if (mediaElement) {
1112
+ var node = createMediaNodeFromElement(mediaElement);
1113
+ if (node) {
1114
+ elements.push(node);
1115
+ }
1116
+ } else {
1117
+ textNodes.push({
1118
+ type: 'html',
1119
+ value: currentChild.value
1120
+ });
1121
+ }
1122
+ } else {
1123
+ textNodes.push(currentChild);
1124
+ }
1125
+ }
1126
+ } catch (err) {
1127
+ _didIteratorError = true;
1128
+ _iteratorError = err;
1129
+ } finally{
1130
+ try {
1131
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1132
+ _iterator.return();
1133
+ }
1134
+ } finally{
1135
+ if (_didIteratorError) {
1136
+ throw _iteratorError;
1137
+ }
1138
+ }
1139
+ }
1140
+ // 处理剩余的文本节点
1141
+ if (textNodes.length) {
760
1142
  elements.push({
761
- type: "paragraph",
762
- children: parseNodes(textNodes, plugins, false, currentElement)
1143
+ type: 'paragraph',
1144
+ children: parseNodes(textNodes, plugins, false, currentElement)
763
1145
  });
764
- textNodes = [];
765
- }
766
- elements.push(
767
- EditorUtils.createMediaNode(
768
- decodeURIComponentUrl(currentChild == null ? void 0 : currentChild.url),
769
- "image",
770
- {
771
- alt: currentChild.alt
772
- }
773
- )
774
- );
775
- } else if (currentChild.type === "html") {
776
- if (currentChild.value.match(/^<\/(img|video|iframe)>/)) {
777
- continue;
778
- }
779
- const mediaElement = findImageElement(currentChild.value);
780
- if (mediaElement) {
781
- const node = createMediaNodeFromElement(mediaElement);
782
- if (node) {
783
- elements.push(node);
784
- }
785
- } else {
786
- textNodes.push({ type: "html", value: currentChild.value });
787
- }
788
- } else {
789
- textNodes.push(currentChild);
790
1146
  }
791
- }
792
- if (textNodes.length) {
793
- elements.push({
794
- type: "paragraph",
795
- children: parseNodes(textNodes, plugins, false, currentElement)
796
- });
797
- }
798
- return elements;
1147
+ return elements;
799
1148
  };
800
- var handleParagraph = (currentElement, config, plugins) => {
801
- var _a, _b, _c;
802
- if (((_a = currentElement.children) == null ? void 0 : _a[0].type) === "html" && currentElement.children[0].value.startsWith("<a")) {
803
- const attachNode = handleAttachmentLink(currentElement);
804
- if (attachNode)
805
- return attachNode;
806
- }
807
- if (((_c = (_b = currentElement == null ? void 0 : currentElement.children) == null ? void 0 : _b.at(0)) == null ? void 0 : _c.type) === "link" && config.type === "card") {
808
- return handleLinkCard(currentElement, config);
809
- }
810
- return processParagraphChildren(currentElement, plugins);
1149
+ /**
1150
+ * 处理段落节点
1151
+ * @param currentElement - 当前处理的段落元素
1152
+ * @param config - 配置对象,包含样式和行为设置
1153
+ * @param plugins - 插件数组
1154
+ * @returns 返回格式化的段落节点对象或元素数组
1155
+ */ var handleParagraph = function(currentElement, config, plugins) {
1156
+ var _currentElement_children, _currentElement_children_at, _currentElement_children1;
1157
+ // 检查是否是附件链接
1158
+ if (((_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children[0].type) === 'html' && currentElement.children[0].value.startsWith('<a')) {
1159
+ var attachNode = handleAttachmentLink(currentElement);
1160
+ if (attachNode) return attachNode;
1161
+ }
1162
+ // 检查是否是链接卡片
1163
+ if ((currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_children1 = currentElement.children) === null || _currentElement_children1 === void 0 ? void 0 : (_currentElement_children_at = _currentElement_children1.at(0)) === null || _currentElement_children_at === void 0 ? void 0 : _currentElement_children_at.type) === 'link' && config.type === 'card') {
1164
+ return handleLinkCard(currentElement, config);
1165
+ }
1166
+ // 处理混合内容段落
1167
+ return processParagraphChildren(currentElement, plugins);
811
1168
  };
812
- var handleInlineCode = (currentElement) => {
813
- var _a, _b;
814
- const hasPlaceHolder = (_a = currentElement.value) == null ? void 0 : _a.match(/\$\{(.*?)\}/);
815
- const values = hasPlaceHolder ? hasPlaceHolder[1].split(";").map((item) => {
816
- const values2 = item == null ? void 0 : item.split(":");
1169
+ /**
1170
+ * 处理内联代码节点
1171
+ * @param currentElement - 当前处理的内联代码元素
1172
+ * @returns 返回格式化的内联代码节点对象,支持占位符和初始值
1173
+ */ var handleInlineCode = function(currentElement) {
1174
+ var _currentElement_value, _currentElement_value1;
1175
+ var hasPlaceHolder = (_currentElement_value = currentElement.value) === null || _currentElement_value === void 0 ? void 0 : _currentElement_value.match(/\$\{(.*?)\}/);
1176
+ var values = hasPlaceHolder ? hasPlaceHolder[1].split(';').map(function(item) {
1177
+ var values = item === null || item === void 0 ? void 0 : item.split(':');
1178
+ return _define_property({}, (values === null || values === void 0 ? void 0 : values.at(0)) || '', values === null || values === void 0 ? void 0 : values.at(1));
1179
+ }).reduce(function(acc, item) {
1180
+ return _object_spread({}, acc, item);
1181
+ }, {}) : undefined;
817
1182
  return {
818
- [(values2 == null ? void 0 : values2.at(0)) || ""]: values2 == null ? void 0 : values2.at(1)
1183
+ text: values ? (values === null || values === void 0 ? void 0 : values.initialValue) || ' ' : currentElement.value,
1184
+ tag: (_currentElement_value1 = currentElement.value) === null || _currentElement_value1 === void 0 ? void 0 : _currentElement_value1.startsWith('${'),
1185
+ placeholder: (values === null || values === void 0 ? void 0 : values.placeholder) || undefined,
1186
+ initialValue: (values === null || values === void 0 ? void 0 : values.initialValue) || undefined,
1187
+ code: true
819
1188
  };
820
- }).reduce((acc, item) => {
821
- return __spreadValues(__spreadValues({}, acc), item);
822
- }, {}) : void 0;
823
- return {
824
- text: values ? (values == null ? void 0 : values.initialValue) || " " : currentElement.value,
825
- tag: (_b = currentElement.value) == null ? void 0 : _b.startsWith("${"),
826
- placeholder: (values == null ? void 0 : values.placeholder) || void 0,
827
- initialValue: (values == null ? void 0 : values.initialValue) || void 0,
828
- code: true
829
- };
830
1189
  };
831
- var handleThematicBreak = () => {
832
- return { type: "hr", children: [{ text: "" }] };
1190
+ /**
1191
+ * 处理分割线节点
1192
+ * @returns 返回格式化的分割线节点对象
1193
+ */ var handleThematicBreak = function() {
1194
+ return {
1195
+ type: 'hr',
1196
+ children: [
1197
+ {
1198
+ text: ''
1199
+ }
1200
+ ]
1201
+ };
833
1202
  };
834
- var handleCode = (currentElement) => {
835
- var _a;
836
- const baseCodeElement = {
837
- type: "code",
838
- language: currentElement.lang === "apaasify" ? "apaasify" : currentElement.lang,
839
- render: currentElement.meta === "render",
840
- value: currentElement.value,
841
- isConfig: (_a = currentElement == null ? void 0 : currentElement.value.trim()) == null ? void 0 : _a.startsWith("<!--"),
842
- children: [{ text: currentElement.value }]
843
- };
844
- const handler = LANGUAGE_HANDLERS[currentElement.lang];
845
- return handler ? handler(baseCodeElement, currentElement.value) : baseCodeElement;
1203
+ /**
1204
+ * 处理代码块节点
1205
+ * @param currentElement - 当前处理的代码块元素,包含语言和内容
1206
+ * @returns 返回格式化的代码块节点对象,根据语言类型进行特殊处理
1207
+ */ var handleCode = function(currentElement) {
1208
+ var _currentElement_value_trim;
1209
+ var baseCodeElement = {
1210
+ type: 'code',
1211
+ language: currentElement.lang === 'apaasify' ? 'apaasify' : currentElement.lang,
1212
+ render: currentElement.meta === 'render',
1213
+ value: currentElement.value,
1214
+ isConfig: currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_value_trim = currentElement.value.trim()) === null || _currentElement_value_trim === void 0 ? void 0 : _currentElement_value_trim.startsWith('<!--'),
1215
+ children: [
1216
+ {
1217
+ text: currentElement.value
1218
+ }
1219
+ ]
1220
+ };
1221
+ var handler = LANGUAGE_HANDLERS[currentElement.lang];
1222
+ return handler ? handler(baseCodeElement, currentElement.value) : baseCodeElement;
846
1223
  };
847
- var handleYaml = (currentElement) => {
848
- return {
849
- type: "code",
850
- language: "yaml",
851
- value: currentElement.value,
852
- frontmatter: true,
853
- children: [{ text: currentElement.value }]
854
- };
1224
+ /**
1225
+ * 处理YAML节点
1226
+ * @param currentElement - 当前处理的YAML元素
1227
+ * @returns 返回格式化的YAML代码块节点对象
1228
+ */ var handleYaml = function(currentElement) {
1229
+ return {
1230
+ type: 'code',
1231
+ language: 'yaml',
1232
+ value: currentElement.value,
1233
+ frontmatter: true,
1234
+ children: [
1235
+ {
1236
+ text: currentElement.value
1237
+ }
1238
+ ]
1239
+ };
855
1240
  };
856
- var handleBlockquote = (currentElement, plugins) => {
857
- var _a;
858
- return {
859
- type: "blockquote",
860
- children: ((_a = currentElement.children) == null ? void 0 : _a.length) ? parseNodes(currentElement.children, plugins, false, currentElement) : [{ type: "paragraph", children: [{ text: "" }] }]
861
- };
1241
+ /**
1242
+ * 处理引用块节点
1243
+ * @param currentElement - 当前处理的引用块元素
1244
+ * @returns 返回格式化的引用块节点对象
1245
+ */ var handleBlockquote = function(currentElement, plugins) {
1246
+ var _currentElement_children;
1247
+ return {
1248
+ type: 'blockquote',
1249
+ children: ((_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.length) ? parseNodes(currentElement.children, plugins, false, currentElement) : [
1250
+ {
1251
+ type: 'paragraph',
1252
+ children: [
1253
+ {
1254
+ text: ''
1255
+ }
1256
+ ]
1257
+ }
1258
+ ]
1259
+ };
862
1260
  };
863
- var handleDefinition = (currentElement) => {
864
- return {
865
- type: "paragraph",
866
- children: [
867
- {
868
- text: `[${currentElement.label}]: ` + (currentElement.url ? `${currentElement.url}` : "")
869
- }
870
- ]
871
- };
1261
+ /**
1262
+ * 处理定义节点
1263
+ * @param currentElement - 当前处理的定义元素,包含标签和URL
1264
+ * @returns 返回格式化的定义段落节点对象
1265
+ */ var handleDefinition = function(currentElement) {
1266
+ return {
1267
+ type: 'paragraph',
1268
+ children: [
1269
+ {
1270
+ text: "[".concat(currentElement.label, "]: ") + (currentElement.url ? "".concat(currentElement.url) : '')
1271
+ }
1272
+ ]
1273
+ };
872
1274
  };
873
- var handleTextAndInlineElements = (currentElement, htmlTag, plugins) => {
874
- var _a, _b, _c;
875
- if (currentElement.type === "text" && htmlTag.length) {
876
- const el = { text: currentElement.value };
877
- if (currentElement.value) {
878
- applyHtmlTagsToElement(el, htmlTag);
1275
+ /**
1276
+ * 处理文本和内联元素节点
1277
+ * @param currentElement - 当前处理的文本或内联元素
1278
+ * @param htmlTag - HTML标签栈,用于应用样式
1279
+ * @returns 返回格式化的文本或内联元素节点对象
1280
+ */ var handleTextAndInlineElements = function(currentElement, htmlTag, plugins) {
1281
+ if (currentElement.type === 'text' && htmlTag.length) {
1282
+ var el = {
1283
+ text: currentElement.value
1284
+ };
1285
+ if (currentElement.value) {
1286
+ applyHtmlTagsToElement(el, htmlTag);
1287
+ }
1288
+ return el;
879
1289
  }
880
- return el;
881
- }
882
- if (["strong", "link", "text", "emphasis", "delete", "inlineCode"].includes(
883
- currentElement.type
884
- )) {
885
- if (currentElement.type === "text") {
886
- return { text: currentElement.value };
1290
+ if ([
1291
+ 'strong',
1292
+ 'link',
1293
+ 'text',
1294
+ 'emphasis',
1295
+ 'delete',
1296
+ 'inlineCode'
1297
+ ].includes(currentElement.type)) {
1298
+ var _currentElement_children;
1299
+ if (currentElement.type === 'text') {
1300
+ return {
1301
+ text: currentElement.value
1302
+ };
1303
+ }
1304
+ var leaf = {};
1305
+ applyInlineFormatting(leaf, currentElement);
1306
+ applyHtmlTagsToElement(leaf, htmlTag);
1307
+ if (currentElement === null || currentElement === void 0 ? void 0 : (_currentElement_children = currentElement.children) === null || _currentElement_children === void 0 ? void 0 : _currentElement_children.some(function(n) {
1308
+ return n.type === 'html';
1309
+ })) {
1310
+ var _parseNodes;
1311
+ return _object_spread_props(_object_spread({}, (_parseNodes = parseNodes(currentElement === null || currentElement === void 0 ? void 0 : currentElement.children, plugins, false, currentElement)) === null || _parseNodes === void 0 ? void 0 : _parseNodes.at(0)), {
1312
+ url: leaf.url
1313
+ });
1314
+ } else {
1315
+ var _currentElement_children1;
1316
+ return parseText(((_currentElement_children1 = currentElement.children) === null || _currentElement_children1 === void 0 ? void 0 : _currentElement_children1.length) ? currentElement.children : [
1317
+ {
1318
+ value: (leaf === null || leaf === void 0 ? void 0 : leaf.url) || ''
1319
+ }
1320
+ ], leaf);
1321
+ }
887
1322
  }
888
- const leaf = {};
889
- applyInlineFormatting(leaf, currentElement);
890
- applyHtmlTagsToElement(leaf, htmlTag);
891
- if ((_a = currentElement == null ? void 0 : currentElement.children) == null ? void 0 : _a.some((n) => n.type === "html")) {
892
- return __spreadProps(__spreadValues({}, (_b = parseNodes(
893
- currentElement == null ? void 0 : currentElement.children,
894
- plugins,
895
- false,
896
- currentElement
897
- )) == null ? void 0 : _b.at(0)), {
898
- url: leaf.url
899
- });
900
- } else {
901
- return parseText(
902
- ((_c = currentElement.children) == null ? void 0 : _c.length) ? currentElement.children : [{ value: (leaf == null ? void 0 : leaf.url) || "" }],
903
- leaf
904
- );
1323
+ if (currentElement.type === 'break') {
1324
+ return {
1325
+ text: '\n'
1326
+ };
905
1327
  }
906
- }
907
- if (currentElement.type === "break") {
908
- return { text: "\n" };
909
- }
910
- return { text: "" };
1328
+ return {
1329
+ text: ''
1330
+ };
911
1331
  };
912
- var applyInlineFormatting = (leaf, currentElement) => {
913
- if (currentElement.type === "strong")
914
- leaf.bold = true;
915
- if (currentElement.type === "emphasis")
916
- leaf.italic = true;
917
- if (currentElement.type === "delete")
918
- leaf.strikethrough = true;
919
- if (currentElement.type === "link") {
920
- try {
921
- leaf.url = currentElement == null ? void 0 : currentElement.url;
922
- } catch (error) {
923
- leaf.url = currentElement == null ? void 0 : currentElement.url;
1332
+ /**
1333
+ * 应用内联格式到叶子节点
1334
+ * @param leaf - 目标叶子节点对象
1335
+ * @param currentElement - 当前处理的元素,包含格式信息
1336
+ */ var applyInlineFormatting = function(leaf, currentElement) {
1337
+ if (currentElement.type === 'strong') leaf.bold = true;
1338
+ if (currentElement.type === 'emphasis') leaf.italic = true;
1339
+ if (currentElement.type === 'delete') leaf.strikethrough = true;
1340
+ if (currentElement.type === 'link') {
1341
+ try {
1342
+ leaf.url = currentElement === null || currentElement === void 0 ? void 0 : currentElement.url;
1343
+ } catch (error) {
1344
+ leaf.url = currentElement === null || currentElement === void 0 ? void 0 : currentElement.url;
1345
+ }
924
1346
  }
925
- }
926
1347
  };
927
- var applyHtmlTagsToElement = (el, htmlTag) => {
928
- for (let t of htmlTag) {
929
- if (t.tag === "font") {
930
- el.color = t.color;
931
- }
932
- if (t.tag === "sup")
933
- el.identifier = el.text;
934
- if (t.tag === "sub")
935
- el.identifier = el.text;
936
- if (t.tag === "code")
937
- el.code = true;
938
- if (t.tag === "i")
939
- el.italic = true;
940
- if (t.tag === "b" || t.tag === "strong")
941
- el.bold = true;
942
- if (t.tag === "del")
943
- el.strikethrough = true;
944
- if ((t.tag === "span" || t.tag === "font") && t.color)
945
- el.highColor = t.color;
946
- if (t.tag === "a" && (t == null ? void 0 : t.url)) {
947
- el.url = t == null ? void 0 : t.url;
1348
+ /**
1349
+ * 应用HTML标签样式到元素
1350
+ * @param el - 目标元素对象
1351
+ * @param htmlTag - HTML标签数组,包含样式信息
1352
+ */ var applyHtmlTagsToElement = function(el, htmlTag) {
1353
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1354
+ try {
1355
+ for(var _iterator = htmlTag[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1356
+ var t = _step.value;
1357
+ if (t.tag === 'font') {
1358
+ el.color = t.color;
1359
+ }
1360
+ if (t.tag === 'sup') el.identifier = el.text;
1361
+ if (t.tag === 'sub') el.identifier = el.text;
1362
+ if (t.tag === 'code') el.code = true;
1363
+ if (t.tag === 'i') el.italic = true;
1364
+ if (t.tag === 'b' || t.tag === 'strong') el.bold = true;
1365
+ if (t.tag === 'del') el.strikethrough = true;
1366
+ if ((t.tag === 'span' || t.tag === 'font') && t.color) el.highColor = t.color;
1367
+ if (t.tag === 'a' && (t === null || t === void 0 ? void 0 : t.url)) {
1368
+ el.url = t === null || t === void 0 ? void 0 : t.url;
1369
+ }
1370
+ }
1371
+ } catch (err) {
1372
+ _didIteratorError = true;
1373
+ _iteratorError = err;
1374
+ } finally{
1375
+ try {
1376
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1377
+ _iterator.return();
1378
+ }
1379
+ } finally{
1380
+ if (_didIteratorError) {
1381
+ throw _iteratorError;
1382
+ }
1383
+ }
948
1384
  }
949
- }
950
1385
  };
951
- var applyContextPropsAndConfig = (el, contextProps, config) => {
952
- if (Array.isArray(el)) {
953
- return el.map((item) => {
954
- if (Object.keys(contextProps || {}).length) {
955
- item.contextProps = contextProps;
956
- }
957
- if (Object.keys(config || {}).length && !item.otherProps) {
958
- item.otherProps = config;
959
- }
960
- return item;
961
- });
962
- } else {
963
- if (Object.keys(contextProps || {}).length) {
964
- el.contextProps = contextProps;
965
- }
966
- if (Object.keys(config || {}).length && !el.otherProps) {
967
- el.otherProps = config;
1386
+ /**
1387
+ * 应用上下文属性和配置到元素
1388
+ * @param el - 目标元素或元素数组
1389
+ * @param contextProps - 上下文属性对象
1390
+ * @param config - 配置对象
1391
+ * @returns 返回应用了属性和配置的元素
1392
+ */ var applyContextPropsAndConfig = function(el, contextProps, config) {
1393
+ if (Array.isArray(el)) {
1394
+ return el.map(function(item) {
1395
+ if (Object.keys(contextProps || {}).length) {
1396
+ item.contextProps = contextProps;
1397
+ }
1398
+ if (Object.keys(config || {}).length && !item.otherProps) {
1399
+ item.otherProps = config;
1400
+ }
1401
+ return item;
1402
+ });
1403
+ } else {
1404
+ if (Object.keys(contextProps || {}).length) {
1405
+ el.contextProps = contextProps;
1406
+ }
1407
+ if (Object.keys(config || {}).length && !el.otherProps) {
1408
+ el.otherProps = config;
1409
+ }
1410
+ return el;
968
1411
  }
969
- return el;
970
- }
971
1412
  };
972
- var addEmptyLinesIfNeeded = (els, preNode, currentElement, top) => {
973
- var _a, _b;
974
- if (preNode && top) {
975
- const distance = (((_a = currentElement.position) == null ? void 0 : _a.start.line) || 0) - (((_b = preNode.position) == null ? void 0 : _b.end.line) || 0);
976
- if (distance >= EMPTY_LINE_DISTANCE_THRESHOLD) {
977
- const lines = Math.floor(
978
- (distance - EMPTY_LINE_CALCULATION_OFFSET) / EMPTY_LINE_DIVISOR
979
- );
980
- Array.from(new Array(lines)).forEach(() => {
981
- els.push({ type: "paragraph", children: [{ text: "" }] });
982
- });
1413
+ /**
1414
+ * 根据行间距添加空行元素
1415
+ * @param els - 目标元素数组
1416
+ * @param preNode - 前一个节点
1417
+ * @param currentElement - 当前处理的元素
1418
+ * @param top - 是否为顶级解析
1419
+ */ var addEmptyLinesIfNeeded = function(els, preNode, currentElement, top) {
1420
+ if (preNode && top) {
1421
+ var _currentElement_position, _preNode_position;
1422
+ var distance = (((_currentElement_position = currentElement.position) === null || _currentElement_position === void 0 ? void 0 : _currentElement_position.start.line) || 0) - (((_preNode_position = preNode.position) === null || _preNode_position === void 0 ? void 0 : _preNode_position.end.line) || 0);
1423
+ if (distance >= EMPTY_LINE_DISTANCE_THRESHOLD) {
1424
+ var lines = Math.floor((distance - EMPTY_LINE_CALCULATION_OFFSET) / EMPTY_LINE_DIVISOR);
1425
+ Array.from(new Array(lines)).forEach(function() {
1426
+ els.push({
1427
+ type: 'paragraph',
1428
+ children: [
1429
+ {
1430
+ text: ''
1431
+ }
1432
+ ]
1433
+ });
1434
+ });
1435
+ }
983
1436
  }
984
- }
985
1437
  };
986
- var elementHandlers = {
987
- heading: { handler: (el, plugins) => handleHeading(el, plugins) },
988
- html: { handler: () => null, needsHtmlResult: true },
989
- image: { handler: (el) => handleImage(el) },
990
- inlineMath: { handler: (el) => handleInlineMath(el) },
991
- math: { handler: (el) => handleMath(el) },
992
- list: { handler: (el, plugins) => handleList(el, plugins) },
993
- footnoteReference: { handler: (el) => handleFootnoteReference(el) },
994
- footnoteDefinition: {
995
- handler: (el, plugins) => handleFootnoteDefinition(el, plugins)
996
- },
997
- listItem: { handler: (el, plugins) => handleListItem(el, plugins) },
998
- paragraph: {
999
- handler: (el, plugins, config) => handleParagraph(el, config, plugins)
1000
- },
1001
- inlineCode: { handler: (el) => handleInlineCode(el) },
1002
- thematicBreak: { handler: () => handleThematicBreak() },
1003
- code: { handler: (el) => handleCode(el) },
1004
- yaml: { handler: (el) => handleYaml(el) },
1005
- blockquote: { handler: (el, plugins) => handleBlockquote(el, plugins) },
1006
- table: {
1007
- handler: (el, plugins, config, parent, htmlTag, preElement) => parseTableOrChart(el, preElement, plugins)
1008
- },
1009
- definition: { handler: (el) => handleDefinition(el) }
1438
+ /**
1439
+ * 元素处理器映射表
1440
+ */ var elementHandlers = {
1441
+ heading: {
1442
+ handler: function(el, plugins) {
1443
+ return handleHeading(el, plugins);
1444
+ }
1445
+ },
1446
+ html: {
1447
+ handler: function() {
1448
+ return null;
1449
+ },
1450
+ needsHtmlResult: true
1451
+ },
1452
+ image: {
1453
+ handler: function(el) {
1454
+ return handleImage(el);
1455
+ }
1456
+ },
1457
+ inlineMath: {
1458
+ handler: function(el) {
1459
+ return handleInlineMath(el);
1460
+ }
1461
+ },
1462
+ math: {
1463
+ handler: function(el) {
1464
+ return handleMath(el);
1465
+ }
1466
+ },
1467
+ list: {
1468
+ handler: function(el, plugins) {
1469
+ return handleList(el, plugins);
1470
+ }
1471
+ },
1472
+ footnoteReference: {
1473
+ handler: function(el) {
1474
+ return handleFootnoteReference(el);
1475
+ }
1476
+ },
1477
+ footnoteDefinition: {
1478
+ handler: function(el, plugins) {
1479
+ return handleFootnoteDefinition(el, plugins);
1480
+ }
1481
+ },
1482
+ listItem: {
1483
+ handler: function(el, plugins) {
1484
+ return handleListItem(el, plugins);
1485
+ }
1486
+ },
1487
+ paragraph: {
1488
+ handler: function(el, plugins, config) {
1489
+ return handleParagraph(el, config, plugins);
1490
+ }
1491
+ },
1492
+ inlineCode: {
1493
+ handler: function(el) {
1494
+ return handleInlineCode(el);
1495
+ }
1496
+ },
1497
+ thematicBreak: {
1498
+ handler: function() {
1499
+ return handleThematicBreak();
1500
+ }
1501
+ },
1502
+ code: {
1503
+ handler: function(el) {
1504
+ return handleCode(el);
1505
+ }
1506
+ },
1507
+ yaml: {
1508
+ handler: function(el) {
1509
+ return handleYaml(el);
1510
+ }
1511
+ },
1512
+ blockquote: {
1513
+ handler: function(el, plugins) {
1514
+ return handleBlockquote(el, plugins);
1515
+ }
1516
+ },
1517
+ table: {
1518
+ handler: function(el, plugins, config, parent, htmlTag, preElement) {
1519
+ return parseTableOrChart(el, preElement, plugins);
1520
+ }
1521
+ },
1522
+ definition: {
1523
+ handler: function(el) {
1524
+ return handleDefinition(el);
1525
+ }
1526
+ }
1010
1527
  };
1011
- var handleSingleElement = (currentElement, config, plugins, parent, htmlTag, preElement) => {
1012
- const elementType = currentElement.type;
1013
- const handlerInfo = elementHandlers[elementType];
1014
- if (handlerInfo == null ? void 0 : handlerInfo.needsHtmlResult) {
1015
- const htmlResult = handleHtml(currentElement, parent, htmlTag);
1016
- return {
1017
- el: htmlResult.el,
1018
- contextProps: htmlResult.contextProps
1019
- };
1020
- }
1021
- if (handlerInfo) {
1528
+ /**
1529
+ * 处理单个元素
1530
+ */ var handleSingleElement = function(currentElement, config, plugins, parent, htmlTag, preElement) {
1531
+ var elementType = currentElement.type;
1532
+ var handlerInfo = elementHandlers[elementType];
1533
+ // 特殊处理 html 类型
1534
+ if (handlerInfo === null || handlerInfo === void 0 ? void 0 : handlerInfo.needsHtmlResult) {
1535
+ var htmlResult = handleHtml(currentElement, parent, htmlTag);
1536
+ return {
1537
+ el: htmlResult.el,
1538
+ contextProps: htmlResult.contextProps
1539
+ };
1540
+ }
1541
+ // 使用处理器映射表
1542
+ if (handlerInfo) {
1543
+ return {
1544
+ el: handlerInfo.handler(currentElement, plugins || [], config, parent, htmlTag, preElement)
1545
+ };
1546
+ }
1547
+ // 默认处理
1022
1548
  return {
1023
- el: handlerInfo.handler(
1024
- currentElement,
1025
- plugins || [],
1026
- config,
1027
- parent,
1028
- htmlTag,
1029
- preElement
1030
- )
1549
+ el: handleTextAndInlineElements(currentElement, htmlTag, plugins || [])
1031
1550
  };
1032
- }
1033
- return {
1034
- el: handleTextAndInlineElements(currentElement, htmlTag, plugins || [])
1035
- };
1036
1551
  };
1037
- var parseNodes = (nodes, plugins, top = false, parent) => {
1038
- var _a;
1039
- if (!(nodes == null ? void 0 : nodes.length))
1040
- return [{ type: "paragraph", children: [{ text: "" }] }];
1041
- let els = [];
1042
- let preNode = null;
1043
- let preElement = null;
1044
- let htmlTag = [];
1045
- let contextProps = {};
1046
- for (let i = 0; i < nodes.length; i++) {
1047
- const currentElement = nodes[i];
1048
- let el = null;
1049
- let pluginHandled = false;
1050
- const config = (preElement == null ? void 0 : preElement.type) === "code" && (preElement == null ? void 0 : preElement.language) === "html" && (preElement == null ? void 0 : preElement.otherProps) ? preElement == null ? void 0 : preElement.otherProps : {};
1051
- for (const plugin of plugins) {
1052
- const rule = (_a = plugin.parseMarkdown) == null ? void 0 : _a.find((r) => r.match(currentElement));
1053
- if (rule) {
1054
- const converted = rule.convert(currentElement);
1055
- if (Array.isArray(converted) && converted.length === 2) {
1056
- el = converted[0];
1057
- } else {
1058
- el = converted;
1552
+ /**
1553
+ * 解析Markdown节点块为Slate节点数组
1554
+ * 这是核心的解析函数,负责将各种类型的Markdown节点转换为对应的Slate编辑器节点
1555
+ *
1556
+ * @param nodes - 要解析的Markdown节点数组
1557
+ * @param top - 是否为顶级解析,影响空行处理逻辑
1558
+ * @param parent - 父级节点,用于上下文判断
1559
+ * @returns 返回解析后的Slate节点数组
1560
+ *
1561
+ * @example
1562
+ * ```typescript
1563
+ * const markdownNodes = [
1564
+ * { type: 'heading', depth: 1, children: [...] },
1565
+ * { type: 'paragraph', children: [...] }
1566
+ * ];
1567
+ * const slateNodes = parseNodes(markdownNodes, true);
1568
+ * ```
1569
+ */ /**
1570
+ * 解析 Markdown AST 节点为 Slate 节点
1571
+ * - 当有插件时,优先使用插件处理
1572
+ * - 插件未处理时,使用默认处理逻辑
1573
+ */ var parseNodes = function(nodes, plugins) {
1574
+ var _loop = function(i) {
1575
+ var currentElement = nodes[i];
1576
+ var el = null;
1577
+ var pluginHandled = false;
1578
+ var config = (preElement === null || preElement === void 0 ? void 0 : preElement.type) === 'code' && (preElement === null || preElement === void 0 ? void 0 : preElement.language) === 'html' && (preElement === null || preElement === void 0 ? void 0 : preElement.otherProps) ? preElement === null || preElement === void 0 ? void 0 : preElement.otherProps : {};
1579
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1580
+ try {
1581
+ // 首先尝试使用插件处理
1582
+ for(var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1583
+ var plugin = _step.value;
1584
+ var _plugin_parseMarkdown;
1585
+ var rule = (_plugin_parseMarkdown = plugin.parseMarkdown) === null || _plugin_parseMarkdown === void 0 ? void 0 : _plugin_parseMarkdown.find(function(r) {
1586
+ return r.match(currentElement);
1587
+ });
1588
+ if (rule) {
1589
+ var converted = rule.convert(currentElement);
1590
+ // 检查转换结果是否为 NodeEntry<Text> 格式
1591
+ if (Array.isArray(converted) && converted.length === 2) {
1592
+ // NodeEntry<Text> 格式: [node, path]
1593
+ el = converted[0];
1594
+ } else {
1595
+ // Elements 格式
1596
+ el = converted;
1597
+ }
1598
+ pluginHandled = true;
1599
+ break;
1600
+ }
1601
+ }
1602
+ } catch (err) {
1603
+ _didIteratorError = true;
1604
+ _iteratorError = err;
1605
+ } finally{
1606
+ try {
1607
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1608
+ _iterator.return();
1609
+ }
1610
+ } finally{
1611
+ if (_didIteratorError) {
1612
+ throw _iteratorError;
1613
+ }
1614
+ }
1059
1615
  }
1060
- pluginHandled = true;
1061
- break;
1062
- }
1063
- }
1064
- if (!pluginHandled) {
1065
- const result = handleSingleElement(
1066
- currentElement,
1067
- config,
1068
- plugins,
1069
- parent,
1070
- htmlTag,
1071
- preElement
1072
- );
1073
- el = result.el;
1074
- if (result.contextProps) {
1075
- contextProps = __spreadValues(__spreadValues({}, contextProps), result.contextProps);
1076
- }
1077
- }
1078
- addEmptyLinesIfNeeded(els, preNode, currentElement, top);
1079
- if (el) {
1080
- el = applyContextPropsAndConfig(el, contextProps, config);
1081
- Array.isArray(el) ? els.push(...el) : els.push(el);
1082
- }
1083
- preNode = currentElement;
1084
- preElement = el;
1085
- }
1086
- return els;
1616
+ // 如果插件没有处理,使用默认处理逻辑
1617
+ if (!pluginHandled) {
1618
+ // 使用统一的处理函数
1619
+ var result = handleSingleElement(currentElement, config, plugins, parent, htmlTag, preElement);
1620
+ el = result.el;
1621
+ if (result.contextProps) {
1622
+ contextProps = _object_spread({}, contextProps, result.contextProps);
1623
+ }
1624
+ }
1625
+ addEmptyLinesIfNeeded(els, preNode, currentElement, top);
1626
+ if (el) {
1627
+ var _els;
1628
+ el = applyContextPropsAndConfig(el, contextProps, config);
1629
+ Array.isArray(el) ? (_els = els).push.apply(_els, _to_consumable_array(el)) : els.push(el);
1630
+ }
1631
+ preNode = currentElement;
1632
+ preElement = el;
1633
+ };
1634
+ var top = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, parent = arguments.length > 3 ? arguments[3] : void 0;
1635
+ if (!(nodes === null || nodes === void 0 ? void 0 : nodes.length)) return [
1636
+ {
1637
+ type: 'paragraph',
1638
+ children: [
1639
+ {
1640
+ text: ''
1641
+ }
1642
+ ]
1643
+ }
1644
+ ];
1645
+ var els = [];
1646
+ var preNode = null;
1647
+ var preElement = null;
1648
+ var htmlTag = [];
1649
+ var contextProps = {};
1650
+ for(var i = 0; i < nodes.length; i++)_loop(i);
1651
+ return els;
1087
1652
  };
1088
1653
  var tableRegex = /^\|.*\|\s*\n\|[-:| ]+\|/m;
1089
- var STANDARD_HTML_ELEMENTS = /* @__PURE__ */ new Set([
1090
- // 文档结构
1091
- "html",
1092
- "head",
1093
- "body",
1094
- "title",
1095
- "meta",
1096
- "link",
1097
- "style",
1098
- "script",
1099
- // 内容分区
1100
- "header",
1101
- "nav",
1102
- "main",
1103
- "section",
1104
- "article",
1105
- "aside",
1106
- "footer",
1107
- "h1",
1108
- "h2",
1109
- "h3",
1110
- "h4",
1111
- "h5",
1112
- "h6",
1113
- // 文本内容
1114
- "div",
1115
- "p",
1116
- "hr",
1117
- "pre",
1118
- "blockquote",
1119
- // 列表
1120
- "ul",
1121
- "ol",
1122
- "li",
1123
- "dl",
1124
- "dt",
1125
- "dd",
1126
- // 表格
1127
- "table",
1128
- "thead",
1129
- "tbody",
1130
- "tfoot",
1131
- "tr",
1132
- "th",
1133
- "td",
1134
- "caption",
1135
- "colgroup",
1136
- "col",
1137
- // 表单
1138
- "form",
1139
- "input",
1140
- "textarea",
1141
- "button",
1142
- "select",
1143
- "option",
1144
- "label",
1145
- "fieldset",
1146
- "legend",
1147
- // 内联文本语义
1148
- "a",
1149
- "em",
1150
- "strong",
1151
- "small",
1152
- "mark",
1153
- "del",
1154
- "ins",
1155
- "sub",
1156
- "sup",
1157
- "i",
1158
- "b",
1159
- "u",
1160
- "s",
1161
- "code",
1162
- "kbd",
1163
- "samp",
1164
- "var",
1165
- "span",
1166
- "br",
1167
- "wbr",
1168
- // 图片和多媒体
1169
- "img",
1170
- "video",
1171
- "audio",
1172
- "source",
1173
- "track",
1174
- "iframe",
1175
- "embed",
1176
- "object",
1177
- "param",
1178
- "picture",
1179
- // 其他
1180
- "canvas",
1181
- "svg",
1182
- "math",
1183
- "details",
1184
- "summary",
1185
- "dialog",
1186
- "menu",
1187
- "menuitem",
1188
- // 字体
1189
- "font"
1654
+ /**
1655
+ * 标准 HTML 元素列表
1656
+ * 这些标签会被正常解析为 HTML,其他标签会被当作普通文本处理
1657
+ */ var STANDARD_HTML_ELEMENTS = new Set([
1658
+ // 文档结构
1659
+ 'html',
1660
+ 'head',
1661
+ 'body',
1662
+ 'title',
1663
+ 'meta',
1664
+ 'link',
1665
+ 'style',
1666
+ 'script',
1667
+ // 内容分区
1668
+ 'header',
1669
+ 'nav',
1670
+ 'main',
1671
+ 'section',
1672
+ 'article',
1673
+ 'aside',
1674
+ 'footer',
1675
+ 'h1',
1676
+ 'h2',
1677
+ 'h3',
1678
+ 'h4',
1679
+ 'h5',
1680
+ 'h6',
1681
+ // 文本内容
1682
+ 'div',
1683
+ 'p',
1684
+ 'hr',
1685
+ 'pre',
1686
+ 'blockquote',
1687
+ // 列表
1688
+ 'ul',
1689
+ 'ol',
1690
+ 'li',
1691
+ 'dl',
1692
+ 'dt',
1693
+ 'dd',
1694
+ // 表格
1695
+ 'table',
1696
+ 'thead',
1697
+ 'tbody',
1698
+ 'tfoot',
1699
+ 'tr',
1700
+ 'th',
1701
+ 'td',
1702
+ 'caption',
1703
+ 'colgroup',
1704
+ 'col',
1705
+ // 表单
1706
+ 'form',
1707
+ 'input',
1708
+ 'textarea',
1709
+ 'button',
1710
+ 'select',
1711
+ 'option',
1712
+ 'label',
1713
+ 'fieldset',
1714
+ 'legend',
1715
+ // 内联文本语义
1716
+ 'a',
1717
+ 'em',
1718
+ 'strong',
1719
+ 'small',
1720
+ 'mark',
1721
+ 'del',
1722
+ 'ins',
1723
+ 'sub',
1724
+ 'sup',
1725
+ 'i',
1726
+ 'b',
1727
+ 'u',
1728
+ 's',
1729
+ 'code',
1730
+ 'kbd',
1731
+ 'samp',
1732
+ 'var',
1733
+ 'span',
1734
+ 'br',
1735
+ 'wbr',
1736
+ // 图片和多媒体
1737
+ 'img',
1738
+ 'video',
1739
+ 'audio',
1740
+ 'source',
1741
+ 'track',
1742
+ 'iframe',
1743
+ 'embed',
1744
+ 'object',
1745
+ 'param',
1746
+ 'picture',
1747
+ // 其他
1748
+ 'canvas',
1749
+ 'svg',
1750
+ 'math',
1751
+ 'details',
1752
+ 'summary',
1753
+ 'dialog',
1754
+ 'menu',
1755
+ 'menuitem',
1756
+ // 字体
1757
+ 'font'
1190
1758
  ]);
1191
- function isStandardHtmlElement(htmlString) {
1192
- const tagMatch = htmlString.match(/<\/?(\w+)/);
1193
- if (!tagMatch)
1194
- return false;
1195
- const tagName = tagMatch[1].toLowerCase();
1196
- return STANDARD_HTML_ELEMENTS.has(tagName);
1759
+ /**
1760
+ * 检查 HTML 标签是否为标准元素
1761
+ * @param htmlString - HTML 字符串
1762
+ * @returns 是否为标准 HTML 元素
1763
+ */ function isStandardHtmlElement(htmlString) {
1764
+ // 提取标签名(支持开始标签和结束标签)
1765
+ var tagMatch = htmlString.match(/<\/?(\w+)/);
1766
+ if (!tagMatch) return false;
1767
+ var tagName = tagMatch[1].toLowerCase();
1768
+ return STANDARD_HTML_ELEMENTS.has(tagName);
1197
1769
  }
1198
- function preprocessSpecialTags(markdown, tagName) {
1199
- const tagRegex = new RegExp(`<${tagName}>([\\s\\S]*?)<\\/${tagName}>`, "g");
1200
- return markdown == null ? void 0 : markdown.replace(tagRegex, (match, content) => {
1201
- const trimmedContent = content.trim();
1202
- const processedContent = trimmedContent == null ? void 0 : trimmedContent.replace(
1203
- /```(\w*)\n?([\s\S]*?)```/g,
1204
- (_, lang, code) => {
1205
- const marker = "​";
1206
- return `${marker}【CODE_BLOCK:${lang || ""}】
1207
- ${code}
1208
- 【/CODE_BLOCK】${marker}`;
1209
- }
1210
- );
1211
- return `\`\`\`${tagName}
1212
- ${processedContent}
1213
- \`\`\``;
1214
- });
1770
+ /**
1771
+ * 预处理特殊标签(think/answer),将其转换为代码块格式
1772
+ * @param markdown - 原始 Markdown 字符串
1773
+ * @param tagName - 标签名称(think 或 answer)
1774
+ * @returns 处理后的 Markdown 字符串
1775
+ */ function preprocessSpecialTags(markdown, tagName) {
1776
+ var tagRegex = new RegExp("<".concat(tagName, ">([\\s\\S]*?)<\\/").concat(tagName, ">"), 'g');
1777
+ return markdown === null || markdown === void 0 ? void 0 : markdown.replace(tagRegex, function(match, content) {
1778
+ var trimmedContent = content.trim();
1779
+ // 如果内容中包含代码块标记(三个反引号),需要进行转义
1780
+ // 策略:使用特殊标记替换代码块,保持原始格式
1781
+ var processedContent = trimmedContent === null || trimmedContent === void 0 ? void 0 : trimmedContent.replace(/```(\w*)\n?([\s\S]*?)```/g, function(_, lang, code) {
1782
+ // 使用特殊标记包裹,保留语言和代码内容
1783
+ // 格式:【CODE_BLOCK:lang】code【/CODE_BLOCK】
1784
+ var marker = '\u200B'; // 零宽空格,用于标记
1785
+ return "".concat(marker, "【CODE_BLOCK:").concat(lang || '', "】\n").concat(code, "\n【/CODE_BLOCK】").concat(marker);
1786
+ });
1787
+ // 构建对应类型的代码块
1788
+ return "```".concat(tagName, "\n").concat(processedContent, "\n```");
1789
+ });
1215
1790
  }
1216
- function preprocessThinkTags(markdown) {
1217
- return preprocessSpecialTags(markdown, "think");
1791
+ /**
1792
+ * 预处理 <think> 标签,将其转换为 ```think 代码块格式
1793
+ * @param markdown - 原始 Markdown 字符串
1794
+ * @returns 处理后的 Markdown 字符串
1795
+ */ function preprocessThinkTags(markdown) {
1796
+ return preprocessSpecialTags(markdown, 'think');
1218
1797
  }
1219
- function preprocessNonStandardHtmlTags(markdown) {
1220
- let result = markdown;
1221
- let hasNonStandardTags = true;
1222
- while (hasNonStandardTags) {
1223
- const before = result;
1224
- result = result.replace(
1225
- /<(\w+)>([\s\S]*?)<\/\1>/g,
1226
- (match, tagName, content) => {
1227
- if (STANDARD_HTML_ELEMENTS.has(tagName.toLowerCase())) {
1228
- return match;
1229
- }
1230
- return content;
1231
- }
1232
- );
1233
- hasNonStandardTags = before !== result;
1234
- }
1235
- return result;
1798
+ /**
1799
+ * 预处理所有非标准 HTML 标签,提取其内容(删除标签本身)
1800
+ * @param markdown - 原始 Markdown 字符串
1801
+ * @returns 处理后的 Markdown 字符串
1802
+ */ function preprocessNonStandardHtmlTags(markdown) {
1803
+ var result = markdown;
1804
+ var hasNonStandardTags = true;
1805
+ // 循环处理,直到没有非标准标签(处理嵌套情况)
1806
+ while(hasNonStandardTags){
1807
+ var before = result;
1808
+ // 匹配所有 HTML 标签对:<tagname>content</tagname>
1809
+ result = result.replace(/<(\w+)>([\s\S]*?)<\/\1>/g, function(match, tagName, content) {
1810
+ // 检查是否为标准 HTML 元素
1811
+ if (STANDARD_HTML_ELEMENTS.has(tagName.toLowerCase())) {
1812
+ // 标准元素保持不变
1813
+ return match;
1814
+ }
1815
+ // 非标准元素只保留内容(不 trim,保持原始格式)
1816
+ return content;
1817
+ });
1818
+ // 如果没有变化,说明处理完成
1819
+ hasNonStandardTags = before !== result;
1820
+ }
1821
+ return result;
1236
1822
  }
1237
1823
  function preprocessMarkdownTableNewlines(markdown) {
1238
- if (!tableRegex.test(markdown))
1239
- return markdown;
1240
- let processedMarkdown = markdown.replace(
1241
- /(\|[^|\n]*\|)\n(?!\n|\|)/g,
1242
- // 匹配表格行后面跟着单个换行符(不是两个),但下一行不是表格行
1243
- "$1\n\n"
1244
- // 替换为两个换行符
1245
- ).replace(
1246
- /(\|[^|\n]*\|)\n{3,}(?!\|)/g,
1247
- // 匹配表格行后面跟着3个或更多换行符,但下一行不是表格行
1248
- "$1\n\n"
1249
- // 替换为两个换行符
1250
- );
1251
- return processedMarkdown == null ? void 0 : processedMarkdown.split("\n\n").map((line) => {
1252
- if (line.includes("```"))
1253
- return line;
1254
- if (!tableRegex.test(line))
1255
- return line;
1256
- return line.replace(/\|([^|]+)\|/g, (match) => {
1257
- var _a;
1258
- if (((_a = match.replaceAll("\n", "")) == null ? void 0 : _a.length) < MIN_TABLE_CELL_LENGTH)
1259
- return match;
1260
- return match.split("\n").join("<br>");
1261
- });
1262
- }).join("\n\n");
1824
+ // 检查是否包含表格
1825
+ if (!tableRegex.test(markdown)) return markdown; // 如果没有表格,直接返回原始字符串
1826
+ // 处理表格结尾的换行符:
1827
+ // 1. 如果只有一个换行符,改成两个
1828
+ // 2. 如果有两个以上换行符,改成两个
1829
+ // 3. 如果已经是两个换行符,保持不变
1830
+ var processedMarkdown = markdown.replace(/(\|[^|\n]*\|)\n(?!\n|\|)/g, '$1\n\n').replace(/(\|[^|\n]*\|)\n{3,}(?!\|)/g, '$1\n\n');
1831
+ // 如果包含表格,处理换行符
1832
+ return processedMarkdown === null || processedMarkdown === void 0 ? void 0 : processedMarkdown.split('\n\n').map(function(line) {
1833
+ if (line.includes('```')) return line; // 如果包含代码块,直接返回原始字符串
1834
+ // 检查是否包含表格
1835
+ if (!tableRegex.test(line)) return line; // 如果没有表格,直接返回原始字符串
1836
+ // 匹配所有表格的行(确保我们在表格行内匹配换行符)
1837
+ return line.replace(/\|([^|]+)\|/g, function(match) {
1838
+ var _match_replaceAll;
1839
+ if (((_match_replaceAll = match.replaceAll('\n', '')) === null || _match_replaceAll === void 0 ? void 0 : _match_replaceAll.length) < MIN_TABLE_CELL_LENGTH) return match;
1840
+ // 只替换每个表格单元格内的换行符
1841
+ return match.split('\n').join('<br>');
1842
+ });
1843
+ }).join('\n\n');
1263
1844
  }
1264
- var parserMarkdownToSlateNode = (md, plugins) => {
1265
- const thinkProcessed = preprocessThinkTags(md || "");
1266
- const nonStandardProcessed = preprocessNonStandardHtmlTags(thinkProcessed);
1267
- const processedMarkdown = mdastParser.parse(
1268
- preprocessMarkdownTableNewlines(nonStandardProcessed)
1269
- );
1270
- const markdownRoot = processedMarkdown.children;
1271
- const pluginList = plugins || [];
1272
- const schema = parseNodes(markdownRoot, pluginList, true);
1273
- return {
1274
- schema: schema == null ? void 0 : schema.filter((item) => {
1275
- var _a;
1276
- if (item.type === "paragraph" && ((_a = item.children) == null ? void 0 : _a.length) === 1) {
1277
- if (item.children[0].text === "\n") {
1278
- return false;
1279
- }
1280
- return true;
1281
- }
1282
- return true;
1283
- }),
1284
- links: []
1285
- };
1286
- };
1287
- export {
1288
- decodeURIComponentUrl,
1289
- parserMarkdownToSlateNode
1845
+ /**
1846
+ * 解析Markdown字符串并返回解析后的结构和链接信息。
1847
+ *
1848
+ * @param md - 要解析的Markdown字符串。
1849
+ * @param plugins - 可选的Markdown编辑器插件数组,用于扩展解析功能。
1850
+ * @returns 一个包含解析后的元素数组和链接信息的对象。
1851
+ *
1852
+ * @property schema - 解析后的元素数组。
1853
+ * @property links - 包含路径和目标链接的对象数组。
1854
+ */ export var parserMarkdownToSlateNode = function(md, plugins) {
1855
+ // 先预处理 <think> 标签,再预处理其他非标准 HTML 标签,最后处理表格换行
1856
+ var thinkProcessed = preprocessThinkTags(md || '');
1857
+ var nonStandardProcessed = preprocessNonStandardHtmlTags(thinkProcessed);
1858
+ var processedMarkdown = mdastParser.parse(preprocessMarkdownTableNewlines(nonStandardProcessed));
1859
+ var markdownRoot = processedMarkdown.children;
1860
+ var pluginList = plugins || [];
1861
+ var schema = parseNodes(markdownRoot, pluginList, true);
1862
+ return {
1863
+ schema: schema === null || schema === void 0 ? void 0 : schema.filter(function(item) {
1864
+ var _item_children;
1865
+ if (item.type === 'paragraph' && ((_item_children = item.children) === null || _item_children === void 0 ? void 0 : _item_children.length) === 1) {
1866
+ if (item.children[0].text === '\n') {
1867
+ return false;
1868
+ }
1869
+ return true;
1870
+ }
1871
+ return true;
1872
+ }),
1873
+ links: []
1874
+ };
1290
1875
  };