import { h, Component } from 'preact' import { Lethargy } from 'lethargy' import { Link } from 'react-router-dom' export default class Scroller extends Component { constructor() { super() this.state = { index: 0, } this.lastScroll = Date.now() this.onScroll = this.onScroll.bind(this) this.lethargy = new Lethargy(8, 100, 1.1, 1000) document.body.addEventListener('wheel', this.onScroll) document.body.addEventListener('DOMMouseScroll', this.onScroll) } onScroll(e) { e.preventDefault() e.stopPropagation() const scrollDirection = this.lethargy.check(e) const now = Date.now() if (scrollDirection !== false && now - this.lastScroll > 600) { this.lastScroll = now const cellCount = this.props.data.painting.length + 1 const index = (this.state.index + cellCount - scrollDirection) % cellCount this.setState({ index }) } } render() { const paintings = this.props.data.painting.map( (painting, i) => { return (
{painting.title}
{painting.medium}
{painting.date}
{painting.image.caption}

More info >
) }) const about = this.props.data.page[0] const body = (about.body || '').replace(/\n/g,'
') const page = (
) const scrollPercentage = this.state.index * -100 return (
{paintings} {page}
) } }