@analogjs/content 1.4.0 → 1.5.0-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/index.mjs +3 -2
- package/esm2022/lib/marked-content-highlighter.mjs +13 -0
- package/esm2022/lib/marked-setup.service.mjs +16 -52
- package/esm2022/prism-highlighter/analogjs-content-prism-highlighter.mjs +5 -0
- package/esm2022/prism-highlighter/index.mjs +7 -0
- package/esm2022/prism-highlighter/lib/prism/angular.mjs +20 -0
- package/esm2022/prism-highlighter/lib/prism-highlighter.mjs +61 -0
- package/esm2022/shiki-highlighter/analogjs-content-shiki-highlighter.mjs +5 -0
- package/esm2022/shiki-highlighter/index.mjs +30 -0
- package/esm2022/shiki-highlighter/lib/shiki-highlighter.mjs +59 -0
- package/fesm2022/analogjs-content-prism-highlighter.mjs +91 -0
- package/fesm2022/analogjs-content-prism-highlighter.mjs.map +1 -0
- package/fesm2022/analogjs-content-shiki-highlighter.mjs +93 -0
- package/fesm2022/analogjs-content-shiki-highlighter.mjs.map +1 -0
- package/fesm2022/analogjs-content.mjs +24 -69
- package/fesm2022/analogjs-content.mjs.map +1 -1
- package/index.d.ts +2 -1
- package/lib/marked-content-highlighter.d.ts +19 -0
- package/lib/marked-setup.service.d.ts +1 -10
- package/package.json +18 -2
- package/plugin/README.md +11 -0
- package/{migrations/migration.json → plugin/migrations.json} +24 -2
- package/plugin/src/index.d.ts +2 -0
- package/plugin/src/index.js +4 -0
- package/plugin/src/index.js.map +1 -0
- package/plugin/src/migrations/update-markdown-renderer-feature/compat.d.ts +2 -0
- package/plugin/src/migrations/update-markdown-renderer-feature/compat.js +6 -0
- package/plugin/src/migrations/update-markdown-renderer-feature/compat.js.map +1 -0
- package/plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.d.ts +2 -0
- package/plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.js +39 -0
- package/plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.js.map +1 -0
- package/prism-highlighter/README.md +3 -0
- package/prism-highlighter/index.d.ts +4 -0
- package/prism-highlighter/lib/prism-highlighter.d.ts +18 -0
- package/shiki-highlighter/README.md +3 -0
- package/shiki-highlighter/index.d.ts +12 -0
- package/shiki-highlighter/lib/shiki-highlighter.d.ts +21 -0
- package/esm2022/lib/prism/angular.mjs +0 -20
- /package/{lib → prism-highlighter/lib}/prism/angular.d.ts +0 -0
package/esm2022/index.mjs
CHANGED
|
@@ -2,9 +2,10 @@ export { AnchorNavigationDirective } from './lib/anchor-navigation.directive';
|
|
|
2
2
|
export { injectContent } from './lib/content';
|
|
3
3
|
export { ContentRenderer } from './lib/content-renderer';
|
|
4
4
|
export { injectContentFiles } from './lib/inject-content-files';
|
|
5
|
-
export { MarkdownContentRendererService, provideContent, withMarkdownRenderer, } from './lib/markdown-content-renderer.service';
|
|
5
|
+
export { MarkdownContentRendererService, provideContent, withMarkdownRenderer, MERMAID_IMPORT_TOKEN, } from './lib/markdown-content-renderer.service';
|
|
6
6
|
export { default as MarkdownRouteComponent } from './lib/markdown-route.component';
|
|
7
7
|
export { default as MarkdownComponent } from './lib/markdown.component';
|
|
8
8
|
export { parseRawContentFile } from './lib/parse-raw-content-file';
|
|
9
9
|
export { MarkedSetupService } from './lib/marked-setup.service';
|
|
10
|
-
|
|
10
|
+
export { MarkedContentHighlighter, withHighlighter, } from './lib/marked-content-highlighter';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLElBQUksaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGVBQWUsR0FDaEIsTUFBTSxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFuY2hvck5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9hbmNob3ItbmF2aWdhdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgaW5qZWN0Q29udGVudCB9IGZyb20gJy4vbGliL2NvbnRlbnQnO1xuZXhwb3J0IHsgQ29udGVudEZpbGUgfSBmcm9tICcuL2xpYi9jb250ZW50LWZpbGUnO1xuZXhwb3J0IHsgQ29udGVudFJlbmRlcmVyIH0gZnJvbSAnLi9saWIvY29udGVudC1yZW5kZXJlcic7XG5leHBvcnQgeyBpbmplY3RDb250ZW50RmlsZXMgfSBmcm9tICcuL2xpYi9pbmplY3QtY29udGVudC1maWxlcyc7XG5leHBvcnQge1xuICBNYXJrZG93bkNvbnRlbnRSZW5kZXJlclNlcnZpY2UsXG4gIHByb3ZpZGVDb250ZW50LFxuICB3aXRoTWFya2Rvd25SZW5kZXJlcixcbiAgTUVSTUFJRF9JTVBPUlRfVE9LRU4sXG59IGZyb20gJy4vbGliL21hcmtkb3duLWNvbnRlbnQtcmVuZGVyZXIuc2VydmljZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hcmtkb3duUm91dGVDb21wb25lbnQgfSBmcm9tICcuL2xpYi9tYXJrZG93bi1yb3V0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXJrZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbGliL21hcmtkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgeyBwYXJzZVJhd0NvbnRlbnRGaWxlIH0gZnJvbSAnLi9saWIvcGFyc2UtcmF3LWNvbnRlbnQtZmlsZSc7XG5leHBvcnQgeyBNYXJrZWRTZXR1cFNlcnZpY2UgfSBmcm9tICcuL2xpYi9tYXJrZWQtc2V0dXAuc2VydmljZSc7XG5leHBvcnQge1xuICBNYXJrZWRDb250ZW50SGlnaGxpZ2h0ZXIsXG4gIHdpdGhIaWdobGlnaHRlcixcbn0gZnJvbSAnLi9saWIvbWFya2VkLWNvbnRlbnQtaGlnaGxpZ2h0ZXInO1xuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Injectable, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class MarkedContentHighlighter {
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: MarkedContentHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: MarkedContentHighlighter }); }
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: MarkedContentHighlighter, decorators: [{
|
|
8
|
+
type: Injectable
|
|
9
|
+
}] });
|
|
10
|
+
export function withHighlighter(provider) {
|
|
11
|
+
return { provide: MarkedContentHighlighter, ...provider };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLWNvbnRlbnQtaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9saWIvbWFya2VkLWNvbnRlbnQtaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsR0FJWCxNQUFNLGVBQWUsQ0FBQzs7QUFPdkIsTUFBTSxPQUFnQix3QkFBd0I7OEdBQXhCLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUQ3QyxVQUFVOztBQUtYLE1BQU0sVUFBVSxlQUFlLENBQzdCLFFBUW1DO0lBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxRQUFRLEVBQWMsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWJzdHJhY3RUeXBlLFxuICBJbmplY3RhYmxlLFxuICBQcm92aWRlcixcbiAgUHJvdmlkZXJUb2tlbixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2VkQ29udGVudEhpZ2hsaWdodGVyIHtcbiAgYXVnbWVudENvZGVCbG9jaz8oY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYXJrZWRDb250ZW50SGlnaGxpZ2h0ZXIge1xuICBhYnN0cmFjdCBnZXRIaWdobGlnaHRFeHRlbnNpb24oKTogaW1wb3J0KCdtYXJrZWQnKS5tYXJrZWQuTWFya2VkRXh0ZW5zaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aEhpZ2hsaWdodGVyKFxuICBwcm92aWRlcjogKFxuICAgIHwgeyB1c2VWYWx1ZTogTWFya2VkQ29udGVudEhpZ2hsaWdodGVyIH1cbiAgICB8IHtcbiAgICAgICAgdXNlQ2xhc3M6XG4gICAgICAgICAgfCBUeXBlPE1hcmtlZENvbnRlbnRIaWdobGlnaHRlcj5cbiAgICAgICAgICB8IEFic3RyYWN0VHlwZTxNYXJrZWRDb250ZW50SGlnaGxpZ2h0ZXI+O1xuICAgICAgfVxuICAgIHwgeyB1c2VGYWN0b3J5OiAoLi4uZGVwczogYW55W10pID0+IE1hcmtlZENvbnRlbnRIaWdobGlnaHRlciB9XG4gICkgJiB7IGRlcHM/OiBQcm92aWRlclRva2VuPGFueT5bXSB9XG4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IE1hcmtlZENvbnRlbnRIaWdobGlnaHRlciwgLi4ucHJvdmlkZXIgfSBhcyBQcm92aWRlcjtcbn1cbiJdfQ==
|
|
@@ -2,23 +2,17 @@
|
|
|
2
2
|
* Credit goes to Scully for original implementation
|
|
3
3
|
* https://github.com/scullyio/scully/blob/main/libs/scully/src/lib/fileHanderPlugins/markdown.ts
|
|
4
4
|
*/
|
|
5
|
-
import { Injectable } from '@angular/core';
|
|
5
|
+
import { inject, Injectable } from '@angular/core';
|
|
6
6
|
import { marked } from 'marked';
|
|
7
7
|
import { gfmHeadingId } from 'marked-gfm-heading-id';
|
|
8
|
-
import {
|
|
9
|
-
import '
|
|
10
|
-
import 'prismjs/components/prism-bash';
|
|
11
|
-
import 'prismjs/components/prism-css';
|
|
12
|
-
import 'prismjs/components/prism-javascript';
|
|
13
|
-
import 'prismjs/components/prism-json';
|
|
14
|
-
import 'prismjs/components/prism-markup';
|
|
15
|
-
import 'prismjs/components/prism-typescript';
|
|
16
|
-
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
17
|
-
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
18
|
-
import './prism/angular';
|
|
8
|
+
import { mangle } from 'marked-mangle';
|
|
9
|
+
import { MarkedContentHighlighter } from './marked-content-highlighter';
|
|
19
10
|
import * as i0 from "@angular/core";
|
|
20
11
|
export class MarkedSetupService {
|
|
21
12
|
constructor() {
|
|
13
|
+
this.highlighter = inject(MarkedContentHighlighter, {
|
|
14
|
+
optional: true,
|
|
15
|
+
});
|
|
22
16
|
const renderer = new marked.Renderer();
|
|
23
17
|
renderer.code = (code, lang) => {
|
|
24
18
|
// Let's do a language based detection like on GitHub
|
|
@@ -29,50 +23,20 @@ export class MarkedSetupService {
|
|
|
29
23
|
if (!lang) {
|
|
30
24
|
return '<pre><code>' + code + '</code></pre>';
|
|
31
25
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return `<pre class="
|
|
26
|
+
if (this.highlighter?.augmentCodeBlock) {
|
|
27
|
+
return this.highlighter?.augmentCodeBlock(code, lang);
|
|
28
|
+
}
|
|
29
|
+
return `<pre class="language-${lang}"><code class="language-${lang}">${code}</code></pre>`;
|
|
36
30
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (diff && !Prism.languages['diff']) {
|
|
43
|
-
diff = false;
|
|
44
|
-
console.warn(`Notice:
|
|
45
|
-
---------------------------------------------------------------------------------------
|
|
46
|
-
The \`diff\` language and plugin are not available in the provided setup.
|
|
47
|
-
To enable it, add the following imports your \`main.ts\`:
|
|
48
|
-
import 'prismjs/components/prism-diff';
|
|
49
|
-
import 'prismjs/plugins/diff-highlight/prism-diff-highlight';
|
|
50
|
-
---------------------------------------------------------------------------------------
|
|
51
|
-
`);
|
|
52
|
-
}
|
|
53
|
-
if (!Prism.languages[lang]) {
|
|
54
|
-
if (lang !== 'mermaid') {
|
|
55
|
-
console.warn(`Notice:
|
|
56
|
-
---------------------------------------------------------------------------------------
|
|
57
|
-
The requested language '${lang}' is not available in the provided setup.
|
|
58
|
-
To enable it, add the following import your \`main.ts\`:
|
|
59
|
-
import 'prismjs/components/prism-${lang}';
|
|
60
|
-
---------------------------------------------------------------------------------------
|
|
61
|
-
`);
|
|
62
|
-
}
|
|
63
|
-
return code;
|
|
64
|
-
}
|
|
65
|
-
return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
|
|
66
|
-
},
|
|
67
|
-
}), {
|
|
31
|
+
const extensions = [gfmHeadingId(), mangle()];
|
|
32
|
+
if (this.highlighter) {
|
|
33
|
+
extensions.push(this.highlighter.getHighlightExtension());
|
|
34
|
+
}
|
|
35
|
+
marked.use(...extensions, {
|
|
68
36
|
renderer,
|
|
69
37
|
pedantic: false,
|
|
70
38
|
gfm: true,
|
|
71
39
|
breaks: false,
|
|
72
|
-
sanitize: false,
|
|
73
|
-
smartypants: false,
|
|
74
|
-
xhtml: false,
|
|
75
|
-
mangle: false,
|
|
76
40
|
});
|
|
77
41
|
this.marked = marked;
|
|
78
42
|
}
|
|
@@ -85,4 +49,4 @@ export class MarkedSetupService {
|
|
|
85
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: MarkedSetupService, decorators: [{
|
|
86
50
|
type: Injectable
|
|
87
51
|
}], ctorParameters: () => [] });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLXNldHVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9saWIvbWFya2VkLXNldHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLGtCQUFrQjtJQU03QjtRQUppQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRTtZQUM5RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUdELE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQUU7WUFDN0MscURBQXFEO1lBQ3JELG9EQUFvRDtZQUNwRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO1lBQ25ELENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxhQUFhLEdBQUcsSUFBSSxHQUFHLGVBQWUsQ0FBQztZQUNoRCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELE9BQU8sd0JBQXdCLElBQUksMkJBQTJCLElBQUksS0FBSyxJQUFJLGVBQWUsQ0FBQztRQUM3RixDQUFDLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFOUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFBRTtZQUN4QixRQUFRO1lBQ1IsUUFBUSxFQUFFLEtBQUs7WUFDZixHQUFHLEVBQUUsSUFBSTtZQUNULE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOzhHQTVDVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlZGl0IGdvZXMgdG8gU2N1bGx5IGZvciBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvblxuICogaHR0cHM6Ly9naXRodWIuY29tL3NjdWxseWlvL3NjdWxseS9ibG9iL21haW4vbGlicy9zY3VsbHkvc3JjL2xpYi9maWxlSGFuZGVyUGx1Z2lucy9tYXJrZG93bi50c1xuICovXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcmtlZCB9IGZyb20gJ21hcmtlZCc7XG5pbXBvcnQgeyBnZm1IZWFkaW5nSWQgfSBmcm9tICdtYXJrZWQtZ2ZtLWhlYWRpbmctaWQnO1xuaW1wb3J0IHsgbWFuZ2xlIH0gZnJvbSAnbWFya2VkLW1hbmdsZSc7XG5pbXBvcnQgeyBNYXJrZWRDb250ZW50SGlnaGxpZ2h0ZXIgfSBmcm9tICcuL21hcmtlZC1jb250ZW50LWhpZ2hsaWdodGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcmtlZFNldHVwU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2VkOiB0eXBlb2YgbWFya2VkO1xuICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodGVyID0gaW5qZWN0KE1hcmtlZENvbnRlbnRIaWdobGlnaHRlciwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCByZW5kZXJlciA9IG5ldyBtYXJrZWQuUmVuZGVyZXIoKTtcbiAgICByZW5kZXJlci5jb2RlID0gKGNvZGU6IHN0cmluZywgbGFuZzogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBMZXQncyBkbyBhIGxhbmd1YWdlIGJhc2VkIGRldGVjdGlvbiBsaWtlIG9uIEdpdEh1YlxuICAgICAgLy8gU28gd2UgY2FuIHN0aWxsIGhhdmUgbm9uLWludGVycHJldGVkIG1lcm1haWQgY29kZVxuICAgICAgaWYgKGxhbmcgPT09ICdtZXJtYWlkJykge1xuICAgICAgICByZXR1cm4gJzxwcmUgY2xhc3M9XCJtZXJtYWlkXCI+JyArIGNvZGUgKyAnPC9wcmU+JztcbiAgICAgIH1cblxuICAgICAgaWYgKCFsYW5nKSB7XG4gICAgICAgIHJldHVybiAnPHByZT48Y29kZT4nICsgY29kZSArICc8L2NvZGU+PC9wcmU+JztcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZXI/LmF1Z21lbnRDb2RlQmxvY2spIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0ZXI/LmF1Z21lbnRDb2RlQmxvY2soY29kZSwgbGFuZyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBgPHByZSBjbGFzcz1cImxhbmd1YWdlLSR7bGFuZ31cIj48Y29kZSBjbGFzcz1cImxhbmd1YWdlLSR7bGFuZ31cIj4ke2NvZGV9PC9jb2RlPjwvcHJlPmA7XG4gICAgfTtcblxuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBbZ2ZtSGVhZGluZ0lkKCksIG1hbmdsZSgpXTtcblxuICAgIGlmICh0aGlzLmhpZ2hsaWdodGVyKSB7XG4gICAgICBleHRlbnNpb25zLnB1c2godGhpcy5oaWdobGlnaHRlci5nZXRIaWdobGlnaHRFeHRlbnNpb24oKSk7XG4gICAgfVxuXG4gICAgbWFya2VkLnVzZSguLi5leHRlbnNpb25zLCB7XG4gICAgICByZW5kZXJlcixcbiAgICAgIHBlZGFudGljOiBmYWxzZSxcbiAgICAgIGdmbTogdHJ1ZSxcbiAgICAgIGJyZWFrczogZmFsc2UsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcmtlZCA9IG1hcmtlZDtcbiAgfVxuXG4gIGdldE1hcmtlZEluc3RhbmNlKCk6IHR5cGVvZiBtYXJrZWQge1xuICAgIHJldHVybiB0aGlzLm1hcmtlZDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbG9nanMtY29udGVudC1wcmlzbS1oaWdobGlnaHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvcHJpc20taGlnaGxpZ2h0ZXIvc3JjL2FuYWxvZ2pzLWNvbnRlbnQtcHJpc20taGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { withHighlighter } from '@analogjs/content';
|
|
2
|
+
import { PrismHighlighter } from './lib/prism-highlighter';
|
|
3
|
+
export { PrismHighlighter };
|
|
4
|
+
export function withPrismHighlighter() {
|
|
5
|
+
return withHighlighter({ useClass: PrismHighlighter });
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3ByaXNtLWhpZ2hsaWdodGVyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7QUFFNUIsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLGVBQWUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdpdGhIaWdobGlnaHRlciB9IGZyb20gJ0BhbmFsb2dqcy9jb250ZW50JztcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmlzbUhpZ2hsaWdodGVyIH0gZnJvbSAnLi9saWIvcHJpc20taGlnaGxpZ2h0ZXInO1xuXG5leHBvcnQgeyBQcmlzbUhpZ2hsaWdodGVyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUHJpc21IaWdobGlnaHRlcigpOiBQcm92aWRlciB7XG4gIHJldHVybiB3aXRoSGlnaGxpZ2h0ZXIoeyB1c2VDbGFzczogUHJpc21IaWdobGlnaHRlciB9KTtcbn1cbiJdfQ==
|
|
@@ -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,61 @@
|
|
|
1
|
+
import { MarkedContentHighlighter } from '@analogjs/content';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { markedHighlight } from 'marked-highlight';
|
|
4
|
+
import 'prismjs';
|
|
5
|
+
import 'prismjs/components/prism-bash';
|
|
6
|
+
import 'prismjs/components/prism-css';
|
|
7
|
+
import 'prismjs/components/prism-javascript';
|
|
8
|
+
import 'prismjs/components/prism-json';
|
|
9
|
+
import 'prismjs/components/prism-markup';
|
|
10
|
+
import 'prismjs/components/prism-typescript';
|
|
11
|
+
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
12
|
+
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
13
|
+
import './prism/angular';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
export class PrismHighlighter extends MarkedContentHighlighter {
|
|
16
|
+
augmentCodeBlock(code, lang) {
|
|
17
|
+
const classes = lang.startsWith('diff') && Prism.languages['diff']
|
|
18
|
+
? `language-${lang} diff-highlight`
|
|
19
|
+
: `language-${lang.replace('diff-', '')}`;
|
|
20
|
+
return `<pre class="${classes}"><code class="${classes}">${code}</code></pre>`;
|
|
21
|
+
}
|
|
22
|
+
getHighlightExtension() {
|
|
23
|
+
return markedHighlight({
|
|
24
|
+
async: true,
|
|
25
|
+
highlight: (code, lang) => {
|
|
26
|
+
let diff = lang?.startsWith('diff-');
|
|
27
|
+
lang = diff ? lang.replace('diff-', '') : lang || 'typescript';
|
|
28
|
+
if (diff && !Prism.languages['diff']) {
|
|
29
|
+
diff = false;
|
|
30
|
+
console.warn(`Notice:
|
|
31
|
+
---------------------------------------------------------------------------------------
|
|
32
|
+
The \`diff\` language and plugin are not available in the provided setup.
|
|
33
|
+
To enable it, add the following imports your \`main.ts\`:
|
|
34
|
+
import 'prismjs/components/prism-diff';
|
|
35
|
+
import 'prismjs/plugins/diff-highlight/prism-diff-highlight';
|
|
36
|
+
---------------------------------------------------------------------------------------
|
|
37
|
+
`);
|
|
38
|
+
}
|
|
39
|
+
if (!Prism.languages[lang]) {
|
|
40
|
+
if (lang !== 'mermaid') {
|
|
41
|
+
console.warn(`Notice:
|
|
42
|
+
---------------------------------------------------------------------------------------
|
|
43
|
+
The requested language '${lang}' is not available in the provided setup.
|
|
44
|
+
To enable it, add the following import your \`main.ts\`:
|
|
45
|
+
import 'prismjs/components/prism-${lang}';
|
|
46
|
+
---------------------------------------------------------------------------------------
|
|
47
|
+
`);
|
|
48
|
+
}
|
|
49
|
+
return code;
|
|
50
|
+
}
|
|
51
|
+
return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
56
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter }); }
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, decorators: [{
|
|
59
|
+
type: Injectable
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpc20taGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3ByaXNtLWhpZ2hsaWdodGVyL3NyYy9saWIvcHJpc20taGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxTQUFTLENBQUM7QUFDakIsT0FBTywrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTywrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTywyREFBMkQsQ0FBQztBQUNuRSxPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8saUJBQWlCLENBQUM7O0FBS3pCLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx3QkFBd0I7SUFDbkQsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDbEQsTUFBTSxPQUFPLEdBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoRCxDQUFDLENBQUMsWUFBWSxJQUFJLGlCQUFpQjtZQUNuQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlDLE9BQU8sZUFBZSxPQUFPLGtCQUFrQixPQUFPLEtBQUssSUFBSSxlQUFlLENBQUM7SUFDakYsQ0FBQztJQUVRLHFCQUFxQjtRQUM1QixPQUFPLGVBQWUsQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDckMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUM7Z0JBRS9ELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUM7Ozs7Ozs7YUFPVixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQzs7OEJBRUssSUFBSTs7eUNBRU8sSUFBSTs7ZUFFOUIsQ0FBQyxDQUFDO29CQUNQLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQ3BCLElBQUksRUFDSixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3RELElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0NVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFya2VkQ29udGVudEhpZ2hsaWdodGVyIH0gZnJvbSAnQGFuYWxvZ2pzL2NvbnRlbnQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFya2VkSGlnaGxpZ2h0IH0gZnJvbSAnbWFya2VkLWhpZ2hsaWdodCc7XG5cbmltcG9ydCAncHJpc21qcyc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1iYXNoJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWNzcyc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1qYXZhc2NyaXB0JztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWpzb24nO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tbWFya3VwJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXR5cGVzY3JpcHQnO1xuaW1wb3J0ICdwcmlzbWpzL3BsdWdpbnMvY29weS10by1jbGlwYm9hcmQvcHJpc20tY29weS10by1jbGlwYm9hcmQnO1xuaW1wb3J0ICdwcmlzbWpzL3BsdWdpbnMvdG9vbGJhci9wcmlzbS10b29sYmFyJztcbmltcG9ydCAnLi9wcmlzbS9hbmd1bGFyJztcblxuZGVjbGFyZSBjb25zdCBQcmlzbTogdHlwZW9mIGltcG9ydCgncHJpc21qcycpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJpc21IaWdobGlnaHRlciBleHRlbmRzIE1hcmtlZENvbnRlbnRIaWdobGlnaHRlciB7XG4gIG92ZXJyaWRlIGF1Z21lbnRDb2RlQmxvY2soY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsYXNzZXMgPVxuICAgICAgbGFuZy5zdGFydHNXaXRoKCdkaWZmJykgJiYgUHJpc20ubGFuZ3VhZ2VzWydkaWZmJ11cbiAgICAgICAgPyBgbGFuZ3VhZ2UtJHtsYW5nfSBkaWZmLWhpZ2hsaWdodGBcbiAgICAgICAgOiBgbGFuZ3VhZ2UtJHtsYW5nLnJlcGxhY2UoJ2RpZmYtJywgJycpfWA7XG4gICAgcmV0dXJuIGA8cHJlIGNsYXNzPVwiJHtjbGFzc2VzfVwiPjxjb2RlIGNsYXNzPVwiJHtjbGFzc2VzfVwiPiR7Y29kZX08L2NvZGU+PC9wcmU+YDtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEhpZ2hsaWdodEV4dGVuc2lvbigpIHtcbiAgICByZXR1cm4gbWFya2VkSGlnaGxpZ2h0KHtcbiAgICAgIGFzeW5jOiB0cnVlLFxuICAgICAgaGlnaGxpZ2h0OiAoY29kZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGRpZmYgPSBsYW5nPy5zdGFydHNXaXRoKCdkaWZmLScpO1xuICAgICAgICBsYW5nID0gZGlmZiA/IGxhbmcucmVwbGFjZSgnZGlmZi0nLCAnJykgOiBsYW5nIHx8ICd0eXBlc2NyaXB0JztcblxuICAgICAgICBpZiAoZGlmZiAmJiAhUHJpc20ubGFuZ3VhZ2VzWydkaWZmJ10pIHtcbiAgICAgICAgICBkaWZmID0gZmFsc2U7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBOb3RpY2U6XG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgVGhlIFxcYGRpZmZcXGAgbGFuZ3VhZ2UgYW5kIHBsdWdpbiBhcmUgbm90IGF2YWlsYWJsZSBpbiB0aGUgcHJvdmlkZWQgc2V0dXAuXG4gICAgVG8gZW5hYmxlIGl0LCBhZGQgdGhlIGZvbGxvd2luZyBpbXBvcnRzIHlvdXIgXFxgbWFpbi50c1xcYDpcbiAgICAgIGltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWRpZmYnO1xuICAgICAgaW1wb3J0ICdwcmlzbWpzL3BsdWdpbnMvZGlmZi1oaWdobGlnaHQvcHJpc20tZGlmZi1oaWdobGlnaHQnO1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVByaXNtLmxhbmd1YWdlc1tsYW5nXSkge1xuICAgICAgICAgIGlmIChsYW5nICE9PSAnbWVybWFpZCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTm90aWNlOlxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFRoZSByZXF1ZXN0ZWQgbGFuZ3VhZ2UgJyR7bGFuZ30nIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHByb3ZpZGVkIHNldHVwLlxuICAgIFRvIGVuYWJsZSBpdCwgYWRkIHRoZSBmb2xsb3dpbmcgaW1wb3J0IHlvdXIgXFxgbWFpbi50c1xcYDpcbiAgICAgIGltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLSR7bGFuZ30nO1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICBgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByaXNtLmhpZ2hsaWdodChcbiAgICAgICAgICBjb2RlLFxuICAgICAgICAgIGRpZmYgPyBQcmlzbS5sYW5ndWFnZXNbJ2RpZmYnXSA6IFByaXNtLmxhbmd1YWdlc1tsYW5nXSxcbiAgICAgICAgICBsYW5nXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbG9nanMtY29udGVudC1zaGlraS1oaWdobGlnaHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc2hpa2ktaGlnaGxpZ2h0ZXIvc3JjL2FuYWxvZ2pzLWNvbnRlbnQtc2hpa2ktaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { withHighlighter } from '@analogjs/content';
|
|
2
|
+
import { defaultHighlighterOptions, SHIKI_CONTAINER_OPTION, SHIKI_HIGHLIGHT_OPTIONS, SHIKI_HIGHLIGHTER_OPTIONS, ShikiHighlighter, } from './lib/shiki-highlighter';
|
|
3
|
+
export { ShikiHighlighter };
|
|
4
|
+
export function withShikiHighlighter({ highlighter = {}, highlight = {}, container = '%s', } = {}) {
|
|
5
|
+
if (!highlighter.themes) {
|
|
6
|
+
if (highlight.theme) {
|
|
7
|
+
highlighter.themes = [highlight.theme];
|
|
8
|
+
}
|
|
9
|
+
else if (highlight.themes && typeof highlight.themes === 'object') {
|
|
10
|
+
highlighter.themes = Object.values(highlight.themes);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
highlighter.themes = defaultHighlighterOptions.themes;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (!highlighter.langs) {
|
|
17
|
+
highlighter.langs = defaultHighlighterOptions.langs;
|
|
18
|
+
}
|
|
19
|
+
if (highlighter.additionalLangs) {
|
|
20
|
+
highlighter.langs.push(...highlighter.additionalLangs);
|
|
21
|
+
delete highlighter.additionalLangs;
|
|
22
|
+
}
|
|
23
|
+
return [
|
|
24
|
+
{ provide: SHIKI_HIGHLIGHTER_OPTIONS, useValue: highlighter },
|
|
25
|
+
{ provide: SHIKI_HIGHLIGHT_OPTIONS, useValue: highlight },
|
|
26
|
+
{ provide: SHIKI_CONTAINER_OPTION, useValue: container },
|
|
27
|
+
withHighlighter({ useClass: ShikiHighlighter }),
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NoaWtpLWhpZ2hsaWdodGVyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHcEQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixnQkFBZ0IsR0FHakIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQVU1QixNQUFNLFVBQVUsb0JBQW9CLENBQUMsRUFDbkMsV0FBVyxHQUFHLEVBQUUsRUFDaEIsU0FBUyxHQUFHLEVBQUUsRUFDZCxTQUFTLEdBQUcsSUFBSSxNQUNlLEVBQUU7SUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksT0FBTyxTQUFTLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFhLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDLE1BQU0sQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkIsV0FBVyxDQUFDLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTztRQUNMLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7UUFDN0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRTtRQUN6RCxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO1FBQ3hELGVBQWUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0tBQ2hELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2l0aEhpZ2hsaWdodGVyIH0gZnJvbSAnQGFuYWxvZ2pzL2NvbnRlbnQnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQnVuZGxlZExhbmd1YWdlIH0gZnJvbSAnc2hpa2knO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEhpZ2hsaWdodGVyT3B0aW9ucyxcbiAgU0hJS0lfQ09OVEFJTkVSX09QVElPTixcbiAgU0hJS0lfSElHSExJR0hUX09QVElPTlMsXG4gIFNISUtJX0hJR0hMSUdIVEVSX09QVElPTlMsXG4gIFNoaWtpSGlnaGxpZ2h0ZXIsXG4gIHR5cGUgU2hpa2lIaWdobGlnaHRlck9wdGlvbnMsXG4gIHR5cGUgU2hpa2lIaWdobGlnaHRPcHRpb25zLFxufSBmcm9tICcuL2xpYi9zaGlraS1oaWdobGlnaHRlcic7XG5cbmV4cG9ydCB7IFNoaWtpSGlnaGxpZ2h0ZXIgfTtcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoU2hpa2lIaWdobGlnaHRlck9wdGlvbnMge1xuICBoaWdobGlnaHRlcj86IFBhcnRpYWw8U2hpa2lIaWdobGlnaHRlck9wdGlvbnM+ICYge1xuICAgIGFkZGl0aW9uYWxMYW5ncz86IEJ1bmRsZWRMYW5ndWFnZVtdO1xuICB9O1xuICBoaWdobGlnaHQ/OiBTaGlraUhpZ2hsaWdodE9wdGlvbnM7XG4gIGNvbnRhaW5lcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTaGlraUhpZ2hsaWdodGVyKHtcbiAgaGlnaGxpZ2h0ZXIgPSB7fSxcbiAgaGlnaGxpZ2h0ID0ge30sXG4gIGNvbnRhaW5lciA9ICclcycsXG59OiBXaXRoU2hpa2lIaWdobGlnaHRlck9wdGlvbnMgPSB7fSk6IFByb3ZpZGVyIHtcbiAgaWYgKCFoaWdobGlnaHRlci50aGVtZXMpIHtcbiAgICBpZiAoaGlnaGxpZ2h0LnRoZW1lKSB7XG4gICAgICBoaWdobGlnaHRlci50aGVtZXMgPSBbaGlnaGxpZ2h0LnRoZW1lXTtcbiAgICB9IGVsc2UgaWYgKGhpZ2hsaWdodC50aGVtZXMgJiYgdHlwZW9mIGhpZ2hsaWdodC50aGVtZXMgPT09ICdvYmplY3QnKSB7XG4gICAgICBoaWdobGlnaHRlci50aGVtZXMgPSBPYmplY3QudmFsdWVzKGhpZ2hsaWdodC50aGVtZXMpIGFzIHN0cmluZ1tdO1xuICAgIH0gZWxzZSB7XG4gICAgICBoaWdobGlnaHRlci50aGVtZXMgPSBkZWZhdWx0SGlnaGxpZ2h0ZXJPcHRpb25zLnRoZW1lcztcbiAgICB9XG4gIH1cblxuICBpZiAoIWhpZ2hsaWdodGVyLmxhbmdzKSB7XG4gICAgaGlnaGxpZ2h0ZXIubGFuZ3MgPSBkZWZhdWx0SGlnaGxpZ2h0ZXJPcHRpb25zLmxhbmdzO1xuICB9XG5cbiAgaWYgKGhpZ2hsaWdodGVyLmFkZGl0aW9uYWxMYW5ncykge1xuICAgIGhpZ2hsaWdodGVyLmxhbmdzLnB1c2goLi4uaGlnaGxpZ2h0ZXIuYWRkaXRpb25hbExhbmdzKTtcbiAgICBkZWxldGUgaGlnaGxpZ2h0ZXIuYWRkaXRpb25hbExhbmdzO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IHByb3ZpZGU6IFNISUtJX0hJR0hMSUdIVEVSX09QVElPTlMsIHVzZVZhbHVlOiBoaWdobGlnaHRlciB9LFxuICAgIHsgcHJvdmlkZTogU0hJS0lfSElHSExJR0hUX09QVElPTlMsIHVzZVZhbHVlOiBoaWdobGlnaHQgfSxcbiAgICB7IHByb3ZpZGU6IFNISUtJX0NPTlRBSU5FUl9PUFRJT04sIHVzZVZhbHVlOiBjb250YWluZXIgfSxcbiAgICB3aXRoSGlnaGxpZ2h0ZXIoeyB1c2VDbGFzczogU2hpa2lIaWdobGlnaHRlciB9KSxcbiAgXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MarkedContentHighlighter, MERMAID_IMPORT_TOKEN, } from '@analogjs/content';
|
|
2
|
+
import { inject, Injectable, InjectionToken } from '@angular/core';
|
|
3
|
+
import markedShiki from 'marked-shiki';
|
|
4
|
+
import { getHighlighter, } from 'shiki';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export const defaultHighlighterOptions = {
|
|
7
|
+
langs: [
|
|
8
|
+
'json',
|
|
9
|
+
'ts',
|
|
10
|
+
'tsx',
|
|
11
|
+
'js',
|
|
12
|
+
'jsx',
|
|
13
|
+
'html',
|
|
14
|
+
'css',
|
|
15
|
+
'angular-html',
|
|
16
|
+
'angular-ts',
|
|
17
|
+
],
|
|
18
|
+
themes: ['github-dark', 'github-light'],
|
|
19
|
+
};
|
|
20
|
+
export const [SHIKI_HIGHLIGHTER_OPTIONS, SHIKI_HIGHLIGHT_OPTIONS, SHIKI_CONTAINER_OPTION,] = [
|
|
21
|
+
new InjectionToken('SHIKI_HIGHLIGHTER_OPTIONS'),
|
|
22
|
+
new InjectionToken('SHIKI_HIGHLIGHT_OPTIONS'),
|
|
23
|
+
new InjectionToken('SHIKI_CONTAINER_OPTION'),
|
|
24
|
+
];
|
|
25
|
+
export class ShikiHighlighter extends MarkedContentHighlighter {
|
|
26
|
+
constructor() {
|
|
27
|
+
super(...arguments);
|
|
28
|
+
this.highlighterOptions = inject(SHIKI_HIGHLIGHTER_OPTIONS);
|
|
29
|
+
this.highlightOptions = inject(SHIKI_HIGHLIGHT_OPTIONS);
|
|
30
|
+
this.highlighterContainer = inject(SHIKI_CONTAINER_OPTION);
|
|
31
|
+
this.hasLoadMermaid = inject(MERMAID_IMPORT_TOKEN, {
|
|
32
|
+
optional: true,
|
|
33
|
+
});
|
|
34
|
+
this.highlighter = getHighlighter(this.highlighterOptions);
|
|
35
|
+
}
|
|
36
|
+
getHighlightExtension() {
|
|
37
|
+
return markedShiki({
|
|
38
|
+
container: this.highlighterContainer,
|
|
39
|
+
highlight: async (code, lang, props) => {
|
|
40
|
+
if (this.hasLoadMermaid && lang === 'mermaid') {
|
|
41
|
+
return `<pre class="mermaid">${code}</pre>`;
|
|
42
|
+
}
|
|
43
|
+
const { codeToHtml } = await this.highlighter;
|
|
44
|
+
return codeToHtml(code, Object.assign({
|
|
45
|
+
lang,
|
|
46
|
+
// required by `transformerMeta*`
|
|
47
|
+
meta: { __raw: props.join(' ') },
|
|
48
|
+
themes: { dark: 'github-dark', light: 'github-light' },
|
|
49
|
+
}, this.highlightOptions));
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ShikiHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
54
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ShikiHighlighter }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ShikiHighlighter, decorators: [{
|
|
57
|
+
type: Injectable
|
|
58
|
+
}] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpa2ktaGlnaGxpZ2h0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NoaWtpLWhpZ2hsaWdodGVyL3NyYy9saWIvc2hpa2ktaGlnaGxpZ2h0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsR0FDckIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFPTCxjQUFjLEdBQ2YsTUFBTSxPQUFPLENBQUM7O0FBVWYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7SUFDdkMsS0FBSyxFQUFFO1FBQ0wsTUFBTTtRQUNOLElBQUk7UUFDSixLQUFLO1FBQ0wsSUFBSTtRQUNKLEtBQUs7UUFDTCxNQUFNO1FBQ04sS0FBSztRQUNMLGNBQWM7UUFDZCxZQUFZO0tBQ2I7SUFDRCxNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDO0NBQ3hDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxDQUNYLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3ZCLEdBQUc7SUFDRixJQUFJLGNBQWMsQ0FBMEIsMkJBQTJCLENBQUM7SUFDeEUsSUFBSSxjQUFjLENBQXdCLHlCQUF5QixDQUFDO0lBQ3BFLElBQUksY0FBYyxDQUFTLHdCQUF3QixDQUFDO0NBQ3JELENBQUM7QUFHRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsd0JBQXdCO0lBRDlEOztRQUVtQix1QkFBa0IsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN2RCxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNuRCx5QkFBb0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN0RCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtZQUM3RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUNjLGdCQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBMEJ4RTtJQXhCVSxxQkFBcUI7UUFDNUIsT0FBTyxXQUFXLENBQUM7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDcEMsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUM5QyxPQUFPLHdCQUF3QixJQUFJLFFBQVEsQ0FBQztnQkFDOUMsQ0FBQztnQkFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM5QyxPQUFPLFVBQVUsQ0FDZixJQUFJLEVBQ0osTUFBTSxDQUFDLE1BQU0sQ0FDWDtvQkFDRSxJQUFJO29CQUNKLGlDQUFpQztvQkFDakMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtpQkFDdkQsRUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQ0YsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWhDVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1hcmtlZENvbnRlbnRIaWdobGlnaHRlcixcbiAgTUVSTUFJRF9JTVBPUlRfVE9LRU4sXG59IGZyb20gJ0BhbmFsb2dqcy9jb250ZW50JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtYXJrZWRTaGlraSBmcm9tICdtYXJrZWQtc2hpa2knO1xuaW1wb3J0IHtcbiAgdHlwZSBCdW5kbGVkTGFuZ3VhZ2UsXG4gIHR5cGUgQnVuZGxlZFRoZW1lLFxuICB0eXBlIENvZGVPcHRpb25zTWV0YSxcbiAgdHlwZSBDb2RlT3B0aW9uc011bHRpcGxlVGhlbWVzLFxuICB0eXBlIENvZGVPcHRpb25zU2luZ2xlVGhlbWUsXG4gIHR5cGUgQ29kZVRvSGFzdE9wdGlvbnNDb21tb24sXG4gIGdldEhpZ2hsaWdodGVyLFxufSBmcm9tICdzaGlraSc7XG5cbmV4cG9ydCB0eXBlIFNoaWtpSGlnaGxpZ2h0ZXJPcHRpb25zID0gUGFyYW1ldGVyczx0eXBlb2YgZ2V0SGlnaGxpZ2h0ZXI+WzBdO1xuZXhwb3J0IHR5cGUgU2hpa2lIaWdobGlnaHRPcHRpb25zID0gUGFydGlhbDxcbiAgT21pdDxDb2RlVG9IYXN0T3B0aW9uc0NvbW1vbjxCdW5kbGVkTGFuZ3VhZ2U+LCAnbGFuZyc+XG4+ICZcbiAgQ29kZU9wdGlvbnNNZXRhICZcbiAgUGFydGlhbDxDb2RlT3B0aW9uc1NpbmdsZVRoZW1lPEJ1bmRsZWRUaGVtZT4+ICZcbiAgUGFydGlhbDxDb2RlT3B0aW9uc011bHRpcGxlVGhlbWVzPEJ1bmRsZWRUaGVtZT4+O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEhpZ2hsaWdodGVyT3B0aW9ucyA9IHtcbiAgbGFuZ3M6IFtcbiAgICAnanNvbicsXG4gICAgJ3RzJyxcbiAgICAndHN4JyxcbiAgICAnanMnLFxuICAgICdqc3gnLFxuICAgICdodG1sJyxcbiAgICAnY3NzJyxcbiAgICAnYW5ndWxhci1odG1sJyxcbiAgICAnYW5ndWxhci10cycsXG4gIF0sXG4gIHRoZW1lczogWydnaXRodWItZGFyaycsICdnaXRodWItbGlnaHQnXSxcbn07XG5cbmV4cG9ydCBjb25zdCBbXG4gIFNISUtJX0hJR0hMSUdIVEVSX09QVElPTlMsXG4gIFNISUtJX0hJR0hMSUdIVF9PUFRJT05TLFxuICBTSElLSV9DT05UQUlORVJfT1BUSU9OLFxuXSA9IFtcbiAgbmV3IEluamVjdGlvblRva2VuPFNoaWtpSGlnaGxpZ2h0ZXJPcHRpb25zPignU0hJS0lfSElHSExJR0hURVJfT1BUSU9OUycpLFxuICBuZXcgSW5qZWN0aW9uVG9rZW48U2hpa2lIaWdobGlnaHRPcHRpb25zPignU0hJS0lfSElHSExJR0hUX09QVElPTlMnKSxcbiAgbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ1NISUtJX0NPTlRBSU5FUl9PUFRJT04nKSxcbl07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaGlraUhpZ2hsaWdodGVyIGV4dGVuZHMgTWFya2VkQ29udGVudEhpZ2hsaWdodGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBoaWdobGlnaHRlck9wdGlvbnMgPSBpbmplY3QoU0hJS0lfSElHSExJR0hURVJfT1BUSU9OUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0T3B0aW9ucyA9IGluamVjdChTSElLSV9ISUdITElHSFRfT1BUSU9OUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0ZXJDb250YWluZXIgPSBpbmplY3QoU0hJS0lfQ09OVEFJTkVSX09QVElPTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFzTG9hZE1lcm1haWQgPSBpbmplY3QoTUVSTUFJRF9JTVBPUlRfVE9LRU4sIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0ZXIgPSBnZXRIaWdobGlnaHRlcih0aGlzLmhpZ2hsaWdodGVyT3B0aW9ucyk7XG5cbiAgb3ZlcnJpZGUgZ2V0SGlnaGxpZ2h0RXh0ZW5zaW9uKCkge1xuICAgIHJldHVybiBtYXJrZWRTaGlraSh7XG4gICAgICBjb250YWluZXI6IHRoaXMuaGlnaGxpZ2h0ZXJDb250YWluZXIsXG4gICAgICBoaWdobGlnaHQ6IGFzeW5jIChjb2RlLCBsYW5nLCBwcm9wcykgPT4ge1xuICAgICAgICBpZiAodGhpcy5oYXNMb2FkTWVybWFpZCAmJiBsYW5nID09PSAnbWVybWFpZCcpIHtcbiAgICAgICAgICByZXR1cm4gYDxwcmUgY2xhc3M9XCJtZXJtYWlkXCI+JHtjb2RlfTwvcHJlPmA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGNvZGVUb0h0bWwgfSA9IGF3YWl0IHRoaXMuaGlnaGxpZ2h0ZXI7XG4gICAgICAgIHJldHVybiBjb2RlVG9IdG1sKFxuICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFuZyxcbiAgICAgICAgICAgICAgLy8gcmVxdWlyZWQgYnkgYHRyYW5zZm9ybWVyTWV0YSpgXG4gICAgICAgICAgICAgIG1ldGE6IHsgX19yYXc6IHByb3BzLmpvaW4oJyAnKSB9LFxuICAgICAgICAgICAgICB0aGVtZXM6IHsgZGFyazogJ2dpdGh1Yi1kYXJrJywgbGlnaHQ6ICdnaXRodWItbGlnaHQnIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRPcHRpb25zXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { MarkedContentHighlighter, withHighlighter } from '@analogjs/content';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { markedHighlight } from 'marked-highlight';
|
|
5
|
+
import 'prismjs';
|
|
6
|
+
import 'prismjs/components/prism-bash';
|
|
7
|
+
import 'prismjs/components/prism-css';
|
|
8
|
+
import 'prismjs/components/prism-javascript';
|
|
9
|
+
import 'prismjs/components/prism-json';
|
|
10
|
+
import 'prismjs/components/prism-markup';
|
|
11
|
+
import 'prismjs/components/prism-typescript';
|
|
12
|
+
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
13
|
+
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
14
|
+
|
|
15
|
+
"use strict";
|
|
16
|
+
(function () {
|
|
17
|
+
if (typeof Prism === 'undefined') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
Prism.languages.angular = Prism.languages.extend('markup', {
|
|
21
|
+
keyword: /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\b/,
|
|
22
|
+
operator: /\b(?:on|when)\b/,
|
|
23
|
+
number: {
|
|
24
|
+
pattern: /\b(minimum|after)\s+\d+(?:s|ms|)/gi,
|
|
25
|
+
lookbehind: true,
|
|
26
|
+
},
|
|
27
|
+
builtin: {
|
|
28
|
+
pattern: /\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,
|
|
29
|
+
},
|
|
30
|
+
function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
|
|
31
|
+
});
|
|
32
|
+
Prism.languages.ng = Prism.languages.angular;
|
|
33
|
+
})();
|
|
34
|
+
|
|
35
|
+
class PrismHighlighter extends MarkedContentHighlighter {
|
|
36
|
+
augmentCodeBlock(code, lang) {
|
|
37
|
+
const classes = lang.startsWith('diff') && Prism.languages['diff']
|
|
38
|
+
? `language-${lang} diff-highlight`
|
|
39
|
+
: `language-${lang.replace('diff-', '')}`;
|
|
40
|
+
return `<pre class="${classes}"><code class="${classes}">${code}</code></pre>`;
|
|
41
|
+
}
|
|
42
|
+
getHighlightExtension() {
|
|
43
|
+
return markedHighlight({
|
|
44
|
+
async: true,
|
|
45
|
+
highlight: (code, lang) => {
|
|
46
|
+
let diff = lang?.startsWith('diff-');
|
|
47
|
+
lang = diff ? lang.replace('diff-', '') : lang || 'typescript';
|
|
48
|
+
if (diff && !Prism.languages['diff']) {
|
|
49
|
+
diff = false;
|
|
50
|
+
console.warn(`Notice:
|
|
51
|
+
---------------------------------------------------------------------------------------
|
|
52
|
+
The \`diff\` language and plugin are not available in the provided setup.
|
|
53
|
+
To enable it, add the following imports your \`main.ts\`:
|
|
54
|
+
import 'prismjs/components/prism-diff';
|
|
55
|
+
import 'prismjs/plugins/diff-highlight/prism-diff-highlight';
|
|
56
|
+
---------------------------------------------------------------------------------------
|
|
57
|
+
`);
|
|
58
|
+
}
|
|
59
|
+
if (!Prism.languages[lang]) {
|
|
60
|
+
if (lang !== 'mermaid') {
|
|
61
|
+
console.warn(`Notice:
|
|
62
|
+
---------------------------------------------------------------------------------------
|
|
63
|
+
The requested language '${lang}' is not available in the provided setup.
|
|
64
|
+
To enable it, add the following import your \`main.ts\`:
|
|
65
|
+
import 'prismjs/components/prism-${lang}';
|
|
66
|
+
---------------------------------------------------------------------------------------
|
|
67
|
+
`);
|
|
68
|
+
}
|
|
69
|
+
return code;
|
|
70
|
+
}
|
|
71
|
+
return Prism.highlight(code, diff ? Prism.languages['diff'] : Prism.languages[lang], lang);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
76
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter }); }
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: PrismHighlighter, decorators: [{
|
|
79
|
+
type: Injectable
|
|
80
|
+
}] });
|
|
81
|
+
|
|
82
|
+
function withPrismHighlighter() {
|
|
83
|
+
return withHighlighter({ useClass: PrismHighlighter });
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Generated bundle index. Do not edit.
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
export { PrismHighlighter, withPrismHighlighter };
|
|
91
|
+
//# sourceMappingURL=analogjs-content-prism-highlighter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analogjs-content-prism-highlighter.mjs","sources":["../../../../packages/content/prism-highlighter/src/lib/prism/angular.js","../../../../packages/content/prism-highlighter/src/lib/prism-highlighter.ts","../../../../packages/content/prism-highlighter/src/index.ts","../../../../packages/content/prism-highlighter/src/analogjs-content-prism-highlighter.ts"],"sourcesContent":["(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 { MarkedContentHighlighter } from '@analogjs/content';\nimport { Injectable } from '@angular/core';\nimport { markedHighlight } from 'marked-highlight';\n\nimport 'prismjs';\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';\nimport 'prismjs/plugins/toolbar/prism-toolbar';\nimport './prism/angular';\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 \\`main.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 \\`main.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","import { withHighlighter } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport { PrismHighlighter } from './lib/prism-highlighter';\n\nexport { PrismHighlighter };\n\nexport function withPrismHighlighter(): Provider {\n return withHighlighter({ useClass: PrismHighlighter });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,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;;ACJE,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;;;SCXK,oBAAoB,GAAA;IAClC,OAAO,eAAe,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACzD;;ACRA;;AAEG;;;;"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { MarkedContentHighlighter, MERMAID_IMPORT_TOKEN, withHighlighter } from '@analogjs/content';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { InjectionToken, inject, Injectable } from '@angular/core';
|
|
4
|
+
import markedShiki from 'marked-shiki';
|
|
5
|
+
import { getHighlighter } from 'shiki';
|
|
6
|
+
|
|
7
|
+
const defaultHighlighterOptions = {
|
|
8
|
+
langs: [
|
|
9
|
+
'json',
|
|
10
|
+
'ts',
|
|
11
|
+
'tsx',
|
|
12
|
+
'js',
|
|
13
|
+
'jsx',
|
|
14
|
+
'html',
|
|
15
|
+
'css',
|
|
16
|
+
'angular-html',
|
|
17
|
+
'angular-ts',
|
|
18
|
+
],
|
|
19
|
+
themes: ['github-dark', 'github-light'],
|
|
20
|
+
};
|
|
21
|
+
const [SHIKI_HIGHLIGHTER_OPTIONS, SHIKI_HIGHLIGHT_OPTIONS, SHIKI_CONTAINER_OPTION,] = [
|
|
22
|
+
new InjectionToken('SHIKI_HIGHLIGHTER_OPTIONS'),
|
|
23
|
+
new InjectionToken('SHIKI_HIGHLIGHT_OPTIONS'),
|
|
24
|
+
new InjectionToken('SHIKI_CONTAINER_OPTION'),
|
|
25
|
+
];
|
|
26
|
+
class ShikiHighlighter extends MarkedContentHighlighter {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
this.highlighterOptions = inject(SHIKI_HIGHLIGHTER_OPTIONS);
|
|
30
|
+
this.highlightOptions = inject(SHIKI_HIGHLIGHT_OPTIONS);
|
|
31
|
+
this.highlighterContainer = inject(SHIKI_CONTAINER_OPTION);
|
|
32
|
+
this.hasLoadMermaid = inject(MERMAID_IMPORT_TOKEN, {
|
|
33
|
+
optional: true,
|
|
34
|
+
});
|
|
35
|
+
this.highlighter = getHighlighter(this.highlighterOptions);
|
|
36
|
+
}
|
|
37
|
+
getHighlightExtension() {
|
|
38
|
+
return markedShiki({
|
|
39
|
+
container: this.highlighterContainer,
|
|
40
|
+
highlight: async (code, lang, props) => {
|
|
41
|
+
if (this.hasLoadMermaid && lang === 'mermaid') {
|
|
42
|
+
return `<pre class="mermaid">${code}</pre>`;
|
|
43
|
+
}
|
|
44
|
+
const { codeToHtml } = await this.highlighter;
|
|
45
|
+
return codeToHtml(code, Object.assign({
|
|
46
|
+
lang,
|
|
47
|
+
// required by `transformerMeta*`
|
|
48
|
+
meta: { __raw: props.join(' ') },
|
|
49
|
+
themes: { dark: 'github-dark', light: 'github-light' },
|
|
50
|
+
}, this.highlightOptions));
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ShikiHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
55
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ShikiHighlighter }); }
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: ShikiHighlighter, decorators: [{
|
|
58
|
+
type: Injectable
|
|
59
|
+
}] });
|
|
60
|
+
|
|
61
|
+
function withShikiHighlighter({ highlighter = {}, highlight = {}, container = '%s', } = {}) {
|
|
62
|
+
if (!highlighter.themes) {
|
|
63
|
+
if (highlight.theme) {
|
|
64
|
+
highlighter.themes = [highlight.theme];
|
|
65
|
+
}
|
|
66
|
+
else if (highlight.themes && typeof highlight.themes === 'object') {
|
|
67
|
+
highlighter.themes = Object.values(highlight.themes);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
highlighter.themes = defaultHighlighterOptions.themes;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!highlighter.langs) {
|
|
74
|
+
highlighter.langs = defaultHighlighterOptions.langs;
|
|
75
|
+
}
|
|
76
|
+
if (highlighter.additionalLangs) {
|
|
77
|
+
highlighter.langs.push(...highlighter.additionalLangs);
|
|
78
|
+
delete highlighter.additionalLangs;
|
|
79
|
+
}
|
|
80
|
+
return [
|
|
81
|
+
{ provide: SHIKI_HIGHLIGHTER_OPTIONS, useValue: highlighter },
|
|
82
|
+
{ provide: SHIKI_HIGHLIGHT_OPTIONS, useValue: highlight },
|
|
83
|
+
{ provide: SHIKI_CONTAINER_OPTION, useValue: container },
|
|
84
|
+
withHighlighter({ useClass: ShikiHighlighter }),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Generated bundle index. Do not edit.
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
export { ShikiHighlighter, withShikiHighlighter };
|
|
93
|
+
//# sourceMappingURL=analogjs-content-shiki-highlighter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analogjs-content-shiki-highlighter.mjs","sources":["../../../../packages/content/shiki-highlighter/src/lib/shiki-highlighter.ts","../../../../packages/content/shiki-highlighter/src/index.ts","../../../../packages/content/shiki-highlighter/src/analogjs-content-shiki-highlighter.ts"],"sourcesContent":["import {\n MarkedContentHighlighter,\n MERMAID_IMPORT_TOKEN,\n} from '@analogjs/content';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport markedShiki from 'marked-shiki';\nimport {\n type BundledLanguage,\n type BundledTheme,\n type CodeOptionsMeta,\n type CodeOptionsMultipleThemes,\n type CodeOptionsSingleTheme,\n type CodeToHastOptionsCommon,\n getHighlighter,\n} from 'shiki';\n\nexport type ShikiHighlighterOptions = Parameters<typeof getHighlighter>[0];\nexport type ShikiHighlightOptions = Partial<\n Omit<CodeToHastOptionsCommon<BundledLanguage>, 'lang'>\n> &\n CodeOptionsMeta &\n Partial<CodeOptionsSingleTheme<BundledTheme>> &\n Partial<CodeOptionsMultipleThemes<BundledTheme>>;\n\nexport const defaultHighlighterOptions = {\n langs: [\n 'json',\n 'ts',\n 'tsx',\n 'js',\n 'jsx',\n 'html',\n 'css',\n 'angular-html',\n 'angular-ts',\n ],\n themes: ['github-dark', 'github-light'],\n};\n\nexport const [\n SHIKI_HIGHLIGHTER_OPTIONS,\n SHIKI_HIGHLIGHT_OPTIONS,\n SHIKI_CONTAINER_OPTION,\n] = [\n new InjectionToken<ShikiHighlighterOptions>('SHIKI_HIGHLIGHTER_OPTIONS'),\n new InjectionToken<ShikiHighlightOptions>('SHIKI_HIGHLIGHT_OPTIONS'),\n new InjectionToken<string>('SHIKI_CONTAINER_OPTION'),\n];\n\n@Injectable()\nexport class ShikiHighlighter extends MarkedContentHighlighter {\n private readonly highlighterOptions = inject(SHIKI_HIGHLIGHTER_OPTIONS);\n private readonly highlightOptions = inject(SHIKI_HIGHLIGHT_OPTIONS);\n private readonly highlighterContainer = inject(SHIKI_CONTAINER_OPTION);\n private readonly hasLoadMermaid = inject(MERMAID_IMPORT_TOKEN, {\n optional: true,\n });\n private readonly highlighter = getHighlighter(this.highlighterOptions);\n\n override getHighlightExtension() {\n return markedShiki({\n container: this.highlighterContainer,\n highlight: async (code, lang, props) => {\n if (this.hasLoadMermaid && lang === 'mermaid') {\n return `<pre class=\"mermaid\">${code}</pre>`;\n }\n\n const { codeToHtml } = await this.highlighter;\n return codeToHtml(\n code,\n Object.assign(\n {\n lang,\n // required by `transformerMeta*`\n meta: { __raw: props.join(' ') },\n themes: { dark: 'github-dark', light: 'github-light' },\n },\n this.highlightOptions\n )\n );\n },\n });\n }\n}\n","import { withHighlighter } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport type { BundledLanguage } from 'shiki';\nimport {\n defaultHighlighterOptions,\n SHIKI_CONTAINER_OPTION,\n SHIKI_HIGHLIGHT_OPTIONS,\n SHIKI_HIGHLIGHTER_OPTIONS,\n ShikiHighlighter,\n type ShikiHighlighterOptions,\n type ShikiHighlightOptions,\n} from './lib/shiki-highlighter';\n\nexport { ShikiHighlighter };\n\nexport interface WithShikiHighlighterOptions {\n highlighter?: Partial<ShikiHighlighterOptions> & {\n additionalLangs?: BundledLanguage[];\n };\n highlight?: ShikiHighlightOptions;\n container?: string;\n}\n\nexport function withShikiHighlighter({\n highlighter = {},\n highlight = {},\n container = '%s',\n}: WithShikiHighlighterOptions = {}): Provider {\n if (!highlighter.themes) {\n if (highlight.theme) {\n highlighter.themes = [highlight.theme];\n } else if (highlight.themes && typeof highlight.themes === 'object') {\n highlighter.themes = Object.values(highlight.themes) as string[];\n } else {\n highlighter.themes = defaultHighlighterOptions.themes;\n }\n }\n\n if (!highlighter.langs) {\n highlighter.langs = defaultHighlighterOptions.langs;\n }\n\n if (highlighter.additionalLangs) {\n highlighter.langs.push(...highlighter.additionalLangs);\n delete highlighter.additionalLangs;\n }\n\n return [\n { provide: SHIKI_HIGHLIGHTER_OPTIONS, useValue: highlighter },\n { provide: SHIKI_HIGHLIGHT_OPTIONS, useValue: highlight },\n { provide: SHIKI_CONTAINER_OPTION, useValue: container },\n withHighlighter({ useClass: ShikiHighlighter }),\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAwBO,MAAM,yBAAyB,GAAG;AACvC,IAAA,KAAK,EAAE;QACL,MAAM;QACN,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,KAAK;QACL,MAAM;QACN,KAAK;QACL,cAAc;QACd,YAAY;AACb,KAAA;AACD,IAAA,MAAM,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;CACxC,CAAC;AAEK,MAAM,CACX,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACvB,GAAG;IACF,IAAI,cAAc,CAA0B,2BAA2B,CAAC;IACxE,IAAI,cAAc,CAAwB,yBAAyB,CAAC;IACpE,IAAI,cAAc,CAAS,wBAAwB,CAAC;CACrD,CAAC;AAGI,MAAO,gBAAiB,SAAQ,wBAAwB,CAAA;AAD9D,IAAA,WAAA,GAAA;;AAEmB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;AACc,QAAA,IAAA,CAAA,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AA0BxE,KAAA;IAxBU,qBAAqB,GAAA;AAC5B,QAAA,OAAO,WAAW,CAAC;YACjB,SAAS,EAAE,IAAI,CAAC,oBAAoB;YACpC,SAAS,EAAE,OAAO,IAAI,EAAE,IAAI,EAAE,KAAK,KAAI;gBACrC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC7C,OAAO,CAAA,qBAAA,EAAwB,IAAI,CAAA,MAAA,CAAQ,CAAC;iBAC7C;gBAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;AAC9C,gBAAA,OAAO,UAAU,CACf,IAAI,EACJ,MAAM,CAAC,MAAM,CACX;oBACE,IAAI;;oBAEJ,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBAChC,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE;AACvD,iBAAA,EACD,IAAI,CAAC,gBAAgB,CACtB,CACF,CAAC;aACH;AACF,SAAA,CAAC,CAAC;KACJ;8GAhCU,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;;;SC1BK,oBAAoB,CAAC,EACnC,WAAW,GAAG,EAAE,EAChB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,IAAI,MACe,EAAE,EAAA;AACjC,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACvB,QAAA,IAAI,SAAS,CAAC,KAAK,EAAE;YACnB,WAAW,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACxC;aAAM,IAAI,SAAS,CAAC,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE;YACnE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAa,CAAC;SAClE;aAAM;AACL,YAAA,WAAW,CAAC,MAAM,GAAG,yBAAyB,CAAC,MAAM,CAAC;SACvD;KACF;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACtB,QAAA,WAAW,CAAC,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC;KACrD;AAED,IAAA,IAAI,WAAW,CAAC,eAAe,EAAE;QAC/B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;QACvD,OAAO,WAAW,CAAC,eAAe,CAAC;KACpC;IAED,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,WAAW,EAAE;AAC7D,QAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE;AACzD,QAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE;AACxD,QAAA,eAAe,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;KAChD,CAAC;AACJ;;ACrDA;;AAEG;;;;"}
|