@analogjs/content 1.9.2-beta.1 → 1.9.2-beta.3

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.
Files changed (39) hide show
  1. package/fesm2022/analogjs-content-og.mjs.map +1 -1
  2. package/fesm2022/analogjs-content-prism-highlighter.mjs +3 -3
  3. package/fesm2022/analogjs-content-prism-highlighter.mjs.map +1 -1
  4. package/fesm2022/analogjs-content-shiki-highlighter.mjs.map +1 -1
  5. package/fesm2022/analogjs-content.mjs +24 -24
  6. package/fesm2022/analogjs-content.mjs.map +1 -1
  7. package/og/lib/og.d.ts +0 -1
  8. package/package.json +5 -13
  9. package/plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.js +1 -1
  10. package/plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.js.map +1 -1
  11. package/esm2022/analogjs-content.mjs +0 -5
  12. package/esm2022/index.mjs +0 -12
  13. package/esm2022/lib/anchor-navigation.directive.mjs +0 -46
  14. package/esm2022/lib/content-file.mjs +0 -2
  15. package/esm2022/lib/content-files-list-token.mjs +0 -22
  16. package/esm2022/lib/content-files-token.mjs +0 -32
  17. package/esm2022/lib/content-renderer.mjs +0 -53
  18. package/esm2022/lib/content.mjs +0 -85
  19. package/esm2022/lib/get-content-files.mjs +0 -25
  20. package/esm2022/lib/inject-content-files.mjs +0 -15
  21. package/esm2022/lib/markdown-content-renderer.service.mjs +0 -24
  22. package/esm2022/lib/markdown-route.component.mjs +0 -37
  23. package/esm2022/lib/markdown.component.mjs +0 -100
  24. package/esm2022/lib/marked-content-highlighter.mjs +0 -13
  25. package/esm2022/lib/marked-setup.service.mjs +0 -53
  26. package/esm2022/lib/parse-raw-content-file.mjs +0 -6
  27. package/esm2022/lib/provide-content.mjs +0 -30
  28. package/esm2022/lib/render-task.service.mjs +0 -17
  29. package/esm2022/lib/utils/zone-wait-for.mjs +0 -15
  30. package/esm2022/og/analogjs-content-og.mjs +0 -5
  31. package/esm2022/og/index.mjs +0 -2
  32. package/esm2022/og/lib/og.mjs +0 -41
  33. package/esm2022/og/lib/options.mjs +0 -2
  34. package/esm2022/prism-highlighter/analogjs-content-prism-highlighter.mjs +0 -5
  35. package/esm2022/prism-highlighter/index.mjs +0 -11
  36. package/esm2022/prism-highlighter/lib/prism/angular.mjs +0 -20
  37. package/esm2022/prism-highlighter/lib/prism-highlighter.mjs +0 -51
  38. package/esm2022/shiki-highlighter/analogjs-content-shiki-highlighter.mjs +0 -5
  39. package/esm2022/shiki-highlighter/index.mjs +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"analogjs-content-og.mjs","sources":["../../../../packages/content/og/src/lib/og.ts","../../../../packages/content/og/src/analogjs-content-og.ts"],"sourcesContent":["// Credit for modified source: https://github.com/etherCorps/sveltekit-og/blob/main/src/lib/api.ts\n\nimport satori from 'satori';\nimport { html as toReactElement } from 'satori-html';\nimport sharp from 'sharp';\n\nimport { ImageResponseOptions } from './options.js';\n\nexport const generateImage = async (\n element: string,\n options: ImageResponseOptions\n) => {\n const elementHtml = toReactElement(element);\n const svg = await satori(elementHtml as any, {\n width: options.width || 1200,\n height: options.height || 630,\n fonts: options.fonts?.length ? options.fonts : [],\n tailwindConfig: options.tailwindConfig,\n });\n const svgBuffer = Buffer.from(svg);\n const png = sharp(svgBuffer).png().toBuffer();\n\n const pngBuffer = await png;\n\n return pngBuffer;\n};\n\nexport class ImageResponse extends Response {\n constructor(element: string, options: ImageResponseOptions = {}) {\n super();\n\n const body = new ReadableStream({\n async start(controller) {\n const buffer = await generateImage(element, options);\n controller.enqueue(buffer);\n controller.close();\n },\n });\n\n return new Response(body, {\n headers: {\n 'Content-Type': 'image/png',\n 'Cache-Control': options.debug\n ? 'no-cache, no-store'\n : 'public, immutable, no-transform, max-age=31536000',\n ...options.headers,\n },\n status: options.status || 200,\n statusText: options.statusText,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toReactElement"],"mappings":";;;;AAAA;AAQO,MAAM,aAAa,GAAG,OAC3B,OAAe,EACf,OAA6B,KAC3B;AACF,IAAA,MAAM,WAAW,GAAGA,IAAc,CAAC,OAAO,CAAC,CAAC;AAC5C,IAAA,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAkB,EAAE;AAC3C,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;AAC5B,QAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG;AAC7B,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE;QACjD,cAAc,EAAE,OAAO,CAAC,cAAc;AACvC,KAAA,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AAE9C,IAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC;AAE5B,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEI,MAAO,aAAc,SAAQ,QAAQ,CAAA;IACzC,WAAY,CAAA,OAAe,EAAE,OAAA,GAAgC,EAAE,EAAA;AAC7D,QAAA,KAAK,EAAE,CAAC;AAER,QAAA,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC;YAC9B,MAAM,KAAK,CAAC,UAAU,EAAA;gBACpB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,gBAAA,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3B,UAAU,CAAC,KAAK,EAAE,CAAC;aACpB;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AACxB,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,WAAW;gBAC3B,eAAe,EAAE,OAAO,CAAC,KAAK;AAC5B,sBAAE,oBAAoB;AACtB,sBAAE,mDAAmD;gBACvD,GAAG,OAAO,CAAC,OAAO;AACnB,aAAA;AACD,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG;YAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,SAAA,CAAC,CAAC;KACJ;AACF;;ACnDD;;AAEG;;;;"}
1
+ {"version":3,"file":"analogjs-content-og.mjs","sources":["../../../../packages/content/og/src/lib/og.ts","../../../../packages/content/og/src/analogjs-content-og.ts"],"sourcesContent":["// Credit for modified source: https://github.com/etherCorps/sveltekit-og/blob/main/src/lib/api.ts\n\nimport satori from 'satori';\nimport { html as toReactElement } from 'satori-html';\nimport sharp from 'sharp';\n\nimport { ImageResponseOptions } from './options.js';\n\nexport const generateImage = async (\n element: string,\n options: ImageResponseOptions\n) => {\n const elementHtml = toReactElement(element);\n const svg = await satori(elementHtml as any, {\n width: options.width || 1200,\n height: options.height || 630,\n fonts: options.fonts?.length ? options.fonts : [],\n tailwindConfig: options.tailwindConfig,\n });\n const svgBuffer = Buffer.from(svg);\n const png = sharp(svgBuffer).png().toBuffer();\n\n const pngBuffer = await png;\n\n return pngBuffer;\n};\n\nexport class ImageResponse extends Response {\n constructor(element: string, options: ImageResponseOptions = {}) {\n super();\n\n const body = new ReadableStream({\n async start(controller) {\n const buffer = await generateImage(element, options);\n controller.enqueue(buffer);\n controller.close();\n },\n });\n\n return new Response(body, {\n headers: {\n 'Content-Type': 'image/png',\n 'Cache-Control': options.debug\n ? 'no-cache, no-store'\n : 'public, immutable, no-transform, max-age=31536000',\n ...options.headers,\n },\n status: options.status || 200,\n statusText: options.statusText,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toReactElement"],"mappings":";;;;AAAA;AAQO,MAAM,aAAa,GAAG,OAC3B,OAAe,EACf,OAA6B,KAC3B;AACF,IAAA,MAAM,WAAW,GAAGA,IAAc,CAAC,OAAO,CAAC;AAC3C,IAAA,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAkB,EAAE;AAC3C,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;AAC5B,QAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG;AAC7B,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE;QACjD,cAAc,EAAE,OAAO,CAAC,cAAc;AACvC,KAAA,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;AAE7C,IAAA,MAAM,SAAS,GAAG,MAAM,GAAG;AAE3B,IAAA,OAAO,SAAS;AAClB,CAAC;AAEK,MAAO,aAAc,SAAQ,QAAQ,CAAA;IACzC,WAAY,CAAA,OAAe,EAAE,OAAA,GAAgC,EAAE,EAAA;AAC7D,QAAA,KAAK,EAAE;AAEP,QAAA,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC;YAC9B,MAAM,KAAK,CAAC,UAAU,EAAA;gBACpB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AACpD,gBAAA,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1B,UAAU,CAAC,KAAK,EAAE;aACnB;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;AACxB,YAAA,OAAO,EAAE;AACP,gBAAA,cAAc,EAAE,WAAW;gBAC3B,eAAe,EAAE,OAAO,CAAC;AACvB,sBAAE;AACF,sBAAE,mDAAmD;gBACvD,GAAG,OAAO,CAAC,OAAO;AACnB,aAAA;AACD,YAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG;YAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,SAAA,CAAC;;AAEL;;ACnDD;;AAEG;;;;"}
@@ -46,10 +46,10 @@ class PrismHighlighter extends MarkedContentHighlighter {
46
46
  },
47
47
  });
48
48
  }
49
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
50
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PrismHighlighter }); }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: PrismHighlighter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
50
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: PrismHighlighter }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: PrismHighlighter, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: PrismHighlighter, decorators: [{
53
53
  type: Injectable
54
54
  }] });
55
55
 
