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

72 lines (66 loc) 2.05 kB
import React, { useEffect, useRef } from 'react' import { useSelector } from '@xstate/react' import { sampleDistanceIconDataUri } from '@itk-viewer/icons' import applyContrastSensitiveStyleToElement from '../applyContrastSensitiveStyleToElement' import '../style.css' import Form from 'react-bootstrap/Form' import Image from 'react-bootstrap/Image' import Tooltip from 'react-bootstrap/Tooltip' import OverlayTrigger from 'react-bootstrap/OverlayTrigger' function SampleDistanceSlider(props) { const { service } = props const spacingDiv = useRef(null) const spacingElement = useRef(null) const stateContext = useSelector(service, (state) => state.context) const { send } = service const volumeSampleDistance = useSelector( service, (state) => state.context.images.actorContext.get(state.context.images.selectedName) .volumeSampleDistance ) useEffect(() => { applyContrastSensitiveStyleToElement( stateContext, 'invertibleButton', spacingDiv.current ) stateContext.images.volumeSampleDistanceDiv = spacingDiv.current stateContext.images.volumeSampleDistanceSlider = spacingElement.current }, []) const spacingChanged = (val) => { send({ type: 'IMAGE_VOLUME_SAMPLE_DISTANCE_CHANGED', data: { name: stateContext.images.selectedName, volumeSampleDistance: val } }) } return ( <div className="iconWithSlider"> <OverlayTrigger transition={false} overlay={<Tooltip>Volume sample distance</Tooltip>} > <div className="icon-image" ref={spacingDiv}> <Image src={sampleDistanceIconDataUri}></Image> </div> </OverlayTrigger> <Form.Control ref={spacingElement} type="range" custom className="slider" min={0} max={1} value={volumeSampleDistance} step={0.01} onChange={(e) => { spacingChanged(e.target.value) }} /> </div> ) } export default SampleDistanceSlider