|
|
|
@ -11,7 +11,7 @@ import Overlay from 'react-overlays/lib/Overlay'; |
|
|
|
|
import classNames from 'classnames'; |
|
|
|
|
import ImmutablePropTypes from 'react-immutable-proptypes'; |
|
|
|
|
import detectPassiveEvents from 'detect-passive-events'; |
|
|
|
|
import { buildCustomEmojis } from 'flavours/glitch/util/emoji'; |
|
|
|
|
import { buildCustomEmojis, categoriesFromEmojis } from 'flavours/glitch/util/emoji'; |
|
|
|
|
|
|
|
|
|
const messages = defineMessages({ |
|
|
|
|
emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' }, |
|
|
|
@ -110,19 +110,6 @@ let EmojiPicker, Emoji; // load asynchronously |
|
|
|
|
const backgroundImageFn = () => `${assetHost}/emoji/sheet_10.png`; |
|
|
|
|
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false; |
|
|
|
|
|
|
|
|
|
const categoriesSort = [ |
|
|
|
|
'recent', |
|
|
|
|
'custom', |
|
|
|
|
'people', |
|
|
|
|
'nature', |
|
|
|
|
'foods', |
|
|
|
|
'activity', |
|
|
|
|
'places', |
|
|
|
|
'objects', |
|
|
|
|
'symbols', |
|
|
|
|
'flags', |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
class ModifierPickerMenu extends React.PureComponent { |
|
|
|
|
|
|
|
|
|
static propTypes = { |
|
|
|
@ -320,8 +307,23 @@ class EmojiPickerMenu extends React.PureComponent { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const title = intl.formatMessage(messages.emoji); |
|
|
|
|
|
|
|
|
|
const { modifierOpen } = this.state; |
|
|
|
|
|
|
|
|
|
const categoriesSort = [ |
|
|
|
|
'recent', |
|
|
|
|
'people', |
|
|
|
|
'nature', |
|
|
|
|
'foods', |
|
|
|
|
'activity', |
|
|
|
|
'places', |
|
|
|
|
'objects', |
|
|
|
|
'symbols', |
|
|
|
|
'flags', |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
categoriesSort.splice(1, 0, ...Array.from(categoriesFromEmojis(custom_emojis)).sort()); |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<div className={classNames('emoji-picker-dropdown__menu', { selecting: modifierOpen })} style={style} ref={this.setRef}> |
|
|
|
|
<EmojiPicker |
|
|
|
|