emojiapp
Version:
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
169 lines (122 loc) • 376 kB
JavaScript
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/EmojiPicker.js":
/*!****************************!*\
!*** ./src/EmojiPicker.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _SearchIcon_svg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SearchIcon.svg */ \"./src/SearchIcon.svg\");\n/* harmony import */ var _App_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.css */ \"./src/App.css\");\n/* harmony import */ var _assets_merged_min_64_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./assets/merged-min-64.png */ \"./src/assets/merged-min-64.png\");\n/* harmony import */ var _assets_json_posdata_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./assets/json/posdata.json */ \"./src/assets/json/posdata.json\");\n/* harmony import */ var _assets_json_groups_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./assets/json/groups.json */ \"./src/assets/json/groups.json\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\nfunction EmojiItem(_ref) {\n var _PositionData, _PositionData2;\n let {\n item,\n onClick = () => {},\n baseImg\n } = _ref;\n const handleEmojiClick = () => {\n onClick(item);\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n style: {\n display: \"flex\"\n },\n className: \"emoji-item-c\",\n onClick: handleEmojiClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n className: \"emoji-item\",\n style: {\n background: \"url(\" + baseImg + \")\",\n backgroundPosition: \"-\".concat(24 * ((_PositionData = _assets_json_posdata_json__WEBPACK_IMPORTED_MODULE_3__[\"\".concat(item[0].split(\"_\").join(\"-\"), \".png\")]) === null || _PositionData === void 0 ? void 0 : _PositionData.x) / 64, \"px -\").concat(24 * ((_PositionData2 = _assets_json_posdata_json__WEBPACK_IMPORTED_MODULE_3__[\"\".concat(item[0].split(\"_\").join(\"-\"), \".png\")]) === null || _PositionData2 === void 0 ? void 0 : _PositionData2.y) / 64, \"px\"),\n backgroundSize: \"6100% 6100%\"\n }\n }));\n}\nfunction EmojiPicker(_ref2) {\n let {\n onEmojiClick = () => {},\n baseImg\n } = _ref2;\n const emojilistRef = (0,react__WEBPACK_IMPORTED_MODULE_5__.useRef)(null);\n const [currentCategory, setCurrentCategory] = (0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(\"Smileys & Emotion\");\n const [searchResults, setSearchResults] = (0,react__WEBPACK_IMPORTED_MODULE_5__.useState)([]);\n const [searchString, setSearchString] = (0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(\"\");\n let groupIcons = (0,react__WEBPACK_IMPORTED_MODULE_5__.useMemo)(() => {\n return {\n // Recent: {\n // background:\n // 'url('+baseImg+') -432px -720px / 6100% 6100%',\n // },\n \"Smileys & Emotion\": {\n background: \"url(\" + baseImg + \") -384px -768px / 6100% 6100%\"\n },\n \"People & Body\": {\n background: \"url(\" + baseImg + \") -1320px -288px / 6100% 6100%\"\n },\n Component: {\n background: \"url(\" + baseImg + \") -1272px -240px / 6100% 6100%\"\n },\n \"Animals & Nature\": {\n background: \"url(\" + baseImg + \") -1416px -264px / 6100% 6100%\"\n },\n \"Food & Drink\": {\n background: \"url(\" + baseImg + \") -768px -144px / 6100% 6100%\"\n },\n \"Travel & Places\": {\n background: \"url(\" + baseImg + \") -576px -120px / 6100% 6100%\"\n },\n Activities: {\n background: \"url(\" + baseImg + \") -432px -168px / 6100% 6100%\"\n },\n Objects: {\n background: \"url(\" + baseImg + \") -648px -312px / 6100% 6100%\"\n },\n Symbols: {\n background: \"url(\" + baseImg + \") -720px -240px / 6100% 6100%\"\n },\n Flags: {\n background: \"url(\" + baseImg + \") -600px -864px / 6100% 6100%\"\n }\n };\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (!baseImg) {\n throw \"Please provide correct Base Image; Check documentation\";\n }\n }, []);\n const handleCategorySelect = eachGroup => {\n setCurrentCategory(eachGroup);\n let element = document.getElementById(\"emoji-container-\".concat(eachGroup.split(\" \").join(\"_\")));\n let offset = element.offsetTop;\n if (emojilistRef.current) emojilistRef.current.scrollTop = offset - 110;\n };\n (0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {\n if (searchString) {\n let results = [];\n _assets_json_groups_json__WEBPACK_IMPORTED_MODULE_4__.groups.forEach(eachGroup => {\n eachGroup.subgroups.forEach(eachSubgroup => {\n eachSubgroup.emojis.forEach(eachEmoji => {\n if (eachEmoji[1].includes(searchString)) {\n results.push(eachEmoji);\n }\n });\n });\n });\n setSearchResults(results);\n }\n }, [searchString]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n className: \"emoji-picker-container\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n className: \"emoji-picker-search-c\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"img\", {\n src: _SearchIcon_svg__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n height: 20,\n width: 20\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"input\", {\n placeholder: \"Search Emojis\",\n onChange: e => setSearchString(e.target.value.toLowerCase().trim())\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n style: {\n display: \"flex\",\n justifyContent: \"space-around\"\n },\n className: \"emoji-categories\"\n }, Object.keys(groupIcons).map(eachGroup => {\n // if (eachGroup === \"Component\") return;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n key: eachGroup,\n className: \"emoji-item-c\",\n style: {\n borderBottom: \"2px solid \".concat(currentCategory === eachGroup && searchString.length === 0 ? \"black\" : \"transparent\"),\n borderRadius: 0,\n borderTopLeftRadius: 5,\n borderTopRightRadius: 5,\n filter: searchString.length > 0 || currentCategory !== eachGroup ? \"grayscale(100%)\" : \"none\"\n },\n onClick: searchString.length === 0 ? () => handleCategorySelect(eachGroup) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n key: \"group-\".concat(eachGroup),\n className: \"emoji-item\",\n style: {\n cursor: \"pointer\",\n ...groupIcons[eachGroup]\n }\n }));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n className: \"emojis-list-container\",\n ref: emojilistRef\n }, searchString.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n style: {\n display: \"flex\",\n flexWrap: \"wrap\"\n }\n }, searchResults.map(eachEmoji => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(EmojiItem, {\n key: eachEmoji[0],\n item: eachEmoji,\n onClick: onEmojiClick,\n baseImg: baseImg\n });\n })), searchString.length === 0 && _assets_json_groups_json__WEBPACK_IMPORTED_MODULE_4__.groups.map(eachGroup => {\n // if (eachGroup === \"Component\") return;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n key: \"container-group-\".concat(eachGroup.group),\n id: \"emoji-container-\".concat(eachGroup.group.split(\" \").join(\"_\"))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n className: \"emoji-group-title\"\n }, eachGroup.group), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(\"div\", {\n style: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 2\n }\n }, eachGroup.subgroups.map(eachSubGroup => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement((react__WEBPACK_IMPORTED_MODULE_5___default().Fragment), {\n key: eachGroup.group + \"-\" + eachSubGroup.subgroup\n }, eachSubGroup.emojis.map((eachEmoji, i) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5___default().createElement(EmojiItem, {\n key: eachEmoji[0],\n item: eachEmoji,\n onClick: onEmojiClick,\n baseImg: baseImg\n });\n }));\n })));\n }))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmojiPicker);\n\n//# sourceURL=webpack://emojiapp/./src/EmojiPicker.js?");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ React2: () => (/* binding */ React2),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _EmojiPicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EmojiPicker */ \"./src/EmojiPicker.js\");\n\n\n// import EmojiPicker from \"./EmojiPicker\";\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(props) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_EmojiPicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"], props);\n}\nconst React2 = (react__WEBPACK_IMPORTED_MODULE_0___default());\n\n//# sourceURL=webpack://emojiapp/./src/index.js?");
/***/ }),
/***/ "./node_modules/css-loader/dist/cjs.js!./src/App.css":
/*!***********************************************************!*\
!*** ./node_modules/css-loader/dist/cjs.js!./src/App.css ***!
\***********************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n.emoji-picker-container {\n width: 350px;\n\n flex-wrap: wrap;\n border: 1px solid #dedede;\n border-radius: 10px;\n padding: 10px;\n}\n.emoji-categories {\n position: sticky;\n top: 0;\n background-color: white;\n z-index: 100;\n border-bottom: 1px solid #dedede;\n}\n.emojis-list-container {\n height: 400px;\n overflow: scroll;\n padding: 0 5px 5px 5px;\n transition: 0.5s;\n scroll-behavior: smooth;\n}\n.emoji-picker-container .emoji-group-title {\n position: sticky;\n top: 0;\n background-color: white;\n padding: 10px 5px;\n}\n.emoji-picker-row {\n display: flex;\n flex-wrap: wrap;\n}\n.emoji-item-c {\n padding: 4px;\n border-radius: 4px;\n transition-duration: 200ms;\n animation: fadeInAnimation ease 1s;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n}\n.emoji-item-c:hover {\n background-color: #efefef;\n cursor: pointer;\n}\n\n.emoji-item {\n width: 24px;\n height: 24px;\n}\n.emoji-picker-search-c {\n padding: 5px;\n display: flex;\n border: 1px solid #dedede;\n border-radius: 50px;\n margin-bottom: 10px;\n width: calc(100% - 12px);\n background-color: transparent;\n}\n.emoji-picker-search-c > div {\n width: min-content;\n display: flex;\n align-items: center;\n padding: 0 4px 0 15px;\n}\n.emoji-picker-search-c input {\n outline: none;\n padding: 5px;\n font-size: 16px;\n width: calc(100% - 20px);\n border-radius: 50px;\n border: none;\n}\n\n@keyframes fadeInAnimation {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://emojiapp/./src/App.css?./node_modules/css-loader/dist/cjs.js");
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
\*****************************************************/
/***/ ((module) => {
eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://emojiapp/./node_modules/css-loader/dist/runtime/api.js?");
/***/ }),
/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js":
/*!**************************************************************!*\
!*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***!
\**************************************************************/
/***/ ((module) => {
eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://emojiapp/./node_modules/css-loader/dist/runtime/noSourceMaps.js?");
/***/ }),
/***/ "./src/App.css":
/*!*********************!*\
!*** ./src/App.css ***!
\*********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./App.css */ \"./node_modules/css-loader/dist/cjs.js!./src/App.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://emojiapp/./src/App.css?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!****************************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
\****************************************************************************/
/***/ ((module) => {
eval("\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://emojiapp/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
/*!********************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
\********************************************************************/
/***/ ((module) => {
eval("\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://emojiapp/./node_modules/style-loader/dist/runtime/insertBySelector.js?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
/*!**********************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
\**********************************************************************/
/***/ ((module) => {
eval("\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://emojiapp/./node_modules/style-loader/dist/runtime/insertStyleElement.js?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
/*!**********************************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
\**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
eval("\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = true ? __webpack_require__.nc : 0;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://emojiapp/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
/*!***************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
\***************************************************************/
/***/ ((module) => {
eval("\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://emojiapp/./node_modules/style-loader/dist/runtime/styleDomAPI.js?");
/***/ }),
/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
/*!*********************************************************************!*\
!*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
\*********************************************************************/
/***/ ((module) => {
eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://emojiapp/./node_modules/style-loader/dist/runtime/styleTagTransform.js?");
/***/ }),
/***/ "./src/SearchIcon.svg":
/*!****************************!*\
!*** ./src/SearchIcon.svg ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNiAzNiI+CiAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgIGZpbGw9IiM5QUFBQjQiCiAgICAgICAgICAgICAgICBkPSJNMjcuMzg4IDI0LjY0MkwyNC41NiAyNy40N2wtNC45NS00Ljk1IDIuODI4LTIuODI4eiIKICAgICAgICAgICAgICAvPgogICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICBmaWxsPSIjNjY3NTdGIgogICAgICAgICAgICAgICAgZD0iTTM0LjY4MyAyOS4xMWwtNS44NzktNS44NzljLS43ODEtLjc4MS0yLjA0Ny0uNzgxLTIuODI4IDBsLTIuODI4IDIuODI4Yy0uNzgxLjc4MS0uNzgxIDIuMDQ3IDAgMi44MjhsNS44NzkgNS44NzljMS41NjIgMS41NjMgNC4wOTYgMS41NjMgNS42NTggMCAxLjU2LTEuNTYxIDEuNTU5LTQuMDk0LS4wMDItNS42NTZ6IgogICAgICAgICAgICAgIC8+CiAgICAgICAgICAgICAgPGNpcmNsZSBmaWxsPSIjODg5OUE2IiBjeD0iMTMuNTg2IiBjeT0iMTMuNjY5IiByPSIxMy41IiAvPgogICAgICAgICAgICAgIDxjaXJjbGUgZmlsbD0iI0JCRERGNSIgY3g9IjEzLjU4NiIgY3k9IjEzLjY2OSIgcj0iOS41IiAvPgogICAgICAgICAgICA8L3N2Zz4=\");\n\n//# sourceURL=webpack://emojiapp/./src/SearchIcon.svg?");
/***/ }),
/***/ "./src/assets/merged-min-64.png":
/*!**************************************!*\
!*** ./src/assets/merged-min-64.png ***!
\**************************************/
/***/ ((module) => {
eval("module.exports = \"export default __webpack_public_path__ + \\\"images/merged-min-64.png\\\";\";\n\n//# sourceURL=webpack://emojiapp/./src/assets/merged-min-64.png?");
/***/ }),
/***/ "react":
/*!*********************************************************!*\
!*** external {"commonjs":"react","commonjs2":"react"} ***!
\*********************************************************/
/***/ ((module) => {
module.exports = require("react");
/***/ }),
/***/ "./src/assets/json/groups.json":
/*!*************************************!*\
!*** ./src/assets/json/groups.json ***!
\*************************************/
/***/ ((module) => {
eval("module.exports = /*#__PURE__*/JSON.parse('{\"versions\":[12,11,10,9,8,7,6.1,6,5.2,5.1,4.1,4,3.2,3,1.1],\"tests\":[[12,\"1f90d\"],[11,\"1f970\"],[10,\"1f929\"],[9,\"1f923\"],[8,\"1f643\"],[7,\"1f642\"],[6,\"1f428\"],[6.1,\"1f617\"],[5.2,\"26f0\"],[5.1,\"2b50\"],[4.1,\"26ab\"],[4,\"2615\"],[3.2,\"2764\"],[3,\"0023_fe0f_20e3\"],[1.1,\"231a\"]],\"groups\":[{\"group\":\"Smileys & Emotion\",\"subgroups\":[{\"subgroup\":\"face-smiling\",\"emojis\":[[\"1f600\",\"grinning face\",6.1],[\"1f603\",\"grinning face with big eyes\",6],[\"1f604\",\"grinning face with smiling eyes\",6],[\"1f601\",\"beaming face with smiling eyes\",6],[\"1f606\",\"grinning squinting face\",6],[\"1f605\",\"grinning face with sweat\",6],[\"1f923\",\"rolling on the floor laughing\",9],[\"1f602\",\"face with tears of joy\",6],[\"1f642\",\"slightly smiling face\",7],[\"1f643\",\"upside-down face\",8],[\"1f609\",\"winking face\",6],[\"1f60a\",\"smiling face with smiling eyes\",6],[\"1f607\",\"smiling face with halo\",6]]},{\"subgroup\":\"face-affection\",\"emojis\":[[\"1f970\",\"smiling face with hearts\",11],[\"1f60d\",\"smiling face with heart-eyes\",6],[\"1f929\",\"star-struck\",10],[\"1f618\",\"face blowing a kiss\",6],[\"1f617\",\"kissing face\",6.1],[\"263a\",\"smiling face\",3.2],[\"1f61a\",\"kissing face with closed eyes\",6],[\"1f619\",\"kissing face with smiling eyes\",6.1]]},{\"subgroup\":\"face-tongue\",\"emojis\":[[\"1f60b\",\"face savoring food\",6],[\"1f61b\",\"face with tongue\",6.1],[\"1f61c\",\"winking face with tongue\",6],[\"1f92a\",\"zany face\",10],[\"1f61d\",\"squinting face with tongue\",6],[\"1f911\",\"money-mouth face\",8]]},{\"subgroup\":\"face-hand\",\"emojis\":[[\"1f917\",\"hugging face\",8],[\"1f92d\",\"face with hand over mouth\",10],[\"1f92b\",\"shushing face\",10],[\"1f914\",\"thinking face\",8]]},{\"subgroup\":\"face-neutral-skeptical\",\"emojis\":[[\"1f910\",\"zipper-mouth face\",8],[\"1f928\",\"face with raised eyebrow\",10],[\"1f610\",\"neutral face\",6],[\"1f611\",\"expressionless face\",6.1],[\"1f636\",\"face without mouth\",6],[\"1f60f\",\"smirking face\",6],[\"1f612\",\"unamused face\",6],[\"1f644\",\"face with rolling eyes\",8],[\"1f62c\",\"grimacing face\",6.1],[\"1f925\",\"lying face\",9]]},{\"subgroup\":\"face-sleepy\",\"emojis\":[[\"1f60c\",\"relieved face\",6],[\"1f614\",\"pensive face\",6],[\"1f62a\",\"sleepy face\",6],[\"1f924\",\"drooling face\",9],[\"1f634\",\"sleeping face\",6.1]]},{\"subgroup\":\"face-unwell\",\"emojis\":[[\"1f637\",\"face with medical mask\",6],[\"1f912\",\"face with thermometer\",8],[\"1f915\",\"face with head-bandage\",8],[\"1f922\",\"nauseated face\",9],[\"1f92e\",\"face vomiting\",10],[\"1f927\",\"sneezing face\",9],[\"1f975\",\"hot face\",11],[\"1f976\",\"cold face\",11],[\"1f974\",\"woozy face\",11],[\"1f635\",\"dizzy face\",6],[\"1f92f\",\"exploding head\",10]]},{\"subgroup\":\"face-hat\",\"emojis\":[[\"1f920\",\"cowboy hat face\",9],[\"1f973\",\"partying face\",11]]},{\"subgroup\":\"face-glasses\",\"emojis\":[[\"1f60e\",\"smiling face with sunglasses\",6],[\"1f913\",\"nerd face\",8],[\"1f9d0\",\"face with monocle\",10]]},{\"subgroup\":\"face-concerned\",\"emojis\":[[\"1f615\",\"confused face\",6.1],[\"1f61f\",\"worried face\",6.1],[\"1f641\",\"slightly frowning face\",7],[\"2639\",\"frowning face\",3.2],[\"1f62e\",\"face with open mouth\",6.1],[\"1f62f\",\"hushed face\",6.1],[\"1f632\",\"astonished face\",6],[\"1f633\",\"flushed face\",6],[\"1f97a\",\"pleading face\",11],[\"1f626\",\"frowning face with open mouth\",6.1],[\"1f627\",\"anguished face\",6.1],[\"1f628\",\"fearful face\",6],[\"1f630\",\"anxious face with sweat\",6],[\"1f625\",\"sad but relieved face\",6],[\"1f622\",\"crying face\",6],[\"1f62d\",\"loudly crying face\",6],[\"1f631\",\"face screaming in fear\",6],[\"1f616\",\"confounded face\",6],[\"1f623\",\"persevering face\",6],[\"1f61e\",\"disappointed face\",6],[\"1f613\",\"downcast face with sweat\",6],[\"1f629\",\"weary face\",6],[\"1f62b\",\"tired face\",6],[\"1f971\",\"yawning face\",12]]},{\"subgroup\":\"face-negative\",\"emojis\":[[\"1f624\",\"face with steam from nose\",6],[\"1f621\",\"pouting face\",6],[\"1f620\",\"angry face\",6],[\"1f92c\",\"face with symbols on mouth\",10],[\"1f608\",\"smiling face with horns\",6],[\"1f47f\",\"angry face with horns\",6],[\"1f480\",\"skull\",6],[\"2620\",\"skull and crossbones\",3.2]]},{\"subgroup\":\"face-costume\",\"emojis\":[[\"1f4a9\",\"pile of poo\",6],[\"1f921\",\"clown face\",9],[\"1f479\",\"ogre\",6],[\"1f47a\",\"goblin\",6],[\"1f47b\",\"ghost\",6],[\"1f47d\",\"alien\",6],[\"1f47e\",\"alien monster\",6],[\"1f916\",\"robot\",8]]},{\"subgroup\":\"cat-face\",\"emojis\":[[\"1f63a\",\"grinning cat\",6],[\"1f638\",\"grinning cat with smiling eyes\",6],[\"1f639\",\"cat with tears of joy\",6],[\"1f63b\",\"smiling cat with heart-eyes\",6],[\"1f63c\",\"cat with wry smile\",6],[\"1f63d\",\"kissing cat\",6],[\"1f640\",\"weary cat\",6],[\"1f63f\",\"crying cat\",6],[\"1f63e\",\"pouting cat\",6]]},{\"subgroup\":\"monkey-face\",\"emojis\":[[\"1f648\",\"see-no-evil monkey\",6],[\"1f649\",\"hear-no-evil monkey\",6],[\"1f64a\",\"speak-no-evil monkey\",6]]},{\"subgroup\":\"emotion\",\"emojis\":[[\"1f48b\",\"kiss mark\",6],[\"1f48c\",\"love letter\",6],[\"1f498\",\"heart with arrow\",6],[\"1f49d\",\"heart with ribbon\",6],[\"1f496\",\"sparkling heart\",6],[\"1f497\",\"growing heart\",6],[\"1f493\",\"beating heart\",6],[\"1f49e\",\"revolving hearts\",6],[\"1f495\",\"two hearts\",6],[\"1f49f\",\"heart decoration\",6],[\"2763\",\"heart exclamation\",3.2],[\"1f494\",\"broken heart\",6],[\"2764\",\"red heart\",3.2],[\"1f9e1\",\"orange heart\",10],[\"1f49b\",\"yellow heart\",6],[\"1f49a\",\"green heart\",6],[\"1f499\",\"blue heart\",6],[\"1f49c\",\"purple heart\",6],[\"1f90e\",\"brown heart\",12],[\"1f5a4\",\"black heart\",9],[\"1f90d\",\"white heart\",12],[\"1f4af\",\"hundred points\",6],[\"1f4a2\",\"anger symbol\",6],[\"1f4a5\",\"collision\",6],[\"1f4ab\",\"dizzy\",6],[\"1f4a6\",\"sweat droplets\",6],[\"1f4a8\",\"dashing away\",6],[\"1f573\",\"hole\",7],[\"1f4a3\",\"bomb\",6],[\"1f4ac\",\"speech balloon\",6],[\"1f441_200d_1f5e8\",\"eye in speech bubble\",7],[\"1f5e8\",\"left speech bubble\",7],[\"1f5ef\",\"right anger bubble\",7],[\"1f4ad\",\"thought balloon\",6],[\"1f4a4\",\"zzz\",6]]}]},{\"group\":\"People & Body\",\"subgroups\":[{\"subgroup\":\"hand-fingers-open\",\"emojis\":[[\"1f44b\",\"waving hand\",6],[\"1f44b_1f3fb\",\"waving hand: light skin tone\",8],[\"1f44b_1f3fc\",\"waving hand: medium-light skin tone\",8],[\"1f44b_1f3fd\",\"waving hand: medium skin tone\",8],[\"1f44b_1f3fe\",\"waving hand: medium-dark skin tone\",8],[\"1f44b_1f3ff\",\"waving hand: dark skin tone\",8],[\"1f91a\",\"raised back of hand\",9],[\"1f91a_1f3fb\",\"raised back of hand: light skin tone\",9],[\"1f91a_1f3fc\",\"raised back of hand: medium-light skin tone\",9],[\"1f91a_1f3fd\",\"raised back of hand: medium skin tone\",9],[\"1f91a_1f3fe\",\"raised back of hand: medium-dark skin tone\",9],[\"1f91a_1f3ff\",\"raised back of hand: dark skin tone\",9],[\"1f590\",\"hand with fingers splayed\",7],[\"1f590_1f3fb\",\"hand with fingers splayed: light skin tone\",8],[\"1f590_1f3fc\",\"hand with fingers splayed: medium-light skin tone\",8],[\"1f590_1f3fd\",\"hand with fingers splayed: medium skin tone\",8],[\"1f590_1f3fe\",\"hand with fingers splayed: medium-dark skin tone\",8],[\"1f590_1f3ff\",\"hand with fingers splayed: dark skin tone\",8],[\"270b\",\"raised hand\",6],[\"270b_1f3fb\",\"raised hand: light skin tone\",8],[\"270b_1f3fc\",\"raised hand: medium-light skin tone\",8],[\"270b_1f3fd\",\"raised hand: medium skin tone\",8],[\"270b_1f3fe\",\"raised hand: medium-dark skin tone\",8],[\"270b_1f3ff\",\"raised hand: dark skin tone\",8],[\"1f596\",\"vulcan salute\",7],[\"1f596_1f3fb\",\"vulcan salute: light skin tone\",8],[\"1f596_1f3fc\",\"vulcan salute: medium-light skin tone\",8],[\"1f596_1f3fd\",\"vulcan salute: medium skin tone\",8],[\"1f596_1f3fe\",\"vulcan salute: medium-dark skin tone\",8],[\"1f596_1f3ff\",\"vulcan salute: dark skin tone\",8]]},{\"subgroup\":\"hand-fingers-partial\",\"emojis\":[[\"1f44c\",\"OK hand\",6],[\"1f44c_1f3fb\",\"OK hand: light skin tone\",8],[\"1f44c_1f3fc\",\"OK hand: medium-light skin tone\",8],[\"1f44c_1f3fd\",\"OK hand: medium skin tone\",8],[\"1f44c_1f3fe\",\"OK hand: medium-dark skin tone\",8],[\"1f44c_1f3ff\",\"OK hand: dark skin tone\",8],[\"1f90f\",\"pinching hand\",12],[\"1f90f_1f3fb\",\"pinching hand: light skin tone\",12],[\"1f90f_1f3fc\",\"pinching hand: medium-light skin tone\",12],[\"1f90f_1f3fd\",\"pinching hand: medium skin tone\",12],[\"1f90f_1f3fe\",\"pinching hand: medium-dark skin tone\",12],[\"1f90f_1f3ff\",\"pinching hand: dark skin tone\",12],[\"270c\",\"victory hand\",3.2],[\"270c_1f3fb\",\"victory hand: light skin tone\",8],[\"270c_1f3fc\",\"victory hand: medium-light skin tone\",8],[\"270c_1f3fd\",\"victory hand: medium skin tone\",8],[\"270c_1f3fe\",\"victory hand: medium-dark skin tone\",8],[\"270c_1f3ff\",\"victory hand: dark skin tone\",8],[\"1f91e\",\"crossed fingers\",9],[\"1f91e_1f3fb\",\"crossed fingers: light skin tone\",9],[\"1f91e_1f3fc\",\"crossed fingers: medium-light skin tone\",9],[\"1f91e_1f3fd\",\"crossed fingers: medium skin tone\",9],[\"1f91e_1f3fe\",\"crossed fingers: medium-dark skin tone\",9],[\"1f91e_1f3ff\",\"crossed fingers: dark skin tone\",9],[\"1f91f\",\"love-you gesture\",10],[\"1f91f_1f3fb\",\"love-you gesture: light skin tone\",10],[\"1f91f_1f3fc\",\"love-you gesture: medium-light skin tone\",10],[\"1f91f_1f3fd\",\"love-you gesture: medium skin tone\",10],[\"1f91f_1f3fe\",\"love-you gesture: medium-dark skin tone\",10],[\"1f91f_1f3ff\",\"love-you gesture: dark skin tone\",10],[\"1f918\",\"sign of the horns\",8],[\"1f918_1f3fb\",\"sign of the horns: light skin tone\",8],[\"1f918_1f3fc\",\"sign of the horns: medium-light skin tone\",8],[\"1f918_1f3fd\",\"sign of the horns: medium skin tone\",8],[\"1f918_1f3fe\",\"sign of the horns: medium-dark skin tone\",8],[\"1f918_1f3ff\",\"sign of the horns: dark skin tone\",8],[\"1f919\",\"call me hand\",9],[\"1f919_1f3fb\",\"call me hand: light skin tone\",9],[\"1f919_1f3fc\",\"call me hand: medium-light skin tone\",9],[\"1f919_1f3fd\",\"call me hand: medium skin tone\",9],[\"1f919_1f3fe\",\"call me hand: medium-dark skin tone\",9],[\"1f919_1f3ff\",\"call me hand: dark skin tone\",9]]},{\"subgroup\":\"hand-single-finger\",\"emojis\":[[\"1f448\",\"backhand index pointing left\",6],[\"1f448_1f3fb\",\"backhand index pointing left: light skin tone\",8],[\"1f448_1f3fc\",\"backhand index pointing left: medium-light skin tone\",8],[\"1f448_1f3fd\",\"backhand index pointing left: medium skin tone\",8],[\"1f448_1f3fe\",\"backhand index pointing left: medium-dark skin tone\",8],[\"1f448_1f3ff\",\"backhand index pointing left: dark skin tone\",8],[\"1f449\",\"backhand index pointing right\",6],[\"1f449_1f3fb\",\"backhand index pointing right: light skin tone\",8],[\"1f449_1f3fc\",\"backhand index pointing right: medium-light skin tone\",8],[\"1f449_1f3fd\",\"backhand index pointing right: medium skin tone\",8],[\"1f449_1f3fe\",\"backhand index pointing right: medium-dark skin tone\",8],[\"1f449_1f3ff\",\"backhand index pointing right: dark skin tone\",8],[\"1f446\",\"backhand index pointing up\",6],[\"1f446_1f3fb\",\"backhand index pointing up: light skin tone\",8],[\"1f446_1f3fc\",\"backhand index pointing up: medium-light skin tone\",8],[\"1f446_1f3fd\",\"backhand index pointing up: medium skin tone\",8],[\"1f446_1f3fe\",\"backhand index pointing up: medium-dark skin tone\",8],[\"1f446_1f3ff\",\"backhand index pointing up: dark skin tone\",8],[\"1f595\",\"middle finger\",7],[\"1f595_1f3fb\",\"middle finger: light skin tone\",8],[\"1f595_1f3fc\",\"middle finger: medium-light skin tone\",8],[\"1f595_1f3fd\",\"middle finger: medium skin tone\",8],[\"1f595_1f3fe\",\"middle finger: medium-dark skin tone\",8],[\"1f595_1f3ff\",\"middle finger: dark skin tone\",8],[\"1f447\",\"backhand index pointing down\",6],[\"1f447_1f3fb\",\"backhand index pointing down: light skin tone\",8],[\"1f447_1f3fc\",\"backhand index pointing down: medium-light skin tone\",8],[\"1f447_1f3fd\",\"backhand index pointing down: medium skin tone\",8],[\"1f447_1f3fe\",\"backhand index pointing down: medium-dark skin tone\",8],[\"1f447_1f3ff\",\"backhand index pointing down: dark skin tone\",8],[\"261d\",\"index pointing up\",3.2],[\"261d_1f3fb\",\"index pointing up: light skin tone\",8],[\"261d_1f3fc\",\"index pointing up: medium-light skin tone\",8],[\"261d_1f3fd\",\"index pointing up: medium skin tone\",8],[\"261d_1f3fe\",\"index pointing up: medium-dark skin tone\",8],[\"261d_1f3ff\",\"index pointing up: dark skin tone\",8]]},{\"subgroup\":\"hand-fingers-closed\",\"emojis\":[[\"1f44d\",\"thumbs up\",6],[\"1f44d_1f3fb\",\"thumbs up: light skin tone\",8],[\"1f44d_1f3fc\",\"thumbs up: medium-light skin tone\",8],[\"1f44d_1f3fd\",\"thumbs up: medium skin tone\",8],[\"1f44d_1f3fe\",\"thumbs up: medium-dark skin tone\",8],[\"1f44d_1f3ff\",\"thumbs up: dark skin tone\",8],[\"1f44e\",\"thumbs down\",6],[\"1f44e_1f3fb\",\"thumbs down: light skin tone\",8],[\"1f44e_1f3fc\",\"thumbs down: medium-light skin tone\",8],[\"1f44e_1f3fd\",\"thumbs down: medium skin tone\",8],[\"1f44e_1f3fe\",\"thumbs down: medium-dark skin tone\",8],[\"1f44e_1f3ff\",\"thumbs down: dark skin tone\",8],[\"270a\",\"raised fist\",6],[\"270a_1f3fb\",\"raised fist: light skin tone\",8],[\"270a_1f3fc\",\"raised fist: medium-light skin tone\",8],[\"270a_1f3fd\",\"raised fist: medium skin tone\",8],[\"270a_1f3fe\",\"raised fist: medium-dark skin tone\",8],[\"270a_1f3ff\",\"raised fist: dark skin tone\",8],[\"1f44a\",\"oncoming fist\",6],[\"1f44a_1f3fb\",\"oncoming fist: light skin tone\",8],[\"1f44a_1f3fc\",\"oncoming fist: medium-light skin tone\",8],[\"1f44a_1f3fd\",\"oncoming fist: medium skin tone\",8],[\"1f44a_1f3fe\",\"oncoming fist: medium-dark skin tone\",8],[\"1f44a_1f3ff\",\"oncoming fist: dark skin tone\",8],[\"1f91b\",\"left-facing fist\",9],[\"1f91b_1f3fb\",\"left-facing fist: light skin tone\",9],[\"1f91b_1f3fc\",\"left-facing fist: medium-light skin tone\",9],[\"1f91b_1f3fd\",\"left-facing fist: medium skin tone\",9],[\"1f91b_1f3fe\",\"left-facing fist: medium-dark skin tone\",9],[\"1f91b_1f3ff\",\"left-facing fist: dark skin tone\",9],[\"1f91c\",\"right-facing fist\",9],[\"1f91c_1f3fb\",\"right-facing fist: light skin tone\",9],[\"1f91c_1f3fc\",\"right-facing fist: medium-light skin tone\",9],[\"1f91c_1f3fd\",\"right-facing fist: medium skin tone\",9],[\"1f91c_1f3fe\",\"right-facing fist: medium-dark skin tone\",9],[\"1f91c_1f3ff\",\"right-facing fist: dark skin tone\",9]]},{\"subgroup\":\"hands\",\"emojis\":[[\"1f44f\",\"clapping hands\",6],[\"1f44f_1f3fb\",\"clapping hands: light skin tone\",8],[\"1f44f_1f3fc\",\"clapping hands: medium-light skin tone\",8],[\"1f44f_1f3fd\",\"clapping hands: medium skin tone\",