Skip to content

Instantly share code, notes, and snippets.

@JenniferFuBook
Last active December 3, 2022 06:33
Show Gist options
  • Save JenniferFuBook/fbd54e7cb730aa241b0f32d631426358 to your computer and use it in GitHub Desktop.
Save JenniferFuBook/fbd54e7cb730aa241b0f32d631426358 to your computer and use it in GitHub Desktop.
import { useEffect, useState } from 'react';
import Editor from '@monaco-editor/react';
const FileUploader = ({ onFileLoad }) => {
return <input type="file" onChange={(e) => onFileLoad(e.target.files[0])} />;
};
function App() {
const [file, setFile] = useState();
const [value, setValue] = useState();
const [language, setLanguage] = useState('javascript');
useEffect(() => {
if (file) {
var reader = new FileReader();
reader.onload = async (e) => {
setValue(e.target.result);
};
reader.readAsText(file);
let newLanguage = 'javascript';
const extension = file.name.split('.').pop();
if (['css', 'html', 'json'].includes(extension)) {
newLanguage = extension;
} else if (extension === 'md') {
newLanguage='markdown';
}
setLanguage(newLanguage);
}
}, [file]);
return (
<>
<FileUploader onFileLoad={setFile} />
<Editor height="90vh" language={language} value={value} />
</>
);
}
export default App;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment