सुविधाएँ
इस पृष्ठ पर हर अंतर्निहित सुविधा का वर्णन स्रोत कोड में उसके वास्तविक कार्यान्वयन के अनुसार किया गया है।
क्रमिक रेंडरिंग
बड़े दस्तावेज़ों में तेज़ प्रतिक्रिया बनाए रखने के लिए पूर्वावलोकन हर ब्लॉक को अलग से क्रमिक रूप में रेंडर करता है:
- ब्लॉक में विभाजन (
splitIntoBlocks): स्रोत को ATX शीर्षक वाली पंक्तियों (#से######तक) पर विभाजित किया जाता है। बैकटिक या टिल ्डा से घिरे कोड ब्लॉक की सामग्री को कभी विभाजन बिंदु नहीं माना जाता;:::कस्टम कंटेनर के अंदर के शीर्षक भी सुरक्षित रहते हैं। बिना शीर्षक वाला दस्तावेज़ एक ही ब्लॉक के रूप में संसाधित होता है। - प्रति-ब्लॉक रेंडरिंग: केवल उन ब्लॉक को markdown-it / KaTeX से दोबारा संसाधित किया जाता है जिनका सामग्री हैश बदला है। अपरिवर्तित ब्लॉक मौजूदा DOM नोड सीधे इस्तेमाल करते हैं, जिनमें पहले से इंटरैक्टिव बनाए गए माइंडमैप SVG भी शामिल हैं।
- सामग्री हैश पर आधारित कैश: रेंडरिंग के परिणाम सामग्री हैश (djb2 शैली का तेज़ हैश और लंबाई) के आधार पर सहेजे जाते हैं, इसलिए पूर्ववत/फिर से करें और समान अनुच्छेदों को कॉपी-पेस्ट करने पर भी कैश काम आता है। 800 से अधिक प्रविष्टियाँ होने पर उन हैश को हटाया जाता है जो अब दस्तावेज़ में नहीं हैं। वर्तमान ब्लॉक की प्रविष्टियाँ रखी जाती हैं, इसलिए 800 से अधिक अलग- अलग ब्लॉक वाला दस्तावेज़ इस सीमा से आगे जा सकता है।
- क्रम बदलना: मौजूदा नोड को
DocumentFragmentमें जोड़कर ब्लॉक को उनके नए क्रम में ले जाया जाता है। - अनुकूलित डिबाउंस (
adaptiveDebounceMs(docLength, base = 120, max = 600)): रेंडरिंग से पहले का विरामbase + floor(docLength / 20000) * 60होता है, जिसकी अधिकतम सीमाmaxहै। इसेrenderDebounceसे बदलें, या समकालिक रेंडरिंग के लिएrenderDebounce: falseसेट करें। content-visibility: auto: हर ब्लॉक को.md-editor-blockएलिमेंट में रखा जाता है, ताकि स्क्रीन से बाहर के ब्लॉक का लेआउट और पेंट छोड़ा जा सके।
किसी एक ब्लॉक की रेंडरिंग विफल होने पर पूरा पूर्वावलोकन खाली नहीं होता; उस ब्लॉक का एस्केप किया गया स्रोत <pre> में दिखाया जाता है।