const preact = require('preact'); const { Component } = require('preact'); const anime = require('animejs').default; const { TIMES } = require('../../constants'); // shamelessly lifted from teh anime docs // https://animejs.com/documentation/#svgAttr class Hex extends Component { constructor() { super(); this.animations = []; } render() { return ( ); } componentDidMount() { this.animations.push(anime({ targets: ['#hex'], opacity: 1, delay: TIMES.TARGET_DELAY_MS, duration: TIMES.TARGET_DELAY_MS, })); this.animations.push(anime({ targets: ['#hex polygon'], points: '64 124.94732621931382 8.574 96.00354944613788 8.62269130211947 32.03166105954991 64 4 119.37730869788052 32.03166105954991 119.426 96.00354944613788', easing: 'easeOutExpo', delay: TIMES.TARGET_DELAY_MS, duration: TIMES.TARGET_DURATION_MS, })); // this.animations.push(anime({ // targets: ['feTurbulence', 'feDisplacementMap'], // baseFrequency: 0, // scale: 1, // easing: 'easeOutSine', // delay: TIMES.TARGET_DELAY_MS, // duration: TIMES.TARGET_DURATION_MS, // })); } // this is necessary because // skipping / timing / unmounting race conditions // can cause the animations to cut short, this will ensure the values are reset // because preact will recycle all these components componentWillUnmount() { for (let i = this.animations.length - 1; i >= 0; i--) { this.animations[i].reset(); } } } module.exports = Hex;