๐Ÿก index : quine-global/hyper.git

import Header from '../components/header';
import { closeTab, changeTab } from '../actions/header';
import { values } from '../utils/object';
import { createSelector } from 'reselect';
import { connect } from '../utils/plugins';

const isMac = /Mac/.test(navigator.userAgent);

const getSessions = (sessions) => sessions.sessions;
const getActiveUid = (sessions) => sessions.activeUid;
const getActivityMarkers = (sessions, ui) => ui.activityMarkers;
const getTabs = createSelector(
  [getSessions, getActiveUid, getActivityMarkers],
  (sessions, activeUid, activityMarkers) => values(sessions).map((s) => {
    return {
      uid: s.uid,
      title: s.title,
      isActive: s.uid === activeUid,
      hasActivity: activityMarkers[s.uid]
    };
  })
);

const HeaderContainer = connect(
  (state) => {
    return {
      // active is an index
      isMac,
      tabs: getTabs(state.sessions, state.ui),
      activeMarkers: state.ui.activityMarkers,
      borderColor: state.ui.borderColor,
      backgroundColor: state.ui.backgroundColor
    };
  },
  (dispatch) => {
    return {
      onCloseTab: (i) => {
        dispatch(closeTab(i));
      },

      onChangeTab: (i) => {
        dispatch(changeTab(i));
      }
    };
  }
)(Header, 'Header');

export default HeaderContainer;