import './main.scss'; import { createApp } from 'vue'; import App from './App.vue'; import type { ChatOptions } from '@/types'; import { defaultMountingTarget, defaultOptions } from '@/constants'; import { createDefaultMountingTarget } from '@/utils'; import { ChatPlugin } from '@/plugins'; export function createChat(options?: Partial) { const resolvedOptions: ChatOptions = { ...defaultOptions, ...options, webhookConfig: { ...defaultOptions.webhookConfig, ...options?.webhookConfig, }, i18n: { ...defaultOptions.i18n, ...options?.i18n, en: { ...defaultOptions.i18n?.en, ...options?.i18n?.en, }, }, theme: { ...defaultOptions.theme, ...options?.theme, }, }; const mountingTarget = resolvedOptions.target ?? defaultMountingTarget; if (typeof mountingTarget === 'string') { createDefaultMountingTarget(mountingTarget); } // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const app = createApp(App); app.use(ChatPlugin, resolvedOptions); app.mount(mountingTarget); return app; }