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 = () => {
6666 replRef .value ?.reload ()
6767}
6868
69+ const resetFiles = () => {
70+ store .resetFiles ()
71+ }
72+
6973watch (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"
Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ export {}
77/* prettier-ignore */
88declare 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' ]
Original file line number Diff line number Diff line change @@ -13,8 +13,10 @@ const replVersion = import.meta.env.REPL_VERSION
1313
1414const emit = defineEmits <{
1515 (e : ' refresh' ): void
16+ (e : ' reset' ): void
1617}>()
1718const nightly = ref (false )
19+ const showReset = ref (false )
1820const dark = useDark ()
1921const toggleDark = useToggle (dark )
2022
@@ -65,6 +67,10 @@ async function copyLink() {
6567function refreshView() {
6668 emit (' refresh' )
6769}
70+ function resetFiles() {
71+ showReset .value = false
72+ emit (' reset' )
73+ }
6874 </script >
6975
7076<template >
@@ -149,6 +155,26 @@ function refreshView() {
149155 </div >
150156
151157 <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 >
152178 <button
153179 i-ri-refresh-line
154180 title =" Refresh sandbox"
Original file line number Diff line number Diff line change @@ -249,6 +249,20 @@ export const useStore = (initial: Initial) => {
249249 }
250250 }
251251
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+
252266 const utils = {
253267 versions,
254268 pr,
@@ -257,6 +271,7 @@ export const useStore = (initial: Initial) => {
257271 serialize,
258272 init,
259273 vuePr,
274+ resetFiles,
260275 }
261276 Object . assign ( store , utils )
262277
You can’t perform that action at this time.
0 commit comments