import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import ReactSwipeableViews from 'react-swipeable-views';
import { links, getIndex, getLink } from './tabs_bar';
import BundleContainer from '../containers/bundle_container';
import ColumnLoading from './column_loading';
import BundleColumnError from './bundle_column_error';
import { Compose, Notifications, HomeTimeline, CommunityTimeline, PublicTimeline, HashtagTimeline } from '../../ui/util/async-components';
const componentMap = {
  'COMPOSE': Compose,
  'HOME': HomeTimeline,
  'NOTIFICATIONS': Notifications,
  'PUBLIC': PublicTimeline,
  'COMMUNITY': CommunityTimeline,
  'HASHTAG': HashtagTimeline,
};
export default class ColumnsArea extends ImmutablePureComponent {
  static contextTypes = {
    router: PropTypes.object.isRequired,
  };
  static propTypes = {
    columns: ImmutablePropTypes.list.isRequired,
    singleColumn: PropTypes.bool,
    children: PropTypes.node,
  };
  componentDidUpdate() {
    this.lastIndex = getIndex(this.context.router.history.location.pathname);
  }
  handleSwipe = (index) => {
    this.pendingIndex = index;
  }
  handleAnimationEnd = () => {
    if (typeof this.pendingIndex === 'number') {
      this.context.router.history.push(getLink(this.pendingIndex));
      this.pendingIndex = null;
    }
  }
  renderView = (link, index) => {
    const columnIndex = getIndex(this.context.router.history.location.pathname);
    const title = link.props.children[1] && React.cloneElement(link.props.children[1]);
    const icon = (link.props.children[0] || link.props.children).props.className.split(' ')[2].split('-')[1];
    const view = (index === columnIndex) ?
      React.cloneElement(this.props.children) :