Spaces:
Paused
Paused
import React, { useEffect } from "react"; | |
import MonacoEditor from "@monaco-editor/react"; | |
import { useMonaco } from "../../hooks"; | |
import { useAppDispatch, useAppSelector } from "../../store/hook"; | |
import { | |
editor_state, | |
update_editor_code, | |
} from "../../store/features/editorSlice"; | |
type MonacoType = { monacoLanguage: string | undefined; tab: string }; | |
export const Monaco = ({ monacoLanguage, tab }: MonacoType) => { | |
const dispatch = useAppDispatch(); | |
const { monacoInputValue, options } = useAppSelector(editor_state); | |
const { onChange, onMount, code } = useMonaco(); | |
useEffect(() => { | |
if (code && code?.length >= 1) | |
dispatch(update_editor_code({ type: tab, content: code })); | |
}, [code, dispatch, tab]); | |
return ( | |
<MonacoEditor | |
onChange={onChange} | |
onMount={onMount} | |
language={monacoLanguage} | |
theme="vs-dark" | |
options={options} | |
className="h-full" | |
// @ts-ignore | |
value={monacoInputValue.tabs[tab]?.data || ''} | |
/> | |
); | |
}; | |