@@ -16,6 +16,7 @@ import { PreviewProxy } from './PreviewProxy'
1616import { compileModulesForPreview } from ' ./moduleCompiler'
1717import type { Store } from ' ../store'
1818import { injectKeyProps } from ' ../types'
19+ import { getVersions , isVaporSupported } from ' ../import-map'
1920
2021export interface SandboxProps {
2122 store: Store
@@ -202,9 +203,7 @@ async function updatePreview() {
202203
203204 let isSSR = props .ssr
204205 if (store .value .vueVersion ) {
205- const [major, minor, patch] = store .value .vueVersion
206- .split (' .' )
207- .map ((v ) => parseInt (v , 10 ))
206+ const [major, minor, patch] = getVersions (store .value .vueVersion )
208207 if (major === 3 && (minor < 2 || (minor === 2 && patch < 27 ))) {
209208 alert (
210209 ` The selected version of Vue (${store .value .vueVersion }) does not support in-browser SSR. ` +
@@ -214,6 +213,10 @@ async function updatePreview() {
214213 }
215214 }
216215
216+ const vaporSupported = isVaporSupported (
217+ store .value .vueVersion || store .value .compiler ?.version
218+ )
219+
217220 try {
218221 const { mainFile } = store .value
219222
@@ -228,10 +231,11 @@ async function updatePreview() {
228231 ` const __modules__ = {}; ` ,
229232 ... ssrModules ,
230233 ` import { renderToString as _renderToString } from 'vue/server-renderer'
231- import { createSSRApp as _createApp } from 'vue'
234+ import { createSSRApp as _createApp ${ vaporSupported ? ' , createVaporSSRApp as _createVaporApp ' : ' ' } } from 'vue'
232235 const AppComponent = __modules__["${mainFile }"].default
233236 AppComponent.name = 'Repl'
234- const app = _createApp(AppComponent)
237+ const vaporSupported = ${vaporSupported }
238+ const app = (vaporSupported && AppComponent.__vapor ? _createVaporApp : _createApp)(AppComponent)
235239 if (!app.config.hasOwnProperty('unwrapInjectedRef')) {
236240 app.config.unwrapInjectedRef = true
237241 }
@@ -297,14 +301,19 @@ async function updatePreview() {
297301 // if main file is a vue file, mount it.
298302 if (mainFile .endsWith (' .vue' )) {
299303 codeToEval .push (
300- ` import { ${
301- isSSR ? ` createSSRApp ` : ` createApp `
302- } as _createApp } from "vue"
304+ ` import { ${isSSR ? ` createSSRApp ` : ` createApp ` } as _createApp ${
305+ vaporSupported
306+ ? ` , ${
307+ isSSR ? ' createVaporSSRApp' : ' createVaporApp'
308+ } as _createVaporApp `
309+ : ' '
310+ } } from "vue"
303311 ${previewOptions .value ?.customCode ?.importCode || ' ' }
304312 const _mount = () => {
305313 const AppComponent = __modules__["${mainFile }"].default
306314 AppComponent.name = 'Repl'
307- const app = window.__app__ = _createApp(AppComponent)
315+ const vaporSupported = ${vaporSupported }
316+ const app = window.__app__ = (vaporSupported && AppComponent.__vapor ? _createVaporApp : _createApp)(AppComponent)
308317 if (!app.config.hasOwnProperty('unwrapInjectedRef')) {
309318 app.config.unwrapInjectedRef = true
310319 }
0 commit comments