From 3cf2cd156a8d12a438a5f7aafeb1a5ddc2f01b89 Mon Sep 17 00:00:00 2001 From: ngc2207 Date: Fri, 10 Jan 2025 15:40:24 +0800 Subject: [PATCH] feat: enhance code editor with improved options and multilingual support --- code-editor/bun.lockb | Bin 159263 -> 159263 bytes code-editor/src/App.tsx | 48 +++++++++++++++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/code-editor/bun.lockb b/code-editor/bun.lockb index 8e46a5111942dbcd5b46bdc7da79cfff7c9d775c..0b2d6093b70bb89dc5d31f0be59310df48085610 100755 GIT binary patch delta 5481 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 delta 5494 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 diff --git a/code-editor/src/App.tsx b/code-editor/src/App.tsx index 2a8d28b..284c505 100644 --- a/code-editor/src/App.tsx +++ b/code-editor/src/App.tsx @@ -4,6 +4,7 @@ import { DEFAULT_EDITOR_LANGUAGE, } from "@/config"; import { useState } from "react"; +import * as monaco from "monaco-editor"; import { highlighter } from "@/lib/shiki"; import { Bot, CodeXml } from "lucide-react"; import { shikiToMonaco } from "@shikijs/monaco"; @@ -31,7 +32,7 @@ function App() { strokeWidth={2} aria-hidden="true" /> - Code + 代码 - + { shikiToMonaco(await highlighter, monaco); }} + onMount={( + editor: monaco.editor.IStandaloneCodeEditor, + monaco: Monaco + ) => { + const value = editor.getModel()?.getValue(); + if (value !== undefined) { + window.parent.postMessage( + { type: "editor-info", language, code: value }, + "*" + ); + } + }} onChange={(value) => { if (value !== undefined) { window.parent.postMessage( @@ -68,13 +93,24 @@ function App() { }} /> - + { shikiToMonaco(await highlighter, monaco); }}