File tree Expand file tree Collapse file tree 4 files changed +47
-1
lines changed Expand file tree Collapse file tree 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 >
@@ -149,6 +155,26 @@ function refreshView() {
149
155
</div >
150
156
151
157
<div flex =" ~ gap-4" text-lg >
158
+ <el-popover
159
+ v-model:visible =" showReset"
160
+ popper-class =" flex flex-col gap-1"
161
+ trigger =" click"
162
+ width =" 200px"
163
+ >
164
+ <div flex justify-center >Want to reset the editor ?</div >
165
+ <el-button
166
+ flex
167
+ self-end
168
+ size =" small"
169
+ type =" primary"
170
+ @click =" resetFiles"
171
+ >
172
+ Yes
173
+ </el-button >
174
+ <template #reference >
175
+ <button i-ri-delete-bin-line hover:color-primary />
176
+ </template >
177
+ </el-popover >
152
178
<button
153
179
i-ri-refresh-line
154
180
title =" Refresh sandbox"
Original file line number Diff line number Diff line change @@ -249,6 +249,20 @@ export const useStore = (initial: Initial) => {
249
249
}
250
250
}
251
251
252
+ const resetFiles = ( ) => {
253
+ const { files, addFile } = store
254
+
255
+ const isRandomFile = ( filename : string ) =>
256
+ ! [ MAIN_FILE , TSCONFIG , IMPORT_MAP , ELEMENT_PLUS_FILE ] . includes (
257
+ filename ,
258
+ )
259
+ for ( const filename in files )
260
+ if ( isRandomFile ( filename ) ) delete files [ filename ]
261
+
262
+ const appFile = new File ( APP_FILE , welcomeCode , false )
263
+ addFile ( appFile )
264
+ }
265
+
252
266
const utils = {
253
267
versions,
254
268
pr,
@@ -257,6 +271,7 @@ export const useStore = (initial: Initial) => {
257
271
serialize,
258
272
init,
259
273
vuePr,
274
+ resetFiles,
260
275
}
261
276
Object . assign ( store , utils )
262
277
You can’t perform that action at this time.
0 commit comments