(function() { var scriptElement = document.currentScript; // Extract the event ID from the script's src attribute var scriptSrc = scriptElement.src; var host = new URL(scriptSrc).origin; // Extract the event parameter from the script's src attribute var eventParam = scriptSrc.substring(scriptSrc.lastIndexOf('/') + 1); var width = scriptElement.getAttribute('width') || '100%'; var height = scriptElement.getAttribute('height') || 'auto'; var iframe = document.createElement('iframe'); iframe.src = host + '/' + eventParam + '?embed=yes'; iframe.style.width = width; iframe.style.height = height; // Add a class to easily permit overwriting the styles iframe.classList.add("nostr-embedded") const myCSSClass = ` .nostr-embedded { border: 2px solid #C9C9C9; border-radius: 10px; } @media (prefers-color-scheme: dark) { .nostr-embedded { border-color: #393939; } } `; const styleElement = document.createElement('style'); styleElement.textContent = myCSSClass; scriptElement.parentNode.insertBefore(styleElement, scriptElement.nextSibling); scriptElement.parentNode.insertBefore(iframe, scriptElement.nextSibling); // Listen for messages from the iframe window.addEventListener('message', function(event) { // Check if the 'height' attribute is explicitly set if (!scriptElement.hasAttribute('height')) { // Calculate the maximum height based on 50% of the viewport height var maxViewportHeight = window.innerHeight * 0.5; // Adjust the height of the iframe based on the received content height var receivedHeight = Math.min(event.data.height, maxViewportHeight); iframe.style.height = receivedHeight + 'px'; if (receivedHeight < event.data.height) { iframe.contentWindow.postMessage({showGradient: true}, '*'); } } // Check if dark mode is preferred const darkModeQuery = window.matchMedia('(prefers-color-scheme: dark)'); if (darkModeQuery.matches) { iframe.contentWindow.postMessage({setDarkMode: true}, '*'); } }); })();