Skip to content

Commit 583ecbb

Browse files
authored
Merge pull request #89 from MOV-AI/FP-3050-configurations-toggle-between-xml-and-yaml-isnt-highlighting-in-real-time
FP-3050: Configurations: Toggle between XML and YAML isn't highlighting in real-time
2 parents 0330955 + 5ad9200 commit 583ecbb

File tree

4 files changed

+55
-43
lines changed

4 files changed

+55
-43
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# TBD
22

33
- [FP-2920](https://movai.atlassian.net/browse/FP-2920): Configure husky, lint-staged and prettier for lib-code-editor
4+
- [FP-3050](https://movai.atlassian.net/browse/FP-3050): Configurations: Toggle between XML and YAML isn't highlighting in real-time
45

56
# 1.1.4
67

src/components/MonacoCodeEditor/MonacoCodeEditor.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ const MonacoCodeEditor = React.forwardRef((props, ref) => {
2727
} = props;
2828
// Hooks
2929
const { createEditor } = useLanguageServer
30-
? useMonacoEditorServer()
31-
: useMonacoEditor();
30+
? useMonacoEditorServer([language])
31+
: useMonacoEditor([language]);
3232

3333
//========================================================================================
3434
/* *
@@ -62,6 +62,9 @@ const MonacoCodeEditor = React.forwardRef((props, ref) => {
6262
*/
6363
React.useEffect(() => {
6464
const element = editorRef.current;
65+
66+
if (editor.current) element.innerHTML = "";
67+
6568
const _editor = createEditor({
6669
element,
6770
value,
@@ -88,7 +91,7 @@ const MonacoCodeEditor = React.forwardRef((props, ref) => {
8891
// Set editor ref
8992
if (ref) ref.current = _editor;
9093
editor.current = _editor;
91-
}, []);
94+
}, [createEditor]);
9295

9396
/**
9497
* On change Code

src/components/MonacoCodeEditor/hooks/useMonacoEditor.js

+24-19
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,36 @@
1+
import { useCallback } from "react";
12
import * as monaco from "monaco-editor";
23

3-
const useMonacoEditor = () => {
4+
const useMonacoEditor = (dependencies) => {
45
/**
56
* Create editor
67
* @param {{element: HTMLElement, value: string, language: string, theme: string, options: object, disableMinimap: boolean}} props
78
* Props to be used to compose editor
89
* @returns Monaco Editor object
910
*/
10-
const createEditor = (props) => {
11-
const { element, value, language, theme, options, disableMinimap } = props;
11+
const createEditor = useCallback(
12+
(props) => {
13+
const { element, value, language, theme, options, disableMinimap } =
14+
props;
1215

13-
return monaco.editor.create(element, {
14-
value: value,
15-
language: language,
16-
theme: theme,
17-
"semanticHighlighting.enabled": true,
18-
selectOnLineNumbers: true,
19-
autoIndent: "full",
20-
lineNumbers: disableMinimap ? "off" : "on",
21-
overviewRulerBorder: !disableMinimap,
22-
overviewRulerLanes: disableMinimap ? 0 : 3,
23-
minimap: {
24-
enabled: !disableMinimap,
25-
},
26-
...options,
27-
});
28-
};
16+
return monaco.editor.create(element, {
17+
value: value,
18+
language: language,
19+
theme: theme,
20+
"semanticHighlighting.enabled": true,
21+
selectOnLineNumbers: true,
22+
autoIndent: "full",
23+
lineNumbers: disableMinimap ? "off" : "on",
24+
overviewRulerBorder: !disableMinimap,
25+
overviewRulerLanes: disableMinimap ? 0 : 3,
26+
minimap: {
27+
enabled: !disableMinimap,
28+
},
29+
...options,
30+
});
31+
},
32+
[dependencies],
33+
);
2934

3035
return { createEditor };
3136
};

src/components/MonacoCodeEditor/hooks/useMonacoEditorCore.js

+24-21
Original file line numberDiff line numberDiff line change
@@ -163,36 +163,39 @@ function getSuggestions(model, position) {
163163
* */
164164
//========================================================================================
165165

166-
const useMonacoEditorCore = () => {
166+
const useMonacoEditorCore = (dependencies) => {
167167
useEffect(() => {
168168
getBuiltins().then((actualBuiltins) => {
169169
BUILTINS = { ...BUILTINS, ...actualBuiltins };
170170
sendBuiltins2LanguageServer(BUILTINS);
171171
});
172172
}, []);
173173

174-
const createLanguageClient = useCallback((connection) => {
175-
return new MonacoLanguageClient({
176-
name: "Python Language Client",
177-
clientOptions: {
178-
// use a language id as a document selector
179-
documentSelector: ["python"],
180-
// disable the default error handler
181-
errorHandler: {
182-
error: () => ErrorAction.Continue,
183-
closed: () => CloseAction.DoNotRestart,
174+
const createLanguageClient = useCallback(
175+
(connection) => {
176+
return new MonacoLanguageClient({
177+
name: "Python Language Client",
178+
clientOptions: {
179+
// use a language id as a document selector
180+
documentSelector: ["python"],
181+
// disable the default error handler
182+
errorHandler: {
183+
error: () => ErrorAction.Continue,
184+
closed: () => CloseAction.DoNotRestart,
185+
},
184186
},
185-
},
186-
// create a language client connection from the JSON RPC connection on demand
187-
connectionProvider: {
188-
get: (errorHandler, closeHandler) => {
189-
return Promise.resolve(
190-
createConnection(connection, errorHandler, closeHandler),
191-
);
187+
// create a language client connection from the JSON RPC connection on demand
188+
connectionProvider: {
189+
get: (errorHandler, closeHandler) => {
190+
return Promise.resolve(
191+
createConnection(connection, errorHandler, closeHandler),
192+
);
193+
},
192194
},
193-
},
194-
});
195-
}, []);
195+
});
196+
},
197+
[dependencies],
198+
);
196199

197200
/**
198201
* Create editor

0 commit comments

Comments
 (0)