const preact = require('preact'); const { Component } = require('preact'); class TrippyTriangle extends Component { constructor() { super(); this.state = { pct: 0, delta: 0 }; this.progress = this.progress.bind(this); } render() { const { pct, delta } = this.state; return ( ); } progress() { requestAnimationFrame(this.progress); this.now = window.performance.now(); const elapsed = this.now - this.then; if (elapsed > this.fpsInterval) { this.then = this.now - (elapsed % this.fpsInterval); const delta = this.state.delta + Math.PI * 0.04; const pct = 75 + 15 * Math.sin(delta); this.setState({ pct, delta }); } } componentDidMount() { const fps = 30; this.fpsInterval = 1000 / fps; this.then = window.performance.now(); requestAnimationFrame(this.progress); } componentWillUnmount() { // clearAnimation(this.props.id); } } module.exports = TrippyTriangle;