@@ -36,9 +36,14 @@ const useInitialData = () =>
3636 'file-router' : [ ] ,
3737 } ,
3838 applicationMode : 'none' ,
39+ forcedRouterMode : undefined ,
40+ forcedAddOns : [ ] ,
3941 } ,
4042 } )
4143
44+ const useForcedRouterMode = ( ) => useInitialData ( ) . data . forcedRouterMode
45+ const useForcedAddOns = ( ) => useInitialData ( ) . data . forcedAddOns
46+
4247export const useProjectLocalFiles = ( ) => useInitialData ( ) . data . localFiles
4348export const useOriginalOutput = ( ) => useInitialData ( ) . data . output
4449export const useOriginalSelectedAddOns = ( ) =>
@@ -98,6 +103,7 @@ export function useAddOns() {
98103 const originalSelectedAddOns = useOriginalSelectedAddOns ( )
99104 const codeRouterAddOns = useCodeRouterAddOns ( )
100105 const fileRouterAddOns = useFileRouterAddOns ( )
106+ const forcedAddOns = useForcedAddOns ( )
101107 const { userSelectedAddOns, customAddOns } = useMutableAddOns ( )
102108 const projectStarter = useProjectStarter ( ) . projectStarter
103109
@@ -118,6 +124,9 @@ export function useAddOns() {
118124 for ( const addOn of originalSelectedAddOns ) {
119125 originalAddOns . add ( addOn )
120126 }
127+ for ( const addOn of forcedAddOns ) {
128+ originalAddOns . add ( addOn )
129+ }
121130 return getAddOnStatus (
122131 availableAddOns ,
123132 userSelectedAddOns ,
@@ -128,11 +137,18 @@ export function useAddOns() {
128137 userSelectedAddOns ,
129138 originalSelectedAddOns ,
130139 projectStarter ?. dependsOn ,
140+ forcedAddOns ,
131141 ] )
132142
133143 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 ] )
136152
137153 const toggleAddOn = useCallback (
138154 ( addOnId : string ) => {
@@ -166,7 +182,11 @@ export function useAddOns() {
166182const useHasProjectStarter = ( ) =>
167183 useProjectStarter ( ( state ) => state . projectStarter === undefined )
168184
169- export const useModeEditable = ( ) => useHasProjectStarter ( )
185+ export const useModeEditable = ( ) => {
186+ const forcedRouterMode = useForcedRouterMode ( )
187+ const hasProjectStarter = useHasProjectStarter ( )
188+ return ! forcedRouterMode && hasProjectStarter
189+ }
170190
171191export const useTypeScriptEditable = ( ) => {
172192 const hasProjectStarter = useHasProjectStarter ( )
@@ -183,7 +203,11 @@ export const useTailwindEditable = () => {
183203export const useProjectName = ( ) =>
184204 useProjectOptions ( ( state ) => state . projectName )
185205
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+ }
187211
188212export function useFilters ( ) {
189213 const includedFiles = useApplicationSettings ( ( state ) => state . includeFiles )
0 commit comments