@@ -37,27 +37,39 @@ const Builder = () => {
37
37
const [ language , setLanguage ] = useState ( 'javascript' ) ;
38
38
const randomType = [ "redirect" , "compress" , "docs" ] ;
39
39
40
- useEffect ( ( ) => {
41
- var h_div = document . getElementById ( 'monaco' ) ;
40
+ const [ editorID , setEditorID ] = useState ( 0 ) ;
41
+ const createEditor = ( h_div , value , language ) => {
42
42
var editor = monaco . editor . create ( h_div , {
43
- value : [
44
- 'module.exports = {' ,
45
- `\ttype: "${ randomType [ Math . floor ( Math . random ( ) * randomType . length ) ] } "` ,
46
- '}'
47
- ] . join ( '\n' ) ,
43
+ value,
48
44
language,
49
45
fontFamily : "'Source Code Pro', Consolas, 'Courier New', monospace" ,
50
46
fontSize : 15
51
47
} ) ;
48
+ editor . updateOptions ( { fontSize : 14 } ) ;
49
+ setEditorID ( monaco . editor . getEditors ( ) . indexOf ( editor ) || 0 ) ;
50
+ return editor ;
51
+ }
52
+ useEffect ( ( ) => {
53
+ var h_div = document . getElementById ( 'monaco' ) ;
54
+ var editor = createEditor ( h_div , [
55
+ 'module.exports = {' ,
56
+ `\ttype: "${ randomType [ Math . floor ( Math . random ( ) * randomType . length ) ] } "` ,
57
+ '}'
58
+ ] . join ( '\n' ) , language ) ;
52
59
window . addEventListener ( 'resize' , ( ) => {
53
60
editor . layout ( ) ;
54
61
} ) ;
55
- editor . updateOptions ( { fontSize : 14 } ) ;
56
- document . body . addEventListener ( 'click' , ( ) => {
57
- setLanguage ( document . body . style . getPropertyValue ( '--l' ) ) ;
58
- editor . updateOptions ( { language} ) ;
59
- } ) ;
60
62
} , [ ] ) ;
63
+ useEffect ( ( ) => {
64
+ monaco . editor . getEditors ( ) [ editorID ] . updateOptions ( {
65
+ language
66
+ } ) ;
67
+ return ( ) => {
68
+ monaco . editor . getEditors ( ) [ editorID ] . updateOptions ( {
69
+ language
70
+ } ) ;
71
+ }
72
+ } , [ language ] ) ;
61
73
62
74
return (
63
75
< >
@@ -76,6 +88,7 @@ const Builder = () => {
76
88
titles = { [ translate . raw ( 'builder-langdropup-collapsed' ) , translate . raw ( 'builder-langdropup-expanded' ) , translate . raw ( 'builder-langdropup-switchToLang' ) ] }
77
89
items = { [ [ 'JavaScript' , '/img/js.svg' , 'javascript' ] , [ 'HTML' , '/img/html.svg' , 'html' ] ] }
78
90
variable = "l"
91
+ setVar = { setLanguage }
79
92
addItemNameToTitles2 = { true }
80
93
/>
81
94
</ div >
0 commit comments