@@ -36,9 +36,14 @@ const useInitialData = () =>
36
36
'file-router' : [ ] ,
37
37
} ,
38
38
applicationMode : 'none' ,
39
+ forcedRouterMode : undefined ,
40
+ forcedAddOns : [ ] ,
39
41
} ,
40
42
} )
41
43
44
+ const useForcedRouterMode = ( ) => useInitialData ( ) . data . forcedRouterMode
45
+ const useForcedAddOns = ( ) => useInitialData ( ) . data . forcedAddOns
46
+
42
47
export const useProjectLocalFiles = ( ) => useInitialData ( ) . data . localFiles
43
48
export const useOriginalOutput = ( ) => useInitialData ( ) . data . output
44
49
export const useOriginalSelectedAddOns = ( ) =>
@@ -98,6 +103,7 @@ export function useAddOns() {
98
103
const originalSelectedAddOns = useOriginalSelectedAddOns ( )
99
104
const codeRouterAddOns = useCodeRouterAddOns ( )
100
105
const fileRouterAddOns = useFileRouterAddOns ( )
106
+ const forcedAddOns = useForcedAddOns ( )
101
107
const { userSelectedAddOns, customAddOns } = useMutableAddOns ( )
102
108
const projectStarter = useProjectStarter ( ) . projectStarter
103
109
@@ -118,6 +124,9 @@ export function useAddOns() {
118
124
for ( const addOn of originalSelectedAddOns ) {
119
125
originalAddOns . add ( addOn )
120
126
}
127
+ for ( const addOn of forcedAddOns ) {
128
+ originalAddOns . add ( addOn )
129
+ }
121
130
return getAddOnStatus (
122
131
availableAddOns ,
123
132
userSelectedAddOns ,
@@ -128,11 +137,18 @@ export function useAddOns() {
128
137
userSelectedAddOns ,
129
138
originalSelectedAddOns ,
130
139
projectStarter ?. dependsOn ,
140
+ forcedAddOns ,
131
141
] )
132
142
133
143
const chosenAddOns = useMemo ( ( ) => {
134
- return Object . keys ( addOnState ) . filter ( ( addOn ) => addOnState [ addOn ] . selected )
135
- } , [ addOnState ] )
144
+ const addOns = new Set (
145
+ Object . keys ( addOnState ) . filter ( ( addOn ) => addOnState [ addOn ] . selected ) ,
146
+ )
147
+ for ( const addOn of forcedAddOns ) {
148
+ addOns . add ( addOn )
149
+ }
150
+ return Array . from ( addOns )
151
+ } , [ addOnState , forcedAddOns ] )
136
152
137
153
const toggleAddOn = useCallback (
138
154
( addOnId : string ) => {
@@ -166,7 +182,11 @@ export function useAddOns() {
166
182
const useHasProjectStarter = ( ) =>
167
183
useProjectStarter ( ( state ) => state . projectStarter === undefined )
168
184
169
- export const useModeEditable = ( ) => useHasProjectStarter ( )
185
+ export const useModeEditable = ( ) => {
186
+ const forcedRouterMode = useForcedRouterMode ( )
187
+ const hasProjectStarter = useHasProjectStarter ( )
188
+ return ! forcedRouterMode && hasProjectStarter
189
+ }
170
190
171
191
export const useTypeScriptEditable = ( ) => {
172
192
const hasProjectStarter = useHasProjectStarter ( )
@@ -183,7 +203,11 @@ export const useTailwindEditable = () => {
183
203
export const useProjectName = ( ) =>
184
204
useProjectOptions ( ( state ) => state . projectName )
185
205
186
- export const useRouterMode = ( ) => useProjectOptions ( ( state ) => state . mode )
206
+ export const useRouterMode = ( ) => {
207
+ const forcedRouterMode = useForcedRouterMode ( )
208
+ const userMode = useProjectOptions ( ( state ) => state . mode )
209
+ return forcedRouterMode || userMode
210
+ }
187
211
188
212
export function useFilters ( ) {
189
213
const includedFiles = useApplicationSettings ( ( state ) => state . includeFiles )
0 commit comments