// Emoji Library for P4RS3LT0NGV3 // Create namespace for emoji library window.emojiLibrary = {}; // Polyfill for Intl.Segmenter if not available if (!Intl.Segmenter) { console.warn('Intl.Segmenter not available, falling back to basic character splitting'); } // Helper function to properly split text into grapheme clusters (emojis) window.emojiLibrary.splitEmojis = function(text) { if (Intl.Segmenter) { const segmenter = new Intl.Segmenter('en', { granularity: 'grapheme' }); return Array.from(segmenter.segment(text), ({ segment }) => segment); } return Array.from(text); }; // Helper function to properly join emojis window.emojiLibrary.joinEmojis = function(emojis) { return emojis.join(''); }; // Additional emojis for expanded library window.emojiLibrary.ADDITIONAL_EMOJIS = [ // Animals & Nature "๐ŸฆŠ", "๐Ÿฆ", "๐Ÿฏ", "๐Ÿฎ", "๐Ÿท", "๐Ÿธ", "๐Ÿต", "๐Ÿ”", "๐Ÿง", "๐Ÿฆ", "๐Ÿค", "๐Ÿฆ†", "๐Ÿฆ…", "๐Ÿฆ‰", "๐Ÿฆ‡", "๐Ÿบ", "๐Ÿ—", "๐Ÿด", "๐Ÿฆ„", "๐Ÿ", "๐Ÿ›", "๐Ÿฆ‹", "๐ŸŒ", "๐Ÿž", "๐Ÿœ", "๐Ÿ•ท๏ธ", "๐Ÿฆ‚", "๐ŸฆŸ", "๐Ÿฆ ", "๐Ÿฆจ", "๐Ÿฆฉ", "๐Ÿฆซ", "๐Ÿฆฌ", "๐Ÿปโ€โ„๏ธ", "๐Ÿผ", "๐Ÿจ", "๐Ÿ•", "๐Ÿถ", "๐Ÿฉ", "๐Ÿˆ", "๐Ÿฑ", "๐Ÿชฑ", // Food & Drink "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ‰", "๐Ÿ‡", "๐Ÿ“", "๐Ÿˆ", "๐Ÿ’", "๐Ÿ‘", "๐Ÿฅญ", "๐Ÿ", "๐Ÿฅฅ", "๐Ÿฅ", "๐Ÿ…", "๐Ÿ†", "๐Ÿฅ‘", "๐Ÿฅฆ", "๐Ÿฅฌ", "๐Ÿฅ’", "๐ŸŒถ๏ธ", "๐ŸŒฝ", "๐Ÿฅ•", "๐Ÿง„", "๐Ÿง…", "๐Ÿฅ”", "๐Ÿ ", "๐Ÿฅ", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿค", "๐Ÿฃ", "๐Ÿฑ", "๐Ÿœ", "๐Ÿฒ", "๐Ÿฅ", // Travel & Places "๐Ÿš—", "๐Ÿš•", "๐Ÿš™", "๐ŸšŒ", "๐ŸšŽ", "๐Ÿš’", "๐Ÿš‘", "๐Ÿšš", "๐Ÿš›", "๐Ÿšœ", "๐Ÿšฒ", "๐Ÿš", "๐ŸšŸ", "๐Ÿšก", "๐Ÿš€", "๐Ÿ›ธ", "๐Ÿ›ฅ๏ธ", "๐ŸŽ๏ธ", "๐Ÿ๏ธ", "๐Ÿšค", "๐Ÿšข", "๐Ÿš", "๐Ÿš‚", "๐Ÿš†", "๐Ÿšˆ", "๐ŸŒŽ", "๐ŸŒ", "๐ŸŒ", "๐Ÿ”๏ธ", "๐Ÿ•๏ธ", // Activities & Sports "โšฝ", "๐Ÿ€", "๐Ÿˆ", "๐Ÿ", "๐Ÿ‰", "๐ŸŽพ", "๐ŸŽณ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿธ", "๐ŸฅŠ", "๐Ÿฅ‹", "๐Ÿฅ…", "๐Ÿคพ", "๐ŸŽฟ", "๐Ÿ„", "๐Ÿ‚", "๐ŸŠ", "๐Ÿ‹๏ธ", "๐Ÿคผ", "๐Ÿคธ", "๐Ÿคบ", "๐Ÿคฝ", "๐Ÿคน", "๐ŸŽฏ", "๐ŸŽฑ", "๐ŸŽฝ", "๐Ÿšด", "๐Ÿšต", // Tech & Objects "๐Ÿ’ป", "โŒจ๏ธ", "๐Ÿ–ฅ๏ธ", "๐Ÿ–ฑ๏ธ", "๐Ÿ–จ๏ธ", "๐Ÿ“ฑ", "โ˜Ž๏ธ", "๐Ÿ“ž", "๐Ÿ“Ÿ", "๐Ÿ“ ", "๐Ÿ“บ", "๐Ÿ“ป", "๐ŸŽ™๏ธ", "๐ŸŽš๏ธ", "๐ŸŽ›๏ธ", "๐Ÿงญ", "โฑ๏ธ", "โฒ๏ธ", "โฐ", "๐Ÿ•ฐ๏ธ", "๐Ÿ“ก", "๐Ÿ”‹", "๐Ÿ”Œ", "๐Ÿ’ก", "๐Ÿฎ", "๐Ÿช”", "๐Ÿงฏ", "๐Ÿ›ข๏ธ", "๐Ÿ’ธ", "๐Ÿ’ต", "๐Ÿ’ณ", "๐Ÿ’ด", "๐Ÿ’ถ", "๐Ÿ’ท", "๐Ÿ’ฐ", "๐Ÿ’ฑ", "๐Ÿ’ฒ", "๐Ÿ’ผ", "๐Ÿ’ฝ", "๐Ÿ’พ", "๐Ÿ’ฟ", // Symbols "โค๏ธ", "๐Ÿ’›", "๐Ÿ’š", "๐Ÿ’™", "๐Ÿ’œ", "๐Ÿ’”", "๐Ÿ’•", "๐Ÿ’ž", "๐Ÿ’“", "๐Ÿ’—", "๐Ÿ’–", "๐Ÿ’˜", "๐Ÿ’", "๐Ÿ’Ÿ", "๐Ÿ’ค", "๐Ÿ’ข", "๐Ÿ’ฃ", "๐Ÿ’ฅ", "๐Ÿ’ฆ", "๐Ÿ’จ", "๐Ÿ’ฉ", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ”ฅ", "๐Ÿ’ ", "๐Ÿ‘พ", "๐Ÿ‘ป", "๐Ÿ’€", "๐Ÿ‘ฝ", "๐Ÿ‘ฟ", "๐Ÿฉธ", // Mystical & Fantasy "๐Ÿง™", "๐Ÿง™โ€โ™‚๏ธ", "๐Ÿง™โ€โ™€๏ธ", "๐Ÿงš", "๐Ÿงšโ€โ™‚๏ธ", "๐Ÿงšโ€โ™€๏ธ", "๐Ÿง›", "๐Ÿง›โ€โ™‚๏ธ", "๐Ÿง›โ€โ™€๏ธ", "๐Ÿงœ", "๐Ÿงœโ€โ™‚๏ธ", "๐Ÿงœโ€โ™€๏ธ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿฒ", "๐Ÿ”ฎ", "๐Ÿ", "๐Ÿ‰", "๐Ÿฆ„", "๐Ÿ‘ธ", "๐Ÿฅท", "๐Ÿ‘ฐ", "๐Ÿง”", "โš—๏ธ", "๐Ÿ”ฏ", "๐Ÿ”ฑ", "โšœ๏ธ", "โœจ", "๐ŸŒ ", "๐ŸŒ‹", "๐Ÿ’Ž", "๐Ÿ’", "๐Ÿ„", "๐ŸŒบ", "๐ŸŒน", "๐Ÿญ", "๐Ÿš", "๐ŸŠ", "๐Ÿข", "๐Ÿ‡", "๐Ÿฐ", "๐Ÿ”ฅ", "๐Ÿ’ฅ", "๐ŸŒ€", "๐ŸŒˆ", "๐ŸŒช๏ธ", "๐Ÿฉธ", "๐Ÿชฑ", "๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜", // Flags "๐Ÿ", "๐Ÿšฉ", "๐ŸŽŒ", "๐Ÿด", "๐Ÿณ๏ธ", "๐Ÿณ๏ธโ€๐ŸŒˆ", "๐Ÿณ๏ธโ€โšง๏ธ", "๐Ÿดโ€โ˜ ๏ธ", "๐Ÿ‡บ๐Ÿ‡ธ", "๐Ÿ‡จ๐Ÿ‡ฆ", "๐Ÿ‡ฌ๐Ÿ‡ง", "๐Ÿ‡ฉ๐Ÿ‡ช", "๐Ÿ‡ซ๐Ÿ‡ท", "๐Ÿ‡ฎ๐Ÿ‡น", "๐Ÿ‡ฏ๐Ÿ‡ต", "๐Ÿ‡ฐ๐Ÿ‡ท", "๐Ÿ‡ท๐Ÿ‡บ", "๐Ÿ‡จ๐Ÿ‡ณ", "๐Ÿ‡ฎ๐Ÿ‡ณ", "๐Ÿ‡ฆ๐Ÿ‡บ", "๐Ÿ‡ง๐Ÿ‡ท", "๐Ÿ‡ช๐Ÿ‡ธ", "๐Ÿ‡ณ๐Ÿ‡ฑ", "๐Ÿ‡ต๐Ÿ‡น", "๐Ÿ‡ธ๐Ÿ‡ช", "๐Ÿ‡ฆ๐Ÿ‡ท", "๐Ÿ‡ฆ๐Ÿ‡บ", "๐Ÿ‡ฆ๐Ÿ‡น", "๐Ÿ‡ง๐Ÿ‡ช", "๐Ÿ‡ง๐Ÿ‡ด" ]; // Make emoji list globally available window.emojiLibrary.EMOJI_LIST = [ // Faces and People "๐Ÿ˜€", // Grinning Face "๐Ÿ˜", // Beaming Face with Smiling Eyes "๐Ÿ˜‚", // Face with Tears of Joy "๐Ÿคฃ", // Rolling on the Floor Laughing "๐Ÿ˜ƒ", // Grinning Face with Big Eyes "๐Ÿ˜„", // Grinning Face with Smiling Eyes "๐Ÿ˜…", // Grinning Face with Sweat "๐Ÿ˜†", // Grinning Squinting Face "๐Ÿ˜‰", // Winking Face "๐Ÿ˜Š", // Smiling Face with Smiling Eyes "๐Ÿ˜‹", // Face Savoring Food "๐Ÿ˜Ž", // Smiling Face with Sunglasses "๐Ÿ˜", // Smiling Face with Heart-Eyes "๐Ÿ˜˜", // Face Blowing a Kiss "๐Ÿฅฐ", // Smiling Face with Hearts "๐Ÿ˜—", // Kissing Face "๐Ÿ˜™", // Kissing Face with Smiling Eyes "๐Ÿ˜š", // Kissing Face with Closed Eyes "๐Ÿ™‚", // Slightly Smiling Face "๐Ÿค—", // Hugging Face "๐Ÿคฉ", // Star-Struck "๐Ÿค”", // Thinking Face "๐Ÿคจ", // Face with Raised Eyebrow "๐Ÿ˜", // Neutral Face "๐Ÿ˜‘", // Expressionless Face "๐Ÿ˜ถ", // Face Without Mouth "๐Ÿ™„", // Face with Rolling Eyes "๐Ÿ˜", // Smirking Face "๐Ÿ˜ฃ", // Persevering Face "๐Ÿ˜ฅ", // Sad but Relieved Face "๐Ÿ˜ฎ", // Face with Open Mouth "๐Ÿค", // Zipper-Mouth Face "๐Ÿ˜ฏ", // Hushed Face "๐Ÿ˜ช", // Sleepy Face "๐Ÿ˜ซ", // Tired Face "๐Ÿ˜ด", // Sleeping Face "๐Ÿ˜Œ", // Relieved Face "๐Ÿ˜›", // Face with Tongue "๐Ÿ˜œ", // Winking Face with Tongue "๐Ÿ˜", // Squinting Face with Tongue "๐Ÿคค", // Drooling Face "๐Ÿ˜’", // Unamused Face "๐Ÿ˜“", // Downcast Face with Sweat "๐Ÿ˜”", // Pensive Face "๐Ÿ˜•", // Confused Face "๐Ÿ™ƒ", // Upside-Down Face "๐Ÿค‘", // Money-Mouth Face "๐Ÿ˜ฒ", // Astonished Face "๐Ÿ™", // Slightly Frowning Face "๐Ÿ˜–", // Confounded Face "๐Ÿ˜ž", // Disappointed Face "๐Ÿ˜Ÿ", // Worried Face "๐Ÿ˜ค", // Face with Steam From Nose "๐Ÿ˜ข", // Crying Face "๐Ÿ˜ญ", // Loudly Crying Face "๐Ÿ˜ง", // Anguished Face "๐Ÿ˜จ", // Fearful Face "๐Ÿ˜ฉ", // Weary Face "๐Ÿคฏ", // Exploding Head "๐Ÿ˜ฑ", // Face Screaming in Fear "๐Ÿ˜ณ", // Flushed Face "๐Ÿฅต", // Hot Face "๐Ÿฅถ", // Cold Face "๐Ÿ˜ก", // Pouting Face "๐Ÿ˜ ", // Angry Face "๐Ÿคฌ", // Face with Symbols on Mouth "๐Ÿ˜ท", // Face with Medical Mask "๐Ÿค’", // Face with Thermometer "๐Ÿค•", // Face with Head-Bandage "๐Ÿคข", // Nauseated Face "๐Ÿคฎ", // Face Vomiting "๐Ÿคง", // Sneezing Face "๐Ÿ˜‡", // Smiling Face with Halo "๐Ÿฅณ", // Partying Face "๐Ÿฅด", // Woozy Face "๐Ÿฅบ", // Pleading Face "๐Ÿง", // Face with Monocle "๐Ÿฅฑ", // Yawning Face "๐Ÿง ", // Brain // Gestures and Body Parts "๐Ÿ‘", // Thumbs Up "๐Ÿ‘Ž", // Thumbs Down "๐Ÿ‘", // Clapping Hands "๐Ÿ™Œ", // Raising Hands "๐Ÿค", // Handshake "๐Ÿ‘‹", // Waving Hand "โœŒ๏ธ", // Victory Hand "๐ŸคŸ", // Love-You Gesture "๐Ÿค˜", // Sign of the Horns "๐Ÿ‘Š", // Oncoming Fist "โœŠ", // Raised Fist "๐Ÿ‘†", // Backhand Index Pointing Up "๐Ÿ‘‡", // Backhand Index Pointing Down "๐Ÿ‘ˆ", // Backhand Index Pointing Left "๐Ÿ‘‰", // Backhand Index Pointing Right "๐Ÿ‘Œ", // OK Hand "๐ŸคŒ", // Pinched Fingers "๐Ÿค", // Pinching Hand "โœ‹", // Raised Hand "๐Ÿคš", // Raised Back of Hand "๐Ÿ–๏ธ", // Hand with Fingers Splayed "๐Ÿ––", // Vulcan Salute "๐Ÿ‘€", // Eyes "๐Ÿ‘๏ธ", // Eye "๐Ÿ‘„", // Mouth "๐Ÿงฟ", // Nazar Amulet // Celebration & Objects "๐ŸŽ‰", // Party Popper "๐ŸŽŠ", // Confetti Ball "๐ŸŽ‚", // Birthday Cake "๐ŸŽ", // Wrapped Gift "๐ŸŽˆ", // Balloon "๐ŸŽ„", // Christmas Tree "๐ŸŽƒ", // Jack-O-Lantern "๐Ÿ†", // Trophy "๐Ÿ…", // Sports Medal "๐Ÿฅ‡", // 1st Place Medal "๐Ÿฅˆ", // 2nd Place Medal "๐Ÿฅ‰", // 3rd Place Medal "๐Ÿ’ฐ", // Money Bag "๐Ÿ’ธ", // Money with Wings "๐Ÿ’ต", // Dollar Banknote "๐Ÿ’ด", // Yen Banknote "๐Ÿ’ถ", // Euro Banknote "๐Ÿ’ท", // Pound Banknote "๐Ÿ’ฏ", // Hundred Points "๐Ÿ“ฑ", // Mobile Phone "๐Ÿ’ป", // Laptop "โŒจ๏ธ", // Keyboard "๐Ÿ–ฅ๏ธ", // Desktop Computer "๐Ÿ”’", // Locked "๐Ÿ”“", // Unlocked // Food & Drink "๐Ÿ•", // Pizza "๐Ÿ”", // Hamburger "๐Ÿฆ", // Ice Cream "๐Ÿฉ", // Doughnut "๐Ÿบ", // Beer Mug "๐Ÿท", // Wine Glass "โ˜•", // Hot Beverage // Nature & Weather "๐ŸŒˆ", // Rainbow "๐ŸŒž", // Sun with Face "๐ŸŒ‘", // New Moon "๐ŸŒ’", // Waxing Crescent Moon "๐ŸŒ“", // First Quarter Moon "๐ŸŒ”", // Waxing Gibbous Moon "๐ŸŒ•", // Full Moon "๐ŸŒ–", // Waning Gibbous Moon "๐ŸŒ—", // Last Quarter Moon "๐ŸŒ˜", // Waning Crescent Moon "๐ŸŒ™", // Crescent Moon "โญ", // Star "๐ŸŒŸ", // Glowing Star "โšก", // High Voltage "โ„๏ธ", // Snowflake "๐Ÿ”ฅ", // Fire "๐Ÿ’ง", // Droplet "๐ŸŒŠ", // Water Wave // Animals "๐Ÿฑ", // Cat Face "๐Ÿถ", // Dog Face "๐ŸฆŠ", // Fox "๐Ÿผ", // Panda "๐Ÿฆ", // Lion "๐Ÿฌ", // Dolphin "๐Ÿฆ„", // Unicorn // Symbols & Special "โค๏ธ", // Red Heart "๐Ÿงก", // Orange Heart "๐Ÿ’š", // Green Heart "๐Ÿ’™", // Blue Heart "๐Ÿ’œ", // Purple Heart "๐Ÿš€", // Rocket "๐Ÿ‘€", // Eyes "๐Ÿ’€", // Skull "๐Ÿฅน", // Face Holding Back Tears "๐Ÿ", // Snake "๐Ÿ‰", // Dragon "๐Ÿฒ", // Dragon Face "๐Ÿง™โ€โ™‚๏ธ", // Wizard "๐Ÿช„", // Magic Wand "๐Ÿดโ€โ˜ ๏ธ", // Pirate Flag "๐Ÿฆ…", // Eagle (often associated with pirates) "๐Ÿฆœ", // Parrot (pirate symbol) "๐Ÿ’ป", // Laptop (hacker symbol) "๐Ÿ•ถ๏ธ", // Sunglasses (cool guy symbol) "๐Ÿง‘โ€๐Ÿ’ป", // Technologist "๐Ÿ‘จโ€๐Ÿ’ป", // Man Technologist "๐Ÿ‘ฉโ€๐Ÿ’ป", // Woman Technologist "๐Ÿ•ต๏ธ", // Detective "๐Ÿ•ต๏ธโ€โ™‚๏ธ", // Man Detective "๐Ÿ•ต๏ธโ€โ™€๏ธ", // Woman Detective "๐Ÿ–ฅ๏ธ", // Desktop Computer "โŒจ๏ธ", // Keyboard "๐Ÿ–ฑ๏ธ", // Computer Mouse "๐Ÿ•น๏ธ", // Joystick "๐Ÿ“ฑ", // Mobile Phone "๐Ÿ“ฒ", // Mobile Phone with Arrow "๐Ÿ”“", // Unlocked (hacker symbol) "๐Ÿ”‘", // Key (hacker symbol) "๐Ÿ—๏ธ", // Old Key (hacker symbol) "๐Ÿ›ก๏ธ", // Shield (hacker symbol) "โš”๏ธ", // Crossed Swords (hacker symbol) "๐Ÿงฌ", // DNA (hacker symbol) "๐Ÿงซ", // Petri Dish (hacker symbol) "๐Ÿงช", // Test Tube (hacker symbol) "๐Ÿ› ๏ธ", // Hammer and Wrench (hacker symbol) "โš™๏ธ", // Gear (hacker symbol) "๐Ÿงฐ", // Toolbox (hacker symbol) "๐Ÿงฒ", // Magnet (hacker symbol) "๐Ÿ’ฃ", // Bomb (hacker symbol) "๐Ÿ•ณ๏ธ", // Hole (hacker symbol) "๐Ÿ“ก", // Satellite Antenna (hacker symbol) "๐Ÿ›ฐ๏ธ", // Satellite (hacker symbol) "๐Ÿ“ž", // Telephone Receiver (hacker symbol) "โ˜Ž๏ธ", // Telephone (hacker symbol) "๐Ÿ“Ÿ", // Pager (hacker symbol) "๐Ÿ“ ", // Fax Machine (hacker symbol) "๐Ÿ”Œ", // Electric Plug (hacker symbol) "๐Ÿ’ก", // Light Bulb (hacker symbol) "๐Ÿ”ฆ", // Flashlight (hacker symbol) "๐Ÿ•ฏ๏ธ", // Candle (hacker symbol) "๐Ÿ—ž๏ธ", // Rolled-Up Newspaper (hacker symbol) "๐Ÿ“œ", // Scroll (hacker symbol) "๐Ÿ“ƒ", // Page with Curl (hacker symbol) "๐Ÿ“„", // Page Facing Up (hacker symbol) "๐Ÿ“‘", // Bookmark Tabs (hacker symbol) "๐Ÿ“Š", // Bar Chart (hacker symbol) "๐Ÿ“ˆ", // Chart Increasing (hacker symbol) "๐Ÿ“‰", // Chart Decreasing (hacker symbol) "๐Ÿ—‚๏ธ", // Card Index Dividers (hacker symbol) "๐Ÿ—ƒ๏ธ", // Card File Box (hacker symbol) "๐Ÿ—„๏ธ", // File Cabinet (hacker symbol) "๐Ÿ—‘๏ธ", // Wastebasket (hacker symbol) "๐Ÿ›ข๏ธ", // Oil Drum (hacker symbol) "๐Ÿ›Ž๏ธ", // Bellhop Bell (hacker symbol) "๐Ÿงณ", // Luggage (hacker symbol) "๐Ÿ›Œ", // Person in Bed (hacker symbol) "๐Ÿ›๏ธ", // Bed (hacker symbol) "๐Ÿ›‹๏ธ", // Couch and Lamp (hacker symbol) "๐Ÿช‘", // Chair (hacker symbol) "๐Ÿšช", // Door (hacker symbol) "๐Ÿงด", // Lotion Bottle (hacker symbol) "๐Ÿงท", // Safety Pin (hacker symbol) "๐Ÿงน", // Broom (hacker symbol) "๐Ÿงบ", // Basket (hacker symbol) "๐Ÿงป", // Roll of Paper (hacker symbol) "๐Ÿงผ", // Soap (hacker symbol) "๐Ÿงฝ", // Sponge (hacker symbol) "๐Ÿงฏ", // Fire Extinguisher (hacker symbol) "๐Ÿ›’", // Shopping Cart (hacker symbol) "๐Ÿšฌ", // Cigarette (hacker symbol) "โšฐ๏ธ", // Coffin (hacker symbol) "โšฑ๏ธ", // Funeral Urn (hacker symbol) "๐Ÿ—ฟ", // Moai (hacker symbol) "๐Ÿ›‚", // Passport Control (hacker symbol) "๐Ÿ›ƒ", // Customs (hacker symbol) "๐Ÿ›„", // Baggage Claim (hacker symbol) "๐Ÿ›…", // Left Luggage (hacker symbol) "๐Ÿšน", // Men's Room (hacker symbol) "๐Ÿšบ", // Women's Room (hacker symbol) "๐Ÿšผ", // Baby Symbol (hacker symbol) "๐Ÿšป", // Restroom (hacker symbol) "๐Ÿšฎ", // Litter in Bin Sign (hacker symbol) "๐Ÿšฐ", // Potable Water (hacker symbol) "๐Ÿšพ", // Water Closet (hacker symbol) "๐Ÿšญ", // No Smoking (hacker symbol) "๐Ÿšฏ", // No Littering (hacker symbol) "๐Ÿšฑ", // Non-Potable Water (hacker symbol) // Additional Smileys & Emotion "๐Ÿ˜Š", // Smiling Face with Smiling Eyes "๐Ÿ˜‡", // Smiling Face with Halo "๐Ÿ™‚", // Slightly Smiling Face "๐Ÿ™ƒ", // Upside-Down Face "๐Ÿ˜‰", // Winking Face "๐Ÿ˜Œ", // Relieved Face "๐Ÿ˜", // Smiling Face with Heart-Eyes "๐Ÿฅฐ", // Smiling Face with Hearts "๐Ÿ˜˜", // Face Blowing a Kiss "๐Ÿ˜—", // Kissing Face "๐Ÿ˜™", // Kissing Face with Smiling Eyes "๐Ÿ˜š", // Kissing Face with Closed Eyes "๐Ÿ˜‹", // Face Savoring Food "๐Ÿ˜›", // Face with Tongue "๐Ÿ˜", // Squinting Face with Tongue "๐Ÿ˜œ", // Winking Face with Tongue "๐Ÿคช", // Zany Face // Additional People & Body "๐Ÿง‘โ€๐Ÿš€", // Astronaut "๐Ÿ‘จโ€๐Ÿš€", // Man Astronaut "๐Ÿ‘ฉโ€๐Ÿš€", // Woman Astronaut "๐Ÿง‘โ€๐Ÿ”ฌ", // Scientist "๐Ÿ‘จโ€๐Ÿ”ฌ", // Man Scientist "๐Ÿ‘ฉโ€๐Ÿ”ฌ", // Woman Scientist "๐Ÿง‘โ€โš•๏ธ", // Health Worker "๐Ÿ‘จโ€โš•๏ธ", // Man Health Worker "๐Ÿ‘ฉโ€โš•๏ธ", // Woman Health Worker "๐Ÿง‘โ€๐Ÿ”ง", // Mechanic "๐Ÿ‘จโ€๐Ÿ”ง", // Man Mechanic "๐Ÿ‘ฉโ€๐Ÿ”ง", // Woman Mechanic "๐Ÿง‘โ€๐Ÿš’", // Firefighter "๐Ÿ‘จโ€๐Ÿš’", // Man Firefighter "๐Ÿ‘ฉโ€๐Ÿš’", // Woman Firefighter // Additional Animals & Nature "๐Ÿฆ’", // Giraffe "๐Ÿฆ“", // Zebra "๐Ÿฆฌ", // Bison "๐Ÿฆ™", // Llama "๐Ÿฆ˜", // Kangaroo "๐Ÿฆฅ", // Sloth "๐Ÿฆฆ", // Otter "๐Ÿฆก", // Badger "๐Ÿฆ”", // Hedgehog "๐Ÿฆ", // Raccoon "๐Ÿฟ๏ธ", // Chipmunk "๐Ÿฆซ", // Beaver "๐ŸฆŽ", // Lizard "๐ŸŠ", // Crocodile "๐Ÿข", // Turtle "๐Ÿฆ•", // Sauropod "๐Ÿฆ–", // T-Rex "๐Ÿ‹", // Whale "๐Ÿฌ", // Dolphin "๐Ÿฆญ", // Seal // Additional Food & Drink "๐Ÿฅž", // Pancakes "๐Ÿง‡", // Waffle "๐Ÿง€", // Cheese Wedge "๐Ÿ–", // Meat on Bone "๐Ÿ—", // Poultry Leg "๐Ÿฅฉ", // Cut of Meat "๐Ÿฅ“", // Bacon "๐Ÿ”", // Hamburger "๐ŸŸ", // French Fries "๐Ÿ•", // Pizza "๐ŸŒญ", // Hot Dog "๐Ÿฅช", // Sandwich "๐ŸŒฎ", // Taco "๐ŸŒฏ", // Burrito "๐Ÿฅ™", // Stuffed Flatbread "๐Ÿง†", // Falafel "๐Ÿฅš", // Egg "๐Ÿณ", // Cooking "๐Ÿฅ˜", // Shallow Pan of Food "๐Ÿฒ", // Pot of Food // Additional Travel & Places "๐Ÿ™๏ธ", // Cityscape "๐ŸŒ†", // Cityscape at Dusk "๐ŸŒ‡", // Sunset "๐ŸŒƒ", // Night with Stars "๐ŸŒ‰", // Bridge at Night "๐Ÿž๏ธ", // National Park "๐Ÿœ๏ธ", // Desert "๐Ÿ๏ธ", // Desert Island "๐Ÿ–๏ธ", // Beach with Umbrella "โ›ฐ๏ธ", // Mountain "๐Ÿ”๏ธ", // Snow-Capped Mountain "๐ŸŒ‹", // Volcano "๐Ÿ—ป", // Mount Fuji "๐Ÿ ", // House "๐Ÿก", // House with Garden "๐Ÿข", // Office Building "๐Ÿฃ", // Japanese Post Office "๐Ÿค", // Post Office "๐Ÿฅ", // Hospital "๐Ÿฆ", // Bank // Additional Flags "๐Ÿ‡บ๐Ÿ‡ธ", // United States "๐Ÿ‡ฌ๐Ÿ‡ง", // United Kingdom "๐Ÿ‡จ๐Ÿ‡ฆ", // Canada "๐Ÿ‡ฏ๐Ÿ‡ต", // Japan "๐Ÿ‡ฉ๐Ÿ‡ช", // Germany "๐Ÿ‡ซ๐Ÿ‡ท", // France "๐Ÿ‡ฎ๐Ÿ‡น", // Italy "๐Ÿ‡ช๐Ÿ‡ธ", // Spain "๐Ÿ‡ท๐Ÿ‡บ", // Russia "๐Ÿ‡จ๐Ÿ‡ณ", // China "๐Ÿ‡ฎ๐Ÿ‡ณ", // India "๐Ÿ‡ง๐Ÿ‡ท", // Brazil "๐Ÿ‡ฆ๐Ÿ‡บ", // Australia "๐Ÿ‡ฒ๐Ÿ‡ฝ", // Mexico "๐Ÿ‡ฐ๐Ÿ‡ท", // South Korea "๐Ÿ‡ฟ๐Ÿ‡ฆ", // South Africa "๐Ÿ‡ธ๐Ÿ‡ช", // Sweden "๐Ÿ‡ณ๐Ÿ‡ด", // Norway "๐Ÿ‡ณ๐Ÿ‡ฟ", // New Zealand "๐Ÿ‡ฎ๐Ÿ‡ช", // Ireland ]; // Define emoji categories with specific emojis for each category window.emojiLibrary.EMOJIS = { nature: ["๐ŸŒˆ", "๐ŸŒž", "๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜", "๐ŸฆŠ", "๐Ÿฆ", "๐Ÿฏ", "๐Ÿฎ", "๐Ÿท", "๐Ÿธ", "๐Ÿต", "๐Ÿ”", "๐Ÿง", "๐Ÿฆ", "๐Ÿค", "๐Ÿฆ†", "๐Ÿฆ…", "๐Ÿฆ‰", "๐Ÿฆ‡", "๐Ÿบ", "๐Ÿ—", "๐Ÿด", "๐Ÿฆ„", "๐Ÿ", "๐Ÿ›", "๐Ÿฆ‹", "๐ŸŒ", "๐Ÿž", "๐Ÿœ", "๐Ÿ•ท๏ธ", "๐Ÿฆ‚", "๐ŸฆŸ", "๐Ÿฆ ", "๐Ÿชฑ"], mystical: ["๐Ÿง™", "๐Ÿง™โ€โ™‚๏ธ", "๐Ÿง™โ€โ™€๏ธ", "๐Ÿงš", "๐Ÿงšโ€โ™‚๏ธ", "๐Ÿงšโ€โ™€๏ธ", "๐Ÿง›", "๐Ÿง›โ€โ™‚๏ธ", "๐Ÿง›โ€โ™€๏ธ", "๐Ÿงœ", "๐Ÿงœโ€โ™‚๏ธ", "๐Ÿงœโ€โ™€๏ธ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿฒ", "๐Ÿ”ฎ", "๐Ÿ", "๐Ÿ‰", "๐Ÿฆ„", "โš—๏ธ", "๐Ÿ”ฏ", "๐Ÿ”ฑ", "โšœ๏ธ", "โœจ", "๐ŸŒ ", "๐ŸŒ‹", "๐Ÿ’Ž", "๐Ÿฉธ"], faces_people: ["๐Ÿ˜€", "๐Ÿ˜", "๐Ÿ˜‚", "๐Ÿคฃ", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜…", "๐Ÿ˜†", "๐Ÿ˜‰", "๐Ÿ˜Š", "๐Ÿ˜‹", "๐Ÿ˜Ž", "๐Ÿ˜", "๐Ÿ˜˜", "๐Ÿฅฐ", "๐Ÿ˜—", "๐Ÿ˜™", "๐Ÿ˜š", "๐Ÿ™‚", "๐Ÿค—", "๐Ÿคฉ", "๐Ÿค”", "๐Ÿคจ", "๐Ÿ˜", "๐Ÿ˜‘", "๐Ÿ˜ถ", "๐Ÿ™„", "๐Ÿ˜", "๐Ÿ˜ฃ", "๐Ÿ˜ฅ", "๐Ÿ˜ฎ", "๐Ÿค", "๐Ÿ˜ฏ", "๐Ÿ˜ช", "๐Ÿ˜ซ", "๐Ÿ˜ด", "๐Ÿ˜Œ", "๐Ÿ˜›", "๐Ÿ˜œ", "๐Ÿ˜", "๐Ÿคค", "๐Ÿ˜’", "๐Ÿ˜“", "๐Ÿ˜”", "๐Ÿ˜•", "๐Ÿ™ƒ", "๐Ÿค‘", "๐Ÿ˜ฒ", "๐Ÿ™", "๐Ÿ˜–", "๐Ÿ˜ž", "๐Ÿ˜Ÿ", "๐Ÿ˜ค", "๐Ÿ˜ข", "๐Ÿ˜ญ", "๐Ÿ˜ง", "๐Ÿ˜จ", "๐Ÿ˜ฉ", "๐Ÿคฏ", "๐Ÿ˜ฑ", "๐Ÿ˜ณ", "๐Ÿฅต", "๐Ÿฅถ", "๐Ÿ˜ก", "๐Ÿ˜ ", "๐Ÿคฌ", "๐Ÿ˜ท", "๐Ÿค’", "๐Ÿค•", "๐Ÿคข", "๐Ÿคฎ", "๐Ÿคง", "๐Ÿ˜‡", "๐Ÿฅณ", "๐Ÿฅด", "๐Ÿฅบ", "๐Ÿง", "๐Ÿฅฑ", "๐Ÿง "], gestures: ["๐Ÿ‘", "๐Ÿ‘Ž", "๐Ÿ‘Œ", "โœŒ๏ธ", "๐Ÿคž", "๐ŸคŸ", "๐Ÿค˜", "๐Ÿค™", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘†", "๐Ÿ‘‡", "๐Ÿ–•", "โ˜๏ธ", "โœ‹", "๐Ÿคš", "๐Ÿ–๏ธ", "๐Ÿ––", "๐Ÿ‘‹", "๐Ÿค", "๐Ÿ‘", "๐Ÿ™Œ", "๐Ÿ‘", "๐Ÿค", "๐Ÿ™"], animals_nature: ["๐ŸฆŠ", "๐Ÿฆ", "๐Ÿฏ", "๐Ÿฎ", "๐Ÿท", "๐Ÿธ", "๐Ÿต", "๐Ÿ”", "๐Ÿง", "๐Ÿฆ", "๐Ÿค", "๐Ÿฆ†", "๐Ÿฆ…", "๐Ÿฆ‰", "๐Ÿฆ‡", "๐Ÿบ", "๐Ÿ—", "๐Ÿด", "๐Ÿ", "๐Ÿ›", "๐Ÿฆ‹", "๐ŸŒ", "๐Ÿž", "๐Ÿœ", "๐Ÿ•ท๏ธ", "๐Ÿฆ‚", "๐Ÿ", "๐Ÿฆจ", "๐Ÿฆฉ", "๐Ÿฆซ", "๐Ÿฆฌ", "๐Ÿปโ€โ„๏ธ", "๐Ÿผ", "๐Ÿจ", "๐Ÿ•", "๐Ÿถ", "๐Ÿฉ", "๐Ÿˆ", "๐Ÿฑ"], activities_sports: ["โšฝ", "๐Ÿ€", "๐Ÿˆ", "๐Ÿ", "๐Ÿ‰", "๐ŸŽพ", "๐ŸŽณ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿธ", "๐ŸฅŠ", "๐Ÿฅ‹", "๐Ÿฅ…", "๐Ÿคพ", "๐ŸŽฟ", "๐Ÿ„", "๐Ÿ‚", "๐ŸŠ", "๐Ÿ‹๏ธ", "๐Ÿคผ", "๐Ÿคธ", "๐Ÿคบ", "๐Ÿคฝ", "๐Ÿคน", "๐ŸŽฏ", "๐ŸŽฑ", "๐ŸŽฝ", "๐Ÿšด", "๐Ÿšต"], technology_objects: ["๐Ÿ’ป", "โŒจ๏ธ", "๐Ÿ–ฅ๏ธ", "๐Ÿ–ฑ๏ธ", "๐Ÿ–จ๏ธ", "๐Ÿ“ฑ", "โ˜Ž๏ธ", "๐Ÿ“ž", "๐Ÿ“Ÿ", "๐Ÿ“ ", "๐Ÿ“บ", "๐Ÿ“ป", "๐ŸŽ™๏ธ", "๐ŸŽš๏ธ", "๐ŸŽ›๏ธ", "๐Ÿงญ", "๐Ÿ“ก", "๐Ÿ”‹", "๐Ÿ”Œ", "๐Ÿ’ก", "๐Ÿ›ข๏ธ", "๐Ÿ’ธ", "๐Ÿ’ต", "๐Ÿ’ณ", "๐Ÿ”‘", "๐Ÿ”“", "๐Ÿ”’"], mystical_fantasy: ["๐Ÿง™", "๐Ÿงš", "๐Ÿง›", "๐Ÿงœ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿ”ฎ", "๐Ÿช„", "๐Ÿ‰", "๐Ÿฒ", "๐Ÿฆ„"], nature_weather: ["๐ŸŒˆ", "๐ŸŒž", "๐ŸŒ™", "โญ", "๐ŸŒŸ", "โšก", "โ„๏ธ", "๐Ÿ”ฅ", "๐Ÿ’ง", "๐ŸŒŠ", "๐ŸŒช๏ธ", "๐ŸŒ‹"], symbols: ["โค๏ธ", "๐Ÿ’›", "๐Ÿ’š", "๐Ÿ’™", "๐Ÿ’œ", "๐Ÿ’”", "๐Ÿ’•", "๐Ÿ’ž", "๐Ÿ’“", "๐Ÿ’—", "๐Ÿ’–", "๐Ÿ’˜", "๐Ÿ’", "๐Ÿ’Ÿ", "๐Ÿ’ข", "๐Ÿ’ฃ", "๐Ÿ’ฅ", "๐Ÿ’ฆ", "๐Ÿ’จ", "๐Ÿ’ฉ", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ’ ", "๐Ÿ’ฎ"], flags: ["๐Ÿ", "๐Ÿšฉ", "๐ŸŽŒ", "๐Ÿด", "๐Ÿณ๏ธ", "๐Ÿณ๏ธโ€๐ŸŒˆ", "๐Ÿณ๏ธโ€โšง๏ธ", "๐Ÿดโ€โ˜ ๏ธ", "๐Ÿ‡บ๐Ÿ‡ธ", "๐Ÿ‡จ๐Ÿ‡ฆ", "๐Ÿ‡ฌ๐Ÿ‡ง", "๐Ÿ‡ฉ๐Ÿ‡ช", "๐Ÿ‡ซ๐Ÿ‡ท", "๐Ÿ‡ฎ๐Ÿ‡น", "๐Ÿ‡ฏ๐Ÿ‡ต", "๐Ÿ‡ฐ๐Ÿ‡ท", "๐Ÿ‡ท๐Ÿ‡บ", "๐Ÿ‡จ๐Ÿ‡ณ", "๐Ÿ‡ฎ๐Ÿ‡ณ", "๐Ÿ‡ง๐Ÿ‡ท", "๐Ÿ‡ฆ๐Ÿ‡บ", "๐Ÿ‡ช๐Ÿ‡ธ", "๐Ÿ‡ณ๐Ÿ‡ฑ", "๐Ÿ‡ธ๐Ÿ‡ช"] }; // Define standard emoji categories window.emojiLibrary.CATEGORIES = [ { id: 'all', name: 'All Emojis', icon: '๐Ÿ”' }, { id: 'faces_people', name: 'Faces & People', icon: '๐Ÿ˜€' }, { id: 'gestures', name: 'Gestures', icon: '๐Ÿ‘' }, { id: 'animals_nature', name: 'Animals & Nature', icon: '๐ŸฆŠ' }, { id: 'activities_sports', name: 'Activities & Sports', icon: 'โšฝ' }, { id: 'technology_objects', name: 'Tech & Objects', icon: '๐Ÿ’ป' }, { id: 'mystical_fantasy', name: 'Mystical & Fantasy', icon: '๐Ÿง™' }, { id: 'nature_weather', name: 'Nature & Weather', icon: '๐ŸŒˆ' }, { id: 'symbols', name: 'Symbols', icon: 'โค๏ธ' }, { id: 'flags', name: 'Flags', icon: '๐Ÿ' } ]; // Function to render emoji grid with categories window.emojiLibrary.renderEmojiGrid = function(containerId, onEmojiSelect, filteredList) { console.log('Rendering emoji grid to:', containerId); // Get container by ID const container = document.getElementById(containerId); if (!container) { console.error('Container not found:', containerId); return; } // Clear container container.innerHTML = ''; // Add header with instruction message const emojiHeader = document.createElement('div'); emojiHeader.className = 'emoji-header'; emojiHeader.innerHTML = '

