UNPKG

@analogjs/content

Version:

Content Rendering for Analog

86 lines (80 loc) 3.83 kB
import { MarkedContentHighlighter, ContentRenderer, NoopContentRenderer } from '@analogjs/content'; import * as i0 from '@angular/core'; import { Injectable } from '@angular/core'; import { markedHighlight } from 'marked-highlight'; import 'prismjs'; import 'prismjs/plugins/toolbar/prism-toolbar'; import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard'; 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 it, add the following imports your \`app.config.ts\`: import 'prismjs/components/prism-diff'; import 'prismjs/plugins/diff-highlight/prism-diff-highlight'; --------------------------------------------------------------------------------------- `); } if (!Prism.languages[lang]) { if (lang !== 'mermaid') { console.warn(`Notice: --------------------------------------------------------------------------------------- The requested language '${lang}' is not available in the provided setup. To enable it, add the following import your \`app.config.ts\`: import 'prismjs/components/prism-${lang}'; --------------------------------------------------------------------------------------- `); } return code; } return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang); }, }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PrismHighlighter }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PrismHighlighter, decorators: [{ type: Injectable }] }); "use strict"; (function () { if (typeof Prism === 'undefined') { return; } Prism.languages.angular = Prism.languages.extend('markup', { keyword: /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\b/, operator: /\b(?:on|when)\b/, number: { pattern: /\b(minimum|after)\s+\d+(?:s|ms|)/gi, lookbehind: true, }, builtin: { pattern: /\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/, }, function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, }); Prism.languages.ng = Prism.languages.angular; })(); function withPrismHighlighter() { return [{ provide: ContentRenderer, useClass: NoopContentRenderer }]; } /** * Generated bundle index. Do not edit. */ export { PrismHighlighter, withPrismHighlighter }; //# sourceMappingURL=analogjs-content-prism-highlighter.mjs.map