@@ -16,6 +16,7 @@ import { PreviewProxy } from './PreviewProxy'
16
16
import { compileModulesForPreview } from ' ./moduleCompiler'
17
17
import type { Store } from ' ../store'
18
18
import { injectKeyProps } from ' ../types'
19
+ import { getVersions , isVaporSupported } from ' ../import-map'
19
20
20
21
export interface SandboxProps {
21
22
store: Store
@@ -202,9 +203,7 @@ async function updatePreview() {
202
203
203
204
let isSSR = props .ssr
204
205
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 )
208
207
if (major === 3 && (minor < 2 || (minor === 2 && patch < 27 ))) {
209
208
alert (
210
209
` The selected version of Vue (${store .value .vueVersion }) does not support in-browser SSR. ` +
@@ -214,6 +213,10 @@ async function updatePreview() {
214
213
}
215
214
}
216
215
216
+ const vaporSupported = isVaporSupported (
217
+ store .value .vueVersion || store .value .compiler ?.version
218
+ )
219
+
217
220
try {
218
221
const { mainFile } = store .value
219
222
@@ -228,10 +231,11 @@ async function updatePreview() {
228
231
` const __modules__ = {}; ` ,
229
232
... ssrModules ,
230
233
` 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'
232
235
const AppComponent = __modules__["${mainFile }"].default
233
236
AppComponent.name = 'Repl'
234
- const app = _createApp(AppComponent)
237
+ const vaporSupported = ${vaporSupported }
238
+ const app = (vaporSupported && AppComponent.__vapor ? _createVaporApp : _createApp)(AppComponent)
235
239
if (!app.config.hasOwnProperty('unwrapInjectedRef')) {
236
240
app.config.unwrapInjectedRef = true
237
241
}
@@ -297,14 +301,19 @@ async function updatePreview() {
297
301
// if main file is a vue file, mount it.
298
302
if (mainFile .endsWith (' .vue' )) {
299
303
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"
303
311
${previewOptions .value ?.customCode ?.importCode || ' ' }
304
312
const _mount = () => {
305
313
const AppComponent = __modules__["${mainFile }"].default
306
314
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)
308
317
if (!app.config.hasOwnProperty('unwrapInjectedRef')) {
309
318
app.config.unwrapInjectedRef = true
310
319
}
0 commit comments