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

71 lines (63 loc) 2.02 kB
import React, { useEffect, useRef } from 'react' import { useSelector } from '@xstate/react' import CategoricalIconSelector from './CategoricalIconSelector' import { opacityIconDataUri } from '@itk-viewer/icons' import Form from 'react-bootstrap/Form' import Image from 'react-bootstrap/Image' import OverlayTrigger from 'react-bootstrap/OverlayTrigger' import Tooltip from 'react-bootstrap/Tooltip' import '../style.css' import getSelectedImageContext from './getSelectedImageContext' const selectLabelImageBlend = (state) => getSelectedImageContext(state).labelImageBlend function LabelImageColorWidget(props) { const { service } = props const labelImageColorUIGroup = useRef(null) const opacityDiv = useRef(null) const blendElement = useRef(null) const send = service.send const name = useSelector( service, (state) => state.context.images.selectedName ) const labelImageBlend = useSelector(service, selectLabelImageBlend) useEffect(() => { service.machine.context.images.labelImageColorUIGroup = labelImageColorUIGroup.current }, []) const blendChanged = (val) => { send({ type: 'LABEL_IMAGE_BLEND_CHANGED', data: { name, labelImageBlend: val } }) } return ( <div ref={labelImageColorUIGroup} className="uiGroup"> <div className="uiRow"> <CategoricalIconSelector {...props} /> <OverlayTrigger transition={false} overlay={<Tooltip>Label image blend</Tooltip>} > <div className="icon-image" ref={opacityDiv}> <Image src={opacityIconDataUri}></Image> </div> </OverlayTrigger> <Form.Control type="range" custom ref={blendElement} className="slider" min={0} max={1} value={labelImageBlend} step={0.01} onChange={(_e) => { blendChanged(_e.target.value) }} /> </div> </div> ) } export default LabelImageColorWidget