import { memo, useMemo } from "react" import { TabsContent } from "@/components/ui/tabs" import { UniversalList } from "@/features/browser/components/universal-list" import { useTimelineActions } from "@/features/timeline/hooks" import { useEffectsAdapter } from "../adapters/use-effects-adapter" import { useFiltersAdapter } from "../adapters/use-filters-adapter" import { useMediaAdapter } from "../adapters/use-media-adapter" import { useMusicAdapter } from "../adapters/use-music-adapter" import { useStyleTemplatesAdapter } from "../adapters/use-style-templates-adapter" import { useSubtitlesAdapter } from "../adapters/use-subtitles-adapter" import { useTemplatesAdapter } from "../adapters/use-templates-adapter" import { useTransitionsAdapter } from "../adapters/use-transitions-adapter" interface TabContentProps { tabValue: string activeTab: string className: string } // Компонент для каждой вкладки с ленивой загрузкой const MediaTabContent = memo(() => { const adapter = useMediaAdapter() const { addSingleMediaToTimeline } = useTimelineActions() const handleItemSelect = useMemo(() => (item: any) => addSingleMediaToTimeline(item), [addSingleMediaToTimeline]) return }) const MusicTabContent = memo(() => { const adapter = useMusicAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) const EffectsTabContent = memo(() => { const adapter = useEffectsAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) const FiltersTabContent = memo(() => { const adapter = useFiltersAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) const TransitionsTabContent = memo(() => { const adapter = useTransitionsAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) const SubtitlesTabContent = memo(() => { const adapter = useSubtitlesAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) const TemplatesTabContent = memo(() => { const adapter = useTemplatesAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) const StyleTemplatesTabContent = memo(() => { const adapter = useStyleTemplatesAdapter() const handleItemSelect = useMemo(() => () => {}, []) return }) // Компоненты с именами MediaTabContent.displayName = "MediaTabContent" MusicTabContent.displayName = "MusicTabContent" EffectsTabContent.displayName = "EffectsTabContent" FiltersTabContent.displayName = "FiltersTabContent" TransitionsTabContent.displayName = "TransitionsTabContent" SubtitlesTabContent.displayName = "SubtitlesTabContent" TemplatesTabContent.displayName = "TemplatesTabContent" StyleTemplatesTabContent.displayName = "StyleTemplatesTabContent" /** * Компонент для рендеринга контента вкладки с ленивой загрузкой * Адаптер загружается только когда вкладка активна */ export const TabContent = memo(({ tabValue, activeTab, className }: TabContentProps) => { // Рендерим контент только если вкладка активна if (activeTab !== tabValue) { return (
Загрузка...
) } const renderContent = () => { switch (tabValue) { case "media": return case "music": return case "effects": return case "filters": return case "transitions": return case "subtitles": return case "templates": return case "style-templates": return default: return (
Адаптер для "{tabValue}" не найден
) } } return ( {renderContent()} ) }) TabContent.displayName = "TabContent"