@analogjs/content 0.2.0-beta.8 → 0.2.0-rc.0
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 +5 -5
- package/esm2022/lib/anchor-navigation.directive.mjs +3 -3
- package/esm2022/lib/content-files-list-token.mjs +3 -2
- package/esm2022/lib/content-files-token.mjs +20 -3
- package/esm2022/lib/content-renderer.mjs +3 -3
- package/esm2022/lib/content.mjs +3 -3
- package/esm2022/lib/markdown-content-renderer.service.mjs +27 -66
- package/esm2022/lib/markdown-route.component.mjs +38 -0
- package/esm2022/lib/markdown.component.mjs +26 -8
- package/esm2022/lib/marked-setup.service.mjs +81 -0
- package/fesm2022/analogjs-content.mjs +242 -141
- package/fesm2022/analogjs-content.mjs.map +1 -1
- package/index.d.ts +4 -4
- package/lib/anchor-navigation.directive.d.ts +1 -1
- package/lib/markdown-content-renderer.service.d.ts +7 -15
- package/lib/markdown-route.component.d.ts +15 -0
- package/lib/markdown.component.d.ts +8 -2
- package/lib/marked-setup.service.d.ts +18 -0
- package/migrations/migration.json +33 -0
- package/package.json +5 -2
package/esm2022/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
export { AnchorNavigationDirective } from './lib/anchor-navigation.directive';
|
|
1
2
|
export { injectContent } from './lib/content';
|
|
2
|
-
export { injectContentFiles } from './lib/inject-content-files';
|
|
3
3
|
export { ContentRenderer } from './lib/content-renderer';
|
|
4
|
+
export { injectContentFiles } from './lib/inject-content-files';
|
|
5
|
+
export { MarkdownContentRendererService, provideContent, withMarkdownRenderer, } from './lib/markdown-content-renderer.service';
|
|
6
|
+
export { default as MarkdownRouteComponent } from './lib/markdown-route.component';
|
|
4
7
|
export { default as MarkdownComponent } from './lib/markdown.component';
|
|
5
|
-
export { MarkdownContentRendererService } from './lib/markdown-content-renderer.service';
|
|
6
|
-
export { provideContent, withMarkdownRenderer, } from './lib/markdown-content-renderer.service';
|
|
7
8
|
export { parseRawContentFile } from './lib/parse-raw-content-file';
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxJQUFJLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGluamVjdENvbnRlbnQgfSBmcm9tICcuL2xpYi9jb250ZW50JztcbmV4cG9ydCB7IGluamVjdENvbnRlbnRGaWxlcyB9IGZyb20gJy4vbGliL2luamVjdC1jb250ZW50LWZpbGVzJztcbmV4cG9ydCB7IENvbnRlbnRGaWxlIH0gZnJvbSAnLi9saWIvY29udGVudC1maWxlJztcbmV4cG9ydCB7IENvbnRlbnRSZW5kZXJlciB9IGZyb20gJy4vbGliL2NvbnRlbnQtcmVuZGVyZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXJrZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbGliL21hcmtkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgeyBNYXJrZG93bkNvbnRlbnRSZW5kZXJlclNlcnZpY2UgfSBmcm9tICcuL2xpYi9tYXJrZG93bi1jb250ZW50LXJlbmRlcmVyLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgcHJvdmlkZUNvbnRlbnQsXG4gIHdpdGhNYXJrZG93blJlbmRlcmVyLFxufSBmcm9tICcuL2xpYi9tYXJrZG93bi1jb250ZW50LXJlbmRlcmVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgcGFyc2VSYXdDb250ZW50RmlsZSB9IGZyb20gJy4vbGliL3BhcnNlLXJhdy1jb250ZW50LWZpbGUnO1xuZXhwb3J0IHsgQW5jaG9yTmF2aWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2FuY2hvci1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG4iXX0=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxJQUFJLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQW5jaG9yTmF2aWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2FuY2hvci1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBpbmplY3RDb250ZW50IH0gZnJvbSAnLi9saWIvY29udGVudCc7XG5leHBvcnQgeyBDb250ZW50RmlsZSB9IGZyb20gJy4vbGliL2NvbnRlbnQtZmlsZSc7XG5leHBvcnQgeyBDb250ZW50UmVuZGVyZXIgfSBmcm9tICcuL2xpYi9jb250ZW50LXJlbmRlcmVyJztcbmV4cG9ydCB7IGluamVjdENvbnRlbnRGaWxlcyB9IGZyb20gJy4vbGliL2luamVjdC1jb250ZW50LWZpbGVzJztcbmV4cG9ydCB7XG4gIE1hcmtkb3duQ29udGVudFJlbmRlcmVyU2VydmljZSxcbiAgcHJvdmlkZUNvbnRlbnQsXG4gIHdpdGhNYXJrZG93blJlbmRlcmVyLFxufSBmcm9tICcuL2xpYi9tYXJrZG93bi1jb250ZW50LXJlbmRlcmVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXJrZG93blJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvbWFya2Rvd24tcm91dGUuY29tcG9uZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL2xpYi9tYXJrZG93bi5jb21wb25lbnQnO1xuZXhwb3J0IHsgcGFyc2VSYXdDb250ZW50RmlsZSB9IGZyb20gJy4vbGliL3BhcnNlLXJhdy1jb250ZW50LWZpbGUnO1xuIl19
|
|
@@ -20,11 +20,11 @@ class AnchorNavigationDirective {
|
|
|
20
20
|
}
|
|
21
21
|
return true;
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
24
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AnchorNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: AnchorNavigationDirective, isStandalone: true, selector: "[analogAnchorNavigation]", host: { listeners: { "click": "handleNavigation($event.target)" } }, ngImport: i0 }); }
|
|
25
25
|
}
|
|
26
26
|
export { AnchorNavigationDirective };
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AnchorNavigationDirective, decorators: [{
|
|
28
28
|
type: Directive,
|
|
29
29
|
args: [{
|
|
30
30
|
selector: '[analogAnchorNavigation]',
|
|
@@ -10,12 +10,13 @@ export const CONTENT_FILES_LIST_TOKEN = new InjectionToken('@analogjs/content Co
|
|
|
10
10
|
const contentFiles = getContentFilesList();
|
|
11
11
|
return Object.keys(contentFiles).map((filename) => {
|
|
12
12
|
const attributes = contentFiles[filename];
|
|
13
|
+
const slug = attributes['slug'];
|
|
13
14
|
return {
|
|
14
15
|
filename,
|
|
15
16
|
attributes,
|
|
16
|
-
slug: encodeURI(getSlug(filename)),
|
|
17
|
+
slug: slug ? encodeURI(slug) : encodeURI(getSlug(filename)),
|
|
17
18
|
};
|
|
18
19
|
});
|
|
19
20
|
},
|
|
20
21
|
});
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlcy1saXN0LXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2NvbnRlbnQtZmlsZXMtbGlzdC10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELFNBQVMsT0FBTyxDQUFDLFFBQWdCO0lBQy9CLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDeEQsc0NBQXNDLEVBQ3RDO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTztRQUNMLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFM0MsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2hELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFaEMsT0FBTztnQkFDTCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudEZpbGUgfSBmcm9tICcuL2NvbnRlbnQtZmlsZSc7XG5pbXBvcnQgeyBnZXRDb250ZW50RmlsZXNMaXN0IH0gZnJvbSAnLi9nZXQtY29udGVudC1maWxlcyc7XG5cbmZ1bmN0aW9uIGdldFNsdWcoZmlsZW5hbWU6IHN0cmluZykge1xuICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLm1hdGNoKC9eKFxcXFx8XFwvKSguKyhcXFxcfFxcLykpKiguKylcXC4oLispJC8pO1xuICByZXR1cm4gcGFydHM/Lmxlbmd0aCA/IHBhcnRzWzRdIDogJyc7XG59XG5cbmV4cG9ydCBjb25zdCBDT05URU5UX0ZJTEVTX0xJU1RfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29udGVudEZpbGVbXT4oXG4gICdAYW5hbG9nanMvY29udGVudCBDb250ZW50IEZpbGVzIExpc3QnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3RvcnkoKSB7XG4gICAgICBjb25zdCBjb250ZW50RmlsZXMgPSBnZXRDb250ZW50RmlsZXNMaXN0KCk7XG5cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjb250ZW50RmlsZXMpLm1hcCgoZmlsZW5hbWUpID0+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGNvbnRlbnRGaWxlc1tmaWxlbmFtZV07XG4gICAgICAgIGNvbnN0IHNsdWcgPSBhdHRyaWJ1dGVzWydzbHVnJ107XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgIHNsdWc6IHNsdWcgPyBlbmNvZGVVUkkoc2x1ZykgOiBlbmNvZGVVUkkoZ2V0U2x1ZyhmaWxlbmFtZSkpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSxcbiAgfVxuKTtcbiJdfQ==
|
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
1
|
+
import { InjectionToken, inject } from '@angular/core';
|
|
2
2
|
import { getContentFiles } from './get-content-files';
|
|
3
|
+
import { CONTENT_FILES_LIST_TOKEN } from './content-files-list-token';
|
|
3
4
|
export const CONTENT_FILES_TOKEN = new InjectionToken('@analogjs/content Content Files', {
|
|
4
5
|
providedIn: 'root',
|
|
5
6
|
factory() {
|
|
6
7
|
const contentFiles = getContentFiles();
|
|
7
|
-
|
|
8
|
+
const contentFilesList = inject(CONTENT_FILES_LIST_TOKEN);
|
|
9
|
+
const lookup = {};
|
|
10
|
+
contentFilesList.forEach((item) => {
|
|
11
|
+
const fileParts = item.filename.split('/');
|
|
12
|
+
const filePath = fileParts.slice(0, fileParts.length - 1).join('/');
|
|
13
|
+
lookup[item.filename] = `${filePath}/${item.slug}.md`;
|
|
14
|
+
});
|
|
15
|
+
const objectUsingSlugAttribute = {};
|
|
16
|
+
Object.entries(contentFiles).forEach((entry) => {
|
|
17
|
+
const filename = entry[0];
|
|
18
|
+
const value = entry[1];
|
|
19
|
+
const newFilename = lookup[filename];
|
|
20
|
+
if (newFilename !== undefined) {
|
|
21
|
+
objectUsingSlugAttribute[newFilename] = value;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return objectUsingSlugAttribute;
|
|
8
25
|
},
|
|
9
26
|
});
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlcy10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9jb250ZW50LWZpbGVzLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FFbkQsaUNBQWlDLEVBQUU7SUFDbkMsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTztRQUNMLE1BQU0sWUFBWSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFMUQsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUMxQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sd0JBQXdCLEdBQTBDLEVBQUUsQ0FBQztRQUMzRSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzdDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtnQkFDN0Isd0JBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLHdCQUF3QixDQUFDO0lBQ2xDLENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGdldENvbnRlbnRGaWxlcyB9IGZyb20gJy4vZ2V0LWNvbnRlbnQtZmlsZXMnO1xuaW1wb3J0IHsgQ09OVEVOVF9GSUxFU19MSVNUX1RPS0VOIH0gZnJvbSAnLi9jb250ZW50LWZpbGVzLWxpc3QtdG9rZW4nO1xuXG5leHBvcnQgY29uc3QgQ09OVEVOVF9GSUxFU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgUmVjb3JkPHN0cmluZywgKCkgPT4gUHJvbWlzZTxzdHJpbmc+PlxuPignQGFuYWxvZ2pzL2NvbnRlbnQgQ29udGVudCBGaWxlcycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5KCkge1xuICAgIGNvbnN0IGNvbnRlbnRGaWxlcyA9IGdldENvbnRlbnRGaWxlcygpO1xuICAgIGNvbnN0IGNvbnRlbnRGaWxlc0xpc3QgPSBpbmplY3QoQ09OVEVOVF9GSUxFU19MSVNUX1RPS0VOKTtcblxuICAgIGNvbnN0IGxvb2t1cDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGNvbnRlbnRGaWxlc0xpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgZmlsZVBhcnRzID0gaXRlbS5maWxlbmFtZS5zcGxpdCgnLycpO1xuICAgICAgY29uc3QgZmlsZVBhdGggPSBmaWxlUGFydHMuc2xpY2UoMCwgZmlsZVBhcnRzLmxlbmd0aCAtIDEpLmpvaW4oJy8nKTtcbiAgICAgIGxvb2t1cFtpdGVtLmZpbGVuYW1lXSA9IGAke2ZpbGVQYXRofS8ke2l0ZW0uc2x1Z30ubWRgO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb2JqZWN0VXNpbmdTbHVnQXR0cmlidXRlOiBSZWNvcmQ8c3RyaW5nLCAoKSA9PiBQcm9taXNlPHN0cmluZz4+ID0ge307XG4gICAgT2JqZWN0LmVudHJpZXMoY29udGVudEZpbGVzKS5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBlbnRyeVswXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gZW50cnlbMV07XG5cbiAgICAgIGNvbnN0IG5ld0ZpbGVuYW1lID0gbG9va3VwW2ZpbGVuYW1lXTtcbiAgICAgIGlmIChuZXdGaWxlbmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9iamVjdFVzaW5nU2x1Z0F0dHJpYnV0ZVtuZXdGaWxlbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBvYmplY3RVc2luZ1NsdWdBdHRyaWJ1dGU7XG4gIH0sXG59KTtcbiJdfQ==
|
|
@@ -6,11 +6,11 @@ class ContentRenderer {
|
|
|
6
6
|
}
|
|
7
7
|
// eslint-disable-next-line
|
|
8
8
|
enhance() { }
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
10
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentRenderer }); }
|
|
11
11
|
}
|
|
12
12
|
export { ContentRenderer };
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ContentRenderer, decorators: [{
|
|
14
14
|
type: Injectable
|
|
15
15
|
}] });
|
|
16
16
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9jb250ZW50LXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQ3NCLGVBQWU7SUFDbkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFlO1FBQzFCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsT0FBTyxLQUFJLENBQUM7OEdBTlEsZUFBZTtrSEFBZixlQUFlOztTQUFmLGVBQWU7MkZBQWYsZUFBZTtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbnRlbnRSZW5kZXJlciB7XG4gIGFzeW5jIHJlbmRlcihjb250ZW50OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGVuaGFuY2UoKSB7fVxufVxuIl19
|
package/esm2022/lib/content.mjs
CHANGED
|
@@ -4,8 +4,8 @@ import { ActivatedRoute } from '@angular/router';
|
|
|
4
4
|
import { of } from 'rxjs';
|
|
5
5
|
import { map, switchMap } from 'rxjs/operators';
|
|
6
6
|
import { CONTENT_FILES_TOKEN } from './content-files-token';
|
|
7
|
-
import { waitFor } from './utils/zone-wait-for';
|
|
8
7
|
import { parseRawContentFile } from './parse-raw-content-file';
|
|
8
|
+
import { waitFor } from './utils/zone-wait-for';
|
|
9
9
|
/**
|
|
10
10
|
* Retrieves the static content using the provided param and/or prefix.
|
|
11
11
|
*
|
|
@@ -23,7 +23,7 @@ export function injectContent(param = 'slug', fallback = 'No Content Found') {
|
|
|
23
23
|
if (!contentFile) {
|
|
24
24
|
return of({
|
|
25
25
|
attributes: {},
|
|
26
|
-
filename,
|
|
26
|
+
filename: filename,
|
|
27
27
|
slug: slug || '',
|
|
28
28
|
content: fallback,
|
|
29
29
|
});
|
|
@@ -51,4 +51,4 @@ export function injectContent(param = 'slug', fallback = 'No Content Found') {
|
|
|
51
51
|
});
|
|
52
52
|
}));
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FHM0IsUUFLUSxNQUFNLEVBQ2QsUUFBUSxHQUFHLGtCQUFrQjtJQUU3QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakQsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDO0lBRXpFLE1BQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ2pFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNyQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNqQixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRO2FBQ2xCLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sZUFBZSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBRXRDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtnQkFDaEMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUMvQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUN6QixNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUMzQixtQkFBbUIsQ0FBYSxjQUFjLENBQUMsQ0FBQztZQUVsRCxPQUFPO2dCQUNMLFFBQVE7Z0JBQ1IsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUNoQixVQUFVO2dCQUNWLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZS9jbGllbnRcIiAvPlxuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29udGVudEZpbGUgfSBmcm9tICcuL2NvbnRlbnQtZmlsZSc7XG5pbXBvcnQgeyBDT05URU5UX0ZJTEVTX1RPS0VOIH0gZnJvbSAnLi9jb250ZW50LWZpbGVzLXRva2VuJztcbmltcG9ydCB7IHBhcnNlUmF3Q29udGVudEZpbGUgfSBmcm9tICcuL3BhcnNlLXJhdy1jb250ZW50LWZpbGUnO1xuaW1wb3J0IHsgd2FpdEZvciB9IGZyb20gJy4vdXRpbHMvem9uZS13YWl0LWZvcic7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzdGF0aWMgY29udGVudCB1c2luZyB0aGUgcHJvdmlkZWQgcGFyYW0gYW5kL29yIHByZWZpeC5cbiAqXG4gKiBAcGFyYW0gcGFyYW0gcm91dGUgcGFyYW1ldGVyIChkZWZhdWx0OiAnc2x1ZycpXG4gKiBAcGFyYW0gZmFsbGJhY2sgZmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGZpbGUgaXMgbm90IGZvdW5kIChkZWZhdWx0OiAnTm8gQ29udGVudCBGb3VuZCcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb250ZW50PFxuICBBdHRyaWJ1dGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT5cbj4oXG4gIHBhcmFtOlxuICAgIHwgc3RyaW5nXG4gICAgfCB7XG4gICAgICAgIHBhcmFtOiBzdHJpbmc7XG4gICAgICAgIHN1YmRpcmVjdG9yeTogc3RyaW5nO1xuICAgICAgfSA9ICdzbHVnJyxcbiAgZmFsbGJhY2sgPSAnTm8gQ29udGVudCBGb3VuZCdcbik6IE9ic2VydmFibGU8Q29udGVudEZpbGU8QXR0cmlidXRlcyB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPj4+IHtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBjb25zdCBjb250ZW50RmlsZXMgPSBpbmplY3QoQ09OVEVOVF9GSUxFU19UT0tFTik7XG4gIGNvbnN0IHByZWZpeCA9IHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycgPyAnJyA6IGAke3BhcmFtLnN1YmRpcmVjdG9yeX0vYDtcblxuICBjb25zdCBwYXJhbUtleSA9IHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycgPyBwYXJhbSA6IHBhcmFtLnBhcmFtO1xuICByZXR1cm4gcm91dGUucGFyYW1NYXAucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChwYXJhbUtleSkpLFxuICAgIHN3aXRjaE1hcCgoc2x1ZykgPT4ge1xuICAgICAgY29uc3QgZmlsZW5hbWUgPSBgL3NyYy9jb250ZW50LyR7cHJlZml4fSR7c2x1Z30ubWRgO1xuICAgICAgY29uc3QgY29udGVudEZpbGUgPSBjb250ZW50RmlsZXNbZmlsZW5hbWVdO1xuXG4gICAgICBpZiAoIWNvbnRlbnRGaWxlKSB7XG4gICAgICAgIHJldHVybiBvZih7XG4gICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgZmlsZW5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIHNsdWc6IHNsdWcgfHwgJycsXG4gICAgICAgICAgY29udGVudDogZmFsbGJhY2ssXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50UmVzb2x2ZXIgPSBjb250ZW50RmlsZSgpO1xuXG4gICAgICAgIGlmIChpbXBvcnQubWV0YS5lbnYuU1NSID09PSB0cnVlKSB7XG4gICAgICAgICAgd2FpdEZvcihjb250ZW50UmVzb2x2ZXIpLnRoZW4oKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoY29udGVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGVudFJlc29sdmVyLnRoZW4oKGNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoY29udGVudCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pLnRoZW4oKHJhd0NvbnRlbnRGaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29udGVudCwgYXR0cmlidXRlcyB9ID1cbiAgICAgICAgICBwYXJzZVJhd0NvbnRlbnRGaWxlPEF0dHJpYnV0ZXM+KHJhd0NvbnRlbnRGaWxlKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgIHNsdWc6IHNsdWcgfHwgJycsXG4gICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgICBjb250ZW50LFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -1,83 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
* Credit goes to Scully for original implementation
|
|
3
|
-
* https://github.com/scullyio/scully/blob/main/libs/scully/src/lib/fileHanderPlugins/markdown.ts
|
|
4
|
-
*/
|
|
5
|
-
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
6
|
-
import { marked } from 'marked';
|
|
7
|
-
import 'prismjs';
|
|
8
|
-
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
9
|
-
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
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';
|
|
1
|
+
import { inject, Injectable, InjectionToken, PLATFORM_ID, } from '@angular/core';
|
|
16
2
|
import { ContentRenderer } from './content-renderer';
|
|
3
|
+
import { MarkedSetupService } from './marked-setup.service';
|
|
17
4
|
import * as i0 from "@angular/core";
|
|
18
|
-
const renderer = new marked.Renderer();
|
|
19
|
-
// wrap code block the way Prism.js expects it
|
|
20
|
-
renderer.code = function (code, lang) {
|
|
21
|
-
// eslint-disable-next-line
|
|
22
|
-
code = this.options.highlight(code, lang);
|
|
23
|
-
if (!lang) {
|
|
24
|
-
return '<pre><code>' + code + '</code></pre>';
|
|
25
|
-
}
|
|
26
|
-
// e.g. "language-js"
|
|
27
|
-
const langClass = 'language-' + lang;
|
|
28
|
-
return ('<pre class="' +
|
|
29
|
-
langClass +
|
|
30
|
-
'"><code class="' +
|
|
31
|
-
langClass +
|
|
32
|
-
'">' +
|
|
33
|
-
code +
|
|
34
|
-
'</code></pre>');
|
|
35
|
-
};
|
|
36
|
-
// ------------------------------
|
|
37
5
|
class MarkdownContentRendererService {
|
|
38
6
|
constructor() {
|
|
39
7
|
this.platformId = inject(PLATFORM_ID);
|
|
8
|
+
this.#marked = inject(MarkedSetupService, { self: true });
|
|
40
9
|
}
|
|
10
|
+
#marked;
|
|
41
11
|
async render(content) {
|
|
42
|
-
marked.
|
|
43
|
-
renderer,
|
|
44
|
-
highlight: (code, lang) => {
|
|
45
|
-
lang = lang || 'typescript';
|
|
46
|
-
if (!Prism.languages[lang]) {
|
|
47
|
-
console.warn(`Notice:
|
|
48
|
-
---------------------------------------------------------------------------------------
|
|
49
|
-
The requested language '${lang}' is not available with the provided setup.
|
|
50
|
-
To enable, import your main.ts as:
|
|
51
|
-
import 'prismjs/components/prism-${lang}';
|
|
52
|
-
---------------------------------------------------------------------------------------
|
|
53
|
-
`);
|
|
54
|
-
return code;
|
|
55
|
-
}
|
|
56
|
-
return Prism.highlight(code, Prism.languages[lang], lang);
|
|
57
|
-
},
|
|
58
|
-
pedantic: false,
|
|
59
|
-
gfm: true,
|
|
60
|
-
breaks: false,
|
|
61
|
-
sanitize: false,
|
|
62
|
-
smartLists: true,
|
|
63
|
-
smartypants: false,
|
|
64
|
-
xhtml: false,
|
|
65
|
-
});
|
|
66
|
-
return marked(content);
|
|
12
|
+
return this.#marked.getMarkedInstance().parse(content);
|
|
67
13
|
}
|
|
68
14
|
// eslint-disable-next-line
|
|
69
15
|
enhance() { }
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
71
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MarkdownContentRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MarkdownContentRendererService }); }
|
|
72
18
|
}
|
|
73
19
|
export { MarkdownContentRendererService };
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MarkdownContentRendererService, decorators: [{
|
|
75
21
|
type: Injectable
|
|
76
22
|
}] });
|
|
77
|
-
export function withMarkdownRenderer() {
|
|
78
|
-
return
|
|
23
|
+
export function withMarkdownRenderer(options) {
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
provide: ContentRenderer,
|
|
27
|
+
useFactory: () => new MarkdownContentRendererService(),
|
|
28
|
+
deps: [MarkedSetupService],
|
|
29
|
+
},
|
|
30
|
+
options?.loadMermaid
|
|
31
|
+
? [
|
|
32
|
+
{
|
|
33
|
+
provide: MERMAID_IMPORT_TOKEN,
|
|
34
|
+
useFactory: options.loadMermaid,
|
|
35
|
+
},
|
|
36
|
+
]
|
|
37
|
+
: [],
|
|
38
|
+
];
|
|
79
39
|
}
|
|
80
40
|
export function provideContent(...features) {
|
|
81
|
-
return [...features];
|
|
41
|
+
return [...features, MarkedSetupService];
|
|
82
42
|
}
|
|
83
|
-
|
|
43
|
+
export const MERMAID_IMPORT_TOKEN = new InjectionToken('mermaid_import');
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tY29udGVudC1yZW5kZXJlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL21hcmtkb3duLWNvbnRlbnQtcmVuZGVyZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFNUQsTUFDYSw4QkFBOEI7SUFEM0M7UUFFRSxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQVF0RDtJQVJDLE9BQU8sQ0FBOEM7SUFFckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsMkJBQTJCO0lBQzNCLE9BQU8sS0FBSSxDQUFDOzhHQVRELDhCQUE4QjtrSEFBOUIsOEJBQThCOztTQUE5Qiw4QkFBOEI7MkZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVTs7QUFpQlgsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxPQUFpQztJQUVqQyxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSw4QkFBOEIsRUFBRTtZQUN0RCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztTQUMzQjtRQUNELE9BQU8sRUFBRSxXQUFXO1lBQ2xCLENBQUMsQ0FBQztnQkFDRTtvQkFDRSxPQUFPLEVBQUUsb0JBQW9CO29CQUM3QixVQUFVLEVBQUUsT0FBTyxDQUFDLFdBQVc7aUJBQ2hDO2FBQ0Y7WUFDSCxDQUFDLENBQUMsRUFBRTtLQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxHQUFHLFFBQW9CO0lBQ3BELE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FFcEQsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIFBMQVRGT1JNX0lELFxuICBQcm92aWRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRlbnRSZW5kZXJlciB9IGZyb20gJy4vY29udGVudC1yZW5kZXJlcic7XG5pbXBvcnQgeyBNYXJrZWRTZXR1cFNlcnZpY2UgfSBmcm9tICcuL21hcmtlZC1zZXR1cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcmtkb3duQ29udGVudFJlbmRlcmVyU2VydmljZSBpbXBsZW1lbnRzIENvbnRlbnRSZW5kZXJlciB7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAjbWFya2VkID0gaW5qZWN0KE1hcmtlZFNldHVwU2VydmljZSwgeyBzZWxmOiB0cnVlIH0pO1xuXG4gIGFzeW5jIHJlbmRlcihjb250ZW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jbWFya2VkLmdldE1hcmtlZEluc3RhbmNlKCkucGFyc2UoY29udGVudCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgZW5oYW5jZSgpIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25SZW5kZXJlck9wdGlvbnMge1xuICBsb2FkTWVybWFpZD86ICgpID0+IFByb21pc2U8dHlwZW9mIGltcG9ydCgnbWVybWFpZCcpPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNYXJrZG93blJlbmRlcmVyKFxuICBvcHRpb25zPzogTWFya2Rvd25SZW5kZXJlck9wdGlvbnNcbik6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250ZW50UmVuZGVyZXIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBuZXcgTWFya2Rvd25Db250ZW50UmVuZGVyZXJTZXJ2aWNlKCksXG4gICAgICBkZXBzOiBbTWFya2VkU2V0dXBTZXJ2aWNlXSxcbiAgICB9LFxuICAgIG9wdGlvbnM/LmxvYWRNZXJtYWlkXG4gICAgICA/IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBNRVJNQUlEX0lNUE9SVF9UT0tFTixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IG9wdGlvbnMubG9hZE1lcm1haWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgOiBbXSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVDb250ZW50KC4uLmZlYXR1cmVzOiBQcm92aWRlcltdKSB7XG4gIHJldHVybiBbLi4uZmVhdHVyZXMsIE1hcmtlZFNldHVwU2VydmljZV07XG59XG5cbmV4cG9ydCBjb25zdCBNRVJNQUlEX0lNUE9SVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCdtZXJtYWlkJyk+XG4+KCdtZXJtYWlkX2ltcG9ydCcpO1xuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { AsyncPipe } from '@angular/common';
|
|
2
|
+
import { Component, inject, Input, ViewEncapsulation, } from '@angular/core';
|
|
3
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
+
import { ActivatedRoute } from '@angular/router';
|
|
5
|
+
import { ContentRenderer } from './content-renderer';
|
|
6
|
+
import { AnchorNavigationDirective } from './anchor-navigation.directive';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./anchor-navigation.directive";
|
|
9
|
+
class AnalogMarkdownRouteComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.sanitizer = inject(DomSanitizer);
|
|
12
|
+
this.route = inject(ActivatedRoute);
|
|
13
|
+
this.contentRenderer = inject(ContentRenderer);
|
|
14
|
+
this.content = this.sanitizer.bypassSecurityTrustHtml(this.route.snapshot.data['renderedAnalogContent']);
|
|
15
|
+
this.classes = 'analog-markdown-route';
|
|
16
|
+
}
|
|
17
|
+
ngAfterViewChecked() {
|
|
18
|
+
this.contentRenderer.enhance();
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AnalogMarkdownRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: AnalogMarkdownRouteComponent, isStandalone: true, selector: "analog-markdown-route", inputs: { classes: "classes" }, hostDirectives: [{ directive: i1.AnchorNavigationDirective }], ngImport: i0, template: `<div [innerHTML]="content" [class]="classes"></div>`, isInline: true, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
|
|
22
|
+
}
|
|
23
|
+
export default AnalogMarkdownRouteComponent;
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AnalogMarkdownRouteComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{
|
|
27
|
+
selector: 'analog-markdown-route',
|
|
28
|
+
standalone: true,
|
|
29
|
+
imports: [AsyncPipe],
|
|
30
|
+
hostDirectives: [AnchorNavigationDirective],
|
|
31
|
+
preserveWhitespaces: true,
|
|
32
|
+
encapsulation: ViewEncapsulation.None,
|
|
33
|
+
template: `<div [innerHTML]="content" [class]="classes"></div>`,
|
|
34
|
+
}]
|
|
35
|
+
}], propDecorators: { classes: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tcm91dGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL21hcmtkb3duLXJvdXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRTFFLE1BU3FCLDRCQUE0QjtJQVRqRDtRQVVVLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVoQyxZQUFPLEdBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQ2xELENBQUM7UUFFTyxZQUFPLEdBQUcsdUJBQXVCLENBQUM7S0FLNUM7SUFIQyxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQyxDQUFDOzhHQWJrQiw0QkFBNEI7a0dBQTVCLDRCQUE0QixnTEFGckMscURBQXFEOztlQUU1Qyw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFUaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUNwQixjQUFjLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDM0MsbUJBQW1CLEVBQUUsSUFBSTtvQkFDekIsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRSxxREFBcUQ7aUJBQ2hFOzhCQVVVLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQ29udGVudFJlbmRlcmVyIH0gZnJvbSAnLi9jb250ZW50LXJlbmRlcmVyJztcbmltcG9ydCB7IEFuY2hvck5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2FuY2hvci1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuYWxvZy1tYXJrZG93bi1yb3V0ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGVdLFxuICBob3N0RGlyZWN0aXZlczogW0FuY2hvck5hdmlnYXRpb25EaXJlY3RpdmVdLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYDxkaXYgW2lubmVySFRNTF09XCJjb250ZW50XCIgW2NsYXNzXT1cImNsYXNzZXNcIj48L2Rpdj5gLFxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFuYWxvZ01hcmtkb3duUm91dGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkIHtcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIGNvbnRlbnRSZW5kZXJlciA9IGluamVjdChDb250ZW50UmVuZGVyZXIpO1xuXG4gIHByb3RlY3RlZCBjb250ZW50OiBTYWZlSHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsncmVuZGVyZWRBbmFsb2dDb250ZW50J11cbiAgKTtcblxuICBASW5wdXQoKSBjbGFzc2VzID0gJ2FuYWxvZy1tYXJrZG93bi1yb3V0ZSc7XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuY29udGVudFJlbmRlcmVyLmVuaGFuY2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,20 +1,37 @@
|
|
|
1
|
-
import { AsyncPipe } from '@angular/common';
|
|
2
|
-
import { Component,
|
|
1
|
+
import { AsyncPipe, isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { Component, Input, NgZone, PLATFORM_ID, ViewEncapsulation, inject, } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
4
|
import { ActivatedRoute } from '@angular/router';
|
|
5
5
|
import { of } from 'rxjs';
|
|
6
6
|
import { catchError, map, mergeMap } from 'rxjs/operators';
|
|
7
|
-
import { ContentRenderer } from './content-renderer';
|
|
8
7
|
import { AnchorNavigationDirective } from './anchor-navigation.directive';
|
|
8
|
+
import { ContentRenderer } from './content-renderer';
|
|
9
|
+
import { MERMAID_IMPORT_TOKEN } from './markdown-content-renderer.service';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "./anchor-navigation.directive";
|
|
11
12
|
class AnalogMarkdownComponent {
|
|
12
13
|
constructor() {
|
|
13
14
|
this.sanitizer = inject(DomSanitizer);
|
|
14
15
|
this.route = inject(ActivatedRoute);
|
|
16
|
+
this.zone = inject(NgZone);
|
|
17
|
+
this.platformId = inject(PLATFORM_ID);
|
|
18
|
+
this.mermaidImport = inject(MERMAID_IMPORT_TOKEN, {
|
|
19
|
+
optional: true,
|
|
20
|
+
});
|
|
15
21
|
this.content$ = of('');
|
|
16
22
|
this.classes = 'analog-markdown';
|
|
17
23
|
this.contentRenderer = inject(ContentRenderer);
|
|
24
|
+
if (isPlatformBrowser(this.platformId) && this.mermaidImport) {
|
|
25
|
+
// Mermaid can only be loaded on client side
|
|
26
|
+
this.loadMermaid(this.mermaidImport);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async loadMermaid(mermaidImport) {
|
|
30
|
+
this.mermaid = await mermaidImport;
|
|
31
|
+
this.mermaid.default.initialize({ startOnLoad: false });
|
|
32
|
+
// Explicitly running mermaid as ngAfterViewChecked
|
|
33
|
+
// has probably already been called
|
|
34
|
+
this.zone.runOutsideAngular(() => this.mermaid?.default.run());
|
|
18
35
|
}
|
|
19
36
|
ngOnInit() {
|
|
20
37
|
this.updateContent();
|
|
@@ -30,12 +47,13 @@ class AnalogMarkdownComponent {
|
|
|
30
47
|
}
|
|
31
48
|
ngAfterViewChecked() {
|
|
32
49
|
this.contentRenderer.enhance();
|
|
50
|
+
this.zone.runOutsideAngular(() => this.mermaid?.default.run());
|
|
33
51
|
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AnalogMarkdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: AnalogMarkdownComponent, isStandalone: true, selector: "analog-markdown", inputs: { content: "content", classes: "classes" }, usesOnChanges: true, hostDirectives: [{ directive: i1.AnchorNavigationDirective }], ngImport: i0, template: `<div [innerHTML]="content$ | async" [class]="classes"></div>`, isInline: true, dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
|
|
36
54
|
}
|
|
37
55
|
export default AnalogMarkdownComponent;
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: AnalogMarkdownComponent, decorators: [{
|
|
39
57
|
type: Component,
|
|
40
58
|
args: [{
|
|
41
59
|
selector: 'analog-markdown',
|
|
@@ -46,9 +64,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
46
64
|
encapsulation: ViewEncapsulation.None,
|
|
47
65
|
template: `<div [innerHTML]="content$ | async" [class]="classes"></div>`,
|
|
48
66
|
}]
|
|
49
|
-
}], propDecorators: { content: [{
|
|
67
|
+
}], ctorParameters: function () { return []; }, propDecorators: { content: [{
|
|
50
68
|
type: Input
|
|
51
69
|
}], classes: [{
|
|
52
70
|
type: Input
|
|
53
71
|
}] } });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL21hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0QsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUdOLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQUUzRSxNQVNxQix1QkFBdUI7SUFtQjFDO1FBaEJRLGNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRTtZQUM1RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUdJLGFBQVEsR0FBeUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBR3RDLFlBQU8sR0FBRyxpQkFBaUIsQ0FBQztRQUVyQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUd4QyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzVELDRDQUE0QztZQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWdEO1FBQ2hFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDeEQsbURBQW1EO1FBQ25ELG1DQUFtQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ25FLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUM5RCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDakUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWU7UUFDakMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7OEdBMURrQix1QkFBdUI7a0dBQXZCLHVCQUF1QixtTkFGaEMsOERBQThELHVEQUo5RCxTQUFTOztlQU1BLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQVQzQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ3BCLGNBQWMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUMzQyxtQkFBbUIsRUFBRSxJQUFJO29CQUN6QixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFLDhEQUE4RDtpQkFDekU7MEVBZVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgUExBVEZPUk1fSUQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIERhdGEgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFuY2hvck5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2FuY2hvci1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZW50UmVuZGVyZXIgfSBmcm9tICcuL2NvbnRlbnQtcmVuZGVyZXInO1xuaW1wb3J0IHsgTUVSTUFJRF9JTVBPUlRfVE9LRU4gfSBmcm9tICcuL21hcmtkb3duLWNvbnRlbnQtcmVuZGVyZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuYWxvZy1tYXJrZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGVdLFxuICBob3N0RGlyZWN0aXZlczogW0FuY2hvck5hdmlnYXRpb25EaXJlY3RpdmVdLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYDxkaXYgW2lubmVySFRNTF09XCJjb250ZW50JCB8IGFzeW5jXCIgW2NsYXNzXT1cImNsYXNzZXNcIj48L2Rpdj5gLFxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFuYWxvZ01hcmtkb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lcm1haWRJbXBvcnQgPSBpbmplY3QoTUVSTUFJRF9JTVBPUlRfVE9LRU4sIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG4gIHByaXZhdGUgbWVybWFpZDogdHlwZW9mIGltcG9ydCgnbWVybWFpZCcpIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb250ZW50JDogT2JzZXJ2YWJsZTxTYWZlSHRtbD4gPSBvZignJyk7XG5cbiAgQElucHV0KCkgY29udGVudCE6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIEBJbnB1dCgpIGNsYXNzZXMgPSAnYW5hbG9nLW1hcmtkb3duJztcblxuICBjb250ZW50UmVuZGVyZXIgPSBpbmplY3QoQ29udGVudFJlbmRlcmVyKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLm1lcm1haWRJbXBvcnQpIHtcbiAgICAgIC8vIE1lcm1haWQgY2FuIG9ubHkgYmUgbG9hZGVkIG9uIGNsaWVudCBzaWRlXG4gICAgICB0aGlzLmxvYWRNZXJtYWlkKHRoaXMubWVybWFpZEltcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1lcm1haWQobWVybWFpZEltcG9ydDogUHJvbWlzZTx0eXBlb2YgaW1wb3J0KCdtZXJtYWlkJyk+KSB7XG4gICAgdGhpcy5tZXJtYWlkID0gYXdhaXQgbWVybWFpZEltcG9ydDtcbiAgICB0aGlzLm1lcm1haWQuZGVmYXVsdC5pbml0aWFsaXplKHsgc3RhcnRPbkxvYWQ6IGZhbHNlIH0pO1xuICAgIC8vIEV4cGxpY2l0bHkgcnVubmluZyBtZXJtYWlkIGFzIG5nQWZ0ZXJWaWV3Q2hlY2tlZFxuICAgIC8vIGhhcyBwcm9iYWJseSBhbHJlYWR5IGJlZW4gY2FsbGVkXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMubWVybWFpZD8uZGVmYXVsdC5ydW4oKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICB9XG5cbiAgdXBkYXRlQ29udGVudCgpIHtcbiAgICB0aGlzLmNvbnRlbnQkID0gdGhpcy5yb3V0ZS5kYXRhLnBpcGUoXG4gICAgICBtYXA8RGF0YSwgc3RyaW5nPigoZGF0YSkgPT4gdGhpcy5jb250ZW50ID8/IGRhdGFbJ19hbmFsb2dDb250ZW50J10pLFxuICAgICAgbWVyZ2VNYXAoKGNvbnRlbnRTdHJpbmcpID0+IHRoaXMucmVuZGVyQ29udGVudChjb250ZW50U3RyaW5nKSksXG4gICAgICBtYXAoKGNvbnRlbnQpID0+IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNvbnRlbnQpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGUpID0+IG9mKGBUaGVyZSB3YXMgYW4gZXJyb3IgJHtlfWApKVxuICAgICk7XG4gIH1cblxuICBhc3luYyByZW5kZXJDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFJlbmRlcmVyLnJlbmRlcihjb250ZW50KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICB0aGlzLmNvbnRlbnRSZW5kZXJlci5lbmhhbmNlKCk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMubWVybWFpZD8uZGVmYXVsdC5ydW4oKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credit goes to Scully for original implementation
|
|
3
|
+
* https://github.com/scullyio/scully/blob/main/libs/scully/src/lib/fileHanderPlugins/markdown.ts
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { marked } from 'marked';
|
|
7
|
+
import { gfmHeadingId } from 'marked-gfm-heading-id';
|
|
8
|
+
import { markedHighlight } from 'marked-highlight';
|
|
9
|
+
import 'prismjs';
|
|
10
|
+
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
11
|
+
import 'prismjs/components/prism-bash';
|
|
12
|
+
import 'prismjs/components/prism-css';
|
|
13
|
+
import 'prismjs/components/prism-javascript';
|
|
14
|
+
import 'prismjs/components/prism-json';
|
|
15
|
+
import 'prismjs/components/prism-markup';
|
|
16
|
+
import 'prismjs/components/prism-typescript';
|
|
17
|
+
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
class MarkedSetupService {
|
|
20
|
+
constructor() {
|
|
21
|
+
const renderer = new marked.Renderer();
|
|
22
|
+
renderer.code = (code, lang) => {
|
|
23
|
+
// Let's do a language based detection like on GitHub
|
|
24
|
+
// So we can still have non-interpreted mermaid code
|
|
25
|
+
if (lang === 'mermaid') {
|
|
26
|
+
return '<pre class="mermaid">' + code + '</pre>';
|
|
27
|
+
}
|
|
28
|
+
if (!lang) {
|
|
29
|
+
return '<pre><code>' + code + '</code></pre>';
|
|
30
|
+
}
|
|
31
|
+
const langClass = 'language-' + lang;
|
|
32
|
+
const html = '<pre class="' +
|
|
33
|
+
langClass +
|
|
34
|
+
'"><code class="' +
|
|
35
|
+
langClass +
|
|
36
|
+
'">' +
|
|
37
|
+
code +
|
|
38
|
+
'</code></pre>';
|
|
39
|
+
return html;
|
|
40
|
+
};
|
|
41
|
+
marked.use(gfmHeadingId(), markedHighlight({
|
|
42
|
+
async: true,
|
|
43
|
+
highlight: (code, lang) => {
|
|
44
|
+
lang = lang || 'typescript';
|
|
45
|
+
if (!Prism.languages[lang]) {
|
|
46
|
+
if (lang !== 'mermaid') {
|
|
47
|
+
console.warn(`Notice:
|
|
48
|
+
---------------------------------------------------------------------------------------
|
|
49
|
+
The requested language '${lang}' is not available with the provided setup.
|
|
50
|
+
To enable, import your main.ts as:
|
|
51
|
+
import 'prismjs/components/prism-${lang}';
|
|
52
|
+
---------------------------------------------------------------------------------------
|
|
53
|
+
`);
|
|
54
|
+
}
|
|
55
|
+
return code;
|
|
56
|
+
}
|
|
57
|
+
return Prism.highlight(code, Prism.languages[lang], lang);
|
|
58
|
+
},
|
|
59
|
+
}), {
|
|
60
|
+
renderer,
|
|
61
|
+
pedantic: false,
|
|
62
|
+
gfm: true,
|
|
63
|
+
breaks: false,
|
|
64
|
+
sanitize: false,
|
|
65
|
+
smartypants: false,
|
|
66
|
+
xhtml: false,
|
|
67
|
+
mangle: false,
|
|
68
|
+
});
|
|
69
|
+
this.marked = marked;
|
|
70
|
+
}
|
|
71
|
+
getMarkedInstance() {
|
|
72
|
+
return this.marked;
|
|
73
|
+
}
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MarkedSetupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
75
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MarkedSetupService }); }
|
|
76
|
+
}
|
|
77
|
+
export { MarkedSetupService };
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MarkedSetupService, decorators: [{
|
|
79
|
+
type: Injectable
|
|
80
|
+
}], ctorParameters: function () { return []; } });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VkLXNldHVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9saWIvbWFya2VkLXNldHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxTQUFTLENBQUM7QUFDakIsT0FBTyx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8saUNBQWlDLENBQUM7QUFDekMsT0FBTyxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLDJEQUEyRCxDQUFDOztBQUluRSxNQUNhLGtCQUFrQjtJQUc3QjtRQUNFLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDN0IscURBQXFEO1lBQ3JELG9EQUFvRDtZQUNwRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLE9BQU8sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLFFBQVEsQ0FBQzthQUNsRDtZQUVELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1QsT0FBTyxhQUFhLEdBQUcsSUFBSSxHQUFHLGVBQWUsQ0FBQzthQUMvQztZQUNELE1BQU0sU0FBUyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQ1IsY0FBYztnQkFDZCxTQUFTO2dCQUNULGlCQUFpQjtnQkFDakIsU0FBUztnQkFDVCxJQUFJO2dCQUNKLElBQUk7Z0JBQ0osZUFBZSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLEdBQUcsQ0FDUixZQUFZLEVBQUUsRUFDZCxlQUFlLENBQUM7WUFDZCxLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxHQUFHLElBQUksSUFBSSxZQUFZLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMxQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7d0JBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUM7OzhCQUVHLElBQUk7OzBDQUVRLElBQUk7O1NBRXJDLENBQUMsQ0FBQztxQkFDRTtvQkFDRCxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFDRCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsQ0FBQztTQUNGLENBQUMsRUFDRjtZQUNFLFFBQVE7WUFDUixRQUFRLEVBQUUsS0FBSztZQUNmLEdBQUcsRUFBRSxJQUFJO1lBQ1QsTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7OEdBakVVLGtCQUFrQjtrSEFBbEIsa0JBQWtCOztTQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlZGl0IGdvZXMgdG8gU2N1bGx5IGZvciBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvblxuICogaHR0cHM6Ly9naXRodWIuY29tL3NjdWxseWlvL3NjdWxseS9ibG9iL21haW4vbGlicy9zY3VsbHkvc3JjL2xpYi9maWxlSGFuZGVyUGx1Z2lucy9tYXJrZG93bi50c1xuICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tICdtYXJrZWQnO1xuaW1wb3J0IHsgZ2ZtSGVhZGluZ0lkIH0gZnJvbSAnbWFya2VkLWdmbS1oZWFkaW5nLWlkJztcbmltcG9ydCB7IG1hcmtlZEhpZ2hsaWdodCB9IGZyb20gJ21hcmtlZC1oaWdobGlnaHQnO1xuXG5pbXBvcnQgJ3ByaXNtanMnO1xuaW1wb3J0ICdwcmlzbWpzL3BsdWdpbnMvdG9vbGJhci9wcmlzbS10b29sYmFyJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWJhc2gnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tY3NzJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWphdmFzY3JpcHQnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tanNvbic7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1tYXJrdXAnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tdHlwZXNjcmlwdCc7XG5pbXBvcnQgJ3ByaXNtanMvcGx1Z2lucy9jb3B5LXRvLWNsaXBib2FyZC9wcmlzbS1jb3B5LXRvLWNsaXBib2FyZCc7XG5cbmRlY2xhcmUgY29uc3QgUHJpc206IHR5cGVvZiBpbXBvcnQoJ3ByaXNtanMnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcmtlZFNldHVwU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2VkOiB0eXBlb2YgbWFya2VkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHJlbmRlcmVyID0gbmV3IG1hcmtlZC5SZW5kZXJlcigpO1xuICAgIHJlbmRlcmVyLmNvZGUgPSAoY29kZSwgbGFuZykgPT4ge1xuICAgICAgLy8gTGV0J3MgZG8gYSBsYW5ndWFnZSBiYXNlZCBkZXRlY3Rpb24gbGlrZSBvbiBHaXRIdWJcbiAgICAgIC8vIFNvIHdlIGNhbiBzdGlsbCBoYXZlIG5vbi1pbnRlcnByZXRlZCBtZXJtYWlkIGNvZGVcbiAgICAgIGlmIChsYW5nID09PSAnbWVybWFpZCcpIHtcbiAgICAgICAgcmV0dXJuICc8cHJlIGNsYXNzPVwibWVybWFpZFwiPicgKyBjb2RlICsgJzwvcHJlPic7XG4gICAgICB9XG5cbiAgICAgIGlmICghbGFuZykge1xuICAgICAgICByZXR1cm4gJzxwcmU+PGNvZGU+JyArIGNvZGUgKyAnPC9jb2RlPjwvcHJlPic7XG4gICAgICB9XG4gICAgICBjb25zdCBsYW5nQ2xhc3MgPSAnbGFuZ3VhZ2UtJyArIGxhbmc7XG4gICAgICBjb25zdCBodG1sID1cbiAgICAgICAgJzxwcmUgY2xhc3M9XCInICtcbiAgICAgICAgbGFuZ0NsYXNzICtcbiAgICAgICAgJ1wiPjxjb2RlIGNsYXNzPVwiJyArXG4gICAgICAgIGxhbmdDbGFzcyArXG4gICAgICAgICdcIj4nICtcbiAgICAgICAgY29kZSArXG4gICAgICAgICc8L2NvZGU+PC9wcmU+JztcbiAgICAgIHJldHVybiBodG1sO1xuICAgIH07XG5cbiAgICBtYXJrZWQudXNlKFxuICAgICAgZ2ZtSGVhZGluZ0lkKCksXG4gICAgICBtYXJrZWRIaWdobGlnaHQoe1xuICAgICAgICBhc3luYzogdHJ1ZSxcbiAgICAgICAgaGlnaGxpZ2h0OiAoY29kZSwgbGFuZykgPT4ge1xuICAgICAgICAgIGxhbmcgPSBsYW5nIHx8ICd0eXBlc2NyaXB0JztcbiAgICAgICAgICBpZiAoIVByaXNtLmxhbmd1YWdlc1tsYW5nXSkge1xuICAgICAgICAgICAgaWYgKGxhbmcgIT09ICdtZXJtYWlkJykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYE5vdGljZTpcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBUaGUgcmVxdWVzdGVkIGxhbmd1YWdlICcke2xhbmd9JyBpcyBub3QgYXZhaWxhYmxlIHdpdGggdGhlIHByb3ZpZGVkIHNldHVwLlxuICAgIFRvIGVuYWJsZSwgaW1wb3J0IHlvdXIgbWFpbi50cyBhczpcbiAgICAgIGltcG9ydCAgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS0ke2xhbmd9JztcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFByaXNtLmhpZ2hsaWdodChjb2RlLCBQcmlzbS5sYW5ndWFnZXNbbGFuZ10sIGxhbmcpO1xuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICB7XG4gICAgICAgIHJlbmRlcmVyLFxuICAgICAgICBwZWRhbnRpYzogZmFsc2UsXG4gICAgICAgIGdmbTogdHJ1ZSxcbiAgICAgICAgYnJlYWtzOiBmYWxzZSxcbiAgICAgICAgc2FuaXRpemU6IGZhbHNlLFxuICAgICAgICBzbWFydHlwYW50czogZmFsc2UsXG4gICAgICAgIHhodG1sOiBmYWxzZSxcbiAgICAgICAgbWFuZ2xlOiBmYWxzZSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5tYXJrZWQgPSBtYXJrZWQ7XG4gIH1cblxuICBnZXRNYXJrZWRJbnN0YW5jZSgpOiB0eXBlb2YgbWFya2VkIHtcbiAgICByZXR1cm4gdGhpcy5tYXJrZWQ7XG4gIH1cbn1cbiJdfQ==
|