Skip to content

cloverhearts/quilljs-markdown

Repository files navigation

Markdown for Quill Editor

JavaScript Style Guide

QuillJS Markdown shortcut Extension.

NPM

DEMO

Wrote Library with ES6 and Standard Javascript Codestyle.

How to install

NPM

npm i quilljs-markdown

or

CDN

<script src="https://cdn.jsdelivr.net/npm/quilljs-markdown@latest/dist/quilljs-markdown.js"></script>

How to use

import Quill from 'quill'
import QuillMarkdown from 'quilljs-markdown'
import 'quilljs-markdown/dist/quilljs-markdown-common-style.css' // recommend import css, @option improve common style

const options = {
  theme: 'snow'
}

document.addEventListener('DOMContentLoaded', () => {
  const editor = new Quill('#editor', options)
  const markdownOptions = {
    /**
     ignoreTags: [ 'pre', 'strikethrough'], // @option - if you need to ignore some tags.
     
     tags: { // @option if you need to change for trigger pattern for some tags. 
      blockquote: {
        pattern: /^(\|){1,6}\s/g,
      },
      bold: {
        pattern:  /^(\|){1,6}\s/g,
      },
      italic: {
        pattern: /(\_){1}(.+?)(?:\1){1}/g,
      },
    },
    */
  };
  
  // markdown is enabled
  const quillMarkdown = new QuillMarkdown(editor, markdownOptions)
  
  // markdown is now disabled  
  // quillMarkdown.destroy()
  
})

Javascript 2 (Enable to Standard style for Quilljs)

import Quill from 'quill'
import QuillMarkdown from '../src/app'

const toolbarOptions = [
  ['bold', 'italic', 'underline', 'strike'],
  [ 'link', 'image'],          // add's image support
];

const options = {
  theme: 'snow',
  modules: {
    toolbar: toolbarOptions,
    QuillMarkdown: {
       ignoreTags: [ 'pre', 'strikethrough'], // @option - if you need to ignore some tags.
       
       tags: { // @option if you need to change for trigger pattern for some tags. 
        blockquote: {
          pattern: /^(\|){1,6}\s/g,
        },
        bold: {
          pattern:  /^(\|){1,6}\s/g,
        },
        italic: {
          pattern: /(\_){1}(.+?)(?:\1){1}/g,
        },
      },
    }
  }
}

document.addEventListener('DOMContentLoaded', () => {
  console.log('HOHO')

  Quill.register('modules/QuillMarkdown', QuillMarkdown, true)

  new Quill('#editor', options)
})

HTML

<script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
<script src="https://cdn.jsdelivr.net/npm/quilljs-markdown@latest/dist/quilljs-markdown.js"><script>
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/quilljs-markdown@latest/dist/quilljs-markdown-common-style.css" rel="stylesheet" >

<script>
    document.addEventListener('DOMContentLoaded', () => {
      var quill = new Quill('#editor', {
        theme: 'snow'
      });
      var markdownOptions = {
        ignoreTags: [ 'strikethrough'], // @option - if you need to ignore some tags.
    
        tags: { // @option if you need to change for trigger pattern for some tags. 
        blockquote: {
          pattern: /^(\|){1,6}\s/g,
        },
        bold: {
          pattern:  /^(\|){1,6}\s/g,
        },
        italic: {
          pattern: /(\_){1}(.+?)(?:\1){1}/g,
        },
      },
    };
      new QuillMarkdown(editor, markdownOptions)
    })
<script>

destroy

Call destroy() to remove the event listener and disable markdown support:

const quillMarkdown = new QuillMarkdown(editor, markdownOptions)
// markdown is enabled

quillMarkdown.destroy()
// markdown is now disabled

To re-enable support, create a new instance.

Paste support for Markdown format.

Pasting the Markdown form,

Shows the corresponding Markdown result.

Heading (tagname : h1, h2, h3 ,h4, h5, h6, header(all))

# MyTitle
## MyTitle
### MyTitle
#### MyTitle
##### MyTitle

Blockquote (tagname : blockquote)

> blockquote text

bold (tagname : bold)

**Bold Text**
__Bold Text__

Italic (tagname : italic)

*Italics Text*
_Italics Text_

Link (tagname : link)

[link text](https://link_url)

inline code (tagname : code)

`inline code block`

Code block (tagname : pre)

```
code block
```

List (tagname : ol, ul)

1. one
2. two
3. three

* one
* two
* three

Strikethrough (tagname : strikethrough)

~~Strikethrough~~

Checkbox (tagname : checkbox)

[ ] checkbox
[x] checked