hyper/lib/containers/header.js

59 lines
1.4 KiB
JavaScript
Raw Normal View History

import {createSelector} from 'reselect';
2016-07-13 12:44:24 -08:00
import Header from '../components/header';
import {closeTab, changeTab, maximize, unmaximize} from '../actions/header';
import {values} from '../utils/object';
import {connect} from '../utils/plugins';
2016-07-13 12:44:24 -08:00
const isMac = /Mac/.test(navigator.userAgent);
const getSessions = sessions => sessions.sessions;
const getActiveUid = sessions => sessions.activeUid;
2016-07-13 12:44:24 -08:00
const getActivityMarkers = (sessions, ui) => ui.activityMarkers;
const getTabs = createSelector(
[getSessions, getActiveUid, getActivityMarkers],
(sessions, activeUid, activityMarkers) => values(sessions).map(s => {
2016-07-13 12:44:24 -08:00
return {
uid: s.uid,
title: s.title,
isActive: s.uid === activeUid,
hasActivity: activityMarkers[s.uid]
};
})
);
const HeaderContainer = connect(
state => {
2016-07-13 12:44:24 -08:00
return {
// active is an index
isMac,
tabs: getTabs(state.sessions, state.ui),
activeMarkers: state.ui.activityMarkers,
borderColor: state.ui.borderColor,
backgroundColor: state.ui.backgroundColor,
maximized: state.ui.maximized
2016-07-13 12:44:24 -08:00
};
},
dispatch => {
2016-07-13 12:44:24 -08:00
return {
onCloseTab: i => {
2016-07-13 12:44:24 -08:00
dispatch(closeTab(i));
},
onChangeTab: i => {
2016-07-13 12:44:24 -08:00
dispatch(changeTab(i));
},
maximize: () => {
dispatch(maximize());
},
unmaximize: () => {
dispatch(unmaximize());
2016-07-13 12:44:24 -08:00
}
};
}
)(Header, 'Header');
export default HeaderContainer;