Introduction

stackedit.js makes it easy to bind StackEdit to a textarea.

Because it runs StackEdit in an iframe, stackedit.js is lightweight and has no dependency.

Getting started

Import

Add the script to your web page.

<script src="https://unpkg.com/stackedit-js@1.0.7/docs/lib/stackedit.min.js"></script>

Or include it in your project

npm install stackedit-js

and import it into your script.

import Stackedit from 'stackedit-js';

Usage

To open StackEdit, create a Stackedit object and call openFile().

  const el = document.querySelector('textarea');
  const stackedit = new Stackedit();

  // Open the iframe
  stackedit.openFile({
    name: 'Filename', // with an optional filename
    content: {
      text: el.value // and the Markdown content.
    }
  });

  // Listen to StackEdit events and apply the changes to the textarea.
  stackedit.on('fileChange', (file) => {
    el.value = file.content.text;
  });

Events

Stackedit objects will emit the following events:

Conversion service

Duly sanitized HTML will be returned as file.content.html in the fileChange event so that you can print the formatted output into your page.

Tip: Use the silent mode to convert Markdown to HTML on page load:

stackedit.openFile({
  name: 'Filename',
  content: { text: 'Hello **Markdown** writer!' }
}, true /* silent mode */);

// In silent mode, the `fileChange` event is emitted only once.
stackedit.on('fileChange', (file) => {
  divEl.innerHTML = file.content.html;
});

Custom properties

Pass file properties to configure the Markdown engine. To open a CommonMark file for example:

stackedit.openFile({
  name: 'Filename',
  content: {
    text: 'Hello **CommonMark** writer!',
    properties: {
      extensions: {
        preset: 'commonmark'
      }
    }
  }
});

Custom StackEdit URL

stackedit.js uses https://stackedit.io/app as the default StackEdit URL. Though you can provide a custom URL to the Stackedit constructor.

const stackedit = new Stackedit({
  url: 'https://hostname/app'
});