emojiEngine.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /**
  2. * @const
  3. **/
  4. var EmojiProvider = {
  5. "noemoji": {
  6. js: "noemoji.js",
  7. css: null,
  8. name: "None"
  9. },
  10. "emojione_v2_3": {
  11. js: "emojione_v2.3.sprites.js",
  12. css: "emojione_v2.3.sprites.css",
  13. name: "Emojione v2.3"
  14. },
  15. "emojione_v3": {
  16. js: "emojione_v3.sprites.js",
  17. css: "emojione_v3.sprites.css",
  18. name: "Emojione v3"
  19. },
  20. "emojione_v4.5": {
  21. js: "emojione_v4.5.sprites.js",
  22. css: "emojione_v4.5.sprites.css",
  23. name: "Emojione v4.5"
  24. },
  25. "google": {
  26. js: "iamcal_emojidata_google.js",
  27. css: "iamcal.sprites.css",
  28. name: "Google (iamcal library)"
  29. },
  30. "apple": {
  31. js: "iamcal_emojidata_apple.js",
  32. css: "iamcal.sprites.css",
  33. name: "Apple (iamcal library)"
  34. },
  35. "facebook": {
  36. js: "iamcal_emojidata_facebook.js",
  37. css: "iamcal.sprites.css",
  38. name: "Facebook (iamcal library)"
  39. },
  40. "messenger": {
  41. js: "iamcal_emojidata_messenger.js",
  42. css: "iamcal.sprites.css",
  43. name: "Messenger (iamcal library)"
  44. },
  45. "twitter": {
  46. js: "iamcal_emojidata_twitter.js",
  47. css: "iamcal.sprites.css",
  48. name: "Twitter (iamcal library)"
  49. }
  50. };
  51. var
  52. /** @type {{js: string, css: string, name: string}} */
  53. DEFAULT_EMOJI_PROVIDER = EmojiProvider["emojione_v2_3"],
  54. /** @type {{js: string, css: string, name: string}} */
  55. CURRENT_EMOJI_PROVIDER;
  56. /**
  57. * @param {{js: string, css: string, name: string}} provider
  58. **/
  59. function setEmojiProvider(provider) {
  60. if (CURRENT_EMOJI_PROVIDER !== provider) {
  61. console.log("Loading emoji pack " +provider.name);
  62. HttpRequestWrapper(provider.js)
  63. .callbackSuccess(function(code, head, resp) {
  64. var script = document.createElement("script");
  65. script.innerHTML = resp;
  66. script.language = "text/javascript";
  67. document.body.appendChild(script);
  68. if (provider.css) {
  69. var link = document.createElement("link");
  70. link.href = provider.css;
  71. link.rel = "stylesheet";
  72. document.head.appendChild(link);
  73. }
  74. onEmojiReady();
  75. })
  76. .setTimeout(1000 * 60 * 1)
  77. .send();
  78. CURRENT_EMOJI_PROVIDER = provider;
  79. return true;
  80. }
  81. return false;
  82. }
  83. /** @param {string|undefined} providerId */
  84. function loadEmojiProvider(providerId) {
  85. return setEmojiProvider(providerId && EmojiProvider[providerId] ? EmojiProvider[providerId] : DEFAULT_EMOJI_PROVIDER);
  86. }
  87. function isValidEmojiProvider(providerId) {
  88. return !!EmojiProvider[providerId];
  89. }