gitea源码

emoji.ts 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import emojis from '../../../assets/emoji.json' with {type: 'json'};
  2. import {html} from '../utils/html.ts';
  3. const {assetUrlPrefix, customEmojis} = window.config;
  4. const tempMap = {...customEmojis};
  5. for (const {emoji, aliases} of emojis) {
  6. for (const alias of aliases || []) {
  7. tempMap[alias] = emoji;
  8. }
  9. }
  10. export const emojiKeys = Object.keys(tempMap).sort((a, b) => {
  11. if (a === '+1' || a === '-1') return -1;
  12. if (b === '+1' || b === '-1') return 1;
  13. return a.localeCompare(b);
  14. });
  15. const emojiMap: Record<string, string> = {};
  16. for (const key of emojiKeys) {
  17. emojiMap[key] = tempMap[key];
  18. }
  19. // retrieve HTML for given emoji name
  20. export function emojiHTML(name: string) {
  21. let inner;
  22. if (Object.hasOwn(customEmojis, name)) {
  23. inner = html`<img alt=":${name}:" src="${assetUrlPrefix}/img/emoji/${name}.png">`;
  24. } else {
  25. inner = emojiString(name);
  26. }
  27. return html`<span class="emoji" title=":${name}:">${inner}</span>`;
  28. }
  29. // retrieve string for given emoji name
  30. export function emojiString(name: string) {
  31. return emojiMap[name] || `:${name}:`;
  32. }