import React, { useMemo, useState } from 'react'; import './EventListPanel.css'; import { useProjectStore } from '../stores/projectStore'; import { KGMidiRegion } from '../core/region/KGMidiRegion'; import { KGMidiTrack } from '../core/track/KGMidiTrack'; import { KGAudioTrack } from '../core/track/KGAudioTrack'; import RegionEventListTab from './event-list-panel/RegionEventListTab'; import TrackEventListTab from './event-list-panel/TrackEventListTab'; import GlobalEventListTab from './event-list-panel/GlobalEventListTab'; import { useI18n } from '../i18n/useI18n'; interface EventListPanelProps { isVisible: boolean; } type ScopeTab = 'region' | 'track' | 'global'; const EventListPanel: React.FC = ({ isVisible }) => { const { t } = useI18n(); const { tracks, globalTracks, activeRegionId, selectedRegionIds, selectedTrackId, timeSignature, playheadPosition, refreshProjectState, } = useProjectStore(); const [scopeTab, setScopeTab] = useState('region'); const resolvedRegionId = selectedRegionIds.length > 1 ? activeRegionId : selectedRegionIds.length === 1 ? selectedRegionIds[0] : activeRegionId; const selectedTrack = useMemo(() => { const track = tracks.find(candidate => candidate.getId().toString() === selectedTrackId) ?? null; return track instanceof KGMidiTrack || track instanceof KGAudioTrack ? track : null; }, [tracks, selectedTrackId]); let activeMidiRegion: KGMidiRegion | null = null; let parentTrack: KGMidiTrack | null = null; if (resolvedRegionId) { for (const track of tracks) { const region = track.getRegions().find(candidate => candidate.getId() === resolvedRegionId); if (region instanceof KGMidiRegion && track instanceof KGMidiTrack) { activeMidiRegion = region; parentTrack = track; break; } } } return (

{t('eventList.title')}

{scopeTab === 'region' ? ( ) : scopeTab === 'track' ? ( ) : ( )}
); }; export default EventListPanel;