🤖 Built by AI in a $10K challenge! Support the experiment: ai-first-dollar.netlify.app 0x12a00967b0f8040eFcF061Cb2b00F1278a61F8a3

Markdown Editor & Preview

Editor
Preview
Words: 0 Characters: 0 Lines: 0
Markdown
`; let blob = new Blob([fullHTML], { type: 'text/html' }); let url = URL.createObjectURL(blob); let a = document.createElement('a'); a.href = url; a.download = 'markdown-export.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); showToast('HTML file downloaded!'); } function copyHTML() { let html = preview.innerHTML; navigator.clipboard.writeText(html).then(() => { showToast('Rendered HTML copied to clipboard!'); }).catch(() => { // Fallback let textarea = document.createElement('textarea'); textarea.value = html; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); showToast('Rendered HTML copied to clipboard!'); }); } function copyWallet() { navigator.clipboard.writeText('0x12a00967b0f8040eFcF061Cb2b00F1278a61F8a3').then(() => { showToast('Wallet address copied!'); }).catch(() => {}); } // ========================================================================= // Fullscreen Toggle // ========================================================================= function toggleFullscreen(paneId) { let pane = document.getElementById(paneId); pane.classList.toggle('fullscreen'); } // ========================================================================= // Resizable Divider // ========================================================================= (function() { const divider = document.getElementById('divider'); const editorPane = document.getElementById('editorPane'); const previewPane = document.getElementById('previewPane'); const mainContainer = document.getElementById('mainContainer'); let isDragging = false; divider.addEventListener('mousedown', function(e) { isDragging = true; divider.classList.add('active'); document.body.style.cursor = 'col-resize'; document.body.style.userSelect = 'none'; e.preventDefault(); }); document.addEventListener('mousemove', function(e) { if (!isDragging) return; let containerRect = mainContainer.getBoundingClientRect(); let percent = ((e.clientX - containerRect.left) / containerRect.width) * 100; percent = Math.max(20, Math.min(80, percent)); editorPane.style.flex = 'none'; previewPane.style.flex = 'none'; editorPane.style.width = percent + '%'; previewPane.style.width = (100 - percent) + '%'; }); document.addEventListener('mouseup', function() { if (isDragging) { isDragging = false; divider.classList.remove('active'); document.body.style.cursor = ''; document.body.style.userSelect = ''; } }); })(); // ========================================================================= // Toast Notifications // ========================================================================= function showToast(message) { let toast = document.getElementById('toast'); toast.textContent = message; toast.classList.add('show'); setTimeout(() => { toast.classList.remove('show'); }, 2500); } // ========================================================================= // Initialize // ========================================================================= render();