@@ -34,22 +34,27 @@ interface URLParamsProviderProps {
3434 children : ReactNode ;
3535}
3636
37- export function URLParamsProvider ( { children } : URLParamsProviderProps ) {
38- const router = useRouter ( ) ;
39- const pathname = usePathname ( ) ;
40- const searchParams = useSearchParams ( ) ;
41-
42- // Initialize state from URL params
43- const [ state , setState ] = useState < URLParamsState > ( ( ) => ( {
37+ function generateURLParamsState ( searchParams : URLSearchParams ) : URLParamsState {
38+ return {
4439 view : ( searchParams . get ( "view" ) as View ) || "preview" ,
4540 sidebarHidden : searchParams . get ( "sidebar" ) === "false" ,
4641 chatDefaultOpen : searchParams . get ( "chatDefaultOpen" ) !== "false" ,
4742 frameworkPickerHidden : searchParams . get ( "frameworkPicker" ) === "false" ,
4843 viewPickerHidden : searchParams . get ( "viewPicker" ) === "false" ,
4944 featurePickerHidden : searchParams . get ( "featurePicker" ) === "false" ,
45+ file : searchParams . get ( "file" ) || undefined ,
5046 codeLayout : ( searchParams . get ( "codeLayout" ) as "sidebar" | "tabs" ) || "sidebar" ,
5147 theme : ( searchParams . get ( "theme" ) as "light" | "dark" ) || "light" ,
52- } ) ) ;
48+ } ;
49+ }
50+
51+ export function URLParamsProvider ( { children } : URLParamsProviderProps ) {
52+ const router = useRouter ( ) ;
53+ const pathname = usePathname ( ) ;
54+ const searchParams = useSearchParams ( ) ;
55+
56+ // Initialize state from URL params
57+ const [ state , setState ] = useState < URLParamsState > ( ( ) => generateURLParamsState ( searchParams ) ) ;
5358
5459 // Update URL when state changes
5560 const updateURL = ( newState : Partial < URLParamsState > ) => {
@@ -137,17 +142,7 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
137142
138143 // Sync state with URL changes (e.g., browser back/forward)
139144 useEffect ( ( ) => {
140- const newState : URLParamsState = {
141- view : ( searchParams . get ( "view" ) as View ) || "preview" ,
142- sidebarHidden : searchParams . get ( "sidebar" ) === "false" ,
143- chatDefaultOpen : searchParams . get ( "chatDefaultOpen" ) !== "false" ,
144- frameworkPickerHidden : searchParams . get ( "frameworkPicker" ) === "false" ,
145- viewPickerHidden : searchParams . get ( "viewPicker" ) === "false" ,
146- featurePickerHidden : searchParams . get ( "featurePicker" ) === "false" ,
147- file : searchParams . get ( "file" ) || undefined ,
148- codeLayout : ( searchParams . get ( "codeLayout" ) as "sidebar" | "tabs" ) || "sidebar" ,
149- theme : ( searchParams . get ( "theme" ) as "light" | "dark" ) || "light" ,
150- } ;
145+ const newState : URLParamsState = generateURLParamsState ( searchParams ) ;
151146
152147 setState ( newState ) ;
153148 } , [ searchParams ] ) ;
0 commit comments