diff --git a/src/editor/FileSelector.vue b/src/editor/FileSelector.vue index f7f778b1..c8a41cce 100644 --- a/src/editor/FileSelector.vue +++ b/src/editor/FileSelector.vue @@ -9,7 +9,9 @@ const pendingFilename = ref('Comp.vue') const importMapFile = 'import-map.json' const showImportMap = inject('import-map') as Ref const files = computed(() => - Object.keys(store.state.files).filter((f) => f !== importMapFile) + Object.entries(store.state.files) + .filter(([name, file]) => name !== importMapFile && !file.hidden) + .map(([name]) => name) ) function startAddFile() { diff --git a/src/store.ts b/src/store.ts index 44812e13..555f2ae1 100644 --- a/src/store.ts +++ b/src/store.ts @@ -26,15 +26,17 @@ const msg = ref('Hello World!') export class File { filename: string code: string + hidden: boolean compiled = { js: '', css: '', ssr: '' } - constructor(filename: string, code = '') { + constructor(filename: string, code = '', hidden = false) { this.filename = filename this.code = code + this.hidden = hidden } } @@ -109,9 +111,15 @@ export class ReplStore { this.state.activeFile = this.state.files[filename] } - addFile(filename: string) { - this.state.files[filename] = new File(filename) - this.setActive(filename) + addFile(filename: string): void + addFile(file: File): void + addFile(fileOrFilename: string | File): void { + const file = + typeof fileOrFilename === 'string' + ? new File(fileOrFilename) + : fileOrFilename + this.state.files[file.filename] = file + if (!file.hidden) this.setActive(file.filename) } deleteFile(filename: string) {