1
1
import { useEffect , useState } from 'react' ;
2
2
import { useLocation , Link } from 'react-router-dom' ;
3
3
import Split from '@uiw/react-split' ;
4
+ import CodeEditor from '@uiw/react-textarea-code-editor' ;
4
5
import Tag from './Tag' ;
5
6
import RunWeb from '../../../' ;
6
- import TextareaEditor from './Textarea' ;
7
7
import styles from './index.module.less' ;
8
- import './language.less' ;
9
8
10
9
function useQuery ( ) {
11
10
return new URLSearchParams ( useLocation ( ) . search ) ;
@@ -48,18 +47,15 @@ export default function Run() {
48
47
< Split lineBar mode = "vertical" style = { { minWidth : 120 , width : '43%' } } >
49
48
< div style = { { height : '40%' } } className = { styles . editor } >
50
49
< Tag color = "#f44336" > HTML</ Tag >
51
- < TextareaEditor
52
- value = { htmlStr }
53
- language = "html"
54
- className = { htmlStr ? '' : 'empty' }
55
- placeholder = "Please enter HTML code."
56
- onPaste = { ( event ) => {
57
- let paste = ( event . clipboardData || ( window as any ) . clipboardData ) . getData ( 'text' ) ;
58
- setHtmlStr ( paste . replace ( / ^ \n + / g, '' ) . replace ( / \n + $ / g, '' ) ) ;
59
- event . preventDefault ( ) ;
60
- } }
61
- onChange = { ( evn ) => setHtmlStr ( evn . target . value ) }
62
- />
50
+ < div className = { styles . editorCode } >
51
+ < CodeEditor
52
+ value = { htmlStr }
53
+ style = { { minHeight : '100%' } }
54
+ placeholder = "Please enter HTML code."
55
+ onChange = { ( evn ) => setHtmlStr ( evn . target . value ) }
56
+ language = "html"
57
+ />
58
+ </ div >
63
59
</ div >
64
60
< div
65
61
style = { {
@@ -69,18 +65,15 @@ export default function Run() {
69
65
className = { styles . editor }
70
66
>
71
67
< Tag color = "#f7ac09" > JS</ Tag >
72
- < TextareaEditor
73
- value = { jsStr }
74
- language = "js"
75
- className = { jsStr ? '' : 'empty' }
76
- placeholder = "Please enter JavaScript code."
77
- onPaste = { ( event ) => {
78
- let paste = ( event . clipboardData || ( window as any ) . clipboardData ) . getData ( 'text' ) ;
79
- setJsStr ( paste . replace ( / ^ \n + / g, '' ) . replace ( / \n + $ / g, '' ) ) ;
80
- event . preventDefault ( ) ;
81
- } }
82
- onChange = { ( evn ) => setJsStr ( evn . target . value ) }
83
- />
68
+ < div className = { styles . editorCode } >
69
+ < CodeEditor
70
+ value = { jsStr }
71
+ style = { { minHeight : '100%' } }
72
+ placeholder = "Please enter JavaScript code."
73
+ onChange = { ( evn ) => setJsStr ( evn . target . value ) }
74
+ language = "js"
75
+ />
76
+ </ div >
84
77
</ div >
85
78
< div
86
79
style = { {
@@ -90,19 +83,15 @@ export default function Run() {
90
83
className = { styles . editor }
91
84
>
92
85
< Tag color = "#004fd4" > CSS</ Tag >
93
- < TextareaEditor
94
- value = { cssStr }
95
- language = "css"
96
- className = { cssStr ? '' : 'empty' }
97
- placeholder = "Please enter CSS code."
98
- onPasteCapture = { ( event ) => {
99
- let paste = ( event . clipboardData || ( window as any ) . clipboardData ) . getData ( 'text' ) ;
100
- paste = paste . replace ( / ^ \n + / g, '' ) . replace ( / \n + $ / g, '' ) ;
101
- setCssStr ( paste ) ;
102
- event . preventDefault ( ) ;
103
- } }
104
- onChange = { ( evn ) => setCssStr ( evn . target . value ) }
105
- />
86
+ < div className = { styles . editorCode } >
87
+ < CodeEditor
88
+ value = { cssStr }
89
+ style = { { minHeight : '100%' } }
90
+ placeholder = "Please enter CSS code."
91
+ onChange = { ( evn ) => setCssStr ( evn . target . value ) }
92
+ language = "css"
93
+ />
94
+ </ div >
106
95
</ div >
107
96
</ Split >
108
97
< div style = { { minWidth : 120 , flex : 1 } } >
0 commit comments