Files
budget_analyser/node_modules/@inertiajs/inertia-vue3/src/createInertiaApp.js
TiclemFR 076ec32c3b 🔧
2023-12-29 17:47:40 +01:00

40 lines
1.1 KiB
JavaScript

import { createSSRApp, h } from 'vue'
import App, { plugin } from './app'
export default async function createInertiaApp({ id = 'app', resolve, setup, title, page, render }) {
const isServer = typeof window === 'undefined'
const el = isServer ? null : document.getElementById(id)
const initialPage = page || JSON.parse(el.dataset.page)
const resolveComponent = name => Promise.resolve(resolve(name)).then(module => module.default || module)
let head = []
const vueApp = await resolveComponent(initialPage.component).then(initialComponent => {
return setup({
el,
app: App, // deprecated
App,
props: {
initialPage,
initialComponent,
resolveComponent,
titleCallback: title,
onHeadUpdate: isServer ? elements => (head = elements) : null,
},
plugin,
})
})
if (isServer) {
const body = await render(createSSRApp({
render: () => h('div', {
id,
'data-page': JSON.stringify(initialPage),
innerHTML: render(vueApp),
}),
}))
return { head, body }
}
}