11import {
22 type ToRefs ,
33 type UnwrapRef ,
4+ computed ,
45 reactive ,
56 ref ,
67 shallowRef ,
@@ -28,7 +29,7 @@ export const tsconfigFile = 'tsconfig.json'
2829export function useStore (
2930 {
3031 files = ref ( Object . create ( null ) ) ,
31- activeFile = undefined ! , // set later
32+ activeFilename = undefined ! , // set later
3233 mainFile = ref ( 'src/App.vue' ) ,
3334 template = ref ( {
3435 welcomeSFC : welcomeSFCCode ,
@@ -143,7 +144,7 @@ export function useStore(
143144 }
144145
145146 const setActive : Store [ 'setActive' ] = ( filename ) => {
146- activeFile . value = files . value [ filename ]
147+ activeFilename . value = filename
147148 }
148149 const addFile : Store [ 'addFile' ] = ( fileOrFilename ) => {
149150 let file : File
@@ -165,8 +166,8 @@ export function useStore(
165166 return
166167 }
167168
168- if ( activeFile . value . filename === filename ) {
169- activeFile . value = files . value [ mainFile . value ]
169+ if ( activeFilename . value === filename ) {
170+ activeFilename . value = mainFile . value
170171 }
171172 delete files . value [ filename ]
172173 }
@@ -302,13 +303,15 @@ export function useStore(
302303 if ( ! files . value [ mainFile . value ] ) {
303304 mainFile . value = Object . keys ( files . value ) [ 0 ]
304305 }
305- activeFile ||= ref ( files . value [ mainFile . value ] )
306+ activeFilename ||= ref ( mainFile . value )
307+ const activeFile = computed ( ( ) => files . value [ activeFilename . value ] )
306308
307309 applyBuiltinImportMap ( )
308310
309311 const store : ReplStore = reactive ( {
310312 files,
311313 activeFile,
314+ activeFilename,
312315 mainFile,
313316 template,
314317 builtinImportMap,
@@ -363,7 +366,7 @@ export interface SFCOptions {
363366
364367export type StoreState = ToRefs < {
365368 files : Record < string , File >
366- activeFile : File
369+ activeFilename : string
367370 mainFile : string
368371 template : {
369372 welcomeSFC ?: string
@@ -390,6 +393,7 @@ export type StoreState = ToRefs<{
390393} >
391394
392395export interface ReplStore extends UnwrapRef < StoreState > {
396+ activeFile : File
393397 init ( ) : void
394398 setActive ( filename : string ) : void
395399 addFile ( filename : string | File ) : void
0 commit comments