@@ -6,7 +6,6 @@ import Checkbox from '@mui/material/Checkbox';
66import Divider from '@mui/material/Divider' ;
77import FormControlLabel from '@mui/material/FormControlLabel' ;
88import FormGroup from '@mui/material/FormGroup' ;
9- import Grid from '@mui/material/Grid' ;
109import Stack from '@mui/material/Stack' ;
1110
1211import { AxisSliders } from './AxisSliders' ;
@@ -16,6 +15,7 @@ import { OpacitySlider } from './OpacitySlider';
1615export const Controller = ( {
1716 sourceData,
1817 layerStates,
18+ isLabel,
1919 resetViewState,
2020 toggleVisibility,
2121 setLayerOpacity,
@@ -30,62 +30,78 @@ export const Controller = ({
3030 return (
3131 < React . Fragment key = { layerState . layerProps . id } >
3232 < p > Source { index } </ p >
33- < FormControlLabel
34- key = { layerState . layerProps . id }
35- label = { layerState . layerProps . id }
36- control = {
37- < Checkbox
38- label = { layerState . id }
39- checked = { layerState . on }
40- icon = { < VisibilityOffIcon /> }
41- checkedIcon = { < VisibilityIcon /> }
42- onChange = { ( ) => toggleVisibility ( index ) }
43- />
44- }
45- />
46- < AxisSliders
47- { ...sourceData [ index ] }
48- selections = { layerState . layerProps . selections }
49- onChange = { ( selections ) => setLayerSelections ( index , selections ) }
50- />
51- < OpacitySlider
52- value = { layerState . layerProps . opacity }
53- onChange = { ( e , value ) => setLayerOpacity ( index , null , value ) }
54- />
55- < Divider > Channels</ Divider >
56- < ChannelControllers
57- { ...sourceData [ index ] }
58- { ...layerState }
59- toggleChannelVisibility = { ( i ) => toggleChannelVisibility ( index , i ) }
60- setChannelContrast = { ( i , contrast ) =>
61- setChannelContrast ( index , i , contrast )
62- }
63- />
64- { layerState . labels ?. length && < Divider > Labels</ Divider > }
65- { layerState . labels ?. map ( ( label , i ) => (
66- < React . Fragment key = { label . layerProps . id } >
67- { i > 0 && < Divider /> }
33+ { ! isLabel [ index ] && (
34+ < >
6835 < FormControlLabel
69- key = { label . layerProps . id }
70- label = { ` ${ label . layerProps . id } (label)` }
36+ key = { layerState . layerProps . id }
37+ label = { layerState . layerProps . id }
7138 control = {
7239 < Checkbox
73- label = { label . layerProps . id }
74- checked = { label . on }
40+ label = { layerState . id }
41+ checked = { layerState . on }
7542 icon = { < VisibilityOffIcon /> }
7643 checkedIcon = { < VisibilityIcon /> }
77- onChange = { ( ) => toggleVisibility ( index , label . layerProps . id ) }
44+ onChange = { ( ) => toggleVisibility ( index ) }
7845 />
7946 }
8047 />
48+ < AxisSliders
49+ { ...sourceData [ index ] }
50+ selections = { layerState . layerProps . selections }
51+ onChange = { ( selections ) => setLayerSelections ( index , selections ) }
52+ />
8153 < OpacitySlider
82- value = { label . layerProps . opacity }
83- onChange = { ( e , value ) =>
84- setLayerOpacity ( index , label . layerProps . id , value )
54+ value = { layerState . layerProps . opacity }
55+ onChange = { ( e , value ) => setLayerOpacity ( index , null , value ) }
56+ />
57+ < Divider > Channels</ Divider >
58+ < ChannelControllers
59+ { ...sourceData [ index ] }
60+ { ...layerState }
61+ toggleChannelVisibility = { ( i ) => toggleChannelVisibility ( index , i ) }
62+ setChannelContrast = { ( i , contrast ) =>
63+ setChannelContrast ( index , i , contrast )
8564 }
8665 />
87- </ React . Fragment >
88- ) ) }
66+ </ >
67+ ) }
68+ { layerState . labels ?. length && < Divider > Labels</ Divider > }
69+ { layerState . labels ?. map ( ( label , i ) => {
70+ // if standalone label visibility is from image layer
71+ const { id, on } = isLabel [ index ]
72+ ? {
73+ id : null ,
74+ on : layerState . on ,
75+ }
76+ : {
77+ id : label . layerProps . id ,
78+ on : label . on ,
79+ } ;
80+ return (
81+ < React . Fragment key = { label . layerProps . id } >
82+ { i > 0 && < Divider /> }
83+ < FormControlLabel
84+ key = { label . layerProps . id }
85+ label = { `${ label . layerProps . id } (label)` }
86+ control = {
87+ < Checkbox
88+ label = { label . layerProps . id }
89+ checked = { on }
90+ icon = { < VisibilityOffIcon /> }
91+ checkedIcon = { < VisibilityIcon /> }
92+ onChange = { ( ) => toggleVisibility ( index , id ) }
93+ />
94+ }
95+ />
96+ < OpacitySlider
97+ value = { label . layerProps . opacity }
98+ onChange = { ( _e , value ) =>
99+ setLayerOpacity ( index , label . layerProps . id , value )
100+ }
101+ />
102+ </ React . Fragment >
103+ ) ;
104+ } ) }
89105 </ React . Fragment >
90106 ) ;
91107 } ) ;
0 commit comments