// Emoji Library for P4RS3LT0NGV3 // Create namespace for emoji library window.emojiLibrary = {}; // 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) ]; // Function to render emoji grid 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 emoji grid with enforced styling const gridContainer = document.createElement('div'); gridContainer.className = 'emoji-grid'; // Force grid styling gridContainer.style.display = 'grid'; gridContainer.style.gridTemplateColumns = 'repeat(auto-fill, minmax(50px, 1fr))'; gridContainer.style.gap = '8px'; gridContainer.style.padding = '15px'; gridContainer.style.maxHeight = '300px'; gridContainer.style.overflowY = 'auto'; gridContainer.style.border = '1px solid #ccc'; gridContainer.style.borderRadius = '4px'; gridContainer.style.margin = '10px 0'; // Add a message showing we're displaying all emojis const fullLibraryNote = document.createElement('div'); fullLibraryNote.className = 'emoji-grid-note'; fullLibraryNote.innerHTML = ' Click an emoji to automatically copy your hidden message'; fullLibraryNote.style.padding = '10px'; fullLibraryNote.style.marginBottom = '10px'; fullLibraryNote.style.backgroundColor = 'rgba(0,0,0,0.05)'; fullLibraryNote.style.borderRadius = '4px'; fullLibraryNote.style.textAlign = 'center'; container.appendChild(fullLibraryNote); // Always use full emoji list - search removed // Use the provided filtered list if available, otherwise default to full list // This ensures we always show ALL emojis regardless of input state const emojisToShow = filteredList && filteredList.length > 0 ? filteredList : window.emojiLibrary.EMOJI_LIST; 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'; // Force button styling emojiButton.style.fontSize = '24px'; emojiButton.style.padding = '8px'; emojiButton.style.border = '1px solid #ddd'; emojiButton.style.borderRadius = '8px'; emojiButton.style.cursor = 'pointer'; emojiButton.style.backgroundColor = '#fff'; emojiButton.style.transition = 'transform 0.1s'; // Add hover effect emojiButton.onmouseover = function() { this.style.transform = 'scale(1.1)'; this.style.boxShadow = '0 0 5px rgba(0,0,0,0.2)'; }; emojiButton.onmouseout = function() { this.style.transform = 'scale(1)'; this.style.boxShadow = 'none'; }; emojiButton.addEventListener('click', () => { if (typeof onEmojiSelect === 'function') { onEmojiSelect(emoji); // Add visual feedback when clicked emojiButton.style.backgroundColor = '#e6f7ff'; setTimeout(() => { emojiButton.style.backgroundColor = '#fff'; }, 300); } }); gridContainer.appendChild(emojiButton); }); container.appendChild(gridContainer); console.log('Emoji grid rendering complete'); // Force container to be visible container.style.display = 'block !important'; container.style.visibility = 'visible !important'; // Debug info - add count display const countDisplay = document.createElement('div'); countDisplay.className = 'emoji-count'; countDisplay.textContent = `${emojisToShow.length} emojis available`; container.appendChild(countDisplay); };