UNPKG

emoji-mart

Version:

Customizable Slack-like emoji picker for React

1,090 lines (834 loc) 585 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("React")); else if(typeof define === 'function' && define.amd) define(["React"], factory); else if(typeof exports === 'object') exports["EmojiMart"] = factory(require("React")); else root["EmojiMart"] = factory(root["React"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_3__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.frequently = exports.store = exports.emojiIndex = exports.Emoji = exports.Picker = undefined; var _components = __webpack_require__(1); Object.defineProperty(exports, 'Picker', { enumerable: true, get: function get() { return _components.Picker; } }); Object.defineProperty(exports, 'Emoji', { enumerable: true, get: function get() { return _components.Emoji; } }); var _emojiIndex = __webpack_require__(25); var _emojiIndex2 = _interopRequireDefault(_emojiIndex); var _store = __webpack_require__(17); var _store2 = _interopRequireDefault(_store); var _frequently = __webpack_require__(16); var _frequently2 = _interopRequireDefault(_frequently); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.emojiIndex = _emojiIndex2.default; exports.store = _store2.default; exports.frequently = _frequently2.default; /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _anchors = __webpack_require__(2); Object.defineProperty(exports, 'Anchors', { enumerable: true, get: function get() { return _interopRequireDefault(_anchors).default; } }); var _category = __webpack_require__(15); Object.defineProperty(exports, 'Category', { enumerable: true, get: function get() { return _interopRequireDefault(_category).default; } }); var _emoji = __webpack_require__(18); Object.defineProperty(exports, 'Emoji', { enumerable: true, get: function get() { return _interopRequireDefault(_emoji).default; } }); var _picker = __webpack_require__(21); Object.defineProperty(exports, 'Picker', { enumerable: true, get: function get() { return _interopRequireDefault(_picker).default; } }); var _preview = __webpack_require__(23); Object.defineProperty(exports, 'Preview', { enumerable: true, get: function get() { return _interopRequireDefault(_preview).default; } }); var _search = __webpack_require__(24); Object.defineProperty(exports, 'Search', { enumerable: true, get: function get() { return _interopRequireDefault(_search).default; } }); var _skins = __webpack_require__(26); Object.defineProperty(exports, 'Skins', { enumerable: true, get: function get() { return _interopRequireDefault(_skins).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _svgInlineReact = __webpack_require__(4); var _svgInlineReact2 = _interopRequireDefault(_svgInlineReact); var _svgs = __webpack_require__(5); var SVGs = _interopRequireWildcard(_svgs); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Anchors = function (_React$Component) { _inherits(Anchors, _React$Component); function Anchors(props) { _classCallCheck(this, Anchors); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Anchors).call(this, props)); var defaultCategory = props.categories[0]; if (defaultCategory.anchor) { defaultCategory = defaultCategory.anchor; } _this.state = { selected: defaultCategory.name }; return _this; } _createClass(Anchors, [{ key: 'render', value: function render() { var _props = this.props; var categories = _props.categories; var onAnchorClick = _props.onAnchorClick; var color = _props.color; var selected = this.state.selected; return _react2.default.createElement( 'div', { className: 'emoji-mart-anchors' }, categories.map(function (category, i) { var name = category.name; var anchor = category.anchor; var isSelected = name == selected; if (anchor) { return null; } return _react2.default.createElement( 'span', { key: name, title: name, onClick: function onClick() { return onAnchorClick(category, i); }, className: 'emoji-mart-anchor ' + (isSelected ? 'emoji-mart-anchor-selected' : ''), style: { color: isSelected ? color : null } }, _react2.default.createElement(_svgInlineReact2.default, { src: SVGs[name] }), _react2.default.createElement('span', { className: 'emoji-mart-anchor-bar', style: { backgroundColor: color } }) ); }) ); } }]); return Anchors; }(_react2.default.Component); exports.default = Anchors; Anchors.propTypes = { categories: _react2.default.PropTypes.array, onAnchorClick: _react2.default.PropTypes.func }; Anchors.defaultProps = { categories: [], onAnchorClick: function onAnchorClick() {} }; /***/ }, /* 3 */ /***/ function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_3__; /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var DOMParser = typeof window !== 'undefined' && window.DOMParser; var process = process || {}; process.env = process.env || {}; var parserAvailable = typeof DOMParser !== 'undefined' && DOMParser.prototype != null && DOMParser.prototype.parseFromString != null; if ("production" !== process.env.NODE_ENV && !parserAvailable) { console.info('<InlineSVG />: `raw` prop works only when `window.DOMParser` exists.'); } function isParsable(src) { // kinda naive but meh, ain't gonna use full-blown parser for this return parserAvailable && typeof src === 'string' && src.trim().substr(0, 4) === '<svg'; } // parse SVG string using `DOMParser` function parseFromSVGString(src) { var parser = new DOMParser(); return parser.parseFromString(src, "image/svg+xml"); } // Transform DOM prop/attr names applicable to `<svg>` element but react-limited function switchSVGAttrToReactProp(propName) { switch (propName) { case 'class': return 'className'; default: return propName; } } var InlineSVG = (function (_React$Component) { _inherits(InlineSVG, _React$Component); _createClass(InlineSVG, null, [{ key: 'defaultProps', value: { element: 'i', raw: false, src: '' }, enumerable: true }, { key: 'propTypes', value: { src: _react2['default'].PropTypes.string.isRequired, element: _react2['default'].PropTypes.string, raw: _react2['default'].PropTypes.bool }, enumerable: true }]); function InlineSVG(props) { _classCallCheck(this, InlineSVG); _get(Object.getPrototypeOf(InlineSVG.prototype), 'constructor', this).call(this, props); this._extractSVGProps = this._extractSVGProps.bind(this); } // Serialize `Attr` objects in `NamedNodeMap` _createClass(InlineSVG, [{ key: '_serializeAttrs', value: function _serializeAttrs(map) { var ret = {}; var prop = undefined; for (var i = 0; i < map.length; i++) { prop = switchSVGAttrToReactProp(map[i].name); ret[prop] = map[i].value; } return ret; } // get <svg /> element props }, { key: '_extractSVGProps', value: function _extractSVGProps(src) { var map = parseFromSVGString(src).documentElement.attributes; return map.length > 0 ? this._serializeAttrs(map) : null; } // get content inside <svg> element. }, { key: '_stripSVG', value: function _stripSVG(src) { return parseFromSVGString(src).documentElement.innerHTML; } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(_ref) { var children = _ref.children; if ("production" !== process.env.NODE_ENV && children != null) { console.info('<InlineSVG />: `children` prop will be ignored.'); } } }, { key: 'render', value: function render() { var Element = undefined, __html = undefined, svgProps = undefined; var _props = this.props; var element = _props.element; var raw = _props.raw; var src = _props.src; var otherProps = _objectWithoutProperties(_props, ['element', 'raw', 'src']); if (raw === true && isParsable(src)) { Element = 'svg'; svgProps = this._extractSVGProps(src); __html = this._stripSVG(src); } __html = __html || src; Element = Element || element; svgProps = svgProps || {}; return _react2['default'].createElement(Element, _extends({}, svgProps, otherProps, { src: null, children: null, dangerouslySetInnerHTML: { __html: __html } })); } }]); return InlineSVG; })(_react2['default'].Component); exports['default'] = InlineSVG; module.exports = exports['default']; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _activity = __webpack_require__(6); Object.defineProperty(exports, 'Activity', { enumerable: true, get: function get() { return _interopRequireDefault(_activity).default; } }); var _flags = __webpack_require__(7); Object.defineProperty(exports, 'Flags', { enumerable: true, get: function get() { return _interopRequireDefault(_flags).default; } }); var _foods = __webpack_require__(8); Object.defineProperty(exports, 'Foods', { enumerable: true, get: function get() { return _interopRequireDefault(_foods).default; } }); var _nature = __webpack_require__(9); Object.defineProperty(exports, 'Nature', { enumerable: true, get: function get() { return _interopRequireDefault(_nature).default; } }); var _objects = __webpack_require__(10); Object.defineProperty(exports, 'Objects', { enumerable: true, get: function get() { return _interopRequireDefault(_objects).default; } }); var _people = __webpack_require__(11); Object.defineProperty(exports, 'People', { enumerable: true, get: function get() { return _interopRequireDefault(_people).default; } }); var _places = __webpack_require__(12); Object.defineProperty(exports, 'Places', { enumerable: true, get: function get() { return _interopRequireDefault(_places).default; } }); var _recent = __webpack_require__(13); Object.defineProperty(exports, 'Recent', { enumerable: true, get: function get() { return _interopRequireDefault(_recent).default; } }); var _symbols = __webpack_require__(14); Object.defineProperty(exports, 'Symbols', { enumerable: true, get: function get() { return _interopRequireDefault(_symbols).default; } }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }, /* 6 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"></path></svg>" /***/ }, /* 7 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"></path></svg>" /***/ }, /* 8 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"></path></svg>" /***/ }, /* 9 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"></path><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"></path></svg>" /***/ }, /* 10 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"></path><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"></path></svg>" /***/ }, /* 11 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"></path><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"></path></svg>" /***/ }, /* 12 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"></path><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"></path></svg>" /***/ }, /* 13 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"></path><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"></path></svg>" /***/ }, /* 14 */ /***/ function(module, exports) { module.exports = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"></path></svg>" /***/ }, /* 15 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _frequently = __webpack_require__(16); var _frequently2 = _interopRequireDefault(_frequently); var _ = __webpack_require__(1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var LABELS = { 'Search': 'Search Results', 'Recent': 'Frequently Used', 'People': 'Smileys & People', 'Nature': 'Animals & Nature', 'Foods': 'Food & Drink', 'Activity': 'Activity', 'Places': 'Travel & Places', 'Objects': 'Objects', 'Symbols': 'Symbols', 'Flags': 'Flags' }; var Category = function (_React$Component) { _inherits(Category, _React$Component); function Category() { _classCallCheck(this, Category); return _possibleConstructorReturn(this, Object.getPrototypeOf(Category).apply(this, arguments)); } _createClass(Category, [{ key: 'componentDidMount', value: function componentDidMount() { this.container = this.refs.container; this.label = this.refs.label; this.parent = this.container.parentNode; this.margin = 0; this.minMargin = 0; this.memoizeSize(); } }, { key: 'shouldComponentUpdate', value: function shouldComponentUpdate(nextProps, nextState) { var _props = this.props; var name = _props.name; var perLine = _props.perLine; var emojis = _props.emojis; var emojiProps = _props.emojiProps; var skin = emojiProps.skin; var size = emojiProps.size; var sheetURL = emojiProps.sheetURL; var nextPerLine = nextProps.perLine; var nextEmojis = nextProps.emojis; var nextEmojiProps = nextProps.emojiProps; var nextSkin = nextEmojiProps.skin; var nextSize = nextEmojiProps.size; var nextSheetURL = nextEmojiProps.sheetURL; var shouldUpdate = false; if (name == 'Recent' && perLine != nextPerLine) { shouldUpdate = true; } if (name == 'Search') { shouldUpdate = !(emojis == nextEmojis); } if (skin != nextSkin || size != nextSize || sheetURL != nextSheetURL) { shouldUpdate = true; } return shouldUpdate; } }, { key: 'memoizeSize', value: function memoizeSize() { var _container$getBoundin = this.container.getBoundingClientRect(); var top = _container$getBoundin.top; var height = _container$getBoundin.height; var _parent$getBoundingCl = this.parent.getBoundingClientRect(); var parentTop = _parent$getBoundingCl.top; var _label$getBoundingCli = this.label.getBoundingClientRect(); var labelHeight = _label$getBoundingCli.height; this.top = top - parentTop + this.parent.scrollTop; if (height == 0) { this.maxMargin = 0; } else { this.maxMargin = height - labelHeight; } } }, { key: 'handleScroll', value: function handleScroll(scrollTop) { var margin = scrollTop - this.top; margin = margin < this.minMargin ? this.minMargin : margin; margin = margin > this.maxMargin ? this.maxMargin : margin; if (margin == this.margin) return; var name = this.props.name; if (!this.props.hasStickyPosition) { this.label.style.top = margin + 'px'; } this.margin = margin; return true; } }, { key: 'getEmojis', value: function getEmojis() { var _props2 = this.props; var name = _props2.name; var emojis = _props2.emojis; var perLine = _props2.perLine; if (name == 'Recent') { var frequentlyUsed = _frequently2.default.get(perLine * 4); if (frequentlyUsed.length) { emojis = frequentlyUsed; } } if (emojis) { emojis = emojis.slice(0); } return emojis; } }, { key: 'updateDisplay', value: function updateDisplay(display) { var emojis = this.getEmojis(); if (!display && !emojis) { return; } this.container.style.display = display; } }, { key: 'render', value: function render() { var _props3 = this.props; var name = _props3.name; var hasStickyPosition = _props3.hasStickyPosition; var emojiProps = _props3.emojiProps; var emojis = this.getEmojis(); var labelStyles = {}; var labelSpanStyles = {}; var containerStyles = {}; if (!emojis) { containerStyles = { display: 'none' }; } if (!hasStickyPosition) { labelStyles = { height: 28 }; labelSpanStyles = { position: 'absolute' }; } return _react2.default.createElement( 'div', { ref: 'container', className: 'emoji-mart-category', style: containerStyles }, _react2.default.createElement( 'div', { style: labelStyles, 'data-name': name, className: 'emoji-mart-category-label' }, _react2.default.createElement( 'span', { style: labelSpanStyles, ref: 'label' }, LABELS[name] ) ), emojis && emojis.map(function (emoji) { return _react2.default.createElement(_.Emoji, _extends({ key: emoji.id || emoji, emoji: emoji }, emojiProps)); }), emojis && !emojis.length && _react2.default.createElement( 'div', { className: 'emoji-mart-no-results' }, _react2.default.createElement(_.Emoji, _extends({}, emojiProps, { size: 22, emoji: 'sleuth_or_spy' })), _react2.default.createElement( 'span', { className: 'emoji-mart-no-results-label' }, 'No emoji found' ) ) ); } }]); return Category; }(_react2.default.Component); exports.default = Category; Category.propTypes = { emojis: _react2.default.PropTypes.array, hasStickyPosition: _react2.default.PropTypes.bool, name: _react2.default.PropTypes.string.isRequired, perLine: _react2.default.PropTypes.number.isRequired, emojiProps: _react2.default.PropTypes.object.isRequired }; Category.defaultProps = { emojis: [], hasStickyPosition: true }; /***/ }, /* 16 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _store = __webpack_require__(17); var _store2 = _interopRequireDefault(_store); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var frequently = _store2.default.get('frequently') || {}; function add(emoji) { var id = emoji.id; frequently[id] || (frequently[id] = 0); frequently[id] += 1; _store2.default.set('last', id); _store2.default.set('frequently', frequently); } function get(quantity) { var sorted = Object.keys(frequently).sort(function (a, b) { return frequently[a] - frequently[b]; }).reverse(), sliced = sorted.slice(0, quantity), last = _store2.default.get('last'); if (last && sliced.indexOf(last) == -1) { sliced.pop(); sliced.push(last); } return sliced; } exports.default = { add: add, get: get }; /***/ }, /* 17 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var NAMESPACE = 'emoji-mart'; function update(state) { for (var key in state) { var value = state[key]; set(key, value); } } function set(key, value) { if (!('localStorage' in window)) return; window.localStorage[NAMESPACE + '.' + key] = JSON.stringify(value); } function get(key) { if (!('localStorage' in window)) return; var value = window.localStorage[NAMESPACE + '.' + key]; if (value) { return JSON.parse(value); } } exports.default = { update: update, set: set, get: get }; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _react = __webpack_require__(3); var _react2 = _interopRequireDefault(_react); var _data = __webpack_require__(19); var _data2 = _interopRequireDefault(_data); var _utils = __webpack_require__(20); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var SHEET_COLUMNS = 41; var Emoji = function (_React$Component) { _inherits(Emoji, _React$Component); function Emoji(props) { _classCallCheck(this, Emoji); var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Emoji).call(this, props)); _this.hasSkinVariations = !!_this.getData().skin_variations; return _this; } _createClass(Emoji, [{ key: 'shouldComponentUpdate', value: function shouldComponentUpdate(nextProps) { return this.hasSkinVariations && nextProps.skin != this.props.skin || nextProps.size != this.props.size || nextProps.sheetURL != this.props.sheetURL; } }, { key: 'getPosition', value: function getPosition() { var _getData2 = this.getData(); var sheet_x = _getData2.sheet_x; var sheet_y = _getData2.sheet_y; var multiply = 100 / (SHEET_COLUMNS - 1); return multiply * sheet_x + '% ' + multiply * sheet_y + '%'; } }, { key: 'getData', value: function getData() { var _props = this.props; var emoji = _props.emoji; var skin = _props.skin; var sheetURL = _props.sheetURL; return (0, _utils.getData)(emoji, skin, sheetURL); } }, { key: 'getSanitizedData', value: function getSanitizedData() { var _props2 = this.props; var emoji = _props2.emoji; var skin = _props2.skin; var sheetURL = _props2.sheetURL; return (0, _utils.getSanitizedData)(emoji, skin, sheetURL); } }, { key: 'handleClick', value: function handleClick(e) { var onClick = this.props.onClick; var emoji = this.getSanitizedData(); onClick(emoji, e); } }, { key: 'handleOver', value: function handleOver(e) { var onOver = this.props.onOver; var emoji = this.getSanitizedData(); onOver(emoji, e); } }, { key: 'handleLeave', value: function handleLeave(e) { var onLeave = this.props.onLeave; var emoji = this.getSanitizedData(); onLeave(emoji, e); } }, { key: 'render', value: function render() { var _props3 = this.props; var sheetURL = _props3.sheetURL; var size = _props3.size; var onOver = _props3.onOver; var onLeave = _props3.onLeave; return _react2.default.createElement( 'span', { onClick: this.handleClick.bind(this), onMouseEnter: this.handleOver.bind(this), onMouseLeave: this.handleLeave.bind(this), className: 'emoji-mart-emoji' }, _react2.default.createElement('span', { style: { width: size, height: size, display: 'inline-block', backgroundImage: 'url(' + sheetURL + ')', backgroundSize: 100 * SHEET_COLUMNS + '%', backgroundPosition: this.getPosition() } }) ); } }]); return Emoji; }(_react2.default.Component); exports.default = Emoji; Emoji.propTypes = { skin: _react2.default.PropTypes.number, onOver: _react2.default.PropTypes.func, onLeave: _react2.default.PropTypes.func, onClick: _react2.default.PropTypes.func, size: _react2.default.PropTypes.number.isRequired, sheetURL: _react2.default.PropTypes.string.isRequired, emoji: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.object]).isRequired }; Emoji.defaultProps = { skin: 1, onOver: function onOver() {}, onLeave: function onLeave() {}, onClick: function onClick() {} }; /***/ }, /* 19 */ /***/ function(module, exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default={"categories":[{"name":"People","emojis":["grinning","grimacing","grin","joy","smiley","smile","sweat_smile","laughing","innocent","wink","blush","slightly_smiling_face","upside_down_face","relaxed","yum","relieved","heart_eyes","kissing_heart","kissing","kissing_smiling_eyes","kissing_closed_eyes","stuck_out_tongue_winking_eye","stuck_out_tongue_closed_eyes","stuck_out_tongue","money_mouth_face","nerd_face","sunglasses","hugging_face","smirk","no_mouth","neutral_face","expressionless","unamused","face_with_rolling_eyes","thinking_face","flushed","disappointed","worried","angry","rage","pensive","confused","slightly_frowning_face","white_frowning_face","persevere","confounded","tired_face","weary","triumph","open_mouth","scream","fearful","cold_sweat","hushed","frowning","anguished","cry","disappointed_relieved","sleepy","sweat","sob","dizzy_face","astonished","zipper_mouth_face","mask","face_with_thermometer","face_with_head_bandage","sleeping","zzz","hankey","smiling_imp","imp","japanese_ogre","japanese_goblin","skull","ghost","alien","robot_face","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","raised_hands","clap","wave","+1","-1","facepunch","fist","v","ok_hand","hand","open_hands","muscle","pray","point_up","point_up_2","point_down","point_left","point_right","middle_finger","raised_hand_with_fingers_splayed","the_horns","spock-hand","writing_hand","nail_care","lips","tongue","ear","nose","eye","eyes","bust_in_silhouette","busts_in_silhouette","speaking_head_in_silhouette","baby","boy","girl","man","woman","person_with_blond_hair","older_man","older_woman","man_with_gua_pi_mao","man_with_turban","cop","construction_worker","guardsman","sleuth_or_spy","santa","angel","princess","bride_with_veil","walking","runner","dancer","dancers","couple","two_men_holding_hands","two_women_holding_hands","bow","information_desk_person","no_good","ok_woman","raising_hand","person_with_pouting_face","person_frowning","haircut","massage","couple_with_heart","woman-heart-woman","man-heart-man","couplekiss","woman-kiss-woman","man-kiss-man","family","man-woman-girl","man-woman-girl-boy","man-woman-boy-boy","man-woman-girl-girl","woman-woman-boy","woman-woman-girl","woman-woman-girl-boy","woman-woman-boy-boy","woman-woman-girl-girl","man-man-boy","man-man-girl","man-man-girl-boy","man-man-boy-boy","man-man-girl-girl","womans_clothes","shirt","jeans","necktie","dress","bikini","kimono","lipstick","kiss","footprints","high_heel","sandal","boot","mans_shoe","athletic_shoe","womans_hat","tophat","helmet_with_white_cross","mortar_board","crown","school_satchel","pouch","purse","handbag","briefcase","eyeglasses","dark_sunglasses","ring","closed_umbrella"]},{"name":"Nature","emojis":["dog","cat","mouse","hamster","rabbit","bear","panda_face","koala","tiger","lion_face","cow","pig","pig_nose","frog","octopus","monkey_face","see_no_evil","hear_no_evil","speak_no_evil","monkey","chicken","penguin","bird","baby_chick","hatching_chick","hatched_chick","wolf","boar","horse","unicorn_face","bee","bug","snail","beetle","ant","spider","scorpion","crab","snake","turtle","tropical_fish","fish","blowfish","dolphin","whale","whale2","crocodile","leopard","tiger2","water_buffalo","ox","cow2","dromedary_camel","camel","elephant","goat","ram","sheep","racehorse","pig2","rat","mouse2","rooster","turkey","dove_of_peace","dog2","poodle","cat2","rabbit2","chipmunk","feet","dragon","dragon_face","cactus","christmas_tree","evergreen_tree","deciduous_tree","palm_tree","seedling","herb","shamrock","four_leaf_clover","bamboo","tanabata_tree","leaves","fallen_leaf","maple_leaf","ear_of_rice","hibiscus","sunflower","rose","tulip","blossom","cherry_blossom","bouquet","mushroom","chestnut","jack_o_lantern","shell","spider_web","earth_americas","earth_africa","earth_asia","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","new_moon","waxing_crescent_moon","first_quarter_moon","moon","new_moon_with_face","full_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","sun_with_face","crescent_moon","star","star2","dizzy","sparkles","comet","sunny","mostly_sunny","partly_sunny","barely_sunny","partly_sunny_rain","cloud","rain_cloud","thunder_cloud_and_rain","lightning","zap","fire","boom","snowflake","snow_cloud","snowman","snowman_without_snow","wind_blowing_face","dash","tornado","fog","umbrella","umbrella_with_rain_drops","droplet","sweat_drops","ocean"]},{"name":"Foods","emojis":["green_apple","apple","pear","tangerine","lemon","banana","watermelon","grapes","strawberry","melon","cherries","peach","pineapple","tomato","eggplant","hot_pepper","corn","sweet_potato","honey_pot","bread","cheese_wedge","poultry_leg","meat_on_bone","fried_shrimp","egg","hamburger","fries","hotdog","pizza","spaghetti","taco","burrito","ramen","stew","fish_cake","sushi","bento","curry","rice_ball","rice","rice_cracker","oden","dango","shaved_ice","ice_cream","icecream","cake","birthday","custard","candy","lollipop","chocolate_bar","popcorn","doughnut","cookie","beer","beers","wine_glass","cocktail","tropical_drink","champagne","sake","tea","coffee","baby_bottle","fork_and_knife","knife_fork_plate"]},{"name":"Activity","emojis":["soccer","basketball","football","baseball","tennis","volleyball","rugby_football","8ball","golf","golfer","table_tennis_paddle_and_ball","badminton_racquet_and_shuttlecock","ice_hockey_stick_and_puck","field_hockey_stick_and_ball","cricket_bat_and_ball","ski","skier","snowboarder","ice_skate","bow_and_arrow","fishing_pole_and_fish","rowboat","swimmer","surfer","bath","person_with_ball","weight_lifter","bicyclist","mountain_bicyclist","horse_racing","man_in_business_suit_levitating","trophy","running_shirt_with_sash","sports_medal","medal","reminder_ribbon","rosette","ticket","admission_tickets","performing_arts","art","circus_tent","microphone","headphones","musical_score","musical_keyboard","saxophone","trumpet","guitar","violin","clapper","video_game","space_invader","dart","game_die","slot_machine","bowling"]},{"name":"Places","emojis":["car","taxi","blue_car","bus","trolleybus","racing_car","police_car","ambulance","fire_engine","minibus","truck","articulated_lorry","tractor","racing_motorcycle","bike","rotating_light","oncoming_police_car","oncoming_bus","oncoming_automobile","oncoming_taxi","aerial_tramway","mountain_cableway","suspension_railway","railway_car","train","monorail","bullettrain_side","bullettrain_front","light_rail","mountain_railway","steam_locomotive","train2","metro","tram","station","helicopter","small_airplane","airplane","airplane_departure","airplane_arriving","boat","motor_boat","speedboat","ferry","passenger_ship","rocket","satellite","seat","anchor","construction","fuelpump","busstop","vertical_traffic_light","traffic_light","checkered_flag","ship","ferris_wheel","roller_coaster","carousel_horse","building_construction","foggy","tokyo_tower","factory","fountain","rice_scene","mountain","snow_capped_mountain","mount_fuji","volcano","japan","camping","tent","national_park","motorway","railway_track","sunrise","sunrise_over_mountains","desert","beach_with_umbrella","desert_island","city_sunrise","city_sunset","cityscape","night_with_stars","bridge_at_night","milky_way","stars","sparkler","fireworks","rainbow","house_buildings","european_castle","japanese_castle","stadium","statue_of_liberty","house","house_with_garden","derelict_house_building","office","department_store","post_office","european_post_office","hospital","bank","hotel","c