UNPKG

emoji-mart

Version:

Customizable Slack-like emoji picker for React

76 lines (57 loc) 1.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _store = _interopRequireDefault(require("./store")); var DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop']; var frequently, initialized; var defaults = {}; function init() { initialized = true; frequently = _store["default"].get('frequently'); } function add(emoji) { if (!initialized) init(); var id = emoji.id; frequently || (frequently = defaults); frequently[id] || (frequently[id] = 0); frequently[id] += 1; _store["default"].set('last', id); _store["default"].set('frequently', frequently); } function get(perLine) { if (!initialized) init(); if (!frequently) { defaults = {}; var result = []; for (var i = 0; i < perLine; i++) { defaults[DEFAULTS[i]] = perLine - i; result.push(DEFAULTS[i]); } return result; } var quantity = perLine * 4; var frequentlyKeys = []; for (var key in frequently) { if (frequently.hasOwnProperty(key)) { frequentlyKeys.push(key); } } var sorted = frequentlyKeys.sort(function (a, b) { return frequently[a] - frequently[b]; }).reverse(); var sliced = sorted.slice(0, quantity); var last = _store["default"].get('last'); if (last && sliced.indexOf(last) == -1) { sliced.pop(); sliced.push(last); } return sliced; } var _default = { add: add, get: get }; exports["default"] = _default;