dishui 0.0.65 → 0.0.66
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/_virtual/_rolldown/runtime.js +10 -11
- package/dist/chart.js +12 -46
- package/dist/code-editor.js +16 -43
- package/dist/components/Badge/index.js +10 -15
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Button/index.js +62 -89
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Card/index.d.ts +76 -0
- package/dist/components/Card/index.js +178 -69
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Chart/Chart.js +25 -25
- package/dist/components/Chart/Chart.js.map +1 -1
- package/dist/components/Checkbox/index.js +57 -65
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/ChoicePicker/index.d.ts +44 -0
- package/dist/components/ChoicePicker/index.js +81 -0
- package/dist/components/ChoicePicker/index.js.map +1 -0
- package/dist/components/Column/index.d.ts +28 -0
- package/dist/components/Column/index.js +30 -0
- package/dist/components/Column/index.js.map +1 -0
- package/dist/components/DateTimeInput/index.d.ts +44 -0
- package/dist/components/DateTimeInput/index.js +48 -0
- package/dist/components/DateTimeInput/index.js.map +1 -0
- package/dist/components/Demo/index.js +107 -107
- package/dist/components/Demo/index.js.map +1 -1
- package/dist/components/Divider/index.d.ts +20 -0
- package/dist/components/Divider/index.js +30 -0
- package/dist/components/Divider/index.js.map +1 -0
- package/dist/components/EmptyState/index.js +24 -24
- package/dist/components/EmptyState/index.js.map +1 -1
- package/dist/components/FileUploader/DropZone.js +134 -136
- package/dist/components/FileUploader/DropZone.js.map +1 -1
- package/dist/components/FileUploader/FileItem.js +159 -163
- package/dist/components/FileUploader/FileItem.js.map +1 -1
- package/dist/components/FileUploader/FileUploader.js +126 -127
- package/dist/components/FileUploader/FileUploader.js.map +1 -1
- package/dist/components/FileUploader/UploadQueue.js +62 -62
- package/dist/components/FileUploader/UploadQueue.js.map +1 -1
- package/dist/components/FloatWindow/index.d.ts +28 -0
- package/dist/components/GridLayout/index.d.ts +42 -0
- package/dist/components/Icon/index.d.ts +24 -0
- package/dist/components/Icon/index.js +26 -0
- package/dist/components/Icon/index.js.map +1 -0
- package/dist/components/Image/index.d.ts +33 -0
- package/dist/components/Image/index.js +44 -0
- package/dist/components/Image/index.js.map +1 -0
- package/dist/components/Input/index.js +196 -197
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Label/index.js +62 -74
- package/dist/components/Label/index.js.map +1 -1
- package/dist/components/Layout/index.js +134 -139
- package/dist/components/Layout/index.js.map +1 -1
- package/dist/components/List/index.js +45 -58
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.js +106 -107
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/codeThemes.js +24 -33
- package/dist/components/Markdown/codeThemes.js.map +1 -1
- package/dist/components/Markdown/markdownComponents.js +203 -208
- package/dist/components/Markdown/markdownComponents.js.map +1 -1
- package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
- package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
- package/dist/components/Markdown/useMarkdownSource.js +46 -46
- package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
- package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
- package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
- package/dist/components/Markdown/useMermaidRenderer.js +41 -42
- package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
- package/dist/components/Modal/index.js +82 -82
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/MultipleChoice/index.d.ts +44 -0
- package/dist/components/MultipleChoice/index.js +52 -0
- package/dist/components/MultipleChoice/index.js.map +1 -0
- package/dist/components/Notification/index.d.ts +17 -0
- package/dist/components/Page/index.js +40 -71
- package/dist/components/Page/index.js.map +1 -1
- package/dist/components/PageHeader/index.js +28 -28
- package/dist/components/PageHeader/index.js.map +1 -1
- package/dist/components/ProtectedRoute/index.js +8 -9
- package/dist/components/ProtectedRoute/index.js.map +1 -1
- package/dist/components/Row/index.d.ts +28 -0
- package/dist/components/Row/index.js +30 -0
- package/dist/components/Row/index.js.map +1 -0
- package/dist/components/Select/index.js +251 -254
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/SidebarToggleButton/index.js +56 -59
- package/dist/components/SidebarToggleButton/index.js.map +1 -1
- package/dist/components/Slider/index.d.ts +39 -0
- package/dist/components/Slider/index.js +52 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/StatCard/index.d.ts +29 -1
- package/dist/components/StatCard/index.js +189 -86
- package/dist/components/StatCard/index.js.map +1 -1
- package/dist/components/Switch/index.d.ts +34 -0
- package/dist/components/Switch/index.js +55 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Tab/index.d.ts +40 -0
- package/dist/components/Table/index.js +109 -121
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/index.js +28 -38
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Text/index.d.ts +43 -0
- package/dist/components/Text/index.js +55 -0
- package/dist/components/Text/index.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +23 -0
- package/dist/components/Tooltip/index.js +34 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/Tree/Tree.js +205 -205
- package/dist/components/Tree/Tree.js.map +1 -1
- package/dist/components/pro/ArticleContextMenu/index.js +86 -87
- package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
- package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
- package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
- package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
- package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
- package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
- package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
- package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
- package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
- package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
- package/dist/components/pro/Calendar/index.d.ts +7 -0
- package/dist/components/pro/Calendar/types.d.ts +151 -0
- package/dist/components/pro/Calendar/utils.d.ts +94 -0
- package/dist/components/pro/Chat/Chat.d.ts +6 -0
- package/dist/components/pro/Chat/index.d.ts +2 -0
- package/dist/components/pro/Chat/types.d.ts +84 -0
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
- package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
- package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
- package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
- package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
- package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/index.js +7 -15
- package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
- package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/python.js +4 -40
- package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
- package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/themes.js +513 -483
- package/dist/components/pro/CodeEditor/themes.js.map +1 -1
- package/dist/components/pro/CodeEditor/types.d.ts +1 -1
- package/dist/components/pro/CodeEditor/utils.js +171 -175
- package/dist/components/pro/CodeEditor/utils.js.map +1 -1
- package/dist/components/pro/DataTable/DataTable.js +305 -306
- package/dist/components/pro/DataTable/DataTable.js.map +1 -1
- package/dist/components/pro/DataTable/Filters.js +299 -314
- package/dist/components/pro/DataTable/Filters.js.map +1 -1
- package/dist/components/pro/DataTable/PivotPanel.js +203 -204
- package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
- package/dist/components/pro/DataTable/PivotView.js +142 -144
- package/dist/components/pro/DataTable/PivotView.js.map +1 -1
- package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
- package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
- package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
- package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
- package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
- package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableBody.js +93 -94
- package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
- package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
- package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
- package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
- package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
- package/dist/components/pro/DataTable/extension.js +5 -5
- package/dist/components/pro/DataTable/extension.js.map +1 -1
- package/dist/components/pro/DataTable/pivotEngine.js +84 -92
- package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
- package/dist/components/pro/DataTable/pivotExtension.js +93 -93
- package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
- package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
- package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
- package/dist/components/pro/DataTable/tanstack-table.js +45 -62
- package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
- package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
- package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
- package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
- package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
- package/dist/components/pro/DataTable/utils.js +156 -168
- package/dist/components/pro/DataTable/utils.js.map +1 -1
- package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
- package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
- package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
- package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
- package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
- package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
- package/dist/components/pro/FileExplorer/GridView.js +100 -100
- package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
- package/dist/components/pro/FileExplorer/ListView.js +209 -209
- package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
- package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
- package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
- package/dist/components/pro/Flow/Flow.js +920 -948
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
- package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
- package/dist/components/pro/Flow/archify/build.js +85 -94
- package/dist/components/pro/Flow/archify/build.js.map +1 -1
- package/dist/components/pro/Flow/archify/convert.js +512 -519
- package/dist/components/pro/Flow/archify/convert.js.map +1 -1
- package/dist/components/pro/Flow/archify/palette.js +87 -104
- package/dist/components/pro/Flow/archify/palette.js.map +1 -1
- package/dist/components/pro/Flow/archify/presets.js +34 -37
- package/dist/components/pro/Flow/archify/presets.js.map +1 -1
- package/dist/components/pro/Flow/archify/spec.js +7 -7
- package/dist/components/pro/Flow/archify/spec.js.map +1 -1
- package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
- package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
- package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
- package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
- package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
- package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
- package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
- package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
- package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
- package/dist/components/pro/Flow/constants.js +266 -278
- package/dist/components/pro/Flow/constants.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
- package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowContext.js +60 -61
- package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
- package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
- package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
- package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
- package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
- package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
- package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
- package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
- package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
- package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
- package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
- package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
- package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
- package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
- package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
- package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
- package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
- package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
- package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
- package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
- package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
- package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
- package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
- package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
- package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
- package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
- package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
- package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
- package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
- package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
- package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
- package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
- package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
- package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
- package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
- package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
- package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
- package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
- package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
- package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
- package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/shapes.js +556 -589
- package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
- package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
- package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
- package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
- package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
- package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
- package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
- package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
- package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
- package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
- package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
- package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
- package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
- package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
- package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
- package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
- package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
- package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
- package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
- package/dist/components/pro/Flow/types.js +26 -26
- package/dist/components/pro/Flow/types.js.map +1 -1
- package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
- package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
- package/dist/components/pro/Flow/utils/gradient.js +55 -55
- package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
- package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
- package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
- package/dist/components/pro/Flow/utils/themeColor.js +185 -195
- package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
- package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
- package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
- package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
- package/dist/components/pro/Gantt/index.d.ts +6 -0
- package/dist/components/pro/Gantt/types.d.ts +478 -0
- package/dist/components/pro/Gantt/utils.d.ts +124 -0
- package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
- package/dist/components/pro/Resizable/index.d.ts +2 -0
- package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
- package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
- package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
- package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
- package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
- package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
- package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
- package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
- package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
- package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
- package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
- package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
- package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
- package/dist/components/pro/RichTextEditor/types.js +75 -75
- package/dist/components/pro/RichTextEditor/types.js.map +1 -1
- package/dist/contexts/AppContext.d.ts +1 -1
- package/dist/contexts/AppContext.js +216 -221
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/data-table.js +15 -41
- package/dist/data-table.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/flow.js +27 -83
- package/dist/hooks/useClickOutside.js +18 -18
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useContainerElement.js +9 -9
- package/dist/hooks/useContainerElement.js.map +1 -1
- package/dist/hooks/useControllableState.js +33 -35
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useCopyToClipboard.js +16 -16
- package/dist/hooks/useCopyToClipboard.js.map +1 -1
- package/dist/hooks/useDebounce.js +14 -14
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/hooks/useDraggable.js +50 -50
- package/dist/hooks/useDraggable.js.map +1 -1
- package/dist/hooks/useTableColumns.js +39 -41
- package/dist/hooks/useTableColumns.js.map +1 -1
- package/dist/hooks/useTableData.js +67 -68
- package/dist/hooks/useTableData.js.map +1 -1
- package/dist/index-nostyled.d.ts +8 -0
- package/dist/index.d.ts +27 -1
- package/dist/index.js +105 -241
- package/dist/layouts/MainLayout.js +56 -56
- package/dist/layouts/MainLayout.js.map +1 -1
- package/dist/layouts/Navbar.js +214 -214
- package/dist/layouts/Navbar.js.map +1 -1
- package/dist/layouts/Sidebar.js +184 -186
- package/dist/layouts/Sidebar.js.map +1 -1
- package/dist/layouts/headbar/Headbar.js +25 -25
- package/dist/layouts/headbar/Headbar.js.map +1 -1
- package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
- package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarSearch.js +120 -120
- package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarTitle.js +26 -26
- package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
- package/dist/lite.js +9 -24
- package/dist/markdown.js +4 -9
- package/dist/pages/components/Calendar/index.d.ts +3 -0
- package/dist/pages/components/Calendar/index.en.d.ts +3 -0
- package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
- package/dist/pages/components/Chat/index.d.ts +3 -0
- package/dist/pages/components/Chat/index.en.d.ts +3 -0
- package/dist/pages/components/Chat/index.zh.d.ts +3 -0
- package/dist/pages/components/FloatWindow/index.d.ts +3 -0
- package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
- package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
- package/dist/pages/components/Gantt/index.d.ts +3 -0
- package/dist/pages/components/Gantt/index.en.d.ts +3 -0
- package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
- package/dist/pages/components/GridLayout/index.d.ts +3 -0
- package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
- package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
- package/dist/pages/components/Notification/index.d.ts +3 -0
- package/dist/pages/components/Notification/index.en.d.ts +3 -0
- package/dist/pages/components/Notification/index.zh.d.ts +3 -0
- package/dist/pages/components/Resizable/index.d.ts +3 -0
- package/dist/pages/components/Resizable/index.en.d.ts +3 -0
- package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
- package/dist/pages/components/Tab/index.d.ts +3 -0
- package/dist/pages/components/Tab/index.en.d.ts +3 -0
- package/dist/pages/components/Tab/index.zh.d.ts +3 -0
- package/dist/styles/themeStyles.js +87 -86
- package/dist/styles/themeStyles.js.map +1 -1
- package/dist/utils/cn.d.ts +13 -0
- package/dist/utils/cn.js +16 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/i18n.js +690 -602
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/menu.js +94 -94
- package/dist/utils/menu.js.map +1 -1
- package/dist/utils/rehype-code-meta.js +14 -14
- package/dist/utils/rehype-code-meta.js.map +1 -1
- package/dist/utils/remark-code-meta.js +9 -9
- package/dist/utils/remark-code-meta.js.map +1 -1
- package/dist/utils/routerBuilder.js +59 -60
- package/dist/utils/routerBuilder.js.map +1 -1
- package/dist/utils/selection.js +28 -29
- package/dist/utils/selection.js.map +1 -1
- package/dist/utils/themes.js +275 -255
- package/dist/utils/themes.js.map +1 -1
- package/package.json +19 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownExtensions.js","names":[],"sources":["../../../../../src/components/pro/CodeEditor/editors/markdownExtensions.ts"],"sourcesContent":["import { Extension } from '@codemirror/state';\nimport { EditorView, Decoration, DecorationSet, ViewPlugin, ViewUpdate } from '@codemirror/view';\nimport { syntaxTree } from '@codemirror/language';\nimport { CompletionContext, CompletionResult, autocompletion } from '@codemirror/autocomplete';\nimport { LanguageSupport } from '@codemirror/language';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { python } from '@codemirror/lang-python';\nimport { html } from '@codemirror/lang-html';\nimport { css } from '@codemirror/lang-css';\nimport { json } from '@codemirror/lang-json';\n\n// Markdown 章节信息\nexport interface MarkdownSection {\n level: number;\n title: string;\n line: number;\n id: string;\n}\n\n// 脚注信息\nexport interface FootnoteInfo {\n id: string;\n line: number; // 第一次引用的行号\n definitionLine?: number; // 定义的行号\n referenceLines?: number[]; // 所有引用的行号列表\n}\n\n// 获取代码块语言支持\nconst getCodeBlockLanguage = (lang: string): LanguageSupport | null => {\n switch (lang.toLowerCase()) {\n case 'javascript':\n case 'js':\n case 'jsx':\n return javascript({ jsx: true });\n case 'typescript':\n case 'ts':\n case 'tsx':\n return javascript({ jsx: true, typescript: true });\n case 'python':\n case 'py':\n return python();\n case 'html':\n return html();\n case 'css':\n return css();\n case 'json':\n return json();\n default:\n return null;\n }\n};\n\n// Mermaid/KaTeX 块高亮 + 代码块语法高亮\nconst codeBlockHighlight = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations = [];\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n let inCodeBlock = false;\n let blockType: 'mermaid' | 'katex' | 'math' | 'code' | null = null;\n let blockLang: string = '';\n let blockStart = 0;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineStart = view.state.doc.line(i + 1).from;\n\n // 检测代码块开始\n const codeBlockStart = line.match(/^```(\\w+)/);\n if (codeBlockStart && !inCodeBlock) {\n inCodeBlock = true;\n const lang = codeBlockStart[1];\n\n if (lang === 'mermaid') {\n blockType = 'mermaid';\n } else if (lang === 'math' || lang === 'katex') {\n blockType = 'katex';\n } else {\n blockType = 'code';\n blockLang = lang;\n }\n\n blockStart = lineStart;\n\n // 高亮代码块标记\n const mark = Decoration.mark({\n class: `cm-markdown-codeblock-marker${blockType === 'mermaid' ? ' cm-markdown-mermaid-marker' : blockType === 'katex' ? ' cm-markdown-katex-marker' : ' cm-markdown-code-marker'}`,\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n }\n // 检测代码块结束\n else if (inCodeBlock && line.match(/^```\\s*$/)) {\n inCodeBlock = false;\n\n // 高亮代码块标记\n const mark = Decoration.mark({\n class: 'cm-markdown-codeblock-marker',\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n\n blockType = null;\n blockLang = '';\n }\n // 代码块内容高亮\n else if (inCodeBlock && blockType) {\n const className = blockType === 'mermaid'\n ? 'cm-markdown-codeblock-content cm-markdown-mermaid-content'\n : blockType === 'katex'\n ? 'cm-markdown-codeblock-content cm-markdown-katex-content'\n : `cm-markdown-codeblock-content cm-markdown-code-content cm-code-${blockLang}`;\n\n const mark = Decoration.mark({\n class: className,\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n }\n\n // 行内 KaTeX 高亮 $...$\n if (!inCodeBlock) {\n const inlineKatexRegex = /\\$([^$]+)\\$/g;\n let match;\n while ((match = inlineKatexRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + match[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-inline-katex',\n });\n decorations.push(mark.range(from, to));\n }\n\n // 块级 KaTeX 高亮 $$...$$\n const blockKatexRegex = /\\$\\$([^$]+)\\$\\$/g;\n while ((match = blockKatexRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + match[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-block-katex',\n });\n decorations.push(mark.range(from, to));\n }\n }\n }\n\n // 按位置排序装饰,避免 CodeMirror 错误\n decorations.sort((a, b) => a.from - b.from);\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n);\n\n// Markdown 表格高亮\nconst tableHighlight = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations = [];\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineStart = view.state.doc.line(i + 1).from;\n\n // 检测表格行 (包含 |)\n if (line.includes('|') && line.trim().startsWith('|')) {\n // 不要添加整行的装饰,只高亮管道符\n // 这样可以避免与管道符装饰重叠\n\n // 高亮表格分隔符 |\n const pipeRegex = /\\|/g;\n let match;\n while ((match = pipeRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + 1;\n const pipeMark = Decoration.mark({\n class: 'cm-markdown-table-pipe',\n });\n decorations.push(pipeMark.range(from, to));\n }\n }\n\n // 检测表格分隔行 |---|---|\n if (line.match(/^\\|?\\s*:?-+:?\\s*\\|/)) {\n const mark = Decoration.mark({\n class: 'cm-markdown-table-separator',\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n }\n }\n\n // 按位置排序装饰,避免 CodeMirror 错误\n decorations.sort((a, b) => a.from - b.from);\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n);\n\n// 脚注点击跳转处理\nconst footnoteClickHandler = EditorView.domEventHandlers({\n mousedown: (event, view) => {\n const target = event.target as HTMLElement;\n const pos = view.posAtCoords({ x: event.clientX, y: event.clientY });\n\n if (pos === null) return false;\n\n const line = view.state.doc.lineAt(pos);\n const lineText = line.text;\n const clickOffset = pos - line.from;\n\n // 检查是否点击了脚注引用 [^id]\n const refRegex = /\\[\\^(\\w+)\\]/g;\n let match;\n while ((match = refRegex.exec(lineText)) !== null) {\n const matchStart = match.index;\n const matchEnd = matchStart + match[0].length;\n\n if (clickOffset >= matchStart && clickOffset <= matchEnd) {\n const footnoteId = match[1];\n\n // 查找脚注定义\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const defMatch = lines[i].match(/^\\[\\^(\\w+)\\]:\\s*(.+)$/);\n if (defMatch && defMatch[1] === footnoteId) {\n // 找到定义,跳转到该行\n const targetLine = view.state.doc.line(i + 1);\n view.dispatch({\n selection: { anchor: targetLine.from },\n effects: EditorView.scrollIntoView(targetLine.from, { y: 'center' })\n });\n\n event.preventDefault();\n return true;\n }\n }\n }\n }\n\n // 检查是否点击了脚注定义 [^id]:\n const defMatch = lineText.match(/^\\[\\^(\\w+)\\]:/);\n if (defMatch) {\n const matchEnd = defMatch[0].length;\n\n if (clickOffset <= matchEnd) {\n const footnoteId = defMatch[1];\n\n // 查找第一个引用\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const refRegex = new RegExp(`\\\\[\\\\^${footnoteId}\\\\](?!:)`, 'g');\n if (refRegex.test(lines[i])) {\n // 找到引用,跳转到该行\n const targetLine = view.state.doc.line(i + 1);\n view.dispatch({\n selection: { anchor: targetLine.from },\n effects: EditorView.scrollIntoView(targetLine.from, { y: 'center' })\n });\n\n event.preventDefault();\n return true;\n }\n }\n }\n }\n\n return false;\n }\n});\n\n// 脚注样式装饰 - 让脚注看起来可点击\nconst footnoteDecoration = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations = [];\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineStart = view.state.doc.line(i + 1).from;\n\n // 脚注引用 [^id]\n const refRegex = /\\[\\^(\\w+)\\]/g;\n let match;\n while ((match = refRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + match[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-footnote-ref',\n attributes: { style: 'cursor: pointer; text-decoration: underline; text-decoration-style: dotted;' }\n });\n decorations.push(mark.range(from, to));\n }\n\n // 脚注定义 [^id]:\n const defMatch = line.match(/^\\[\\^(\\w+)\\]:/);\n if (defMatch) {\n const from = lineStart;\n const to = from + defMatch[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-footnote-def',\n attributes: { style: 'cursor: pointer; font-weight: bold;' }\n });\n decorations.push(mark.range(from, to));\n }\n }\n\n // 按位置排序装饰,避免 CodeMirror 错误\n decorations.sort((a, b) => a.from - b.from);\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n);\n\n// 提取 Markdown 章节\nexport const extractMarkdownSections = (code: string): MarkdownSection[] => {\n const sections: MarkdownSection[] = [];\n const lines = code.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const match = line.match(/^(#{1,6})\\s+(.+)$/);\n\n if (match) {\n const level = match[1].length;\n const title = match[2].trim();\n const id = title\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/\\s+/g, '-');\n\n sections.push({\n level,\n title,\n line: i + 1,\n id,\n });\n }\n }\n\n return sections;\n};\n\n// 提取脚注\nexport const extractFootnotes = (code: string): FootnoteInfo[] => {\n const footnotes: FootnoteInfo[] = [];\n const lines = code.split('\\n');\n const footnoteMap = new Map<string, FootnoteInfo>();\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // 脚注引用 [^1]\n const refRegex = /\\[\\^(\\w+)\\]/g;\n let match;\n while ((match = refRegex.exec(line)) !== null) {\n const id = match[1];\n const existing = footnoteMap.get(id);\n if (existing) {\n // 已存在,添加到引用列表\n if (!existing.referenceLines) {\n existing.referenceLines = [existing.line];\n }\n existing.referenceLines.push(i + 1);\n } else {\n // 首次出现\n footnoteMap.set(id, {\n id,\n line: i + 1,\n referenceLines: [i + 1],\n });\n }\n }\n\n // 脚注定义 [^1]: ...\n const defMatch = line.match(/^\\[\\^(\\w+)\\]:\\s*(.+)$/);\n if (defMatch) {\n const id = defMatch[1];\n const existing = footnoteMap.get(id);\n if (existing) {\n existing.definitionLine = i + 1;\n } else {\n footnoteMap.set(id, {\n id,\n line: i + 1,\n definitionLine: i + 1,\n referenceLines: [],\n });\n }\n }\n }\n\n return Array.from(footnoteMap.values());\n};\n\n// Markdown 智能补全 - 改进版,支持更多触发方式\nexport const markdownAutocompletion = () => {\n return autocompletion({\n override: [\n (context: CompletionContext): CompletionResult | null => {\n const word = context.matchBefore(/\\S*/);\n if (!word || (word.from === word.to && !context.explicit)) {\n return null;\n }\n\n const options = [];\n const wordText = word.text.toLowerCase();\n\n // 获取当前行的文本,用于更好的上下文判断\n const line = context.state.doc.lineAt(context.pos);\n const lineText = line.text;\n const cursorPosInLine = context.pos - line.from;\n\n // 检查是否在行首输入特殊字符\n const isLineStart = lineText.trim() === wordText || cursorPosInLine <= 2;\n\n // Markdown 基础语法\n const basicSnippets = [\n { label: '#', detail: 'Heading 1', apply: '# ${title}', type: 'snippet', boost: 10 },\n { label: '##', detail: 'Heading 2', apply: '## ${title}', type: 'snippet', boost: 10 },\n { label: '###', detail: 'Heading 3', apply: '### ${title}', type: 'snippet', boost: 10 },\n { label: '####', detail: 'Heading 4', apply: '#### ${title}', type: 'snippet', boost: 10 },\n { label: '#####', detail: 'Heading 5', apply: '##### ${title}', type: 'snippet', boost: 10 },\n { label: '######', detail: 'Heading 6', apply: '###### ${title}', type: 'snippet', boost: 10 },\n { label: '-', detail: 'Unordered list', apply: '- ${item}', type: 'snippet', boost: 10 },\n { label: '*', detail: 'Unordered list', apply: '* ${item}', type: 'snippet', boost: 10 },\n { label: '1.', detail: 'Ordered list', apply: '1. ${item}', type: 'snippet', boost: 10 },\n { label: 'h1', detail: '# Heading 1', apply: '# ${title}', type: 'snippet' },\n { label: 'h2', detail: '## Heading 2', apply: '## ${title}', type: 'snippet' },\n { label: 'h3', detail: '### Heading 3', apply: '### ${title}', type: 'snippet' },\n { label: 'bold', detail: '**bold**', apply: '**${text}**', type: 'snippet' },\n { label: 'italic', detail: '*italic*', apply: '*${text}*', type: 'snippet' },\n { label: 'code', detail: '`code`', apply: '`${code}`', type: 'snippet' },\n { label: 'link', detail: '[text](url)', apply: '[${text}](${url})', type: 'snippet' },\n { label: 'image', detail: '', apply: '', type: 'snippet' },\n { label: 'quote', detail: '> quote', apply: '> ${text}', type: 'snippet' },\n { label: 'ul', detail: '- item', apply: '- ${item}', type: 'snippet' },\n { label: 'ol', detail: '1. item', apply: '1. ${item}', type: 'snippet' },\n { label: 'task', detail: '- [ ] task', apply: '- [ ] ${task}', type: 'snippet' },\n { label: 'hr', detail: '---', apply: '---', type: 'snippet' },\n ];\n\n // Mermaid 图表 - 支持通过图表类型触发\n const mermaidSnippets = [\n {\n label: 'mermaid',\n detail: 'Mermaid diagram',\n apply: '```mermaid\\ngraph TD\\n A[${Start}] --> B[${End}]\\n```',\n type: 'snippet',\n },\n {\n label: 'flowchart',\n detail: 'Mermaid flowchart',\n apply: '```mermaid\\nflowchart LR\\n A[${Start}] --> B{${Decision}}\\n B -->|Yes| C[${Option 1}]\\n B -->|No| D[${Option 2}]\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'sequence',\n detail: 'Mermaid sequence diagram',\n apply: '```mermaid\\nsequenceDiagram\\n participant A as ${Alice}\\n participant B as ${Bob}\\n A->>B: ${Hello Bob}\\n B->>A: ${Hello Alice}\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'gantt',\n detail: 'Mermaid Gantt chart',\n apply: '```mermaid\\ngantt\\n title ${Project Timeline}\\n dateFormat YYYY-MM-DD\\n section ${Phase 1}\\n ${Task 1} :a1, 2024-01-01, 30d\\n ${Task 2} :after a1, 20d\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'pie',\n detail: 'Mermaid pie chart',\n apply: '```mermaid\\npie title ${Distribution}\\n \"${Category A}\" : ${45}\\n \"${Category B}\" : ${30}\\n \"${Category C}\" : ${25}\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'mermaid-flowchart',\n detail: 'Mermaid flowchart (alias)',\n apply: '```mermaid\\nflowchart LR\\n A[${Start}] --> B{${Decision}}\\n B -->|Yes| C[${Option 1}]\\n B -->|No| D[${Option 2}]\\n```',\n type: 'snippet',\n },\n {\n label: 'mermaid-sequence',\n detail: 'Mermaid sequence diagram (alias)',\n apply: '```mermaid\\nsequenceDiagram\\n participant A as ${Alice}\\n participant B as ${Bob}\\n A->>B: ${Hello Bob}\\n B->>A: ${Hello Alice}\\n```',\n type: 'snippet',\n },\n ];\n\n // KaTeX 数学公式\n const katexSnippets = [\n {\n label: 'math',\n detail: 'Math block',\n apply: '```math\\n${formula}\\n```',\n type: 'snippet',\n },\n {\n label: 'inline-math',\n detail: 'Inline math $...$',\n apply: '$${formula}$',\n type: 'snippet',\n },\n {\n label: 'block-math',\n detail: 'Block math $$...$$',\n apply: '$$\\n${formula}\\n$$',\n type: 'snippet',\n },\n {\n label: 'fraction',\n detail: 'Fraction',\n apply: '\\\\frac{${numerator}}{${denominator}}',\n type: 'snippet',\n },\n {\n label: 'sqrt',\n detail: 'Square root',\n apply: '\\\\sqrt{${x}}',\n type: 'snippet',\n },\n {\n label: 'sum',\n detail: 'Summation',\n apply: '\\\\sum_{${i=1}}^{${n}} ${x_i}',\n type: 'snippet',\n },\n {\n label: 'integral',\n detail: 'Integral',\n apply: '\\\\int_{${a}}^{${b}} ${f(x)} dx',\n type: 'snippet',\n },\n {\n label: 'matrix',\n detail: 'Matrix',\n apply: '\\\\begin{bmatrix}\\n${a} & ${b} \\\\\\\\\\n${c} & ${d}\\n\\\\end{bmatrix}',\n type: 'snippet',\n },\n ];\n\n // Markdown 表格\n const tableSnippets = [\n {\n label: 'table',\n detail: 'Markdown table',\n apply: '| ${Column 1} | ${Column 2} | ${Column 3} |\\n|------------|------------|------------|\\n| ${Cell 1} | ${Cell 2} | ${Cell 3} |\\n| ${Cell 4} | ${Cell 5} | ${Cell 6} |',\n type: 'snippet',\n },\n {\n label: 'table-2col',\n detail: '2-column table',\n apply: '| ${Column 1} | ${Column 2} |\\n|------------|------------|\\n| ${Cell 1} | ${Cell 2} |\\n| ${Cell 3} | ${Cell 4} |',\n type: 'snippet',\n },\n {\n label: 'table-align',\n detail: 'Table with alignment',\n apply: '| ${Left} | ${Center} | ${Right} |\\n|:--------|:---------:|---------:|\\n| ${L1} | ${C1} | ${R1} |\\n| ${L2} | ${C2} | ${R2} |',\n type: 'snippet',\n },\n ];\n\n // 脚注\n const footnoteSnippets = [\n {\n label: 'footnote',\n detail: 'Footnote reference',\n apply: '[^${1}]',\n type: 'snippet',\n },\n {\n label: 'footnote-def',\n detail: 'Footnote definition',\n apply: '[^${1}]: ${definition}',\n type: 'snippet',\n },\n ];\n\n // 合并所有补全选项\n const allSnippets = [\n ...basicSnippets,\n ...mermaidSnippets,\n ...katexSnippets,\n ...tableSnippets,\n ...footnoteSnippets,\n ];\n\n // 过滤匹配的选项\n for (const snippet of allSnippets) {\n if (snippet.label.startsWith(wordText) || wordText === '' || context.explicit) {\n options.push(snippet);\n }\n }\n\n // 如果没有匹配项,返回 null 让其他补全源处理\n if (options.length === 0) {\n return null;\n }\n\n return {\n from: word.from,\n options,\n };\n },\n ],\n });\n};\n\n// Markdown 样式 - 改进选中背景和其他样式\nexport const markdownTheme = EditorView.baseTheme({\n // 活动行背景 - Light 模式(降低不透明度,让选中更明显)\n '&light .cm-activeLine': {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n },\n\n // 活动行背景 - Dark 模式(降低不透明度,让选中更明显)\n '&dark .cm-activeLine': {\n backgroundColor: 'rgba(255, 255, 255, 0.05)',\n },\n\n // 选中文本背景由 CodeEditor 主主题统一控制,避免重复定义\n\n // Mermaid 块 - Light 模式\n '&light .cm-markdown-mermaid-marker': {\n color: '#10b981',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-mermaid-content': {\n backgroundColor: 'rgba(16, 185, 129, 0.1)',\n color: '#059669',\n },\n\n // Mermaid 块 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-mermaid-marker': {\n color: '#6ee7b7',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-mermaid-content': {\n backgroundColor: 'rgba(52, 211, 153, 0.15)',\n color: '#a7f3d0',\n },\n\n // KaTeX 块 - Light 模式\n '&light .cm-markdown-katex-marker': {\n color: '#3b82f6',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-katex-content': {\n backgroundColor: 'rgba(59, 130, 246, 0.1)',\n color: '#2563eb',\n },\n '&light .cm-markdown-inline-katex': {\n backgroundColor: 'rgba(59, 130, 246, 0.15)',\n color: '#1d4ed8',\n borderRadius: '2px',\n padding: '1px 3px',\n },\n '&light .cm-markdown-block-katex': {\n backgroundColor: 'rgba(59, 130, 246, 0.15)',\n color: '#1d4ed8',\n borderRadius: '2px',\n padding: '2px 4px',\n display: 'inline-block',\n },\n\n // KaTeX 块 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-katex-marker': {\n color: '#93c5fd',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-katex-content': {\n backgroundColor: 'rgba(96, 165, 250, 0.15)',\n color: '#bfdbfe',\n },\n '&dark .cm-markdown-inline-katex': {\n backgroundColor: 'rgba(96, 165, 250, 0.2)',\n color: '#e0f2fe',\n borderRadius: '2px',\n padding: '1px 3px',\n },\n '&dark .cm-markdown-block-katex': {\n backgroundColor: 'rgba(96, 165, 250, 0.2)',\n color: '#e0f2fe',\n borderRadius: '2px',\n padding: '2px 4px',\n display: 'inline-block',\n },\n\n // 代码块 - Light 模式\n '&light .cm-markdown-code-marker': {\n color: '#6b7280',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-code-content': {\n backgroundColor: 'rgba(100, 116, 139, 0.08)',\n color: '#334155',\n fontFamily: 'monospace',\n },\n\n // 代码块 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-code-marker': {\n color: '#d1d5db',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-code-content': {\n backgroundColor: 'rgba(148, 163, 184, 0.1)',\n color: '#e5e7eb',\n fontFamily: 'monospace',\n },\n\n // 表格 - Light 模式\n '&light .cm-markdown-table-row': {\n backgroundColor: 'rgba(100, 116, 139, 0.05)',\n },\n '&light .cm-markdown-table-pipe': {\n color: '#64748b',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-table-separator': {\n color: '#94a3b8',\n fontWeight: 'bold',\n backgroundColor: 'rgba(100, 116, 139, 0.1)',\n },\n\n // 表格 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-table-row': {\n backgroundColor: 'rgba(148, 163, 184, 0.08)',\n },\n '&dark .cm-markdown-table-pipe': {\n color: '#d1d5db',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-table-separator': {\n color: '#e5e7eb',\n fontWeight: 'bold',\n backgroundColor: 'rgba(148, 163, 184, 0.15)',\n },\n\n // 代码块标记\n '.cm-markdown-codeblock-marker': {\n fontWeight: 'bold',\n },\n\n // 目录面板样式 - 修复展开按钮遮挡\n '.toc-panel': {\n position: 'relative',\n zIndex: 1,\n },\n\n // 脚注样式\n '&light .cm-markdown-footnote-ref': {\n color: '#3b82f6',\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-footnote-ref': {\n color: '#93c5fd',\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-footnote-def': {\n color: '#059669',\n cursor: 'pointer',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-footnote-def': {\n color: '#6ee7b7',\n cursor: 'pointer',\n fontWeight: 'bold',\n },\n});\n\n// 导出所有 Markdown 扩展\nexport const markdownExtensions = (): Extension[] => {\n return [\n codeBlockHighlight,\n tableHighlight,\n footnoteDecoration,\n footnoteClickHandler,\n markdownAutocompletion(),\n markdownTheme\n ];\n};\n"],"mappings":";;;;;;;AAqDA,IAAM,IAAqB,EAAW,UACpC,MAAM;AAAA,EACJ;AAAA,EAEA,YAAY,GAAkB;AAC5B,SAAK,cAAc,KAAK,iBAAiB,CAAI;AAAA,EAC/C;AAAA,EAEA,OAAO,GAAoB;AACzB,KAAI,EAAO,cAAc,EAAO,qBAC9B,KAAK,cAAc,KAAK,iBAAiB,EAAO,IAAI;AAAA,EAExD;AAAA,EAEA,iBAAiB,GAAiC;AAChD,UAAM,IAAc,CAAC,GAEf,IADO,EAAK,MAAM,IAAI,SACd,EAAK,MAAM;AAAA,CAAI;AAE7B,QAAI,IAAc,IACd,IAA0D,MAC1D,IAAoB;AAGxB,aAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AACrC,YAAM,IAAO,EAAM,CAAA,GACb,IAAY,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE,MAGvC,IAAiB,EAAK,MAAM,WAAW;AAC7C,UAAI,KAAkB,CAAC,GAAa;AAClC,QAAA,IAAc;AACd,cAAM,IAAO,EAAe,CAAA;AAE5B,QAAI,MAAS,YACX,IAAY,YACH,MAAS,UAAU,MAAS,UACrC,IAAY,WAEZ,IAAY,QACZ,IAAY;AAMd,cAAM,IAAO,EAAW,KAAK,EAC3B,OAAO,+BAA+B,MAAc,YAAY,gCAAgC,MAAc,UAAU,8BAA8B,0BAAA,GACxJ,CAAC;AACD,QAAA,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC;AAAA,MACjE,WAES,KAAe,EAAK,MAAM,UAAU,GAAG;AAC9C,QAAA,IAAc;AAGd,cAAM,IAAO,EAAW,KAAK,EAC3B,OAAO,+BACT,CAAC;AACD,QAAA,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC,GAE/D,IAAY,MACZ,IAAY;AAAA,MACd,WAES,KAAe,GAAW;AACjC,cAAM,IAAY,MAAc,YAC5B,8DACA,MAAc,UACZ,4DACA,kEAAkE,CAAA,IAElE,IAAO,EAAW,KAAK,EAC3B,OAAO,EACT,CAAC;AACD,QAAA,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC;AAAA,MACjE;AAGA,UAAI,CAAC,GAAa;AAChB,cAAM,IAAmB;AACzB,YAAI;AACJ,gBAAQ,IAAQ,EAAiB,KAAK,CAAI,OAAO,QAAM;AACrD,gBAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,EAAM,CAAA,EAAG,QACrB,IAAO,EAAW,KAAK,EAC3B,OAAO,2BACT,CAAC;AACD,UAAA,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;AAAA,QACvC;AAGA,cAAM,IAAkB;AACxB,gBAAQ,IAAQ,EAAgB,KAAK,CAAI,OAAO,QAAM;AACpD,gBAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,EAAM,CAAA,EAAG,QACrB,IAAO,EAAW,KAAK,EAC3B,OAAO,0BACT,CAAC;AACD,UAAA,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAGA,WAAA,EAAY,KAAA,CAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAEnC,EAAW,IAAI,CAAW;AAAA,EACnC;AACF,GACA,EACE,aAAA,CAAc,MAAM,EAAE,YACxB,CACF,GAGM,IAAiB,EAAW,UAChC,MAAM;AAAA,EACJ;AAAA,EAEA,YAAY,GAAkB;AAC5B,SAAK,cAAc,KAAK,iBAAiB,CAAI;AAAA,EAC/C;AAAA,EAEA,OAAO,GAAoB;AACzB,KAAI,EAAO,cAAc,EAAO,qBAC9B,KAAK,cAAc,KAAK,iBAAiB,EAAO,IAAI;AAAA,EAExD;AAAA,EAEA,iBAAiB,GAAiC;AAChD,UAAM,IAAc,CAAC,GAEf,IADO,EAAK,MAAM,IAAI,SACd,EAAK,MAAM;AAAA,CAAI;AAE7B,aAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AACrC,YAAM,IAAO,EAAM,CAAA,GACb,IAAY,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE;AAG7C,UAAI,EAAK,SAAS,GAAG,KAAK,EAAK,KAAK,EAAE,WAAW,GAAG,GAAG;AAKrD,cAAM,IAAY;AAClB,YAAI;AACJ,gBAAQ,IAAQ,EAAU,KAAK,CAAI,OAAO,QAAM;AAC9C,gBAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,GACZ,IAAW,EAAW,KAAK,EAC/B,OAAO,yBACT,CAAC;AACD,UAAA,EAAY,KAAK,EAAS,MAAM,GAAM,CAAE,CAAC;AAAA,QAC3C;AAAA,MACF;AAGA,UAAI,EAAK,MAAM,oBAAoB,GAAG;AACpC,cAAM,IAAO,EAAW,KAAK,EAC3B,OAAO,8BACT,CAAC;AACD,QAAA,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC;AAAA,MACjE;AAAA,IACF;AAGA,WAAA,EAAY,KAAA,CAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAEnC,EAAW,IAAI,CAAW;AAAA,EACnC;AACF,GACA,EACE,aAAA,CAAc,MAAM,EAAE,YACxB,CACF,GAGM,IAAuB,EAAW,iBAAiB,EACvD,WAAA,CAAY,GAAO,MAAS;AACX,EAAA,EAAM;AACrB,QAAM,IAAM,EAAK,YAAY;AAAA,IAAE,GAAG,EAAM;AAAA,IAAS,GAAG,EAAM;AAAA,EAAQ,CAAC;AAEnE,MAAI,MAAQ,KAAM,QAAO;AAEzB,QAAM,IAAO,EAAK,MAAM,IAAI,OAAO,CAAG,GAChC,IAAW,EAAK,MAChB,IAAc,IAAM,EAAK,MAGzB,IAAW;AACjB,MAAI;AACJ,UAAQ,IAAQ,EAAS,KAAK,CAAQ,OAAO,QAAM;AACjD,UAAM,IAAa,EAAM,OACnB,IAAW,IAAa,EAAM,CAAA,EAAG;AAEvC,QAAI,KAAe,KAAc,KAAe,GAAU;AACxD,YAAM,IAAa,EAAM,CAAA,GAInB,IADO,EAAK,MAAM,IAAI,SACd,EAAK,MAAM;AAAA,CAAI;AAE7B,eAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AACrC,cAAM,IAAW,EAAM,CAAA,EAAG,MAAM,uBAAuB;AACvD,YAAI,KAAY,EAAS,CAAA,MAAO,GAAY;AAE1C,gBAAM,IAAa,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC;AAC5C,iBAAA,EAAK,SAAS;AAAA,YACZ,WAAW,EAAE,QAAQ,EAAW,KAAK;AAAA,YACrC,SAAS,EAAW,eAAe,EAAW,MAAM,EAAE,GAAG,SAAS,CAAC;AAAA,UACrE,CAAC,GAED,EAAM,eAAe,GACd;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,QAAM,IAAW,EAAS,MAAM,eAAe;AAC/C,MAAI,KAGE,KAFa,EAAS,CAAA,EAAG,QAEA;AAC3B,UAAM,IAAa,EAAS,CAAA,GAItB,IADO,EAAK,MAAM,IAAI,SACd,EAAK,MAAM;AAAA,CAAI;AAE7B,aAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,IAEhC,KAAI,IADiB,OAAO,SAAS,CAAA,YAAsB,GACvD,EAAS,KAAK,EAAM,CAAA,CAAE,GAAG;AAE3B,YAAM,IAAa,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC;AAC5C,aAAA,EAAK,SAAS;AAAA,QACZ,WAAW,EAAE,QAAQ,EAAW,KAAK;AAAA,QACrC,SAAS,EAAW,eAAe,EAAW,MAAM,EAAE,GAAG,SAAS,CAAC;AAAA,MACrE,CAAC,GAED,EAAM,eAAe,GACd;AAAA,IACT;AAAA,EAEJ;AAGF,SAAO;AACT,EACF,CAAC,GAGK,IAAqB,EAAW,UACpC,MAAM;AAAA,EACJ;AAAA,EAEA,YAAY,GAAkB;AAC5B,SAAK,cAAc,KAAK,iBAAiB,CAAI;AAAA,EAC/C;AAAA,EAEA,OAAO,GAAoB;AACzB,KAAI,EAAO,cAAc,EAAO,qBAC9B,KAAK,cAAc,KAAK,iBAAiB,EAAO,IAAI;AAAA,EAExD;AAAA,EAEA,iBAAiB,GAAiC;AAChD,UAAM,IAAc,CAAC,GAEf,IADO,EAAK,MAAM,IAAI,SACd,EAAK,MAAM;AAAA,CAAI;AAE7B,aAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AACrC,YAAM,IAAO,EAAM,CAAA,GACb,IAAY,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE,MAGvC,IAAW;AACjB,UAAI;AACJ,cAAQ,IAAQ,EAAS,KAAK,CAAI,OAAO,QAAM;AAC7C,cAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,EAAM,CAAA,EAAG,QACrB,IAAO,EAAW,KAAK;AAAA,UAC3B,OAAO;AAAA,UACP,YAAY,EAAE,OAAO,8EAA8E;AAAA,QACrG,CAAC;AACD,QAAA,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;AAAA,MACvC;AAGA,YAAM,IAAW,EAAK,MAAM,eAAe;AAC3C,UAAI,GAAU;AACZ,cAAM,IAAO,GACP,IAAK,IAAO,EAAS,CAAA,EAAG,QACxB,IAAO,EAAW,KAAK;AAAA,UAC3B,OAAO;AAAA,UACP,YAAY,EAAE,OAAO,sCAAsC;AAAA,QAC7D,CAAC;AACD,QAAA,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;AAAA,MACvC;AAAA,IACF;AAGA,WAAA,EAAY,KAAA,CAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAEnC,EAAW,IAAI,CAAW;AAAA,EACnC;AACF,GACA,EACE,aAAA,CAAc,MAAM,EAAE,YACxB,CACF,GAGa,IAAA,CAA2B,MAAoC;AAC1E,QAAM,IAA8B,CAAC,GAC/B,IAAQ,EAAK,MAAM;AAAA,CAAI;AAE7B,WAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AAErC,UAAM,IADO,EAAM,CAAA,EACA,MAAM,mBAAmB;AAE5C,QAAI,GAAO;AACT,YAAM,IAAQ,EAAM,CAAA,EAAG,QACjB,IAAQ,EAAM,CAAA,EAAG,KAAK,GACtB,IAAK,EACR,YAAY,EACZ,QAAQ,aAAa,EAAE,EACvB,QAAQ,QAAQ,GAAG;AAEtB,MAAA,EAAS,KAAK;AAAA,QACZ,OAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAM,IAAI;AAAA,QACV,IAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT,GAGa,IAAA,CAAoB,MAAiC;AAEhE,QAAM,IAAQ,EAAK,MAAM;AAAA,CAAI,GACvB,IAAc,oBAAI,IAA0B;AAElD,WAAS,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;AACrC,UAAM,IAAO,EAAM,CAAA,GAGb,IAAW;AACjB,QAAI;AACJ,YAAQ,IAAQ,EAAS,KAAK,CAAI,OAAO,QAAM;AAC7C,YAAM,IAAK,EAAM,CAAA,GACX,IAAW,EAAY,IAAI,CAAE;AACnC,MAAI,KAEG,EAAS,mBACZ,EAAS,iBAAiB,CAAC,EAAS,IAAI,IAE1C,EAAS,eAAe,KAAK,IAAI,CAAC,KAGlC,EAAY,IAAI,GAAI;AAAA,QAClB,IAAA;AAAA,QACA,MAAM,IAAI;AAAA,QACV,gBAAgB,CAAC,IAAI,CAAC;AAAA,MACxB,CAAC;AAAA,IAEL;AAGA,UAAM,IAAW,EAAK,MAAM,uBAAuB;AACnD,QAAI,GAAU;AACZ,YAAM,IAAK,EAAS,CAAA,GACd,IAAW,EAAY,IAAI,CAAE;AACnC,MAAI,IACF,EAAS,iBAAiB,IAAI,IAE9B,EAAY,IAAI,GAAI;AAAA,QAClB,IAAA;AAAA,QACA,MAAM,IAAI;AAAA,QACV,gBAAgB,IAAI;AAAA,QACpB,gBAAgB,CAAC;AAAA,MACnB,CAAC;AAAA,IAEL;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,EAAY,OAAO,CAAC;AACxC,GAGa,IAAA,MACJ,EAAe,EACpB,UAAU,CAAA,CACP,MAAwD;AACvD,QAAM,IAAO,EAAQ,YAAY,KAAK;AACtC,MAAI,CAAC,KAAS,EAAK,SAAS,EAAK,MAAM,CAAC,EAAQ,SAC9C,QAAO;AAGT,QAAM,IAAU,CAAC,GACX,IAAW,EAAK,KAAK,YAAY,GAGjC,IAAO,EAAQ,MAAM,IAAI,OAAO,EAAQ,GAAG,GAC3C,IAAW,EAAK;AACE,EAAA,EAAQ,MAAM,EAAK,MAGvB,EAAS,KAAK;AAGlC,QAAM,IAAgB;AAAA,IACpB;AAAA,MAAE,OAAO;AAAA,MAAK,QAAQ;AAAA,MAAa,OAAO;AAAA,MAAc,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACnF;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAa,OAAO;AAAA,MAAe,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACrF;AAAA,MAAE,OAAO;AAAA,MAAO,QAAQ;AAAA,MAAa,OAAO;AAAA,MAAgB,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACvF;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,MAAa,OAAO;AAAA,MAAiB,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACzF;AAAA,MAAE,OAAO;AAAA,MAAS,QAAQ;AAAA,MAAa,OAAO;AAAA,MAAkB,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IAC3F;AAAA,MAAE,OAAO;AAAA,MAAU,QAAQ;AAAA,MAAa,OAAO;AAAA,MAAmB,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IAC7F;AAAA,MAAE,OAAO;AAAA,MAAK,QAAQ;AAAA,MAAkB,OAAO;AAAA,MAAa,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACvF;AAAA,MAAE,OAAO;AAAA,MAAK,QAAQ;AAAA,MAAkB,OAAO;AAAA,MAAa,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACvF;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAgB,OAAO;AAAA,MAAc,MAAM;AAAA,MAAW,OAAO;AAAA,IAAG;AAAA,IACvF;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAe,OAAO;AAAA,MAAc,MAAM;AAAA,IAAU;AAAA,IAC3E;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAgB,OAAO;AAAA,MAAe,MAAM;AAAA,IAAU;AAAA,IAC7E;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAiB,OAAO;AAAA,MAAgB,MAAM;AAAA,IAAU;AAAA,IAC/E;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,MAAY,OAAO;AAAA,MAAe,MAAM;AAAA,IAAU;AAAA,IAC3E;AAAA,MAAE,OAAO;AAAA,MAAU,QAAQ;AAAA,MAAY,OAAO;AAAA,MAAa,MAAM;AAAA,IAAU;AAAA,IAC3E;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,MAAU,OAAO;AAAA,MAAa,MAAM;AAAA,IAAU;AAAA,IACvE;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,MAAe,OAAO;AAAA,MAAqB,MAAM;AAAA,IAAU;AAAA,IACpF;AAAA,MAAE,OAAO;AAAA,MAAS,QAAQ;AAAA,MAAe,OAAO;AAAA,MAAqB,MAAM;AAAA,IAAU;AAAA,IACrF;AAAA,MAAE,OAAO;AAAA,MAAS,QAAQ;AAAA,MAAW,OAAO;AAAA,MAAa,MAAM;AAAA,IAAU;AAAA,IACzE;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAU,OAAO;AAAA,MAAa,MAAM;AAAA,IAAU;AAAA,IACrE;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAW,OAAO;AAAA,MAAc,MAAM;AAAA,IAAU;AAAA,IACvE;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,MAAc,OAAO;AAAA,MAAiB,MAAM;AAAA,IAAU;AAAA,IAC/E;AAAA,MAAE,OAAO;AAAA,MAAM,QAAQ;AAAA,MAAO,OAAO;AAAA,MAAO,MAAM;AAAA,IAAU;AAAA,EAC9D,GAGM,IAAkB;AAAA,IACtB;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF,GAGM,IAAgB;AAAA,IACpB;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA;AAAA;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF,GAGM,IAAgB;AAAA,IACpB;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF,GAGM,IAAmB,CACvB;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR,GACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CACF,GAGM,IAAc;AAAA,IAClB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAGA,aAAW,KAAW,EACpB,EAAI,EAAQ,MAAM,WAAW,CAAQ,KAAK,MAAa,MAAM,EAAQ,aACnE,EAAQ,KAAK,CAAO;AAKxB,SAAI,EAAQ,WAAW,IACd,OAGF;AAAA,IACL,MAAM,EAAK;AAAA,IACX,SAAA;AAAA,EACF;AACF,CACF,EACF,CAAC,GAIU,IAAgB,EAAW,UAAU;AAAA,EAEhD,yBAAyB,EACvB,iBAAiB,sBACnB;AAAA,EAGA,wBAAwB,EACtB,iBAAiB,4BACnB;AAAA,EAKA,sCAAsC;AAAA,IACpC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,uCAAuC;AAAA,IACrC,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EAGA,qCAAqC;AAAA,IACnC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,sCAAsC;AAAA,IACpC,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EAGA,oCAAoC;AAAA,IAClC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,qCAAqC;AAAA,IACnC,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,oCAAoC;AAAA,IAClC,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,SAAS;AAAA,EACX;AAAA,EACA,mCAAmC;AAAA,IACjC,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EAGA,mCAAmC;AAAA,IACjC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,oCAAoC;AAAA,IAClC,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,mCAAmC;AAAA,IACjC,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,SAAS;AAAA,EACX;AAAA,EACA,kCAAkC;AAAA,IAChC,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,cAAc;AAAA,IACd,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EAGA,mCAAmC;AAAA,IACjC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,oCAAoC;AAAA,IAClC,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EAGA,kCAAkC;AAAA,IAChC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,mCAAmC;AAAA,IACjC,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EAGA,iCAAiC,EAC/B,iBAAiB,4BACnB;AAAA,EACA,kCAAkC;AAAA,IAChC,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,uCAAuC;AAAA,IACrC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EAGA,gCAAgC,EAC9B,iBAAiB,4BACnB;AAAA,EACA,iCAAiC;AAAA,IAC/B,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AAAA,EACA,sCAAsC;AAAA,IACpC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB;AAAA,EAGA,iCAAiC,EAC/B,YAAY,OACd;AAAA,EAGA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAAA,EAGA,oCAAoC;AAAA,IAClC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACd;AAAA,EACA,mCAAmC;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,YAAY;AAAA,EACd;AAAA,EACA,oCAAoC;AAAA,IAClC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,EACd;AAAA,EACA,mCAAmC;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,YAAY;AAAA,EACd;AACF,CAAC,GAGY,IAAA,MACJ;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,EAAuB;AAAA,EACvB;AACF"}
|
|
1
|
+
{"version":3,"file":"markdownExtensions.js","names":[],"sources":["../../../../../src/components/pro/CodeEditor/editors/markdownExtensions.ts"],"sourcesContent":["import { Extension } from '@codemirror/state';\nimport { EditorView, Decoration, DecorationSet, ViewPlugin, ViewUpdate } from '@codemirror/view';\nimport { syntaxTree } from '@codemirror/language';\nimport { CompletionContext, CompletionResult, autocompletion } from '@codemirror/autocomplete';\nimport { LanguageSupport } from '@codemirror/language';\nimport { javascript } from '@codemirror/lang-javascript';\nimport { python } from '@codemirror/lang-python';\nimport { html } from '@codemirror/lang-html';\nimport { css } from '@codemirror/lang-css';\nimport { json } from '@codemirror/lang-json';\n\n// Markdown 章节信息\nexport interface MarkdownSection {\n level: number;\n title: string;\n line: number;\n id: string;\n}\n\n// 脚注信息\nexport interface FootnoteInfo {\n id: string;\n line: number; // 第一次引用的行号\n definitionLine?: number; // 定义的行号\n referenceLines?: number[]; // 所有引用的行号列表\n}\n\n// 获取代码块语言支持\nconst getCodeBlockLanguage = (lang: string): LanguageSupport | null => {\n switch (lang.toLowerCase()) {\n case 'javascript':\n case 'js':\n case 'jsx':\n return javascript({ jsx: true });\n case 'typescript':\n case 'ts':\n case 'tsx':\n return javascript({ jsx: true, typescript: true });\n case 'python':\n case 'py':\n return python();\n case 'html':\n return html();\n case 'css':\n return css();\n case 'json':\n return json();\n default:\n return null;\n }\n};\n\n// Mermaid/KaTeX 块高亮 + 代码块语法高亮\nconst codeBlockHighlight = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations = [];\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n let inCodeBlock = false;\n let blockType: 'mermaid' | 'katex' | 'math' | 'code' | null = null;\n let blockLang: string = '';\n let blockStart = 0;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineStart = view.state.doc.line(i + 1).from;\n\n // 检测代码块开始\n const codeBlockStart = line.match(/^```(\\w+)/);\n if (codeBlockStart && !inCodeBlock) {\n inCodeBlock = true;\n const lang = codeBlockStart[1];\n\n if (lang === 'mermaid') {\n blockType = 'mermaid';\n } else if (lang === 'math' || lang === 'katex') {\n blockType = 'katex';\n } else {\n blockType = 'code';\n blockLang = lang;\n }\n\n blockStart = lineStart;\n\n // 高亮代码块标记\n const mark = Decoration.mark({\n class: `cm-markdown-codeblock-marker${blockType === 'mermaid' ? ' cm-markdown-mermaid-marker' : blockType === 'katex' ? ' cm-markdown-katex-marker' : ' cm-markdown-code-marker'}`,\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n }\n // 检测代码块结束\n else if (inCodeBlock && line.match(/^```\\s*$/)) {\n inCodeBlock = false;\n\n // 高亮代码块标记\n const mark = Decoration.mark({\n class: 'cm-markdown-codeblock-marker',\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n\n blockType = null;\n blockLang = '';\n }\n // 代码块内容高亮\n else if (inCodeBlock && blockType) {\n const className = blockType === 'mermaid'\n ? 'cm-markdown-codeblock-content cm-markdown-mermaid-content'\n : blockType === 'katex'\n ? 'cm-markdown-codeblock-content cm-markdown-katex-content'\n : `cm-markdown-codeblock-content cm-markdown-code-content cm-code-${blockLang}`;\n\n const mark = Decoration.mark({\n class: className,\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n }\n\n // 行内 KaTeX 高亮 $...$\n if (!inCodeBlock) {\n const inlineKatexRegex = /\\$([^$]+)\\$/g;\n let match;\n while ((match = inlineKatexRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + match[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-inline-katex',\n });\n decorations.push(mark.range(from, to));\n }\n\n // 块级 KaTeX 高亮 $$...$$\n const blockKatexRegex = /\\$\\$([^$]+)\\$\\$/g;\n while ((match = blockKatexRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + match[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-block-katex',\n });\n decorations.push(mark.range(from, to));\n }\n }\n }\n\n // 按位置排序装饰,避免 CodeMirror 错误\n decorations.sort((a, b) => a.from - b.from);\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n);\n\n// Markdown 表格高亮\nconst tableHighlight = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations = [];\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineStart = view.state.doc.line(i + 1).from;\n\n // 检测表格行 (包含 |)\n if (line.includes('|') && line.trim().startsWith('|')) {\n // 不要添加整行的装饰,只高亮管道符\n // 这样可以避免与管道符装饰重叠\n\n // 高亮表格分隔符 |\n const pipeRegex = /\\|/g;\n let match;\n while ((match = pipeRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + 1;\n const pipeMark = Decoration.mark({\n class: 'cm-markdown-table-pipe',\n });\n decorations.push(pipeMark.range(from, to));\n }\n }\n\n // 检测表格分隔行 |---|---|\n if (line.match(/^\\|?\\s*:?-+:?\\s*\\|/)) {\n const mark = Decoration.mark({\n class: 'cm-markdown-table-separator',\n });\n decorations.push(mark.range(lineStart, lineStart + line.length));\n }\n }\n\n // 按位置排序装饰,避免 CodeMirror 错误\n decorations.sort((a, b) => a.from - b.from);\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n);\n\n// 脚注点击跳转处理\nconst footnoteClickHandler = EditorView.domEventHandlers({\n mousedown: (event, view) => {\n const target = event.target as HTMLElement;\n const pos = view.posAtCoords({ x: event.clientX, y: event.clientY });\n\n if (pos === null) return false;\n\n const line = view.state.doc.lineAt(pos);\n const lineText = line.text;\n const clickOffset = pos - line.from;\n\n // 检查是否点击了脚注引用 [^id]\n const refRegex = /\\[\\^(\\w+)\\]/g;\n let match;\n while ((match = refRegex.exec(lineText)) !== null) {\n const matchStart = match.index;\n const matchEnd = matchStart + match[0].length;\n\n if (clickOffset >= matchStart && clickOffset <= matchEnd) {\n const footnoteId = match[1];\n\n // 查找脚注定义\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const defMatch = lines[i].match(/^\\[\\^(\\w+)\\]:\\s*(.+)$/);\n if (defMatch && defMatch[1] === footnoteId) {\n // 找到定义,跳转到该行\n const targetLine = view.state.doc.line(i + 1);\n view.dispatch({\n selection: { anchor: targetLine.from },\n effects: EditorView.scrollIntoView(targetLine.from, { y: 'center' })\n });\n\n event.preventDefault();\n return true;\n }\n }\n }\n }\n\n // 检查是否点击了脚注定义 [^id]:\n const defMatch = lineText.match(/^\\[\\^(\\w+)\\]:/);\n if (defMatch) {\n const matchEnd = defMatch[0].length;\n\n if (clickOffset <= matchEnd) {\n const footnoteId = defMatch[1];\n\n // 查找第一个引用\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const refRegex = new RegExp(`\\\\[\\\\^${footnoteId}\\\\](?!:)`, 'g');\n if (refRegex.test(lines[i])) {\n // 找到引用,跳转到该行\n const targetLine = view.state.doc.line(i + 1);\n view.dispatch({\n selection: { anchor: targetLine.from },\n effects: EditorView.scrollIntoView(targetLine.from, { y: 'center' })\n });\n\n event.preventDefault();\n return true;\n }\n }\n }\n }\n\n return false;\n }\n});\n\n// 脚注样式装饰 - 让脚注看起来可点击\nconst footnoteDecoration = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.buildDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.buildDecorations(update.view);\n }\n }\n\n buildDecorations(view: EditorView): DecorationSet {\n const decorations = [];\n const text = view.state.doc.toString();\n const lines = text.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const lineStart = view.state.doc.line(i + 1).from;\n\n // 脚注引用 [^id]\n const refRegex = /\\[\\^(\\w+)\\]/g;\n let match;\n while ((match = refRegex.exec(line)) !== null) {\n const from = lineStart + match.index;\n const to = from + match[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-footnote-ref',\n attributes: { style: 'cursor: pointer; text-decoration: underline; text-decoration-style: dotted;' }\n });\n decorations.push(mark.range(from, to));\n }\n\n // 脚注定义 [^id]:\n const defMatch = line.match(/^\\[\\^(\\w+)\\]:/);\n if (defMatch) {\n const from = lineStart;\n const to = from + defMatch[0].length;\n const mark = Decoration.mark({\n class: 'cm-markdown-footnote-def',\n attributes: { style: 'cursor: pointer; font-weight: bold;' }\n });\n decorations.push(mark.range(from, to));\n }\n }\n\n // 按位置排序装饰,避免 CodeMirror 错误\n decorations.sort((a, b) => a.from - b.from);\n\n return Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n);\n\n// 提取 Markdown 章节\nexport const extractMarkdownSections = (code: string): MarkdownSection[] => {\n const sections: MarkdownSection[] = [];\n const lines = code.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const match = line.match(/^(#{1,6})\\s+(.+)$/);\n\n if (match) {\n const level = match[1].length;\n const title = match[2].trim();\n const id = title\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/\\s+/g, '-');\n\n sections.push({\n level,\n title,\n line: i + 1,\n id,\n });\n }\n }\n\n return sections;\n};\n\n// 提取脚注\nexport const extractFootnotes = (code: string): FootnoteInfo[] => {\n const footnotes: FootnoteInfo[] = [];\n const lines = code.split('\\n');\n const footnoteMap = new Map<string, FootnoteInfo>();\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // 脚注引用 [^1]\n const refRegex = /\\[\\^(\\w+)\\]/g;\n let match;\n while ((match = refRegex.exec(line)) !== null) {\n const id = match[1];\n const existing = footnoteMap.get(id);\n if (existing) {\n // 已存在,添加到引用列表\n if (!existing.referenceLines) {\n existing.referenceLines = [existing.line];\n }\n existing.referenceLines.push(i + 1);\n } else {\n // 首次出现\n footnoteMap.set(id, {\n id,\n line: i + 1,\n referenceLines: [i + 1],\n });\n }\n }\n\n // 脚注定义 [^1]: ...\n const defMatch = line.match(/^\\[\\^(\\w+)\\]:\\s*(.+)$/);\n if (defMatch) {\n const id = defMatch[1];\n const existing = footnoteMap.get(id);\n if (existing) {\n existing.definitionLine = i + 1;\n } else {\n footnoteMap.set(id, {\n id,\n line: i + 1,\n definitionLine: i + 1,\n referenceLines: [],\n });\n }\n }\n }\n\n return Array.from(footnoteMap.values());\n};\n\n// Markdown 智能补全 - 改进版,支持更多触发方式\nexport const markdownAutocompletion = () => {\n return autocompletion({\n override: [\n (context: CompletionContext): CompletionResult | null => {\n const word = context.matchBefore(/\\S*/);\n if (!word || (word.from === word.to && !context.explicit)) {\n return null;\n }\n\n const options = [];\n const wordText = word.text.toLowerCase();\n\n // 获取当前行的文本,用于更好的上下文判断\n const line = context.state.doc.lineAt(context.pos);\n const lineText = line.text;\n const cursorPosInLine = context.pos - line.from;\n\n // 检查是否在行首输入特殊字符\n const isLineStart = lineText.trim() === wordText || cursorPosInLine <= 2;\n\n // Markdown 基础语法\n const basicSnippets = [\n { label: '#', detail: 'Heading 1', apply: '# ${title}', type: 'snippet', boost: 10 },\n { label: '##', detail: 'Heading 2', apply: '## ${title}', type: 'snippet', boost: 10 },\n { label: '###', detail: 'Heading 3', apply: '### ${title}', type: 'snippet', boost: 10 },\n { label: '####', detail: 'Heading 4', apply: '#### ${title}', type: 'snippet', boost: 10 },\n { label: '#####', detail: 'Heading 5', apply: '##### ${title}', type: 'snippet', boost: 10 },\n { label: '######', detail: 'Heading 6', apply: '###### ${title}', type: 'snippet', boost: 10 },\n { label: '-', detail: 'Unordered list', apply: '- ${item}', type: 'snippet', boost: 10 },\n { label: '*', detail: 'Unordered list', apply: '* ${item}', type: 'snippet', boost: 10 },\n { label: '1.', detail: 'Ordered list', apply: '1. ${item}', type: 'snippet', boost: 10 },\n { label: 'h1', detail: '# Heading 1', apply: '# ${title}', type: 'snippet' },\n { label: 'h2', detail: '## Heading 2', apply: '## ${title}', type: 'snippet' },\n { label: 'h3', detail: '### Heading 3', apply: '### ${title}', type: 'snippet' },\n { label: 'bold', detail: '**bold**', apply: '**${text}**', type: 'snippet' },\n { label: 'italic', detail: '*italic*', apply: '*${text}*', type: 'snippet' },\n { label: 'code', detail: '`code`', apply: '`${code}`', type: 'snippet' },\n { label: 'link', detail: '[text](url)', apply: '[${text}](${url})', type: 'snippet' },\n { label: 'image', detail: '', apply: '', type: 'snippet' },\n { label: 'quote', detail: '> quote', apply: '> ${text}', type: 'snippet' },\n { label: 'ul', detail: '- item', apply: '- ${item}', type: 'snippet' },\n { label: 'ol', detail: '1. item', apply: '1. ${item}', type: 'snippet' },\n { label: 'task', detail: '- [ ] task', apply: '- [ ] ${task}', type: 'snippet' },\n { label: 'hr', detail: '---', apply: '---', type: 'snippet' },\n ];\n\n // Mermaid 图表 - 支持通过图表类型触发\n const mermaidSnippets = [\n {\n label: 'mermaid',\n detail: 'Mermaid diagram',\n apply: '```mermaid\\ngraph TD\\n A[${Start}] --> B[${End}]\\n```',\n type: 'snippet',\n },\n {\n label: 'flowchart',\n detail: 'Mermaid flowchart',\n apply: '```mermaid\\nflowchart LR\\n A[${Start}] --> B{${Decision}}\\n B -->|Yes| C[${Option 1}]\\n B -->|No| D[${Option 2}]\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'sequence',\n detail: 'Mermaid sequence diagram',\n apply: '```mermaid\\nsequenceDiagram\\n participant A as ${Alice}\\n participant B as ${Bob}\\n A->>B: ${Hello Bob}\\n B->>A: ${Hello Alice}\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'gantt',\n detail: 'Mermaid Gantt chart',\n apply: '```mermaid\\ngantt\\n title ${Project Timeline}\\n dateFormat YYYY-MM-DD\\n section ${Phase 1}\\n ${Task 1} :a1, 2024-01-01, 30d\\n ${Task 2} :after a1, 20d\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'pie',\n detail: 'Mermaid pie chart',\n apply: '```mermaid\\npie title ${Distribution}\\n \"${Category A}\" : ${45}\\n \"${Category B}\" : ${30}\\n \"${Category C}\" : ${25}\\n```',\n type: 'snippet',\n boost: 5,\n },\n {\n label: 'mermaid-flowchart',\n detail: 'Mermaid flowchart (alias)',\n apply: '```mermaid\\nflowchart LR\\n A[${Start}] --> B{${Decision}}\\n B -->|Yes| C[${Option 1}]\\n B -->|No| D[${Option 2}]\\n```',\n type: 'snippet',\n },\n {\n label: 'mermaid-sequence',\n detail: 'Mermaid sequence diagram (alias)',\n apply: '```mermaid\\nsequenceDiagram\\n participant A as ${Alice}\\n participant B as ${Bob}\\n A->>B: ${Hello Bob}\\n B->>A: ${Hello Alice}\\n```',\n type: 'snippet',\n },\n ];\n\n // KaTeX 数学公式\n const katexSnippets = [\n {\n label: 'math',\n detail: 'Math block',\n apply: '```math\\n${formula}\\n```',\n type: 'snippet',\n },\n {\n label: 'inline-math',\n detail: 'Inline math $...$',\n apply: '$${formula}$',\n type: 'snippet',\n },\n {\n label: 'block-math',\n detail: 'Block math $$...$$',\n apply: '$$\\n${formula}\\n$$',\n type: 'snippet',\n },\n {\n label: 'fraction',\n detail: 'Fraction',\n apply: '\\\\frac{${numerator}}{${denominator}}',\n type: 'snippet',\n },\n {\n label: 'sqrt',\n detail: 'Square root',\n apply: '\\\\sqrt{${x}}',\n type: 'snippet',\n },\n {\n label: 'sum',\n detail: 'Summation',\n apply: '\\\\sum_{${i=1}}^{${n}} ${x_i}',\n type: 'snippet',\n },\n {\n label: 'integral',\n detail: 'Integral',\n apply: '\\\\int_{${a}}^{${b}} ${f(x)} dx',\n type: 'snippet',\n },\n {\n label: 'matrix',\n detail: 'Matrix',\n apply: '\\\\begin{bmatrix}\\n${a} & ${b} \\\\\\\\\\n${c} & ${d}\\n\\\\end{bmatrix}',\n type: 'snippet',\n },\n ];\n\n // Markdown 表格\n const tableSnippets = [\n {\n label: 'table',\n detail: 'Markdown table',\n apply: '| ${Column 1} | ${Column 2} | ${Column 3} |\\n|------------|------------|------------|\\n| ${Cell 1} | ${Cell 2} | ${Cell 3} |\\n| ${Cell 4} | ${Cell 5} | ${Cell 6} |',\n type: 'snippet',\n },\n {\n label: 'table-2col',\n detail: '2-column table',\n apply: '| ${Column 1} | ${Column 2} |\\n|------------|------------|\\n| ${Cell 1} | ${Cell 2} |\\n| ${Cell 3} | ${Cell 4} |',\n type: 'snippet',\n },\n {\n label: 'table-align',\n detail: 'Table with alignment',\n apply: '| ${Left} | ${Center} | ${Right} |\\n|:--------|:---------:|---------:|\\n| ${L1} | ${C1} | ${R1} |\\n| ${L2} | ${C2} | ${R2} |',\n type: 'snippet',\n },\n ];\n\n // 脚注\n const footnoteSnippets = [\n {\n label: 'footnote',\n detail: 'Footnote reference',\n apply: '[^${1}]',\n type: 'snippet',\n },\n {\n label: 'footnote-def',\n detail: 'Footnote definition',\n apply: '[^${1}]: ${definition}',\n type: 'snippet',\n },\n ];\n\n // 合并所有补全选项\n const allSnippets = [\n ...basicSnippets,\n ...mermaidSnippets,\n ...katexSnippets,\n ...tableSnippets,\n ...footnoteSnippets,\n ];\n\n // 过滤匹配的选项\n for (const snippet of allSnippets) {\n if (snippet.label.startsWith(wordText) || wordText === '' || context.explicit) {\n options.push(snippet);\n }\n }\n\n // 如果没有匹配项,返回 null 让其他补全源处理\n if (options.length === 0) {\n return null;\n }\n\n return {\n from: word.from,\n options,\n };\n },\n ],\n });\n};\n\n// Markdown 样式 - 改进选中背景和其他样式\nexport const markdownTheme = EditorView.baseTheme({\n // 活动行背景 - Light 模式(降低不透明度,让选中更明显)\n '&light .cm-activeLine': {\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n },\n\n // 活动行背景 - Dark 模式(降低不透明度,让选中更明显)\n '&dark .cm-activeLine': {\n backgroundColor: 'rgba(255, 255, 255, 0.05)',\n },\n\n // 选中文本背景由 CodeEditor 主主题统一控制,避免重复定义\n\n // Mermaid 块 - Light 模式\n '&light .cm-markdown-mermaid-marker': {\n color: '#10b981',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-mermaid-content': {\n backgroundColor: 'rgba(16, 185, 129, 0.1)',\n color: '#059669',\n },\n\n // Mermaid 块 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-mermaid-marker': {\n color: '#6ee7b7',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-mermaid-content': {\n backgroundColor: 'rgba(52, 211, 153, 0.15)',\n color: '#a7f3d0',\n },\n\n // KaTeX 块 - Light 模式\n '&light .cm-markdown-katex-marker': {\n color: '#3b82f6',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-katex-content': {\n backgroundColor: 'rgba(59, 130, 246, 0.1)',\n color: '#2563eb',\n },\n '&light .cm-markdown-inline-katex': {\n backgroundColor: 'rgba(59, 130, 246, 0.15)',\n color: '#1d4ed8',\n borderRadius: '2px',\n padding: '1px 3px',\n },\n '&light .cm-markdown-block-katex': {\n backgroundColor: 'rgba(59, 130, 246, 0.15)',\n color: '#1d4ed8',\n borderRadius: '2px',\n padding: '2px 4px',\n display: 'inline-block',\n },\n\n // KaTeX 块 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-katex-marker': {\n color: '#93c5fd',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-katex-content': {\n backgroundColor: 'rgba(96, 165, 250, 0.15)',\n color: '#bfdbfe',\n },\n '&dark .cm-markdown-inline-katex': {\n backgroundColor: 'rgba(96, 165, 250, 0.2)',\n color: '#e0f2fe',\n borderRadius: '2px',\n padding: '1px 3px',\n },\n '&dark .cm-markdown-block-katex': {\n backgroundColor: 'rgba(96, 165, 250, 0.2)',\n color: '#e0f2fe',\n borderRadius: '2px',\n padding: '2px 4px',\n display: 'inline-block',\n },\n\n // 代码块 - Light 模式\n '&light .cm-markdown-code-marker': {\n color: '#6b7280',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-code-content': {\n backgroundColor: 'rgba(100, 116, 139, 0.08)',\n color: '#334155',\n fontFamily: 'monospace',\n },\n\n // 代码块 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-code-marker': {\n color: '#d1d5db',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-code-content': {\n backgroundColor: 'rgba(148, 163, 184, 0.1)',\n color: '#e5e7eb',\n fontFamily: 'monospace',\n },\n\n // 表格 - Light 模式\n '&light .cm-markdown-table-row': {\n backgroundColor: 'rgba(100, 116, 139, 0.05)',\n },\n '&light .cm-markdown-table-pipe': {\n color: '#64748b',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-table-separator': {\n color: '#94a3b8',\n fontWeight: 'bold',\n backgroundColor: 'rgba(100, 116, 139, 0.1)',\n },\n\n // 表格 - Dark 模式 - 使用更亮的颜色\n '&dark .cm-markdown-table-row': {\n backgroundColor: 'rgba(148, 163, 184, 0.08)',\n },\n '&dark .cm-markdown-table-pipe': {\n color: '#d1d5db',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-table-separator': {\n color: '#e5e7eb',\n fontWeight: 'bold',\n backgroundColor: 'rgba(148, 163, 184, 0.15)',\n },\n\n // 代码块标记\n '.cm-markdown-codeblock-marker': {\n fontWeight: 'bold',\n },\n\n // 目录面板样式 - 修复展开按钮遮挡\n '.toc-panel': {\n position: 'relative',\n zIndex: 1,\n },\n\n // 脚注样式\n '&light .cm-markdown-footnote-ref': {\n color: '#3b82f6',\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-footnote-ref': {\n color: '#93c5fd',\n cursor: 'pointer',\n textDecoration: 'none',\n fontWeight: 'bold',\n },\n '&light .cm-markdown-footnote-def': {\n color: '#059669',\n cursor: 'pointer',\n fontWeight: 'bold',\n },\n '&dark .cm-markdown-footnote-def': {\n color: '#6ee7b7',\n cursor: 'pointer',\n fontWeight: 'bold',\n },\n});\n\n// 导出所有 Markdown 扩展\nexport const markdownExtensions = (): Extension[] => {\n return [\n codeBlockHighlight,\n tableHighlight,\n footnoteDecoration,\n footnoteClickHandler,\n markdownAutocompletion(),\n markdownTheme\n ];\n};\n"],"mappings":";;;;;;;;AAqDA,IAAM,IAAqB,EAAW,UACpC,MAAM;CACJ;CAEA,YAAY,GAAkB;EAC5B,KAAK,cAAc,KAAK,iBAAiB,CAAI;CAC/C;CAEA,OAAO,GAAoB;EACzB,CAAI,EAAO,cAAc,EAAO,qBAC9B,KAAK,cAAc,KAAK,iBAAiB,EAAO,IAAI;CAExD;CAEA,iBAAiB,GAAiC;EAChD,IAAM,IAAc,CAAC,GAEf,IADO,EAAK,MAAM,IAAI,SACd,CAAA,CAAK,MAAM,IAAI,GAEzB,IAAc,IACd,IAA0D,MAC1D,IAAoB;EAGxB,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;GACrC,IAAM,IAAO,EAAM,IACb,IAAY,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAGvC,IAAiB,EAAK,MAAM,WAAW;GAC7C,IAAI,KAAkB,CAAC,GAAa;IAClC,IAAc;IACd,IAAM,IAAO,EAAe;IAE5B,AAAI,MAAS,YACX,IAAY,YACH,MAAS,UAAU,MAAS,UACrC,IAAY,WAEZ,IAAY,QACZ,IAAY;IAMd,IAAM,IAAO,EAAW,KAAK,EAC3B,OAAO,+BAA+B,MAAc,YAAY,gCAAgC,MAAc,UAAU,8BAA8B,6BACxJ,CAAC;IACD,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC;GACjE,OAEK,IAAI,KAAe,EAAK,MAAM,UAAU,GAAG;IAC9C,IAAc;IAGd,IAAM,IAAO,EAAW,KAAK,EAC3B,OAAO,+BACT,CAAC;IAID,AAHA,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC,GAE/D,IAAY,MACZ,IAAY;GACd,OAEK,IAAI,KAAe,GAAW;IACjC,IAAM,IAAY,MAAc,YAC5B,8DACA,MAAc,UACZ,4DACA,kEAAkE,KAElE,IAAO,EAAW,KAAK,EAC3B,OAAO,EACT,CAAC;IACD,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC;GACjE;GAGA,IAAI,CAAC,GAAa;IAChB,IAAM,IAAmB,gBACrB;IACJ,QAAQ,IAAQ,EAAiB,KAAK,CAAI,OAAO,OAAM;KACrD,IAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,EAAM,EAAE,CAAC,QACrB,IAAO,EAAW,KAAK,EAC3B,OAAO,2BACT,CAAC;KACD,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;IACvC;IAGA,IAAM,IAAkB;IACxB,QAAQ,IAAQ,EAAgB,KAAK,CAAI,OAAO,OAAM;KACpD,IAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,EAAM,EAAE,CAAC,QACrB,IAAO,EAAW,KAAK,EAC3B,OAAO,0BACT,CAAC;KACD,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;IACvC;GACF;EACF;EAKA,OAFA,EAAY,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAEnC,EAAW,IAAI,CAAW;CACnC;AACF,GACA,EACE,cAAc,MAAM,EAAE,YACxB,CACF,GAGM,IAAiB,EAAW,UAChC,MAAM;CACJ;CAEA,YAAY,GAAkB;EAC5B,KAAK,cAAc,KAAK,iBAAiB,CAAI;CAC/C;CAEA,OAAO,GAAoB;EACzB,CAAI,EAAO,cAAc,EAAO,qBAC9B,KAAK,cAAc,KAAK,iBAAiB,EAAO,IAAI;CAExD;CAEA,iBAAiB,GAAiC;EAChD,IAAM,IAAc,CAAC,GAEf,IADO,EAAK,MAAM,IAAI,SACd,CAAA,CAAK,MAAM,IAAI;EAE7B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;GACrC,IAAM,IAAO,EAAM,IACb,IAAY,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;GAG7C,IAAI,EAAK,SAAS,GAAG,KAAK,EAAK,KAAK,CAAC,CAAC,WAAW,GAAG,GAAG;IAKrD,IAAM,IAAY,OACd;IACJ,QAAQ,IAAQ,EAAU,KAAK,CAAI,OAAO,OAAM;KAC9C,IAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,GACZ,IAAW,EAAW,KAAK,EAC/B,OAAO,yBACT,CAAC;KACD,EAAY,KAAK,EAAS,MAAM,GAAM,CAAE,CAAC;IAC3C;GACF;GAGA,IAAI,EAAK,MAAM,oBAAoB,GAAG;IACpC,IAAM,IAAO,EAAW,KAAK,EAC3B,OAAO,8BACT,CAAC;IACD,EAAY,KAAK,EAAK,MAAM,GAAW,IAAY,EAAK,MAAM,CAAC;GACjE;EACF;EAKA,OAFA,EAAY,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAEnC,EAAW,IAAI,CAAW;CACnC;AACF,GACA,EACE,cAAc,MAAM,EAAE,YACxB,CACF,GAGM,IAAuB,EAAW,iBAAiB,EACvD,YAAY,GAAO,MAAS;CACX,EAAM;CACrB,IAAM,IAAM,EAAK,YAAY;EAAE,GAAG,EAAM;EAAS,GAAG,EAAM;CAAQ,CAAC;CAEnE,IAAI,MAAQ,MAAM,OAAO;CAEzB,IAAM,IAAO,EAAK,MAAM,IAAI,OAAO,CAAG,GAChC,IAAW,EAAK,MAChB,IAAc,IAAM,EAAK,MAGzB,IAAW,gBACb;CACJ,QAAQ,IAAQ,EAAS,KAAK,CAAQ,OAAO,OAAM;EACjD,IAAM,IAAa,EAAM,OACnB,IAAW,IAAa,EAAM,EAAE,CAAC;EAEvC,IAAI,KAAe,KAAc,KAAe,GAAU;GACxD,IAAM,IAAa,EAAM,IAInB,IADO,EAAK,MAAM,IAAI,SACd,CAAA,CAAK,MAAM,IAAI;GAE7B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;IACrC,IAAM,IAAW,EAAM,EAAE,CAAC,MAAM,uBAAuB;IACvD,IAAI,KAAY,EAAS,OAAO,GAAY;KAE1C,IAAM,IAAa,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC;KAO5C,OANA,EAAK,SAAS;MACZ,WAAW,EAAE,QAAQ,EAAW,KAAK;MACrC,SAAS,EAAW,eAAe,EAAW,MAAM,EAAE,GAAG,SAAS,CAAC;KACrE,CAAC,GAED,EAAM,eAAe,GACd;IACT;GACF;EACF;CACF;CAGA,IAAM,IAAW,EAAS,MAAM,eAAe;CAC/C,IAAI,KAGE,KAFa,EAAS,EAAE,CAAC,QAEA;EAC3B,IAAM,IAAa,EAAS,IAItB,IADO,EAAK,MAAM,IAAI,SACd,CAAA,CAAK,MAAM,IAAI;EAE7B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAEhC,IADqB,OAAO,SAAS,EAAW,WAAW,GACvD,CAAA,CAAS,KAAK,EAAM,EAAE,GAAG;GAE3B,IAAM,IAAa,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC;GAO5C,OANA,EAAK,SAAS;IACZ,WAAW,EAAE,QAAQ,EAAW,KAAK;IACrC,SAAS,EAAW,eAAe,EAAW,MAAM,EAAE,GAAG,SAAS,CAAC;GACrE,CAAC,GAED,EAAM,eAAe,GACd;EACT;CAEJ;CAGF,OAAO;AACT,EACF,CAAC,GAGK,IAAqB,EAAW,UACpC,MAAM;CACJ;CAEA,YAAY,GAAkB;EAC5B,KAAK,cAAc,KAAK,iBAAiB,CAAI;CAC/C;CAEA,OAAO,GAAoB;EACzB,CAAI,EAAO,cAAc,EAAO,qBAC9B,KAAK,cAAc,KAAK,iBAAiB,EAAO,IAAI;CAExD;CAEA,iBAAiB,GAAiC;EAChD,IAAM,IAAc,CAAC,GAEf,IADO,EAAK,MAAM,IAAI,SACd,CAAA,CAAK,MAAM,IAAI;EAE7B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;GACrC,IAAM,IAAO,EAAM,IACb,IAAY,EAAK,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAGvC,IAAW,gBACb;GACJ,QAAQ,IAAQ,EAAS,KAAK,CAAI,OAAO,OAAM;IAC7C,IAAM,IAAO,IAAY,EAAM,OACzB,IAAK,IAAO,EAAM,EAAE,CAAC,QACrB,IAAO,EAAW,KAAK;KAC3B,OAAO;KACP,YAAY,EAAE,OAAO,8EAA8E;IACrG,CAAC;IACD,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;GACvC;GAGA,IAAM,IAAW,EAAK,MAAM,eAAe;GAC3C,IAAI,GAAU;IACZ,IAAM,IAAO,GACP,IAAK,IAAO,EAAS,EAAE,CAAC,QACxB,IAAO,EAAW,KAAK;KAC3B,OAAO;KACP,YAAY,EAAE,OAAO,sCAAsC;IAC7D,CAAC;IACD,EAAY,KAAK,EAAK,MAAM,GAAM,CAAE,CAAC;GACvC;EACF;EAKA,OAFA,EAAY,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,GAEnC,EAAW,IAAI,CAAW;CACnC;AACF,GACA,EACE,cAAc,MAAM,EAAE,YACxB,CACF,GAGa,KAA2B,MAAoC;CAC1E,IAAM,IAA8B,CAAC,GAC/B,IAAQ,EAAK,MAAM,IAAI;CAE7B,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;EAErC,IAAM,IADO,EAAM,EACL,CAAK,MAAM,mBAAmB;EAE5C,IAAI,GAAO;GACT,IAAM,IAAQ,EAAM,EAAE,CAAC,QACjB,IAAQ,EAAM,EAAE,CAAC,KAAK,GACtB,IAAK,EACR,YAAY,CAAC,CACb,QAAQ,aAAa,EAAE,CAAC,CACxB,QAAQ,QAAQ,GAAG;GAEtB,EAAS,KAAK;IACZ;IACA;IACA,MAAM,IAAI;IACV;GACF,CAAC;EACH;CACF;CAEA,OAAO;AACT,GAGa,KAAoB,MAAiC;CAEhE,IAAM,IAAQ,EAAK,MAAM,IAAI,GACvB,oBAAc,IAAI,IAA0B;CAElD,KAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,KAAK;EACrC,IAAM,IAAO,EAAM,IAGb,IAAW,gBACb;EACJ,QAAQ,IAAQ,EAAS,KAAK,CAAI,OAAO,OAAM;GAC7C,IAAM,IAAK,EAAM,IACX,IAAW,EAAY,IAAI,CAAE;GACnC,AAAI,KAEF,AACE,EAAS,mBAAiB,CAAC,EAAS,IAAI,GAE1C,EAAS,eAAe,KAAK,IAAI,CAAC,KAGlC,EAAY,IAAI,GAAI;IAClB;IACA,MAAM,IAAI;IACV,gBAAgB,CAAC,IAAI,CAAC;GACxB,CAAC;EAEL;EAGA,IAAM,IAAW,EAAK,MAAM,uBAAuB;EACnD,IAAI,GAAU;GACZ,IAAM,IAAK,EAAS,IACd,IAAW,EAAY,IAAI,CAAE;GACnC,AAAI,IACF,EAAS,iBAAiB,IAAI,IAE9B,EAAY,IAAI,GAAI;IAClB;IACA,MAAM,IAAI;IACV,gBAAgB,IAAI;IACpB,gBAAgB,CAAC;GACnB,CAAC;EAEL;CACF;CAEA,OAAO,MAAM,KAAK,EAAY,OAAO,CAAC;AACxC,GAGa,UACJ,EAAe,EACpB,UAAU,EACP,MAAwD;CACvD,IAAM,IAAO,EAAQ,YAAY,KAAK;CACtC,IAAI,CAAC,KAAS,EAAK,SAAS,EAAK,MAAM,CAAC,EAAQ,UAC9C,OAAO;CAGT,IAAM,IAAU,CAAC,GACX,IAAW,EAAK,KAAK,YAAY,GAGjC,IAAO,EAAQ,MAAM,IAAI,OAAO,EAAQ,GAAG,GAC3C,IAAW,EAAK;CAIF,AAHI,EAAQ,MAAM,EAAK,MAGvB,EAAS,KAAK;CAGlC,IAAM,IAAgB;EACpB;GAAE,OAAO;GAAK,QAAQ;GAAa,OAAO;GAAc,MAAM;GAAW,OAAO;EAAG;EACnF;GAAE,OAAO;GAAM,QAAQ;GAAa,OAAO;GAAe,MAAM;GAAW,OAAO;EAAG;EACrF;GAAE,OAAO;GAAO,QAAQ;GAAa,OAAO;GAAgB,MAAM;GAAW,OAAO;EAAG;EACvF;GAAE,OAAO;GAAQ,QAAQ;GAAa,OAAO;GAAiB,MAAM;GAAW,OAAO;EAAG;EACzF;GAAE,OAAO;GAAS,QAAQ;GAAa,OAAO;GAAkB,MAAM;GAAW,OAAO;EAAG;EAC3F;GAAE,OAAO;GAAU,QAAQ;GAAa,OAAO;GAAmB,MAAM;GAAW,OAAO;EAAG;EAC7F;GAAE,OAAO;GAAK,QAAQ;GAAkB,OAAO;GAAa,MAAM;GAAW,OAAO;EAAG;EACvF;GAAE,OAAO;GAAK,QAAQ;GAAkB,OAAO;GAAa,MAAM;GAAW,OAAO;EAAG;EACvF;GAAE,OAAO;GAAM,QAAQ;GAAgB,OAAO;GAAc,MAAM;GAAW,OAAO;EAAG;EACvF;GAAE,OAAO;GAAM,QAAQ;GAAe,OAAO;GAAc,MAAM;EAAU;EAC3E;GAAE,OAAO;GAAM,QAAQ;GAAgB,OAAO;GAAe,MAAM;EAAU;EAC7E;GAAE,OAAO;GAAM,QAAQ;GAAiB,OAAO;GAAgB,MAAM;EAAU;EAC/E;GAAE,OAAO;GAAQ,QAAQ;GAAY,OAAO;GAAe,MAAM;EAAU;EAC3E;GAAE,OAAO;GAAU,QAAQ;GAAY,OAAO;GAAa,MAAM;EAAU;EAC3E;GAAE,OAAO;GAAQ,QAAQ;GAAU,OAAO;GAAa,MAAM;EAAU;EACvE;GAAE,OAAO;GAAQ,QAAQ;GAAe,OAAO;GAAqB,MAAM;EAAU;EACpF;GAAE,OAAO;GAAS,QAAQ;GAAe,OAAO;GAAqB,MAAM;EAAU;EACrF;GAAE,OAAO;GAAS,QAAQ;GAAW,OAAO;GAAa,MAAM;EAAU;EACzE;GAAE,OAAO;GAAM,QAAQ;GAAU,OAAO;GAAa,MAAM;EAAU;EACrE;GAAE,OAAO;GAAM,QAAQ;GAAW,OAAO;GAAc,MAAM;EAAU;EACvE;GAAE,OAAO;GAAQ,QAAQ;GAAc,OAAO;GAAiB,MAAM;EAAU;EAC/E;GAAE,OAAO;GAAM,QAAQ;GAAO,OAAO;GAAO,MAAM;EAAU;CAC9D,GAGM,IAAkB;EACtB;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;EACT;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;EACT;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;EACT;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;GACN,OAAO;EACT;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;CACF,GAGM,IAAgB;EACpB;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;CACF,GAGM,IAAgB;EACpB;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;EACA;GACE,OAAO;GACP,QAAQ;GACR,OAAO;GACP,MAAM;EACR;CACF,GAGM,IAAmB,CACvB;EACE,OAAO;EACP,QAAQ;EACR,OAAO;EACP,MAAM;CACR,GACA;EACE,OAAO;EACP,QAAQ;EACR,OAAO;EACP,MAAM;CACR,CACF,GAGM,IAAc;EAClB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;CACL;CAGA,KAAK,IAAM,KAAW,GACpB,CAAI,EAAQ,MAAM,WAAW,CAAQ,KAAK,MAAa,MAAM,EAAQ,aACnE,EAAQ,KAAK,CAAO;CASxB,OAJI,EAAQ,WAAW,IACd,OAGF;EACL,MAAM,EAAK;EACX;CACF;AACF,CACF,EACF,CAAC,GAIU,IAAgB,EAAW,UAAU;CAEhD,yBAAyB,EACvB,iBAAiB,sBACnB;CAGA,wBAAwB,EACtB,iBAAiB,4BACnB;CAKA,sCAAsC;EACpC,OAAO;EACP,YAAY;CACd;CACA,uCAAuC;EACrC,iBAAiB;EACjB,OAAO;CACT;CAGA,qCAAqC;EACnC,OAAO;EACP,YAAY;CACd;CACA,sCAAsC;EACpC,iBAAiB;EACjB,OAAO;CACT;CAGA,oCAAoC;EAClC,OAAO;EACP,YAAY;CACd;CACA,qCAAqC;EACnC,iBAAiB;EACjB,OAAO;CACT;CACA,oCAAoC;EAClC,iBAAiB;EACjB,OAAO;EACP,cAAc;EACd,SAAS;CACX;CACA,mCAAmC;EACjC,iBAAiB;EACjB,OAAO;EACP,cAAc;EACd,SAAS;EACT,SAAS;CACX;CAGA,mCAAmC;EACjC,OAAO;EACP,YAAY;CACd;CACA,oCAAoC;EAClC,iBAAiB;EACjB,OAAO;CACT;CACA,mCAAmC;EACjC,iBAAiB;EACjB,OAAO;EACP,cAAc;EACd,SAAS;CACX;CACA,kCAAkC;EAChC,iBAAiB;EACjB,OAAO;EACP,cAAc;EACd,SAAS;EACT,SAAS;CACX;CAGA,mCAAmC;EACjC,OAAO;EACP,YAAY;CACd;CACA,oCAAoC;EAClC,iBAAiB;EACjB,OAAO;EACP,YAAY;CACd;CAGA,kCAAkC;EAChC,OAAO;EACP,YAAY;CACd;CACA,mCAAmC;EACjC,iBAAiB;EACjB,OAAO;EACP,YAAY;CACd;CAGA,iCAAiC,EAC/B,iBAAiB,4BACnB;CACA,kCAAkC;EAChC,OAAO;EACP,YAAY;CACd;CACA,uCAAuC;EACrC,OAAO;EACP,YAAY;EACZ,iBAAiB;CACnB;CAGA,gCAAgC,EAC9B,iBAAiB,4BACnB;CACA,iCAAiC;EAC/B,OAAO;EACP,YAAY;CACd;CACA,sCAAsC;EACpC,OAAO;EACP,YAAY;EACZ,iBAAiB;CACnB;CAGA,iCAAiC,EAC/B,YAAY,OACd;CAGA,cAAc;EACZ,UAAU;EACV,QAAQ;CACV;CAGA,oCAAoC;EAClC,OAAO;EACP,QAAQ;EACR,gBAAgB;EAChB,YAAY;CACd;CACA,mCAAmC;EACjC,OAAO;EACP,QAAQ;EACR,gBAAgB;EAChB,YAAY;CACd;CACA,oCAAoC;EAClC,OAAO;EACP,QAAQ;EACR,YAAY;CACd;CACA,mCAAmC;EACjC,OAAO;EACP,QAAQ;EACR,YAAY;CACd;AACF,CAAC,GAGY,UACJ;CACL;CACA;CACA;CACA;CACA,EAAuB;CACvB;AACF"}
|
|
@@ -1,58 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
//#region src/components/pro/CodeEditor/extensions/contextMenu.ts
|
|
2
|
+
var e = [
|
|
3
|
+
{
|
|
4
|
+
label: "剪切",
|
|
5
|
+
action: (e) => {
|
|
6
|
+
let t = e.state.selection.main, n = e.state.sliceDoc(t.from, t.to);
|
|
7
|
+
navigator.clipboard.writeText(n), e.dispatch({ changes: {
|
|
8
|
+
from: t.from,
|
|
9
|
+
to: t.to,
|
|
10
|
+
insert: ""
|
|
11
|
+
} });
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
label: "复制",
|
|
16
|
+
action: (e) => {
|
|
17
|
+
let t = e.state.selection.main, n = e.state.sliceDoc(t.from, t.to);
|
|
18
|
+
navigator.clipboard.writeText(n);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: "粘贴",
|
|
23
|
+
action: async (e) => {
|
|
24
|
+
let t = await navigator.clipboard.readText(), n = e.state.selection.main;
|
|
25
|
+
e.dispatch({ changes: {
|
|
26
|
+
from: n.from,
|
|
27
|
+
to: n.to,
|
|
28
|
+
insert: t
|
|
29
|
+
} });
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
label: "",
|
|
34
|
+
action: () => {},
|
|
35
|
+
separator: !0
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: "全选",
|
|
39
|
+
action: (e) => {
|
|
40
|
+
e.dispatch({ selection: {
|
|
41
|
+
anchor: 0,
|
|
42
|
+
head: e.state.doc.length
|
|
43
|
+
} });
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: "查找",
|
|
48
|
+
action: (e) => {
|
|
49
|
+
let t = e.dom.querySelector(".cm-search");
|
|
50
|
+
t && t.focus();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
53
|
];
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
};
|
|
54
|
+
//#endregion
|
|
55
|
+
export { e as defaultContextMenu };
|
|
57
56
|
|
|
58
57
|
//# sourceMappingURL=contextMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextMenu.js","names":[],"sources":["../../../../../src/components/pro/CodeEditor/extensions/contextMenu.ts"],"sourcesContent":["import type { ContextMenuItem } from '../types';\nimport type { EditorView } from '@codemirror/view';\n\n// 默认上下文菜单\nexport const defaultContextMenu: ContextMenuItem[] = [\n {\n label: '剪切',\n action: (view) => {\n const selection = view.state.selection.main;\n const text = view.state.sliceDoc(selection.from, selection.to);\n navigator.clipboard.writeText(text);\n view.dispatch({\n changes: { from: selection.from, to: selection.to, insert: '' },\n });\n },\n },\n {\n label: '复制',\n action: (view) => {\n const selection = view.state.selection.main;\n const text = view.state.sliceDoc(selection.from, selection.to);\n navigator.clipboard.writeText(text);\n },\n },\n {\n label: '粘贴',\n action: async (view) => {\n const text = await navigator.clipboard.readText();\n const selection = view.state.selection.main;\n view.dispatch({\n changes: { from: selection.from, to: selection.to, insert: text },\n });\n },\n },\n { label: '', action: () => { }, separator: true },\n {\n label: '全选',\n action: (view) => {\n view.dispatch({\n selection: { anchor: 0, head: view.state.doc.length },\n });\n },\n },\n {\n label: '查找',\n action: (view) => {\n const searchPanel = view.dom.querySelector('.cm-search');\n if (searchPanel) {\n (searchPanel as HTMLElement).focus();\n }\n },\n },\n];\n\n"],"mappings":"AAIA,IAAa,IAAwC;
|
|
1
|
+
{"version":3,"file":"contextMenu.js","names":[],"sources":["../../../../../src/components/pro/CodeEditor/extensions/contextMenu.ts"],"sourcesContent":["import type { ContextMenuItem } from '../types';\nimport type { EditorView } from '@codemirror/view';\n\n// 默认上下文菜单\nexport const defaultContextMenu: ContextMenuItem[] = [\n {\n label: '剪切',\n action: (view) => {\n const selection = view.state.selection.main;\n const text = view.state.sliceDoc(selection.from, selection.to);\n navigator.clipboard.writeText(text);\n view.dispatch({\n changes: { from: selection.from, to: selection.to, insert: '' },\n });\n },\n },\n {\n label: '复制',\n action: (view) => {\n const selection = view.state.selection.main;\n const text = view.state.sliceDoc(selection.from, selection.to);\n navigator.clipboard.writeText(text);\n },\n },\n {\n label: '粘贴',\n action: async (view) => {\n const text = await navigator.clipboard.readText();\n const selection = view.state.selection.main;\n view.dispatch({\n changes: { from: selection.from, to: selection.to, insert: text },\n });\n },\n },\n { label: '', action: () => { }, separator: true },\n {\n label: '全选',\n action: (view) => {\n view.dispatch({\n selection: { anchor: 0, head: view.state.doc.length },\n });\n },\n },\n {\n label: '查找',\n action: (view) => {\n const searchPanel = view.dom.querySelector('.cm-search');\n if (searchPanel) {\n (searchPanel as HTMLElement).focus();\n }\n },\n },\n];\n\n"],"mappings":";AAIA,IAAa,IAAwC;CACjD;EACI,OAAO;EACP,SAAS,MAAS;GACd,IAAM,IAAY,EAAK,MAAM,UAAU,MACjC,IAAO,EAAK,MAAM,SAAS,EAAU,MAAM,EAAU,EAAE;GAE7D,AADA,UAAU,UAAU,UAAU,CAAI,GAClC,EAAK,SAAS,EACV,SAAS;IAAE,MAAM,EAAU;IAAM,IAAI,EAAU;IAAI,QAAQ;GAAG,EAClE,CAAC;EACL;CACJ;CACA;EACI,OAAO;EACP,SAAS,MAAS;GACd,IAAM,IAAY,EAAK,MAAM,UAAU,MACjC,IAAO,EAAK,MAAM,SAAS,EAAU,MAAM,EAAU,EAAE;GAC7D,UAAU,UAAU,UAAU,CAAI;EACtC;CACJ;CACA;EACI,OAAO;EACP,QAAQ,OAAO,MAAS;GACpB,IAAM,IAAO,MAAM,UAAU,UAAU,SAAS,GAC1C,IAAY,EAAK,MAAM,UAAU;GACvC,EAAK,SAAS,EACV,SAAS;IAAE,MAAM,EAAU;IAAM,IAAI,EAAU;IAAI,QAAQ;GAAK,EACpE,CAAC;EACL;CACJ;CACA;EAAE,OAAO;EAAI,cAAc,CAAE;EAAG,WAAW;CAAK;CAChD;EACI,OAAO;EACP,SAAS,MAAS;GACd,EAAK,SAAS,EACV,WAAW;IAAE,QAAQ;IAAG,MAAM,EAAK,MAAM,IAAI;GAAO,EACxD,CAAC;EACL;CACJ;CACA;EACI,OAAO;EACP,SAAS,MAAS;GACd,IAAM,IAAc,EAAK,IAAI,cAAc,YAAY;GACvD,AAAI,KACA,EAA6B,MAAM;EAE3C;CACJ;AACJ"}
|