@analogjs/platform
Version:
The fullstack meta-framework for Angular
65 lines (63 loc) • 4.48 kB
JavaScript
import { markedHighlight } from 'marked-highlight';
import 'prismjs';
import './angular.js';
import { MarkedContentHighlighter } from '../marked/marked-content-highlighter.js';
export class PrismHighlighter extends MarkedContentHighlighter {
augmentCodeBlock(code, lang) {
const classes = lang.startsWith('diff') && Prism.languages['diff']
? `language-${lang} diff-highlight`
: `language-${lang.replace('diff-', '')}`;
return `<pre class="${classes}"><code class="${classes}">${code}</code></pre>`;
}
getHighlightExtension() {
return markedHighlight({
async: true,
highlight: (code, lang) => {
let diff = lang?.startsWith('diff-');
lang = diff ? lang.replace('diff-', '') : lang || 'typescript';
if (diff && !Prism.languages['diff']) {
diff = false;
console.warn(`Notice:
---------------------------------------------------------------------------------------
The \`diff\` language and plugin are not available in the provided setup.
To enable, add it to the \`analog\` plugin in your \`vite.config.ts\`:
analog({
content: {
prismOptions: {
additionalLangs: [
'prism-diff'
]
}
}
})
Add the plugin import to your \`app.config.ts\`
import 'prismjs/plugins/diff-highlight/prism-diff-highlight.js';
---------------------------------------------------------------------------------------
`);
}
if (!Prism.languages[lang]) {
if (lang !== 'mermaid') {
console.warn(`Notice:
---------------------------------------------------------------------------------------
The requested language '${lang}' is not available in the provided setup.
To enable, add it to the \`analog\` plugin in your \`vite.config.ts\`:
analog({
content: {
prismOptions: {
additionalLangs: [
'${lang}',
]
}
}
})
---------------------------------------------------------------------------------------
`);
}
return code;
}
return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
},
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20taGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQvcHJpc20vcHJpc20taGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBSW5GLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFDbkQsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDbEQsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoRCxDQUFDLENBQUMsWUFBWSxJQUFJLGlCQUFpQjtZQUNuQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sZUFBZSxPQUFPLGtCQUFrQixPQUFPLEtBQUssSUFBSSxlQUFlLENBQUM7SUFDakYsQ0FBQztJQUVRLHFCQUFxQjtRQUM1QixPQUFPLGVBQWUsQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUM7Z0JBRS9ELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQWtCVixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQzs7OEJBRUssSUFBSTs7Ozs7O2lCQU1qQixJQUFJOzs7Ozs7ZUFNTixDQUFDLENBQUM7b0JBQ1AsQ0FBQztvQkFDRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FDcEIsSUFBSSxFQUNKLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDdEQsSUFBSSxDQUNMLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=