@@ -7,14 +7,18 @@ import { View } from "@/types/interface";
7
7
interface URLParamsState {
8
8
view : View ;
9
9
sidebarHidden : boolean ;
10
- pickerDisabled : boolean ;
10
+ frameworkPickerHidden : boolean ;
11
+ viewPickerHidden : boolean ;
12
+ featurePickerHidden : boolean ;
11
13
file ?: string ;
12
14
}
13
15
14
16
interface URLParamsContextType extends URLParamsState {
15
17
setView : ( view : View ) => void ;
16
18
setSidebarHidden : ( disabled : boolean ) => void ;
17
- setPickerDisabled : ( disabled : boolean ) => void ;
19
+ setFrameworkPickerHidden : ( disabled : boolean ) => void ;
20
+ setViewPickerHidden : ( disabled : boolean ) => void ;
21
+ setFeaturePickerHidden : ( disabled : boolean ) => void ;
18
22
setCodeFile : ( fileName : string ) => void ;
19
23
}
20
24
@@ -32,14 +36,16 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
32
36
// Initialize state from URL params
33
37
const [ state , setState ] = useState < URLParamsState > ( ( ) => ( {
34
38
view : ( searchParams . get ( "view" ) as View ) || "preview" ,
35
- sidebarHidden : searchParams . get ( "sidebar" ) === "disabled" ,
36
- pickerDisabled : searchParams . get ( "picker" ) === "false" ,
39
+ sidebarHidden : searchParams . get ( "sidebar" ) === "false" ,
40
+ frameworkPickerHidden : searchParams . get ( "frameworkPicker" ) === "false" ,
41
+ viewPickerHidden : searchParams . get ( "viewPicker" ) === "false" ,
42
+ featurePickerHidden : searchParams . get ( "featurePicker" ) === "false" ,
37
43
} ) ) ;
38
44
39
45
// Update URL when state changes
40
46
const updateURL = ( newState : Partial < URLParamsState > ) => {
41
47
const params = new URLSearchParams ( searchParams . toString ( ) ) ;
42
-
48
+
43
49
// Update view param
44
50
if ( newState . view !== undefined ) {
45
51
if ( newState . view === "preview" ) {
@@ -48,22 +54,39 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
48
54
params . set ( "view" , newState . view ) ;
49
55
}
50
56
}
51
-
57
+
52
58
// Update sidebar param
53
59
if ( newState . sidebarHidden !== undefined ) {
54
60
if ( newState . sidebarHidden ) {
55
- params . set ( "sidebar" , "disabled " ) ;
61
+ params . set ( "sidebar" , "false " ) ;
56
62
} else {
57
63
params . delete ( "sidebar" ) ;
58
64
}
59
65
}
60
-
61
- // Update picker param
62
- if ( newState . pickerDisabled !== undefined ) {
63
- if ( newState . pickerDisabled ) {
64
- params . set ( "picker " , "false" ) ;
66
+
67
+ // Update frameworkPicker param
68
+ if ( newState . frameworkPickerHidden !== undefined ) {
69
+ if ( newState . frameworkPickerHidden ) {
70
+ params . set ( "frameworkPicker " , "false" ) ;
65
71
} else {
66
- params . delete ( "picker" ) ;
72
+ params . delete ( "frameworkPicker" ) ;
73
+ }
74
+ }
75
+
76
+ // Update viewPicker param
77
+ if ( newState . viewPickerHidden !== undefined ) {
78
+ if ( newState . viewPickerHidden ) {
79
+ params . set ( "viewPicker" , "false" ) ;
80
+ } else {
81
+ params . delete ( "viewPicker" ) ;
82
+ }
83
+ }
84
+ // Update featurePicker param
85
+ if ( newState . featurePickerHidden !== undefined ) {
86
+ if ( newState . featurePickerHidden ) {
87
+ params . set ( "featurePicker" , "false" ) ;
88
+ } else {
89
+ params . delete ( "features" ) ;
67
90
}
68
91
}
69
92
@@ -76,9 +99,11 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
76
99
const newState : URLParamsState = {
77
100
view : ( searchParams . get ( "view" ) as View ) || "preview" ,
78
101
sidebarHidden : searchParams . get ( "sidebar" ) === "disabled" ,
79
- pickerDisabled : searchParams . get ( "picker" ) === "false" ,
102
+ frameworkPickerHidden : searchParams . get ( "frameworkPicker" ) === "false" ,
103
+ viewPickerHidden : searchParams . get ( "viewPicker" ) === "false" ,
104
+ featurePickerHidden : searchParams . get ( "featurePicker" ) === "false" ,
80
105
} ;
81
-
106
+
82
107
setState ( newState ) ;
83
108
} , [ searchParams ] ) ;
84
109
@@ -95,10 +120,22 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
95
120
updateURL ( { sidebarHidden } ) ;
96
121
} ;
97
122
98
- const setPickerDisabled = ( pickerDisabled : boolean ) => {
99
- const newState = { ...state , pickerDisabled } ;
123
+ const setFrameworkPickerHidden = ( frameworkPickerHidden : boolean ) => {
124
+ const newState = { ...state , frameworkPickerHidden } ;
125
+ setState ( newState ) ;
126
+ updateURL ( { frameworkPickerHidden } ) ;
127
+ } ;
128
+
129
+ const setViewPickerHidden = ( viewPickerHidden : boolean ) => {
130
+ const newState = { ...state , viewPickerHidden } ;
131
+ setState ( newState ) ;
132
+ updateURL ( { viewPickerHidden } ) ;
133
+ } ;
134
+
135
+ const setFeaturePickerHidden = ( featurePickerHidden : boolean ) => {
136
+ const newState = { ...state , featurePickerHidden } ;
100
137
setState ( newState ) ;
101
- updateURL ( { pickerDisabled } ) ;
138
+ updateURL ( { featurePickerHidden } ) ;
102
139
} ;
103
140
104
141
const setCodeFile = ( fileName : string ) => {
@@ -111,7 +148,9 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
111
148
...state ,
112
149
setView,
113
150
setSidebarHidden,
114
- setPickerDisabled,
151
+ setFrameworkPickerHidden,
152
+ setViewPickerHidden,
153
+ setFeaturePickerHidden,
115
154
setCodeFile,
116
155
} ;
117
156
0 commit comments