Choose an Emoji

Click any emoji to copy your hidden message

'; container.appendChild(emojiHeader); // Create category tabs const categoryTabs = document.createElement('div'); categoryTabs.className = 'emoji-category-tabs'; // Add category tabs window.emojiLibrary.CATEGORIES.forEach(category => { const tab = document.createElement('button'); tab.className = 'emoji-category-tab'; if (category.id === 'all') { tab.classList.add('active'); } tab.setAttribute('data-category', category.id); tab.innerHTML = `${category.icon} ${category.name}`; categoryTabs.appendChild(tab); }); container.appendChild(categoryTabs); // Create emoji grid with enforced styling const gridContainer = document.createElement('div'); gridContainer.className = 'emoji-grid'; // Get the active category let activeCategory = 'all'; const activeCategoryTab = container.querySelector('.emoji-category-tab.active'); if (activeCategoryTab) { activeCategory = activeCategoryTab.getAttribute('data-category'); } // Determine which emojis to show based on category and filter let emojisToShow = []; if (filteredList && filteredList.length > 0) { // If we have a filtered list (from search), use that emojisToShow = filteredList; } else if (activeCategory === 'all') { // For 'all' category, combine all emojis from the categories Object.values(window.emojiLibrary.EMOJIS).forEach(categoryEmojis => { emojisToShow = [...emojisToShow, ...categoryEmojis]; }); } else if (window.emojiLibrary.EMOJIS[activeCategory]) { // For specific category, use emojis from that category emojisToShow = window.emojiLibrary.EMOJIS[activeCategory]; } console.log(`Adding ${emojisToShow.length} emojis to grid for category: ${activeCategory}`); // Add emojis to grid with enforced styling emojisToShow.forEach(emoji => { const emojiButton = document.createElement('button'); emojiButton.className = 'emoji-button'; emojiButton.textContent = emoji; // Use textContent for better emoji handling emojiButton.title = 'Click to encode with this emoji'; emojiButton.addEventListener('click', () => { if (typeof onEmojiSelect === 'function') { onEmojiSelect(emoji); // Add visual feedback when clicked emojiButton.style.backgroundColor = '#e6f7ff'; setTimeout(() => { emojiButton.style.backgroundColor = ''; }, 300); } }); gridContainer.appendChild(emojiButton); }); container.appendChild(gridContainer); console.log('Emoji grid rendering complete'); // Add event listeners to category tabs const categoryTabButtons = container.querySelectorAll('.emoji-category-tab'); categoryTabButtons.forEach(tab => { tab.addEventListener('click', () => { // Update active tab categoryTabButtons.forEach(t => t.classList.remove('active')); tab.classList.add('active'); // Re-render the emoji grid with the selected category const selectedCategory = tab.getAttribute('data-category'); console.log('Category selected:', selectedCategory); // Clear and recreate the grid container.removeChild(gridContainer); window.emojiLibrary.renderEmojiGrid(containerId, onEmojiSelect); }); }); // Debug info - add count display const countDisplay = document.createElement('div'); countDisplay.className = 'emoji-count'; countDisplay.textContent = `${emojisToShow.length} emojis available`; container.appendChild(countDisplay); };