<syntax-highlight>

A custom element that uses the CSS Custom Highlight API for syntax highlighting

npm version npm downloads jsDelivr hits (npm)

npm install syntax-highlight-element

Demo Playground

Examples

For more examples checkout the CodePen <syntax-highlight> collection.

Installation & Usage

Install

Install via npm

npm install syntax-highlight-element

Usage

JavaScript

Import as ES module

import 'syntax-highlight-element';

Or via CDN

<script type="module" src="https://cdn.jsdelivr.net/npm/syntax-highlight-element@1/+esm"></script>

HTML

<syntax-highlight language="js"> // ... </syntax-highlight>

CSS

Make sure to load a theme e.g. syntax-highlight-element/themes/prettylights.css.

Or via CDN

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/syntax-highlight-element@1/dist/themes/prettylights.min.css">

Currently there are only limited themes available/converted. You can always create your own theme. Contributions are also very welcome.

Attributes

Configuration

/** * @typedef Config * @type {object} * @property {string[]} languages - List of languages to support for syntax highlighting. * @property {string[]} tokenTypes - Token types used during lexing/parsing. * @property {{[key: string]: string[]}} languageTokens - Mapping of language names to their specific tokenization rules. * @property {function} setup - Runs before the custom element gets defined in the registry. * @property {function} tokenize - Tokenize text based on the specified language grammar */ window.she = window.she || {}; /** @type {Config} */ window.she.config = { languages: ['markup', 'css', 'javascript'], // Default tokenTypes: [], languageTokens: {}, setup: async () => {}, tokenize: (text, language) => [], };

Full list of all languages supported by the prism tokenizer.

Credits