|
|
| document.addEventListener('DOMContentLoaded', function() { |
| |
| document.querySelectorAll('feature-card').forEach(card => { |
| feather.replace({ 'data-feather': card.shadowRoot.querySelector('[data-feather]') }); |
| }); |
|
|
| const inputText = document.getElementById('inputText'); |
| const generateBtn = document.getElementById('generateBtn'); |
| const downloadBtn = document.getElementById('downloadBtn'); |
| const outputCanvas = document.getElementById('outputCanvas'); |
| const showLines = document.getElementById('showLines'); |
| const fontSizeInput = document.getElementById('fontSize'); |
| const lineHeightInput = document.getElementById('lineHeight'); |
| const letterSpacingInput = document.getElementById('letterSpacing'); |
| |
| |
| if (fontSizeInput) { |
| fontSizeInput.addEventListener('input', updatePreview); |
| } |
| if (lineHeightInput) { |
| lineHeightInput.addEventListener('input', updatePreview); |
| } |
| if (letterSpacingInput) { |
| letterSpacingInput.addEventListener('input', updatePreview); |
| } |
|
|
| generateBtn.addEventListener('click', function() { |
| const text = inputText.value.trim(); |
| if (!text) { |
| outputCanvas.innerHTML = '<p class="text-gray-400">Please enter some text first</p>'; |
| return; |
| } |
| |
| |
| generateBtn.innerHTML = '<i data-feather="loader" class="animate-spin"></i> Generating...'; |
| feather.replace(); |
| |
| |
| setTimeout(() => { |
| const lines = text.split('\n'); |
| let html = ''; |
| |
| if (showLines.checked) { |
| html += '<div class="relative">'; |
| html += '<div class="absolute inset-0 bg-cyan-50 bg-opacity-20" style="background-image: linear-gradient(to bottom, transparent 95%, rgba(0,0,0,0.1) 95%); background-size: 100% 28px;"></div>'; |
| } |
| |
| html += '<p class="handwriting text-2xl leading-loose" style="white-space: pre-wrap;">'; |
| |
| for (const line of lines) { |
| if (line.trim() === '') { |
| html += '<br>'; |
| } else { |
| |
| const weightVariation = Math.random() * 0.4 - 0.2; |
| const sizeVariation = Math.random() * 0.4 - 0.2; |
| |
| html += `<span style="font-weight: ${400 + weightVariation * 100}; font-size: ${1 + sizeVariation}em">${line}</span>`; |
| } |
| html += '\n'; |
| } |
| |
| html += '</p>'; |
| |
| if (showLines.checked) { |
| html += '</div>'; |
| } |
| |
| outputCanvas.innerHTML = html; |
| |
| |
| generateBtn.innerHTML = '<i data-feather="pen-tool"></i> Generate'; |
| feather.replace(); |
| }, 1000); |
| }); |
| |
| downloadBtn.addEventListener('click', function() { |
| alert('In a real implementation, this would download the generated handwriting as an image or PDF.'); |
| }); |
| |
| |
| inputText.value = "Dear Diary,\n\nToday I discovered this amazing tool that turns my digital text into beautiful handwriting!\n\nIt's like magic ✨\n\nSincerely,\nMe"; |
| }); |