diff --git a/.gitignore b/.gitignore index 07552e7..2632e0b 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,9 @@ tsconfig.tsbuildinfo out/ next-env.d.ts +# Monaco editor local files (copied from node_modules) +public/vs + # Editor directories and files .vscode/* !.vscode/extensions.json diff --git a/package.json b/package.json index e169714..5bb8592 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "dev": "next dev --turbopack", "build": "next build", "lint": "eslint", - "tauri": "tauri" + "tauri": "tauri", + "postinstall": "cp -r node_modules/monaco-editor/min/vs public/vs" }, "dependencies": { "@base-ui/react": "^1.1.0", diff --git a/src/components/diff/diff-viewer.tsx b/src/components/diff/diff-viewer.tsx index 2a6194c..b419d32 100644 --- a/src/components/diff/diff-viewer.tsx +++ b/src/components/diff/diff-viewer.tsx @@ -8,6 +8,8 @@ import type { editor as MonacoEditorNs } from "monaco-editor" import { defineMonacoThemes, useMonacoThemeSync } from "@/lib/monaco-themes" import { cn } from "@/lib/utils" +import "@/lib/monaco-local" + const MonacoDiffEditor = dynamic( async () => { const mod = await import("@monaco-editor/react") @@ -171,6 +173,8 @@ export function DiffViewer({ modified={modified} language={language} theme={editorTheme} + keepCurrentOriginalModel + keepCurrentModifiedModel beforeMount={defineMonacoThemes} onMount={handleEditorMount} loading={ diff --git a/src/components/diff/unified-diff-preview.tsx b/src/components/diff/unified-diff-preview.tsx index d22ee55..91d4dc3 100644 --- a/src/components/diff/unified-diff-preview.tsx +++ b/src/components/diff/unified-diff-preview.tsx @@ -71,6 +71,8 @@ interface HunkPreviewLine { marker: RowMarker } +import "@/lib/monaco-local" + const MonacoEditor = dynamic(async () => import("@monaco-editor/react"), { ssr: false, }) diff --git a/src/components/files/file-workspace-panel.tsx b/src/components/files/file-workspace-panel.tsx index 7f3b17b..44701e0 100644 --- a/src/components/files/file-workspace-panel.tsx +++ b/src/components/files/file-workspace-panel.tsx @@ -291,6 +291,8 @@ function setEditorHiddenAreas( hiddenAreaEditor.setHiddenAreas?.(ranges) } +import "@/lib/monaco-local" + const MonacoEditor = dynamic(async () => import("@monaco-editor/react"), { ssr: false, }) diff --git a/src/components/merge/three-pane-merge-editor.tsx b/src/components/merge/three-pane-merge-editor.tsx index e2eecc8..c0a6b1f 100644 --- a/src/components/merge/three-pane-merge-editor.tsx +++ b/src/components/merge/three-pane-merge-editor.tsx @@ -23,6 +23,8 @@ import { } from "./merge-diff" import { useSyncScroll } from "./use-sync-scroll" +import "@/lib/monaco-local" + const MonacoEditor = dynamic( async () => { const mod = await import("@monaco-editor/react") diff --git a/src/lib/monaco-local.ts b/src/lib/monaco-local.ts new file mode 100644 index 0000000..1ebb7e6 --- /dev/null +++ b/src/lib/monaco-local.ts @@ -0,0 +1,3 @@ +import { loader } from "@monaco-editor/react" + +loader.config({ paths: { vs: "/vs" } })