UNPKG

itk-viewer-material-ui

Version:

[![npm version](https://badge.fury.io/js/itk-viewer-material-ui.svg)](https://badge.fury.io/js/itk-viewer-material-ui)

67 lines (61 loc) 1.87 kB
import React, { useEffect, useRef } from 'react' import { useActor } from '@xstate/react' import { Icon, Slider, Tooltip } from '@mui/material' import { sampleDistanceIconDataUri } from 'itk-viewer-icons' import applyContrastSensitiveStyleToElement from '../applyContrastSensitiveStyleToElement' import '../style.css' function SampleDistanceSlider(props) { const { service } = props const spacingDiv = useRef(null) const spacingElement = useRef(null) const [state, send] = useActor(service) const name = state.context.images.selectedName const actorContext = state.context.images.actorContext.get(name) useEffect(() => { applyContrastSensitiveStyleToElement( state.context, 'invertibleButton', spacingDiv.current ) state.context.images.volumeSampleDistanceDiv = spacingDiv.current state.context.images.volumeSampleDistanceSlider = spacingElement.current }, []) const spacingChanged = (val) => { send({ type: 'IMAGE_VOLUME_SAMPLE_DISTANCE_CHANGED', data: { name: state.context.images.selectedName, volumeSampleDistance: val } }) } return ( <div className="iconWithSlider"> <Tooltip ref={spacingDiv} title="Volume sample distance" PopperProps={{ anchorEl: spacingDiv.current, disablePortal: true, keepMounted: true }} > <Icon className="sampleDistanceButton" style={{ margin: '0 10px 0 0' }}> <img src={sampleDistanceIconDataUri} /> </Icon> </Tooltip> <Slider ref={spacingElement} className="slider" min={0} max={1} value={actorContext.volumeSampleDistance} step={0.01} onChange={(_e, val) => { spacingChanged(val) }} /> </div> ) } export default SampleDistanceSlider