add comments and fix index
This commit is contained in:
parent
63ee482982
commit
b8a335a166
2 changed files with 17 additions and 6 deletions
|
@ -100,10 +100,12 @@ export const emojifyText = (str: string, customEmojis = {}) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
for (let c of split(str)) {
|
for (let c of split(str)) {
|
||||||
|
// convert FE0E selector to FE0F so it can be found in unimap
|
||||||
if (c.codePointAt(c.length - 1) === 65038) {
|
if (c.codePointAt(c.length - 1) === 65038) {
|
||||||
c = c.slice(0, -1) + String.fromCodePoint(65039);
|
c = c.slice(0, -1) + String.fromCodePoint(65039);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unqualified emojis aren't in emoji-mart's mappings so we just add FEOF
|
||||||
const unqualified = c + String.fromCodePoint(65039);
|
const unqualified = c + String.fromCodePoint(65039);
|
||||||
|
|
||||||
if (c in unicodeMapping) {
|
if (c in unicodeMapping) {
|
||||||
|
|
|
@ -12,7 +12,7 @@ const index = new Index({
|
||||||
});
|
});
|
||||||
|
|
||||||
for (const [key, emoji] of Object.entries(data.emojis)) {
|
for (const [key, emoji] of Object.entries(data.emojis)) {
|
||||||
index.add(key, emoji.name);
|
index.add('n' + key, emoji.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface searchOptions {
|
export interface searchOptions {
|
||||||
|
@ -21,18 +21,27 @@ export interface searchOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const addCustomToPool = (customEmojis: any[]) => {
|
export const addCustomToPool = (customEmojis: any[]) => {
|
||||||
|
// @ts-ignore
|
||||||
|
for (const key in index.register) {
|
||||||
|
if (key[0] === 'c') {
|
||||||
|
index.remove(key); // remove old custom emojis
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
|
||||||
for (const emoji of customEmojis) {
|
for (const emoji of customEmojis) {
|
||||||
index.add(i++, emoji.id);
|
index.add('c' + i++, emoji.id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// we can share an index by prefixing custom emojis with 'c' and native with 'n'
|
||||||
const search = (str: string, { maxResults = 5, custom }: searchOptions = {}, custom_emojis?: any): Emoji[] => {
|
const search = (str: string, { maxResults = 5, custom }: searchOptions = {}, custom_emojis?: any): Emoji[] => {
|
||||||
return index.search(str, maxResults)
|
return index.search(str, maxResults)
|
||||||
.flatMap(id => {
|
.flatMap(id => {
|
||||||
if (Number.isInteger(id)) {
|
// @ts-ignore
|
||||||
const { shortcode, static_url } = custom_emojis.get(id).toJS();
|
if (id[0] === 'c') {
|
||||||
|
const { shortcode, static_url } = custom_emojis.get((id as string).substr(1)).toJS();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: shortcode,
|
id: shortcode,
|
||||||
|
@ -42,10 +51,10 @@ const search = (str: string, { maxResults = 5, custom }: searchOptions = {}, cus
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const { skins } = data.emojis[id];
|
const { skins } = data.emojis[(id as string).substr(1)];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: id as string,
|
id: (id as string).substr(1),
|
||||||
colons: ':' + id + ':',
|
colons: ':' + id + ':',
|
||||||
unified: skins[0].unified,
|
unified: skins[0].unified,
|
||||||
native: skins[0].native,
|
native: skins[0].native,
|
||||||
|
|
Loading…
Reference in a new issue