import React from "react" import {default as cn} from "classnames"; import {default as style} from "./FlipPanel.module.css" export type FlipPanelProps = { front: (f: () => void) => React.ReactNode, back: (f: () => void) => React.ReactNode, containerClassName?: cn.Argument, className?: cn.Argument, frontClassName?: cn.Argument, backClassName?: cn.Argument, containerProps?: {[prop: string]: any}, props?: {[prop: string]: any}, frontProps?: {[prop: string]: any}, backProps?: {[prop: string]: any}, } export const FlipPanel = ({front, back, containerClassName, className, frontClassName, backClassName, containerProps, props, frontProps, backProps}: FlipPanelProps) => { const [isFront, setFront] = React.useState(true) const frontElement = React.useRef(null) const backElement = React.useRef(null) const flipToFront = React.useCallback( () => { setFront(true) if(frontElement.current) frontElement.current.inert = false if(backElement.current) backElement.current.inert = true }, [frontElement, backElement] ) const flipToBack = React.useCallback( () => { setFront(false) if(frontElement.current) frontElement.current.inert = true if(backElement.current) backElement.current.inert = false }, [frontElement, backElement] ) return (
{front(flipToBack)}
{back(flipToFront)}
) }