@analogjs/platform
Version:
The fullstack meta-framework for Angular
45 lines • 3.34 kB
JavaScript
import markedShiki from 'marked-shiki';
import { getHighlighter, } from 'shiki';
import { MarkedContentHighlighter } from '../marked/marked-content-highlighter.js';
export const defaultHighlighterOptions = {
langs: [
'json',
'ts',
'tsx',
'js',
'jsx',
'html',
'css',
'angular-html',
'angular-ts',
],
themes: ['github-dark', 'github-light'],
};
export class ShikiHighlighter extends MarkedContentHighlighter {
constructor(highlighterOptions, highlightOptions, container, hasLoadMermaid = false) {
super();
this.highlighterOptions = highlighterOptions;
this.highlightOptions = highlightOptions;
this.container = container;
this.hasLoadMermaid = hasLoadMermaid;
this.highlighter = getHighlighter(this.highlighterOptions);
}
getHighlightExtension() {
return markedShiki({
container: this.container,
highlight: async (code, lang, props) => {
if (this.hasLoadMermaid && lang === 'mermaid') {
return `<pre class="mermaid">${code}</pre>`;
}
const { codeToHtml } = await this.highlighter;
return codeToHtml(code, Object.assign({
lang,
// required by `transformerMeta*`
meta: { __raw: props.join(' ') },
theme: 'github-dark',
}, this.highlightOptions));
},
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpa2ktaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvc2hpa2kvc2hpa2ktaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFPTCxjQUFjLEdBQ2YsTUFBTSxPQUFPLENBQUM7QUFFZixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQVVuRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxLQUFLLEVBQUU7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLEtBQUs7UUFDTCxJQUFJO1FBQ0osS0FBSztRQUNMLE1BQU07UUFDTixLQUFLO1FBQ0wsY0FBYztRQUNkLFlBQVk7S0FDYjtJQUNELE1BQU0sRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUM7Q0FDeEMsQ0FBQztBQUVGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFHNUQsWUFDVSxrQkFBMkMsRUFDM0MsZ0JBQXVDLEVBQ3ZDLFNBQWlCLEVBQ2pCLGlCQUFpQixLQUFLO1FBRTlCLEtBQUssRUFBRSxDQUFDO1FBTEEsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF5QjtRQUMzQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXVCO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFOZixnQkFBVyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQVN2RSxDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLE9BQU8sV0FBVyxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzlDLE9BQU8sd0JBQXdCLElBQUksUUFBUSxDQUFDO2dCQUM5QyxDQUFDO2dCQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzlDLE9BQU8sVUFBVSxDQUNmLElBQUksRUFDSixNQUFNLENBQUMsTUFBTSxDQUNYO29CQUNFLElBQUk7b0JBQ0osaUNBQWlDO29CQUNqQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDaEMsS0FBSyxFQUFFLGFBQWE7aUJBQ3JCLEVBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUN0QixDQUNGLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=