import React, { Component } from 'react' import actions from 'site/actions' import "./nav.css" import TextOverlay from './text.overlay' import { ARTISTS, ARTIST_ORDER, PROJECT_PAGE_SET } from "site/projects/museum/constants" import { ArrowLeft, ArrowRight } from "site/projects/museum/icons" import { history } from "site/store" import Counter from './counter' export default class NavOverlay extends Component { state = { showHome: false, showFooter: false, showArtist: false, showCounter: false, artist: {}, } constructor(props) { super(props) this.footerRef = React.createRef() this.previousArtist = this.previousArtist.bind(this) this.nextArtist = this.nextArtist.bind(this) this.goHome = this.goHome.bind(this) } componentDidMount() { this.load() } componentDidUpdate(prevProps) { // console.log(this.props.location.pathname, prevProps.location.pathname) if (this.props.location.pathname !== prevProps.location.pathname) { this.load() } } load() { const { page_name } = this.props.match.params const pathPartz = page_name.split("-") const pathkey = pathPartz[0] const path_chapter = pathPartz[1] // console.log(pathkey) if (pathkey === 'start') { this.setState({ showHome: false, showFooter: false, showArtist: false, showCounter: false, currentArtist: null, artist: {}, }) } else if (pathkey === 'home') { this.setState({ showHome: false, showFooter: true, showArtist: false, showCounter: false, currentArtist: null, artist: {}, }) } else if (PROJECT_PAGE_SET.has(pathkey)) { this.setState({ showHome: true, showFooter: false, showArtist: false, showCounter: false, }) } else if (pathkey in ARTISTS) { const shouldShowFooter = this.state.currentArtist !== pathkey this.setState({ showHome: true, showFooter: true, showArtist: true, showCounter: pathkey === 'nilthamrong' && path_chapter !== "home", currentArtist: pathkey, artist: ARTISTS[pathkey], }, () => shouldShowFooter && this.quicklyShowFooter()) } else { this.setState({ showHome: false, showFooter: false, showCounter: false, showArtist: false, currentArtist: null, artist: {}, }) } } quicklyShowFooter() { clearTimeout(this.footerTimeout) // this.footerRef.current.classList.add("instant") this.footerRef.current.classList.add("visible") this.footerTimeout = setTimeout(() => { this.footerRef.current.classList.remove("visible") }, 5000) } previousArtist() { this.go(-1) } nextArtist() { this.go(1) } go(step) { if (!this.state.currentArtist) return const index = ARTIST_ORDER.indexOf(this.state.currentArtist) const nextIndex = (index + step + ARTIST_ORDER.length) % ARTIST_ORDER.length const currentArtist = ARTIST_ORDER[nextIndex] const artist = ARTISTS[currentArtist] this.setState({ currentArtist, artist }) history.push(`/last-museum/${artist.start}`) } goHome() { history.push(`/last-museum/home/`) } render() { const { showArtist, showHome, showCounter, showFooter, artist } = this.state return (
{showHome && (
Home
)} {showCounter && } {showFooter && ( showArtist ? (
{artist.name} {artist.location}
{ArrowLeft}
{ArrowRight}
) : (
) )}
) } }