Skip to content

Commit c915bdd

Browse files
committed
feat: reset editor files
1 parent 1aa08da commit c915bdd

File tree

4 files changed

+47
-1
lines changed

4 files changed

+47
-1
lines changed

src/App.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,16 @@ const refreshPreview = () => {
6666
replRef.value?.reload()
6767
}
6868
69+
const resetFiles = () => {
70+
store.resetFiles()
71+
}
72+
6973
watch(autoSave, setAutoSaveState)
7074
</script>
7175

7276
<template>
7377
<div v-if="!loading" antialiased>
74-
<Header :store="store" @refresh="refreshPreview" />
78+
<Header :store="store" @refresh="refreshPreview" @reset="resetFiles" />
7579
<Repl
7680
ref="replRef"
7781
v-model="autoSave"

src/components.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export {}
77
/* prettier-ignore */
88
declare module 'vue' {
99
export interface GlobalComponents {
10+
ElButton: typeof import('element-plus/es')['ElButton']
1011
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
1112
ElForm: typeof import('element-plus/es')['ElForm']
1213
ElFormItem: typeof import('element-plus/es')['ElFormItem']

src/components/Header.vue

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ const replVersion = import.meta.env.REPL_VERSION
1313
1414
const emit = defineEmits<{
1515
(e: 'refresh'): void
16+
(e: 'reset'): void
1617
}>()
1718
const nightly = ref(false)
19+
const showReset = ref(false)
1820
const dark = useDark()
1921
const toggleDark = useToggle(dark)
2022
@@ -65,6 +67,10 @@ async function copyLink() {
6567
function refreshView() {
6668
emit('refresh')
6769
}
70+
function resetFiles() {
71+
showReset.value = false
72+
emit('reset')
73+
}
6874
</script>
6975

7076
<template>
@@ -139,6 +145,26 @@ function refreshView() {
139145
</div>
140146

141147
<div flex="~ gap-4" text-lg>
148+
<el-popover
149+
v-model:visible="showReset"
150+
popper-class="flex flex-col gap-1"
151+
trigger="click"
152+
width="200px"
153+
>
154+
<div flex justify-center>Want to reset the editor ?</div>
155+
<el-button
156+
flex
157+
self-end
158+
size="small"
159+
type="primary"
160+
@click="resetFiles"
161+
>
162+
Yes
163+
</el-button>
164+
<template #reference>
165+
<button i-ri-delete-bin-line hover:color-primary />
166+
</template>
167+
</el-popover>
142168
<button i-ri-refresh-line hover:color-primary @click="refreshView" />
143169
<button i-ri-share-line hover:color-primary @click="copyLink" />
144170
<button

src/composables/store.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,28 @@ export const useStore = (initial: Initial) => {
231231
}
232232
}
233233

234+
const resetFiles = () => {
235+
const { files, addFile } = store
236+
237+
const isRandomFile = (filename: string) =>
238+
![MAIN_FILE, TSCONFIG, IMPORT_MAP, ELEMENT_PLUS_FILE, APP_FILE].includes(
239+
filename,
240+
)
241+
for (const filename in files)
242+
if (isRandomFile(filename)) delete files[filename]
243+
244+
const appFile = new File(APP_FILE, welcomeCode, false)
245+
addFile(appFile)
246+
}
247+
234248
const utils = {
235249
versions,
236250
pr,
237251
setVersion,
238252
toggleNightly,
239253
serialize,
240254
init,
255+
resetFiles,
241256
}
242257
Object.assign(store, utils)
243258

0 commit comments

Comments
 (0)