@@ -7,6 +7,7 @@ import { Header } from "@/components/Header";
7
7
import { Fixed } from "@/components/Fixed" ;
8
8
import { loadDemoLinter , DemoLinter } from "@/lib/linter" ;
9
9
import { DEFAULT_CODE , DEFAULT_RULE_CONFIG } from "@/components/constants" ;
10
+ import { queryParamsState } from "@/shared/query-params-state" ;
10
11
import type { FC } from "react" ;
11
12
import type { Linter } from "eslint" ;
12
13
import "bootstrap/dist/css/bootstrap.min.css" ;
@@ -19,9 +20,10 @@ const parserOptions = {
19
20
} as const ;
20
21
21
22
export const App : FC = ( ) => {
23
+ const paramsState = queryParamsState . get ( ) ;
22
24
const [ messages , setMessages ] = useState < Linter . LintMessage [ ] > ( [ ] ) ;
23
- const [ code , setCode ] = useState < string > ( DEFAULT_CODE ) ;
24
- const [ rules , setRules ] = useState ( DEFAULT_RULE_CONFIG ) ;
25
+ const [ code , setCode ] = useState < string > ( paramsState ?. code || DEFAULT_CODE ) ;
26
+ const [ rules , setRules ] = useState ( paramsState ?. rules || DEFAULT_RULE_CONFIG ) ;
25
27
const [ fixed , setFixed ] = useState < string > ( "" ) ;
26
28
const [ linter , setLinter ] = useState < DemoLinter | null > ( null ) ;
27
29
@@ -43,12 +45,14 @@ export const App: FC = () => {
43
45
< Container >
44
46
< Row >
45
47
< Col md = { 12 } >
46
- < h5 > Code</ h5 >
47
48
< Tabs >
48
49
< Tab eventKey = "code" title = "Code" >
49
50
< Editor
50
- initial = { DEFAULT_CODE }
51
- onChange = { setCode }
51
+ initial = { queryParamsState . get ( ) . code || DEFAULT_CODE }
52
+ onChange = { ( code ) => {
53
+ queryParamsState . set ( { code, rules } ) ;
54
+ setCode ( code ) ;
55
+ } }
52
56
messages = { messages }
53
57
/>
54
58
</ Tab >
@@ -66,6 +70,7 @@ export const App: FC = () => {
66
70
try {
67
71
const rules = JSON . parse ( rulesString ) ;
68
72
setRules ( rules ) ;
73
+ queryParamsState . set ( { code, rules } ) ;
69
74
} catch { }
70
75
} }
71
76
/>
0 commit comments