Giriş
@powerduck/md-editor, tarayıcıya gömülebilen yüksek performanslı bir Markdown düzenleyicisidir. CodeMirror 6 düzenleme alanını markdown-it ile oluşturulan canlı önizlemeyle birleştirir. KaTeX formülleri, Markmap zihin haritaları, kod vurgulama, bilgi kutuları, yapılandırılabilir araç çubuğu, klavye kısayolları, görsel yükleme kancaları, @bahsetmeler ve belge bağlantısı ekleme özellikleri sunar.
- Paket adı:
@powerduck/md-editor - Lisans: MIT
- Modül biçimi: ECMAScript modülü (
type: "module"); ESM (dist/index.mjs) ve CJS (dist/index.cjs) derlemeleri ile tür bildirimleri (dist/index.d.ts) birlikte sunulur.
Temel özellikler
Aşağıdaki özellikler, uygulanmış kaynak modüllerine dayanır:
- Markdown düzenleme: CodeMirror 6 ile Markdown söz dizimi vurgulama ve açık/koyu vurgulama temaları.
- KaTeX formülleri: bağımsız bir markdown-it eklentisiyle satır içinde
$...$, blok olarak$$...$$.$5gibi para değerleri sezgisel kurallarla formül ayrıştırmasının dışında tutulur. - Markmap zihin haritaları:
```mindmapkod bloklarından oluşturulur. markmap-lib ve markmap-view dinamik olarak içe aktarıldığından zihin haritası yoksa başlangıç paketini büyütmez. - Kod vurgulama: highlight.js, macOS tarzı üç renkli nokta içeren başlık, dil etiketi ve tek tıklamayla kopyalama düğmesi.
- Bilgi kutuları:
:::notice,:::info,:::tip,:::success,:::warning,:::dangeriçin simgeler ve uygun renkler. - GitHub tarzı önizleme:
github-markdown-csskullanır. - Kapsamlı araç çubuğu: 22 eylem; görsel, video, YouTube ve tablo ekleme pencereleri; formül ve zihin haritası şablon seçicileri; tüm kısayolları listeleyen yardım penceresi.
- Klavye kısayolları:
Mod, Windows/Linux'ta Ctrl, macOS'te Cmd tuşuna karşılık gelir. - Yapılandırılabilir araç çubuğu: gösterilecek öğelerin dizisi veya öğe bazında ayarlar (
show,label,icon) ile düzenlenir. - Görsel yükleme kancası:
onImageUpload, düzenleyiciye görsel yapıştırıldığında veya sürüklenip bırakıldığında çağrılır. - @Bahsetme açılır listesi:
mentionseçenekleriyle yapılandırılır; seçilen bahsetmeler önizlemede biçimlendirilmiş rozetler olarak görünür. - Belge bağlantısı ekleme:
docLinkile yapılandırılır; düz bağlantılar veya:::doc-linkönizleme kartları ekler. Meta veriler yerleşik yükleyici ya da özel bir kancayla alınır; farklı kaynaklara yapılan istekler tarayıcının CORS kurallarına tabidir. - Video gösterimi: URL'si
.mp4,.webm,.oggveya bilinen diğer uzantılarla biten görsel söz dizimi,<video controls>öğesi olarak oluşturulur. - Bağımsız oluşturucu:
renderMarkdown(source, options), düzenleyici bağlamadan önizlemeyle aynı eklenti ve stilleri kullanarak HTML üretir. - Blok düzeyinde artımlı oluşturma: kaynak ATX başlıklarında bloklara ayrılır ve yalnızca değişen bloklar yeniden oluşturulur. Diğer bloklar, önceden başlatılmış zihin haritası SVG'leri dahil mevcut DOM düğümlerini yeniden kullanır. Sonuçlar içerik karmasına göre önbelleğe alınır.
- Uyarlanabilir geciktirme: önizleme güncelleme gecikmesi belge uzunluğuna göre 120 ms'den en fazla 600 ms'ye kadar değişir.
- İki düzenleme modu:
simple(araç çubuğu olmadan düzenleme ve önizleme) vecomplex(araç ve durum çubukları); çalışma sırasında değiştirilebilir. - İki tema:
lightvedark,data-themeözniteliği ve özel CSS özellikleriyle uygulanır.
Mimariye genel bakış
Kitaplık iki arayüz sunar:
-
Saf JavaScript sınıfı — ana API, bir kapsayıcı öğeyle oluşturulan
MarkdownEditorsınıfını temel alır.CodeEditor(CodeMirror sarmalayıcısı),Renderer(markdown-it sarmalayıcısı), önizleme içinIncrementalRenderervecomplexmodundaToolbarileStatusBarbileşenlerini birleştirir. Açılır pencereler, @bahsetme denetleyicisi ve belge bağlantısı denetleyicisi gerektiğinde bağlanan modüllerdir. -
Alt yol üzerinden React dışa aktarımı —
MarkdownEditorReact,./reactyolundan dışa aktarılan birforwardRefbileşenidir. SafMarkdownEditorörneğini sarar, kontrollü ve kontrolsüzvaluekullanımını destekler ve ref üzerinden komut tabanlı birMarkdownEditorHandlesunar. React giriş noktası ayrıdır; React kullanmayan projelerreactvereact-domkurmak zorunda kalmaz.
Oluşturma, zihin haritaları için yer tutucu HTML üreten senkron markdown-it aşaması ile bunları etkileşimli SVG diyagramlarına dönüştüren asenkron Renderer.hydrate aşamasından oluşur. renderMarkdown senkron HTML döndürür. Zihin haritası SVG'leri için Renderer.render kullanın, HTML'yi DOM'a ekleyin ve ardından Renderer.hydrate çağırın. Artımlı oluşturucu doğrudan önizleme kapsayıcısında çalışır.
Tarayıcı desteği
Kitaplık, DOM içeren modern tarayıcıları hedefler. CodeMirror 6, KaTeX ve markmap-view tarayıcı özellikleri değil, paket bağımlılıklarıdır; etkileşimli zihin haritaları ResizeObserver kullanır. Kullanılabiliyorsa Clipboard API tercih edilir. Örneğin HTTPS dışındaki ortamlarda navigator.clipboard yoksa kod bloklarını kopyalamak için document.execCommand('copy') kullanılır. Zihin haritası modülü, yalnızca genel ResizeObserver tanımsız olduğunda boş bir uygulama ekleyerek içe aktarma hatasını önler; bu uygulama gerçek boyut değişikliği bildirimleri sağlamaz.
Lisans
@powerduck/md-editor, MIT lisansıyla yayımlanır.
Sonraki adımlar
- Kurulum — paketi kurun ve içe aktarma yollarını öğrenin.
- Hızlı başlangıç — ilk düzenleyicinizi saf JavaScript veya React ile bağlayın.
- Yapılandırma — tüm
MarkdownEditorOptionsseçenekleri. - Özellikler — yerleşik özelliklerin ayrıntıları.
- API başvurusu — dışa aktarılan tüm sınıflar, işlevler ve türler.
- Örnekler — eksiksiz, çalıştırılabilir kod örnekleri.