Skip to content

Commit f9a7f0a

Browse files
authored
Merge branch 'update_code_examples' into generate-sharable-link
2 parents c6306b3 + 3e01bb6 commit f9a7f0a

File tree

9 files changed

+41
-25
lines changed

9 files changed

+41
-25
lines changed

src/App.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import { ThemeProvider } from './components/theme-provider';
99
import { decodeFromBase64 } from './lib/utils';
1010

1111
function App() {
12-
const { setTool, language, tool, JSCode, setJSCode, JSONCode, setJSONCode, setLanguage, setParser,
12+
13+
const { setTool, language, tool, jsCode, setJsCode, jsonCode, setJsonCode, setLanguage, setParser,
1314
setSourceType, setEsVersion, setIsJSX, setJsonMode, setWrap, setAstViewMode, setScopeViewMode,
1415
setPathViewMode, setPathIndexes, setPathIndex } = useExplorer();
1516
const activeTool = tools.find(({ value }) => value === tool) ?? tools[0];
@@ -55,9 +56,9 @@ function App() {
5556
<Editor
5657
className="h-[30dvh] sm:h-full"
5758
language={language}
58-
value={language === 'javascript' ? JSCode : JSONCode}
59+
value={language === 'javascript' ? jsCode : jsonCode}
5960
onChange={(value) => {
60-
language === 'javascript' ? setJSCode(value ?? '') : setJSONCode(value ?? '')
61+
language === 'javascript' ? setJsCode(value ?? '') : setJsonCode(value ?? '')
6162
}}
6263
/>
6364
<div className="bg-foreground/5 pb-8 overflow-auto h-[70dvh] sm:h-full relative flex flex-col">

src/components/ast/javascript-ast.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const JavascriptAst: FC = () => {
1212
let tree: ReturnType<typeof espree.parse> | null = null;
1313

1414
try {
15-
tree = espree.parse(explorer.JSCode, {
15+
tree = espree.parse(explorer.jsCode, {
1616
ecmaVersion: explorer.esVersion,
1717
sourceType: explorer.sourceType,
1818
});

src/components/ast/json-ast.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const JsonAst: FC = () => {
1212
let tree: ReturnType<typeof parse> | null = null;
1313

1414
try {
15-
tree = parse(explorer.JSONCode, {
15+
tree = parse(explorer.jsonCode, {
1616
mode: explorer.jsonMode,
1717
ranges: true,
1818
tokens: true,

src/components/editor.tsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import { Editor as MonacoEditor } from '@monaco-editor/react';
44
import { useExplorer } from '@/hooks/use-explorer';
5+
import { useEffect } from 'react';
56
import type { ComponentProps, FC } from 'react';
67
import { useTheme } from './theme-provider';
8+
import type * as monacoEditor from 'monaco-editor';
79

810
type EditorProperties = ComponentProps<typeof MonacoEditor> & {
911
readOnly?: boolean;
@@ -13,7 +15,17 @@ type EditorProperties = ComponentProps<typeof MonacoEditor> & {
1315

1416
export const Editor: FC<EditorProperties> = ({ readOnly, value, onChange, ...properties }) => {
1517
const { theme } = useTheme();
16-
const explorer = useExplorer();
18+
const { wrap, jsonMode } = useExplorer();
19+
20+
useEffect(() => {
21+
const monaco = (window as any).monaco as typeof monacoEditor;
22+
if (monaco) {
23+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
24+
validate: true,
25+
allowComments: jsonMode === 'jsonc',
26+
});
27+
}
28+
}, [jsonMode]);
1729

1830
return (
1931
<MonacoEditor
@@ -36,12 +48,17 @@ export const Editor: FC<EditorProperties> = ({ readOnly, value, onChange, ...pro
3648
"editor.background": "#FFFFFF00",
3749
},
3850
});
51+
52+
monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
53+
validate: true,
54+
allowComments: jsonMode === 'jsonc',
55+
});
3956
}}
4057
options={{
4158
minimap: {
4259
enabled: false,
4360
},
44-
wordWrap: explorer.wrap ? 'on' : 'off',
61+
wordWrap: wrap ? 'on' : 'off',
4562
readOnly: readOnly ?? false,
4663
}}
4764
theme={theme === 'dark' ? 'eslint-dark' : 'eslint-light'}

src/components/options.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import { Button } from './ui/button';
2727
import { Label } from './ui/label';
2828
import type { FC } from 'react';
2929
import { Settings } from 'lucide-react';
30-
import { defaultJSONCode, defaultJavascriptCode } from '../lib/const';
3130

3231
export const Options: FC = () => {
3332
const explorer = useExplorer();

src/components/path/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const CodePath: FC = () => {
2222

2323
useDebouncedEffect(
2424
() => {
25-
generateCodePath(explorer.JSCode, explorer.esVersion, explorer.sourceType)
25+
generateCodePath(explorer.jsCode, explorer.esVersion, explorer.sourceType)
2626
.then((response) => {
2727
if ('error' in response) {
2828
throw new Error(response.error);
@@ -45,7 +45,7 @@ export const CodePath: FC = () => {
4545
.catch((newError) => setError(parseError(newError)));
4646
},
4747
500,
48-
[explorer, explorer.JSCode, explorer.esVersion, explorer.sourceType, explorer.setPathIndexes, explorer.pathIndexes]
48+
[explorer, explorer.jsCode, explorer.esVersion, explorer.sourceType, explorer.setPathIndexes, explorer.pathIndexes]
4949
);
5050

5151
if (error) {

src/components/scope/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const Scope: FC = () => {
1313
let ast = {};
1414

1515
try {
16-
ast = espree.parse(explorer.JSCode, {
16+
ast = espree.parse(explorer.jsCode, {
1717
range: true,
1818
ecmaVersion: explorer.esVersion,
1919
sourceType: explorer.sourceType,

src/hooks/use-explorer.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import { create } from 'zustand';
22
import { devtools, persist } from 'zustand/middleware';
33
import type { Options } from 'espree';
4-
import { defaultJavascriptCode, defaultJSONCode } from '../lib/const'
54
import { storeState } from '../lib/utils';
5+
import {defaultJsCode, defaultJsonCode} from '../lib/const'
66
export type SourceType = Exclude<Options['sourceType'], undefined>;
77
export type Version = Exclude<Options['ecmaVersion'], undefined>;
88

99
type ExplorerState = {
1010
tool: 'ast' | 'scope' | 'path';
1111
setTool: (tool: ExplorerState['tool']) => void;
1212

13-
JSCode: string;
14-
setJSCode: (JSCode: string) => void;
13+
jsCode: string;
14+
setJsCode: (JSCode: string) => void;
1515

16-
JSONCode: string;
17-
setJSONCode: (JSONCode: string) => void;
16+
jsonCode: string;
17+
setJsonCode: (JSONCode: string) => void;
1818

1919
language: string;
2020
setLanguage: (language: string) => void;
@@ -69,11 +69,11 @@ export const useExplorer = create<ExplorerState>()(
6969
tool: 'ast',
7070
setTool: createSetter('tool', set),
7171

72-
JSCode: defaultJavascriptCode,
73-
setJSCode: createSetter('JSCode', set),
72+
jsCode: defaultJsCode,
73+
setJsCode: createSetter('jsCode', set),
7474

75-
JSONCode: defaultJSONCode,
76-
setJSONCode: createSetter('JSONCode', set),
75+
jsonCode: defaultJsonCode,
76+
setJsonCode: createSetter('jsonCode', set),
7777

7878
language: 'javascript',
7979
setLanguage: createSetter('language', set),

src/lib/const.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ export const pathViewOptions = [
194194
},
195195
];
196196

197-
export const defaultJavascriptCode = `
197+
export const defaultJsCode = `
198198
/**
199199
* Type or paste some JavaScript here to learn more about
200200
* the static analysis that ESLint can do for you.
@@ -228,9 +228,9 @@ function getConfig() {
228228
export default [
229229
...js.configs.recommended,
230230
getConfig()
231-
];`;
231+
];`.trim();
232232

233-
export const defaultJSONCode = `
233+
export const defaultJsonCode = `
234234
/**
235235
* Type or paste some JSON here to learn more about
236236
* the static analysis that ESLint can do for you.
@@ -253,5 +253,4 @@ export const defaultJSONCode = `
253253
"key2": {
254254
"key3": [1, 2, "3", 1e10, 1e-3]
255255
}
256-
}
257-
`
256+
}`.trim();

0 commit comments

Comments
 (0)