Add Indonesia and slang keywords to each emoji

This commit is contained in:
dwindown
2025-07-28 23:35:51 +07:00
parent 271ff51002
commit 85d864a9cf
3 changed files with 901 additions and 2 deletions

View File

@@ -20,6 +20,7 @@ document.addEventListener('DOMContentLoaded', () => {
let currentEmojiList = [];
let currentPage = 1;
const EMOJIS_PER_PAGE = 100;
let indonesianKeywords = {};
// --- Dark Mode Logic ---
const applyTheme = (isDark) => {
@@ -45,6 +46,7 @@ document.addEventListener('DOMContentLoaded', () => {
'array.json',
'list.json',
'categories.json',
'indonesian-keywords.json',
// Add other files if they should be loaded, keeping the initial set small
].map(file => `src/${file}`);
@@ -70,10 +72,22 @@ document.addEventListener('DOMContentLoaded', () => {
.catch(error => { console.error(error); return []; })
))
.then(allData => {
// Extract Indonesian keywords from the last file
const keywordsData = allData[allData.length - 1];
if (keywordsData && keywordsData.keywords) {
indonesianKeywords = keywordsData.keywords;
}
// Process emoji data from other files
const emojiData = allData.slice(0, -1);
const uniqueEmojis = new Map();
const parsedEmojis = allData.flat().flatMap(parseEmojiData);
const parsedEmojis = emojiData.flat().flatMap(parseEmojiData);
parsedEmojis.forEach(emoji => {
if (emoji && emoji.name && !uniqueEmojis.has(emoji.name)) {
// Add Indonesian keywords to emoji object
if (indonesianKeywords[emoji.emoji]) {
emoji.indonesianKeywords = indonesianKeywords[emoji.emoji];
}
uniqueEmojis.set(emoji.name, emoji);
}
});
@@ -137,7 +151,12 @@ document.addEventListener('DOMContentLoaded', () => {
const keywordMatch = emoji.keywords && Array.isArray(emoji.keywords) && emoji.keywords.some(k => k.toLowerCase().includes(searchTerm));
const categoryMatch = emoji.category && emoji.category.toLowerCase().includes(searchTerm);
const subcategoryMatch = emoji.subcategory && emoji.subcategory.toLowerCase().includes(searchTerm);
return nameMatch || keywordMatch || categoryMatch || subcategoryMatch;
// Indonesian keywords search
const indonesianMatch = emoji.indonesianKeywords && Array.isArray(emoji.indonesianKeywords) &&
emoji.indonesianKeywords.some(k => k.toLowerCase().includes(searchTerm));
return nameMatch || keywordMatch || categoryMatch || subcategoryMatch || indonesianMatch;
});
displayPage(1);
});
@@ -153,6 +172,9 @@ document.addEventListener('DOMContentLoaded', () => {
if (emoji.keywords && Array.isArray(emoji.keywords)) {
emoji.keywords.forEach(k => tags.add(k));
}
if (emoji.indonesianKeywords && Array.isArray(emoji.indonesianKeywords)) {
emoji.indonesianKeywords.forEach(k => tags.add(k));
}
if (emoji.category) tags.add(emoji.category);
if (emoji.subcategory) tags.add(emoji.subcategory);