Comments (1)
import React, { useEffect, useState } from "react";
import ReactDOM from "react-dom";
import CodeEditor, { SelectionText } from "@uiw/react-textarea-code-editor";
import "./index.css";
import exts from "code-example/ext.json";
const useFetch = (language) => {
const [code, setCode] = useState("");
const [loading, setLoading] = useState(false);
const [lang, setLang] = useState(language);
const [error, setError] = useState();
useEffect(() => {
setLoading(true);
const fetchData = async () => {
try {
const codeStr = await import(`code-example/txt/sample.${language}.txt`);
setCode(
atob((codeStr.default || "").replace("data:text/plain;base64,", ""))
);
let str = language;
if (/^(mysql|pgsql)$/.test(language)) {
str = "sql";
}
if (/^(objective-c)$/.test(language)) {
str = "objc";
}
if (/^(vue)$/.test(language)) {
str = "html";
}
setLang(str);
setLoading(false);
} catch (error) {
console.log(error);
setLoading(false);
setError(error);
setCode("");
}
};
fetchData();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [language]);
return { lang, loading, code, setCode, error };
};
const Loading = () => (
<div
style={{
position: "fixed",
top: 0,
left: 0,
background: "rgba(51, 51, 51, 0.62)",
right: 0,
bottom: 0,
textAlign: "center",
display: "flex",
flexDirection: "column",
justifyContent: "center",
zIndex: 999,
color: "white"
}}
>
Loading...{" "}
</div>
);
function App() {
const textRef = React.useRef();
const [language, setLanguage] = useState("jsx");
const { loading, code, setCode } = useFetch(language);
return (
<div>
<h3>Auto</h3>
{loading ? <Loading /> : null}
<CodeEditor
value={code}
ref={textRef}
language="js"
placeholder="Please enter JS code."
onChange={(evn) => setCode(evn.target.value)}
padding={15}
style={{
fontFamily:
"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",
fontSize: 12
}}
/>
<select
value={language}
onChange={(evn) => setLanguage(evn.target.value)}
>
{exts.map((keyName, idx) => {
if (/^diff/.test(keyName)) return null;
return (
<option key={idx} value={keyName}>
Language: {keyName}
</option>
);
})}
</select>
</div>
);
}
ReactDOM.render(<App />, document.getElementById("container"));
@clarnx https://codesandbox.io/embed/react-textarea-code-editor-for-example-https-github-com-uiwjs-react-textarea-code-editor-issues-142-4svb4f?fontsize=14&hidenavigation=1&theme=dark
from react-textarea-code-editor.
Related Issues (20)
- bundle size HOT 2
- how to do command enter and preventing enter from being sent to code editor? HOT 7
- Auto comment selection HOT 2
- Is `font-family: inherit;` in `.w-tc-editor` required? HOT 2
- JSON Highlighting of Value the same as the Name when a string HOT 2
- [Fix] Shift+Tab on single line removes starting tab HOT 3
- Add the ability to highlight individual lines HOT 2
- Pressing the tab key on a readonly textarea causes a tab in the value HOT 1
- Disable prop HOT 2
- Unable to access ref on CodeEditor using NextJS dynamic HOT 2
- chinese input error HOT 2
- [Feature Request] CSV support HOT 3
- CTRL + Z | Undo HOT 2
- gray color on text highlight HOT 4
- Can I show line numbers ? HOT 1
- Can I show line numbers ? HOT 2
- How to import `TextareaCodeEditorProps` in v3 +? HOT 2
- Module not found: Can't resolve 'devlop' HOT 3
- more customisable padding HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-textarea-code-editor.