mmpSearch/assets/js/creations/state.js

71 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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,
    });
}