<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Playground</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"> <link href="https://cdn.quilljs.com/1.2.3/quill.snow.css" rel="stylesheet"></link> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css" integrity="sha384-wITovz90syo1dJWVh32uuETPVEtGigN07tkttEqPv+uR2SE/mbQcG7ATL28aI9H0" crossorigin="anonymous"> <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js" integrity="sha384-/y1Nn9+QQAipbNQWU65krzJralCnuOasHncUFXGkdwntGeSvQicrYkiUBwsgUqc1" crossorigin="anonymous"></script> <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/default.min.css"> <script src="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js"></script> <style> .ql-viewer p, .ql-viewer ol, .ql-viewer ul, .ql-viewer pre, .ql-viewer blockquote, .ql-viewer h1, .ql-viewer h2, .ql-viewer h3, .ql-viewer h4, .ql-viewer h5, .ql-viewer h6 { margin: 0; padding: 0; } .ql-viewer { padding: 12px 15px;border: 1px solid #c1c1c1; } .ql-viewer .ql-font-serif { font-family: Georgia, Times New Roman, serif; } .ql-viewer .ql-font-monospace { font-family: Monaco, Courier New, monospace; } .ql-viewer .ql-size-small { font-size: 0.75em; } .ql-viewer .ql-size-large { font-size: 1.5em; } .ql-viewer .ql-size-huge { font-size: 2.5em; } .ql-viewer .ql-direction-rtl { direction: rtl; text-align: inherit; } .ql-viewer .ql-align-center { text-align: center; } .ql-viewer .ql-align-justify { text-align: justify; } .ql-viewer .ql-align-right { text-align: right; } .ql-viewer blockquote { border-left: 4px solid #ccc; padding-left: 16px; } .ql-viewer code, .ql-viewer pre { background-color: #f0f0f0; border-radius: 3px; padding: 6px 10px; } .ql-viewer ul > li[data-checked=true]::before { content: '\2611'; } .ql-viewer ul > li[data-checked=false]::before { content: '\2610'; } .ql-viewer ol > li, .ql-viewer ul > li { list-style-type: none ; } .ql-viewer ol { counter-reset: mylist } .ql-viewer ol > li:before { counter-increment: mylist; content: counter(mylist, decimal) '. '; } .ql-viewer ol ol > li:before { content: counter(mylist, lower-alpha) '. '; } .ql-viewer ol ol ol > li:before { content: counter(mylist, lower-roman) '. '; } .ql-viewer ol ol ol ol > li:before { content: counter(mylist, decimal) '. '; } .ql-viewer ol ol ol ol ol > li:before { content: counter(mylist, lower-alpha) '. '; } .ql-viewer ol ol ol ol ol ol > li:before { content: counter(mylist, lower-roman) '. '; } .ql-viewer ol ol ol ol ol ol ol > li:before { content: counter(mylist, decimal) '. '; } .ql-viewer ol ol ol ol ol ol ol ol > li:before { content: counter(mylist, lower-alpha) '. '; } .ql-viewer ol ol ol ol ol ol ol ol ol > li:before { content: counter(mylist, lower-roman) '. '; } /* ql indent */ .ql-viewer .ql-indent-1:not(.ql-direction-rtl) { padding-left: 3em; } .ql-viewer .ql-indent-1.ql-direction-rtl.ql-align-right { padding-right: 3em; } .ql-viewer .ql-indent-2:not(.ql-direction-rtl) { padding-left: 6em; } .ql-viewer .ql-indent-2.ql-direction-rtl.ql-align-right { padding-right: 6em; } .ql-viewer .ql-indent-3:not(.ql-direction-rtl) { padding-left: 9em; } .ql-viewer .ql-indent-3.ql-direction-rtl.ql-align-right { padding-right: 9em; } .ql-viewer .ql-indent-4:not(.ql-direction-rtl) { padding-left: 12em; } .ql-viewer .ql-indent-4.ql-direction-rtl.ql-align-right { padding-right: 12em; } .ql-viewer .ql-indent-5:not(.ql-direction-rtl) { padding-left: 15em; } .ql-viewer .ql-indent-5.ql-direction-rtl.ql-align-right { padding-right: 15em; } .ql-viewer .ql-indent-6:not(.ql-direction-rtl) { padding-left: 18em; } .ql-viewer .ql-indent-6.ql-direction-rtl.ql-align-right { padding-right: 18em; } .ql-viewer .ql-indent-7:not(.ql-direction-rtl) { padding-left: 21em; } .ql-viewer .ql-indent-7.ql-direction-rtl.ql-align-right { padding-right: 21em; } .ql-viewer .ql-indent-8:not(.ql-direction-rtl) { padding-left: 24em; } .ql-viewer .ql-indent-8.ql-direction-rtl.ql-align-right { padding-right: 24em; } .ql-viewer .ql-indent-9:not(.ql-direction-rtl) { padding-left: 27em; } .ql-viewer .ql-indent-9.ql-direction-rtl.ql-align-right { padding-right: 27em; } /* video */ .ql-viewer .ql-video { display: block; max-width: 100%; } .ql-viewer .ql-video.ql-align-center { margin: 0 auto; } .ql-viewer .ql-video.ql-align-right { margin: 0 0 0 auto; } </style> </head> <body> <div class="container mt-5"> <div class="row"> <div class="col"> <div id="quill-toolbar"></div> <div id="quill-editor"></div> </div> <div class="col "> <div class="ql-container aql-snow"> <div id="converted-view" class="ql-viewer" style="margin-top:69px;border-top:1px solid #cecece;"></div> </div> </div> </div> <div class="row pt-3"> <div class="col"></div> <div class="col"> Open developer <code>console</code> to see deltas and generated html. <br /> You can pass config options for <code>QuillDeltaToHtmlConverter</code> used here by setting <code>window.opts_ = { /* config object */}</code> to a configuration object </div> </div> </div> <script src="dist/browser/QuillDeltaToHtmlConverter.bundle.js"></script> <script src="https://cdn.quilljs.com/1.2.3/quill.js"></script> <script> var toolbarOptions = [ ['bold', 'italic', 'underline', 'strike', { 'script': 'sub' }, { 'script': 'super' }, { 'color': [] }, { 'background': [] }, 'code' ], [{ 'font': [] }, { 'size': ['small', false, 'large', 'huge'] }], ['link', 'image', 'video', 'formula'], ['blockquote', 'code-block', { 'header': 1 }, { 'list': 'ordered' }, { 'list': 'bullet' }, { 'list': 'check' } ], [{ 'indent': '-1' }, { 'indent': '+1' }, { 'direction': 'rtl' }, { 'align': [] }], ['clean'] ]; var quill = new Quill('#quill-editor', { theme: 'snow', placeholder: 'type here...', formula: true, syntax: true, modules: { toolbar: toolbarOptions } }); quill.on('text-change', function (v) { var delta = quill.getContents(); console.log(delta.ops); var qdc = new window.QuillDeltaToHtmlConverter(delta.ops, window.opts_ || {}); var html = qdc.convert(); console.log(html); document.getElementById('converted-view').innerHTML = html; }); </script> </body> </html>