mergeImportMap,
File,
StoreState,
+ ImportMap,
} from '@vue/repl'
import type Monaco from '@vue/repl/monaco-editor'
import type CodeMirror from '@vue/repl/codemirror-editor'
import { ref, watchEffect, onMounted, computed, shallowRef, watch } from 'vue'
+import welcomeSFC from './welcome.vue?raw'
const EditorComponent = shallowRef<typeof Monaco | typeof CodeMirror>()
: `${location.origin}/src/vue-server-renderer-dev-proxy`,
})
-const importMap = computed(() =>
- mergeImportMap(vueImportMap.value, {
+const importMap = computed(() => {
+ const vapor = import.meta.env.PROD
+ ? `${location.origin}/vue-vapor.esm-browser.js`
+ : `${location.origin}/src/vue-vapor-dev-proxy`
+
+ const vaporImportMap: ImportMap = {
imports: {
- 'vue/vapor': import.meta.env.PROD
- ? `${location.origin}/vue-vapor.esm-browser.js`
- : `${location.origin}/src/vue-vapor-dev-proxy`,
+ 'vue/vapor': vapor,
},
- }),
-)
+ }
+ if (useVaporMode.value) vaporImportMap.imports!.vue = vapor
+
+ return mergeImportMap(vueImportMap.value, vaporImportMap)
+})
let hash = location.hash.slice(1)
if (hash.startsWith('__DEV__')) {
}
const files: StoreState['files'] = ref(Object.create(null))
-const mainFile = ref('src/App.vue')
// enable experimental features
const sfcOptions = computed(
vueVersion,
builtinImportMap: importMap,
sfcOptions,
- mainFile,
+ template: ref({
+ welcomeSFC: welcomeSFC,
+ }),
},
hash,
)
`<div id="app"></div>`,
true,
)
- mainFile.value = 'src/index.html'
- store.activeFile = files.value['src/App.vue']
+ store.mainFile = 'src/index.html'
} else if (files.value['src/index.html']?.hidden) {
delete files.value['src/index.html']
- mainFile.value = 'src/App.vue'
+ store.mainFile = 'src/App.vue'
+ if (store.activeFile.filename === 'src/index.html') {
+ store.activeFile = files.value['src/App.vue']
+ }
}
},
{ immediate: true },
packages/sfc-playground:
dependencies:
'@vue/repl':
- specifier: 4.0.0-alpha.0
- version: 4.0.0-alpha.0
+ specifier: 4.0.0-alpha.1
+ version: 4.0.0-alpha.1
file-saver:
specifier: ^2.0.5
version: 2.0.5
engines: {node: '>= 0.12.0'}
dev: true
- /@vue/repl@4.0.0-alpha.0:
- resolution: {integrity: sha512-kGgnon2yV1y0eKeWatys4by32XXCDSdq31Rwx0cd8xXAIK0GIL0AeSMCvVUrNE2ke8rFVYe6xMmpOd1iCcM0Zg==}
+ /@vue/repl@4.0.0-alpha.1:
+ resolution: {integrity: sha512-BK9D7AgpYAWVrtd7Kkc3CotU/ox8l+mPjsLgK16ZP+Ldj8jXPrJtzYQ2rTQNRJOxVSVx5acftDTLDLENFhQdDw==}
dev: false
/@zeit/schemas@2.29.0: