Skip to content

A vanilla Markdown Web Component with optional syntax highlighting support

License

Notifications You must be signed in to change notification settings

vanillawc/wc-markdown

Repository files navigation

<wc-markdown> Markdown with Syntax Highlighing

GitHub Releases NPM Releases Bundlephobia Latest Status Release Status

Discord Published on WebComponents.org

Setup

Install and import from NPM

npm i @vanillawc/wc-markdown
<script type="module" src="[node_modules]/@vanillawc/wc-markdown/index.js"></script>

Import from SkyPack CDN

<script type="module" src="https://cdn.skypack.dev/@vanillawc/wc-markdown"></script>

Demo

Try it on WebComponents.dev

Usage

Attributes

  • src - load an external source file
  • highlight - when present, syntax highlighting is applied to code

Properties

  • value - get/set the source code

External Source

<wc-markdown src="sample.md"></wc-markdown>

Inline Source

<wc-markdown>
  <script type="wc-content">
    ## Inline Markdown

    This some sample markdown.
  </script>
</wc-markdown>

Note: The </script> word cannot be used inside here, you'll have to use the escaped &lt;/script&gt; version instead, you may also use &lt;script&gt; for the opening <script> tag if you wish to

Syntax Highlighting

To apply syntax highlighting, add the highlight attribute.

<wc-markdown src="sample2.md" highlight></wc-markdown>

Syntax Highlighting - Theming

Highlighting requires the import of a CSS theme. Themes can be found under themes/.

<link rel="stylesheet" href="/node_modules/@vanillawc/wc-markdown/themes/prism-okaidia.css">

Syntax Highlighting - Languages

The PrismJS core includes the following languages [html, xml, svg, mathml, css, javascript].

Additional language modules can be imported from components/.

<script type="module" src="/node_modules/@vanillawc/wc-markdown/index.js"></script>
<script type="module" src="/node_modules/@vanillawc/wc-markdown/components/prism-typescript.js"></script>

Some languages extend others. Ex, C++ extends C so both need to be imported in the correct order.

<script type="module" src="/node_modules/@vanillawc/wc-markdown/index.js"></script>
<script type="module" src="/node_modules/@vanillawc/wc-markdown/components/prism-c.js"></script>
<script type="module" src="/node_modules/@vanillawc/wc-markdown/components/prism-cpp.js"></script>

Contributing

See CONTRIBUTING.md

Similar Projects