@analogjs/content 0.1.4 → 0.1.6
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/esm2020/index.mjs +2 -1
- package/esm2020/lib/anchor-navigation.directive.mjs +3 -3
- package/esm2020/lib/content-file.mjs +1 -1
- package/esm2020/lib/content-files-list-token.mjs +16 -0
- package/esm2020/lib/content-files-token.mjs +4 -12
- package/esm2020/lib/content-renderer.mjs +3 -3
- package/esm2020/lib/content.mjs +36 -9
- package/esm2020/lib/get-content-files.mjs +21 -0
- package/esm2020/lib/inject-content-files.mjs +3 -3
- package/esm2020/lib/markdown-content-renderer.service.mjs +5 -7
- package/esm2020/lib/markdown.component.mjs +6 -6
- package/esm2020/lib/parse-raw-content-file.mjs +6 -0
- package/esm2020/lib/utils/zone-wait-for.mjs +12 -0
- package/fesm2015/analogjs-content.mjs +100 -36
- package/fesm2015/analogjs-content.mjs.map +1 -1
- package/fesm2020/analogjs-content.mjs +97 -35
- package/fesm2020/analogjs-content.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/content-file.d.ts +1 -1
- package/lib/content-files-list-token.d.ts +3 -0
- package/lib/content-files-token.d.ts +1 -2
- package/lib/get-content-files.d.ts +14 -0
- package/lib/markdown.component.d.ts +1 -1
- package/lib/parse-raw-content-file.d.ts +4 -0
- package/lib/utils/zone-wait-for.d.ts +2 -0
- package/package.json +1 -1
- package/esm2020/lib/get-raw-files.mjs +0 -5
- package/lib/get-raw-files.d.ts +0 -1
package/esm2020/index.mjs
CHANGED
|
@@ -4,4 +4,5 @@ export { ContentRenderer } from './lib/content-renderer';
|
|
|
4
4
|
export { default as MarkdownComponent } from './lib/markdown.component';
|
|
5
5
|
export { MarkdownContentRendererService } from './lib/markdown-content-renderer.service';
|
|
6
6
|
export { provideContent, withMarkdownRenderer, } from './lib/markdown-content-renderer.service';
|
|
7
|
-
|
|
7
|
+
export { parseRawContentFile } from './lib/parse-raw-content-file';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxJQUFJLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGluamVjdENvbnRlbnQgfSBmcm9tICcuL2xpYi9jb250ZW50JztcbmV4cG9ydCB7IGluamVjdENvbnRlbnRGaWxlcyB9IGZyb20gJy4vbGliL2luamVjdC1jb250ZW50LWZpbGVzJztcbmV4cG9ydCB7IENvbnRlbnRGaWxlIH0gZnJvbSAnLi9saWIvY29udGVudC1maWxlJztcbmV4cG9ydCB7IENvbnRlbnRSZW5kZXJlciB9IGZyb20gJy4vbGliL2NvbnRlbnQtcmVuZGVyZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXJrZG93bkNvbXBvbmVudCB9IGZyb20gJy4vbGliL21hcmtkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgeyBNYXJrZG93bkNvbnRlbnRSZW5kZXJlclNlcnZpY2UgfSBmcm9tICcuL2xpYi9tYXJrZG93bi1jb250ZW50LXJlbmRlcmVyLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgcHJvdmlkZUNvbnRlbnQsXG4gIHdpdGhNYXJrZG93blJlbmRlcmVyLFxufSBmcm9tICcuL2xpYi9tYXJrZG93bi1jb250ZW50LXJlbmRlcmVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgcGFyc2VSYXdDb250ZW50RmlsZSB9IGZyb20gJy4vbGliL3BhcnNlLXJhdy1jb250ZW50LWZpbGUnO1xuIl19
|
|
@@ -21,9 +21,9 @@ export class AnchorNavigationDirective {
|
|
|
21
21
|
return true;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
AnchorNavigationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
25
|
-
AnchorNavigationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
24
|
+
AnchorNavigationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnchorNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
25
|
+
AnchorNavigationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: AnchorNavigationDirective, isStandalone: true, selector: "[analogAnchorNavigation]", host: { listeners: { "click": "handleNavigation($event.target)" } }, ngImport: i0 });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnchorNavigationDirective, decorators: [{
|
|
27
27
|
type: Directive,
|
|
28
28
|
args: [{
|
|
29
29
|
selector: '[analogAnchorNavigation]',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2NvbnRlbnQtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb250ZW50RmlsZTxcbiAgQXR0cmlidXRlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2NvbnRlbnQtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb250ZW50RmlsZTxcbiAgQXR0cmlidXRlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4+IHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgY29udGVudD86IHN0cmluZztcbiAgYXR0cmlidXRlczogQXR0cmlidXRlcztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { getContentFilesList } from './get-content-files';
|
|
3
|
+
export const CONTENT_FILES_LIST_TOKEN = new InjectionToken('@analogjs/content Content Files List', {
|
|
4
|
+
providedIn: 'root',
|
|
5
|
+
factory() {
|
|
6
|
+
const contentFiles = getContentFilesList();
|
|
7
|
+
return Object.keys(contentFiles).map((filename) => {
|
|
8
|
+
const attributes = contentFiles[filename];
|
|
9
|
+
return {
|
|
10
|
+
filename,
|
|
11
|
+
attributes,
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlcy1saXN0LXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2NvbnRlbnQtZmlsZXMtbGlzdC10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCxzQ0FBc0MsRUFDdEM7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPO1FBQ0wsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDaEQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTFDLE9BQU87Z0JBQ0wsUUFBUTtnQkFDUixVQUFVO2FBQ1gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRlbnRGaWxlIH0gZnJvbSAnLi9jb250ZW50LWZpbGUnO1xuaW1wb3J0IHsgZ2V0Q29udGVudEZpbGVzTGlzdCB9IGZyb20gJy4vZ2V0LWNvbnRlbnQtZmlsZXMnO1xuXG5leHBvcnQgY29uc3QgQ09OVEVOVF9GSUxFU19MSVNUX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbnRlbnRGaWxlW10+KFxuICAnQGFuYWxvZ2pzL2NvbnRlbnQgQ29udGVudCBGaWxlcyBMaXN0JyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5KCkge1xuICAgICAgY29uc3QgY29udGVudEZpbGVzID0gZ2V0Q29udGVudEZpbGVzTGlzdCgpO1xuXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoY29udGVudEZpbGVzKS5tYXAoKGZpbGVuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjb250ZW50RmlsZXNbZmlsZW5hbWVdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH1cbik7XG4iXX0=
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import
|
|
3
|
-
import { getRawFiles } from './get-raw-files';
|
|
2
|
+
import { getContentFiles } from './get-content-files';
|
|
4
3
|
export const CONTENT_FILES_TOKEN = new InjectionToken('@analogjs/content Content Files', {
|
|
5
4
|
providedIn: 'root',
|
|
6
5
|
factory() {
|
|
7
|
-
const
|
|
8
|
-
return
|
|
9
|
-
const { body, attributes } = fm(rawContentFiles[filename]);
|
|
10
|
-
return {
|
|
11
|
-
filename,
|
|
12
|
-
content: body,
|
|
13
|
-
attributes,
|
|
14
|
-
};
|
|
15
|
-
});
|
|
6
|
+
const contentFiles = getContentFiles();
|
|
7
|
+
return contentFiles;
|
|
16
8
|
},
|
|
17
9
|
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlcy10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9jb250ZW50LWZpbGVzLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUVuRCxpQ0FBaUMsRUFBRTtJQUNuQyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPO1FBQ0wsTUFBTSxZQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFFdkMsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGdldENvbnRlbnRGaWxlcyB9IGZyb20gJy4vZ2V0LWNvbnRlbnQtZmlsZXMnO1xuXG5leHBvcnQgY29uc3QgQ09OVEVOVF9GSUxFU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxcbiAgUmVjb3JkPHN0cmluZywgKCkgPT4gUHJvbWlzZTxzdHJpbmc+PlxuPignQGFuYWxvZ2pzL2NvbnRlbnQgQ29udGVudCBGaWxlcycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5KCkge1xuICAgIGNvbnN0IGNvbnRlbnRGaWxlcyA9IGdldENvbnRlbnRGaWxlcygpO1xuXG4gICAgcmV0dXJuIGNvbnRlbnRGaWxlcztcbiAgfSxcbn0pO1xuIl19
|
|
@@ -7,9 +7,9 @@ export class ContentRenderer {
|
|
|
7
7
|
// eslint-disable-next-line
|
|
8
8
|
enhance() { }
|
|
9
9
|
}
|
|
10
|
-
ContentRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
11
|
-
ContentRenderer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
10
|
+
ContentRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ContentRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
+
ContentRenderer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ContentRenderer });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ContentRenderer, decorators: [{
|
|
13
13
|
type: Injectable
|
|
14
14
|
}] });
|
|
15
15
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9jb250ZW50LXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBZ0IsZUFBZTtJQUNuQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWU7UUFDMUIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixPQUFPLEtBQUksQ0FBQzs7NEdBTlEsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZW50UmVuZGVyZXIge1xuICBhc3luYyByZW5kZXIoY29udGVudDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBlbmhhbmNlKCkge31cbn1cbiJdfQ==
|
package/esm2020/lib/content.mjs
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
2
|
import { inject } from '@angular/core';
|
|
3
3
|
import { ActivatedRoute } from '@angular/router';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { of } from 'rxjs';
|
|
5
|
+
import { map, switchMap } from 'rxjs/operators';
|
|
6
|
+
import { CONTENT_FILES_TOKEN } from './content-files-token';
|
|
7
|
+
import { waitFor } from './utils/zone-wait-for';
|
|
8
|
+
import { parseRawContentFile } from './parse-raw-content-file';
|
|
6
9
|
/**
|
|
7
10
|
* Retrieves the static content using the provided param
|
|
8
11
|
*
|
|
@@ -11,13 +14,37 @@ import { injectContentFiles } from './inject-content-files';
|
|
|
11
14
|
*/
|
|
12
15
|
export function injectContent(param = 'slug', fallback = 'No Content Found') {
|
|
13
16
|
const route = inject(ActivatedRoute);
|
|
14
|
-
const contentFiles =
|
|
15
|
-
return route.paramMap.pipe(map((params) => params.get(param)),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const contentFiles = inject(CONTENT_FILES_TOKEN);
|
|
18
|
+
return route.paramMap.pipe(map((params) => params.get(param)), switchMap((slug) => {
|
|
19
|
+
const filename = `/src/content/${slug}.md`;
|
|
20
|
+
const contentFile = contentFiles[filename];
|
|
21
|
+
if (!contentFile) {
|
|
22
|
+
return of({
|
|
23
|
+
attributes: {},
|
|
24
|
+
filename,
|
|
25
|
+
content: fallback,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return new Promise((resolve) => {
|
|
29
|
+
const contentResolver = contentFile();
|
|
30
|
+
if (import.meta.env.SSR === true) {
|
|
31
|
+
waitFor(contentResolver).then((content) => {
|
|
32
|
+
resolve(content);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
contentResolver.then((content) => {
|
|
37
|
+
resolve(content);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}).then((rawContentFile) => {
|
|
41
|
+
const { content, attributes } = parseRawContentFile(rawContentFile);
|
|
42
|
+
return {
|
|
43
|
+
filename,
|
|
44
|
+
attributes,
|
|
45
|
+
content,
|
|
46
|
+
};
|
|
20
47
|
});
|
|
21
48
|
}));
|
|
22
49
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUVyQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHaEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9EOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FHM0IsS0FBSyxHQUFHLE1BQU0sRUFDZCxRQUFRLEdBQUcsa0JBQWtCO0lBRTdCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNqRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDbEMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDakIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1FBQzNDLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFFBQVE7Z0JBQ1IsT0FBTyxFQUFFLFFBQVE7YUFDbEIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDckMsTUFBTSxlQUFlLEdBQUcsV0FBVyxFQUFFLENBQUM7WUFFdEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNoQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQzNCLG1CQUFtQixDQUFhLGNBQWMsQ0FBQyxDQUFDO1lBRWxELE9BQU87Z0JBQ0wsUUFBUTtnQkFDUixVQUFVO2dCQUNWLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZS9jbGllbnRcIiAvPlxuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29udGVudEZpbGUgfSBmcm9tICcuL2NvbnRlbnQtZmlsZSc7XG5pbXBvcnQgeyBDT05URU5UX0ZJTEVTX1RPS0VOIH0gZnJvbSAnLi9jb250ZW50LWZpbGVzLXRva2VuJztcbmltcG9ydCB7IHdhaXRGb3IgfSBmcm9tICcuL3V0aWxzL3pvbmUtd2FpdC1mb3InO1xuaW1wb3J0IHsgcGFyc2VSYXdDb250ZW50RmlsZSB9IGZyb20gJy4vcGFyc2UtcmF3LWNvbnRlbnQtZmlsZSc7XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBzdGF0aWMgY29udGVudCB1c2luZyB0aGUgcHJvdmlkZWQgcGFyYW1cbiAqXG4gKiBAcGFyYW0gcGFyYW0gcm91dGUgcGFyYW1ldGVyIChkZWZhdWx0OiAnc2x1ZycpXG4gKiBAcGFyYW0gZmFsbGJhY2sgZmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGZpbGUgaXMgbm90IGZvdW5kIChkZWZhdWx0OiAnTm8gQ29udGVudCBGb3VuZCcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDb250ZW50PFxuICBBdHRyaWJ1dGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT5cbj4oXG4gIHBhcmFtID0gJ3NsdWcnLFxuICBmYWxsYmFjayA9ICdObyBDb250ZW50IEZvdW5kJ1xuKTogT2JzZXJ2YWJsZTxDb250ZW50RmlsZTxBdHRyaWJ1dGVzIHwgUmVjb3JkPHN0cmluZywgbmV2ZXI+Pj4ge1xuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIGNvbnN0IGNvbnRlbnRGaWxlcyA9IGluamVjdChDT05URU5UX0ZJTEVTX1RPS0VOKTtcbiAgcmV0dXJuIHJvdXRlLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQocGFyYW0pKSxcbiAgICBzd2l0Y2hNYXAoKHNsdWcpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVuYW1lID0gYC9zcmMvY29udGVudC8ke3NsdWd9Lm1kYDtcbiAgICAgIGNvbnN0IGNvbnRlbnRGaWxlID0gY29udGVudEZpbGVzW2ZpbGVuYW1lXTtcblxuICAgICAgaWYgKCFjb250ZW50RmlsZSkge1xuICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgY29udGVudFJlc29sdmVyID0gY29udGVudEZpbGUoKTtcblxuICAgICAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LlNTUiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHdhaXRGb3IoY29udGVudFJlc29sdmVyKS50aGVuKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKGNvbnRlbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRlbnRSZXNvbHZlci50aGVuKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKGNvbnRlbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KS50aGVuKChyYXdDb250ZW50RmlsZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvbnRlbnQsIGF0dHJpYnV0ZXMgfSA9XG4gICAgICAgICAgcGFyc2VSYXdDb250ZW50RmlsZTxBdHRyaWJ1dGVzPihyYXdDb250ZW50RmlsZSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9KVxuICApO1xufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the list of content files by filename with ?analog-content-list=true.
|
|
3
|
+
* We use the query param to transform the return into an array of
|
|
4
|
+
* just front matter attributes.
|
|
5
|
+
*
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export const getContentFilesList = () => import.meta.glob('/src/content/**/*.md', {
|
|
9
|
+
eager: true,
|
|
10
|
+
import: 'default',
|
|
11
|
+
query: { 'analog-content-list': true },
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Returns the lazy loaded content files for lookups.
|
|
15
|
+
*
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export const getContentFiles = () => import.meta.glob(['/src/content/**/*.md'], {
|
|
19
|
+
as: 'raw',
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNvbnRlbnQtZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9saWIvZ2V0LWNvbnRlbnQtZmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFLENBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFzQixzQkFBc0IsRUFBRTtJQUM1RCxLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLEtBQUssRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRTtDQUN2QyxDQUFDLENBQUM7QUFFTDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEVBQUU7SUFDekMsRUFBRSxFQUFFLEtBQUs7Q0FDVixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJldHVybnMgdGhlIGxpc3Qgb2YgY29udGVudCBmaWxlcyBieSBmaWxlbmFtZSB3aXRoID9hbmFsb2ctY29udGVudC1saXN0PXRydWUuXG4gKiBXZSB1c2UgdGhlIHF1ZXJ5IHBhcmFtIHRvIHRyYW5zZm9ybSB0aGUgcmV0dXJuIGludG8gYW4gYXJyYXkgb2ZcbiAqIGp1c3QgZnJvbnQgbWF0dGVyIGF0dHJpYnV0ZXMuXG4gKlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvbnRlbnRGaWxlc0xpc3QgPSAoKSA9PlxuICBpbXBvcnQubWV0YS5nbG9iPFJlY29yZDxzdHJpbmcsIGFueT4+KCcvc3JjL2NvbnRlbnQvKiovKi5tZCcsIHtcbiAgICBlYWdlcjogdHJ1ZSxcbiAgICBpbXBvcnQ6ICdkZWZhdWx0JyxcbiAgICBxdWVyeTogeyAnYW5hbG9nLWNvbnRlbnQtbGlzdCc6IHRydWUgfSxcbiAgfSk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbGF6eSBsb2FkZWQgY29udGVudCBmaWxlcyBmb3IgbG9va3Vwcy5cbiAqXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudEZpbGVzID0gKCkgPT5cbiAgaW1wb3J0Lm1ldGEuZ2xvYihbJy9zcmMvY29udGVudC8qKi8qLm1kJ10sIHtcbiAgICBhczogJ3JhdycsXG4gIH0pO1xuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { inject } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { CONTENT_FILES_LIST_TOKEN } from './content-files-list-token';
|
|
3
3
|
export function injectContentFiles() {
|
|
4
|
-
return inject(
|
|
4
|
+
return inject(CONTENT_FILES_LIST_TOKEN);
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LWNvbnRlbnQtZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9saWIvaW5qZWN0LWNvbnRlbnQtZmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RSxNQUFNLFVBQVUsa0JBQWtCO0lBR2hDLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUE4QixDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50RmlsZSB9IGZyb20gJy4vY29udGVudC1maWxlJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09OVEVOVF9GSUxFU19MSVNUX1RPS0VOIH0gZnJvbSAnLi9jb250ZW50LWZpbGVzLWxpc3QtdG9rZW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q29udGVudEZpbGVzPFxuICBBdHRyaWJ1dGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PlxuPigpOiBDb250ZW50RmlsZTxBdHRyaWJ1dGVzPltdIHtcbiAgcmV0dXJuIGluamVjdChDT05URU5UX0ZJTEVTX0xJU1RfVE9LRU4pIGFzIENvbnRlbnRGaWxlPEF0dHJpYnV0ZXM+W107XG59XG4iXX0=
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { inject, Injectable, PLATFORM_ID } from '@angular/core';
|
|
6
6
|
import { marked } from 'marked';
|
|
7
|
-
import fm from 'front-matter';
|
|
8
7
|
import 'prismjs';
|
|
9
8
|
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
10
9
|
import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';
|
|
@@ -64,15 +63,14 @@ export class MarkdownContentRendererService {
|
|
|
64
63
|
smartypants: false,
|
|
65
64
|
xhtml: false,
|
|
66
65
|
});
|
|
67
|
-
|
|
68
|
-
return marked(body);
|
|
66
|
+
return marked(content);
|
|
69
67
|
}
|
|
70
68
|
// eslint-disable-next-line
|
|
71
69
|
enhance() { }
|
|
72
70
|
}
|
|
73
|
-
MarkdownContentRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
74
|
-
MarkdownContentRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
71
|
+
MarkdownContentRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: MarkdownContentRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
+
MarkdownContentRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: MarkdownContentRendererService });
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: MarkdownContentRendererService, decorators: [{
|
|
76
74
|
type: Injectable
|
|
77
75
|
}] });
|
|
78
76
|
export function withMarkdownRenderer() {
|
|
@@ -81,4 +79,4 @@ export function withMarkdownRenderer() {
|
|
|
81
79
|
export function provideContent(...features) {
|
|
82
80
|
return [...features];
|
|
83
81
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tY29udGVudC1yZW5kZXJlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL21hcmtkb3duLWNvbnRlbnQtcmVuZGVyZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVoQyxPQUFPLFNBQVMsQ0FBQztBQUNqQixPQUFPLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sMkRBQTJELENBQUM7QUFDbkUsT0FBTywrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTywrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUlyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN2Qyw4Q0FBOEM7QUFDOUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFxQixJQUFJLEVBQUUsSUFBSTtJQUM3QywyQkFBMkI7SUFDM0IsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ1QsT0FBTyxhQUFhLEdBQUcsSUFBSSxHQUFHLGVBQWUsQ0FBQztLQUMvQztJQUNELHFCQUFxQjtJQUNyQixNQUFNLFNBQVMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLE9BQU8sQ0FDTCxjQUFjO1FBQ2QsU0FBUztRQUNULGlCQUFpQjtRQUNqQixTQUFTO1FBQ1QsSUFBSTtRQUNKLElBQUk7UUFDSixlQUFlLENBQ2hCLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixpQ0FBaUM7QUFHakMsTUFBTSxPQUFPLDhCQUE4QjtJQUQzQztRQUVFLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FpQ2xDO0lBL0JDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBZTtRQUMxQixNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2hCLFFBQVE7WUFDUixTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksR0FBRyxJQUFJLElBQUksWUFBWSxDQUFDO2dCQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQzs7Z0NBRVMsSUFBSTs7NENBRVEsSUFBSTs7V0FFckMsQ0FBQyxDQUFDO29CQUNILE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUNELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCxDQUFDO1lBQ0QsUUFBUSxFQUFFLEtBQUs7WUFDZixHQUFHLEVBQUUsSUFBSTtZQUNULE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixXQUFXLEVBQUUsS0FBSztZQUNsQixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsT0FBTyxLQUFJLENBQUM7OzJIQWpDRCw4QkFBOEI7K0hBQTlCLDhCQUE4QjsyRkFBOUIsOEJBQThCO2tCQUQxQyxVQUFVOztBQXFDWCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSw4QkFBOEIsRUFBRSxDQUFDO0FBQ2hGLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQUcsUUFBb0I7SUFDcEQsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlZGl0IGdvZXMgdG8gU2N1bGx5IGZvciBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvblxuICogaHR0cHM6Ly9naXRodWIuY29tL3NjdWxseWlvL3NjdWxseS9ibG9iL21haW4vbGlicy9zY3VsbHkvc3JjL2xpYi9maWxlSGFuZGVyUGx1Z2lucy9tYXJrZG93bi50c1xuICovXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJztcblxuaW1wb3J0ICdwcmlzbWpzJztcbmltcG9ydCAncHJpc21qcy9wbHVnaW5zL3Rvb2xiYXIvcHJpc20tdG9vbGJhcic7XG5pbXBvcnQgJ3ByaXNtanMvcGx1Z2lucy9jb3B5LXRvLWNsaXBib2FyZC9wcmlzbS1jb3B5LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1iYXNoJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWNzcyc7XG5pbXBvcnQgJ3ByaXNtanMvY29tcG9uZW50cy9wcmlzbS1qYXZhc2NyaXB0JztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWpzb24nO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tbWFya3VwJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXR5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyBDb250ZW50UmVuZGVyZXIgfSBmcm9tICcuL2NvbnRlbnQtcmVuZGVyZXInO1xuXG5kZWNsYXJlIGNvbnN0IFByaXNtOiB0eXBlb2YgaW1wb3J0KCdwcmlzbWpzJyk7XG5cbmNvbnN0IHJlbmRlcmVyID0gbmV3IG1hcmtlZC5SZW5kZXJlcigpO1xuLy8gd3JhcCBjb2RlIGJsb2NrIHRoZSB3YXkgUHJpc20uanMgZXhwZWN0cyBpdFxucmVuZGVyZXIuY29kZSA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGNvZGUsIGxhbmcpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIGNvZGUgPSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0KGNvZGUsIGxhbmcpO1xuICBpZiAoIWxhbmcpIHtcbiAgICByZXR1cm4gJzxwcmU+PGNvZGU+JyArIGNvZGUgKyAnPC9jb2RlPjwvcHJlPic7XG4gIH1cbiAgLy8gZS5nLiBcImxhbmd1YWdlLWpzXCJcbiAgY29uc3QgbGFuZ0NsYXNzID0gJ2xhbmd1YWdlLScgKyBsYW5nO1xuICByZXR1cm4gKFxuICAgICc8cHJlIGNsYXNzPVwiJyArXG4gICAgbGFuZ0NsYXNzICtcbiAgICAnXCI+PGNvZGUgY2xhc3M9XCInICtcbiAgICBsYW5nQ2xhc3MgK1xuICAgICdcIj4nICtcbiAgICBjb2RlICtcbiAgICAnPC9jb2RlPjwvcHJlPidcbiAgKTtcbn07XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1hcmtkb3duQ29udGVudFJlbmRlcmVyU2VydmljZSBpbXBsZW1lbnRzIENvbnRlbnRSZW5kZXJlciB7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIGFzeW5jIHJlbmRlcihjb250ZW50OiBzdHJpbmcpIHtcbiAgICBtYXJrZWQuc2V0T3B0aW9ucyh7XG4gICAgICByZW5kZXJlcixcbiAgICAgIGhpZ2hsaWdodDogKGNvZGUsIGxhbmcpID0+IHtcbiAgICAgICAgbGFuZyA9IGxhbmcgfHwgJ3R5cGVzY3JpcHQnO1xuICAgICAgICBpZiAoIVByaXNtLmxhbmd1YWdlc1tsYW5nXSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihgTm90aWNlOlxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgVGhlIHJlcXVlc3RlZCBsYW5ndWFnZSAnJHtsYW5nfScgaXMgbm90IGF2YWlsYWJsZSB3aXRoIHRoZSBwcm92aWRlZCBzZXR1cC5cbiAgICAgIFRvIGVuYWJsZSwgaW1wb3J0IHlvdXIgbWFpbi50cyBhczpcbiAgICAgICAgaW1wb3J0ICAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLSR7bGFuZ30nO1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgIGApO1xuICAgICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcmlzbS5oaWdobGlnaHQoY29kZSwgUHJpc20ubGFuZ3VhZ2VzW2xhbmddLCBsYW5nKTtcbiAgICAgIH0sXG4gICAgICBwZWRhbnRpYzogZmFsc2UsXG4gICAgICBnZm06IHRydWUsXG4gICAgICBicmVha3M6IGZhbHNlLFxuICAgICAgc2FuaXRpemU6IGZhbHNlLFxuICAgICAgc21hcnRMaXN0czogdHJ1ZSxcbiAgICAgIHNtYXJ0eXBhbnRzOiBmYWxzZSxcbiAgICAgIHhodG1sOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXJrZWQoY29udGVudCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgZW5oYW5jZSgpIHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTWFya2Rvd25SZW5kZXJlcigpOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IENvbnRlbnRSZW5kZXJlciwgdXNlQ2xhc3M6IE1hcmtkb3duQ29udGVudFJlbmRlcmVyU2VydmljZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbnRlbnQoLi4uZmVhdHVyZXM6IFByb3ZpZGVyW10pIHtcbiAgcmV0dXJuIFsuLi5mZWF0dXJlc107XG59XG4iXX0=
|
|
@@ -3,7 +3,7 @@ import { Component, inject, Input, ViewEncapsulation, } 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
|
-
import { catchError, map, mergeMap
|
|
6
|
+
import { catchError, map, mergeMap } from 'rxjs/operators';
|
|
7
7
|
import { ContentRenderer } from './content-renderer';
|
|
8
8
|
import { AnchorNavigationDirective } from './anchor-navigation.directive';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
@@ -23,7 +23,7 @@ export default class AnalogMarkdownComponent {
|
|
|
23
23
|
this.updateContent();
|
|
24
24
|
}
|
|
25
25
|
updateContent() {
|
|
26
|
-
this.content$ = this.route.data.pipe(map((data) => data['_analogContent']),
|
|
26
|
+
this.content$ = this.route.data.pipe(map((data) => this.content ?? data['_analogContent']), mergeMap((contentString) => this.renderContent(contentString)), map((content) => this.sanitizer.bypassSecurityTrustHtml(content)), catchError((e) => of(`There was an error ${e}`)));
|
|
27
27
|
}
|
|
28
28
|
async renderContent(content) {
|
|
29
29
|
return this.contentRenderer.render(content);
|
|
@@ -32,9 +32,9 @@ export default class AnalogMarkdownComponent {
|
|
|
32
32
|
this.contentRenderer.enhance();
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
AnalogMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
36
|
-
AnalogMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
35
|
+
AnalogMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnalogMarkdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
+
AnalogMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", 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 });
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnalogMarkdownComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
39
39
|
args: [{
|
|
40
40
|
selector: 'analog-markdown',
|
|
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
50
50
|
}], classes: [{
|
|
51
51
|
type: Input
|
|
52
52
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL21hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUVMLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBUSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFXMUUsTUFBTSxDQUFDLE9BQU8sT0FBTyx1QkFBdUI7SUFUNUM7UUFZVSxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUF5QixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHdEMsWUFBTyxHQUFHLGlCQUFpQixDQUFDO1FBRXJDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBMEIzQztJQXhCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBZSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUNuRSxRQUFRLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDOUQsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ2pFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pDLENBQUM7O29IQW5Da0IsdUJBQXVCO3dHQUF2Qix1QkFBdUIsbU5BRmhDLDhEQUE4RCx1REFKOUQsU0FBUzsyRkFNQSx1QkFBdUI7a0JBVDNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDcEIsY0FBYyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQzNDLG1CQUFtQixFQUFFLElBQUk7b0JBQ3pCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxRQUFRLEVBQUUsOERBQThEO2lCQUN6RTs4QkFRVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb250ZW50UmVuZGVyZXIgfSBmcm9tICcuL2NvbnRlbnQtcmVuZGVyZXInO1xuaW1wb3J0IHsgQW5jaG9yTmF2aWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vYW5jaG9yLW5hdmlnYXRpb24uZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5hbG9nLW1hcmtkb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQW5jaG9yTmF2aWdhdGlvbkRpcmVjdGl2ZV0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgPGRpdiBbaW5uZXJIVE1MXT1cImNvbnRlbnQkIHwgYXN5bmNcIiBbY2xhc3NdPVwiY2xhc3Nlc1wiPjwvZGl2PmAsXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQW5hbG9nTWFya2Rvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHVibGljIGNvbnRlbnQkOiBPYnNlcnZhYmxlPFNhZmVIdG1sPiA9IG9mKCcnKTtcblxuICBASW5wdXQoKSBjb250ZW50ITogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgQElucHV0KCkgY2xhc3NlcyA9ICdhbmFsb2ctbWFya2Rvd24nO1xuXG4gIGNvbnRlbnRSZW5kZXJlciA9IGluamVjdChDb250ZW50UmVuZGVyZXIpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG4gIH1cblxuICB1cGRhdGVDb250ZW50KCkge1xuICAgIHRoaXMuY29udGVudCQgPSB0aGlzLnJvdXRlLmRhdGEucGlwZShcbiAgICAgIG1hcDxEYXRhLCBzdHJpbmc+KChkYXRhKSA9PiB0aGlzLmNvbnRlbnQgPz8gZGF0YVsnX2FuYWxvZ0NvbnRlbnQnXSksXG4gICAgICBtZXJnZU1hcCgoY29udGVudFN0cmluZykgPT4gdGhpcy5yZW5kZXJDb250ZW50KGNvbnRlbnRTdHJpbmcpKSxcbiAgICAgIG1hcCgoY29udGVudCkgPT4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGVudCkpLFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4gb2YoYFRoZXJlIHdhcyBhbiBlcnJvciAke2V9YCkpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlbmRlckNvbnRlbnQoY29udGVudDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50UmVuZGVyZXIucmVuZGVyKGNvbnRlbnQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuY29udGVudFJlbmRlcmVyLmVuaGFuY2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import fm from 'front-matter';
|
|
2
|
+
export function parseRawContentFile(rawContentFile) {
|
|
3
|
+
const { body, attributes } = fm(rawContentFile);
|
|
4
|
+
return { content: body, attributes };
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtcmF3LWNvbnRlbnQtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi9wYXJzZS1yYXctY29udGVudC1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLGNBQXNCO0lBRXRCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFhLGNBQWMsQ0FBQyxDQUFDO0lBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm0gZnJvbSAnZnJvbnQtbWF0dGVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmF3Q29udGVudEZpbGU8QXR0cmlidXRlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KFxuICByYXdDb250ZW50RmlsZTogc3RyaW5nXG4pOiB7IGNvbnRlbnQ6IHN0cmluZzsgYXR0cmlidXRlczogQXR0cmlidXRlcyB9IHtcbiAgY29uc3QgeyBib2R5LCBhdHRyaWJ1dGVzIH0gPSBmbTxBdHRyaWJ1dGVzPihyYXdDb250ZW50RmlsZSk7XG4gIHJldHVybiB7IGNvbnRlbnQ6IGJvZHksIGF0dHJpYnV0ZXMgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { firstValueFrom, isObservable } from 'rxjs';
|
|
2
|
+
export async function waitFor(prom) {
|
|
3
|
+
if (isObservable(prom)) {
|
|
4
|
+
prom = firstValueFrom(prom);
|
|
5
|
+
}
|
|
6
|
+
const macroTask = Zone.current.scheduleMacroTask(`AnalogContentResolve-${Math.random()}`, () => { }, {}, () => { });
|
|
7
|
+
return prom.then((p) => {
|
|
8
|
+
macroTask.invoke();
|
|
9
|
+
return p;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS13YWl0LWZvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2xpYi91dGlscy96b25lLXdhaXQtZm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBSWhFLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUFJLElBQWdDO0lBQy9ELElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0I7SUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUM5Qyx3QkFBd0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQ3ZDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFDUixFQUFFLEVBQ0YsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUNULENBQUM7SUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFJLEVBQUUsRUFBRTtRQUN4QixTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmRlY2xhcmUgY29uc3QgWm9uZTogYW55O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvcjxUPihwcm9tOiBQcm9taXNlPFQ+IHwgT2JzZXJ2YWJsZTxUPik6IFByb21pc2U8VD4ge1xuICBpZiAoaXNPYnNlcnZhYmxlKHByb20pKSB7XG4gICAgcHJvbSA9IGZpcnN0VmFsdWVGcm9tKHByb20pO1xuICB9XG4gIGNvbnN0IG1hY3JvVGFzayA9IFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayhcbiAgICBgQW5hbG9nQ29udGVudFJlc29sdmUtJHtNYXRoLnJhbmRvbSgpfWAsXG4gICAgKCkgPT4ge30sXG4gICAge30sXG4gICAgKCkgPT4ge31cbiAgKTtcbiAgcmV0dXJuIHByb20udGhlbigocDogVCkgPT4ge1xuICAgIG1hY3JvVGFzay5pbnZva2UoKTtcbiAgICByZXR1cm4gcDtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, Directive, HostListener, Component, ViewEncapsulation, Input, PLATFORM_ID } from '@angular/core';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
+
import { isObservable, firstValueFrom, of } from 'rxjs';
|
|
4
5
|
import { map, switchMap, mergeMap, catchError } from 'rxjs/operators';
|
|
5
|
-
import fm from 'front-matter';
|
|
6
6
|
import { __awaiter } from 'tslib';
|
|
7
|
+
import fm from 'front-matter';
|
|
7
8
|
import { DOCUMENT, Location, AsyncPipe } from '@angular/common';
|
|
8
9
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
9
|
-
import { of } from 'rxjs';
|
|
10
10
|
import { marked } from 'marked';
|
|
11
11
|
import 'prismjs';
|
|
12
12
|
import 'prismjs/plugins/toolbar/prism-toolbar';
|
|
@@ -18,28 +18,51 @@ import 'prismjs/components/prism-json';
|
|
|
18
18
|
import 'prismjs/components/prism-markup';
|
|
19
19
|
import 'prismjs/components/prism-typescript';
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Returns the list of content files by filename with ?analog-content-list=true.
|
|
23
|
+
* We use the query param to transform the return into an array of
|
|
24
|
+
* just front matter attributes.
|
|
25
|
+
*
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
const getContentFilesList = () => import.meta.glob('/src/content/**/*.md', {
|
|
22
29
|
eager: true,
|
|
30
|
+
import: 'default',
|
|
31
|
+
query: { 'analog-content-list': true },
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Returns the lazy loaded content files for lookups.
|
|
35
|
+
*
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
const getContentFiles = () => import.meta.glob(['/src/content/**/*.md'], {
|
|
23
39
|
as: 'raw',
|
|
24
40
|
});
|
|
25
41
|
|
|
26
42
|
const CONTENT_FILES_TOKEN = new InjectionToken('@analogjs/content Content Files', {
|
|
27
43
|
providedIn: 'root',
|
|
28
44
|
factory() {
|
|
29
|
-
const
|
|
30
|
-
return
|
|
31
|
-
const { body, attributes } = fm(rawContentFiles[filename]);
|
|
32
|
-
return {
|
|
33
|
-
filename,
|
|
34
|
-
content: body,
|
|
35
|
-
attributes,
|
|
36
|
-
};
|
|
37
|
-
});
|
|
45
|
+
const contentFiles = getContentFiles();
|
|
46
|
+
return contentFiles;
|
|
38
47
|
},
|
|
39
48
|
});
|
|
40
49
|
|
|
41
|
-
function
|
|
42
|
-
return
|
|
50
|
+
function waitFor(prom) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
if (isObservable(prom)) {
|
|
53
|
+
prom = firstValueFrom(prom);
|
|
54
|
+
}
|
|
55
|
+
const macroTask = Zone.current.scheduleMacroTask(`AnalogContentResolve-${Math.random()}`, () => { }, {}, () => { });
|
|
56
|
+
return prom.then((p) => {
|
|
57
|
+
macroTask.invoke();
|
|
58
|
+
return p;
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function parseRawContentFile(rawContentFile) {
|
|
64
|
+
const { body, attributes } = fm(rawContentFile);
|
|
65
|
+
return { content: body, attributes };
|
|
43
66
|
}
|
|
44
67
|
|
|
45
68
|
/// <reference types="vite/client" />
|
|
@@ -51,16 +74,58 @@ function injectContentFiles() {
|
|
|
51
74
|
*/
|
|
52
75
|
function injectContent(param = 'slug', fallback = 'No Content Found') {
|
|
53
76
|
const route = inject(ActivatedRoute);
|
|
54
|
-
const contentFiles =
|
|
55
|
-
return route.paramMap.pipe(map((params) => params.get(param)),
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
77
|
+
const contentFiles = inject(CONTENT_FILES_TOKEN);
|
|
78
|
+
return route.paramMap.pipe(map((params) => params.get(param)), switchMap((slug) => {
|
|
79
|
+
const filename = `/src/content/${slug}.md`;
|
|
80
|
+
const contentFile = contentFiles[filename];
|
|
81
|
+
if (!contentFile) {
|
|
82
|
+
return of({
|
|
83
|
+
attributes: {},
|
|
84
|
+
filename,
|
|
85
|
+
content: fallback,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return new Promise((resolve) => {
|
|
89
|
+
const contentResolver = contentFile();
|
|
90
|
+
if (import.meta.env.SSR === true) {
|
|
91
|
+
waitFor(contentResolver).then((content) => {
|
|
92
|
+
resolve(content);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
contentResolver.then((content) => {
|
|
97
|
+
resolve(content);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}).then((rawContentFile) => {
|
|
101
|
+
const { content, attributes } = parseRawContentFile(rawContentFile);
|
|
102
|
+
return {
|
|
103
|
+
filename,
|
|
104
|
+
attributes,
|
|
105
|
+
content,
|
|
106
|
+
};
|
|
60
107
|
});
|
|
61
108
|
}));
|
|
62
109
|
}
|
|
63
110
|
|
|
111
|
+
const CONTENT_FILES_LIST_TOKEN = new InjectionToken('@analogjs/content Content Files List', {
|
|
112
|
+
providedIn: 'root',
|
|
113
|
+
factory() {
|
|
114
|
+
const contentFiles = getContentFilesList();
|
|
115
|
+
return Object.keys(contentFiles).map((filename) => {
|
|
116
|
+
const attributes = contentFiles[filename];
|
|
117
|
+
return {
|
|
118
|
+
filename,
|
|
119
|
+
attributes,
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
function injectContentFiles() {
|
|
126
|
+
return inject(CONTENT_FILES_LIST_TOKEN);
|
|
127
|
+
}
|
|
128
|
+
|
|
64
129
|
class ContentRenderer {
|
|
65
130
|
render(content) {
|
|
66
131
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -70,9 +135,9 @@ class ContentRenderer {
|
|
|
70
135
|
// eslint-disable-next-line
|
|
71
136
|
enhance() { }
|
|
72
137
|
}
|
|
73
|
-
ContentRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
74
|
-
ContentRenderer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
138
|
+
ContentRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ContentRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
139
|
+
ContentRenderer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ContentRenderer });
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: ContentRenderer, decorators: [{
|
|
76
141
|
type: Injectable
|
|
77
142
|
}] });
|
|
78
143
|
|
|
@@ -95,9 +160,9 @@ class AnchorNavigationDirective {
|
|
|
95
160
|
return true;
|
|
96
161
|
}
|
|
97
162
|
}
|
|
98
|
-
AnchorNavigationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
99
|
-
AnchorNavigationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
163
|
+
AnchorNavigationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnchorNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
164
|
+
AnchorNavigationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: AnchorNavigationDirective, isStandalone: true, selector: "[analogAnchorNavigation]", host: { listeners: { "click": "handleNavigation($event.target)" } }, ngImport: i0 });
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnchorNavigationDirective, decorators: [{
|
|
101
166
|
type: Directive,
|
|
102
167
|
args: [{
|
|
103
168
|
selector: '[analogAnchorNavigation]',
|
|
@@ -133,7 +198,7 @@ class AnalogMarkdownComponent {
|
|
|
133
198
|
this.updateContent();
|
|
134
199
|
}
|
|
135
200
|
updateContent() {
|
|
136
|
-
this.content$ = this.route.data.pipe(map((data) =>
|
|
201
|
+
this.content$ = this.route.data.pipe(map((data) => { var _a; return (_a = this.content) !== null && _a !== void 0 ? _a : data['_analogContent']; }), mergeMap((contentString) => this.renderContent(contentString)), map((content) => this.sanitizer.bypassSecurityTrustHtml(content)), catchError((e) => of(`There was an error ${e}`)));
|
|
137
202
|
}
|
|
138
203
|
renderContent(content) {
|
|
139
204
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -144,9 +209,9 @@ class AnalogMarkdownComponent {
|
|
|
144
209
|
this.contentRenderer.enhance();
|
|
145
210
|
}
|
|
146
211
|
}
|
|
147
|
-
AnalogMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
148
|
-
AnalogMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.
|
|
149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
212
|
+
AnalogMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnalogMarkdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
213
|
+
AnalogMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: AnalogMarkdownComponent, isStandalone: true, selector: "analog-markdown", inputs: { content: "content", classes: "classes" }, usesOnChanges: true, hostDirectives: [{ directive: 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 });
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: AnalogMarkdownComponent, decorators: [{
|
|
150
215
|
type: Component,
|
|
151
216
|
args: [{
|
|
152
217
|
selector: 'analog-markdown',
|
|
@@ -212,16 +277,15 @@ class MarkdownContentRendererService {
|
|
|
212
277
|
smartypants: false,
|
|
213
278
|
xhtml: false,
|
|
214
279
|
});
|
|
215
|
-
|
|
216
|
-
return marked(body);
|
|
280
|
+
return marked(content);
|
|
217
281
|
});
|
|
218
282
|
}
|
|
219
283
|
// eslint-disable-next-line
|
|
220
284
|
enhance() { }
|
|
221
285
|
}
|
|
222
|
-
MarkdownContentRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.
|
|
223
|
-
MarkdownContentRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.
|
|
224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.
|
|
286
|
+
MarkdownContentRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: MarkdownContentRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
287
|
+
MarkdownContentRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: MarkdownContentRendererService });
|
|
288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: MarkdownContentRendererService, decorators: [{
|
|
225
289
|
type: Injectable
|
|
226
290
|
}] });
|
|
227
291
|
function withMarkdownRenderer() {
|
|
@@ -235,5 +299,5 @@ function provideContent(...features) {
|
|
|
235
299
|
* Generated bundle index. Do not edit.
|
|
236
300
|
*/
|
|
237
301
|
|
|
238
|
-
export { ContentRenderer, AnalogMarkdownComponent as MarkdownComponent, MarkdownContentRendererService, injectContent, injectContentFiles, provideContent, withMarkdownRenderer };
|
|
302
|
+
export { ContentRenderer, AnalogMarkdownComponent as MarkdownComponent, MarkdownContentRendererService, injectContent, injectContentFiles, parseRawContentFile, provideContent, withMarkdownRenderer };
|
|
239
303
|
//# sourceMappingURL=analogjs-content.mjs.map
|