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

73 lines (65 loc) 2 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 { windowingIconDataUri } from '@itk-viewer/icons' import applyContrastSensitiveStyleToElement from '../applyContrastSensitiveStyleToElement' import '../style.css' import getSelectedImageContext from './getSelectedImageContext' function WindowLevelToggle(props) { const { service } = props const toggleWindowingButton = useRef(null) const stateContext = useSelector(service, (state) => state.context) const send = service.send const name = stateContext.images.selectedName const windowLevelEnabled = useSelector( service, (state) => state.context.images.actorContext.get(state.context.images.selectedName) .windowLevelEnabled ) const actorContext = useSelector(service, (state) => getSelectedImageContext(state) ) useEffect(() => { applyContrastSensitiveStyleToElement( stateContext, 'invertibleButton', toggleWindowingButton.current ) stateContext.images.toggleWindowingButtonInput = toggleWindowingButton.current }, []) const toggleWindowing = () => { send({ type: 'WINDOW_LEVEL_TOGGLED', data: { name, component: actorContext.selectedComponent } }) } return ( <OverlayTrigger transition={false} overlay={<Tooltip>Toggle window/level interactor</Tooltip>} > <Button className={cn('icon-button', { checked: windowLevelEnabled })} onClick={() => { toggleWindowing() }} variant="secondary" ref={toggleWindowingButton} > <Image src={windowingIconDataUri}></Image> </Button> </OverlayTrigger> ) } export default WindowLevelToggle