Skip to content

Commit 5aeabfd

Browse files
committed
fix: use monaco add diagnostics
1 parent 429e5db commit 5aeabfd

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

package-lock.json

+13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
]
4242
},
4343
"dependencies": {
44+
"@etclabscore/monaco-add-json-schema-diagnostics": "^1.0.2",
4445
"@material-ui/core": "^4.3.2",
4546
"@material-ui/icons": "^4.2.1",
4647
"@monaco-editor/react": "^2.3.0",

src/containers/JSONRPCRequest.tsx

+7-12
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import useDarkMode from "use-dark-mode";
33
import { monaco, ControlledEditor, Monaco } from "@monaco-editor/react";
44
import { MethodObject } from "@open-rpc/meta-schema";
55
import useWindowSize from "@rehooks/window-size";
6+
import { addDiagnostics } from "@etclabscore/monaco-add-json-schema-diagnostics"
67

78
interface IProps {
89
onChange?: (newValue: any) => void;
@@ -25,10 +26,14 @@ const JSONRPCRequest: React.FC<IProps> = (props) => {
2526
editorRef.current = editor;
2627
// Now you can use the instance of monaco editor
2728
// in this component whenever you want
29+
const modelName = props.openrpcMethodObject ? props.openrpcMethodObject.name : "inspector";
30+
const modelUriString = `inmemory://${modelName}.json`;
2831
monaco
2932
.init()
3033
.then((m: Monaco) => {
31-
const modelUri = m.Uri.parse(`inmemory:/${Math.random()}/model/userSpec.json`);
34+
const modelUri = m.Uri.parse(modelUriString);
35+
const model = m.editor.createModel(props.value || "", "json", modelUri);
36+
editor.setModel(model);
3237
let schema: any = {
3338
type: "object",
3439
properties: {
@@ -76,17 +81,7 @@ const JSONRPCRequest: React.FC<IProps> = (props) => {
7681
},
7782
};
7883
}
79-
m.languages.json.jsonDefaults.setDiagnosticsOptions({
80-
enableSchemaRequest: true,
81-
schemas: [
82-
{
83-
fileMatch: ["*"],
84-
schema,
85-
uri: modelUri.toString(),
86-
},
87-
],
88-
validate: true,
89-
});
84+
addDiagnostics(modelUri.toString(), schema, m);
9085
})
9186
.catch((error: Error) => console.error("An error occurred during initialization of Monaco: ", error));
9287
}

src/hooks/useQueryParams.ts

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ const useQueryParams = (depth?: number) => {
77
ignoreQueryPrefix: true,
88
depth: depth || 100,
99
decoder(str) {
10+
if (/^(\d+|\d*\.\d+)$/.test(str)) {
11+
return parseFloat(str);
12+
}
1013
if (str === "false") {
1114
return false;
1215
}

0 commit comments

Comments
 (0)