itk-viewer-material-ui
Version:
[](https://badge.fury.io/js/itk-viewer-material-ui)
55 lines (50 loc) • 1.45 kB
JSX
import React, { useEffect, useRef } from 'react'
import { useActor } from '@xstate/react'
import { Icon, ToggleButton, Tooltip } from '@mui/material'
import { shadowIconDataUri } from 'itk-viewer-icons'
import applyContrastSensitiveStyleToElement from '../applyContrastSensitiveStyleToElement'
import '../style.css'
function ShadowToggle(props) {
const { service } = props
const shadowButton = 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',
shadowButton.current
)
state.context.images.shadowButtonInput = shadowButton.current
}, [])
return (
<Tooltip
ref={shadowButton}
title="Use Shadow"
PopperProps={{
anchorEl: shadowButton.current,
disablePortal: true,
keepMounted: true
}}
>
<ToggleButton
size="small"
className="toggleButton"
value="shadowVisible"
selected={actorContext.shadowEnabled}
onChange={() => {
send({
type: 'TOGGLE_IMAGE_SHADOW',
data: name
})
}}
>
<Icon className="shadowButton">
<img src={shadowIconDataUri} />
</Icon>
</ToggleButton>
</Tooltip>
)
}
export default ShadowToggle