UNPKG

mirador

Version:

An open-source, web-based 'multi-up' viewer that supports zoom-pan-rotate functionality, ability to display/compare simple images, and images with annotations.

70 lines (66 loc) 2.1 kB
import NavigationIcon from '@mui/icons-material/PlayCircleOutlineSharp'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import { useTranslation } from 'react-i18next'; import MiradorMenuButton from '../containers/MiradorMenuButton'; import ns from '../config/css-ns'; /** */ export function ViewerNavigation({ hasNextCanvas = false, hasPreviousCanvas = false, setNextCanvas = () => {}, setPreviousCanvas = () => {}, viewingDirection = '', }) { const { t } = useTranslation(); let htmlDir = 'ltr'; let previousIconStyle = {}; let nextIconStyle = {}; switch (viewingDirection) { case 'top-to-bottom': previousIconStyle = { transform: 'rotate(270deg)' }; nextIconStyle = { transform: 'rotate(90deg)' }; break; case 'bottom-to-top': previousIconStyle = { transform: 'rotate(90deg)' }; nextIconStyle = { transform: 'rotate(270deg)' }; break; case 'right-to-left': htmlDir = 'rtl'; previousIconStyle = {}; nextIconStyle = { transform: 'rotate(180deg)' }; break; default: previousIconStyle = { transform: 'rotate(180deg)' }; nextIconStyle = {}; } return ( <div className={classNames(ns('osd-navigation'))} dir={htmlDir} > <MiradorMenuButton aria-label={t('previousCanvas')} className={ns('previous-canvas-button')} disabled={!hasPreviousCanvas} onClick={() => { hasPreviousCanvas && setPreviousCanvas(); }} > <NavigationIcon style={previousIconStyle} /> </MiradorMenuButton> <MiradorMenuButton aria-label={t('nextCanvas')} className={ns('next-canvas-button')} disabled={!hasNextCanvas} onClick={() => { hasNextCanvas && setNextCanvas(); }} > <NavigationIcon style={nextIconStyle} /> </MiradorMenuButton> </div> ); } ViewerNavigation.propTypes = { hasNextCanvas: PropTypes.bool, hasPreviousCanvas: PropTypes.bool, setNextCanvas: PropTypes.func, setPreviousCanvas: PropTypes.func, viewingDirection: PropTypes.string, };