8000 refactor: reference active file from files · vuejs/repl@e5a0ad5 · GitHub
[go: up one dir, main page]

Skip to content

Commit e5a0ad5

Browse files
committed
refactor: reference active file from files
1 parent 97ac09b commit e5a0ad5

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

src/store.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
type ToRefs,
33
type UnwrapRef,
4+
computed,
45
reactive,
56
ref,
67
shallowRef,
@@ -28,7 +29,7 @@ export const tsconfigFile = 'tsconfig.json'
2829
export 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

364367
export 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

392395
export interface ReplStore extends UnwrapRef<StoreState> {
396+
activeFile: File
393397
init(): void
394398
setActive(filename: string): void
395399
addFile(filename: string | File): void

test/main.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
/* eslint-disable @typescript-eslint/prefer-ts-expect-error */
12
import { createApp, h, ref, watchEffect } from 'vue'
23
import { type OutputModes, Repl, useStore, useVueImportMap } from '../src'
4+
// @ts-ignore
35
import MonacoEditor from '../src/editor/MonacoEditor.vue'
4-
// import CodeMirrorEditor from '../src/editor/CodeMirrorEditor.vue'
6+
// @ts-ignore
7+
import CodeMirrorEditor from '../src/editor/CodeMirrorEditor.vue'
58

69
const window = globalThis.window as any
710
window.process = { env: {} }
@@ -43,7 +46,7 @@ const App = {
4346
// )
4447
// }, 1000)
4548

46-
store.vueVersion = '3.4.1'
49+
// store.vueVersion = '3.4.1'
4750

4851
return () =>
4952
h(Repl, {

0 commit comments

Comments
 (0)
0