@analogjs/content 1.6.1 → 1.6.2-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/prism-highlighter/index.mjs +6 -3
- package/esm2022/prism-highlighter/lib/prism/angular.mjs +20 -0
- package/esm2022/prism-highlighter/lib/prism-highlighter.mjs +51 -0
- package/fesm2022/analogjs-content-prism-highlighter.mjs +74 -4
- package/fesm2022/analogjs-content-prism-highlighter.mjs.map +1 -1
- package/package.json +1 -1
- package/prism-highlighter/index.d.ts +5 -2
- package/prism-highlighter/lib/prism/angular.d.ts +0 -0
- package/prism-highlighter/lib/prism-highlighter.d.ts +8 -0
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';
|
|
2
|
+
import { PrismHighlighter } from './lib/prism-highlighter';
|
|
2
3
|
import 'prismjs';
|
|
3
|
-
import 'prismjs/plugins/toolbar/prism-toolbar
|
|
4
|
-
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard
|
|
4
|
+
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
5
|
+
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
6
|
+
import './lib/prism/angular';
|
|
7
|
+
export { PrismHighlighter };
|
|
5
8
|
export function withPrismHighlighter() {
|
|
6
9
|
return [{ provide: ContentRenderer, useClass: NoopContentRenderer }];
|
|
7
10
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3ByaXNtLWhpZ2hsaWdodGVyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFM0QsT0FBTyxTQUFTLENBQUM7QUFDakIsT0FBTyx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLDJEQUEyRCxDQUFDO0FBQ25FLE9BQU8scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7QUFFNUIsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRSZW5kZXJlciwgTm9vcENvbnRlbnRSZW5kZXJlciB9IGZyb20gJ0BhbmFsb2dqcy9jb250ZW50JztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmlzbUhpZ2hsaWdodGVyIH0gZnJvbSAnLi9saWIvcHJpc20taGlnaGxpZ2h0ZXInO1xuXG5pbXBvcnQgJ3ByaXNtanMnO1xuaW1wb3J0ICdwcmlzbWpzL3BsdWdpbnMvdG9vbGJhci9wcmlzbS10b29sYmFyJztcbmltcG9ydCAncHJpc21qcy9wbHVnaW5zL2NvcHktdG8tY2xpcGJvYXJkL3ByaXNtLWNvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCAnLi9saWIvcHJpc20vYW5ndWxhcic7XG5cbmV4cG9ydCB7IFByaXNtSGlnaGxpZ2h0ZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQcmlzbUhpZ2hsaWdodGVyKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW3sgcHJvdmlkZTogQ29udGVudFJlbmRlcmVyLCB1c2VDbGFzczogTm9vcENvbnRlbnRSZW5kZXJlciB9XTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function () {
|
|
3
|
+
if (typeof Prism === 'undefined') {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
Prism.languages.angular = Prism.languages.extend('markup', {
|
|
7
|
+
keyword: /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\b/,
|
|
8
|
+
operator: /\b(?:on|when)\b/,
|
|
9
|
+
number: {
|
|
10
|
+
pattern: /\b(minimum|after)\s+\d+(?:s|ms|)/gi,
|
|
11
|
+
lookbehind: true,
|
|
12
|
+
},
|
|
13
|
+
builtin: {
|
|
14
|
+
pattern: /\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,
|
|
15
|
+
},
|
|
16
|
+
function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
|
|
17
|
+
});
|
|
18
|
+
Prism.languages.ng = Prism.languages.angular;
|
|
19
|
+
})();
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvcHJpc20taGlnaGxpZ2h0ZXIvc3JjL2xpYi9wcmlzbS9hbmd1bGFyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxDQUFDO0lBQ0MsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxPQUFPO0lBQ1QsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUN6RCxPQUFPLEVBQ0wscUVBQXFFO1FBQ3ZFLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLG9DQUFvQztZQUM3QyxVQUFVLEVBQUUsSUFBSTtTQUNqQjtRQUNELE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFDTCxxRUFBcUU7U0FDeEU7UUFDRCxRQUFRLEVBQ04sbUdBQW1HO0tBQ3RHLENBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCkge1xuICBpZiAodHlwZW9mIFByaXNtID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIFByaXNtLmxhbmd1YWdlcy5hbmd1bGFyID0gUHJpc20ubGFuZ3VhZ2VzLmV4dGVuZCgnbWFya3VwJywge1xuICAgIGtleXdvcmQ6XG4gICAgICAvKD86QGlmfEBmb3J8QHN3aXRjaHxAZGVmZXJ8QGxvYWRpbmd8QGVycm9yfEBwbGFjZWhvbGRlcnxwcmVmZXRjaClcXGIvLFxuICAgIG9wZXJhdG9yOiAvXFxiKD86b258d2hlbilcXGIvLFxuICAgIG51bWJlcjoge1xuICAgICAgcGF0dGVybjogL1xcYihtaW5pbXVtfGFmdGVyKVxccytcXGQrKD86c3xtc3wpL2dpLFxuICAgICAgbG9va2JlaGluZDogdHJ1ZSxcbiAgICB9LFxuICAgIGJ1aWx0aW46IHtcbiAgICAgIHBhdHRlcm46XG4gICAgICAgIC9cXGIoPzp2aWV3cG9ydHx0aW1lcnxtaW5pbXVtfGFmdGVyfGhvdmVyfGlkbGV8aW1tZWRpYXRlfGludGVyYWN0aW9uKS8sXG4gICAgfSxcbiAgICBmdW5jdGlvbjpcbiAgICAgIC8jPyg/IVxccylbXyRhLXpBLVpcXHhBMC1cXHVGRkZGXSg/Oig/IVxccylbJFxcd1xceEEwLVxcdUZGRkZdKSooPz1cXHMqKD86XFwuXFxzKig/OmFwcGx5fGJpbmR8Y2FsbClcXHMqKT9cXCgpLyxcbiAgfSk7XG5cbiAgUHJpc20ubGFuZ3VhZ2VzLm5nID0gUHJpc20ubGFuZ3VhZ2VzLmFuZ3VsYXI7XG59KSgpO1xuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { MarkedContentHighlighter } from '@analogjs/content';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { markedHighlight } from 'marked-highlight';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class PrismHighlighter extends MarkedContentHighlighter {
|
|
6
|
+
augmentCodeBlock(code, lang) {
|
|
7
|
+
const classes = lang.startsWith('diff') && Prism.languages['diff']
|
|
8
|
+
? `language-${lang} diff-highlight`
|
|
9
|
+
: `language-${lang.replace('diff-', '')}`;
|
|
10
|
+
return `<pre class="${classes}"><code class="${classes}">${code}</code></pre>`;
|
|
11
|
+
}
|
|
12
|
+
getHighlightExtension() {
|
|
13
|
+
return markedHighlight({
|
|
14
|
+
async: true,
|
|
15
|
+
highlight: (code, lang) => {
|
|
16
|
+
let diff = lang?.startsWith('diff-');
|
|
17
|
+
lang = diff ? lang.replace('diff-', '') : lang || 'typescript';
|
|
18
|
+
if (diff && !Prism.languages['diff']) {
|
|
19
|
+
diff = false;
|
|
20
|
+
console.warn(`Notice:
|
|
21
|
+
---------------------------------------------------------------------------------------
|
|
22
|
+
The \`diff\` language and plugin are not available in the provided setup.
|
|
23
|
+
To enable it, add the following imports your \`app.config.ts\`:
|
|
24
|
+
import 'prismjs/components/prism-diff';
|
|
25
|
+
import 'prismjs/plugins/diff-highlight/prism-diff-highlight';
|
|
26
|
+
---------------------------------------------------------------------------------------
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
if (!Prism.languages[lang]) {
|
|
30
|
+
if (lang !== 'mermaid') {
|
|
31
|
+
console.warn(`Notice:
|
|
32
|
+
---------------------------------------------------------------------------------------
|
|
33
|
+
The requested language '${lang}' is not available in the provided setup.
|
|
34
|
+
To enable it, add the following import your \`app.config.ts\`:
|
|
35
|
+
import 'prismjs/components/prism-${lang}';
|
|
36
|
+
---------------------------------------------------------------------------------------
|
|
37
|
+
`);
|
|
38
|
+
}
|
|
39
|
+
return code;
|
|
40
|
+
}
|
|
41
|
+
return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
46
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, decorators: [{
|
|
49
|
+
type: Injectable
|
|
50
|
+
}] });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20taGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3ByaXNtLWhpZ2hsaWdodGVyL3NyYy9saWIvcHJpc20taGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBS25ELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFDbkQsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDbEQsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoRCxDQUFDLENBQUMsWUFBWSxJQUFJLGlCQUFpQjtZQUNuQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sZUFBZSxPQUFPLGtCQUFrQixPQUFPLEtBQUssSUFBSSxlQUFlLENBQUM7SUFDakYsQ0FBQztJQUVRLHFCQUFxQjtRQUM1QixPQUFPLGVBQWUsQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUM7Z0JBRS9ELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUM7Ozs7Ozs7YUFPVixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQzs7OEJBRUssSUFBSTs7eUNBRU8sSUFBSTs7ZUFFOUIsQ0FBQyxDQUFDO29CQUNQLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQ3BCLElBQUksRUFDSixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3RELElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0NVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFya2VkQ29udGVudEhpZ2hsaWdodGVyIH0gZnJvbSAnQGFuYWxvZ2pzL2NvbnRlbnQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFya2VkSGlnaGxpZ2h0IH0gZnJvbSAnbWFya2VkLWhpZ2hsaWdodCc7XG5cbmRlY2xhcmUgY29uc3QgUHJpc206IHR5cGVvZiBpbXBvcnQoJ3ByaXNtanMnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByaXNtSGlnaGxpZ2h0ZXIgZXh0ZW5kcyBNYXJrZWRDb250ZW50SGlnaGxpZ2h0ZXIge1xuICBvdmVycmlkZSBhdWdtZW50Q29kZUJsb2NrKGNvZGU6IHN0cmluZywgbGFuZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGFzc2VzID1cbiAgICAgIGxhbmcuc3RhcnRzV2l0aCgnZGlmZicpICYmIFByaXNtLmxhbmd1YWdlc1snZGlmZiddXG4gICAgICAgID8gYGxhbmd1YWdlLSR7bGFuZ30gZGlmZi1oaWdobGlnaHRgXG4gICAgICAgIDogYGxhbmd1YWdlLSR7bGFuZy5yZXBsYWNlKCdkaWZmLScsICcnKX1gO1xuICAgIHJldHVybiBgPHByZSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj48Y29kZSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2NvZGV9PC9jb2RlPjwvcHJlPmA7XG4gIH1cblxuICBvdmVycmlkZSBnZXRIaWdobGlnaHRFeHRlbnNpb24oKSB7XG4gICAgcmV0dXJuIG1hcmtlZEhpZ2hsaWdodCh7XG4gICAgICBhc3luYzogdHJ1ZSxcbiAgICAgIGhpZ2hsaWdodDogKGNvZGU6IHN0cmluZywgbGFuZzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBkaWZmID0gbGFuZz8uc3RhcnRzV2l0aCgnZGlmZi0nKTtcbiAgICAgICAgbGFuZyA9IGRpZmYgPyBsYW5nLnJlcGxhY2UoJ2RpZmYtJywgJycpIDogbGFuZyB8fCAndHlwZXNjcmlwdCc7XG5cbiAgICAgICAgaWYgKGRpZmYgJiYgIVByaXNtLmxhbmd1YWdlc1snZGlmZiddKSB7XG4gICAgICAgICAgZGlmZiA9IGZhbHNlO1xuICAgICAgICAgIGNvbnNvbGUud2FybihgTm90aWNlOlxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFRoZSBcXGBkaWZmXFxgIGxhbmd1YWdlIGFuZCBwbHVnaW4gYXJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIHByb3ZpZGVkIHNldHVwLlxuICAgIFRvIGVuYWJsZSBpdCwgYWRkIHRoZSBmb2xsb3dpbmcgaW1wb3J0cyB5b3VyIFxcYGFwcC5jb25maWcudHNcXGA6XG4gICAgICBpbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1kaWZmJztcbiAgICAgIGltcG9ydCAncHJpc21qcy9wbHVnaW5zL2RpZmYtaGlnaGxpZ2h0L3ByaXNtLWRpZmYtaGlnaGxpZ2h0JztcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFQcmlzbS5sYW5ndWFnZXNbbGFuZ10pIHtcbiAgICAgICAgICBpZiAobGFuZyAhPT0gJ21lcm1haWQnKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYE5vdGljZTpcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBUaGUgcmVxdWVzdGVkIGxhbmd1YWdlICcke2xhbmd9JyBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBwcm92aWRlZCBzZXR1cC5cbiAgICBUbyBlbmFibGUgaXQsIGFkZCB0aGUgZm9sbG93aW5nIGltcG9ydCB5b3VyIFxcYGFwcC5jb25maWcudHNcXGA6XG4gICAgICBpbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS0ke2xhbmd9JztcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcmlzbS5oaWdobGlnaHQoXG4gICAgICAgICAgY29kZSxcbiAgICAgICAgICBkaWZmID8gUHJpc20ubGFuZ3VhZ2VzWydkaWZmJ10gOiBQcmlzbS5sYW5ndWFnZXNbbGFuZ10sXG4gICAgICAgICAgbGFuZ1xuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,77 @@
|
|
|
1
|
-
import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';
|
|
1
|
+
import { MarkedContentHighlighter, ContentRenderer, NoopContentRenderer } from '@analogjs/content';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { markedHighlight } from 'marked-highlight';
|
|
2
5
|
import 'prismjs';
|
|
3
|
-
import 'prismjs/plugins/toolbar/prism-toolbar
|
|
4
|
-
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard
|
|
6
|
+
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
7
|
+
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
8
|
+
|
|
9
|
+
class PrismHighlighter extends MarkedContentHighlighter {
|
|
10
|
+
augmentCodeBlock(code, lang) {
|
|
11
|
+
const classes = lang.startsWith('diff') && Prism.languages['diff']
|
|
12
|
+
? `language-${lang} diff-highlight`
|
|
13
|
+
: `language-${lang.replace('diff-', '')}`;
|
|
14
|
+
return `<pre class="${classes}"><code class="${classes}">${code}</code></pre>`;
|
|
15
|
+
}
|
|
16
|
+
getHighlightExtension() {
|
|
17
|
+
return markedHighlight({
|
|
18
|
+
async: true,
|
|
19
|
+
highlight: (code, lang) => {
|
|
20
|
+
let diff = lang?.startsWith('diff-');
|
|
21
|
+
lang = diff ? lang.replace('diff-', '') : lang || 'typescript';
|
|
22
|
+
if (diff && !Prism.languages['diff']) {
|
|
23
|
+
diff = false;
|
|
24
|
+
console.warn(`Notice:
|
|
25
|
+
---------------------------------------------------------------------------------------
|
|
26
|
+
The \`diff\` language and plugin are not available in the provided setup.
|
|
27
|
+
To enable it, add the following imports your \`app.config.ts\`:
|
|
28
|
+
import 'prismjs/components/prism-diff';
|
|
29
|
+
import 'prismjs/plugins/diff-highlight/prism-diff-highlight';
|
|
30
|
+
---------------------------------------------------------------------------------------
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
if (!Prism.languages[lang]) {
|
|
34
|
+
if (lang !== 'mermaid') {
|
|
35
|
+
console.warn(`Notice:
|
|
36
|
+
---------------------------------------------------------------------------------------
|
|
37
|
+
The requested language '${lang}' is not available in the provided setup.
|
|
38
|
+
To enable it, add the following import your \`app.config.ts\`:
|
|
39
|
+
import 'prismjs/components/prism-${lang}';
|
|
40
|
+
---------------------------------------------------------------------------------------
|
|
41
|
+
`);
|
|
42
|
+
}
|
|
43
|
+
return code;
|
|
44
|
+
}
|
|
45
|
+
return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter }); }
|
|
51
|
+
}
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, decorators: [{
|
|
53
|
+
type: Injectable
|
|
54
|
+
}] });
|
|
55
|
+
|
|
56
|
+
"use strict";
|
|
57
|
+
(function () {
|
|
58
|
+
if (typeof Prism === 'undefined') {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
Prism.languages.angular = Prism.languages.extend('markup', {
|
|
62
|
+
keyword: /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\b/,
|
|
63
|
+
operator: /\b(?:on|when)\b/,
|
|
64
|
+
number: {
|
|
65
|
+
pattern: /\b(minimum|after)\s+\d+(?:s|ms|)/gi,
|
|
66
|
+
lookbehind: true,
|
|
67
|
+
},
|
|
68
|
+
builtin: {
|
|
69
|
+
pattern: /\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,
|
|
70
|
+
},
|
|
71
|
+
function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
|
|
72
|
+
});
|
|
73
|
+
Prism.languages.ng = Prism.languages.angular;
|
|
74
|
+
})();
|
|
5
75
|
|
|
6
76
|
function withPrismHighlighter() {
|
|
7
77
|
return [{ provide: ContentRenderer, useClass: NoopContentRenderer }];
|
|
@@ -11,5 +81,5 @@ function withPrismHighlighter() {
|
|
|
11
81
|
* Generated bundle index. Do not edit.
|
|
12
82
|
*/
|
|
13
83
|
|
|
14
|
-
export { withPrismHighlighter };
|
|
84
|
+
export { PrismHighlighter, withPrismHighlighter };
|
|
15
85
|
//# sourceMappingURL=analogjs-content-prism-highlighter.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analogjs-content-prism-highlighter.mjs","sources":["../../../../packages/content/prism-highlighter/src/index.ts","../../../../packages/content/prism-highlighter/src/analogjs-content-prism-highlighter.ts"],"sourcesContent":["import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport 'prismjs';\nimport 'prismjs/plugins/toolbar/prism-toolbar
|
|
1
|
+
{"version":3,"file":"analogjs-content-prism-highlighter.mjs","sources":["../../../../packages/content/prism-highlighter/src/lib/prism-highlighter.ts","../../../../packages/content/prism-highlighter/src/lib/prism/angular.js","../../../../packages/content/prism-highlighter/src/index.ts","../../../../packages/content/prism-highlighter/src/analogjs-content-prism-highlighter.ts"],"sourcesContent":["import { MarkedContentHighlighter } from '@analogjs/content';\nimport { Injectable } from '@angular/core';\nimport { markedHighlight } from 'marked-highlight';\n\ndeclare const Prism: typeof import('prismjs');\n\n@Injectable()\nexport class PrismHighlighter extends MarkedContentHighlighter {\n override augmentCodeBlock(code: string, lang: string): string {\n const classes =\n lang.startsWith('diff') && Prism.languages['diff']\n ? `language-${lang} diff-highlight`\n : `language-${lang.replace('diff-', '')}`;\n return `<pre class=\"${classes}\"><code class=\"${classes}\">${code}</code></pre>`;\n }\n\n override getHighlightExtension() {\n return markedHighlight({\n async: true,\n highlight: (code: string, lang: string) => {\n let diff = lang?.startsWith('diff-');\n lang = diff ? lang.replace('diff-', '') : lang || 'typescript';\n\n if (diff && !Prism.languages['diff']) {\n diff = false;\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The \\`diff\\` language and plugin are not available in the provided setup.\n To enable it, add the following imports your \\`app.config.ts\\`:\n import 'prismjs/components/prism-diff';\n import 'prismjs/plugins/diff-highlight/prism-diff-highlight';\n ---------------------------------------------------------------------------------------\n `);\n }\n\n if (!Prism.languages[lang]) {\n if (lang !== 'mermaid') {\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The requested language '${lang}' is not available in the provided setup.\n To enable it, add the following import your \\`app.config.ts\\`:\n import 'prismjs/components/prism-${lang}';\n ---------------------------------------------------------------------------------------\n `);\n }\n return code;\n }\n return Prism.highlight(\n code,\n diff ? Prism.languages['diff'] : Prism.languages[lang],\n lang\n );\n },\n });\n }\n}\n","(function () {\n if (typeof Prism === 'undefined') {\n return;\n }\n\n Prism.languages.angular = Prism.languages.extend('markup', {\n keyword:\n /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\\b/,\n operator: /\\b(?:on|when)\\b/,\n number: {\n pattern: /\\b(minimum|after)\\s+\\d+(?:s|ms|)/gi,\n lookbehind: true,\n },\n builtin: {\n pattern:\n /\\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,\n },\n function:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n });\n\n Prism.languages.ng = Prism.languages.angular;\n})();\n","import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport { PrismHighlighter } from './lib/prism-highlighter';\n\nimport 'prismjs';\nimport 'prismjs/plugins/toolbar/prism-toolbar';\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';\nimport './lib/prism/angular';\n\nexport { PrismHighlighter };\n\nexport function withPrismHighlighter(): Provider[] {\n return [{ provide: ContentRenderer, useClass: NoopContentRenderer }];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAOM,MAAO,gBAAiB,SAAQ,wBAAwB,CAAA;IACnD,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAA;AAClD,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;cAC9C,CAAY,SAAA,EAAA,IAAI,CAAiB,eAAA,CAAA;cACjC,CAAY,SAAA,EAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAE,CAAC;AAC9C,QAAA,OAAO,eAAe,OAAO,CAAA,eAAA,EAAkB,OAAO,CAAK,EAAA,EAAA,IAAI,eAAe,CAAC;KAChF;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,OAAO,eAAe,CAAC;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,SAAS,EAAE,CAAC,IAAY,EAAE,IAAY,KAAI;gBACxC,IAAI,IAAI,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,gBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;gBAE/D,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACpC,IAAI,GAAG,KAAK,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,CAAA;;;;;;;AAOV,YAAA,CAAA,CAAC,CAAC;iBACN;gBAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;wBACtB,OAAO,CAAC,IAAI,CAAC,CAAA;;8BAEK,IAAI,CAAA;;yCAEO,IAAI,CAAA;;AAE9B,cAAA,CAAA,CAAC,CAAC;qBACN;AACD,oBAAA,OAAO,IAAI,CAAC;iBACb;AACD,gBAAA,OAAO,KAAK,CAAC,SAAS,CACpB,IAAI,EACJ,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EACtD,IAAI,CACL,CAAC;aACH;AACF,SAAA,CAAC,CAAC;KACJ;8GA/CU,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;;ACNX,CAAC,YAAA;AACC,IAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAChC,OAAO;KACR;AAED,IAAA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzD,QAAA,OAAO,EACL,qEAAqE;AACvE,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EACL,qEAAqE;AACxE,SAAA;AACD,QAAA,QAAQ,EACN,mGAAmG;AACtG,KAAA,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;AAC/C,CAAC,GAAG;;SCXY,oBAAoB,GAAA;IAClC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACvE;;ACbA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Provider } from '@angular/core';
|
|
2
|
+
import { PrismHighlighter } from './lib/prism-highlighter';
|
|
2
3
|
import 'prismjs';
|
|
3
|
-
import 'prismjs/plugins/toolbar/prism-toolbar
|
|
4
|
-
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard
|
|
4
|
+
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
5
|
+
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
6
|
+
import './lib/prism/angular';
|
|
7
|
+
export { PrismHighlighter };
|
|
5
8
|
export declare function withPrismHighlighter(): Provider[];
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MarkedContentHighlighter } from '@analogjs/content';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class PrismHighlighter extends MarkedContentHighlighter {
|
|
4
|
+
augmentCodeBlock(code: string, lang: string): string;
|
|
5
|
+
getHighlightExtension(): import("marked").marked.MarkedExtension;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PrismHighlighter, never>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PrismHighlighter>;
|
|
8
|
+
}
|