@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.
- package/dist/AgentRunBar/Robot.js +105 -57
- package/dist/AgentRunBar/icons/PauseIcon.js +38 -38
- package/dist/AgentRunBar/icons/PlayIcon.js +38 -38
- package/dist/AgentRunBar/icons/SimplePauseIcon.js +38 -38
- package/dist/AgentRunBar/icons/SimplePlayIcon.js +38 -38
- package/dist/AgentRunBar/icons/SimpleStopIcon.js +38 -38
- package/dist/AgentRunBar/icons/StopIcon.js +41 -50
- package/dist/AgentRunBar/icons/index.js +0 -1
- package/dist/AgentRunBar/index.js +270 -237
- package/dist/AgentRunBar/style.js +273 -239
- package/dist/AgenticLayout/index.js +140 -85
- package/dist/AgenticLayout/style.js +126 -107
- package/dist/AnswerAlert/components/CloseIcon.js +12 -21
- package/dist/AnswerAlert/components/ErrorIcon.js +42 -38
- package/dist/AnswerAlert/components/InfoIcon.js +42 -38
- package/dist/AnswerAlert/components/LoaderIcon.js +12 -21
- package/dist/AnswerAlert/components/SuccessIcon.js +42 -38
- package/dist/AnswerAlert/components/WarningIcon.js +42 -38
- package/dist/AnswerAlert/index.js +155 -75
- package/dist/AnswerAlert/style.js +159 -147
- package/dist/BackTo/BackBottom.js +154 -70
- package/dist/BackTo/BackTop.js +148 -68
- package/dist/BackTo/ScrollVisibleButton.js +124 -98
- package/dist/BackTo/hooks/useScrollVisible.js +79 -33
- package/dist/BackTo/icons/BottomIcon.js +37 -37
- package/dist/BackTo/icons/TopIcon.js +37 -37
- package/dist/BackTo/index.js +22 -7
- package/dist/BackTo/style.js +93 -70
- package/dist/Bubble/AIBubble.js +469 -406
- package/dist/Bubble/Avatar/index.js +139 -85
- package/dist/Bubble/Avatar/isEmoji.js +2 -6
- package/dist/Bubble/Bubble.js +114 -38
- package/dist/Bubble/BubbleBeforeNode.js +104 -74
- package/dist/Bubble/BubbleConfigProvide.js +3 -7
- package/dist/Bubble/FileView.js +63 -69
- package/dist/Bubble/List/PureBubbleList.js +130 -131
- package/dist/Bubble/List/SkeletonList.js +33 -24
- package/dist/Bubble/List/index.js +187 -124
- package/dist/Bubble/List/style.js +76 -47
- package/dist/Bubble/MessagesContent/BubbleContext.js +6 -12
- package/dist/Bubble/MessagesContent/BubbleExtra.js +663 -355
- package/dist/Bubble/MessagesContent/CopyButton/index.js +326 -96
- package/dist/Bubble/MessagesContent/DocInfo.js +351 -386
- package/dist/Bubble/MessagesContent/EXCEPTION.js +42 -22
- package/dist/Bubble/MessagesContent/MarkdownPreview.js +206 -156
- package/dist/Bubble/MessagesContent/VoiceButton/index.js +213 -115
- package/dist/Bubble/MessagesContent/VoiceButton/style.js +129 -105
- package/dist/Bubble/MessagesContent/VoiceButton/types.js +9 -0
- package/dist/Bubble/MessagesContent/docInfoStyle.js +118 -88
- package/dist/Bubble/MessagesContent/icons.js +157 -57
- package/dist/Bubble/MessagesContent/index.js +609 -368
- package/dist/Bubble/PureBubble.js +439 -326
- package/dist/Bubble/Title.js +110 -87
- package/dist/Bubble/UserBubble.js +218 -279
- package/dist/Bubble/index.js +10 -16
- package/dist/Bubble/style.js +248 -227
- package/dist/Bubble/type.js +3 -0
- package/dist/Bubble/types/BubbleExtra.js +1 -0
- package/dist/Bubble/types/DocInfo.js +1 -0
- package/dist/ChatBootPage/ButtonTab.js +25 -45
- package/dist/ChatBootPage/ButtonTabGroup.js +74 -47
- package/dist/ChatBootPage/ButtonTabGroupStyle.js +73 -45
- package/dist/ChatBootPage/ButtonTabStyle.js +121 -98
- package/dist/ChatBootPage/CaseReply.js +119 -113
- package/dist/ChatBootPage/CaseReplyStyle.js +217 -189
- package/dist/ChatBootPage/Title.js +19 -23
- package/dist/ChatBootPage/index.js +9 -11
- package/dist/ChatBootPage/style.js +80 -50
- package/dist/ChatLayout/index.js +93 -57
- package/dist/ChatLayout/style.js +206 -176
- package/dist/ChatLayout/types.js +1 -0
- package/dist/Components/ActionIconBox/index.js +571 -197
- package/dist/Components/ActionIconBox/style.js +141 -111
- package/dist/Components/ActionItemBox/ActionItemBox.js +95 -149
- package/dist/Components/ActionItemBox/index.js +7 -7
- package/dist/Components/ActionItemBox/style.js +353 -361
- package/dist/Components/Button/IconButton/index.js +35 -43
- package/dist/Components/Button/IconButton/style.js +357 -331
- package/dist/Components/Button/SwitchButton/index.js +243 -87
- package/dist/Components/Button/SwitchButton/style.js +160 -146
- package/dist/Components/Button/ToggleButton/index.js +46 -57
- package/dist/Components/Button/ToggleButton/style.js +283 -258
- package/dist/Components/Button/index.js +6 -2
- package/dist/Components/GradientText/index.js +21 -27
- package/dist/Components/GradientText/style.js +88 -63
- package/dist/Components/ImageList.js +111 -133
- package/dist/Components/LayoutHeader/index.js +145 -81
- package/dist/Components/LayoutHeader/style.js +89 -64
- package/dist/Components/LayoutHeader/types.js +3 -0
- package/dist/Components/Loading/index.js +53 -22
- package/dist/Components/Robot/index.js +90 -56
- package/dist/Components/Robot/lotties/DazingLottie/index.js +78 -47
- package/dist/Components/Robot/lotties/ThinkingLottie/index.js +78 -47
- package/dist/Components/Robot/lotties/index.js +0 -1
- package/dist/Components/SuggestionList/index.js +354 -182
- package/dist/Components/SuggestionList/style.js +204 -186
- package/dist/Components/TextAnimate/index.js +494 -362
- package/dist/Components/TextAnimate/style.js +72 -48
- package/dist/Components/TypingAnimation/index.js +214 -169
- package/dist/Components/TypingAnimation/style.js +76 -52
- package/dist/Components/VisualList/index.js +267 -180
- package/dist/Components/VisualList/style.js +140 -124
- package/dist/Components/icons/LoadingSpinnerIcon.js +124 -73
- package/dist/Components/lotties/DazingLottie/index.js +78 -47
- package/dist/Components/lotties/LoadingLottie/index.js +82 -48
- package/dist/Components/lotties/TextLoading/index.js +73 -49
- package/dist/Components/lotties/TextLoading/style.js +95 -78
- package/dist/Components/lotties/ThinkingLottie/index.js +78 -47
- package/dist/Components/lotties/index.js +0 -1
- package/dist/Constants/colors.js +71 -97
- package/dist/History/components/HistoryActionsBox.js +407 -180
- package/dist/History/components/HistoryEmpty.js +38 -42
- package/dist/History/components/HistoryEmptyIcon.js +682 -964
- package/dist/History/components/HistoryItem.js +683 -471
- package/dist/History/components/HistoryList.js +170 -87
- package/dist/History/components/HistoryRunningIcon.js +160 -111
- package/dist/History/components/LoadMoreComponent.js +308 -103
- package/dist/History/components/NewChatComponent.js +261 -69
- package/dist/History/components/NewChatComponent.style.js +79 -53
- package/dist/History/components/SearchComponent.js +367 -156
- package/dist/History/components/index.js +11 -23
- package/dist/History/hooks/useHistory.js +404 -129
- package/dist/History/index.js +301 -186
- package/dist/History/menu.js +158 -212
- package/dist/History/style.js +282 -276
- package/dist/History/types/HistoryData.js +6 -10
- package/dist/History/types/HistoryList.js +3 -0
- package/dist/History/types/index.js +3 -0
- package/dist/History/utils/index.js +35 -32
- package/dist/Hooks/useAutoScroll.js +262 -84
- package/dist/Hooks/useClickAway.js +60 -21
- package/dist/Hooks/useCopied.js +72 -20
- package/dist/Hooks/useDebounceFn/index.js +213 -55
- package/dist/Hooks/useIntersectionOnce.js +163 -74
- package/dist/Hooks/useLanguage.js +67 -26
- package/dist/Hooks/useRefFunction/index.js +76 -11
- package/dist/Hooks/useSpeechSynthesis.js +143 -99
- package/dist/Hooks/useStyle/index.js +95 -60
- package/dist/Hooks/useThrottleFn/index.js +41 -41
- package/dist/I18n/index.js +246 -109
- package/dist/I18n/locales.js +718 -711
- package/dist/Icons/animated/VoicePlayLottie/index.js +75 -46
- package/dist/Icons/animated/VoicingLottie/index.js +78 -47
- package/dist/MarkdownEditor/BaseMarkdownEditor.js +421 -349
- package/dist/MarkdownEditor/editor/Editor.js +1160 -843
- package/dist/MarkdownEditor/editor/components/CommentList/index.js +407 -239
- package/dist/MarkdownEditor/editor/components/CommentList/style.js +119 -89
- package/dist/MarkdownEditor/editor/components/ContributorAvatar/index.js +61 -63
- package/dist/MarkdownEditor/editor/components/ContributorAvatar/style.js +82 -52
- package/dist/MarkdownEditor/editor/components/LazyElement/index.js +208 -106
- package/dist/MarkdownEditor/editor/components/LazyElement/style.js +69 -42
- package/dist/MarkdownEditor/editor/components/fntTag/index.js +7 -11
- package/dist/MarkdownEditor/editor/components/fntTag/style.js +66 -36
- package/dist/MarkdownEditor/editor/components/index.js +0 -1
- package/dist/MarkdownEditor/editor/elements/Blockquote.js +95 -37
- package/dist/MarkdownEditor/editor/elements/Break.js +56 -25
- package/dist/MarkdownEditor/editor/elements/Card/index.js +131 -52
- package/dist/MarkdownEditor/editor/elements/Code.js +89 -67
- package/dist/MarkdownEditor/editor/elements/Comment/index.js +79 -50
- package/dist/MarkdownEditor/editor/elements/ErrorBoundary.js +117 -21
- package/dist/MarkdownEditor/editor/elements/FootnoteDefinition.js +83 -64
- package/dist/MarkdownEditor/editor/elements/FootnoteReference.js +115 -41
- package/dist/MarkdownEditor/editor/elements/Head.js +131 -67
- package/dist/MarkdownEditor/editor/elements/Hr.js +63 -38
- package/dist/MarkdownEditor/editor/elements/Image/index.js +636 -494
- package/dist/MarkdownEditor/editor/elements/InlineKatex.js +60 -44
- package/dist/MarkdownEditor/editor/elements/Katex.js +71 -55
- package/dist/MarkdownEditor/editor/elements/LinkCard/index.js +79 -175
- package/dist/MarkdownEditor/editor/elements/LinkCard/style.js +130 -100
- package/dist/MarkdownEditor/editor/elements/List/List.js +96 -69
- package/dist/MarkdownEditor/editor/elements/List/ListItem.js +422 -247
- package/dist/MarkdownEditor/editor/elements/List/index.js +1 -5
- package/dist/MarkdownEditor/editor/elements/List/style.js +131 -117
- package/dist/MarkdownEditor/editor/elements/Media.js +637 -519
- package/dist/MarkdownEditor/editor/elements/Mermaid.js +79 -54
- package/dist/MarkdownEditor/editor/elements/Paragraph.js +144 -83
- package/dist/MarkdownEditor/editor/elements/Schema.js +167 -128
- package/dist/MarkdownEditor/editor/elements/Table/ReadonlyTableComponent.js +211 -178
- package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +73 -49
- package/dist/MarkdownEditor/editor/elements/Table/Table.js +285 -204
- package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/index.js +397 -280
- package/dist/MarkdownEditor/editor/elements/Table/TableCellIndex/style.js +126 -101
- package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/index.js +381 -276
- package/dist/MarkdownEditor/editor/elements/Table/TableCellIndexSpacer/style.js +120 -98
- package/dist/MarkdownEditor/editor/elements/Table/TableContext.js +64 -21
- package/dist/MarkdownEditor/editor/elements/Table/TableRowIndex/index.js +52 -42
- package/dist/MarkdownEditor/editor/elements/Table/TableRowIndex/style.js +69 -39
- package/dist/MarkdownEditor/editor/elements/Table/Td/index.js +126 -72
- package/dist/MarkdownEditor/editor/elements/Table/Td/style.js +85 -55
- package/dist/MarkdownEditor/editor/elements/Table/index.js +204 -105
- package/dist/MarkdownEditor/editor/elements/Table/style.js +244 -233
- package/dist/MarkdownEditor/editor/elements/Table/useScrollShadow.js +119 -62
- package/dist/MarkdownEditor/editor/elements/TagPopup/index.js +438 -276
- package/dist/MarkdownEditor/editor/elements/TagPopup/style.js +103 -77
- package/dist/MarkdownEditor/editor/elements/index.js +437 -424
- package/dist/MarkdownEditor/editor/parser/json-parse.js +38 -9
- package/dist/MarkdownEditor/editor/parser/parserMarkdownToSlateNode.js +1753 -1168
- package/dist/MarkdownEditor/editor/parser/parserMdToSchema.js +16 -20
- package/dist/MarkdownEditor/editor/parser/parserSlateNodeToMarkdown.js +1021 -606
- package/dist/MarkdownEditor/editor/parser/remarkParse.js +158 -102
- package/dist/MarkdownEditor/editor/plugins/catchError.js +78 -17
- package/dist/MarkdownEditor/editor/plugins/elements.js +458 -342
- package/dist/MarkdownEditor/editor/plugins/handlePaste.js +752 -300
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/arrow.js +215 -129
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/backspace.js +325 -180
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/enter.js +576 -418
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/match.js +157 -47
- package/dist/MarkdownEditor/editor/plugins/hotKeyCommands/tab.js +331 -209
- package/dist/MarkdownEditor/editor/plugins/index.js +0 -1
- package/dist/MarkdownEditor/editor/plugins/insertParsedHtmlNodes.js +1245 -507
- package/dist/MarkdownEditor/editor/plugins/parseMarkdownToNodesAndInsert.js +36 -24
- package/dist/MarkdownEditor/editor/plugins/useHighlight.js +267 -116
- package/dist/MarkdownEditor/editor/plugins/useKeyboard.js +234 -160
- package/dist/MarkdownEditor/editor/plugins/useOnchange.js +253 -92
- package/dist/MarkdownEditor/editor/plugins/withMarkdown.js +728 -439
- package/dist/MarkdownEditor/editor/store.js +1819 -1389
- package/dist/MarkdownEditor/editor/style.js +551 -506
- package/dist/MarkdownEditor/editor/tagStyles.js +43 -43
- package/dist/MarkdownEditor/editor/tools/DragHandle.js +56 -54
- package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +1049 -732
- package/dist/MarkdownEditor/editor/tools/InsertLink.js +232 -181
- package/dist/MarkdownEditor/editor/tools/Leading.js +566 -303
- package/dist/MarkdownEditor/editor/tools/ToolBar/BaseBar.js +415 -377
- package/dist/MarkdownEditor/editor/tools/ToolBar/FloatBar.js +162 -125
- package/dist/MarkdownEditor/editor/tools/ToolBar/ReadonlyBaseBar.js +480 -258
- package/dist/MarkdownEditor/editor/tools/ToolBar/ToolBar.js +44 -44
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/ClearFormatButton.js +20 -35
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/ColorPickerButton.js +69 -73
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/FormatButton.js +13 -19
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/FormattingTools.js +34 -41
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/HeadingDropdown.js +53 -47
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/LinkButton.js +11 -19
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/ToolBarItem.js +23 -43
- package/dist/MarkdownEditor/editor/tools/ToolBar/components/UndoRedoButtons.js +14 -25
- package/dist/MarkdownEditor/editor/tools/ToolBar/config/toolsConfig.js +139 -102
- package/dist/MarkdownEditor/editor/tools/ToolBar/floatBarStyle.js +95 -65
- package/dist/MarkdownEditor/editor/tools/ToolBar/hooks/useToolBarLogic.js +252 -161
- package/dist/MarkdownEditor/editor/tools/ToolBar/index.js +14 -24
- package/dist/MarkdownEditor/editor/tools/ToolBar/toolBarStyle.js +95 -65
- package/dist/MarkdownEditor/editor/tools/insertAutocompleteStyle.js +82 -52
- package/dist/MarkdownEditor/editor/types/Table.js +1 -0
- package/dist/MarkdownEditor/editor/utils/InlineChromiumBugfix.js +11 -16
- package/dist/MarkdownEditor/editor/utils/ace.js +136 -40
- package/dist/MarkdownEditor/editor/utils/docx/docxDeserializer.js +29 -32
- package/dist/MarkdownEditor/editor/utils/docx/index.js +0 -1
- package/dist/MarkdownEditor/editor/utils/docx/module.js +193 -164
- package/dist/MarkdownEditor/editor/utils/docx/utils.js +113 -98
- package/dist/MarkdownEditor/editor/utils/dom.js +119 -90
- package/dist/MarkdownEditor/editor/utils/editorUtils.js +1369 -906
- package/dist/MarkdownEditor/editor/utils/htmlToMarkdown.js +196 -184
- package/dist/MarkdownEditor/editor/utils/index.js +354 -215
- package/dist/MarkdownEditor/editor/utils/isMarkdown.js +56 -44
- package/dist/MarkdownEditor/editor/utils/keyboard.js +1229 -664
- package/dist/MarkdownEditor/editor/utils/markdownToHtml.js +294 -76
- package/dist/MarkdownEditor/editor/utils/media.js +274 -99
- package/dist/MarkdownEditor/editor/utils/path.js +22 -16
- package/dist/MarkdownEditor/editor/utils/performanceMonitor.js +370 -168
- package/dist/MarkdownEditor/editor/utils/useLocalState.js +96 -37
- package/dist/MarkdownEditor/el.js +1 -0
- package/dist/MarkdownEditor/hooks/editor.js +123 -41
- package/dist/MarkdownEditor/hooks/subscribe.js +18 -15
- package/dist/MarkdownEditor/index.js +118 -30
- package/dist/MarkdownEditor/plugin.js +2 -5
- package/dist/MarkdownEditor/style.js +96 -66
- package/dist/MarkdownEditor/types.js +1 -0
- package/dist/MarkdownEditor/utils/exportHtml.js +42 -83
- package/dist/MarkdownEditor/utils/native-table/index.js +0 -1
- package/dist/MarkdownEditor/utils/native-table/native-table-editor.js +337 -222
- package/dist/MarkdownEditor/utils/native-table/native-table-keyboard.js +201 -113
- package/dist/MarkdownInputField/AttachmentButton/AttachmentButtonPopover.js +86 -79
- package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileIcon.js +62 -33
- package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +147 -125
- package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/index.js +174 -129
- package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/style.js +263 -237
- package/dist/MarkdownInputField/AttachmentButton/index.js +465 -205
- package/dist/MarkdownInputField/AttachmentButton/style.js +143 -114
- package/dist/MarkdownInputField/AttachmentButton/types.js +3 -0
- package/dist/MarkdownInputField/AttachmentButton/utils.js +64 -34
- package/dist/MarkdownInputField/BeforeToolContainer/BeforeToolContainer.js +438 -404
- package/dist/MarkdownInputField/Enlargement/index.js +7 -17
- package/dist/MarkdownInputField/FileMapView/FileMapViewItem.js +193 -216
- package/dist/MarkdownInputField/FileMapView/index.js +387 -174
- package/dist/MarkdownInputField/FileMapView/style.js +281 -259
- package/dist/MarkdownInputField/FilePaste/index.js +239 -65
- package/dist/MarkdownInputField/FileUploadManager/index.js +460 -170
- package/dist/MarkdownInputField/MarkdownInputField.js +819 -549
- package/dist/MarkdownInputField/QuickActions/index.js +304 -134
- package/dist/MarkdownInputField/RefinePromptButton/index.js +24 -33
- package/dist/MarkdownInputField/RefinePromptButton/style.js +99 -73
- package/dist/MarkdownInputField/SendActions/index.js +179 -197
- package/dist/MarkdownInputField/SendButton/index.js +150 -110
- package/dist/MarkdownInputField/SendButton/style.js +95 -64
- package/dist/MarkdownInputField/SkillModeBar/hooks/index.js +3 -5
- package/dist/MarkdownInputField/SkillModeBar/hooks/useSkillModeState.js +51 -26
- package/dist/MarkdownInputField/SkillModeBar/index.js +119 -106
- package/dist/MarkdownInputField/SkillModeBar/style.js +124 -98
- package/dist/MarkdownInputField/Suggestion/index.js +391 -154
- package/dist/MarkdownInputField/TopOperatingArea/index.js +37 -44
- package/dist/MarkdownInputField/TopOperatingArea/style.js +98 -81
- package/dist/MarkdownInputField/VoiceInput/index.js +210 -82
- package/dist/MarkdownInputField/VoiceInput/style.js +85 -59
- package/dist/MarkdownInputField/VoiceInputManager/index.js +321 -94
- package/dist/MarkdownInputField/style.js +296 -233
- package/dist/Plugins/chart/AreaChart/index.js +541 -393
- package/dist/Plugins/chart/AreaChart/style.js +114 -90
- package/dist/Plugins/chart/BarChart/index.d.ts +4 -0
- package/dist/Plugins/chart/BarChart/index.js +865 -697
- package/dist/Plugins/chart/BarChart/style.js +114 -90
- package/dist/Plugins/chart/ChartAttrToolBar/ChartAttrToolBarStyle.js +82 -52
- package/dist/Plugins/chart/ChartAttrToolBar/index.js +94 -65
- package/dist/Plugins/chart/ChartMark/Area.js +176 -150
- package/dist/Plugins/chart/ChartMark/Bar.js +181 -152
- package/dist/Plugins/chart/ChartMark/Column.js +181 -151
- package/dist/Plugins/chart/ChartMark/Container.js +116 -75
- package/dist/Plugins/chart/ChartMark/Line.js +179 -151
- package/dist/Plugins/chart/ChartMark/Pie.js +79 -63
- package/dist/Plugins/chart/ChartMark/index.js +6 -13
- package/dist/Plugins/chart/ChartMark/useChart.js +1 -0
- package/dist/Plugins/chart/ChartRender.js +981 -696
- package/dist/Plugins/chart/ChartStatistic/index.js +47 -62
- package/dist/Plugins/chart/ChartStatistic/style.js +142 -143
- package/dist/Plugins/chart/ChartStatistic/utils.js +37 -27
- package/dist/Plugins/chart/DonutChart/Legend.js +94 -124
- package/dist/Plugins/chart/DonutChart/constants.js +4 -11
- package/dist/Plugins/chart/DonutChart/hooks.js +183 -112
- package/dist/Plugins/chart/DonutChart/index.js +588 -516
- package/dist/Plugins/chart/DonutChart/plugins.js +47 -44
- package/dist/Plugins/chart/DonutChart/style.js +186 -175
- package/dist/Plugins/chart/DonutChart/types.js +1 -0
- package/dist/Plugins/chart/FunnelChart/index.js +844 -647
- package/dist/Plugins/chart/FunnelChart/style.js +97 -71
- package/dist/Plugins/chart/LineChart/index.js +516 -393
- package/dist/Plugins/chart/LineChart/style.js +114 -90
- package/dist/Plugins/chart/RadarChart/index.js +580 -582
- package/dist/Plugins/chart/RadarChart/style.js +122 -112
- package/dist/Plugins/chart/ScatterChart/index.js +633 -640
- package/dist/Plugins/chart/ScatterChart/style.js +108 -94
- package/dist/Plugins/chart/components/ChartContainer/ChartContainer.js +151 -80
- package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundary.js +160 -41
- package/dist/Plugins/chart/components/ChartContainer/ChartErrorBoundaryExample.js +80 -62
- package/dist/Plugins/chart/components/ChartContainer/index.js +2 -7
- package/dist/Plugins/chart/components/ChartContainer/style.js +121 -91
- package/dist/Plugins/chart/components/ChartFilter/ChartFilter.js +58 -90
- package/dist/Plugins/chart/components/ChartFilter/style.js +169 -154
- package/dist/Plugins/chart/components/ChartToolBar/ChartToolBar.js +54 -59
- package/dist/Plugins/chart/components/ChartToolBar/style.js +132 -117
- package/dist/Plugins/chart/components/icons/TimeIcon.js +20 -26
- package/dist/Plugins/chart/components/index.js +32 -34
- package/dist/Plugins/chart/const.js +34 -25
- package/dist/Plugins/chart/hooks/useChartStatistic.js +1 -0
- package/dist/Plugins/chart/index.js +436 -339
- package/dist/Plugins/chart/loadChartRuntime.js +209 -110
- package/dist/Plugins/chart/utils.js +311 -87
- package/dist/Plugins/code/CodeUI/Katex/Katex.js +112 -66
- package/dist/Plugins/code/components/AceEditor.js +334 -237
- package/dist/Plugins/code/components/AceEditorContainer.js +23 -32
- package/dist/Plugins/code/components/CodeContainer.js +41 -56
- package/dist/Plugins/code/components/CodeRenderer.js +202 -155
- package/dist/Plugins/code/components/CodeToolbar.js +137 -181
- package/dist/Plugins/code/components/HtmlPreview.js +19 -22
- package/dist/Plugins/code/components/LanguageSelector.js +162 -96
- package/dist/Plugins/code/components/LoadImage.js +145 -46
- package/dist/Plugins/code/components/ThinkBlock.js +38 -42
- package/dist/Plugins/code/components/index.js +13 -23
- package/dist/Plugins/code/hooks/index.js +7 -9
- package/dist/Plugins/code/hooks/useCodeEditorState.js +139 -62
- package/dist/Plugins/code/hooks/useRenderConditions.js +31 -23
- package/dist/Plugins/code/hooks/useToolbarConfig.js +44 -46
- package/dist/Plugins/code/index.js +141 -89
- package/dist/Plugins/code/langIconMap.js +400 -108
- package/dist/Plugins/code/langIcons/AbapIcon.js +90 -57
- package/dist/Plugins/code/langIcons/ActionscriptIcon.js +89 -56
- package/dist/Plugins/code/langIcons/AdaIcon.js +89 -52
- package/dist/Plugins/code/langIcons/ApacheIcon.js +205 -254
- package/dist/Plugins/code/langIcons/ApexIcon.js +108 -82
- package/dist/Plugins/code/langIcons/AplIcon.js +90 -54
- package/dist/Plugins/code/langIcons/ApplescriptIcon.js +89 -56
- package/dist/Plugins/code/langIcons/AstroIcon.js +91 -58
- package/dist/Plugins/code/langIcons/AwkIcon.js +98 -68
- package/dist/Plugins/code/langIcons/BallerinaIcon.js +92 -59
- package/dist/Plugins/code/langIcons/BatIcon.js +158 -229
- package/dist/Plugins/code/langIcons/BicepIcon.js +91 -58
- package/dist/Plugins/code/langIcons/BladeIcon.js +90 -58
- package/dist/Plugins/code/langIcons/CIcon.js +90 -55
- package/dist/Plugins/code/langIcons/CadenceIcon.js +89 -56
- package/dist/Plugins/code/langIcons/ClojureIcon.js +96 -75
- package/dist/Plugins/code/langIcons/CmakeIcon.js +93 -62
- package/dist/Plugins/code/langIcons/CobolIcon.js +99 -70
- package/dist/Plugins/code/langIcons/CodeqlIcon.js +96 -76
- package/dist/Plugins/code/langIcons/CoffeeIcon.js +89 -56
- package/dist/Plugins/code/langIcons/ConsoleIcon.js +89 -56
- package/dist/Plugins/code/langIcons/CppIcon.js +90 -55
- package/dist/Plugins/code/langIcons/CrystalIcon.js +90 -57
- package/dist/Plugins/code/langIcons/CsharpIcon.js +90 -59
- package/dist/Plugins/code/langIcons/CssIcon.js +89 -52
- package/dist/Plugins/code/langIcons/DIcon.js +90 -53
- package/dist/Plugins/code/langIcons/DartIcon.js +92 -71
- package/dist/Plugins/code/langIcons/DatabaseIcon.js +90 -57
- package/dist/Plugins/code/langIcons/DiffIcon.js +90 -57
- package/dist/Plugins/code/langIcons/DockerIcon.js +89 -56
- package/dist/Plugins/code/langIcons/DotenvIcon.js +94 -56
- package/dist/Plugins/code/langIcons/ElixirIcon.js +91 -58
- package/dist/Plugins/code/langIcons/ElmIcon.js +105 -58
- package/dist/Plugins/code/langIcons/ErbIcon.js +90 -54
- package/dist/Plugins/code/langIcons/ErlangIcon.js +89 -56
- package/dist/Plugins/code/langIcons/FsharpIcon.js +93 -62
- package/dist/Plugins/code/langIcons/GdscriptIcon.js +96 -88
- package/dist/Plugins/code/langIcons/GlslIcon.js +90 -58
- package/dist/Plugins/code/langIcons/GnuplotIcon.js +98 -77
- package/dist/Plugins/code/langIcons/GoIcon.js +114 -93
- package/dist/Plugins/code/langIcons/GraphqlIcon.js +106 -66
- package/dist/Plugins/code/langIcons/GroovyIcon.js +89 -56
- package/dist/Plugins/code/langIcons/HackIcon.js +97 -64
- package/dist/Plugins/code/langIcons/HamlIcon.js +89 -56
- package/dist/Plugins/code/langIcons/HandlebarsIcon.js +89 -56
- package/dist/Plugins/code/langIcons/HaskellIcon.js +93 -64
- package/dist/Plugins/code/langIcons/HclIcon.js +118 -93
- package/dist/Plugins/code/langIcons/HclLightIcon.js +118 -97
- package/dist/Plugins/code/langIcons/HjsonIcon.js +94 -62
- package/dist/Plugins/code/langIcons/HlslIcon.js +96 -76
- package/dist/Plugins/code/langIcons/HtmlIcon.js +89 -56
- package/dist/Plugins/code/langIcons/HttpIcon.js +89 -56
- package/dist/Plugins/code/langIcons/ImbaIcon.js +98 -65
- package/dist/Plugins/code/langIcons/IniIcon.js +90 -54
- package/dist/Plugins/code/langIcons/JavaIcon.js +89 -56
- package/dist/Plugins/code/langIcons/JavascriptIcon.js +89 -56
- package/dist/Plugins/code/langIcons/JinjaIcon.js +100 -68
- package/dist/Plugins/code/langIcons/Json5Icon.js +100 -82
- package/dist/Plugins/code/langIcons/JsonIcon.js +89 -56
- package/dist/Plugins/code/langIcons/JsonnetIcon.js +102 -86
- package/dist/Plugins/code/langIcons/JuliaIcon.js +105 -52
- package/dist/Plugins/code/langIcons/KotlinIcon.js +104 -74
- package/dist/Plugins/code/langIcons/KustoIcon.js +90 -57
- package/dist/Plugins/code/langIcons/LessIcon.js +90 -57
- package/dist/Plugins/code/langIcons/LiquidIcon.js +91 -58
- package/dist/Plugins/code/langIcons/LispIcon.js +89 -56
- package/dist/Plugins/code/langIcons/LuaIcon.js +93 -60
- package/dist/Plugins/code/langIcons/MakefileIcon.js +91 -58
- package/dist/Plugins/code/langIcons/MarkdownIcon.js +89 -56
- package/dist/Plugins/code/langIcons/MarkojsIcon.js +96 -73
- package/dist/Plugins/code/langIcons/MatlabIcon.js +93 -64
- package/dist/Plugins/code/langIcons/MdxIcon.js +90 -53
- package/dist/Plugins/code/langIcons/MermaidIcon.js +95 -64
- package/dist/Plugins/code/langIcons/MojoIcon.js +95 -62
- package/dist/Plugins/code/langIcons/NginxIcon.js +94 -61
- package/dist/Plugins/code/langIcons/NimIcon.js +91 -54
- package/dist/Plugins/code/langIcons/NixIcon.js +92 -56
- package/dist/Plugins/code/langIcons/ObjectiveCIcon.js +90 -59
- package/dist/Plugins/code/langIcons/ObjectiveCppIcon.js +90 -57
- package/dist/Plugins/code/langIcons/OcamlIcon.js +90 -61
- package/dist/Plugins/code/langIcons/PascalIcon.js +95 -55
- package/dist/Plugins/code/langIcons/Perl6Icon.js +299 -320
- package/dist/Plugins/code/langIcons/PerlIcon.js +89 -56
- package/dist/Plugins/code/langIcons/PhpIcon.js +89 -52
- package/dist/Plugins/code/langIcons/PostcssIcon.js +130 -113
- package/dist/Plugins/code/langIcons/PowershellIcon.js +91 -58
- package/dist/Plugins/code/langIcons/PrismaIcon.js +97 -68
- package/dist/Plugins/code/langIcons/PrologIcon.js +91 -58
- package/dist/Plugins/code/langIcons/ProtoIcon.js +94 -68
- package/dist/Plugins/code/langIcons/PugIcon.js +177 -145
- package/dist/Plugins/code/langIcons/PuppetIcon.js +96 -52
- package/dist/Plugins/code/langIcons/PurescriptIcon.js +93 -61
- package/dist/Plugins/code/langIcons/PythonIcon.js +90 -61
- package/dist/Plugins/code/langIcons/RIcon.js +89 -52
- package/dist/Plugins/code/langIcons/RazorIcon.js +90 -57
- package/dist/Plugins/code/langIcons/ReactIcon.js +89 -56
- package/dist/Plugins/code/langIcons/ReactTsIcon.js +90 -57
- package/dist/Plugins/code/langIcons/RubyIcon.js +91 -58
- package/dist/Plugins/code/langIcons/RustIcon.js +89 -56
- package/dist/Plugins/code/langIcons/SasIcon.js +89 -52
- package/dist/Plugins/code/langIcons/SassIcon.js +90 -57
- package/dist/Plugins/code/langIcons/ScalaIcon.js +96 -53
- package/dist/Plugins/code/langIcons/SchemeIcon.js +91 -58
- package/dist/Plugins/code/langIcons/ShaderlabIcon.js +89 -56
- package/dist/Plugins/code/langIcons/SolidityIcon.js +94 -52
- package/dist/Plugins/code/langIcons/SparqlIcon.js +94 -64
- package/dist/Plugins/code/langIcons/StataIcon.js +126 -108
- package/dist/Plugins/code/langIcons/StylusIcon.js +92 -59
- package/dist/Plugins/code/langIcons/SvelteIcon.js +91 -58
- package/dist/Plugins/code/langIcons/SwiftIcon.js +90 -57
- package/dist/Plugins/code/langIcons/SystemverilogIcon.js +115 -102
- package/dist/Plugins/code/langIcons/TclIcon.js +89 -52
- package/dist/Plugins/code/langIcons/TexIcon.js +99 -65
- package/dist/Plugins/code/langIcons/TomlIcon.js +94 -70
- package/dist/Plugins/code/langIcons/TwigIcon.js +89 -56
- package/dist/Plugins/code/langIcons/TypescriptIcon.js +93 -60
- package/dist/Plugins/code/langIcons/VerilogIcon.js +89 -56
- package/dist/Plugins/code/langIcons/VhdlIcon.js +94 -64
- package/dist/Plugins/code/langIcons/VimIcon.js +278 -420
- package/dist/Plugins/code/langIcons/VueIcon.js +92 -59
- package/dist/Plugins/code/langIcons/WebassemblyIcon.js +103 -76
- package/dist/Plugins/code/langIcons/WenyanIcon.js +104 -100
- package/dist/Plugins/code/langIcons/WgslIcon.js +93 -77
- package/dist/Plugins/code/langIcons/WolframlanguageIcon.js +100 -71
- package/dist/Plugins/code/langIcons/XmlIcon.js +89 -52
- package/dist/Plugins/code/langIcons/XslIcon.js +94 -66
- package/dist/Plugins/code/langIcons/YamlIcon.js +89 -56
- package/dist/Plugins/code/langIcons/ZigIcon.js +106 -81
- package/dist/Plugins/code/langIcons/index.js +128 -259
- package/dist/Plugins/code/utils/index.js +5 -5
- package/dist/Plugins/code/utils/langOptions.js +86 -11
- package/dist/Plugins/defaultPlugins.js +9 -13
- package/dist/Plugins/formatter/index.js +205 -105
- package/dist/Plugins/index.js +6 -2
- package/dist/Plugins/katex/InlineKatex.js +196 -107
- package/dist/Plugins/katex/Katex.js +139 -65
- package/dist/Plugins/katex/index.js +163 -103
- package/dist/Plugins/mermaid/Mermaid.js +472 -197
- package/dist/Plugins/mermaid/index.js +237 -142
- package/dist/Quote/index.js +112 -73
- package/dist/Quote/style.js +176 -160
- package/dist/Schema/SchemaEditor/AceEditorWrapper.js +163 -119
- package/dist/Schema/SchemaEditor/index.js +385 -275
- package/dist/Schema/SchemaEditor/style.js +261 -269
- package/dist/Schema/SchemaForm/index.js +443 -268
- package/dist/Schema/SchemaForm/types.js +1 -0
- package/dist/Schema/SchemaRenderer/index.js +973 -588
- package/dist/Schema/SchemaRenderer/templateEngine.js +106 -26
- package/dist/Schema/index.js +7 -11
- package/dist/Schema/types.js +1 -0
- package/dist/Schema/validator.js +74 -36
- package/dist/TaskList/index.js +197 -142
- package/dist/TaskList/style.js +143 -122
- package/dist/ThoughtChainList/CostMillis.js +88 -54
- package/dist/ThoughtChainList/DeepThink.js +187 -152
- package/dist/ThoughtChainList/DotAni/index.js +29 -14
- package/dist/ThoughtChainList/DotAni/style.js +82 -50
- package/dist/ThoughtChainList/FlipText/index.js +74 -30
- package/dist/ThoughtChainList/MarkdownEditor.js +126 -72
- package/dist/ThoughtChainList/RagRetrievalInfo.js +113 -145
- package/dist/ThoughtChainList/TableSql.js +413 -459
- package/dist/ThoughtChainList/ThoughtChainListItem.js +388 -222
- package/dist/ThoughtChainList/TitleInfo.js +189 -185
- package/dist/ThoughtChainList/ToolCall.js +429 -463
- package/dist/ThoughtChainList/WebSearch.js +192 -162
- package/dist/ThoughtChainList/index.js +449 -410
- package/dist/ThoughtChainList/style.js +253 -232
- package/dist/ThoughtChainList/types.js +1 -0
- package/dist/ToolUseBar/ToolUseBarItem.js +183 -139
- package/dist/ToolUseBar/ToolUseBarItemComponents.js +345 -276
- package/dist/ToolUseBar/ToolUseBarThink.js +335 -396
- package/dist/ToolUseBar/index.js +226 -113
- package/dist/ToolUseBar/style.js +334 -308
- package/dist/ToolUseBar/thinkStyle.js +350 -328
- package/dist/Types/common.js +1 -0
- package/dist/Types/index.js +4 -2
- package/dist/Types/message.js +1 -0
- package/dist/Utils/easings.js +9 -12
- package/dist/Utils/formatTime.js +41 -17
- package/dist/Utils/getScroll.js +41 -41
- package/dist/Utils/language.js +355 -150
- package/dist/Utils/proxySandbox/ProxySandbox.js +1637 -1076
- package/dist/Utils/proxySandbox/SecurityContextManager.js +607 -343
- package/dist/Utils/proxySandbox/index.js +554 -267
- package/dist/Utils/proxySandbox/types.js +187 -52
- package/dist/Utils/scrollTo.js +48 -56
- package/dist/Utils/throttleByAnimationFrame.js +46 -20
- package/dist/WelcomeMessage/index.js +106 -58
- package/dist/WelcomeMessage/style.js +80 -55
- package/dist/Workspace/Browser/index.js +102 -40
- package/dist/Workspace/Browser/style.js +62 -33
- package/dist/Workspace/File/DataSourceStrategy.js +419 -217
- package/dist/Workspace/File/FileComponent.js +1004 -791
- package/dist/Workspace/File/FileTypeProcessor.js +337 -184
- package/dist/Workspace/File/PreviewComponent.js +472 -532
- package/dist/Workspace/File/index.js +3 -10
- package/dist/Workspace/File/style.js +397 -424
- package/dist/Workspace/File/utils.js +160 -106
- package/dist/Workspace/HtmlPreview/index.js +238 -137
- package/dist/Workspace/HtmlPreview/style.js +99 -77
- package/dist/Workspace/RealtimeFollow/index.js +411 -413
- package/dist/Workspace/RealtimeFollow/style.js +299 -303
- package/dist/Workspace/Task/index.js +53 -35
- package/dist/Workspace/Task/style.js +99 -73
- package/dist/Workspace/index.js +332 -254
- package/dist/Workspace/style.js +165 -146
- package/dist/Workspace/types.js +471 -252
- package/dist/Workspace/utils/codeLanguageUtils.js +148 -129
- package/dist/Workspace/utils.js +28 -20
- package/dist/index.js +27 -17
- package/package.json +3 -2
|
@@ -1,25 +1,118 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
37
|
-
var
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
);
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
json = json5.parse(value || "[]");
|
|
61
|
-
} catch (error) {
|
|
147
|
+
// 处理schema类型语言的辅助函数
|
|
148
|
+
var processSchemaLanguage = function(element, value) {
|
|
149
|
+
var json = [];
|
|
62
150
|
try {
|
|
63
|
-
|
|
64
|
-
} catch (
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
89
|
-
|
|
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
|
-
|
|
191
|
+
var isNumericValue = function(value) {
|
|
192
|
+
return typeof value === 'number' || !isNaN(parseFloat(value)) && isFinite(value) || advancedNumericCheck(value);
|
|
93
193
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
val
|
|
101
|
-
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
121
|
-
}).use(remarkRehype, {
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
235
|
+
stringify: function(obj) {
|
|
236
|
+
var mdStr = stringifyObj.stringify(obj);
|
|
237
|
+
return mdStr;
|
|
238
|
+
}
|
|
127
239
|
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
mediaType,
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
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
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
|
299
|
-
}
|
|
300
|
-
return leafs;
|
|
479
|
+
return leafs;
|
|
301
480
|
};
|
|
302
|
-
var parseTableOrChart = (table, preNode, plugins)
|
|
303
|
-
|
|
304
|
-
|
|
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
|
-
|
|
308
|
-
(preNode
|
|
309
|
-
(preNode
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
) : {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
})
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
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
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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
|
|
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
|
-
|
|
643
|
+
return decodeURIComponent(url);
|
|
452
644
|
} catch (e) {
|
|
453
|
-
|
|
454
|
-
|
|
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
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
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
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
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
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
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
|
-
|
|
754
|
+
return {
|
|
755
|
+
el: el,
|
|
756
|
+
contextProps: contextProps
|
|
757
|
+
};
|
|
522
758
|
};
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
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
|
-
|
|
544
|
-
|
|
784
|
+
// 检查是否为非标准 HTML 元素,如果是则直接当作文本
|
|
785
|
+
if (!isStandardHtmlElement(currentElement.value)) {
|
|
786
|
+
return {
|
|
787
|
+
text: currentElement.value
|
|
788
|
+
};
|
|
545
789
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
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
|
-
|
|
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
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
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
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
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
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
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
|
-
|
|
609
|
-
|
|
610
|
-
|
|
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
|
-
|
|
613
|
-
|
|
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
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
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
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
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
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
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
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
currentElement
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
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
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
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
|
-
|
|
682
|
-
|
|
683
|
-
|
|
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
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
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
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
};
|
|
1013
|
+
return {
|
|
1014
|
+
type: 'list-item',
|
|
1015
|
+
checked: currentElement.checked,
|
|
1016
|
+
children: children,
|
|
1017
|
+
mentions: mentions
|
|
1018
|
+
};
|
|
711
1019
|
};
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
children: [
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
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
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
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
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
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
|
-
|
|
762
|
-
|
|
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
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
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
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
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
|
-
|
|
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
|
-
|
|
832
|
-
|
|
1190
|
+
/**
|
|
1191
|
+
* 处理分割线节点
|
|
1192
|
+
* @returns 返回格式化的分割线节点对象
|
|
1193
|
+
*/ var handleThematicBreak = function() {
|
|
1194
|
+
return {
|
|
1195
|
+
type: 'hr',
|
|
1196
|
+
children: [
|
|
1197
|
+
{
|
|
1198
|
+
text: ''
|
|
1199
|
+
}
|
|
1200
|
+
]
|
|
1201
|
+
};
|
|
833
1202
|
};
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
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
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
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
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
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
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
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
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
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
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
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
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
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
|
-
|
|
908
|
-
|
|
909
|
-
}
|
|
910
|
-
return { text: "" };
|
|
1328
|
+
return {
|
|
1329
|
+
text: ''
|
|
1330
|
+
};
|
|
911
1331
|
};
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
leaf.
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
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
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
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
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
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
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
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
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
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
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
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
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
|
-
if (
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
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
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
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
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
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
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
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
|
-
|
|
1217
|
-
|
|
1791
|
+
/**
|
|
1792
|
+
* 预处理 <think> 标签,将其转换为 ```think 代码块格式
|
|
1793
|
+
* @param markdown - 原始 Markdown 字符串
|
|
1794
|
+
* @returns 处理后的 Markdown 字符串
|
|
1795
|
+
*/ function preprocessThinkTags(markdown) {
|
|
1796
|
+
return preprocessSpecialTags(markdown, 'think');
|
|
1218
1797
|
}
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
result =
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
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
|
-
|
|
1239
|
-
return markdown;
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
//
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
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
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
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
|
};
|