_ = require 'underscore' React = require "react" classnames = require 'classnames' {Contact} = require 'nylas-exports' MAX_COLLAPSED = 5 class MessageParticipants extends React.Component @displayName: 'MessageParticipants' @propTypes: to: React.PropTypes.array cc: React.PropTypes.array bcc: React.PropTypes.array from: React.PropTypes.array onClick: React.PropTypes.func isDetailed: React.PropTypes.bool @defaultProps: to: [] cc: [] bcc: [] from: [] # Helpers _allToParticipants: => _.union(@props.to, @props.cc, @props.bcc) _selectText: (e) => textNode = e.currentTarget.childNodes[0] range = document.createRange() range.setStart(textNode, 0) range.setEnd(textNode, textNode.length) selection = document.getSelection() selection.removeAllRanges() selection.addRange(range) _shortNames: (contacts = [], max = MAX_COLLAPSED) => names = _.map(contacts, (c) -> c.displayName(includeAccountLabel: true, compact: true)) if names.length > max extra = names.length - max names = names.slice(0, max) names.push("and #{extra} more") names.join(", ") # Renderers _renderFullContacts: (contacts = []) => _.map(contacts, (c, i) => if contacts.length is 1 then comma = "" else if i is contacts.length-1 then comma = "" else comma = "," if c.name?.length > 0 and c.name isnt c.email