@@ -1 +1 @@
1
- {"version":3,"file":"analogjs-content-prism-highlighter.mjs","sources":["../../../../packages/content/prism-highlighter/src/lib/prism-highlighter.ts","../../../../packages/content/prism-highlighter/src/lib/prism/angular.js","../../../../packages/content/prism-highlighter/src/index.ts","../../../../packages/content/prism-highlighter/src/analogjs-content-prism-highlighter.ts"],"sourcesContent":["import { MarkedContentHighlighter } from '@analogjs/content';\nimport { Injectable } from '@angular/core';\nimport { markedHighlight } from 'marked-highlight';\n\ndeclare const Prism: typeof import('prismjs');\n\n@Injectable()\nexport class PrismHighlighter extends MarkedContentHighlighter {\n override augmentCodeBlock(code: string, lang: string): string {\n const classes =\n lang.startsWith('diff') && Prism.languages['diff']\n ? `language-${lang} diff-highlight`\n : `language-${lang.replace('diff-', '')}`;\n return `<pre class=\"${classes}\"><code class=\"${classes}\">${code}</code></pre>`;\n }\n\n override getHighlightExtension() {\n return markedHighlight({\n async: true,\n highlight: (code: string, lang: string) => {\n let diff = lang?.startsWith('diff-');\n lang = diff ? lang.replace('diff-', '') : lang || 'typescript';\n\n if (diff && !Prism.languages['diff']) {\n diff = false;\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The \\`diff\\` language and plugin are not available in the provided setup.\n To enable it, add the following imports your \\`app.config.ts\\`:\n import 'prismjs/components/prism-diff';\n import 'prismjs/plugins/diff-highlight/prism-diff-highlight';\n ---------------------------------------------------------------------------------------\n `);\n }\n\n if (!Prism.languages[lang]) {\n if (lang !== 'mermaid') {\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The requested language '${lang}' is not available in the provided setup.\n To enable it, add the following import your \\`app.config.ts\\`:\n import 'prismjs/components/prism-${lang}';\n ---------------------------------------------------------------------------------------\n `);\n }\n return code;\n }\n return Prism.highlight(\n code,\n diff ? Prism.languages['diff'] : Prism.languages[lang],\n lang\n );\n },\n });\n }\n}\n","(function () {\n if (typeof Prism === 'undefined') {\n return;\n }\n\n Prism.languages.angular = Prism.languages.extend('markup', {\n keyword:\n /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\\b/,\n operator: /\\b(?:on|when)\\b/,\n number: {\n pattern: /\\b(minimum|after)\\s+\\d+(?:s|ms|)/gi,\n lookbehind: true,\n },\n builtin: {\n pattern:\n /\\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,\n },\n function:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n });\n\n Prism.languages.ng = Prism.languages.angular;\n})();\n","import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport { PrismHighlighter } from './lib/prism-highlighter';\n\nimport 'prismjs';\nimport 'prismjs/plugins/toolbar/prism-toolbar';\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';\nimport './lib/prism/angular';\n\nexport { PrismHighlighter };\n\nexport function withPrismHighlighter(): Provider[] {\n return [{ provide: ContentRenderer, useClass: NoopContentRenderer }];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAOM,MAAO,gBAAiB,SAAQ,wBAAwB,CAAA;IACnD,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAA;AAClD,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;cAC9C,CAAY,SAAA,EAAA,IAAI,CAAiB,eAAA,CAAA;cACjC,CAAY,SAAA,EAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAE,CAAC;AAC9C,QAAA,OAAO,eAAe,OAAO,CAAA,eAAA,EAAkB,OAAO,CAAK,EAAA,EAAA,IAAI,eAAe,CAAC;KAChF;IAEQ,qBAAqB,GAAA;AAC5B,QAAA,OAAO,eAAe,CAAC;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,SAAS,EAAE,CAAC,IAAY,EAAE,IAAY,KAAI;gBACxC,IAAI,IAAI,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,gBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;gBAE/D,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACpC,IAAI,GAAG,KAAK,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,CAAA;;;;;;;AAOV,YAAA,CAAA,CAAC,CAAC;iBACN;gBAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;wBACtB,OAAO,CAAC,IAAI,CAAC,CAAA;;8BAEK,IAAI,CAAA;;yCAEO,IAAI,CAAA;;AAE9B,cAAA,CAAA,CAAC,CAAC;qBACN;AACD,oBAAA,OAAO,IAAI,CAAC;iBACb;AACD,gBAAA,OAAO,KAAK,CAAC,SAAS,CACpB,IAAI,EACJ,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EACtD,IAAI,CACL,CAAC;aACH;AACF,SAAA,CAAC,CAAC;KACJ;8GA/CU,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;;ACNX,CAAC,YAAA;AACC,IAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAChC,OAAO;KACR;AAED,IAAA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzD,QAAA,OAAO,EACL,qEAAqE;AACvE,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EACL,qEAAqE;AACxE,SAAA;AACD,QAAA,QAAQ,EACN,mGAAmG;AACtG,KAAA,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;AAC/C,CAAC,GAAG;;SCXY,oBAAoB,GAAA;IAClC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;AACvE;;ACbA;;AAEG;;;;"}
1
+ {"version":3,"file":"analogjs-content-prism-highlighter.mjs","sources":["../../../../packages/content/prism-highlighter/src/lib/prism-highlighter.ts","../../../../packages/content/prism-highlighter/src/lib/prism/angular.js","../../../../packages/content/prism-highlighter/src/index.ts","../../../../packages/content/prism-highlighter/src/analogjs-content-prism-highlighter.ts"],"sourcesContent":["import { MarkedContentHighlighter } from '@analogjs/content';\nimport { Injectable } from '@angular/core';\nimport { markedHighlight } from 'marked-highlight';\n\ndeclare const Prism: typeof import('prismjs');\n\n@Injectable()\nexport class PrismHighlighter extends MarkedContentHighlighter {\n override augmentCodeBlock(code: string, lang: string): string {\n const classes =\n lang.startsWith('diff') && Prism.languages['diff']\n ? `language-${lang} diff-highlight`\n : `language-${lang.replace('diff-', '')}`;\n return `<pre class=\"${classes}\"><code class=\"${classes}\">${code}</code></pre>`;\n }\n\n override getHighlightExtension() {\n return markedHighlight({\n async: true,\n highlight: (code: string, lang: string) => {\n let diff = lang?.startsWith('diff-');\n lang = diff ? lang.replace('diff-', '') : lang || 'typescript';\n\n if (diff && !Prism.languages['diff']) {\n diff = false;\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The \\`diff\\` language and plugin are not available in the provided setup.\n To enable it, add the following imports your \\`app.config.ts\\`:\n import 'prismjs/components/prism-diff';\n import 'prismjs/plugins/diff-highlight/prism-diff-highlight';\n ---------------------------------------------------------------------------------------\n `);\n }\n\n if (!Prism.languages[lang]) {\n if (lang !== 'mermaid') {\n console.warn(`Notice:\n ---------------------------------------------------------------------------------------\n The requested language '${lang}' is not available in the provided setup.\n To enable it, add the following import your \\`app.config.ts\\`:\n import 'prismjs/components/prism-${lang}';\n ---------------------------------------------------------------------------------------\n `);\n }\n return code;\n }\n return Prism.highlight(\n code,\n diff ? Prism.languages['diff'] : Prism.languages[lang],\n lang\n );\n },\n });\n }\n}\n","(function () {\n if (typeof Prism === 'undefined') {\n return;\n }\n\n Prism.languages.angular = Prism.languages.extend('markup', {\n keyword:\n /(?:@if|@for|@switch|@defer|@loading|@error|@placeholder|prefetch)\\b/,\n operator: /\\b(?:on|when)\\b/,\n number: {\n pattern: /\\b(minimum|after)\\s+\\d+(?:s|ms|)/gi,\n lookbehind: true,\n },\n builtin: {\n pattern:\n /\\b(?:viewport|timer|minimum|after|hover|idle|immediate|interaction)/,\n },\n function:\n /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n });\n\n Prism.languages.ng = Prism.languages.angular;\n})();\n","import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport { PrismHighlighter } from './lib/prism-highlighter';\n\nimport 'prismjs';\nimport 'prismjs/plugins/toolbar/prism-toolbar';\nimport 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard';\nimport './lib/prism/angular';\n\nexport { PrismHighlighter };\n\nexport function withPrismHighlighter(): Provider[] {\n return [{ provide: ContentRenderer, useClass: NoopContentRenderer }];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAOM,MAAO,gBAAiB,SAAQ,wBAAwB,CAAA;IACnD,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAA;AAClD,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM;cAC7C,CAAY,SAAA,EAAA,IAAI,CAAiB,eAAA;cACjC,CAAY,SAAA,EAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAE;AAC7C,QAAA,OAAO,eAAe,OAAO,CAAA,eAAA,EAAkB,OAAO,CAAK,EAAA,EAAA,IAAI,eAAe;;IAGvE,qBAAqB,GAAA;AAC5B,QAAA,OAAO,eAAe,CAAC;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,SAAS,EAAE,CAAC,IAAY,EAAE,IAAY,KAAI;gBACxC,IAAI,IAAI,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC;AACpC,gBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY;gBAE9D,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACpC,IAAI,GAAG,KAAK;oBACZ,OAAO,CAAC,IAAI,CAAC,CAAA;;;;;;;AAOV,YAAA,CAAA,CAAC;;gBAGN,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;wBACtB,OAAO,CAAC,IAAI,CAAC,CAAA;;8BAEK,IAAI,CAAA;;yCAEO,IAAI,CAAA;;AAE9B,cAAA,CAAA,CAAC;;AAEN,oBAAA,OAAO,IAAI;;AAEb,gBAAA,OAAO,KAAK,CAAC,SAAS,CACpB,IAAI,EACJ,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EACtD,IAAI,CACL;aACF;AACF,SAAA,CAAC;;mHA9CO,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAhB,gBAAgB,EAAA,CAAA,CAAA;;gGAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;;ACND,CAAC,YAAA;AACC,IAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAChC;;AAGF,IAAA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzD,QAAA,OAAO,EACL,qEAAqE;AACvE,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EACL,qEAAqE;AACxE,SAAA;AACD,QAAA,QAAQ,EACN,mGAAmG;AACtG,KAAA,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO;AAC9C,CAAC,GAAG;;SCXY,oBAAoB,GAAA;IAClC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;AACtE;;ACbA;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"analogjs-content-shiki-highlighter.mjs","sources":["../../../../packages/content/shiki-highlighter/src/index.ts","../../../../packages/content/shiki-highlighter/src/analogjs-content-shiki-highlighter.ts"],"sourcesContent":["import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport type {\n BundledLanguage,\n BundledTheme,\n CodeOptionsMeta,\n CodeOptionsMultipleThemes,\n CodeOptionsSingleTheme,\n CodeToHastOptionsCommon,\n} from 'shiki';\n\nexport type ShikiHighlightOptions = Partial<\n Omit<CodeToHastOptionsCommon<BundledLanguage>, 'lang'>\n> &\n CodeOptionsMeta &\n Partial<CodeOptionsSingleTheme<BundledTheme>> &\n Partial<CodeOptionsMultipleThemes<BundledTheme>>;\n\nexport type WithShikiHighlighterOptions = ShikiHighlightOptions & {\n container?: string;\n};\n\nexport function withShikiHighlighter(\n _opts: WithShikiHighlighterOptions = {}\n): Provider[] {\n return [\n {\n provide: ContentRenderer,\n useClass: NoopContentRenderer,\n },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAsBgB,SAAA,oBAAoB,CAClC,KAAA,GAAqC,EAAE,EAAA;IAEvC,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,QAAQ,EAAE,mBAAmB;AAC9B,SAAA;KACF,CAAC;AACJ;;AC/BA;;AAEG;;;;"}
1
+ {"version":3,"file":"analogjs-content-shiki-highlighter.mjs","sources":["../../../../packages/content/shiki-highlighter/src/index.ts","../../../../packages/content/shiki-highlighter/src/analogjs-content-shiki-highlighter.ts"],"sourcesContent":["import { ContentRenderer, NoopContentRenderer } from '@analogjs/content';\nimport { Provider } from '@angular/core';\nimport type {\n BundledLanguage,\n BundledTheme,\n CodeOptionsMeta,\n CodeOptionsMultipleThemes,\n CodeOptionsSingleTheme,\n CodeToHastOptionsCommon,\n} from 'shiki';\n\nexport type ShikiHighlightOptions = Partial<\n Omit<CodeToHastOptionsCommon<BundledLanguage>, 'lang'>\n> &\n CodeOptionsMeta &\n Partial<CodeOptionsSingleTheme<BundledTheme>> &\n Partial<CodeOptionsMultipleThemes<BundledTheme>>;\n\nexport type WithShikiHighlighterOptions = ShikiHighlightOptions & {\n container?: string;\n};\n\nexport function withShikiHighlighter(\n _opts: WithShikiHighlighterOptions = {}\n): Provider[] {\n return [\n {\n provide: ContentRenderer,\n useClass: NoopContentRenderer,\n },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAsBgB,SAAA,oBAAoB,CAClC,KAAA,GAAqC,EAAE,EAAA;IAEvC,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,QAAQ,EAAE,mBAAmB;AAC9B,SAAA;KACF;AACH;;AC/BA;;AAEG;;;;"}
@@ -29,10 +29,10 @@ class AnchorNavigationDirective {
29
29
  }
30
30
  return true;
31
31
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnchorNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
33
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: AnchorNavigationDirective, isStandalone: true, selector: "[analogAnchorNavigation]", host: { listeners: { "click": "handleNavigation($event.target)" } }, ngImport: i0 }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: AnchorNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
33
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: AnchorNavigationDirective, isStandalone: true, selector: "[analogAnchorNavigation]", host: { listeners: { "click": "handleNavigation($event.target)" } }, ngImport: i0 }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnchorNavigationDirective, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: AnchorNavigationDirective, decorators: [{
36
36
  type: Directive,
37
37
  args: [{
38
38
  selector: '[analogAnchorNavigation]',
@@ -154,10 +154,10 @@ class RenderTaskService {
154
154
  clearRenderTask(id) {
155
155
  this.#pendingTasks.remove(id);
156
156
  }
157
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RenderTaskService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
158
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RenderTaskService }); }
157
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RenderTaskService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
158
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RenderTaskService }); }
159
159
  }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RenderTaskService, decorators: [{
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: RenderTaskService, decorators: [{
161
161
  type: Injectable
162
162
  }] });
163
163
 
@@ -248,10 +248,10 @@ class ContentRenderer {
248
248
  }
249
249
  // eslint-disable-next-line
250
250
  enhance() { }
251
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ContentRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
252
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ContentRenderer }); }
251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ContentRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
252
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ContentRenderer }); }
253
253
  }
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ContentRenderer, decorators: [{
254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: ContentRenderer, decorators: [{
255
255
  type: Injectable
256
256
  }] });
