Server IP : 23.254.227.96 / Your IP : 216.73.216.46 Web Server : Apache/2.4.62 (Unix) OpenSSL/1.1.1k System : Linux hwsrv-1277026.hostwindsdns.com 4.18.0-477.13.1.el8_8.x86_64 #1 SMP Tue May 30 14:53:41 EDT 2023 x86_64 User : viralblo ( 1001) PHP Version : 8.1.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/viralblo/public_html/quill/modules/ |
Upload File : |
import Parchment from 'parchment'; import Quill from '../core/quill'; import Module from '../core/module'; import CodeBlock from '../formats/code'; class SyntaxCodeBlock extends CodeBlock { replaceWith(block) { this.domNode.textContent = this.domNode.textContent; this.attach(); super.replaceWith(block); } highlight(highlight) { let text = this.domNode.textContent; if (this.cachedText !== text) { if (text.trim().length > 0 || this.cachedText == null) { this.domNode.innerHTML = highlight(text); this.domNode.normalize(); this.attach(); } this.cachedText = text; } } } SyntaxCodeBlock.className = 'ql-syntax'; let CodeToken = new Parchment.Attributor.Class('token', 'hljs', { scope: Parchment.Scope.INLINE }); class Syntax extends Module { static register() { Quill.register(CodeToken, true); Quill.register(SyntaxCodeBlock, true); } constructor(quill, options) { super(quill, options); if (typeof this.options.highlight !== 'function') { throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.'); } let timer = null; this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => { clearTimeout(timer); timer = setTimeout(() => { this.highlight(); timer = null; }, this.options.interval); }); this.highlight(); } highlight() { if (this.quill.selection.composing) return; this.quill.update(Quill.sources.USER); let range = this.quill.getSelection(); this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => { code.highlight(this.options.highlight); }); this.quill.update(Quill.sources.SILENT); if (range != null) { this.quill.setSelection(range, Quill.sources.SILENT); } } } Syntax.DEFAULTS = { highlight: (function() { if (window.hljs == null) return null; return function(text) { let result = window.hljs.highlightAuto(text); return result.value; }; })(), interval: 1000 }; export { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};