11<script setup lang="ts">
2- import {
3- type Store ,
4- importMapFile ,
5- stripSrcPrefix ,
6- tsconfigFile ,
7- } from ' ../store'
2+ import { injectKeyStore } from ' ../../src/types'
3+ import { importMapFile , stripSrcPrefix , tsconfigFile } from ' ../store'
84import { type Ref , type VNode , computed , inject , ref } from ' vue'
95
10- const store = inject (' store ' ) as Store
6+ const store = inject (injectKeyStore ) !
117
128/**
139 * When `true`: indicates adding a new file
@@ -23,7 +19,7 @@ const pendingFilename = ref('Comp.vue')
2319const showTsConfig = inject <Ref <boolean >>(' tsconfig' )
2420const showImportMap = inject <Ref <boolean >>(' import-map' )
2521const files = computed (() =>
26- Object .entries (store .state . files )
22+ Object .entries (store .files )
2723 .filter (
2824 ([name , file ]) =>
2925 name !== importMapFile && name !== tsconfigFile && ! file .hidden ,
@@ -37,7 +33,7 @@ function startAddFile() {
3733
3834 while (true ) {
3935 let hasConflict = false
40- for (const filename in store .state . files ) {
36+ for (const filename in store .files ) {
4137 if (stripSrcPrefix (filename ) === name ) {
4238 hasConflict = true
4339 name = ` Comp${++ i }.vue `
@@ -68,18 +64,18 @@ function doneNameFile() {
6864 const oldFilename = pending .value === true ? ' ' : pending .value
6965
7066 if (! / \. (vue| js| ts| css| json)$ / .test (filename )) {
71- store .state . errors = [
67+ store .errors = [
7268 ` Playground only supports *.vue, *.js, *.ts, *.css, *.json files. ` ,
7369 ]
7470 return
7571 }
7672
77- if (filename !== oldFilename && filename in store .state . files ) {
78- store .state . errors = [` File "${filename }" already exists. ` ]
73+ if (filename !== oldFilename && filename in store .files ) {
74+ store .errors = [` File "${filename }" already exists. ` ]
7975 return
8076 }
8177
82- store .state . errors = []
78+ store .errors = []
8379 cancelNameFile ()
8480
8581 if (filename === oldFilename ) {
@@ -122,7 +118,7 @@ function horizontalScroll(e: WheelEvent) {
122118 <div
123119 v-if =" pending !== file"
124120 class =" file"
125- :class =" { active: store.state. activeFile.filename === file }"
121+ :class =" { active: store.activeFile.filename === file }"
126122 @click =" store.setActive(file)"
127123 @dblclick =" i > 0 && editFileName(file)"
128124 >
@@ -154,17 +150,17 @@ function horizontalScroll(e: WheelEvent) {
154150
155151 <div class =" import-map-wrapper" >
156152 <div
157- v-if =" showTsConfig && store.state. files[tsconfigFile]"
153+ v-if =" showTsConfig && store.files[tsconfigFile]"
158154 class =" file"
159- :class =" { active: store.state. activeFile.filename === tsconfigFile }"
155+ :class =" { active: store.activeFile.filename === tsconfigFile }"
160156 @click =" store.setActive(tsconfigFile)"
161157 >
162158 <span class =" label" >tsconfig.json</span >
163159 </div >
164160 <div
165161 v-if =" showImportMap"
166162 class =" file"
167- :class =" { active: store.state. activeFile.filename === importMapFile }"
163+ :class =" { active: store.activeFile.filename === importMapFile }"
168164 @click =" store.setActive(importMapFile)"
169165 >
170166 <span class =" label" >Import Map</span >
0 commit comments