257
257
  class NoopContentRenderer {
@@ -301,10 +301,10 @@ function injectContentFiles(filterFn) {
301
301
  }
302
302
 
303
303
  class MarkedContentHighlighter {
304
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkedContentHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
305
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkedContentHighlighter }); }
304
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkedContentHighlighter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
305
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkedContentHighlighter }); }
306
306
  }
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkedContentHighlighter, decorators: [{
307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkedContentHighlighter, decorators: [{
308
308
  type: Injectable
309
309
  }] });
310
310
  function withHighlighter(provider) {
@@ -351,10 +351,10 @@ class MarkedSetupService {
351
351
  getMarkedInstance() {
352
352
  return this.marked;
353
353
  }
354
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkedSetupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
355
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkedSetupService }); }
354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkedSetupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
355
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkedSetupService }); }
356
356
  }
357
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkedSetupService, decorators: [{
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkedSetupService, decorators: [{
358
358
  type: Injectable
359
359
  }], ctorParameters: () => [] });
360
360
 
@@ -371,10 +371,10 @@ class MarkdownContentRendererService {
371
371
  }
372
372
  // eslint-disable-next-line
373
373
  enhance() { }
374
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkdownContentRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
375
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkdownContentRendererService }); }
374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkdownContentRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
375
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkdownContentRendererService }); }
376
376
  }
377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: MarkdownContentRendererService, decorators: [{
377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MarkdownContentRendererService, decorators: [{
378
378
  type: Injectable
379
379
  }] });
380
380
 
@@ -416,10 +416,10 @@ class AnalogMarkdownRouteComponent {
416
416
  ngAfterViewChecked() {
417
417
  this.contentRenderer.enhance();
418
418
  }
419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnalogMarkdownRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: AnalogMarkdownRouteComponent, isStandalone: true, selector: "analog-markdown-route", inputs: { classes: "classes" }, hostDirectives: [{ directive: AnchorNavigationDirective }], ngImport: i0, template: `<div [innerHTML]="content" [class]="classes"></div>`, isInline: true, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
419
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: AnalogMarkdownRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: AnalogMarkdownRouteComponent, isStandalone: true, selector: "analog-markdown-route", inputs: { classes: "classes" }, hostDirectives: [{ directive: AnchorNavigationDirective }], ngImport: i0, template: `<div [innerHTML]="content" [class]="classes"></div>`, isInline: true, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
421
421
  }
