interface PickingState { activePickingType: 'DOM' | 'Image' | null; mouseMoveHandler: ((e: MouseEvent) => void) | null; clickHandler: ((e: MouseEvent) => void) | null; } export const injectDiscordButton = () => { window.addEventListener('DOMContentLoaded', function () { const inIframe = window.self !== window.top; if (inIframe) { return; } // Create Discord button if it doesn't exist if (document.querySelector('#mcp-discord-button')) { return; } const createDiscordButton = () => { // Check if already dismissed if (localStorage.getItem('discord-button-dismissed') === 'true') { return; } const container = document.createElement('div'); container.id = 'mcp-discord-button'; container.className = 'mcp-discord-container'; container.style.cssText = ` position: fixed; bottom: 16px; right: 16px; z-index: 1000000; max-width: 320px; `; container.innerHTML = `
🎉 Join Discord Community
💎 Get Premium FREE
🐛 Debug help & tutorials
🤝 Share workflows & tips
`; const closeButton = container.querySelector( '.mcp-discord-close' ) as HTMLElement; const card = container.querySelector('.mcp-discord-card') as HTMLElement; // Hover effects card.addEventListener('mouseenter', () => { card.style.transform = 'scale(1.05)'; card.style.boxShadow = '0 15px 35px rgba(79, 70, 229, 0.4)'; }); card.addEventListener('mouseleave', () => { card.style.transform = 'scale(1)'; card.style.boxShadow = '0 10px 25px rgba(79, 70, 229, 0.3)'; }); closeButton.addEventListener('mouseenter', () => { closeButton.style.background = '#374151'; }); closeButton.addEventListener('mouseleave', () => { closeButton.style.background = '#6b7280'; }); closeButton.addEventListener('click', e => { e.preventDefault(); e.stopPropagation(); container.remove(); localStorage.setItem('discord-button-dismissed', 'true'); }); document.body.appendChild(container); }; createDiscordButton(); }); };