import { createApp, h } from 'vue'
import { App, Link, plugin as inertiaPlugin } from '@inertiajs/inertia-vue3'
import store from './store'
import { InertiaProgress as progress } from '@inertiajs/progress'
progress.init({
    color: '#673ab7',
})

import '../css/app.css'
import '../css/common.css'

const el = document.getElementById('app')

// let asyncViews = () => {
//     return import.meta.glob('./Pages/**/*.vue')
// }
const pages = import.meta.glob('./Pages/**/*.vue')
createApp({
    render: () =>
        h(App, {
            initialPage: JSON.parse(el.dataset.page),

            resolveComponent: name => {
                const importPage = pages[`./Pages/${name}.vue`]

                if (!importPage) {
                    throw new Error(`Unknown page ${name}. Is it located under Pages with a .vue extension?`)
                }

                return importPage().then(module => module.default)
            }

            // resolveComponent: async (name) => {
            //     var inertiaPageAsync = (await import(`./Pages/${name}.vue`)).default
            //     return inertiaPageAsync
            // },
            // resolveComponent: (name) => {
            //     var inertiaPageAsync = import.meta.globEager(`./Pages/${name}.vue`)
            //     return inertiaPageAsync[`./Pages/${name}.vue`].default
            // },
            // resolveComponent: async name => {
            //     if (import.meta.env.DEV) {
            //         return (await import(`./Pages/${name}.vue`)).default
            //     } else {
            //         let pages = asyncViews()
            //         const importPage = pages[`./Pages/${name}.vue`]
            //         return importPage().then(module => module.default)
            //     }
            // }

        }),
})
    .mixin({
        methods: {
            route: window.route
        }
    })
    .use(store)
    .use(inertiaPlugin)
    .component('InertiaLink', Link)
    .mount(el)
