import { createNamespaceFn } from '@varlet/shared' import type { App, Component, Plugin } from 'vue' export type ComponentWithInstall = T & Plugin export function withInstall(component: Component, target?: T): ComponentWithInstall { const componentWithInstall = target ?? component ;(componentWithInstall as ComponentWithInstall).install = function (app: App) { const { name } = component if (name) { app.component(name, component) } } return componentWithInstall as ComponentWithInstall } export const createNamespace = createNamespaceFn('va')