import { defineAsyncComponent, type AsyncComponentLoader, type AsyncComponentOptions, type Component, type ComponentPublicInstance } from 'vue' import ErrorComponent from '@/components/misc/error.vue' import LoadingComponent from '@/components/misc/loading.vue' const DEFAULT_TIMEOUT = 60000 export function createAsyncComponent(source: AsyncComponentLoader | AsyncComponentOptions): T { if (typeof source === 'function') { source = { loader: source } } return defineAsyncComponent({ ...source, loadingComponent: LoadingComponent, errorComponent: ErrorComponent, timeout: DEFAULT_TIMEOUT, }) }