From 91425632e228dc8e017d90de3d1b87d85ae5afbd Mon Sep 17 00:00:00 2001 From: nekobit Date: Fri, 24 Jun 2022 23:15:59 +0000 Subject: [PATCH] JS Emoji picker FossilOrigin-Name: dee0ddfe4af83bb952b8baf4d41d778974ee09d033c13b937fdc0c7a4a70eed0 --- dist/js/emoji.js | 55 +++++++++++++++++++++++----------------------- scripts/emoji-to.c | 3 ++- src/emoji.c | 2 +- src/emoji_codes.h | 1 + 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/dist/js/emoji.js b/dist/js/emoji.js index 37cf341..020db66 100644 --- a/dist/js/emoji.js +++ b/dist/js/emoji.js @@ -1,3 +1,5 @@ +let emojo_json = null; + // Get emojis from file function get_emojo_json(callback) { @@ -10,8 +12,9 @@ function get_emojo_json(callback) xhr.send(); } -function construct_emojo_picker() +function construct_emojo_picker(e) { + let index = 0; let emoji_picker = document.createElement("div"); emoji_picker.className = "emoji-picker"; emoji_picker.innerHTML = ` @@ -61,37 +64,21 @@ function construct_emojo_picker()
-
- {{%s:emojis_smileys}} -
+ ${construct_emojis("Smileys & Emotion").outerHTML} -
- {{%s:emojis_animals}} -
+ ${construct_emojis("Animals & Nature", index).outerHTML} -
- {{%s:emojis_food}} -
+ ${construct_emojis("Food & Drink", index).outerHTML} -
- {{%s:emojis_travel}} -
+ ${construct_emojis("Travel & Places", index).outerHTML} -
- {{%s:emojis_activities}} -
+ ${construct_emojis("Activities", index).outerHTML} -
- {{%s:emojis_objects}} -
+ ${construct_emojis("Objects", index).outerHTML} -
- {{%s:emojis_symbols}} -
+ ${construct_emojis("Symbols", index).outerHTML} -
- {{%s:emojis_flags}} -
+ ${construct_emojis("Flags", index).outerHTML}
`; @@ -99,7 +86,21 @@ function construct_emojo_picker() return emoji_picker; } +function construct_emojis(category, start_index = 0) +{ + let emoji_picker_div = document.createElement("div"); + emoji_picker_div.className = "emoji-picker-emojos"; + + for (let i = 0; i < emojo_json.length; ++i) + { + if (emojo_json[i].group === category) + emoji_picker_div.innerHTML += `${emojo_json[i].char}`; + } + + return emoji_picker_div; +} + get_emojo_json((emojo_json_str) => { - const emojo_json = JSON.parse(emojo_json_str); - console.log(emojo_json); + emojo_json = JSON.parse(emojo_json_str); + document.body.appendChild(construct_emojo_picker(emojo_json)); }); diff --git a/scripts/emoji-to.c b/scripts/emoji-to.c index a95dee3..7646937 100644 --- a/scripts/emoji-to.c +++ b/scripts/emoji-to.c @@ -111,10 +111,11 @@ int main(int argc, char** argv) printf("#define EMOJO_CAT_SYMBOLS %d\n", i); } else if (strcmp(group->valuestring, "Flags") == 0 && cat == 6) { + cat = 7; printf("#define EMOJO_CAT_FLAGS %d\n", i); - break; } } + printf("#define EMOJO_CAT_MAX %d\n", i); printf("static struct emoji_info emojos[] = {"); i = 0; diff --git a/src/emoji.c b/src/emoji.c index 92d5b5e..c4c16c7 100644 --- a/src/emoji.c +++ b/src/emoji.c @@ -125,7 +125,7 @@ char* construct_emoji_picker(char* status_id, size_t* size) emojis[EMO_CAT_ACTIVITIES] = construct_func_strings(construct_emoji_voidwrap, args + EMO_CAT_ACTIVITIES, EMOJO_CAT_OBJECTS - EMOJO_CAT_ACTIVITIES, NULL); emojis[EMO_CAT_OBJECTS] = construct_func_strings(construct_emoji_voidwrap, args + EMO_CAT_OBJECTS, EMOJO_CAT_SYMBOLS - EMOJO_CAT_OBJECTS, NULL); emojis[EMO_CAT_SYMBOLS] = construct_func_strings(construct_emoji_voidwrap, args + EMO_CAT_SYMBOLS, EMOJO_CAT_FLAGS - EMOJO_CAT_SYMBOLS, NULL); - emojis[EMO_CAT_FLAGS] = construct_func_strings(construct_emoji_voidwrap, args + EMO_CAT_FLAGS, 30 /* TODO there are not 100 flags */, NULL); + emojis[EMO_CAT_FLAGS] = construct_func_strings(construct_emoji_voidwrap, args + EMO_CAT_FLAGS, EMOJO_CAT_MAX - EMOJO_CAT_FLAGS, NULL); struct emoji_picker_template data = { .emojis_smileys = emojis[EMO_CAT_SMILEYS], diff --git a/src/emoji_codes.h b/src/emoji_codes.h index d40185a..bf043a7 100644 --- a/src/emoji_codes.h +++ b/src/emoji_codes.h @@ -10,6 +10,7 @@ #define EMOJO_CAT_OBJECTS 3715 #define EMOJO_CAT_SYMBOLS 4014 #define EMOJO_CAT_FLAGS 4315 +#define EMOJO_CAT_MAX 4590 static struct emoji_info emojos[] = {{"😀","grinning face" }, /*0 : Smileys & Emotion*/ {"😃","grinning face with big eyes" }, /*1 : Smileys & Emotion*/ {"😄","grinning face with smiling eyes" }, /*2 : Smileys & Emotion*/