// js/state.js import { initializePatternState } from './pattern/pattern_state.js'; import { audioState, initializeAudioState } from './audio/audio_state.js'; import { DEFAULT_VOLUME, DEFAULT_PAN } from "./config.js"; // Estado global da aplicação const globalState = {   sliceToolActive: false,   isPlaying: false,   isAudioEditorPlaying: false,   playbackIntervalId: null,   currentStep: 0,   metronomeEnabled: false,   originalXmlDoc: null,   currentBeatBasslineName: 'Novo Projeto',   masterVolume: DEFAULT_VOLUME,   masterPan: DEFAULT_PAN,   zoomLevelIndex: 2,   isLoopActive: false,   loopStartTime: 0,   loopEndTime: 8,   resizeMode: 'trim',   selectedClipId: null,   isRecording: false,   clipboard: null,   lastRulerClickTime: 0, }; // --- ADICIONE ESTE BLOCO --- // Define o ESTADO INICIAL para o pattern module const patternState = {     tracks: [],     activeTrackId: null,     activePatternIndex: 0, }; // --- FIM DA ADIÇÃO --- // Combina todos os estados em um único objeto namespaced export let appState = {   global: globalState,   pattern: patternState, // <-- AGORA 'patternState' está definido   audio: audioState, }; // Função para resetar o projeto para o estado inicial export function resetProjectState() {     initializePatternState(); // Esta função vai MODIFICAR appState.pattern     initializeAudioState();     Object.assign(globalState, {         sliceToolActive: false,         isPlaying: false,         isAudioEditorPlaying: false,         playbackIntervalId: null,         currentStep: 0,         metronomeEnabled: false,         originalXmlDoc: null,         currentBeatBasslineName: 'Novo Projeto',         masterVolume: DEFAULT_VOLUME,         masterPan: DEFAULT_PAN,         zoomLevelIndex: 2,         isLoopActive: false,         loopStartTime: 0,         loopEndTime: 8,         resizeMode: 'trim',         selectedClipId: null,         isRecording: false,         clipboard: null,         lastRulerClickTime: 0,     }); }