emojiEngine.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. * @const
  3. **/
  4. var EmojiProvider = {
  5. "emojione_v2_3": {
  6. js: "emojione_v2.3.sprites.js",
  7. css: "emojione_v2.3.sprites.css",
  8. name: "Emojione v2.3"
  9. },
  10. "emojione_v3": {
  11. js: "emojione_v3.sprites.js",
  12. css: "emojione_v3.sprites.css",
  13. name: "Emojione v3"
  14. }
  15. };
  16. var
  17. /** @type {{js: string, css: string, name: string}} */
  18. DEFAULT_EMOJI_PROVIDER = EmojiProvider["emojione_v2_3"],
  19. /** @type {{js: string, css: string, name: string}} */
  20. CURRENT_EMOJI_PROVIDER;
  21. /**
  22. * @param {{js: string, css: string, name: string}} provider
  23. **/
  24. function setEmojiProvider(provider) {
  25. if (CURRENT_EMOJI_PROVIDER !== provider) {
  26. console.log("Loading emoji pack " +provider.name);
  27. new HttpRequest(provider.js)
  28. .callbackSuccess(function(code, head, resp) {
  29. var script = document.createElement("script"),
  30. link = document.createElement("link");
  31. script.innerHTML = resp;
  32. script.language = "text/javascript";
  33. link.href = provider.css;
  34. link.rel = "stylesheet";
  35. document.head.appendChild(link);
  36. document.body.appendChild(script);
  37. onEmojiReady();
  38. })
  39. .setTimeout(1000 * 60 * 1)
  40. .send();
  41. CURRENT_EMOJI_PROVIDER = provider;
  42. }
  43. }
  44. /** @param {string|undefined} providerId */
  45. function loadEmojiProvider(providerId) {
  46. setEmojiProvider(providerId && EmojiProvider[providerId] ? EmojiProvider[providerId] : DEFAULT_EMOJI_PROVIDER);
  47. }
  48. function isValidEmojiProvider(providerId) {
  49. return !!EmojiProvider[providerId];
  50. }