var React, TimeStore, moment;
moment = require('moment');
TimeStore = require('../flux/time').TimeStore;
React = require('react');
module.exports = React.createClass({
displayName: 'TimeDifference',
propTypes: {
date: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.instanceOf(Date)]).isRequired,
compareWith: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.instanceOf(Date)]),
compare: React.PropTypes.oneOf(['from', 'to']),
toleranceMS: React.PropTypes.number,
defaultText: React.PropTypes.string
},
getDefaultProps: function() {
return {
compare: 'from',
customSuffix: void 0,
toleranceMS: 60000,
defaultText: 'just now'
};
},
shouldRenderDifference: function() {
var compareWith, date, ref, toleranceMS;
ref = this.props, date = ref.date, compareWith = ref.compareWith, toleranceMS = ref.toleranceMS;
compareWith || (compareWith = TimeStore.getNow());
return Math.abs(moment(date).diff(compareWith)) > toleranceMS;
},
render: function() {
var compare, compareWith, customSuffix, date, defaultText, differenceText, ref;
ref = this.props, date = ref.date, compareWith = ref.compareWith, compare = ref.compare, customSuffix = ref.customSuffix, defaultText = ref.defaultText;
differenceText = defaultText;
if (this.shouldRenderDifference()) {
differenceText = moment(date)[compare](compareWith, customSuffix != null);
if (customSuffix != null) {
differenceText += customSuffix;
}
}
return React.createElement("span", null, differenceText);
}
});
|