import React, { Suspense, useMemo, useState } from 'react'
import { LoadingScreen } from './LoadingScreen'
import { useQueryBootstrapConfig } from '~/api/data/useQueryBootstrapConfig'
import { ThemeProvider } from '~/components/theme-provider'
import { PluginManagerContextProvider } from '~/modules/pluginCore/PluginManagerContext'
import { PageUrlPluginContextProvider } from '~/plugins/builtin/pageUrl/PageUrlPluginContext'
import { PageUrlJumpPlugin } from '~/plugins/builtin/pageUrl/pageUrlJumpPlugin'
import { BootstrapConfigProvider } from '~/modules/config/BootstrapConfigContext'
import { GlobalConfigProvider } from '~/modules/config/GlobalConfigContext'
import { makePluginInterfaceForCore } from '~/modules/pluginCore/makePluginManagerContext'
export interface MainLayoutProps {
children: React.ReactNode
}
export function TopLevelProviders({ children }: MainLayoutProps) {
const { data, isPending } = useQueryBootstrapConfig()
const [plugins] = useState(() => [new PageUrlJumpPlugin()])
const pluginInterfaceForCore = useMemo(() => {
return data ? makePluginInterfaceForCore(plugins) : null
}, [plugins, data])
if (isPending || !data || !pluginInterfaceForCore) {
return
}
return (
}>
{children}
)
}