import React from 'react' import data from '../../data' import Preview from './preview' import Category from './category' import Search from './search' export default class Picker extends React.Component { constructor(props) { super(props) this.testStickyPosition() this.state = { categories: data.categories, } } componentDidUpdate() { this.handleScroll() } testStickyPosition() { var stickyTestElement = document.createElement('div') for (let prefix of ['', '-webkit-', '-ms-', '-moz-', '-o-']) { stickyTestElement.style.position = `${prefix}sticky` } this.hasStickyPosition = !!stickyTestElement.style.position.length } handleEmojiOver(emoji) { var { preview } = this.refs preview.setState({ emoji: emoji }) } handleScroll() { var target = this.refs.scroll, scrollTop = target.scrollTop if (!this.hasStickyPosition) { Array(this.state.categories.length).fill().forEach((_, i) => { var category = this.refs[`category-${i}`] if (category) { category.handleScroll(scrollTop) } }) } } handleSearch(emojis) { if (emojis == null) { this.setState({ categories: data.categories }) } else { this.setState({ categories: [{ name: 'Search Results', emojis: emojis, }]}) } } render() { var { perLine, emojiSize, sheetURL } = this.props, width = (perLine * (emojiSize + 12)) + 12 + 2 return
Categories
{this.state.categories.map((category, i) => { if (category.name == 'Skins') return null return })}
} } Picker.propTypes = { onClick: React.PropTypes.func, perLine: React.PropTypes.number, emojiSize: React.PropTypes.number, sheetURL: React.PropTypes.string.isRequired, } Picker.defaultProps = { onClick: (() => {}), emojiSize: 32, perLine: 9, }