31 lines
1016 B
TypeScript
31 lines
1016 B
TypeScript
import { createSSRApp, h, shallowRef } from 'vue'
|
|
import { setPageContext } from './usePageContext'
|
|
import { setData } from './useData'
|
|
import type { PageContext } from 'vike/types'
|
|
import { objectAssign } from './utils'
|
|
|
|
// import Layout from './Layout.vue'
|
|
|
|
export function createVueApp(pageContext: PageContext) {
|
|
const pageContextRef = shallowRef(pageContext)
|
|
const dataRef = shallowRef(pageContext.data)
|
|
const pageRef = shallowRef(pageContext.Page)
|
|
|
|
// const RootComponent = () => h(Layout, null, () => h(pageRef.value))
|
|
const RootComponent = () => h(pageContext.config.Layout, null, () => h(pageRef.value))
|
|
const app = createSSRApp(RootComponent)
|
|
setPageContext(app, pageContextRef)
|
|
setData(app, dataRef)
|
|
|
|
// app.changePage() is called upon navigation, see +onRenderClient.ts
|
|
objectAssign(app, {
|
|
changePage: (pageContext: PageContext) => {
|
|
pageContextRef.value = pageContext
|
|
dataRef.value = pageContext.data
|
|
pageRef.value = pageContext.Page
|
|
}
|
|
})
|
|
|
|
return app
|
|
}
|