// Emoji Library for P4RS3LT0NGV3 // Create namespace for emoji library window.emojiLibrary = {}; // 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 "๐ŸŒ™", // 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 standard emoji categories using the Unicode CLDR categorization window.emojiLibrary.CATEGORIES = [ { id: 'all', name: 'All Emojis', icon: '๐Ÿ”' }, { id: 'smileys', name: 'Smileys & Emotion', icon: '๐Ÿ˜€' }, { id: 'people', name: 'People & Body', icon: '๐Ÿ‘‹' }, { id: 'animals', name: 'Animals & Nature', icon: '๐Ÿต' }, { id: 'food', name: 'Food & Drink', icon: '๐ŸŽ' }, { id: 'travel', name: 'Travel & Places', icon: '๐Ÿš—' }, { id: 'activities', name: 'Activities', icon: 'โšฝ' }, { id: 'objects', name: 'Objects', 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 = ''; // Create grid note const gridNote = document.createElement('div'); gridNote.className = 'emoji-grid-note'; gridNote.innerHTML = ' Click any emoji to automatically copy your hidden message'; container.appendChild(gridNote); // 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'; // Combine all emojis for a larger selection const allEmojis = [...window.emojiLibrary.EMOJI_LIST, ...window.emojiLibrary.ADDITIONAL_EMOJIS]; // Use the provided filtered list if available, otherwise default to full list const emojisToShow = filteredList && filteredList.length > 0 ? filteredList : allEmojis; console.log(`Adding ${emojisToShow.length} emojis to grid`); // 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'); // Helper function to categorize emojis using standard Unicode ranges function categorizeEmoji(emoji) { // Get the code point of the emoji const code = emoji.codePointAt(0); // Smileys & Emotion (faces, emotions, hearts) if ((code >= 0x1F600 && code <= 0x1F64F) || // Emoticons (code >= 0x1F910 && code <= 0x1F92F) || // Face-hand (code >= 0x1F970 && code <= 0x1F97A) || // Faces (code >= 0x1F9D0 && code <= 0x1F9DF) || // Faces (code >= 0x2763 && code <= 0x2764) || // Hearts (code >= 0x1F48B && code <= 0x1F49F) || // Hearts and love (code >= 0x1F493 && code <= 0x1F49F) || // Hearts emoji === '๐Ÿ˜€' || emoji === '๐Ÿ˜ƒ' || emoji === '๐Ÿ˜„' || emoji === '๐Ÿ˜' || emoji === '๐Ÿ˜†' || emoji === '๐Ÿ˜…' || emoji === '๐Ÿ˜‚' || emoji === '๐Ÿคฃ' || emoji === 'โ˜บ๏ธ' || emoji === '๐Ÿ˜Š') { return 'smileys'; } // People & Body (people, hands, body parts) if ((code >= 0x1F466 && code <= 0x1F487) || // People (code >= 0x1F9D1 && code <= 0x1F9DD) || // People (code >= 0x1F468 && code <= 0x1F469) || // Man/Woman (code >= 0x1F46E && code <= 0x1F9CF) || // People roles (code >= 0x1F44B && code <= 0x1F450) || // Hands (code >= 0x1F918 && code <= 0x1F91F) || // Hand symbols (code >= 0x1F926 && code <= 0x1F937) || // People gestures emoji.includes('๐Ÿ‘จ') || emoji.includes('๐Ÿ‘ฉ') || emoji.includes('๐Ÿง‘') || emoji.includes('๐Ÿ‘ถ') || emoji.includes('๐Ÿ‘ฆ') || emoji.includes('๐Ÿ‘ง') || emoji.includes('๐Ÿง’') || emoji.includes('๐Ÿ‘ด') || emoji.includes('๐Ÿ‘ต') || emoji.includes('๐Ÿง“') || emoji.includes('๐Ÿ‘ฎ') || emoji.includes('๐Ÿ‘ท')) { return 'people'; } // Animals & Nature (animals, plants, weather) if ((code >= 0x1F400 && code <= 0x1F43F) || // Animals (code >= 0x1F980 && code <= 0x1F9AF) || // Animals (code >= 0x1F330 && code <= 0x1F33F) || // Plants (code >= 0x1F340 && code <= 0x1F37F) || // More plants (code >= 0x1F300 && code <= 0x1F32C) || // Weather emoji === '๐Ÿต' || emoji === '๐Ÿ’' || emoji === '๐Ÿฆ' || emoji === '๐Ÿฆง' || emoji === '๐Ÿถ' || emoji === '๐Ÿ•' || emoji === '๐Ÿฆฎ' || emoji === '๐Ÿฉ' || emoji === '๐Ÿบ' || emoji === '๐ŸฆŠ' || emoji === '๐Ÿฆ' || emoji === '๐Ÿฑ' || emoji === '๐ŸŒฑ' || emoji === '๐ŸŒฒ' || emoji === '๐ŸŒณ' || emoji === '๐ŸŒด' || emoji === '๐ŸŒต' || emoji === '๐ŸŒท' || emoji === '๐ŸŒธ' || emoji === '๐ŸŒน') { return 'animals'; } // Food & Drink if ((code >= 0x1F32D && code <= 0x1F37F) || // Food items (code >= 0x1F95F && code <= 0x1F9AA) || // More food (code >= 0x1F950 && code <= 0x1F96F) || // More food emoji === '๐Ÿ‡' || emoji === '๐Ÿˆ' || emoji === '๐Ÿ‰' || emoji === '๐ŸŠ' || emoji === '๐Ÿ‹' || emoji === '๐ŸŒ' || emoji === '๐Ÿ' || emoji === '๐Ÿฅญ' || emoji === '๐ŸŽ' || emoji === '๐Ÿ' || emoji === '๐Ÿ' || emoji === '๐Ÿ‘' || emoji === '๐Ÿ’' || emoji === '๐Ÿ“' || emoji === '๐Ÿฅ' || emoji === '๐Ÿ…' || emoji === '๐Ÿฅฅ' || emoji === '๐Ÿฅ‘' || emoji === '๐Ÿ†' || emoji === '๐Ÿฅ”') { return 'food'; } // Travel & Places (transportation, buildings, maps) if ((code >= 0x1F680 && code <= 0x1F6FF) || // Transport (code >= 0x1F30D && code <= 0x1F32C) || // Earth/Weather (code >= 0x1F3D7 && code <= 0x1F3DB) || // Buildings (code >= 0x1F3E0 && code <= 0x1F3F0) || // Buildings (code >= 0x26E9 && code <= 0x26F5) || // Buildings/Places emoji === '๐Ÿš—' || emoji === '๐Ÿš•' || emoji === '๐Ÿš™' || emoji === '๐ŸšŒ' || emoji === '๐ŸšŽ' || emoji === '๐ŸŽ๏ธ' || emoji === '๐Ÿš“' || emoji === '๐Ÿš‘' || emoji === '๐Ÿš’' || emoji === '๐Ÿš' || emoji === '๐Ÿ›ป' || emoji === '๐Ÿšš' || emoji === '๐Ÿš›' || emoji === '๐Ÿšœ' || emoji === '๐Ÿ›ต' || emoji === '๐Ÿ๏ธ' || emoji === '๐Ÿ›บ' || emoji === '๐Ÿšฒ' || emoji === '๐Ÿ›ด' || emoji === '๐Ÿš') { return 'travel'; } // Activities (sports, music, arts, hobbies) if ((code >= 0x1F380 && code <= 0x1F3A0) || // Events (code >= 0x1F3A3 && code <= 0x1F3BE) || // Sports (code >= 0x1F3BF && code <= 0x1F3C9) || // Sports (code >= 0x1F3CF && code <= 0x1F3D6) || // Sports (code >= 0x1F3F8 && code <= 0x1F3FF) || // Activities (code >= 0x1F93A && code <= 0x1F94F) || // Sports emoji === 'โšฝ' || emoji === 'โšพ' || emoji === '๐Ÿ€' || emoji === '๐Ÿ' || emoji === '๐Ÿˆ' || emoji === '๐Ÿ‰' || emoji === '๐ŸŽพ' || emoji === '๐Ÿฅ' || emoji === '๐ŸŽณ' || emoji === '๐Ÿ' || emoji === '๐Ÿ‘' || emoji === '๐Ÿ’' || emoji === '๐Ÿฅ' || emoji === '๐Ÿ“' || emoji === '๐Ÿธ' || emoji === '๐ŸฅŠ') { return 'activities'; } // Objects (household, office, tools) if ((code >= 0x1F4A1 && code <= 0x1F4CC) || // Office (code >= 0x1F4D0 && code <= 0x1F4F7) || // Office/Tools (code >= 0x1F4FF && code <= 0x1F53D) || // Various objects (code >= 0x1F56F && code <= 0x1F5A4) || // Objects (code >= 0x1F5D1 && code <= 0x1F5FF) || // Office objects (code >= 0x1F6D1 && code <= 0x1F6DF) || // Misc objects emoji === 'โŒš' || emoji === '๐Ÿ“ฑ' || emoji === '๐Ÿ“ฒ' || emoji === '๐Ÿ’ป' || emoji === 'โŒจ๏ธ' || emoji === '๐Ÿ–ฅ๏ธ' || emoji === '๐Ÿ–จ๏ธ' || emoji === '๐Ÿ–ฑ๏ธ' || emoji === '๐Ÿ–ฒ๏ธ' || emoji === '๐Ÿ•น๏ธ' || emoji === '๐Ÿ—œ๏ธ' || emoji === '๐Ÿ’ฝ' || emoji === '๐Ÿ’พ' || emoji === '๐Ÿ’ฟ' || emoji === '๐Ÿ“€' || emoji === '๐Ÿ“ผ') { return 'objects'; } // Symbols (punctuation, alphanum, geometric, etc) if ((code >= 0x1F300 && code <= 0x1F320) || // Various symbols (code >= 0x1F170 && code <= 0x1F251) || // Enclosed characters (code >= 0x1F523 && code <= 0x1F5FF) || // Symbols (code >= 0x2600 && code <= 0x26FF) || // Misc symbols (code >= 0x2700 && code <= 0x27BF) || // Dingbats (code >= 0x1F5FB && code <= 0x1F64F) || // Symbols (code >= 0x1F680 && code <= 0x1F6FF) || // Transport symbols emoji === '๐Ÿ’ฏ' || emoji === '๐Ÿ“›' || emoji === '๐Ÿ”ฐ' || emoji === 'โญ•' || emoji === 'โœ…' || emoji === 'โ˜‘๏ธ' || emoji === 'โœ”๏ธ' || emoji === 'โŒ' || emoji === 'โŽ' || emoji === 'โžฐ' || emoji === 'โžฟ' || emoji === 'ใ€ฝ๏ธ' || emoji === 'โœณ๏ธ' || emoji === 'โœด๏ธ' || emoji === 'โ‡๏ธ' || emoji === 'ยฉ๏ธ') { return 'symbols'; } // Flags (country flags, flag symbols) if ((code >= 0x1F1E6 && code <= 0x1F1FF) || // Regional indicators for flags emoji === '๐Ÿ' || emoji === '๐Ÿšฉ' || emoji === '๐ŸŽŒ' || emoji === '๐Ÿด' || emoji.includes('๐Ÿณ๏ธ') || // Flag variants emoji.includes('๐Ÿด') || // Flag variants // Check for country flags (pairs of regional indicators) (emoji.length >= 2 && emoji.codePointAt(0) >= 0x1F1E6 && emoji.codePointAt(0) <= 0x1F1FF && emoji.codePointAt(2) >= 0x1F1E6 && emoji.codePointAt(2) <= 0x1F1FF)) { return 'flags'; } // Default to 'all' if we can't categorize return 'all'; } // Add event listeners to category tabs with actual filtering document.querySelectorAll('.emoji-category-tab').forEach(tab => { tab.addEventListener('click', function() { // Remove active class from all tabs document.querySelectorAll('.emoji-category-tab').forEach(t => { t.classList.remove('active'); }); // Add active class to clicked tab this.classList.add('active'); const selectedCategory = this.getAttribute('data-category'); console.log('Selected category:', selectedCategory); // Get all emoji buttons const allEmojis = [...window.emojiLibrary.EMOJI_LIST, ...window.emojiLibrary.ADDITIONAL_EMOJIS]; // Filter emojis based on selected category let filteredEmojis = allEmojis; if (selectedCategory !== 'all') { filteredEmojis = allEmojis.filter(emoji => { const category = categorizeEmoji(emoji); console.log(`Emoji: ${emoji}, Category: ${category}`); return category === selectedCategory; }); } // Clear and rebuild the grid with filtered emojis const gridContainer = container.querySelector('.emoji-grid'); if (gridContainer) { // Clear existing emojis gridContainer.innerHTML = ''; // Add filtered emojis filteredEmojis.forEach(emoji => { const emojiButton = document.createElement('button'); emojiButton.className = 'emoji-button'; emojiButton.textContent = emoji; 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); }); // Update the count display const countDisplay = container.querySelector('.emoji-count'); if (countDisplay) { countDisplay.textContent = `${filteredEmojis.length} emojis available`; } } }); }); // Debug info - add count display const countDisplay = document.createElement('div'); countDisplay.className = 'emoji-count'; countDisplay.textContent = `${emojisToShow.length} emojis available`; container.appendChild(countDisplay); };