emoji-mart-lazyload/src/components/preview.js

83 lines
2.3 KiB
JavaScript
Raw Normal View History

2016-05-31 14:36:52 +00:00
import React from 'react'
2016-07-19 16:27:24 +00:00
2016-10-27 03:27:55 +00:00
import { Emoji, Skins } from '.'
import { getData } from '../utils'
2016-05-31 14:36:52 +00:00
export default class Preview extends React.Component {
constructor(props) {
super(props)
this.state = { emoji: null }
}
render() {
var { emoji } = this.state,
{ emojiProps, skinsProps, title, emoji: idleEmoji } = this.props
2016-05-31 14:36:52 +00:00
if (emoji) {
2016-07-19 16:27:24 +00:00
var emojiData = getData(emoji),
{ emoticons } = emojiData,
knownEmoticons = [],
2016-07-07 21:22:40 +00:00
listedEmoticons = []
2016-07-07 21:22:40 +00:00
for (let emoticon of emoticons) {
if (knownEmoticons.indexOf(emoticon.toLowerCase()) == -1) {
knownEmoticons.push(emoticon.toLowerCase())
listedEmoticons.push(emoticon)
}
}
2016-07-27 15:35:12 +00:00
return <div className='emoji-mart-preview'>
<div className='emoji-mart-preview-emoji'>
2016-05-31 14:36:52 +00:00
<Emoji
2016-07-19 16:27:24 +00:00
key={emoji.id}
emoji={emoji}
2016-05-31 14:36:52 +00:00
{...emojiProps}
/>
</div>
2016-07-27 15:35:12 +00:00
<div className='emoji-mart-preview-data'>
<div className='emoji-mart-preview-name'>{emoji.name}</div>
<div className='emoji-mart-preview-shortnames'>
2016-07-19 16:27:24 +00:00
{emojiData.short_names.map((short_name) =>
2016-07-27 15:35:12 +00:00
<span key={short_name} className='emoji-mart-preview-shortname'>:{short_name}:</span>
2016-07-12 20:52:18 +00:00
)}
</div>
2016-07-27 15:35:12 +00:00
<div className='emoji-mart-preview-emoticons'>
2016-07-07 21:22:40 +00:00
{listedEmoticons.map((emoticon) =>
2016-07-27 15:35:12 +00:00
<span key={emoticon} className='emoji-mart-preview-emoticon'>{emoticon}</span>
2016-05-31 14:36:52 +00:00
)}
2016-07-12 20:52:18 +00:00
</div>
2016-05-31 14:36:52 +00:00
</div>
</div>
} else {
2016-07-27 15:35:12 +00:00
return <div className='emoji-mart-preview'>
<div className='emoji-mart-preview-emoji'>
2016-06-01 19:25:45 +00:00
<Emoji
emoji={idleEmoji}
2016-06-01 19:25:45 +00:00
{...emojiProps}
/>
</div>
2016-06-01 13:53:45 +00:00
2016-07-27 15:35:12 +00:00
<div className='emoji-mart-preview-data'>
<span className='emoji-mart-title-label'>
{title}
2016-06-01 19:25:45 +00:00
</span>
</div>
2016-06-09 00:22:06 +00:00
2016-07-27 15:35:12 +00:00
<div className='emoji-mart-preview-skins'>
2016-06-09 00:22:06 +00:00
<Skins
{...skinsProps}
/>
</div>
2016-05-31 14:36:52 +00:00
</div>
}
}
}
Preview.propTypes = {
title: React.PropTypes.string.isRequired,
emoji: React.PropTypes.string.isRequired,
2016-05-31 14:36:52 +00:00
emojiProps: React.PropTypes.object.isRequired,
2016-06-09 00:22:06 +00:00
skinsProps: React.PropTypes.object.isRequired,
2016-05-31 14:36:52 +00:00
}