422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnalogMarkdownRouteComponent, decorators: [{
422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: AnalogMarkdownRouteComponent, decorators: [{
423
423
  type: Component,
424
424
  args: [{
425
425
  selector: 'analog-markdown-route',
@@ -491,14 +491,14 @@ class AnalogMarkdownComponent {
491
491
  this.mermaid?.default.run();
492
492
  }));
493
493
  }
494
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnalogMarkdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
495
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: AnalogMarkdownComponent, isStandalone: true, selector: "analog-markdown", inputs: { content: "content", classes: "classes" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, hostDirectives: [{ directive: AnchorNavigationDirective }], ngImport: i0, template: `<div
494
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: AnalogMarkdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
495
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: AnalogMarkdownComponent, isStandalone: true, selector: "analog-markdown", inputs: { content: "content", classes: "classes" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, hostDirectives: [{ directive: AnchorNavigationDirective }], ngImport: i0, template: `<div
496
496
  #container
497
497
  [innerHTML]="content$ | async"
498
498
  [class]="classes"
499
499
  ></div>`, isInline: true, dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
500
500
  }
501
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnalogMarkdownComponent, decorators: [{
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: AnalogMarkdownComponent, decorators: [{
502
502
  type: Component,
503
503
  args: [{
504
504
  selector: 'analog-markdown',
@@ -1 +1 @@
1
- {"version":3,"file":"analogjs-content.mjs","sources":["../../../../packages/content/src/lib/anchor-navigation.directive.ts","../../../../packages/content/src/lib/get-content-files.ts","../../../../packages/content/src/lib/content-files-list-token.ts","../../../../packages/content/src/lib/content-files-token.ts","../../../../packages/content/src/lib/parse-raw-content-file.ts","../../../../packages/content/src/lib/utils/zone-wait-for.ts","../../../../packages/content/src/lib/render-task.service.ts","../../../../packages/content/src/lib/content.ts","../../../../packages/content/src/lib/content-renderer.ts","../../../../packages/content/src/lib/inject-content-files.ts","../../../../packages/content/src/lib/marked-content-highlighter.ts","../../../../packages/content/src/lib/marked-setup.service.ts","../../../../packages/content/src/lib/markdown-content-renderer.service.ts","../../../../packages/content/src/lib/provide-content.ts","../../../../packages/content/src/lib/markdown-route.component.ts","../../../../packages/content/src/lib/markdown.component.ts","../../../../packages/content/src/analogjs-content.ts"],"sourcesContent":["import { Directive, HostListener, inject } from '@angular/core';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { Router } from '@angular/router';\n\n@Directive({\n selector: '[analogAnchorNavigation]',\n standalone: true,\n})\nexport class AnchorNavigationDirective {\n private readonly document = inject(DOCUMENT);\n private readonly location = inject(Location);\n private readonly router = inject(Router);\n\n @HostListener('click', ['$event.target'])\n handleNavigation(element: HTMLElement): boolean {\n if (\n element instanceof HTMLAnchorElement &&\n isInternalUrl(element, this.document) &&\n hasTargetSelf(element) &&\n !hasDownloadAttribute(element)\n ) {\n const { pathname, search, hash } = element;\n const url = this.location.normalize(`${pathname}${search}${hash}`);\n this.router.navigateByUrl(url);\n\n return false;\n }\n\n return true;\n }\n}\n\nfunction hasDownloadAttribute(anchorElement: HTMLAnchorElement): boolean {\n return anchorElement.getAttribute('download') !== null;\n}\n\nfunction hasTargetSelf(anchorElement: HTMLAnchorElement): boolean {\n return !anchorElement.target || anchorElement.target === '_self';\n}\n\nfunction isInternalUrl(\n anchorElement: HTMLAnchorElement,\n document: Document\n): boolean {\n return (\n anchorElement.host === document.location.host &&\n anchorElement.protocol === document.location.protocol\n );\n}\n","/**\n * Returns the list of content files by filename with ?analog-content-list=true.\n * We use the query param to transform the return into an array of\n * just front matter attributes.\n *\n * @returns\n */\nexport const getContentFilesList = () => {\n let ANALOG_CONTENT_FILE_LIST = {};\n\n return ANALOG_CONTENT_FILE_LIST as Record<string, Record<string, any>>;\n};\n\n/**\n * Returns the lazy loaded content files for lookups.\n *\n * @returns\n */\nexport const getContentFiles = () => {\n let ANALOG_CONTENT_ROUTE_FILES = {};\n\n return ANALOG_CONTENT_ROUTE_FILES;\n};\n\nexport const getAgxFiles = () => {\n let ANALOG_AGX_FILES = {};\n\n return ANALOG_AGX_FILES;\n};\n","import { InjectionToken } from '@angular/core';\nimport { ContentFile } from './content-file';\nimport { getContentFilesList } from './get-content-files';\n\nfunction getSlug(filename: string) {\n const parts = filename.match(/^(\\\\|\\/)(.+(\\\\|\\/))*(.+)\\.(.+)$/);\n return parts?.length ? parts[4] : '';\n}\n\nexport const CONTENT_FILES_LIST_TOKEN = new InjectionToken<ContentFile[]>(\n '@analogjs/content Content Files List',\n {\n providedIn: 'root',\n factory() {\n const contentFiles = getContentFilesList();\n\n return Object.keys(contentFiles).map((filename) => {\n const attributes = contentFiles[filename];\n const slug = attributes['slug'];\n\n return {\n filename,\n attributes,\n slug: slug ? encodeURI(slug) : encodeURI(getSlug(filename)),\n };\n });\n },\n }\n);\n","import { InjectionToken, inject } from '@angular/core';\n\nimport { getAgxFiles, getContentFiles } from './get-content-files';\nimport { CONTENT_FILES_LIST_TOKEN } from './content-files-list-token';\n\nexport const CONTENT_FILES_TOKEN = new InjectionToken<\n Record<string, () => Promise<string>>\n>('@analogjs/content Content Files', {\n providedIn: 'root',\n factory() {\n const contentFiles = getContentFiles();\n const agxFiles = getAgxFiles();\n const allFiles = { ...contentFiles, ...agxFiles };\n const contentFilesList = inject(CONTENT_FILES_LIST_TOKEN);\n\n const lookup: Record<string, string> = {};\n contentFilesList.forEach((item) => {\n const fileParts = item.filename.split('/');\n const filePath = fileParts.slice(0, fileParts.length - 1).join('/');\n const fileNameParts = fileParts[fileParts.length - 1].split('.');\n lookup[item.filename] = `${filePath}/${item.slug}.${\n fileNameParts[fileNameParts.length - 1]\n }`;\n });\n\n const objectUsingSlugAttribute: Record<string, () => Promise<string>> = {};\n Object.entries(allFiles).forEach((entry) => {\n const filename = entry[0];\n const value = entry[1];\n\n const newFilename = lookup[filename];\n if (newFilename !== undefined) {\n const objectFilename = newFilename.replace(\n /^\\/(.*?)\\/content/,\n '/src/content'\n );\n objectUsingSlugAttribute[objectFilename] =\n value as () => Promise<string>;\n }\n });\n\n return objectUsingSlugAttribute;\n },\n});\n","import fm from 'front-matter';\n\nexport function parseRawContentFile<Attributes extends Record<string, any>>(\n rawContentFile: string\n): { content: string; attributes: Attributes } {\n const { body, attributes } = fm<Attributes>(rawContentFile);\n return { content: body, attributes };\n}\n","import { firstValueFrom, isObservable, Observable } from 'rxjs';\n\ndeclare const Zone: any;\n\nexport async function waitFor<T>(prom: Promise<T> | Observable<T>): Promise<T> {\n if (isObservable(prom)) {\n prom = firstValueFrom(prom);\n }\n\n if (typeof Zone === 'undefined') {\n return prom;\n }\n\n const macroTask = Zone.current.scheduleMacroTask(\n `AnalogContentResolve-${Math.random()}`,\n () => {},\n {},\n () => {}\n );\n return prom.then((p: T) => {\n macroTask.invoke();\n return p;\n });\n}\n","import {\n Injectable,\n inject,\n ɵPendingTasks as PendingTasks,\n} from '@angular/core';\n\n@Injectable()\nexport class RenderTaskService {\n #pendingTasks = inject(PendingTasks);\n\n addRenderTask() {\n return this.#pendingTasks.add();\n }\n\n clearRenderTask(id: number) {\n this.#pendingTasks.remove(id);\n }\n}\n","/// <reference types=\"vite/client\" />\n\nimport { inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport { ContentFile } from './content-file';\nimport { CONTENT_FILES_TOKEN } from './content-files-token';\nimport { parseRawContentFile } from './parse-raw-content-file';\nimport { waitFor } from './utils/zone-wait-for';\nimport { RenderTaskService } from './render-task.service';\n\nfunction getContentFile<\n Attributes extends Record<string, any> = Record<string, any>\n>(\n contentFiles: Record<string, () => Promise<string>>,\n prefix: string,\n slug: string,\n fallback: string,\n renderTaskService: RenderTaskService\n): Observable<ContentFile<Attributes | Record<string, never>>> {\n const filePath = `/src/content/${prefix}${slug}`;\n const contentFile =\n contentFiles[`${filePath}.md`] ?? contentFiles[`${filePath}.agx`];\n if (!contentFile) {\n return of({\n filename: filePath,\n attributes: {},\n slug: '',\n content: fallback,\n });\n }\n\n const contentTask = renderTaskService.addRenderTask();\n return new Observable<string | { default: any; metadata: any }>(\n (observer) => {\n const contentResolver = contentFile();\n\n if (import.meta.env.SSR === true) {\n waitFor(contentResolver).then((content) => {\n observer.next(content);\n observer.complete();\n\n setTimeout(() => renderTaskService.clearRenderTask(contentTask), 10);\n });\n } else {\n contentResolver.then((content) => {\n observer.next(content);\n observer.complete();\n });\n }\n }\n ).pipe(\n map((contentFile) => {\n if (typeof contentFile === 'string') {\n const { content, attributes } =\n parseRawContentFile<Attributes>(contentFile);\n\n return {\n filename: filePath,\n slug,\n attributes,\n content,\n };\n }\n return {\n filename: filePath,\n slug,\n attributes: contentFile.metadata,\n content: contentFile.default,\n };\n })\n );\n}\n\n/**\n * Retrieves the static content using the provided param and/or prefix.\n *\n * @param param route parameter (default: 'slug')\n * @param fallback fallback text if content file is not found (default: 'No Content Found')\n */\nexport function injectContent<\n Attributes extends Record<string, any> = Record<string, any>\n>(\n param:\n | string\n | {\n param: string;\n subdirectory: string;\n }\n | {\n customFilename: string;\n } = 'slug',\n fallback = 'No Content Found'\n): Observable<ContentFile<Attributes | Record<string, never>>> {\n const contentFiles = inject(CONTENT_FILES_TOKEN);\n const renderTaskService = inject(RenderTaskService);\n const task = renderTaskService.addRenderTask();\n\n if (typeof param === 'string' || 'param' in param) {\n const prefix = typeof param === 'string' ? '' : `${param.subdirectory}/`;\n const route = inject(ActivatedRoute);\n const paramKey = typeof param === 'string' ? param : param.param;\n return route.paramMap.pipe(\n map((params) => params.get(paramKey)),\n switchMap((slug) => {\n if (slug) {\n return getContentFile<Attributes>(\n contentFiles,\n prefix,\n slug,\n fallback,\n renderTaskService\n );\n }\n return of({\n filename: '',\n slug: '',\n attributes: {},\n content: fallback,\n });\n }),\n tap(() => renderTaskService.clearRenderTask(task))\n );\n } else {\n return getContentFile<Attributes>(\n contentFiles,\n '',\n param.customFilename,\n fallback,\n renderTaskService\n ).pipe(tap(() => renderTaskService.clearRenderTask(task)));\n }\n}\n","/// <reference types=\"vite/client\" />\n\nimport { Injectable, TransferState, inject, makeStateKey } from '@angular/core';\nimport { getHeadingList } from 'marked-gfm-heading-id';\n\nexport type TableOfContentItem = {\n id: string;\n level: number; // starts at 1\n text: string;\n};\n\n@Injectable()\nexport abstract class ContentRenderer {\n async render(content: string): Promise<string> {\n return content;\n }\n\n getContentHeadings(): Array<TableOfContentItem> {\n return [];\n }\n\n // eslint-disable-next-line\n enhance() {}\n}\n\nexport class NoopContentRenderer implements ContentRenderer {\n private readonly transferState = inject(TransferState);\n private contentId = 0;\n\n /**\n * Generates a hash from the content string\n * to be used with the transfer state\n */\n private generateHash(str: string) {\n let hash = 0;\n for (let i = 0, len = str.length; i < len; i++) {\n let chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n }\n\n async render(content: string) {\n this.contentId = this.generateHash(content);\n return content;\n }\n enhance() {}\n\n getContentHeadings(): Array<TableOfContentItem> {\n const key = makeStateKey<TableOfContentItem[]>(\n `content-headings-${this.contentId}`\n );\n\n if (import.meta.env.SSR === true) {\n const headings = getHeadingList();\n this.transferState.set(key, headings);\n return headings;\n }\n\n return this.transferState.get(key, []);\n }\n}\n","import { ContentFile } from './content-file';\nimport { inject } from '@angular/core';\nimport { CONTENT_FILES_LIST_TOKEN } from './content-files-list-token';\nimport { RenderTaskService } from './render-task.service';\n\nexport function injectContentFiles<Attributes extends Record<string, any>>(\n filterFn?: InjectContentFilesFilterFunction<Attributes>\n): ContentFile<Attributes>[] {\n const renderTaskService = inject(RenderTaskService);\n const task = renderTaskService.addRenderTask();\n const allContentFiles = inject(\n CONTENT_FILES_LIST_TOKEN\n ) as ContentFile<Attributes>[];\n renderTaskService.clearRenderTask(task);\n\n if (filterFn) {\n const filteredContentFiles = allContentFiles.filter(filterFn);\n\n return filteredContentFiles;\n }\n\n return allContentFiles;\n}\n\nexport type InjectContentFilesFilterFunction<T extends Record<string, any>> = (\n value: ContentFile<T>,\n index: number,\n array: ContentFile<T>[]\n) => boolean;\n","import {\n AbstractType,\n Injectable,\n Provider,\n ProviderToken,\n Type,\n} from '@angular/core';\n\nexport interface MarkedContentHighlighter {\n augmentCodeBlock?(code: string, lang: string): string;\n}\n\n@Injectable()\nexport abstract class MarkedContentHighlighter {\n abstract getHighlightExtension(): import('marked').marked.MarkedExtension;\n}\n\nexport function withHighlighter(\n provider: (\n | { useValue: MarkedContentHighlighter }\n | {\n useClass:\n | Type<MarkedContentHighlighter>\n | AbstractType<MarkedContentHighlighter>;\n }\n | { useFactory: (...deps: any[]) => MarkedContentHighlighter }\n ) & { deps?: ProviderToken<any>[] }\n): Provider {\n return { provide: MarkedContentHighlighter, ...provider } as Provider;\n}\n","/**\n * Credit goes to Scully for original implementation\n * https://github.com/scullyio/scully/blob/main/libs/scully/src/lib/fileHanderPlugins/markdown.ts\n */\nimport { inject, Injectable } from '@angular/core';\nimport { marked } from 'marked';\nimport { gfmHeadingId } from 'marked-gfm-heading-id';\nimport { mangle } from 'marked-mangle';\nimport { MarkedContentHighlighter } from './marked-content-highlighter';\n\n@Injectable()\nexport class MarkedSetupService {\n private readonly marked: typeof marked;\n private readonly highlighter = inject(MarkedContentHighlighter, {\n optional: true,\n });\n\n constructor() {\n const renderer = new marked.Renderer();\n renderer.code = (code: string, lang: string) => {\n // Let's do a language based detection like on GitHub\n // So we can still have non-interpreted mermaid code\n if (lang === 'mermaid') {\n return '<pre class=\"mermaid\">' + code + '</pre>';\n }\n\n if (!lang) {\n return '<pre><code>' + code + '</code></pre>';\n }\n\n if (this.highlighter?.augmentCodeBlock) {\n return this.highlighter?.augmentCodeBlock(code, lang);\n }\n\n return `<pre class=\"language-${lang}\"><code class=\"language-${lang}\">${code}</code></pre>`;\n };\n\n const extensions = [gfmHeadingId(), mangle()];\n\n if (this.highlighter) {\n extensions.push(this.highlighter.getHighlightExtension());\n }\n\n marked.use(...extensions, {\n renderer,\n pedantic: false,\n gfm: true,\n breaks: false,\n mangle: false,\n });\n\n this.marked = marked;\n }\n\n getMarkedInstance(): typeof marked {\n return this.marked;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { getHeadingList } from 'marked-gfm-heading-id';\n\nimport { ContentRenderer, TableOfContentItem } from './content-renderer';\nimport { MarkedSetupService } from './marked-setup.service';\n\n@Injectable()\nexport class MarkdownContentRendererService implements ContentRenderer {\n #marked = inject(MarkedSetupService, { self: true });\n\n async render(content: string): Promise<string> {\n return this.#marked.getMarkedInstance().parse(content);\n }\n\n /**\n * The method is meant to be called after `render()`\n */\n getContentHeadings(): TableOfContentItem[] {\n return getHeadingList();\n }\n\n // eslint-disable-next-line\n enhance() {}\n}\n","import { Provider, InjectionToken } from '@angular/core';\nimport { ContentRenderer, NoopContentRenderer } from './content-renderer';\nimport { RenderTaskService } from './render-task.service';\n\nexport interface MarkdownRendererOptions {\n loadMermaid?: () => Promise<typeof import('mermaid')>;\n}\n\nconst CONTENT_RENDERER_PROVIDERS: Provider[] = [\n {\n provide: ContentRenderer,\n useClass: NoopContentRenderer,\n },\n];\n\nexport function withMarkdownRenderer(\n options?: MarkdownRendererOptions\n): Provider {\n return [\n CONTENT_RENDERER_PROVIDERS,\n options?.loadMermaid\n ? [\n {\n provide: MERMAID_IMPORT_TOKEN,\n useFactory: options.loadMermaid,\n },\n ]\n : [],\n ];\n}\n\nexport function provideContent(...features: Provider[]) {\n return [\n { provide: RenderTaskService, useClass: RenderTaskService },\n ...features,\n ];\n}\n\nexport const MERMAID_IMPORT_TOKEN = new InjectionToken<\n Promise<typeof import('mermaid')>\n>('mermaid_import');\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewChecked,\n Component,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ContentRenderer } from './content-renderer';\nimport { AnchorNavigationDirective } from './anchor-navigation.directive';\n\n@Component({\n selector: 'analog-markdown-route',\n standalone: true,\n imports: [AsyncPipe],\n hostDirectives: [AnchorNavigationDirective],\n preserveWhitespaces: true,\n encapsulation: ViewEncapsulation.None,\n template: `<div [innerHTML]=\"content\" [class]=\"classes\"></div>`,\n})\nexport default class AnalogMarkdownRouteComponent implements AfterViewChecked {\n private sanitizer = inject(DomSanitizer);\n private route = inject(ActivatedRoute);\n contentRenderer = inject(ContentRenderer);\n\n protected content: SafeHtml = this.sanitizer.bypassSecurityTrustHtml(\n this.route.snapshot.data['renderedAnalogContent']\n );\n\n @Input() classes = 'analog-markdown-route';\n\n ngAfterViewChecked() {\n this.contentRenderer.enhance();\n }\n}\n","import { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewChecked,\n Component,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ActivatedRoute, Data } from '@angular/router';\nimport { Observable, from, of } from 'rxjs';\nimport { catchError, map, mergeMap, filter } from 'rxjs/operators';\n\nimport { AnchorNavigationDirective } from './anchor-navigation.directive';\nimport { ContentRenderer } from './content-renderer';\nimport { MERMAID_IMPORT_TOKEN } from './provide-content';\n\n@Component({\n selector: 'analog-markdown',\n standalone: true,\n imports: [AsyncPipe],\n hostDirectives: [AnchorNavigationDirective],\n preserveWhitespaces: true,\n encapsulation: ViewEncapsulation.None,\n template: `<div\n #container\n [innerHTML]=\"content$ | async\"\n [class]=\"classes\"\n ></div>`,\n})\nexport default class AnalogMarkdownComponent\n implements OnInit, OnChanges, AfterViewChecked\n{\n private sanitizer = inject(DomSanitizer);\n private route = inject(ActivatedRoute);\n private zone = inject(NgZone);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly mermaidImport = inject(MERMAID_IMPORT_TOKEN, {\n optional: true,\n });\n private mermaid: typeof import('mermaid') | undefined;\n\n public content$: Observable<SafeHtml> = this.getContentSource();\n\n @Input() content!: string | object | undefined | null;\n @Input() classes = 'analog-markdown';\n\n @ViewChild('container', { static: true, read: ViewContainerRef })\n container!: ViewContainerRef;\n\n contentRenderer = inject(ContentRenderer);\n\n constructor() {\n if (isPlatformBrowser(this.platformId) && this.mermaidImport) {\n // Mermaid can only be loaded on client side\n this.loadMermaid(this.mermaidImport);\n }\n }\n\n ngOnInit(): void {\n this.updateContent();\n }\n\n ngOnChanges(): void {\n this.updateContent();\n }\n\n updateContent() {\n if (this.content && typeof this.content !== 'string') {\n this.container.clear();\n const componentRef = this.container.createComponent(this.content as any);\n componentRef.changeDetectorRef.detectChanges();\n } else {\n this.content$ = this.getContentSource();\n }\n }\n\n getContentSource() {\n return this.route.data.pipe(\n map<Data, string>((data) => this.content ?? data['_analogContent']),\n filter((content) => typeof content === 'string'),\n mergeMap((contentString) => this.renderContent(contentString)),\n map((content) => this.sanitizer.bypassSecurityTrustHtml(content)),\n catchError((e) => of(`There was an error ${e}`))\n );\n }\n\n async renderContent(content: string): Promise<string> {\n return this.contentRenderer.render(content);\n }\n\n ngAfterViewChecked() {\n this.contentRenderer.enhance();\n this.zone.runOutsideAngular(() => this.mermaid?.default.run());\n }\n\n private loadMermaid(mermaidImport: Promise<typeof import('mermaid')>) {\n this.zone.runOutsideAngular(() =>\n // Wrap into an observable to avoid redundant initialization once\n // the markdown component is destroyed before the promise is resolved.\n from(mermaidImport)\n .pipe(takeUntilDestroyed())\n .subscribe((mermaid) => {\n this.mermaid = mermaid;\n this.mermaid.default.initialize({ startOnLoad: false });\n // Explicitly running mermaid as ngAfterViewChecked\n // has probably already been called\n this.mermaid?.default.run();\n })\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PendingTasks","i1.AnchorNavigationDirective"],"mappings":"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"}
1
+ {"version":3,"file":"analogjs-content.mjs","sources":["../../../../packages/content/src/lib/anchor-navigation.directive.ts","../../../../packages/content/src/lib/get-content-files.ts","../../../../packages/content/src/lib/content-files-list-token.ts","../../../../packages/content/src/lib/content-files-token.ts","../../../../packages/content/src/lib/parse-raw-content-file.ts","../../../../packages/content/src/lib/utils/zone-wait-for.ts","../../../../packages/content/src/lib/render-task.service.ts","../../../../packages/content/src/lib/content.ts","../../../../packages/content/src/lib/content-renderer.ts","../../../../packages/content/src/lib/inject-content-files.ts","../../../../packages/content/src/lib/marked-content-highlighter.ts","../../../../packages/content/src/lib/marked-setup.service.ts","../../../../packages/content/src/lib/markdown-content-renderer.service.ts","../../../../packages/content/src/lib/provide-content.ts","../../../../packages/content/src/lib/markdown-route.component.ts","../../../../packages/content/src/lib/markdown.component.ts","../../../../packages/content/src/analogjs-content.ts"],"sourcesContent":["import { Directive, HostListener, inject } from '@angular/core';\nimport { DOCUMENT, Location } from '@angular/common';\nimport { Router } from '@angular/router';\n\n@Directive({\n selector: '[analogAnchorNavigation]',\n standalone: true,\n})\nexport class AnchorNavigationDirective {\n private readonly document = inject(DOCUMENT);\n private readonly location = inject(Location);\n private readonly router = inject(Router);\n\n @HostListener('click', ['$event.target'])\n handleNavigation(element: HTMLElement): boolean {\n if (\n element instanceof HTMLAnchorElement &&\n isInternalUrl(element, this.document) &&\n hasTargetSelf(element) &&\n !hasDownloadAttribute(element)\n ) {\n const { pathname, search, hash } = element;\n const url = this.location.normalize(`${pathname}${search}${hash}`);\n this.router.navigateByUrl(url);\n\n return false;\n }\n\n return true;\n }\n}\n\nfunction hasDownloadAttribute(anchorElement: HTMLAnchorElement): boolean {\n return anchorElement.getAttribute('download') !== null;\n}\n\nfunction hasTargetSelf(anchorElement: HTMLAnchorElement): boolean {\n return !anchorElement.target || anchorElement.target === '_self';\n}\n\nfunction isInternalUrl(\n anchorElement: HTMLAnchorElement,\n document: Document\n): boolean {\n return (\n anchorElement.host === document.location.host &&\n anchorElement.protocol === document.location.protocol\n );\n}\n","/**\n * Returns the list of content files by filename with ?analog-content-list=true.\n * We use the query param to transform the return into an array of\n * just front matter attributes.\n *\n * @returns\n */\nexport const getContentFilesList = () => {\n let ANALOG_CONTENT_FILE_LIST = {};\n\n return ANALOG_CONTENT_FILE_LIST as Record<string, Record<string, any>>;\n};\n\n/**\n * Returns the lazy loaded content files for lookups.\n *\n * @returns\n */\nexport const getContentFiles = () => {\n let ANALOG_CONTENT_ROUTE_FILES = {};\n\n return ANALOG_CONTENT_ROUTE_FILES;\n};\n\nexport const getAgxFiles = () => {\n let ANALOG_AGX_FILES = {};\n\n return ANALOG_AGX_FILES;\n};\n","import { InjectionToken } from '@angular/core';\nimport { ContentFile } from './content-file';\nimport { getContentFilesList } from './get-content-files';\n\nfunction getSlug(filename: string) {\n const parts = filename.match(/^(\\\\|\\/)(.+(\\\\|\\/))*(.+)\\.(.+)$/);\n return parts?.length ? parts[4] : '';\n}\n\nexport const CONTENT_FILES_LIST_TOKEN = new InjectionToken<ContentFile[]>(\n '@analogjs/content Content Files List',\n {\n providedIn: 'root',\n factory() {\n const contentFiles = getContentFilesList();\n\n return Object.keys(contentFiles).map((filename) => {\n const attributes = contentFiles[filename];\n const slug = attributes['slug'];\n\n return {\n filename,\n attributes,\n slug: slug ? encodeURI(slug) : encodeURI(getSlug(filename)),\n };\n });\n },\n }\n);\n","import { InjectionToken, inject } from '@angular/core';\n\nimport { getAgxFiles, getContentFiles } from './get-content-files';\nimport { CONTENT_FILES_LIST_TOKEN } from './content-files-list-token';\n\nexport const CONTENT_FILES_TOKEN = new InjectionToken<\n Record<string, () => Promise<string>>\n>('@analogjs/content Content Files', {\n providedIn: 'root',\n factory() {\n const contentFiles = getContentFiles();\n const agxFiles = getAgxFiles();\n const allFiles = { ...contentFiles, ...agxFiles };\n const contentFilesList = inject(CONTENT_FILES_LIST_TOKEN);\n\n const lookup: Record<string, string> = {};\n contentFilesList.forEach((item) => {\n const fileParts = item.filename.split('/');\n const filePath = fileParts.slice(0, fileParts.length - 1).join('/');\n const fileNameParts = fileParts[fileParts.length - 1].split('.');\n lookup[item.filename] = `${filePath}/${item.slug}.${\n fileNameParts[fileNameParts.length - 1]\n }`;\n });\n\n const objectUsingSlugAttribute: Record<string, () => Promise<string>> = {};\n Object.entries(allFiles).forEach((entry) => {\n const filename = entry[0];\n const value = entry[1];\n\n const newFilename = lookup[filename];\n if (newFilename !== undefined) {\n const objectFilename = newFilename.replace(\n /^\\/(.*?)\\/content/,\n '/src/content'\n );\n objectUsingSlugAttribute[objectFilename] =\n value as () => Promise<string>;\n }\n });\n\n return objectUsingSlugAttribute;\n },\n});\n","import fm from 'front-matter';\n\nexport function parseRawContentFile<Attributes extends Record<string, any>>(\n rawContentFile: string\n): { content: string; attributes: Attributes } {\n const { body, attributes } = fm<Attributes>(rawContentFile);\n return { content: body, attributes };\n}\n","import { firstValueFrom, isObservable, Observable } from 'rxjs';\n\ndeclare const Zone: any;\n\nexport async function waitFor<T>(prom: Promise<T> | Observable<T>): Promise<T> {\n if (isObservable(prom)) {\n prom = firstValueFrom(prom);\n }\n\n if (typeof Zone === 'undefined') {\n return prom;\n }\n\n const macroTask = Zone.current.scheduleMacroTask(\n `AnalogContentResolve-${Math.random()}`,\n () => {},\n {},\n () => {}\n );\n return prom.then((p: T) => {\n macroTask.invoke();\n return p;\n });\n}\n","import {\n Injectable,\n inject,\n ɵPendingTasks as PendingTasks,\n} from '@angular/core';\n\n@Injectable()\nexport class RenderTaskService {\n #pendingTasks = inject(PendingTasks);\n\n addRenderTask() {\n return this.#pendingTasks.add();\n }\n\n clearRenderTask(id: number) {\n this.#pendingTasks.remove(id);\n }\n}\n","/// <reference types=\"vite/client\" />\n\nimport { inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport { ContentFile } from './content-file';\nimport { CONTENT_FILES_TOKEN } from './content-files-token';\nimport { parseRawContentFile } from './parse-raw-content-file';\nimport { waitFor } from './utils/zone-wait-for';\nimport { RenderTaskService } from './render-task.service';\n\nfunction getContentFile<\n Attributes extends Record<string, any> = Record<string, any>\n>(\n contentFiles: Record<string, () => Promise<string>>,\n prefix: string,\n slug: string,\n fallback: string,\n renderTaskService: RenderTaskService\n): Observable<ContentFile<Attributes | Record<string, never>>> {\n const filePath = `/src/content/${prefix}${slug}`;\n const contentFile =\n contentFiles[`${filePath}.md`] ?? contentFiles[`${filePath}.agx`];\n if (!contentFile) {\n return of({\n filename: filePath,\n attributes: {},\n slug: '',\n content: fallback,\n });\n }\n\n const contentTask = renderTaskService.addRenderTask();\n return new Observable<string | { default: any; metadata: any }>(\n (observer) => {\n const contentResolver = contentFile();\n\n if (import.meta.env.SSR === true) {\n waitFor(contentResolver).then((content) => {\n observer.next(content);\n observer.complete();\n\n setTimeout(() => renderTaskService.clearRenderTask(contentTask), 10);\n });\n } else {\n contentResolver.then((content) => {\n observer.next(content);\n observer.complete();\n });\n }\n }\n ).pipe(\n map((contentFile) => {\n if (typeof contentFile === 'string') {\n const { content, attributes } =\n parseRawContentFile<Attributes>(contentFile);\n\n return {\n filename: filePath,\n slug,\n attributes,\n content,\n };\n }\n return {\n filename: filePath,\n slug,\n attributes: contentFile.metadata,\n content: contentFile.default,\n };\n })\n );\n}\n\n/**\n * Retrieves the static content using the provided param and/or prefix.\n *\n * @param param route parameter (default: 'slug')\n * @param fallback fallback text if content file is not found (default: 'No Content Found')\n */\nexport function injectContent<\n Attributes extends Record<string, any> = Record<string, any>\n>(\n param:\n | string\n | {\n param: string;\n subdirectory: string;\n }\n | {\n customFilename: string;\n } = 'slug',\n fallback = 'No Content Found'\n): Observable<ContentFile<Attributes | Record<string, never>>> {\n const contentFiles = inject(CONTENT_FILES_TOKEN);\n const renderTaskService = inject(RenderTaskService);\n const task = renderTaskService.addRenderTask();\n\n if (typeof param === 'string' || 'param' in param) {\n const prefix = typeof param === 'string' ? '' : `${param.subdirectory}/`;\n const route = inject(ActivatedRoute);\n const paramKey = typeof param === 'string' ? param : param.param;\n return route.paramMap.pipe(\n map((params) => params.get(paramKey)),\n switchMap((slug) => {\n if (slug) {\n return getContentFile<Attributes>(\n contentFiles,\n prefix,\n slug,\n fallback,\n renderTaskService\n );\n }\n return of({\n filename: '',\n slug: '',\n attributes: {},\n content: fallback,\n });\n }),\n tap(() => renderTaskService.clearRenderTask(task))\n );\n } else {\n return getContentFile<Attributes>(\n contentFiles,\n '',\n param.customFilename,\n fallback,\n renderTaskService\n ).pipe(tap(() => renderTaskService.clearRenderTask(task)));\n }\n}\n","/// <reference types=\"vite/client\" />\n\nimport { Injectable, TransferState, inject, makeStateKey } from '@angular/core';\nimport { getHeadingList } from 'marked-gfm-heading-id';\n\nexport type TableOfContentItem = {\n id: string;\n level: number; // starts at 1\n text: string;\n};\n\n@Injectable()\nexport abstract class ContentRenderer {\n async render(content: string): Promise<string> {\n return content;\n }\n\n getContentHeadings(): Array<TableOfContentItem> {\n return [];\n }\n\n // eslint-disable-next-line\n enhance() {}\n}\n\nexport class NoopContentRenderer implements ContentRenderer {\n private readonly transferState = inject(TransferState);\n private contentId = 0;\n\n /**\n * Generates a hash from the content string\n * to be used with the transfer state\n */\n private generateHash(str: string) {\n let hash = 0;\n for (let i = 0, len = str.length; i < len; i++) {\n let chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n }\n\n async render(content: string) {\n this.contentId = this.generateHash(content);\n return content;\n }\n enhance() {}\n\n getContentHeadings(): Array<TableOfContentItem> {\n const key = makeStateKey<TableOfContentItem[]>(\n `content-headings-${this.contentId}`\n );\n\n if (import.meta.env.SSR === true) {\n const headings = getHeadingList();\n this.transferState.set(key, headings);\n return headings;\n }\n\n return this.transferState.get(key, []);\n }\n}\n","import { ContentFile } from './content-file';\nimport { inject } from '@angular/core';\nimport { CONTENT_FILES_LIST_TOKEN } from './content-files-list-token';\nimport { RenderTaskService } from './render-task.service';\n\nexport function injectContentFiles<Attributes extends Record<string, any>>(\n filterFn?: InjectContentFilesFilterFunction<Attributes>\n): ContentFile<Attributes>[] {\n const renderTaskService = inject(RenderTaskService);\n const task = renderTaskService.addRenderTask();\n const allContentFiles = inject(\n CONTENT_FILES_LIST_TOKEN\n ) as ContentFile<Attributes>[];\n renderTaskService.clearRenderTask(task);\n\n if (filterFn) {\n const filteredContentFiles = allContentFiles.filter(filterFn);\n\n return filteredContentFiles;\n }\n\n return allContentFiles;\n}\n\nexport type InjectContentFilesFilterFunction<T extends Record<string, any>> = (\n value: ContentFile<T>,\n index: number,\n array: ContentFile<T>[]\n) => boolean;\n","import {\n AbstractType,\n Injectable,\n Provider,\n ProviderToken,\n Type,\n} from '@angular/core';\n\nexport interface MarkedContentHighlighter {\n augmentCodeBlock?(code: string, lang: string): string;\n}\n\n@Injectable()\nexport abstract class MarkedContentHighlighter {\n abstract getHighlightExtension(): import('marked').marked.MarkedExtension;\n}\n\nexport function withHighlighter(\n provider: (\n | { useValue: MarkedContentHighlighter }\n | {\n useClass:\n | Type<MarkedContentHighlighter>\n | AbstractType<MarkedContentHighlighter>;\n }\n | { useFactory: (...deps: any[]) => MarkedContentHighlighter }\n ) & { deps?: ProviderToken<any>[] }\n): Provider {\n return { provide: MarkedContentHighlighter, ...provider } as Provider;\n}\n","/**\n * Credit goes to Scully for original implementation\n * https://github.com/scullyio/scully/blob/main/libs/scully/src/lib/fileHanderPlugins/markdown.ts\n */\nimport { inject, Injectable } from '@angular/core';\nimport { marked } from 'marked';\nimport { gfmHeadingId } from 'marked-gfm-heading-id';\nimport { mangle } from 'marked-mangle';\nimport { MarkedContentHighlighter } from './marked-content-highlighter';\n\n@Injectable()\nexport class MarkedSetupService {\n private readonly marked: typeof marked;\n private readonly highlighter = inject(MarkedContentHighlighter, {\n optional: true,\n });\n\n constructor() {\n const renderer = new marked.Renderer();\n renderer.code = (code: string, lang: string) => {\n // Let's do a language based detection like on GitHub\n // So we can still have non-interpreted mermaid code\n if (lang === 'mermaid') {\n return '<pre class=\"mermaid\">' + code + '</pre>';\n }\n\n if (!lang) {\n return '<pre><code>' + code + '</code></pre>';\n }\n\n if (this.highlighter?.augmentCodeBlock) {\n return this.highlighter?.augmentCodeBlock(code, lang);\n }\n\n return `<pre class=\"language-${lang}\"><code class=\"language-${lang}\">${code}</code></pre>`;\n };\n\n const extensions = [gfmHeadingId(), mangle()];\n\n if (this.highlighter) {\n extensions.push(this.highlighter.getHighlightExtension());\n }\n\n marked.use(...extensions, {\n renderer,\n pedantic: false,\n gfm: true,\n breaks: false,\n mangle: false,\n });\n\n this.marked = marked;\n }\n\n getMarkedInstance(): typeof marked {\n return this.marked;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { getHeadingList } from 'marked-gfm-heading-id';\n\nimport { ContentRenderer, TableOfContentItem } from './content-renderer';\nimport { MarkedSetupService } from './marked-setup.service';\n\n@Injectable()\nexport class MarkdownContentRendererService implements ContentRenderer {\n #marked = inject(MarkedSetupService, { self: true });\n\n async render(content: string): Promise<string> {\n return this.#marked.getMarkedInstance().parse(content);\n }\n\n /**\n * The method is meant to be called after `render()`\n */\n getContentHeadings(): TableOfContentItem[] {\n return getHeadingList();\n }\n\n // eslint-disable-next-line\n enhance() {}\n}\n","import { Provider, InjectionToken } from '@angular/core';\nimport { ContentRenderer, NoopContentRenderer } from './content-renderer';\nimport { RenderTaskService } from './render-task.service';\n\nexport interface MarkdownRendererOptions {\n loadMermaid?: () => Promise<typeof import('mermaid')>;\n}\n\nconst CONTENT_RENDERER_PROVIDERS: Provider[] = [\n {\n provide: ContentRenderer,\n useClass: NoopContentRenderer,\n },\n];\n\nexport function withMarkdownRenderer(\n options?: MarkdownRendererOptions\n): Provider {\n return [\n CONTENT_RENDERER_PROVIDERS,\n options?.loadMermaid\n ? [\n {\n provide: MERMAID_IMPORT_TOKEN,\n useFactory: options.loadMermaid,\n },\n ]\n : [],\n ];\n}\n\nexport function provideContent(...features: Provider[]) {\n return [\n { provide: RenderTaskService, useClass: RenderTaskService },\n ...features,\n ];\n}\n\nexport const MERMAID_IMPORT_TOKEN = new InjectionToken<\n Promise<typeof import('mermaid')>\n>('mermaid_import');\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewChecked,\n Component,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ContentRenderer } from './content-renderer';\nimport { AnchorNavigationDirective } from './anchor-navigation.directive';\n\n@Component({\n selector: 'analog-markdown-route',\n standalone: true,\n imports: [AsyncPipe],\n hostDirectives: [AnchorNavigationDirective],\n preserveWhitespaces: true,\n encapsulation: ViewEncapsulation.None,\n template: `<div [innerHTML]=\"content\" [class]=\"classes\"></div>`,\n})\nexport default class AnalogMarkdownRouteComponent implements AfterViewChecked {\n private sanitizer = inject(DomSanitizer);\n private route = inject(ActivatedRoute);\n contentRenderer = inject(ContentRenderer);\n\n protected content: SafeHtml = this.sanitizer.bypassSecurityTrustHtml(\n this.route.snapshot.data['renderedAnalogContent']\n );\n\n @Input() classes = 'analog-markdown-route';\n\n ngAfterViewChecked() {\n this.contentRenderer.enhance();\n }\n}\n","import { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewChecked,\n Component,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ActivatedRoute, Data } from '@angular/router';\nimport { Observable, from, of } from 'rxjs';\nimport { catchError, map, mergeMap, filter } from 'rxjs/operators';\n\nimport { AnchorNavigationDirective } from './anchor-navigation.directive';\nimport { ContentRenderer } from './content-renderer';\nimport { MERMAID_IMPORT_TOKEN } from './provide-content';\n\n@Component({\n selector: 'analog-markdown',\n standalone: true,\n imports: [AsyncPipe],\n hostDirectives: [AnchorNavigationDirective],\n preserveWhitespaces: true,\n encapsulation: ViewEncapsulation.None,\n template: `<div\n #container\n [innerHTML]=\"content$ | async\"\n [class]=\"classes\"\n ></div>`,\n})\nexport default class AnalogMarkdownComponent\n implements OnInit, OnChanges, AfterViewChecked\n{\n private sanitizer = inject(DomSanitizer);\n private route = inject(ActivatedRoute);\n private zone = inject(NgZone);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly mermaidImport = inject(MERMAID_IMPORT_TOKEN, {\n optional: true,\n });\n private mermaid: typeof import('mermaid') | undefined;\n\n public content$: Observable<SafeHtml> = this.getContentSource();\n\n @Input() content!: string | object | undefined | null;\n @Input() classes = 'analog-markdown';\n\n @ViewChild('container', { static: true, read: ViewContainerRef })\n container!: ViewContainerRef;\n\n contentRenderer = inject(ContentRenderer);\n\n constructor() {\n if (isPlatformBrowser(this.platformId) && this.mermaidImport) {\n // Mermaid can only be loaded on client side\n this.loadMermaid(this.mermaidImport);\n }\n }\n\n ngOnInit(): void {\n this.updateContent();\n }\n\n ngOnChanges(): void {\n this.updateContent();\n }\n\n updateContent() {\n if (this.content && typeof this.content !== 'string') {\n this.container.clear();\n const componentRef = this.container.createComponent(this.content as any);\n componentRef.changeDetectorRef.detectChanges();\n } else {\n this.content$ = this.getContentSource();\n }\n }\n\n getContentSource() {\n return this.route.data.pipe(\n map<Data, string>((data) => this.content ?? data['_analogContent']),\n filter((content) => typeof content === 'string'),\n mergeMap((contentString) => this.renderContent(contentString)),\n map((content) => this.sanitizer.bypassSecurityTrustHtml(content)),\n catchError((e) => of(`There was an error ${e}`))\n );\n }\n\n async renderContent(content: string): Promise<string> {\n return this.contentRenderer.render(content);\n }\n\n ngAfterViewChecked() {\n this.contentRenderer.enhance();\n this.zone.runOutsideAngular(() => this.mermaid?.default.run());\n }\n\n private loadMermaid(mermaidImport: Promise<typeof import('mermaid')>) {\n this.zone.runOutsideAngular(() =>\n // Wrap into an observable to avoid redundant initialization once\n // the markdown component is destroyed before the promise is resolved.\n from(mermaidImport)\n .pipe(takeUntilDestroyed())\n .subscribe((mermaid) => {\n this.mermaid = mermaid;\n this.mermaid.default.initialize({ startOnLoad: false });\n // Explicitly running mermaid as ngAfterViewChecked\n // has probably already been called\n this.mermaid?.default.run();\n })\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["PendingTasks","i1.AnchorNavigationDirective"],"mappings":"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"}
package/og/lib/og.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { ImageResponseOptions } from './options.js';
3
2
  export declare const generateImage: (element: string, options: ImageResponseOptions) => Promise<Buffer>;
4
3
  export declare class ImageResponse extends Response {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/content",
3
- "version": "1.9.2-beta.1",
3
+ "version": "1.9.2-beta.3",
4
4
  "description": "Content Rendering for Analog",
5
5
  "type": "module",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -23,10 +23,10 @@
23
23
  "url": "https://github.com/sponsors/brandonroberts"
24
24
  },
25
25
  "peerDependencies": {
26
- "@angular/common": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
27
- "@angular/core": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
28
- "@angular/platform-browser": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
29
- "@angular/router": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0",
26
+ "@angular/common": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0",
27
+ "@angular/core": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0",
28
+ "@angular/platform-browser": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0",
29
+ "@angular/router": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc.0",
30
30
  "@nx/devkit": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
31
31
  "front-matter": "^4.0.2",
32
32
  "marked": ">=5.0.2",
@@ -72,26 +72,18 @@
72
72
  },
73
73
  ".": {
74
74
  "types": "./index.d.ts",
75
- "esm2022": "./esm2022/analogjs-content.mjs",
76
- "esm": "./esm2022/analogjs-content.mjs",
77
75
  "default": "./fesm2022/analogjs-content.mjs"
78
76
  },
79
77
  "./og": {
80
78
  "types": "./og/index.d.ts",
81
- "esm2022": "./esm2022/og/analogjs-content-og.mjs",
82
- "esm": "./esm2022/og/analogjs-content-og.mjs",
83
79
  "default": "./fesm2022/analogjs-content-og.mjs"
84
80
  },
85
81
  "./prism-highlighter": {
86
82
  "types": "./prism-highlighter/index.d.ts",
87
- "esm2022": "./esm2022/prism-highlighter/analogjs-content-prism-highlighter.mjs",
88
- "esm": "./esm2022/prism-highlighter/analogjs-content-prism-highlighter.mjs",
89
83
  "default": "./fesm2022/analogjs-content-prism-highlighter.mjs"
90
84
  },
91
85
  "./shiki-highlighter": {
92
86
  "types": "./shiki-highlighter/index.d.ts",
93
- "esm2022": "./esm2022/shiki-highlighter/analogjs-content-shiki-highlighter.mjs",
94
- "esm": "./esm2022/shiki-highlighter/analogjs-content-shiki-highlighter.mjs",
95
87
  "default": "./fesm2022/analogjs-content-shiki-highlighter.mjs"
96
88
  }
97
89
  },
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = update;
3
4
  /* eslint-disable @typescript-eslint/no-unused-vars */
4
5
  const devkit_1 = require("@nx/devkit");
5
6
  const ts_morph_1 = require("ts-morph");
@@ -45,5 +46,4 @@ async function update(host) {
45
46
  return () => (0, devkit_1.installPackagesTask)(host);
46
47
  }
47
48
  }
48
- exports.default = update;
49
49
  //# sourceMappingURL=update-markdown-renderer-feature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-markdown-renderer-feature.js","sourceRoot":"","sources":["../../../../../../../packages/content-plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.ts"],"names":[],"mappings":";;AAAA,sDAAsD;AACtD,uCAMoB;AACpB,uCAAyD;AAE1C,KAAK,UAAU,MAAM,CAAC,IAAU;IAC7C,IAAI,OAAgB,CAAC;IAErB,IAAA,6BAAoB,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,IACE,OAAO;gBACP,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACxC,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACzC,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EACzC,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,kBAAO,CAAC;wBACpB,qBAAqB,EAAE,IAAI;wBAC3B,2BAA2B,EAAE,IAAI;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE3D,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CACtD,CAAC,IAAI,EAA0B,EAAE,CAC/B,eAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACzC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAClD,CAAC;gBAEF,IAAI,kBAAkB,EAAE,CAAC;oBACvB,UAAU,CAAC,oBAAoB,CAAC;wBAC9B,eAAe,EAAE,qCAAqC;wBACtD,YAAY,EAAE,CAAC,sBAAsB,CAAC;qBACvC,CAAC,CAAC;oBAEH,kBAAkB,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,2DAA2D;IAC3D,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,IAAA,qCAA4B,EAAC,IAAI,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAExB,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,GAAG,EAAE,CAAC,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAvDD,yBAuDC"}
1
+ {"version":3,"file":"update-markdown-renderer-feature.js","sourceRoot":"","sources":["../../../../../../../packages/content-plugin/src/migrations/update-markdown-renderer-feature/update-markdown-renderer-feature.ts"],"names":[],"mappings":";;AAUA,yBAuDC;AAjED,sDAAsD;AACtD,uCAMoB;AACpB,uCAAyD;AAE1C,KAAK,UAAU,MAAM,CAAC,IAAU;IAC7C,IAAI,OAAgB,CAAC;IAErB,IAAA,6BAAoB,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,IACE,OAAO;gBACP,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACxC,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACzC,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EACzC,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,IAAI,kBAAO,CAAC;wBACpB,qBAAqB,EAAE,IAAI;wBAC3B,2BAA2B,EAAE,IAAI;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE3D,MAAM,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CACtD,CAAC,IAAI,EAA0B,EAAE,CAC/B,eAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBAC3B,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACzC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAClD,CAAC;gBAEF,IAAI,kBAAkB,EAAE,CAAC;oBACvB,UAAU,CAAC,oBAAoB,CAAC;wBAC9B,eAAe,EAAE,qCAAqC;wBACtD,YAAY,EAAE,CAAC,sBAAsB,CAAC;qBACvC,CAAC,CAAC;oBAEH,kBAAkB,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;gBAC3D,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,2DAA2D;IAC3D,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,IAAA,qCAA4B,EAAC,IAAI,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAExB,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,GAAG,EAAE,CAAC,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbG9nanMtY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRlbnQvc3JjL2FuYWxvZ2pzLWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
package/esm2022/index.mjs DELETED
@@ -1,12 +0,0 @@
1
- export { AnchorNavigationDirective } from './lib/anchor-navigation.directive';
2
- export { injectContent } from './lib/content';
3
- export { ContentRenderer, NoopContentRenderer } from './lib/content-renderer';
4
- export { injectContentFiles } from './lib/inject-content-files';
5
- export { MarkdownContentRendererService } from './lib/markdown-content-renderer.service';
6
- export { provideContent, withMarkdownRenderer, MERMAID_IMPORT_TOKEN, } from './lib/provide-content';
7
- export { default as MarkdownRouteComponent } from './lib/markdown-route.component';
8
- export { default as MarkdownComponent } from './lib/markdown.component';
9
- export { parseRawContentFile } from './lib/parse-raw-content-file';
10
- export { MarkedSetupService } from './lib/marked-setup.service';
11
- export { MarkedContentHighlighter, withHighlighter, } from './lib/marked-content-highlighter';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RixPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsT0FBTyxJQUFJLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsZUFBZSxHQUNoQixNQUFNLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQW5jaG9yTmF2aWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2FuY2hvci1uYXZpZ2F0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBpbmplY3RDb250ZW50IH0gZnJvbSAnLi9saWIvY29udGVudCc7XG5leHBvcnQgeyBDb250ZW50RmlsZSB9IGZyb20gJy4vbGliL2NvbnRlbnQtZmlsZSc7XG5leHBvcnQgeyBDb250ZW50UmVuZGVyZXIsIE5vb3BDb250ZW50UmVuZGVyZXIgfSBmcm9tICcuL2xpYi9jb250ZW50LXJlbmRlcmVyJztcbmV4cG9ydCB7IGluamVjdENvbnRlbnRGaWxlcyB9IGZyb20gJy4vbGliL2luamVjdC1jb250ZW50LWZpbGVzJztcbmV4cG9ydCB7IE1hcmtkb3duQ29udGVudFJlbmRlcmVyU2VydmljZSB9IGZyb20gJy4vbGliL21hcmtkb3duLWNvbnRlbnQtcmVuZGVyZXIuc2VydmljZSc7XG5leHBvcnQge1xuICBwcm92aWRlQ29udGVudCxcbiAgd2l0aE1hcmtkb3duUmVuZGVyZXIsXG4gIE1FUk1BSURfSU1QT1JUX1RPS0VOLFxufSBmcm9tICcuL2xpYi9wcm92aWRlLWNvbnRlbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXJrZG93blJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvbWFya2Rvd24tcm91dGUuY29tcG9uZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL2xpYi9tYXJrZG93bi5jb21wb25lbnQnO1xuZXhwb3J0IHsgcGFyc2VSYXdDb250ZW50RmlsZSB9IGZyb20gJy4vbGliL3BhcnNlLXJhdy1jb250ZW50LWZpbGUnO1xuZXhwb3J0IHsgTWFya2VkU2V0dXBTZXJ2aWNlIH0gZnJvbSAnLi9saWIvbWFya2VkLXNldHVwLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgTWFya2VkQ29udGVudEhpZ2hsaWdodGVyLFxuICB3aXRoSGlnaGxpZ2h0ZXIsXG59IGZyb20gJy4vbGliL21hcmtlZC1jb250ZW50LWhpZ2hsaWdodGVyJztcbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { Directive, HostListener, inject } from '@angular/core';
2
- import { DOCUMENT, Location } from '@angular/common';
3
- import { Router } from '@angular/router';
4
- import * as i0 from "@angular/core";
5
- export class AnchorNavigationDirective {
6
- constructor() {
7
- this.document = inject(DOCUMENT);
8
- this.location = inject(Location);
9
- this.router = inject(Router);
10
- }
11
- handleNavigation(element) {
12
- if (element instanceof HTMLAnchorElement &&
13
- isInternalUrl(element, this.document) &&
14
- hasTargetSelf(element) &&
15
- !hasDownloadAttribute(element)) {
16
- const { pathname, search, hash } = element;
17
- const url = this.location.normalize(`${pathname}${search}${hash}`);
18
- this.router.navigateByUrl(url);
19
- return false;
20
- }
21
- return true;
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnchorNavigationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
24
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: AnchorNavigationDirective, isStandalone: true, selector: "[analogAnchorNavigation]", host: { listeners: { "click": "handleNavigation($event.target)" } }, ngImport: i0 }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: AnchorNavigationDirective, decorators: [{
27
- type: Directive,
28
- args: [{
29
- selector: '[analogAnchorNavigation]',
30
- standalone: true,
31
- }]
32
- }], propDecorators: { handleNavigation: [{
33
- type: HostListener,
34
- args: ['click', ['$event.target']]
35
- }] } });
36
- function hasDownloadAttribute(anchorElement) {
37
- return anchorElement.getAttribute('download') !== null;
38
- }
39
- function hasTargetSelf(anchorElement) {
40
- return !anchorElement.target || anchorElement.target === '_self';
41
- }
42
- function isInternalUrl(anchorElement, document) {
43
- return (anchorElement.host === document.location.host &&
44
- anchorElement.protocol === document.location.protocol);
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLW5hdmlnYXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2FuY2hvci1uYXZpZ2F0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBTXpDLE1BQU0sT0FBTyx5QkFBeUI7SUFKdEM7UUFLbUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FtQjFDO0lBaEJDLGdCQUFnQixDQUFDLE9BQW9CO1FBQ25DLElBQ0UsT0FBTyxZQUFZLGlCQUFpQjtZQUNwQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDckMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUN0QixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUM5QixDQUFDO1lBQ0QsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRS9CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FyQlUseUJBQXlCO2tHQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQU9DLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQzs7QUFtQjFDLFNBQVMsb0JBQW9CLENBQUMsYUFBZ0M7SUFDNUQsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsYUFBZ0M7SUFDckQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUM7QUFDbkUsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixhQUFnQyxFQUNoQyxRQUFrQjtJQUVsQixPQUFPLENBQ0wsYUFBYSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUk7UUFDN0MsYUFBYSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDdEQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FuYWxvZ0FuY2hvck5hdmlnYXRpb25dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQW5jaG9yTmF2aWdhdGlvbkRpcmVjdGl2ZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBoYW5kbGVOYXZpZ2F0aW9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50ICYmXG4gICAgICBpc0ludGVybmFsVXJsKGVsZW1lbnQsIHRoaXMuZG9jdW1lbnQpICYmXG4gICAgICBoYXNUYXJnZXRTZWxmKGVsZW1lbnQpICYmXG4gICAgICAhaGFzRG93bmxvYWRBdHRyaWJ1dGUoZWxlbWVudClcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCB9ID0gZWxlbWVudDtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ubm9ybWFsaXplKGAke3BhdGhuYW1lfSR7c2VhcmNofSR7aGFzaH1gKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhc0Rvd25sb2FkQXR0cmlidXRlKGFuY2hvckVsZW1lbnQ6IEhUTUxBbmNob3JFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBhbmNob3JFbGVtZW50LmdldEF0dHJpYnV0ZSgnZG93bmxvYWQnKSAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaGFzVGFyZ2V0U2VsZihhbmNob3JFbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gIWFuY2hvckVsZW1lbnQudGFyZ2V0IHx8IGFuY2hvckVsZW1lbnQudGFyZ2V0ID09PSAnX3NlbGYnO1xufVxuXG5mdW5jdGlvbiBpc0ludGVybmFsVXJsKFxuICBhbmNob3JFbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCxcbiAgZG9jdW1lbnQ6IERvY3VtZW50XG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBhbmNob3JFbGVtZW50Lmhvc3QgPT09IGRvY3VtZW50LmxvY2F0aW9uLmhvc3QgJiZcbiAgICBhbmNob3JFbGVtZW50LnByb3RvY29sID09PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbFxuICApO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2NvbnRlbnQtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb250ZW50RmlsZTxcbiAgQXR0cmlidXRlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4+IHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgc2x1Zzogc3RyaW5nO1xuICBjb250ZW50Pzogc3RyaW5nIHwgb2JqZWN0O1xuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzO1xufVxuIl19
@@ -1,22 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { getContentFilesList } from './get-content-files';
3
- function getSlug(filename) {
4
- const parts = filename.match(/^(\\|\/)(.+(\\|\/))*(.+)\.(.+)$/);
5
- return parts?.length ? parts[4] : '';
6
- }
7
- export const CONTENT_FILES_LIST_TOKEN = new InjectionToken('@analogjs/content Content Files List', {
8
- providedIn: 'root',
9
- factory() {
10
- const contentFiles = getContentFilesList();
11
- return Object.keys(contentFiles).map((filename) => {
12
- const attributes = contentFiles[filename];
13
- const slug = attributes['slug'];
14
- return {
15
- filename,
16
- attributes,
17
- slug: slug ? encodeURI(slug) : encodeURI(getSlug(filename)),
18
- };
19
- });
20
- },
21
- });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1maWxlcy1saXN0LXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGVudC9zcmMvbGliL2NvbnRlbnQtZmlsZXMtbGlzdC10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFELFNBQVMsT0FBTyxDQUFDLFFBQWdCO0lBQy9CLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDeEQsc0NBQXNDLEVBQ3RDO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTztRQUNMLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFM0MsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2hELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFaEMsT0FBTztnQkFDTCxRQUFRO2dCQUNSLFVBQVU7Z0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzVELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudEZpbGUgfSBmcm9tICcuL2NvbnRlbnQtZmlsZSc7XG5pbXBvcnQgeyBnZXRDb250ZW50RmlsZXNMaXN0IH0gZnJvbSAnLi9nZXQtY29udGVudC1maWxlcyc7XG5cbmZ1bmN0aW9uIGdldFNsdWcoZmlsZW5hbWU6IHN0cmluZykge1xuICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLm1hdGNoKC9eKFxcXFx8XFwvKSguKyhcXFxcfFxcLykpKiguKylcXC4oLispJC8pO1xuICByZXR1cm4gcGFydHM/Lmxlbmd0aCA/IHBhcnRzWzRdIDogJyc7XG59XG5cbmV4cG9ydCBjb25zdCBDT05URU5UX0ZJTEVTX0xJU1RfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29udGVudEZpbGVbXT4oXG4gICdAYW5hbG9nanMvY29udGVudCBDb250ZW50IEZpbGVzIExpc3QnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3RvcnkoKSB7XG4gICAgICBjb25zdCBjb250ZW50RmlsZXMgPSBnZXRDb250ZW50RmlsZXNMaXN0KCk7XG5cbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjb250ZW50RmlsZXMpLm1hcCgoZmlsZW5hbWUpID0+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGNvbnRlbnRGaWxlc1tmaWxlbmFtZV07XG4gICAgICAgIGNvbnN0IHNsdWcgPSBhdHRyaWJ1dGVzWydzbHVnJ107XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgIHNsdWc6IHNsdWcgPyBlbmNvZGVVUkkoc2x1ZykgOiBlbmNvZGVVUkkoZ2V0U2x1ZyhmaWxlbmFtZSkpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSxcbiAgfVxuKTtcbiJdfQ==