/**
* Providers V2
*
* Новая версия провайдеров с интеграцией backend state management
*/
"use client"
import { ReactNode, useEffect } from "react"
import { ChatProvider } from "@/features/ai-chat/services/chat-provider"
import { AIIntelligenceProvider } from "@/features/ai-content-intelligence"
import { AppProvider } from "@/features/app-state/services/app-provider"
import { BrowserStateProvider } from "@/features/browser/services/browser-state-provider"
import { ShortcutsProvider } from "@/features/keyboard-shortcuts"
import { ThemeProvider } from "@/features/media-studio/components/top-bar/theme/theme-context"
import { TauriMockProvider } from "@/features/media-studio/services/tauri-mock-provider"
import { ModalProvider } from "@/features/modals/services/modal-provider"
import { ProjectSettingsProvider } from "@/features/project-settings/services/project-settings-provider"
import { ResourcesProvider } from "@/features/resources/services/resources-provider"
import { TimelineProvider } from "@/features/timeline/services/timeline-provider"
import { UserSettingsProvider } from "@/features/user-settings"
import { PlayerProvider } from "@/features/video-player/services/player-provider"
import { I18nProvider } from "@/i18n/services/i18n-provider"
import { setupXStateInspector } from "@/lib/xstate-inspector"
interface ProvidersV2Props {
children: ReactNode
}
// Создаем композитный провайдер для уменьшения вложенности
const composeProviders = (...providers: React.ComponentType<{ children: ReactNode }>[]) => {
return ({ children }: { children: ReactNode }) => {
return providers.reduceRight((child, Provider) => {child}, children)
}
}
// Создаем единый провайдер из всех контекстов V2
// ВАЖНО: Порядок провайдеров оптимизирован для новой архитектуры!
// AppProviderV2 должен быть рано в цепочке для инициализации backend
const AppProviderComposite = composeProviders(
TauriMockProvider, // Должен быть первым для инициализации моков
I18nProvider, // Легкий провайдер для локализации
ThemeProvider, // Легкий провайдер для темы
ModalProvider, // Легкий провайдер для модальных окон
// ✅ НОВАЯ АРХИТЕКТУРА
AppProvider, // Новый провайдер с backend state management
// Остальные провайдеры (некоторые будут мигрированы позже)
UserSettingsProvider, // Пользовательские настройки
ProjectSettingsProvider, // ✅ Новый провайдер настроек проекта с backend синхронизацией
ShortcutsProvider, // Зависит от UserSettingsProvider
ResourcesProvider, // ✅ Новый провайдер ресурсов с backend интеграцией
BrowserStateProvider, // Состояние браузера
// ✅ НОВАЯ TIMELINE АРХИТЕКТУРА
TimelineProvider, // Новый провайдер timeline с backend интеграцией
PlayerProvider, // ✅ Новый провайдер видеоплеера с backend синхронизацией
ChatProvider, // ✅ Новый провайдер чата с backend интеграцией для истории
AIIntelligenceProvider, // AI Intelligence (может быть тяжелым)
)
export function ProvidersV2({ children }: ProvidersV2Props) {
// Инициализируем XState Inspector в development режиме
useEffect(() => {
setupXStateInspector()
}, [])
return {children}
}
// Экспорт для обратной совместимости
export { ProvidersV2 as Providers }