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)

78 lines (69 loc) 2.19 kB
import React, { useEffect, useRef } from 'react' import { useActor } from '@xstate/react' import { Slider } from '@mui/material' import MapWeightSelector from './MapWeightSelector' import '../style.css' function LabelMapWeightWidget(props) { const { service } = props const labelImageWeightUIGroup = useRef(null) const weightSlider = useRef(null) const [state, send] = useActor(service) const name = state.context.images.selectedName const actorContext = state.context.images.actorContext.get(name) useEffect(() => { state.context.images.labelImageWeightUIGroup = labelImageWeightUIGroup.current state.context.uiGroups.set( 'labelImageWeights', labelImageWeightUIGroup.current ) state.context.images.labelImageWeightSlider = weightSlider.current actorContext.labelImageToggleWeight = 1.0 }, []) useEffect(() => { sliderValue() }, [actorContext.selectedLabel]) const weightChanged = (val) => { const labelImageWeights = actorContext.labelImageWeights if (actorContext.selectedLabel === 'all') { for (const label of labelImageWeights.keys()) { labelImageWeights.set(label, val) } actorContext.labelImageToggleWeight = val } else { labelImageWeights.set(actorContext.selectedLabel, val) } send({ type: 'LABEL_IMAGE_WEIGHTS_CHANGED', data: { name, labelImageWeights } }) } const sliderValue = () => { const labelImageWeights = actorContext.labelImageWeights if (actorContext.selectedLabel === 'all') { return actorContext.labelImageToggleWeight } else { return labelImageWeights.get(actorContext.selectedLabel) } } return ( <div ref={labelImageWeightUIGroup} className="uiGroup"> <div className="uiRow"> <MapWeightSelector {...props} /> <Slider ref={weightSlider} className="slider" min={0} max={1} value={sliderValue()} step={0.05} onChange={(_e, val) => { weightChanged(val) }} style={{ marginLeft: '5px' }} /> </div> </div> ) } export default LabelMapWeightWidget