File tree 4 files changed +47
-1
lines changed
4 files changed +47
-1
lines changed Original file line number Diff line number Diff line change @@ -66,12 +66,16 @@ const refreshPreview = () => {
66
66
replRef.value?.reload()
67
67
}
68
68
69
+ const resetFiles = () => {
70
+ store.resetFiles()
71
+ }
72
+
69
73
watch(autoSave, setAutoSaveState)
70
74
</script>
71
75
72
76
<template>
73
77
<div v-if="!loading" antialiased>
74
- <Header :store="store" @refresh="refreshPreview" />
78
+ <Header :store="store" @refresh="refreshPreview" @reset="resetFiles" />
75
79
<Repl
76
80
ref="replRef"
77
81
v-model="autoSave"
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ export {}
7
7
/* prettier-ignore */
8
8
declare module 'vue' {
9
9
export interface GlobalComponents {
10
+ ElButton : typeof import ( 'element-plus/es' ) [ 'ElButton' ]
10
11
ElCheckbox : typeof import ( 'element-plus/es' ) [ 'ElCheckbox' ]
11
12
ElForm : typeof import ( 'element-plus/es' ) [ 'ElForm' ]
12
13
ElFormItem : typeof import ( 'element-plus/es' ) [ 'ElFormItem' ]
Original file line number Diff line number Diff line change @@ -13,8 +13,10 @@ const replVersion = import.meta.env.REPL_VERSION
13
13
14
14
const emit = defineEmits <{
15
15
(e : ' refresh' ): void
16
+ (e : ' reset' ): void
16
17
}>()
17
18
const nightly = ref (false )
19
+ const showReset = ref (false )
18
20
const dark = useDark ()
19
21
const toggleDark = useToggle (dark )
20
22
@@ -65,6 +67,10 @@ async function copyLink() {
65
67
function refreshView() {
66
68
emit (' refresh' )
67
69
}
70
+ function resetFiles() {
71
+ showReset .value = false
72
+ emit (' reset' )
73
+ }
68
74
</script >
69
75
70
76
<template >
@@ -140,6 +146,26 @@ function refreshView() {
140
146
</div >
141
147
142
148
<div flex =" ~ gap-4" text-lg >
149
+ <el-popover
150
+ v-model:visible =" showReset"
151
+ popper-class =" flex flex-col gap-1"
152
+ trigger =" click"
153
+ width =" 200px"
154
+ >
155
+ <div flex justify-center >Want to reset the editor ?</div >
156
+ <el-button
157
+ flex
158
+ self-end
159
+ size =" small"
160
+ type =" primary"
161
+ @click =" resetFiles"
162
+ >
163
+ Yes
164
+ </el-button >
165
+ <template #reference >
166
+ <button i-ri-delete-bin-line hover:color-primary />
167
+ </template >
168
+ </el-popover >
143
169
<button
144
170
i-ri-refresh-line
145
171
title =" Refresh sandbox"
Original file line number Diff line number Diff line change @@ -231,13 +231,28 @@ export const useStore = (initial: Initial) => {
231
231
}
232
232
}
233
233
234
+ const resetFiles = ( ) => {
235
+ const { files, addFile } = store
236
+
237
+ const isRandomFile = ( filename : string ) =>
238
+ ! [ MAIN_FILE , TSCONFIG , IMPORT_MAP , ELEMENT_PLUS_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
+
234
248
const utils = {
235
249
versions,
236
250
pr,
237
251
setVersion,
238
252
toggleNightly,
239
253
serialize,
240
254
init,
255
+ resetFiles,
241
256
}
242
257
Object . assign ( store , utils )
243
258
You can’t perform that action at this time.
0 commit comments