diff --git a/packages/mini-markdown-editor/src/App.tsx b/packages/mini-markdown-editor/src/App.tsx index 3e7fa12de910dfd4e68a4e15bc24b4d25d921746..c462a3415692050be53b985df5423123b85981f8 100644 --- a/packages/mini-markdown-editor/src/App.tsx +++ b/packages/mini-markdown-editor/src/App.tsx @@ -46,6 +46,7 @@ const App: FC = () => { status={true} onUpload={handleUpload} local={true} + lineNumbers={true} theme={theme as "light" | "dark"} onChange={handleChange} /> diff --git a/packages/mini-markdown-editor/src/components/Editor/index.tsx b/packages/mini-markdown-editor/src/components/Editor/index.tsx index e1650ba6e80b003b07cd9051a9ee4f36c05601f4..18aef9cabc0155788be63eca594bc8bb347d5aaa 100644 --- a/packages/mini-markdown-editor/src/components/Editor/index.tsx +++ b/packages/mini-markdown-editor/src/components/Editor/index.tsx @@ -4,16 +4,17 @@ import CodeMirror, { type EditorView, ViewUpdate } from "@uiw/react-codemirror"; import * as events from "@uiw/codemirror-extensions-events"; import { useEditorContentStore } from "@/store/editor"; import { handleEditorScroll } from "@/utils/handle-scroll"; -// import { useEditorShortcuts } from "@/hooks/use-editor-shortcuts"; import { usePersistEditorContent } from "@/hooks/use-persist-editor-content"; import { ConfigContext } from "../providers/config-provider"; import { createEditorExtensions } from "@/extensions/codemirror"; -const ScrollWrapper = styled.div` +const ScrollWrapper = styled.div<{ + $lineNumbers?: boolean; +}>` width: 100%; height: 100%; overflow: auto; - padding: 5px 10px; + padding: 5px ${({ $lineNumbers }) => ($lineNumbers ? "0px" : "10px")}; display: flex; flex-direction: column; @@ -58,8 +59,6 @@ const Editor: FC<{ isSyncScroll: boolean }> = ({ isSyncScroll }) => { }, [editorViewRef], ); - // 监听快捷键 - // useEditorShortcuts(); // 持久化存储内容 const { saveContent, getContent } = usePersistEditorContent(); @@ -117,10 +116,10 @@ const Editor: FC<{ isSyncScroll: boolean }> = ({ isSyncScroll }) => { [scrollWrapper], ); - const { theme } = useContext(ConfigContext); + const { theme, lineNumbers } = useContext(ConfigContext); return ( - + = ({ isSyncScroll }) => { value={content} extensions={extensions} basicSetup={{ - lineNumbers: false, + lineNumbers: lineNumbers || false, foldGutter: false, highlightActiveLine: false, highlightActiveLineGutter: false, diff --git a/packages/mini-markdown-editor/src/config/global.ts b/packages/mini-markdown-editor/src/config/global.ts index bd5deb2957e3fd4b7b0f54373d756634fa7dda43..40a8264f0b5802c59e4dc37dbdbd20c746474587 100644 --- a/packages/mini-markdown-editor/src/config/global.ts +++ b/packages/mini-markdown-editor/src/config/global.ts @@ -2,7 +2,8 @@ import { GlobalConfig } from "@/types/global-config"; // 默认配置 export const defaultGlobalConfig: GlobalConfig = { - status: true, + status: true, // 底部状态栏 theme: "light", // 主题 local: true, // 是否开启本地存储 + lineNumbers: false, // 是否显示行号 }; diff --git a/packages/mini-markdown-editor/src/types/global-config.ts b/packages/mini-markdown-editor/src/types/global-config.ts index fef819104b65aa3f3ea5583df37c79746bbeca60..7bdb0eed8052119f0a9b9aa6b8d85c772a92d176 100644 --- a/packages/mini-markdown-editor/src/types/global-config.ts +++ b/packages/mini-markdown-editor/src/types/global-config.ts @@ -23,6 +23,11 @@ export interface GlobalConfig { * @type {boolean} */ local?: boolean; // 是否开启本地存储 + /** + * 编辑区是否显示行号 + * @type {boolean} + */ + lineNumbers?: boolean; /** * 改变编辑器内容时触发 * @type {(value: string, editorView: ViewUpdate) => void} @@ -33,6 +38,11 @@ export interface GlobalConfig { * @type {(file: File, callback: Callback) => void} */ onUpload?: (file: File, callback: Callback) => void; + /** + * 拖拽上传图片时触发 + * @type {(file: File, callback: Callback) => void} + */ + onDragUpload?: (file: File, callback: Callback) => void; } export type Callback = (param: { url: string; alt?: string }) => void;