📝 Markdown Editor (Live Preview & PDF Export)

📝 Markdown Editor — Live Preview & PDF Export

Editor mit Live-Vorschau, lokalem Speicher und PDF/HTML-Export.
Wörter: 0  |  Zeichen: 0  |  Zeilen: 0
🛡️ FSEK Registered · PACDI Framework
Operated by AskMeAI Teknoloji Ltd. Şti. (TR: 23837)
Intellectual property owned by © 2026 PACDI Global Yazılım Ltd. Şti. — FSEK No: 2026/18897
Impressum & Datenschutz & AGB
“Technology in the service of humanity.”
⏳ Wird verarbeitet...
`; const blob = new Blob([fullHtml], { type: 'text/html;charset=utf-8' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'pacdi-document.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); showToast(translations[currentLang].htmlExported, true); } function copyMarkdown() { const text = document.getElementById('markdownInput').value; if (!text.trim()) { showToast(translations[currentLang].noData, false); return; } const fallbackCopy = (str) => { const ta = document.createElement('textarea'); ta.value = str; ta.style.position = 'fixed'; ta.style.left = '-9999px'; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); showToast(translations[currentLang].copied, true); }; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text) .then(() => showToast(translations[currentLang].copied, true)) .catch(() => fallbackCopy(text)); } else { fallbackCopy(text); } } function saveMarkdown() { const text = document.getElementById('markdownInput').value; if (!text.trim()) { showToast(translations[currentLang].noData, false); return; } try { localStorage.setItem('pacdi_markdown', text); showToast(translations[currentLang].saved, true); } catch (e) { showToast('❌ ' + e.message, false); } } function clearEditor() { document.getElementById('markdownInput').value = ''; renderMarkdown(); try { localStorage.removeItem('pacdi_markdown'); } catch (e) {} showToast(translations[currentLang].cleared, true); } // ============================================================ // 4. BAŞLATMA // ============================================================ window.addEventListener('DOMContentLoaded', () => { const browserLang = (navigator.language || 'de').split('-')[0]; const supported = ['de', 'en', 'tr']; const defaultLang = supported.includes(browserLang) ? browserLang : 'de'; try { const saved = localStorage.getItem('pacdi_markdown'); if (saved !== null && saved.trim() !== '') { document.getElementById('markdownInput').value = saved; } else { document.getElementById('markdownInput').value = sampleTexts[defaultLang] || sampleTexts.de; } } catch (e) { document.getElementById('markdownInput').value = sampleTexts[defaultLang] || sampleTexts.de; } setLang(defaultLang); renderMarkdown(); }); // ============================================================ // 5. PWA, TEMA VE ÇEREZ BANNERI // ============================================================ if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js').catch(() => {}); } // iOS Safari PWA Banner (function() { const isIOS = /iphone|ipad|ipod/i.test(navigator.userAgent); const isInStandalone = ('standalone' in navigator && navigator.standalone); const shown = sessionStorage.getItem('pwa-banner-shown'); if (!shown && !isInStandalone && isIOS) { setTimeout(() => { const bar = document.createElement('div'); bar.id = 'pwa-banner'; bar.style.cssText = 'position:fixed;bottom:0;left:0;right:0;background:#04162E;border-top:2px solid #D4AF37;padding:14px 16px;z-index:9999;font-family:system-ui;'; bar.innerHTML = `
📲 Ana ekrana ekle
Safari'de ⭳ Paylaş butonuna bas, ardından Ana Ekrana Ekle seçeneğini seç.
`; document.body.appendChild(bar); sessionStorage.setItem('pwa-banner-shown', '1'); }, 3000); } })(); // Tema Değiştirici (Dark / Light) (function() { const KEY = 'pacdi-theme'; function apply(theme) { document.documentElement.setAttribute('data-theme', theme); const btn = document.getElementById('pacdiThemeToggle'); if (btn) btn.textContent = theme === 'dark' ? '☀️' : '🌙'; } const saved = localStorage.getItem(KEY); const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; apply(saved || (prefersDark ? 'dark' : 'light')); const btn = document.createElement('button'); btn.id = 'pacdiThemeToggle'; btn.style.cssText = 'position:fixed;top:12px;right:12px;z-index:99999;width:2.2rem;height:2.2rem;border:1px solid var(--card-border);border-radius:50%;background:var(--box-bg);color:var(--text);font-size:1.05rem;cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(6px);transition:transform 0.2s;'; btn.textContent = document.documentElement.getAttribute('data-theme') === 'dark' ? '☀️' : '🌙'; btn.onclick = function() { const cur = document.documentElement.getAttribute('data-theme'); const next = cur === 'dark' ? 'light' : 'dark'; localStorage.setItem(KEY, next); apply(next); }; document.body.appendChild(btn); })(); // Çerez İzni & Analytics Entegrasyonu (function() { const GA_ID = "G-E6ML8EDW0H"; const ADS_CLIENT = "ca-pub-8426936740213369"; const CONSENT_KEY = "pacdiCookieConsent"; function loadGA() { const s = document.createElement("script"); s.async = true; s.src = "https://www.googletagmanager.com/gtag/js?id=" + GA_ID; document.head.appendChild(s); window.dataLayer = window.dataLayer || []; window.gtag = function() { dataLayer.push(arguments); }; gtag("js", new Date()); gtag("config", GA_ID); } function loadAdsense() { const s = document.createElement("script"); s.async = true; s.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=" + ADS_CLIENT; s.crossOrigin = "anonymous"; document.head.appendChild(s); } function loadAll() { loadGA(); loadAdsense(); } const consent = localStorage.getItem(CONSENT_KEY); if (consent === "accepted") { loadAll(); return; } if (consent === "rejected") return; document.addEventListener("DOMContentLoaded", function() { const lang = (document.documentElement.lang || "de").substring(0, 2); const texts = { tr: { msg: 'Bu site, deneyiminizi iyileştirmek için analiz ve reklam çerezleri kullanır. Detaylar için Gizlilik Politikamıza bakabilirsiniz.', accept: 'Kabul Et', reject: 'Reddet' }, de: { msg: 'Diese Website verwendet Analyse- und Werbe-Cookies, um Ihre Erfahrung zu verbessern. Details finden Sie in unserer Datenschutzerklärung.', accept: 'Akzeptieren', reject: 'Ablehnen' }, en: { msg: 'This site uses analytics and advertising cookies to improve your experience. See our Privacy Policy for details.', accept: 'Accept', reject: 'Reject' } }; const t = texts[lang] || texts.de; const banner = document.createElement("div"); banner.id = "pacdi-cookie-banner"; banner.style.cssText = 'position:fixed;bottom:0;left:0;right:0;background:#04162E;border-top:1px solid rgba(212,175,55,0.3);padding:16px 20px;z-index:99999;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;box-shadow:0 -4px 20px rgba(0,0,0,0.4);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;'; banner.innerHTML = `
${t.msg}
`; document.body.appendChild(banner); document.getElementById("pacdi-cookie-accept").onclick = function() { localStorage.setItem(CONSENT_KEY, "accepted"); loadAll(); banner.remove(); }; document.getElementById("pacdi-cookie-reject").onclick = function() { localStorage.setItem(CONSENT_KEY, "rejected"); banner.remove(); }; }); })();