diff --git a/CHANGELOG.md b/CHANGELOG.md
index 198e17339..a32a2851c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,8 @@
### Added
+- Expansion button for non-interleaved RGB datasets that might be fluorescence.
+
### Changed
## 0.10.5
diff --git a/avivator/src/components/Controller/Controller.jsx b/avivator/src/components/Controller/Controller.jsx
index 1af5296a3..27ba24d8a 100644
--- a/avivator/src/components/Controller/Controller.jsx
+++ b/avivator/src/components/Controller/Controller.jsx
@@ -4,6 +4,8 @@ import Grid from '@material-ui/core/Grid';
import Tabs from '@material-ui/core/Tabs';
import Tab from '@material-ui/core/Tab';
import Divider from '@material-ui/core/Divider';
+import UnfoldMoreIcon from '@material-ui/icons/UnfoldMore';
+import Button from '@material-ui/core/Button';
import ChannelController from './components/ChannelController';
import Menu from './components/Menu';
@@ -25,7 +27,12 @@ import {
useImageSettingsStore,
useChannelSetters
} from '../../state';
-import { guessRgb, useWindowSize, getSingleSelectionStats } from '../../utils';
+import {
+ guessRgb,
+ useWindowSize,
+ getSingleSelectionStats,
+ isInterleaved
+} from '../../utils';
import { GLOBAL_SLIDER_DIMENSION_FIELDS } from '../../constants';
function TabPanel(props) {
@@ -75,6 +82,7 @@ const Controller = () => {
isViewerLoading
} = useViewerStore();
const viewSize = useWindowSize();
+ const [areChannelsUnfolded, handleUnfoldChannels] = useState(false);
const isRgb = metadata && guessRgb(metadata);
const { shape, labels } = loader[0];
const globalControlLabels = labels.filter(label =>
@@ -168,11 +176,22 @@ const Controller = () => {
/>
)}
{!use3d && globalControllers}
- {!isViewerLoading && !isRgb ? (
+ {!isViewerLoading && (!isRgb || areChannelsUnfolded) ? (
{channelControllers}
) : (
- {!isRgb && }
+ {!isRgb ? (
+
+ ) : (
+ !isInterleaved(loader[0].shape) && (
+
)}
{!isRgb && }