chromium/third_party/google_input_tools/src/chrome/os/inputview/config/emoji_data.js

// Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
// limitations under the License.
// See the License for the specific language governing permissions and
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// distributed under the License is distributed on an "AS-IS" BASIS,
// Unless required by applicable law or agreed to in writing, software
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// You may obtain a copy of the License at
// you may not use this file except in compliance with the License.
// Licensed under the Apache License, Version 2.0 (the "License");
//
goog.require('i18n.input.chrome.ElementType');
goog.require('i18n.input.chrome.inputview.Css');
goog.require('i18n.input.chrome.inputview.EmojiType');
goog.require('i18n.input.chrome.inputview.SpecNodeName');
goog.require('i18n.input.chrome.inputview.content.util');

(function() {

  var viewIdPrefix = 'emoji-k-';
  var emojiKeysPerPage = 27;
  var util = i18n.input.chrome.inputview.content.util;
  var ElementType = i18n.input.chrome.ElementType;
  var EmojiType = i18n.input.chrome.inputview.EmojiType;
  var SpecNodeName = i18n.input.chrome.inputview.SpecNodeName;
  var Css = i18n.input.chrome.inputview.Css;

  var emojiGroups = [
    // Recent
    [''],

    // Hot
    ['\u2665', '\ud83d\ude02', '\u263a',
      '\u2764', '\ud83d\ude12', '\ud83d\ude0d',
      '\ud83d\udc4c', '\ud83d\ude18', '\ud83d\ude0a',
      '\ud83d\ude14', '\ud83d\ude0f', '\ud83d\ude29',
      '\ud83d\ude01', '\ud83d\ude2d', '\ud83d\ude33',
      '\ud83d\udc95', '\u270c', '\ud83d\udc4d',
      '\ud83d\ude09', '\ud83d\udc81', '\ud83d\ude4c',
      '\ud83d\ude0c', '\ud83d\ude0e', '\ud83d\ude48',
      '\ud83d\ude11', '\ud83d\ude1c', '\ud83d\ude0b',
      '\ud83d\ude1e', '\ud83d\ude4f', '\u270b',
      '\ud83d\ude04', '\ud83d\ude4a', '\ud83d\ude15',
      '\ud83d\ude21', '\ud83d\udc4f', '\ud83d\ude22',
      '\ud83d\ude34', '\ud83d\udc40', '\ud83d\ude10',
      '\ud83d\ude31', '\ud83d\ude2b', '\ud83d\ude1d',
      '\ud83d\udc9c', '\ud83d\udc94', '\ud83d\udc8b',
      '\ud83d\ude03', '\ud83d\ude2a', '\ud83d\ude23',
      '\ud83d\udc99', '\ud83d\ude24', '\ud83d\udc4b',
      '\ud83d\udc4a', '\ud83d\ude37', '\ud83d\ude20',
      '\ud83d\ude16', '\ud83d\ude2c', '\ud83d\udc97',
      '\ud83d\ude45', '\ud83d\ude08', '\ud83d\ude05',
      '\ud83d\udc4e', '\ud83d\ude25', '\ud83d\ude4b',
      '\ud83d\ude06', '\ud83d\ude13', '\ud83d\udcaa',
      '\ud83d\udc96', '\ud83d\ude36', '\ud83d\ude1a',
      '\ud83d\udc9b', '\ud83d\udc9a', '\ud83d\ude1b',
      '\ud83d\udc83', '\ud83d\udc9e', '\ud83d\ude00',
      '\ud83d\ude30', '\u270a', '\ud83d\udca9',
      '\ud83d\udc98', '\u261d'],

    // Emotion
    ['\u263a', '\ud83d\ude0a', '\ud83d\ude00',
     '\ud83d\ude01', '\ud83d\ude02', '\ud83d\ude03',
     '\ud83d\ude04', '\ud83d\ude05', '\ud83d\ude06',
     '\ud83d\ude07', '\ud83d\ude08', '\ud83d\ude09',
     '\ud83d\ude2f', '\ud83d\ude10', '\ud83d\ude11',
     '\ud83d\ude15', '\ud83d\ude20', '\ud83d\ude2c',
     '\ud83d\ude21', '\ud83d\ude22', '\ud83d\ude34',
     '\ud83d\ude2e', '\ud83d\ude23', '\ud83d\ude24',
     '\ud83d\ude25', '\ud83d\ude26', '\ud83d\ude27',
     '\ud83d\ude28', '\ud83d\ude29', '\ud83d\ude30',
     '\ud83d\ude1f', '\ud83d\ude31', '\ud83d\ude32',
     '\ud83d\ude33', '\ud83d\ude35', '\ud83d\ude36',
     '\ud83d\ude37', '\ud83d\ude1e', '\ud83d\ude12',
     '\ud83d\ude0d', '\ud83d\ude1b', '\ud83d\ude1c',
     '\ud83d\ude1d', '\ud83d\ude0b', '\ud83d\ude17',
     '\ud83d\ude19', '\ud83d\ude18', '\ud83d\ude1a',
     '\ud83d\ude0e', '\ud83d\ude2d', '\ud83d\ude0c',
     '\ud83d\ude16', '\ud83d\ude14', '\ud83d\ude2a',
     '\ud83d\ude0f', '\ud83d\ude13', '\ud83d\ude2b',
     '\ud83d\ude4b', '\ud83d\ude4c', '\ud83d\ude4d',
     '\ud83d\ude45', '\ud83d\ude46' , '\ud83d\ude47',
     '\ud83d\ude4e', '\ud83d\ude4f', '\ud83d\ude3a',
     '\ud83d\ude3c', '\ud83d\ude38' , '\ud83d\ude39',
     '\ud83d\ude3b', '\ud83d\ude3d', '\ud83d\ude3f',
     '\ud83d\ude3e', '\ud83d\ude40', '\ud83d\ude48',
     '\ud83d\ude49', '\ud83d\ude4a', '\ud83d\udca9',
     '\ud83d\udc76', '\ud83d\udc66', '\ud83d\udc67',
     '\ud83d\udc68', '\ud83d\udc69', '\ud83d\udc74',
     '\ud83d\udc75', '\ud83d\udc8f', '\ud83d\udc91',
     '\ud83d\udc6a', '\ud83d\udc6b', '\ud83d\udc6c',
     '\ud83d\udc6d', '\ud83d\udc64', '\ud83d\udc65',
     '\ud83d\udc6e', '\ud83d\udc77', '\ud83d\udc81',
     '\ud83d\udc82', '\ud83d\udc6f', '\ud83d\udc70',
     '\ud83d\udc78', '\ud83c\udf85', '\ud83d\udc7c',
     '\ud83d\udc71', '\ud83d\udc72', '\ud83d\udc73',
     '\ud83d\udc83', '\ud83d\udc86', '\ud83d\udc87',
     '\ud83d\udc85', '\ud83d\udc7b', '\ud83d\udc79',
     '\ud83d\udc7a', '\ud83d\udc7d', '\ud83d\udc7e',
     '\ud83d\udc7f', '\ud83d\udc80', '\ud83d\udcaa',
     '\ud83d\udc40', '\ud83d\udc42', '\ud83d\udc43',
     '\ud83d\udc63', '\ud83d\udc44', '\ud83d\udc45',
     '\ud83d\udc8b', '\u2764', '\ud83d\udc99',
     '\ud83d\udc9a', '\ud83d\udc9b', '\ud83d\udc9c',
     '\ud83d\udc93', '\ud83d\udc94', '\ud83d\udc95',
     '\ud83d\udc96', '\ud83d\udc97', '\ud83d\udc98',
     '\ud83d\udc9d', '\ud83d\udc9e', '\ud83d\udc9f',
     '\ud83d\udc4d', '\ud83d\udc4e', '\ud83d\udc4c',
     '\u270a', '\u270c', '\u270b',
     '\ud83d\udc4a', '\u261d', '\ud83d\udc46',
     '\ud83d\udc47', '\ud83d\udc48', '\ud83d\udc49',
     '\ud83d\udc4b', '\ud83d\udc4f', '\ud83d\udc50'],

    // Items
    ['\ud83d\udd30', '\ud83d\udc84', '\ud83d\udc5e',
     '\ud83d\udc5f', '\ud83d\udc51', '\ud83d\udc52',
     '\ud83c\udfa9', '\ud83c\udf93', '\ud83d\udc53',
     '\u231a', '\ud83d\udc54', '\ud83d\udc55',
     '\ud83d\udc56', '\ud83d\udc57', '\ud83d\udc58',
     '\ud83d\udc59', '\ud83d\udc60', '\ud83d\udc61',
     '\ud83d\udc62', '\ud83d\udc5a', '\ud83d\udc5c',
     '\ud83d\udcbc', '\ud83c\udf92', '\ud83d\udc5d',
     '\ud83d\udc5b', '\ud83d\udcb0', '\ud83d\udcb3',
     '\ud83d\udcb2', '\ud83d\udcb5', '\ud83d\udcb4',
     '\ud83d\udcb6', '\ud83d\udcb7', '\ud83d\udcb8',
     '\ud83d\udcb1', '\ud83d\udcb9', '\ud83d\udd2b',
     '\ud83d\udd2a', '\ud83d\udca3', '\ud83d\udc89',
     '\ud83d\udc8a', '\ud83d\udeac', '\ud83d\udd14',
     '\ud83d\udd15', '\ud83d\udeaa', '\ud83d\udd2c',
     '\ud83d\udd2d', '\ud83d\udd2e', '\ud83d\udd26',
     '\ud83d\udd0b', '\ud83d\udd0c', '\ud83d\udcdc',
     '\ud83d\udcd7', '\ud83d\udcd8', '\ud83d\udcd9',
     '\ud83d\udcda', '\ud83d\udcd4', '\ud83d\udcd2',
     '\ud83d\udcd1', '\ud83d\udcd3', '\ud83d\udcd5',
     '\ud83d\udcd6', '\ud83d\udcf0', '\ud83d\udcdb',
     '\ud83c\udf83', '\ud83c\udf84', '\ud83c\udf80',
     '\ud83c\udf81', '\ud83c\udf82', '\ud83c\udf88',
     '\ud83c\udf86', '\ud83c\udf87', '\ud83c\udf89',
     '\ud83c\udf8a', '\ud83c\udf8d', '\ud83c\udf8f',
     '\ud83c\udf8c', '\ud83c\udf90', '\ud83c\udf8b',
     '\ud83c\udf8e', '\ud83d\udcf1', '\ud83d\udcf2',
     '\ud83d\udcdf', '\u260e', '\ud83d\udcde',
     '\ud83d\udce0', '\ud83d\udce6', '\u2709',
     '\ud83d\udce8', '\ud83d\udce9', '\ud83d\udcea',
     '\ud83d\udceb', '\ud83d\udced', '\ud83d\udcec',
     '\ud83d\udcee', '\ud83d\udce4', '\ud83d\udce5',
     '\ud83d\udcef', '\ud83d\udce2', '\ud83d\udce3',
     '\ud83d\udce1', '\ud83d\udcac', '\ud83d\udcad',
     '\u2712', '\u270f', '\ud83d\udcdd',
     '\ud83d\udccf', '\ud83d\udcd0', '\ud83d\udccd',
     '\ud83d\udccc', '\ud83d\udcce', '\u2702',
     '\ud83d\udcba', '\ud83d\udcbb', '\ud83d\udcbd',
     '\ud83d\udcbe', '\ud83d\udcbf', '\ud83d\udcc6',
     '\ud83d\udcc5', '\ud83d\udcc7', '\ud83d\udccb',
     '\ud83d\udcc1', '\ud83d\udcc2', '\ud83d\udcc3',
     '\ud83d\udcc4', '\ud83d\udcca', '\ud83d\udcc8',
     '\ud83d\udcc9', '\u26fa', '\ud83c\udfa1',
     '\ud83c\udfa2', '\ud83c\udfa0', '\ud83c\udfaa',
     '\ud83c\udfa8', '\ud83c\udfac', '\ud83c\udfa5',
     '\ud83d\udcf7', '\ud83d\udcf9', '\ud83c\udfa6',
     '\ud83c\udfad', '\ud83c\udfab', '\ud83c\udfae',
     '\ud83c\udfb2', '\ud83c\udfb0', '\ud83c\udccf',
     '\ud83c\udfb4', '\ud83c\udc04', '\ud83c\udfaf',
     '\ud83d\udcfa', '\ud83d\udcfb', '\ud83d\udcc0',
     '\ud83d\udcfc', '\ud83c\udfa7', '\ud83c\udfa4',
     '\ud83c\udfb5', '\ud83c\udfb6', '\ud83c\udfbc',
     '\ud83c\udfbb', '\ud83c\udfb9', '\ud83c\udfb7',
     '\ud83c\udfba', '\ud83c\udfb8', '\u303d'],

    // Nature
    ['\ud83d\udc15', '\ud83d\udc36', '\ud83d\udc29',
     '\ud83d\udc08', '\ud83d\udc31', '\ud83d\udc00',
     '\ud83d\udc01', '\ud83d\udc2d', '\ud83d\udc39',
     '\ud83d\udc22', '\ud83d\udc07', '\ud83d\udc30',
     '\ud83d\udc13', '\ud83d\udc14', '\ud83d\udc23',
     '\ud83d\udc24', '\ud83d\udc25', '\ud83d\udc26',
     '\ud83d\udc0f', '\ud83d\udc11', '\ud83d\udc10',
     '\ud83d\udc3a', '\ud83d\udc03', '\ud83d\udc02',
     '\ud83d\udc04', '\ud83d\udc2e', '\ud83d\udc34',
     '\ud83d\udc17', '\ud83d\udc16', '\ud83d\udc37',
     '\ud83d\udc3d', '\ud83d\udc38', '\ud83d\udc0d',
     '\ud83d\udc3c', '\ud83d\udc27', '\ud83d\udc18',
     '\ud83d\udc28', '\ud83d\udc12', '\ud83d\udc35',
     '\ud83d\udc06', '\ud83d\udc2f', '\ud83d\udc3b',
     '\ud83d\udc2b', '\ud83d\udc2a', '\ud83d\udc0a',
     '\ud83d\udc33', '\ud83d\udc0b', '\ud83d\udc1f',
     '\ud83d\udc20', '\ud83d\udc21', '\ud83d\udc19',
     '\ud83d\udc1a', '\ud83d\udc2c', '\ud83d\udc0c',
     '\ud83d\udc1b', '\ud83d\udc1c', '\ud83d\udc1d',
     '\ud83d\udc1e', '\ud83d\udc32', '\ud83d\udc09',
     '\ud83d\udc3e', '\ud83c\udf78', '\ud83c\udf7a',
     '\ud83c\udf7b', '\ud83c\udf77', '\ud83c\udf79',
     '\ud83c\udf76', '\u2615', '\ud83c\udf75',
     '\ud83c\udf7c', '\ud83c\udf74', '\ud83c\udf68',
     '\ud83c\udf67', '\ud83c\udf66', '\ud83c\udf69',
     '\ud83c\udf70', '\ud83c\udf6a', '\ud83c\udf6b',
     '\ud83c\udf6c', '\ud83c\udf6d', '\ud83c\udf6e',
     '\ud83c\udf6f', '\ud83c\udf73', '\ud83c\udf54',
     '\ud83c\udf5f', '\ud83c\udf5d', '\ud83c\udf55',
     '\ud83c\udf56', '\ud83c\udf57', '\ud83c\udf64',
     '\ud83c\udf63', '\ud83c\udf71', '\ud83c\udf5e',
     '\ud83c\udf5c', '\ud83c\udf59', '\ud83c\udf5a',
     '\ud83c\udf5b', '\ud83c\udf72', '\ud83c\udf65',
     '\ud83c\udf62', '\ud83c\udf61', '\ud83c\udf58',
     '\ud83c\udf60', '\ud83c\udf4c', '\ud83c\udf4e',
     '\ud83c\udf4f', '\ud83c\udf4a', '\ud83c\udf4b',
     '\ud83c\udf44', '\ud83c\udf45', '\ud83c\udf46',
     '\ud83c\udf47', '\ud83c\udf48', '\ud83c\udf49',
     '\ud83c\udf50', '\ud83c\udf51', '\ud83c\udf52',
     '\ud83c\udf53', '\ud83c\udf4d', '\ud83c\udf30',
     '\ud83c\udf31', '\ud83c\udf32', '\ud83c\udf33',
     '\ud83c\udf34', '\ud83c\udf35', '\ud83c\udf37',
     '\ud83c\udf38', '\ud83c\udf39', '\ud83c\udf40',
     '\ud83c\udf41', '\ud83c\udf42', '\ud83c\udf43',
     '\ud83c\udf3a', '\ud83c\udf3b', '\ud83c\udf3c',
     '\ud83c\udf3d', '\ud83c\udf3e', '\ud83c\udf3f',
     '\u2600', '\ud83c\udf08', '\u26c5',
     '\u2601', '\ud83c\udf01', '\ud83c\udf02',
     '\u2614', '\ud83d\udca7', '\u26a1',
     '\ud83c\udf00', '\u2744', '\u26c4',
     '\ud83c\udf19', '\ud83c\udf1e', '\ud83c\udf1d',
     '\ud83c\udf1a', '\ud83c\udf1b', '\ud83c\udf1c',
     '\ud83c\udf11', '\ud83c\udf12', '\ud83c\udf13',
     '\ud83c\udf14', '\ud83c\udf15', '\ud83c\udf16',
     '\ud83c\udf17', '\ud83c\udf18', '\ud83c\udf91',
     '\ud83c\udf04', '\ud83c\udf05', '\ud83c\udf07',
     '\ud83c\udf06', '\ud83c\udf03', '\ud83c\udf0c',
     '\ud83c\udf09', '\ud83c\udf0a', '\ud83c\udf0b',
     '\ud83c\udf0e', '\ud83c\udf0f', '\ud83c\udf0d',
     '\ud83c\udf10'],

    // Places of interests
    ['\ud83c\udfe0', '\ud83c\udfe1', '\ud83c\udfe2',
     '\ud83c\udfe3', '\ud83c\udfe4', '\ud83c\udfe5',
     '\ud83c\udfe6', '\ud83c\udfe7', '\ud83c\udfe8',
     '\ud83c\udfe9', '\ud83c\udfea', '\ud83c\udfeb',
     '\u26ea', '\u26f2', '\ud83c\udfec',
     '\ud83c\udfef', '\ud83c\udff0', '\ud83c\udfed',
     '\ud83d\uddfb', '\ud83d\uddfc', '\ud83d\uddfd',
     '\ud83d\uddfe', '\ud83d\uddff', '\u2693',
     '\ud83c\udfee', '\ud83d\udc88', '\ud83d\udd27',
     '\ud83d\udd28', '\ud83d\udd29', '\ud83d\udebf',
     '\ud83d\udec1', '\ud83d\udec0', '\ud83d\udebd',
     '\ud83d\udebe', '\ud83c\udfbd', '\ud83c\udfa3',
     '\ud83c\udfb1', '\ud83c\udfb3', '\u26be',
     '\u26f3', '\ud83c\udfbe', '\u26bd',
     '\ud83c\udfbf', '\ud83c\udfc0', '\ud83c\udfc1',
     '\ud83c\udfc2', '\ud83c\udfc3', '\ud83c\udfc4',
     '\ud83c\udfc6', '\ud83c\udfc7', '\ud83d\udc0e',
     '\ud83c\udfc8', '\ud83c\udfc9', '\ud83c\udfca',
     '\ud83d\ude82', '\ud83d\ude83', '\ud83d\ude84',
     '\ud83d\ude85', '\ud83d\ude86', '\ud83d\ude87',
     '\u24c2', '\ud83d\ude88', '\ud83d\ude8a',
     '\ud83d\ude8b', '\ud83d\ude8c', '\ud83d\ude8d',
     '\ud83d\ude8e', '\ud83d\ude8f', '\ud83d\ude90',
     '\ud83d\ude91', '\ud83d\ude92', '\ud83d\ude93',
     '\ud83d\ude94', '\ud83d\ude95', '\ud83d\ude96',
     '\ud83d\ude97', '\ud83d\ude98', '\ud83d\ude99',
     '\ud83d\ude9a', '\ud83d\ude9b', '\ud83d\ude9c',
     '\ud83d\ude9d', '\ud83d\ude9e', '\ud83d\ude9f',
     '\ud83d\udea0', '\ud83d\udea1', '\ud83d\udea2',
     '\ud83d\udea3', '\ud83d\ude81', '\u2708',
     '\ud83d\udec2', '\ud83d\udec3', '\ud83d\udec4',
     '\ud83d\udec5', '\u26f5', '\ud83d\udeb2',
     '\ud83d\udeb3', '\ud83d\udeb4', '\ud83d\udeb5',
     '\ud83d\udeb7', '\ud83d\udeb8', '\ud83d\ude89',
     '\ud83d\ude80', '\ud83d\udea4', '\ud83d\udeb6',
     '\u26fd', '\ud83c\udd7f', '\ud83d\udea5',
     '\ud83d\udea6', '\ud83d\udea7', '\ud83d\udea8',
     '\u2668', '\ud83d\udc8c', '\ud83d\udc8d',
     '\ud83d\udc8e', '\ud83d\udc90', '\ud83d\udc92'],

    // Special characters
    ['\ud83d\udd1d', '\ud83d\udd19', '\ud83d\udd1b',
     '\ud83d\udd1c', '\ud83d\udd1a', '\u23f3',
     '\u231b', '\u23f0', '\u2648',
     '\u2649', '\u264a', '\u264b',
     '\u264c', '\u264d', '\u264e',
     '\u264f', '\u2650', '\u2651',
     '\u2652', '\u2653', '\u26ce',
     '\ud83d\udd31', '\ud83d\udd2f', '\ud83d\udebb',
     '\ud83d\udeae', '\ud83d\udeaf', '\ud83d\udeb0',
     '\ud83d\udeb1', '\ud83c\udd70', '\ud83c\udd71',
     '\ud83c\udd8e', '\ud83c\udd7e', '\ud83d\udcae',
     '\ud83d\udcaf', '\ud83d\udd20', '\ud83d\udd21',
     '\ud83d\udd22', '\ud83d\udd23', '\ud83d\udd24',
     '\u27bf', '\ud83d\udcf6', '\ud83d\udcf3',
     '\ud83d\udcf4', '\ud83d\udcf5', '\ud83d\udeb9',
     '\ud83d\udeba', '\ud83d\udebc', '\u267f',
     '\u267b', '\ud83d\udead', '\ud83d\udea9',
     '\u26a0', '\ud83c\ude01', '\ud83d\udd1e',
     '\u26d4', '\ud83c\udd92', '\ud83c\udd97',
     '\ud83c\udd95', '\ud83c\udd98', '\ud83c\udd99',
     '\ud83c\udd93', '\ud83c\udd96', '\ud83c\udd9a',
     '\ud83c\ude32', '\ud83c\ude33', '\ud83c\ude34',
     '\ud83c\ude35', '\ud83c\ude36', '\ud83c\ude37',
     '\ud83c\ude38', '\ud83c\ude39', '\ud83c\ude02',
     '\ud83c\ude3a', '\ud83c\ude50', '\ud83c\ude51',
     '\u3299', '\u00ae', '\u00a9',
     '\u2122', '\ud83c\ude1a', '\ud83c\ude2f',
     '\u3297', '\u2b55', '\u274c',
     '\u274e', '\u2139', '\ud83d\udeab',
     '\u2705', '\u2714', '\ud83d\udd17',
     '\u2734', '\u2733', '\u2795',
     '\u2796', '\u2716', '\u2797',
     '\ud83d\udca0', '\ud83d\udca1', '\ud83d\udca4',
     '\ud83d\udca2', '\ud83d\udd25', '\ud83d\udca5',
     '\ud83d\udca8', '\ud83d\udca6', '\ud83d\udcab',
     '\ud83d\udd5b', '\ud83d\udd67', '\ud83d\udd50',
     '\ud83d\udd5c', '\ud83d\udd51', '\ud83d\udd5d',
     '\ud83d\udd52', '\ud83d\udd5e', '\ud83d\udd53',
     '\ud83d\udd5f', '\ud83d\udd54', '\ud83d\udd60',
     '\ud83d\udd55', '\ud83d\udd61', '\ud83d\udd56',
     '\ud83d\udd62', '\ud83d\udd57', '\ud83d\udd63',
     '\ud83d\udd58', '\ud83d\udd64', '\ud83d\udd59',
     '\ud83d\udd65', '\ud83d\udd5a', '\ud83d\udd66',
     '\u2195', '\u2b06', '\u2197',
     '\u27a1', '\u2198', '\u2b07',
     '\u2199', '\u2b05', '\u2196',
     '\u2194', '\u2934', '\u2935',
     '\u23ea', '\u23eb', '\u23ec',
     '\u23e9', '\u25c0', '\u25b6',
     '\ud83d\udd3d', '\ud83d\udd3c', '\u2747',
     '\u2728', '\ud83d\udd34', '\ud83d\udd35',
     '\u26aa', '\u26ab', '\ud83d\udd33',
     '\ud83d\udd32', '\u2b50', '\ud83c\udf1f',
     '\ud83c\udf20', '\u25ab', '\u25aa',
     '\u25fd', '\u25fe', '\u25fb',
     '\u25fc', '\u2b1c', '\u2b1b',
     '\ud83d\udd38', '\ud83d\udd39', '\ud83d\udd36',
     '\ud83d\udd37', '\ud83d\udd3a', '\ud83d\udd3b',
     '\u2754', '\u2753', '\u2755',
     '\u2757', '\u203c', '\u2049',
     '\u3030', '\u27b0', '\u2660',
     '\u2665', '\u2663', '\u2666',
     '\ud83c\udd94', '\ud83d\udd11', '\u21a9',
     '\ud83c\udd91', '\ud83d\udd0d', '\ud83d\udd12',
     '\ud83d\udd13', '\u21aa', '\ud83d\udd10',
     '\u2611', '\ud83d\udd18', '\ud83d\udd0e',
     '\ud83d\udd16', '\ud83d\udd0f', '\ud83d\udd03',
     '\ud83d\udd00', '\ud83d\udd01', '\ud83d\udd02',
     '\ud83d\udd04', '\ud83d\udce7', '\ud83d\udd05',
     '\ud83d\udd06', '\ud83d\udd07', '\ud83d\udd08',
     '\ud83d\udd09', '\ud83d\udd0a'],

    // Emoticon
    [':)',
     ';-)',
     ':-D',
     ':P',
     ':-(',
     ':\'(',
     ':-)',
     ':-*',
     ':-$',
     ':-\\',
     ':-[',
     ':-!',
     ':S',
     ':O',
     ':-O',
     'B-)',
     'o_O',
     'O_o',
     '^O^',
     '-.-',
     '^_^',
     '^﹏^',
     '^m^',
     '^/^',
     '~_~',
     '-_-',
     '-_-||',
     '>_<',
     '><',
     '>﹏<',
     '_#',
     '\#_#',
     '*-*',
     '(^^)',
     '(^_^)',
     '(^.^)',
     '(^!^)',
     '(^J^)',
     '(^m^)',
     '(^\'^)',
     '(^_-)',
     '(^O^)',
     '(^o^)',
     '(^q^)',
     '(^○^)',
     '(^O^;)',
     '(^m^;)',
     '(^Q^)',
     '!(^^)!',
     'T_T',
     '(ToT)',
     '(T_T)',
     '\@_\@',
     '=.=',
     '=.=!',
     '=_=',
     '╰_╯',
     '-_-z',
     '^_-',
     '囧rz',
     'Orz',
     '→_→',
     '←_←',
     '≧◇≦',
     '(x_x)',
     '(′o`)',
     '(′ェ`)',
     '(?_?)',
     '(′θ`)',
     '(*_*)',
     '(@@)',
     '⊙▽⊙',
     '⊙△⊙',
     '⊙_⊙',
     '⊙﹏⊙',
     '◑﹏◐',
     '◑︿◐',
     '◑__◐',
     '∩__∩',
     '∩﹏∩',
     '(ˇˍˇ)',
     '(′▽`〃)',
     '(′0ノ`*)',
     '(^_^;)',
     '(@_@)',
     '(*^^*)',
     '(´・ω・`)',
     '(=θωθ=)',
     '(°ο°)',
     '^(oo)^',
     '(#^.^#)',
     '(*^_^*)',
     '(¯(●●)¯)',
     '>"<|||',
     '(′~`;)',
     '(=′?`=)',
     '(○’ω’○)',
     'o(≧o≦)o',
     '(??_??)?',
     '└(^o^)┘',
     '(︶^︶)',
     '(>.<*)',
     '(⊙o⊙)',
     '(⊙﹏⊙)',
     '=^_^=',
     '::>_<::',
     '↖(^ω^)↗',
     '~w_w~']
  ];
  var keyList = [];
  var mapping = {};
  var viewId = 0;
  keyList.push(util.createTabBarKey('Tabbar0', EmojiType.RECENT,
      Css.EMOJI_TABBAR_RECENT));
  mapping['Tabbar0'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar1', EmojiType.HOT,
      Css.EMOJI_TABBAR_HOT));
  mapping['Tabbar1'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar2', EmojiType.EMOTION,
      Css.EMOJI_TABBAR_EMOTION));
  mapping['Tabbar2'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar3', EmojiType.ITEMS,
      Css.EMOJI_TABBAR_ITEMS));
  mapping['Tabbar3'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar4', EmojiType.NATURE,
      Css.EMOJI_TABBAR_NATURE));
  mapping['Tabbar4'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar5', EmojiType.PLACES_OF_INTERESTS,
      Css.EMOJI_TABBAR_PLACES_OF_INTERESTS));
  mapping['Tabbar5'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar6',
      EmojiType.SPECIAL_CHARACTERS,
      Css.EMOJI_TABBAR_SPECIAL_CHARACTERS));
  mapping['Tabbar6'] = viewIdPrefix + viewId++;
  keyList.push(util.createTabBarKey('Tabbar7', EmojiType.EMOTICON,
      Css.EMOJI_TABBAR_EMOTICON));
  mapping['Tabbar7'] = viewIdPrefix + viewId++;

  // Tab bar layout has 10 keys but we only need 8 keys here, skip two keys.
  viewId += 2;
  for (var i = 0, count = 0; i < emojiGroups.length; i++) {
    var pages = Math.ceil(emojiGroups[i].length / emojiKeysPerPage);
    for (var j = 0; j < pages * emojiKeysPerPage; j++) {
      var spec = {};
      spec[SpecNodeName.ID] = 'emojikey' + count;
      spec[SpecNodeName.TYPE] = ElementType.EMOJI_KEY;
      spec[SpecNodeName.TEXT] =
          j < emojiGroups[i].length ? emojiGroups[i][j] : '';
      spec[SpecNodeName.IS_EMOTICON] = (i == EmojiType.EMOTICON);
      var key = i18n.input.chrome.inputview.content.util.createKey(spec);
      mapping[key['spec'][SpecNodeName.ID]] = viewIdPrefix + viewId++;
      keyList.push(key);
      count++;
    }
  }
  var tmp = util.createBackspaceKey();
  keyList.push(tmp);
  mapping[tmp['spec'][SpecNodeName.ID]] = viewIdPrefix + viewId++;
  tmp = util.createEnterKey();
  keyList.push(tmp);
  mapping[tmp['spec'][SpecNodeName.ID]] = viewIdPrefix + viewId++;
  // SideKeys layout has 3 keys but we only need 2 keys here, skip one key.
  viewId++;

  //The space row.
  tmp = util.createBackToKeyboardKey();
  keyList.push(tmp);
  mapping[tmp['spec'][SpecNodeName.ID]] = viewIdPrefix + viewId++;
  tmp = util.createSpaceKey();
  keyList.push(tmp);
  mapping[tmp['spec'][SpecNodeName.ID]] = viewIdPrefix + viewId++;
  tmp = util.createHideKeyboardKey();
  keyList.push(tmp);
  mapping[tmp['spec'][SpecNodeName.ID]] = viewIdPrefix + viewId++;

  var result = {};
  result[SpecNodeName.TEXT] = emojiGroups;
  result[SpecNodeName.KEY_LIST] = keyList;
  result[SpecNodeName.MAPPING] = mapping;
  result[SpecNodeName.LAYOUT] = 'emoji';
  result['id'] = 'emoji';
  google.ime.chrome.inputview.onConfigLoaded(result);
}) ();