index.js (2892B)
1 import { h, Component } from 'preact'; 2 import CheckBox from '../CheckBox/'; 3 import WaveTable from '../WaveTable/'; 4 import HSlider from '../HSlider/'; 5 import helpers from '../helpers'; 6 import './style.css'; 7 8 export default class WaveManager extends Component { 9 render() { 10 const modeClass = this.props.activated ? ' selected' : ''; 11 return ( 12 <div class={`wave-manager${modeClass}`}> 13 <div class="buttons"> 14 <div class="left-button-group"> 15 <div> 16 <button 17 class="item" 18 onClick={this.props.remove} 19 > 20 <span class="icon icons-ex"></span> 21 </button> 22 <button 23 class="item" 24 onClick={this.props.duplicate} 25 > 26 <span class="icon icons-dupe"></span> 27 </button> 28 </div> 29 </div> 30 <div class="right-button-group"> 31 <button 32 class={`item solo${this.props.tone.solo ? ' active' : ''}`} 33 onClick={this.props.toggleSolo} 34 > 35 solo 36 </button> 37 <button 38 class={`item mute${this.props.tone.mute ? ' active' : ''}`} 39 onClick={this.props.toggleMute} 40 > 41 mute 42 </button> 43 <HSlider 44 value ={this.props.mix} 45 update={this.props.updateMix} 46 class="item" 47 > 48 <span>mix</span> 49 </HSlider> 50 </div> 51 </div> 52 <div class="beats"> 53 <div onClick={this.props.activate}> 54 <WaveTable 55 height={40} 56 width={75} 57 waveform={this.props.tone.waveform.slice()} 58 /> 59 </div> 60 {this.props.tone.beats.slice(0, this.props.numBeats).map((val, idx) => { 61 return ( 62 <CheckBox 63 class={this.props.beat === idx ? 'beat' : ''} 64 checked={val} 65 update={helpers.partial(this.props.updateBeat, idx)} /> 66 )})} 67 </div> 68 </div> 69 ); 70 } 71 }