const preact = require('preact'); const { Component } = require('preact'); const anime = require('animejs').default; const { connect } = require('preact-redux'); const { TIMES, COLOURS } = require('../../constants'); const { randomPoints } = require('../../utils'); function projectile(x, y, radius, colour) { return ( ); } const addState = connect( function receiveState(state) { const { animCb } = state; return { animCb }; } ); class TriageTick extends Component { constructor(props) { super(); this.team = props.team; this.animations = []; const points = randomPoints(15, 10, { x: 0, y: 0, width: 300, height: 400 }); this.charges = points.map(coord => projectile(coord[0], coord[1], 15, COLOURS.GREEN)); } render() { return ( {this.charges} ); } componentDidMount() { this.animations.push(anime({ targets: ['#triageTick'], opacity: [ { value: 1, duration: TIMES.TARGET_DURATION_MS * 0.2 }, { value: 0, delay: TIMES.TARGET_DURATION_MS * 0.6, duration: TIMES.TARGET_DURATION_MS * 0.2 }, ], easing: 'easeInOutSine', })); this.animations.push(anime({ targets: ['#triageTick circle'], cx: 150, cy: 200, duration: TIMES.TARGET_DURATION_MS, easing: 'easeInOutElastic', })); } componentWillUnmount() { for (let i = this.animations.length - 1; i >= 0; i--) { this.animations[i].reset(); } this.props.animCb && this.props.animCb(); } } module.exports = addState(TriageTick);