var React = require('react/addons') var ReactRouter = require('react-router') var moment = require('moment') var ForceUpdate = require('../Mixins/ForceUpdate') var Markdown = require('../Mixins/Markdown') var PlanetArticleList = React.createClass({ mixins: [ReactRouter.Navigation, ReactRouter.State, ForceUpdate(60000), Markdown], propTypes: { planet: React.PropTypes.shape({ Snippets: React.PropTypes.array, Blueprints: React.PropTypes.array, Articles: React.PropTypes.array }), onPressDown: React.PropTypes.func, onPressUp: React.PropTypes.func }, handleKeyDown: function (e) { switch (e.keyCode) { case 38: e.preventDefault() this.props.onPressUp() break case 40: e.preventDefault() this.props.onPressDown() } }, render: function () { var articles = this.props.planet.Articles.map(function (article) { var tags = article.Tags.length > 0 ? article.Tags.map(function (tag) { return ( #{tag.name} ) }) : ( Not tagged yet ) var params = this.getParams() var isActive = article.type === 'snippet' ? this.isActive('snippets') && parseInt(params.localId, 10) === article.localId : this.isActive('blueprints') && parseInt(params.localId, 10) === article.localId var handleClick if (article.type === 'snippet') { handleClick = function () { this.transitionTo('snippets', { userName: params.userName, planetName: params.planetName, localId: article.localId }) }.bind(this) return (