|
1 | 1 | import { createInertiaApp } from '@inertiajs/vue3' |
2 | 2 | import createServer from '@inertiajs/vue3/server' |
| 3 | +import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers' |
3 | 4 | import { renderToString } from '@vue/server-renderer' |
4 | 5 | import { createSSRApp, h } from 'vue' |
5 | | -import { type RouteName, route } from 'ziggy-js' |
| 6 | +import { route as ziggyRoute } from 'ziggy-js' |
6 | 7 |
|
7 | 8 | const appName = import.meta.env.VITE_APP_NAME || 'Laravel' |
8 | 9 |
|
9 | | -createServer(page => |
| 10 | +createServer((page) => |
10 | 11 | createInertiaApp({ |
11 | 12 | page, |
12 | 13 | render: renderToString, |
13 | 14 | title: (title) => `${title} - ${appName}`, |
14 | | - resolve: name => { |
15 | | - const pages = import.meta.glob('./Pages/**/*.vue', { eager: true }) |
16 | | - return pages[`./Pages/${name}.vue`] |
17 | | - }, |
| 15 | + resolve: (name) => resolvePageComponent(`./pages/${name}.vue`, import.meta.glob('./pages/**/*.vue')), |
18 | 16 | setup({ App, props, plugin }) { |
19 | | - // Set up global route function for SSR |
20 | | - // @ts-expect-error - Ziggy types |
21 | | - global.route = <T extends RouteName>(name: T, params?: any, absolute?: boolean) => |
22 | | - route(name, params, absolute, { |
23 | | - // @ts-expect-error - Ziggy types |
24 | | - ...page.props.ziggy, |
25 | | - // @ts-expect-error - Ziggy types |
26 | | - location: new URL(page.props.ziggy.location), |
27 | | - }) |
| 17 | + // Configure Ziggy for SSR |
| 18 | + const ziggyConfig = { |
| 19 | + ...page.props.ziggy, |
| 20 | + location: new URL(page.props.ziggy.location), |
| 21 | + } |
| 22 | + |
| 23 | + // Create route function |
| 24 | + const route = (name: string, params?: any, absolute?: boolean) => |
| 25 | + ziggyRoute(name, params, absolute, ziggyConfig) |
| 26 | + |
| 27 | + // Make route function available globally for SSR |
| 28 | + if (typeof window === 'undefined') { |
| 29 | + global.route = route |
| 30 | + } |
28 | 31 |
|
| 32 | + // Create the SSR app with route function in context |
29 | 33 | const app = createSSRApp({ |
30 | 34 | render: () => h(App, props), |
| 35 | + setup() { |
| 36 | + return { |
| 37 | + route, |
| 38 | + } |
| 39 | + }, |
31 | 40 | }) |
32 | 41 |
|
33 | 42 | app.use(plugin) |
|
0 commit comments