UNPKG

itk-viewer-bootstrap-ui

Version:

[![npm version](https://badge.fury.io/js/itk-viewer-bootstrap-ui.svg)](https://badge.fury.io/js/itk-viewer-bootstrap-ui) ![react-bootstrap version](https://img.shields.io/badge/React%20Bootstap-%3E=1.6.1-brightgreen.svg) [![Documentation Status](https://r

57 lines (52 loc) 1.68 kB
import React, { useEffect, useRef } from 'react' import { useSelector } from '@xstate/react' import Button from 'react-bootstrap/Button' import Image from 'react-bootstrap/Image' import OverlayTrigger from 'react-bootstrap/OverlayTrigger' import Tooltip from 'react-bootstrap/Tooltip' import cn from 'classnames' import { shadowIconDataUri } from '@itk-viewer/icons' import applyContrastSensitiveStyleToElement from '../applyContrastSensitiveStyleToElement' import '../style.css' function ShadowToggle(props) { const { service } = props const shadowButton = useRef(null) const stateContext = useSelector(service, (state) => state.context) const send = service.send const name = stateContext.images.selectedName const actorContext = stateContext.images.actorContext.get(name) const shadowEnabled = useSelector( service, (state) => state.context.images.actorContext.get(state.context.images.selectedName) .shadowEnabled ) useEffect(() => { applyContrastSensitiveStyleToElement( stateContext, 'invertibleButton', shadowButton.current ) stateContext.images.shadowButtonInput = shadowButton.current }, []) return ( <OverlayTrigger transition={false} overlay={<Tooltip>Use Shadow</Tooltip>}> <Button className={cn('icon-button', { checked: shadowEnabled })} variant="secondary" value="shadowVisible" onClick={() => { send({ type: 'TOGGLE_IMAGE_SHADOW', data: name }) }} > <Image src={shadowIconDataUri}></Image> </Button> </OverlayTrigger> ) } export default ShadowToggle