@@ -7,6 +7,7 @@ import { Header } from "@/components/Header";
77import { Fixed } from "@/components/Fixed" ;
88import { loadDemoLinter , DemoLinter } from "@/lib/linter" ;
99import { DEFAULT_CODE , DEFAULT_RULE_CONFIG } from "@/components/constants" ;
10+ import { queryParamsState } from "@/shared/query-params-state" ;
1011import type { FC } from "react" ;
1112import type { Linter } from "eslint" ;
1213import "bootstrap/dist/css/bootstrap.min.css" ;
@@ -19,9 +20,10 @@ const parserOptions = {
1920} as const ;
2021
2122export const App : FC = ( ) => {
23+ const paramsState = queryParamsState . get ( ) ;
2224 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 ) ;
2527 const [ fixed , setFixed ] = useState < string > ( "" ) ;
2628 const [ linter , setLinter ] = useState < DemoLinter | null > ( null ) ;
2729
@@ -43,12 +45,14 @@ export const App: FC = () => {
4345 < Container >
4446 < Row >
4547 < Col md = { 12 } >
46- < h5 > Code</ h5 >
4748 < Tabs >
4849 < Tab eventKey = "code" title = "Code" >
4950 < 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+ } }
5256 messages = { messages }
5357 />
5458 </ Tab >
@@ -66,6 +70,7 @@ export const App: FC = () => {
6670 try {
6771 const rules = JSON . parse ( rulesString ) ;
6872 setRules ( rules ) ;
73+ queryParamsState . set ( { code, rules } ) ;
6974 } catch { }
7075 } }
7176 />
0 commit comments