UNPKG

audio-source-composer

Version:

Audio Source Composer

59 lines (53 loc) 2.18 kB
import React from "react"; import {ASUIPanel, ASUIClickableDropDown, ASUIIcon} from "../../components"; import {ASCProgramRenderer} from "../program"; export default class ASComposerSongProgramsPanel extends React.Component { constructor(props) { super(props); this.cb = { menuAdd: () => props.composer.renderMenuProgramAdd() } } render() { // console.log(this.constructor.name + '.render()') const composer = this.props.composer; // composer.ref.activePrograms = {}; const activePrograms = composer.ref.activePrograms; const programStates = composer.state.programStates || []; let selectedProgramID = null; const [type, id] = composer.state.selectedComponent; if(type === 'program') selectedProgramID = id; // console.log('programStates', programStates); // setTimeout(() => console.log('activePrograms', activePrograms), 100); return ( <ASUIPanel viewKey="programs" header="Song Programs" title="Song Programs (Instruments & Effects)"> {composer.getSong().programEach((programID, programClass, programConfig) => { if(!activePrograms[programID]) activePrograms[programID] = React.createRef(); return <ASCProgramRenderer ref={activePrograms[programID]} key={programID} programID={programID} composer={composer} {...programStates[programID] || {}} selected={selectedProgramID === programID} />; })} <ASUIClickableDropDown button wide arrow={false} vertical={false} className="program-add" options={this.cb.menuAdd} title="Add new Program" > <ASUIIcon source="insert" /> </ASUIClickableDropDown> </ASUIPanel> ); } }