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"