import { defineAsyncComponent, type Component } from "vue"; import SidebarAsyncDialogError from "./SidebarAsyncDialogError.vue"; import SidebarAsyncDialogLoading from "./SidebarAsyncDialogLoading.vue"; function lazySidebarDialog(loader: () => Promise) { return defineAsyncComponent({ loader, loadingComponent: SidebarAsyncDialogLoading, errorComponent: SidebarAsyncDialogError, delay: 120, timeout: 15_000, onError(_error, retry, fail, attempts) { if (attempts < 2) retry(); else fail(); }, }); } export const SidebarDangerConfirmDialog = lazySidebarDialog(() => import("@/components/editor/DangerConfirmDialog.vue")); export const SidebarVisibleDatabasesDialog = lazySidebarDialog(() => import("@/components/sidebar/VisibleDatabasesDialog.vue")); export const SidebarVisibleNacosNamespacesDialog = lazySidebarDialog(() => import("@/components/sidebar/VisibleNacosNamespacesDialog.vue")); export const SidebarVisibleSchemasDialog = lazySidebarDialog(() => import("@/components/sidebar/VisibleSchemasDialog.vue")); export const SidebarDdlViewDialog = lazySidebarDialog(() => import("@/components/objects/DdlViewDialog.vue")); export const SidebarObjectSourceDialog = lazySidebarDialog(() => import("@/components/objects/ObjectSourceDialog.vue")); export const SidebarElasticsearchIndexMetadataDialog = lazySidebarDialog(() => import("@/components/objects/ElasticsearchIndexMetadataDialog.vue")); export const SidebarProcedureExecutionDialog = lazySidebarDialog(() => import("@/components/objects/ProcedureExecutionDialog.vue")); export const SidebarMongoIndexManagerDialog = lazySidebarDialog(() => import("@/components/sidebar/MongoIndexManagerDialog.vue"));