import { createApp } from 'vue'; import App from './App.vue'; import ElementPlus from 'element-plus'; import { createPinia } from 'pinia'; import { messageL10nService } from '@itprom/message'; import { router } from '@/router/router.ts'; import { TABLE_LAYOUT_SERVICE_TOKEN, ModuleRegistry, DependencyRegistry, updateMessages } from '@itprom/core'; import { layoutCoreAdapter } from '@itprom/tablelayout'; // Импорт глобальных стилей element plus import 'element-plus/dist/index.css'; import './styles/itprom-modules.css'; import './styles/index.scss'; import '@vueup/vue-quill/dist/vue-quill.snow.css'; import { initModuleRegistry } from '@/modules.ts'; import { favoriteService } from '@itprom/favorites'; /** * Основная точка входа Vue-приложения. * Инициализация приложения, глобальных плагинов и настроек. * * @author Sergey Verbitsky * @since 09.12.2025 */ const app = createApp(App); // Локальное хранилище app.use(createPinia()); // Роутер app.use(router); // Сервис локализации для корректной работы i18n (см. core/src/i18n/translation.ts) app.provide('l10Service', messageL10nService); app.provide('favoriteService', favoriteService); // Регистрация сервисов внешних модулей, нужных в core и core-components DependencyRegistry.register(TABLE_LAYOUT_SERVICE_TOKEN, layoutCoreAdapter); // Версия СУПП app.provide('suppVersion', '1.0.0'); // Подключение компонентов Element plus app.use(ElementPlus); // Асинхронная инициализация и запуск async function startApp() { // Подключаем СУПП модули const registry: ModuleRegistry = await initModuleRegistry(); app.provide('moduleRegistry', registry); // Загружаем локализацию до монтирования await updateMessages(messageL10nService); // Монтирование главного компонента приложения app.mount('#app'); } startApp() .catch((err: any) => console.log(err));