@breadstone-tools/markdowner-core 0.0.70 → 0.0.72

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 (42) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/package.json +3 -3
  3. package/Process/MarkdownProcessor.d.ts +0 -46
  4. package/Process/MarkdownProcessor.d.ts.map +0 -1
  5. package/Process/MarkdownProcessor.js +0 -92
  6. package/Process/MarkdownProcessor.js.map +0 -1
  7. package/Process/Processors/Abstracts/BaseProcessor.d.ts +0 -60
  8. package/Process/Processors/Abstracts/BaseProcessor.d.ts.map +0 -1
  9. package/Process/Processors/Abstracts/BaseProcessor.js +0 -71
  10. package/Process/Processors/Abstracts/BaseProcessor.js.map +0 -1
  11. package/Process/Processors/BlockquoteProcessor.Test.d.ts +0 -2
  12. package/Process/Processors/BlockquoteProcessor.Test.d.ts.map +0 -1
  13. package/Process/Processors/BlockquoteProcessor.Test.js +0 -36
  14. package/Process/Processors/BlockquoteProcessor.Test.js.map +0 -1
  15. package/Process/Processors/BlockquoteProcessor.d.ts +0 -25
  16. package/Process/Processors/BlockquoteProcessor.d.ts.map +0 -1
  17. package/Process/Processors/BlockquoteProcessor.js +0 -67
  18. package/Process/Processors/BlockquoteProcessor.js.map +0 -1
  19. package/Process/Processors/CalloutProcessor.d.ts +0 -29
  20. package/Process/Processors/CalloutProcessor.d.ts.map +0 -1
  21. package/Process/Processors/CalloutProcessor.js +0 -68
  22. package/Process/Processors/CalloutProcessor.js.map +0 -1
  23. package/Process/Processors/CodeBlockProcessor.d.ts +0 -24
  24. package/Process/Processors/CodeBlockProcessor.d.ts.map +0 -1
  25. package/Process/Processors/CodeBlockProcessor.js +0 -65
  26. package/Process/Processors/CodeBlockProcessor.js.map +0 -1
  27. package/Process/Processors/Interfaces/IProcessor.d.ts +0 -9
  28. package/Process/Processors/Interfaces/IProcessor.d.ts.map +0 -1
  29. package/Process/Processors/Interfaces/IProcessor.js +0 -3
  30. package/Process/Processors/Interfaces/IProcessor.js.map +0 -1
  31. package/Process/Processors/SplitProcessor.d.ts +0 -49
  32. package/Process/Processors/SplitProcessor.d.ts.map +0 -1
  33. package/Process/Processors/SplitProcessor.js +0 -123
  34. package/Process/Processors/SplitProcessor.js.map +0 -1
  35. package/Process/Processors/TabProcessor.d.ts +0 -42
  36. package/Process/Processors/TabProcessor.d.ts.map +0 -1
  37. package/Process/Processors/TabProcessor.js +0 -94
  38. package/Process/Processors/TabProcessor.js.map +0 -1
  39. package/Process/Processors/Utils.d.ts +0 -6
  40. package/Process/Processors/Utils.d.ts.map +0 -1
  41. package/Process/Processors/Utils.js +0 -14
  42. package/Process/Processors/Utils.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## 0.0.71 (2025-06-30)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - add missing newline at end of package.json ([73866991d5](https://github.com/RueDeRennes/mosaik/commit/73866991d5))
6
+
7
+ ## 0.0.70 (2025-06-28)
8
+
9
+ ### 🩹 Fixes
10
+
11
+ - update background color to transparent for page header and menu components; update release script to version 0.0.70 ([e8e7c124a4](https://github.com/RueDeRennes/mosaik/commit/e8e7c124a4))
12
+
13
+ ## 0.0.69 (2025-06-26)
14
+
15
+ This was a version bump only for markdowner-core to align it with other projects, there were no code changes.
16
+
17
+ ## 0.0.68 (2025-06-26)
18
+
19
+ ### 🚀 Features
20
+
21
+ - add copyExecutorsJson script and update build commands ([0a0aba85b9](https://github.com/RueDeRennes/mosaik/commit/0a0aba85b9))
22
+
23
+ ## 0.0.67 (2025-06-26)
24
+
25
+ This was a version bump only for markdowner-core to align it with other projects, there were no code changes.
26
+
1
27
  ## 0.0.66 (2025-06-25)
2
28
 
3
29
  This was a version bump only for markdowner-core to align it with other projects, there were no code changes.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@breadstone-tools/markdowner-core",
3
3
  "description": "Markdowner core library",
4
- "version": "0.0.70",
4
+ "version": "0.0.72",
5
5
  "license": "MIT",
6
6
  "author": "andre.wehlert <awehlert@breadstone.de> (https://www.breadstone.de)",
7
7
  "repository": {
@@ -13,7 +13,7 @@
13
13
  "typings": "./Index.d.ts",
14
14
  "types": "./Index.d.ts",
15
15
  "dependencies": {
16
- "@breadstone-infrastructure/utilities": "^0.0.70",
17
- "marked": "^15.0.12"
16
+ "@breadstone-infrastructure/utilities": "^0.0.72",
17
+ "marked": "^16.0.0"
18
18
  }
19
19
  }
@@ -1,46 +0,0 @@
1
- import { type MarkedOptions } from 'marked';
2
- import type { IProcessor } from './Processors/Interfaces/IProcessor.js';
3
- /**
4
- * Main processor for Markdown content.
5
- * Orchestrates processors and integrates them with `marked`.
6
- *
7
- * @public
8
- */
9
- export declare class MarkdownProcessor {
10
- private _processors;
11
- /**
12
- * Constructs a new MarkdownProcessor.
13
- */
14
- constructor(processors?: Array<IProcessor>);
15
- /**
16
- * Adds a custom processor to the manager.
17
- *
18
- * @public
19
- * @param processor - The processor to add.
20
- */
21
- addProcessor(processor: IProcessor): void;
22
- /**
23
- * Removes a custom processor from the manager.
24
- *
25
- * @public
26
- * @param processor - The processor to remove.
27
- */
28
- removeProcessor(processor: IProcessor): void;
29
- /**
30
- * Processes Markdown content into HTML.
31
- *
32
- * @public
33
- * @param markdown - The Markdown content to process.
34
- * @returns The resulting HTML string.
35
- */
36
- process(markdown: string, options?: Omit<MarkedOptions, 'async'>): string;
37
- /**
38
- * Processes Markdown content into HTML asynchronously.
39
- *
40
- * @public
41
- * @param markdown - The Markdown content to process.
42
- * @returns A promise that resolves to the resulting HTML string.
43
- */
44
- processAsync(markdown: string, options?: Omit<MarkedOptions, 'async'>): Promise<string>;
45
- }
46
- //# sourceMappingURL=MarkdownProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarkdownProcessor.d.ts","sourceRoot":"","sources":["../../src/Process/MarkdownProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAK1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAKxE;;;;;GAKG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,WAAW,CAAyB;IAM5C;;OAEG;gBACgB,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;IAkBjD;;;;;OAKG;IACI,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAIhD;;;;;OAKG;IACI,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAInD;;;;;;OAMG;IACI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM;IAiBhF;;;;;;OAMG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAajG"}
@@ -1,92 +0,0 @@
1
- // #region Imports
2
- import { Marked } from 'marked';
3
- import { BlockquoteProcessor } from './Processors/BlockquoteProcessor.js';
4
- import { CodeBlockProcessor } from './Processors/CodeBlockProcessor.js';
5
- import { TabProcessor } from './Processors/TabProcessor.js';
6
- import { CalloutProcessor } from './Processors/CalloutProcessor.js';
7
- import { SplitProcessor } from './Processors/SplitProcessor.js';
8
- // #endregion
9
- /**
10
- * Main processor for Markdown content.
11
- * Orchestrates processors and integrates them with `marked`.
12
- *
13
- * @public
14
- */
15
- export class MarkdownProcessor {
16
- // #region Fields
17
- _processors = [];
18
- // #endregion
19
- // #region Ctor
20
- /**
21
- * Constructs a new MarkdownProcessor.
22
- */
23
- constructor(processors) {
24
- this._processors = [];
25
- if (!processors?.length) {
26
- this._processors.push(new BlockquoteProcessor());
27
- this._processors.push(new CalloutProcessor());
28
- this._processors.push(new CodeBlockProcessor());
29
- this._processors.push(new TabProcessor());
30
- this._processors.push(new SplitProcessor());
31
- }
32
- this._processors.push(...processors ?? []);
33
- }
34
- // #endregion
35
- // #region Methods
36
- /**
37
- * Adds a custom processor to the manager.
38
- *
39
- * @public
40
- * @param processor - The processor to add.
41
- */
42
- addProcessor(processor) {
43
- this._processors.push(processor);
44
- }
45
- /**
46
- * Removes a custom processor from the manager.
47
- *
48
- * @public
49
- * @param processor - The processor to remove.
50
- */
51
- removeProcessor(processor) {
52
- this._processors = this._processors.filter((p) => p !== processor);
53
- }
54
- /**
55
- * Processes Markdown content into HTML.
56
- *
57
- * @public
58
- * @param markdown - The Markdown content to process.
59
- * @returns The resulting HTML string.
60
- */
61
- process(markdown, options) {
62
- const extensions = this._processors.map((p) => ({
63
- // eslint-disable-next-line @typescript-eslint/unbound-method
64
- walkTokens: p.walkTokens,
65
- extensions: [p.extension]
66
- }));
67
- const html = new Marked()
68
- .use(...extensions)
69
- .parse(markdown, {
70
- async: false,
71
- ...options
72
- });
73
- return html;
74
- }
75
- /**
76
- * Processes Markdown content into HTML asynchronously.
77
- *
78
- * @public
79
- * @param markdown - The Markdown content to process.
80
- * @returns A promise that resolves to the resulting HTML string.
81
- */
82
- processAsync(markdown, options) {
83
- const html = new Marked()
84
- .use(...this._processors)
85
- .parse(markdown, {
86
- async: true,
87
- ...options
88
- });
89
- return html;
90
- }
91
- }
92
- //# sourceMappingURL=MarkdownProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarkdownProcessor.js","sourceRoot":"","sources":["../../src/Process/MarkdownProcessor.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAElB,OAAO,EAAE,MAAM,EAA4C,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,aAAa;AAEb;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IAE1B,iBAAiB;IAET,WAAW,GAAsB,EAAE,CAAC;IAE5C,aAAa;IAEb,eAAe;IAEf;;OAEG;IACH,YAAmB,UAA8B;QAC7C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;OAKG;IACI,YAAY,CAAC,SAAqB;QACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,eAAe,CAAC,SAAqB;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,QAAgB,EAAE,OAAsC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,6DAA6D;YAC7D,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5B,CAAC,CAAC,CAAC;QAEJ,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE;aACpB,GAAG,CAAC,GAAG,UAAU,CAAC;aAClB,KAAK,CAAC,QAAQ,EAAE;YACb,KAAK,EAAE,KAAK;YACZ,GAAG,OAAO;SACb,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,QAAgB,EAAE,OAAsC;QACxE,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE;aACpB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;aACxB,KAAK,CAAC,QAAQ,EAAE;YACb,KAAK,EAAE,IAAI;YACX,GAAG,OAAO;SACb,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC;IAChB,CAAC;CAIJ"}
@@ -1,60 +0,0 @@
1
- import type { IProcessor } from '../Interfaces/IProcessor.js';
2
- import type { MarkedExtension, TokenizerAndRendererExtension, Tokens } from 'marked';
3
- /**
4
- * Abstract base class for custom Markdown processors.
5
- */
6
- export declare abstract class BaseProcessor implements MarkedExtension, IProcessor {
7
- /**
8
- * @public
9
- * @abstract
10
- * @readonly
11
- */
12
- abstract get extension(): TokenizerAndRendererExtension;
13
- /**
14
- * Override this method to provide custom hooks for processing tokens.
15
- *
16
- * @public
17
- * @readonly
18
- * @returns An object containing hooks for processing tokens.
19
- */
20
- get hooks(): MarkedExtension['hooks'];
21
- /**
22
- * Preprocesses the Markdown content before rendering.
23
- *
24
- * @public
25
- * @param markdown - The Markdown content to preprocess.
26
- * @returns The preprocessed Markdown content.
27
- */
28
- preprocess(markdown: string): string;
29
- /**
30
- * Postprocessing the HTML content after rendering.
31
- *
32
- * @public
33
- * @param html - The HTML content to postprocess.
34
- * @returns The postprocessed HTML content.
35
- */
36
- postprocess(html: string): string;
37
- /**
38
- * Processes all tokens.
39
- *
40
- * @public
41
- * @param tokens - The tokens to process.
42
- * @returns The processed tokens.
43
- */
44
- processAllTokens(tokens: Array<Tokens.Generic>): Array<Tokens.Generic>;
45
- /**
46
- * Override this method to process tokens.
47
- *
48
- * @public
49
- * @param token - The token to process.
50
- */
51
- walkTokens?(_token: Tokens.Generic): void;
52
- /**
53
- * Minifies HTML by removing all newlines and unnecessary whitespaces.
54
- *
55
- * @param html - The raw HTML string to minify.
56
- * @returns A minified HTML string.
57
- */
58
- protected minifyHTML(html: string): string;
59
- }
60
- //# sourceMappingURL=BaseProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseProcessor.d.ts","sourceRoot":"","sources":["../../../../src/Process/Processors/Abstracts/BaseProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrF;;GAEG;AACH,8BAAsB,aAAc,YAAW,eAAe,EAAE,UAAU;IAItE;;;;OAIG;IACH,aAAoB,SAAS,IAAI,6BAA6B,CAAC;IAE/D;;;;;;OAMG;IACH,IAAW,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,CAM3C;IAMD;;;;;;OAMG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;;;OAMG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;;;OAMG;IACI,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAI7E;;;;;OAKG;IACI,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAIhD;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAM7C"}
@@ -1,71 +0,0 @@
1
- // #region Imports
2
- // #endregion
3
- /**
4
- * Abstract base class for custom Markdown processors.
5
- */
6
- export class BaseProcessor {
7
- /**
8
- * Override this method to provide custom hooks for processing tokens.
9
- *
10
- * @public
11
- * @readonly
12
- * @returns An object containing hooks for processing tokens.
13
- */
14
- get hooks() {
15
- return {
16
- processAllTokens: (tokens) => this.processAllTokens(tokens),
17
- preprocess: (markdown) => this.preprocess(markdown),
18
- postprocess: (html) => this.postprocess(html)
19
- };
20
- }
21
- // #endregion
22
- // #region Methods
23
- /**
24
- * Preprocesses the Markdown content before rendering.
25
- *
26
- * @public
27
- * @param markdown - The Markdown content to preprocess.
28
- * @returns The preprocessed Markdown content.
29
- */
30
- preprocess(markdown) {
31
- return markdown;
32
- }
33
- /**
34
- * Postprocessing the HTML content after rendering.
35
- *
36
- * @public
37
- * @param html - The HTML content to postprocess.
38
- * @returns The postprocessed HTML content.
39
- */
40
- postprocess(html) {
41
- return html;
42
- }
43
- /**
44
- * Processes all tokens.
45
- *
46
- * @public
47
- * @param tokens - The tokens to process.
48
- * @returns The processed tokens.
49
- */
50
- processAllTokens(tokens) {
51
- return tokens;
52
- }
53
- /**
54
- * Override this method to process tokens.
55
- *
56
- * @public
57
- * @param token - The token to process.
58
- */
59
- walkTokens(_token) {
60
- }
61
- /**
62
- * Minifies HTML by removing all newlines and unnecessary whitespaces.
63
- *
64
- * @param html - The raw HTML string to minify.
65
- * @returns A minified HTML string.
66
- */
67
- minifyHTML(html) {
68
- return html.replace(/\s+/g, ' ').trim();
69
- }
70
- }
71
- //# sourceMappingURL=BaseProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseProcessor.js","sourceRoot":"","sources":["../../../../src/Process/Processors/Abstracts/BaseProcessor.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAKlB,aAAa;AAEb;;GAEG;AACH,MAAM,OAAgB,aAAa;IAW/B;;;;;;OAMG;IACH,IAAW,KAAK;QACZ,OAAO;YACH,gBAAgB,EAAE,CAAC,MAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAClF,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC3D,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;SACxD,CAAC;IACN,CAAC;IAED,aAAa;IAEb,kBAAkB;IAElB;;;;;;OAMG;IACI,UAAU,CAAC,QAAgB;QAC9B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,gBAAgB,CAAC,MAA6B;QACjD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAE,MAAsB;IAEzC,CAAC;IAED;;;;;OAKG;IACO,UAAU,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;CAIJ"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=BlockquoteProcessor.Test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockquoteProcessor.Test.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/BlockquoteProcessor.Test.ts"],"names":[],"mappings":""}
@@ -1,36 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { BlockquoteProcessor } from './BlockquoteProcessor';
3
- import { MarkdownProcessor } from '../MarkdownProcessor';
4
- describe('BlockquoteProcessor', () => {
5
- it('should render a blockquote with [!INFO] syntax', () => {
6
- const markdown = '> [!INFO]\n> Highlights information that users should take into account.';
7
- const html = new MarkdownProcessor([new BlockquoteProcessor()]).process(markdown);
8
- expect(html)
9
- .toBe('<blockquote class="blockquote-info"><strong>Info:</strong>Highlights information that users should take into account.</blockquote>');
10
- });
11
- it('should render a blockquote with [!WARNING] syntax', () => {
12
- const markdown = '> [!WARNING]\n> Critical content demanding immediate user attention.';
13
- const html = new MarkdownProcessor([new BlockquoteProcessor()]).process(markdown);
14
- expect(html)
15
- .toBe('<blockquote class="blockquote-warning"><strong>Warning:</strong>Critical content demanding immediate user attention.</blockquote>');
16
- });
17
- it('should render a blockquote with [!DANGER] syntax', () => {
18
- const markdown = '> [!DANGER]\n> Severe warnings for users.';
19
- const html = new MarkdownProcessor([new BlockquoteProcessor()]).process(markdown);
20
- expect(html)
21
- .toBe('<blockquote class="blockquote-danger"><strong>Danger:</strong>Severe warnings for users.</blockquote>');
22
- });
23
- it('should render a blockquote with [!SUCCESS] syntax', () => {
24
- const markdown = '> [!SUCCESS]\n> Optional information for successful actions.';
25
- const html = new MarkdownProcessor([new BlockquoteProcessor()]).process(markdown);
26
- expect(html)
27
- .toBe('<blockquote class="blockquote-success"><strong>Success:</strong>Optional information for successful actions.</blockquote>');
28
- });
29
- it('should render a default blockquote when no type is specified', () => {
30
- const markdown = '> This is a default blockquote with no headline.';
31
- const html = new MarkdownProcessor([new BlockquoteProcessor()]).process(markdown);
32
- expect(html)
33
- .toBe('<blockquote>This is a default blockquote with no headline.</blockquote>');
34
- });
35
- });
36
- //# sourceMappingURL=BlockquoteProcessor.Test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockquoteProcessor.Test.js","sourceRoot":"","sources":["../../../src/Process/Processors/BlockquoteProcessor.Test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,0EAA0E,CAAC;QAC5F,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC;aACP,IAAI,CAAC,oIAAoI,CAAC,CAAC;IACpJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,sEAAsE,CAAC;QACxF,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC;aACP,IAAI,CAAC,mIAAmI,CAAC,CAAC;IACnJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,QAAQ,GAAG,2CAA2C,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC;aACP,IAAI,CAAC,uGAAuG,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,8DAA8D,CAAC;QAChF,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC;aACP,IAAI,CAAC,2HAA2H,CAAC,CAAC;IAC3I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,kDAAkD,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAElF,MAAM,CAAC,IAAI,CAAC;aACP,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,25 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- import type { Tokens, TokenizerAndRendererExtension } from 'marked';
3
- /**
4
- * A processor that transforms blockquotes using the `[!TYPE]` syntax into styled callouts.
5
- *
6
- * Supported types: `info`, `warning`, `danger`, `success`. Fallback: `default`.
7
- *
8
- * @example
9
- * ```markdown
10
- * > [!INFO]
11
- * > This is an informational message.
12
- *
13
- * > [!WARNING] Pay attention!
14
- * > Critical instructions follow.
15
- *
16
- * > Just a normal blockquote.
17
- * ```
18
- *
19
- * @public
20
- */
21
- export declare class BlockquoteProcessor extends BaseProcessor {
22
- get extension(): TokenizerAndRendererExtension;
23
- walkTokens(token: Tokens.Generic): void;
24
- }
25
- //# sourceMappingURL=BlockquoteProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockquoteProcessor.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/BlockquoteProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAgB,6BAA6B,EAAE,MAAM,QAAQ,CAAC;AAgBlF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,IAAoB,SAAS,IAAI,6BAA6B,CAQ7D;IAEe,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAQ1D"}
@@ -1,67 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- const KNOWN_VARIANTS = new Set([
3
- 'primary', 'secondary', 'tertiary', 'info', 'warning', 'danger', 'error', 'success', 'highlight', 'neutral'
4
- ]);
5
- /**
6
- * A processor that transforms blockquotes using the `[!TYPE]` syntax into styled callouts.
7
- *
8
- * Supported types: `info`, `warning`, `danger`, `success`. Fallback: `default`.
9
- *
10
- * @example
11
- * ```markdown
12
- * > [!INFO]
13
- * > This is an informational message.
14
- *
15
- * > [!WARNING] Pay attention!
16
- * > Critical instructions follow.
17
- *
18
- * > Just a normal blockquote.
19
- * ```
20
- *
21
- * @public
22
- */
23
- export class BlockquoteProcessor extends BaseProcessor {
24
- get extension() {
25
- return {
26
- name: 'blockquote',
27
- level: 'block',
28
- renderer(token) {
29
- return BlockquoteRenderer.render(token);
30
- }
31
- };
32
- }
33
- walkTokens(token) {
34
- if (token.type !== 'blockquote') {
35
- return;
36
- }
37
- BlockquoteTokenizer.enrich(token);
38
- }
39
- }
40
- class BlockquoteTokenizer {
41
- static enrich(token) {
42
- const text = token.text.trim();
43
- const match = (/^\[!(PRIMARY|SECONDARY|TERTIARY|INFO|WARNING|DANGER|ERROR|SUCCESS|HIGHLIGHT|NEUTRAL)\]\s*(.*)$/i).exec(text);
44
- if (match) {
45
- const variant = match[1].toLowerCase();
46
- const content = match[2].trim();
47
- token.variant = KNOWN_VARIANTS.has(variant)
48
- ? variant
49
- : 'neutral';
50
- token.content = content;
51
- }
52
- else {
53
- token.variant = 'neutral';
54
- token.content = text;
55
- }
56
- }
57
- }
58
- class BlockquoteRenderer {
59
- static render(token) {
60
- const variantClass = `class="blockquote ${token.variant}"`;
61
- const label = token.variant !== 'neutral'
62
- ? `<strong>${token.variant.charAt(0).toUpperCase() + token.variant.slice(1)}:</strong> `
63
- : '';
64
- return `<blockquote${variantClass}>${label}${token.content}</blockquote>`;
65
- }
66
- }
67
- //# sourceMappingURL=BlockquoteProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockquoteProcessor.js","sourceRoot":"","sources":["../../../src/Process/Processors/BlockquoteProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAoB;IAC9C,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CAC9G,CAAC,CAAC;AAUH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAElD,IAAoB,SAAS;QACzB,OAAO;YACH,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,OAAO;YACd,QAAQ,CAAqB,KAAqB;gBAC9C,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAAyB,CAAC,CAAC;YAChE,CAAC;SACJ,CAAC;IACN,CAAC;IAEe,UAAU,CAAC,KAAqB;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,mBAAmB,CAAC,MAAM,CAAC,KAAyB,CAAC,CAAC;IAC1D,CAAC;CAEJ;AAED,MAAM,mBAAmB;IAEd,MAAM,CAAC,MAAM,CAAC,KAAuB;QACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,iGAAiG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7H,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAuB,CAAC;YAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEhC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;gBACvC,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,CAAC;YAChB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC;IACL,CAAC;CAEJ;AAED,MAAM,kBAAkB;IAEb,MAAM,CAAC,MAAM,CAAC,KAAuB;QACxC,MAAM,YAAY,GAAG,qBAAqB,KAAK,CAAC,OAAO,GAAG,CAAC;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS;YACrC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa;YACxF,CAAC,CAAC,EAAE,CAAC;QAET,OAAO,cAAc,YAAY,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,eAAe,CAAC;IAC9E,CAAC;CAEJ"}
@@ -1,29 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- import type { TokenizerAndRendererExtension, Tokens } from 'marked';
3
- type CalloutVariant = 'primary' | 'secondary' | 'tertiary' | 'info' | 'warning' | 'danger' | 'success' | 'highlight' | 'neutral';
4
- export interface ICalloutToken extends Tokens.Generic {
5
- type: 'callout';
6
- raw: string;
7
- variant: CalloutVariant;
8
- title?: string;
9
- tokens: Array<Tokens.Generic>;
10
- }
11
- /**
12
- * A processor that transforms :::callout-style blocks into styled callout boxes.
13
- *
14
- * Supported types: info, warning, tip, success, danger, note
15
- *
16
- * @example
17
- * ```markdown
18
- * ::: warning Be cautious!
19
- * This is a warning box.
20
- * :::
21
- * ```
22
- *
23
- * @public
24
- */
25
- export declare class CalloutProcessor extends BaseProcessor {
26
- get extension(): TokenizerAndRendererExtension;
27
- }
28
- export {};
29
- //# sourceMappingURL=CalloutProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CalloutProcessor.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/CalloutProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAsC,MAAM,QAAQ,CAAC;AAExG,KAAK,cAAc,GAAK,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAMnI,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,OAAO;IACjD,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IAE/C,IAAoB,SAAS,IAAI,6BAA6B,CAc7D;CAEJ"}
@@ -1,68 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- const KNOWN_VARIANTS = new Set([
3
- 'primary', 'secondary', 'tertiary', 'info', 'warning', 'danger', 'success', 'highlight', 'neutral'
4
- ]);
5
- /**
6
- * A processor that transforms :::callout-style blocks into styled callout boxes.
7
- *
8
- * Supported types: info, warning, tip, success, danger, note
9
- *
10
- * @example
11
- * ```markdown
12
- * ::: warning Be cautious!
13
- * This is a warning box.
14
- * :::
15
- * ```
16
- *
17
- * @public
18
- */
19
- export class CalloutProcessor extends BaseProcessor {
20
- get extension() {
21
- return {
22
- name: 'callout',
23
- level: 'block',
24
- start(src) {
25
- return (/^::: (primary|secondary|tertiary|info|warning|danger|success|highlight|neutral)/i).exec(src)?.index;
26
- },
27
- tokenizer(src) {
28
- return CalloutTokenizer.tokenize(src, this.lexer);
29
- },
30
- renderer(token) {
31
- return CalloutRenderer.render(token, this);
32
- }
33
- };
34
- }
35
- }
36
- class CalloutTokenizer {
37
- static tokenize(src, lexer) {
38
- const match = (/^::: (\w+)(?:\s+([^\n]+))?\n([\s\S]+?)\n:::/m).exec(src);
39
- if (!match) {
40
- return undefined;
41
- }
42
- const variant = match[1].toLowerCase();
43
- if (!KNOWN_VARIANTS.has(variant)) {
44
- return undefined;
45
- }
46
- const title = match[2].trim();
47
- const content = match[3].trim();
48
- const contentTokens = lexer.inlineTokens(content);
49
- return {
50
- type: 'callout',
51
- raw: match[0],
52
- variant,
53
- title,
54
- tokens: contentTokens
55
- };
56
- }
57
- }
58
- class CalloutRenderer {
59
- static render(token, renderer) {
60
- const classes = ['callout', token.variant];
61
- const title = token.title
62
- ? `<div class="callout-title">${token.title}</div>`
63
- : '';
64
- const body = renderer.parser.parse(token.tokens);
65
- return `<div class="${classes.join(' ')}">${title}${body}</div>`;
66
- }
67
- }
68
- //# sourceMappingURL=CalloutProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CalloutProcessor.js","sourceRoot":"","sources":["../../../src/Process/Processors/CalloutProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB;IAC3C,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;CACrG,CAAC,CAAC;AAUH;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IAE/C,IAAoB,SAAS;QACzB,OAAO;YACH,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,KAAK,CAAC,GAAW;gBACb,OAAO,CAAC,kFAAkF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;YACjH,CAAC;YACD,SAAS,CAAsB,GAAW;gBACtC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,CAAC;YACD,QAAQ,CAAqB,KAAqB;gBAC9C,OAAO,eAAe,CAAC,MAAM,CAAC,KAAsB,EAAE,IAAI,CAAC,CAAC;YAChE,CAAC;SACJ,CAAC;IACN,CAAC;CAEJ;AAED,MAAM,gBAAgB;IAEX,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAY;QAC5C,MAAM,KAAK,GAAG,CAAC,8CAA8C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAoB,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEhC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO;YACH,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACb,OAAO;YACP,KAAK;YACL,MAAM,EAAE,aAAa;SACxB,CAAC;IACN,CAAC;CAEJ;AAED,MAAM,eAAe;IAEV,MAAM,CAAC,MAAM,CAAC,KAAoB,EAAE,QAAsB;QAC7D,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;YACrB,CAAC,CAAC,8BAA8B,KAAK,CAAC,KAAK,QAAQ;YACnD,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO,eAAe,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,IAAI,QAAQ,CAAC;IACrE,CAAC;CAEJ"}
@@ -1,24 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- import type { TokenizerAndRendererExtension, Tokens } from 'marked';
3
- /**
4
- * A processor that transforms fenced code blocks with extended metadata
5
- * (language, filename, highlighted lines).
6
- *
7
- * Example:
8
- * ```ts name="example.ts" {1,3-4}
9
- * const foo = 42;
10
- * const bar = 7;
11
- * ```
12
- *
13
- * This will extract:
14
- * - language: "ts"
15
- * - filename: "example.ts"
16
- * - highlights: "1,3-4"
17
- *
18
- * @public
19
- */
20
- export declare class CodeBlockProcessor extends BaseProcessor {
21
- get extension(): TokenizerAndRendererExtension;
22
- walkTokens(token: Tokens.Generic): void;
23
- }
24
- //# sourceMappingURL=CodeBlockProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeBlockProcessor.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/CodeBlockProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAclF;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IAEjD,IAAoB,SAAS,IAAI,6BAA6B,CAQ7D;IAEe,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAK1D"}
@@ -1,65 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- /**
3
- * A processor that transforms fenced code blocks with extended metadata
4
- * (language, filename, highlighted lines).
5
- *
6
- * Example:
7
- * ```ts name="example.ts" {1,3-4}
8
- * const foo = 42;
9
- * const bar = 7;
10
- * ```
11
- *
12
- * This will extract:
13
- * - language: "ts"
14
- * - filename: "example.ts"
15
- * - highlights: "1,3-4"
16
- *
17
- * @public
18
- */
19
- export class CodeBlockProcessor extends BaseProcessor {
20
- get extension() {
21
- return {
22
- name: 'code',
23
- level: 'block',
24
- renderer(token) {
25
- return CodeBlockRenderer.render(token);
26
- }
27
- };
28
- }
29
- walkTokens(token) {
30
- if (token.type !== 'code') {
31
- return;
32
- }
33
- CodeBlockTokenizer.enrich(token);
34
- }
35
- }
36
- class CodeBlockTokenizer {
37
- static enrich(token) {
38
- const match = (/^(\w+)(?:\s+name="(.+?)")?(?:\s+\{([\d,-]+)\})?/i).exec(token.lang ?? '');
39
- if (!match) {
40
- return;
41
- }
42
- const [, lang, fileName, highlights] = match;
43
- token.meta = {
44
- lang,
45
- fileName,
46
- highlights
47
- };
48
- token.lang = lang; // override lang so PrismJS still works
49
- }
50
- }
51
- class CodeBlockRenderer {
52
- static render(token) {
53
- const lang = token.meta?.lang ?? 'plaintext';
54
- const file = token.meta?.fileName;
55
- const lines = token.meta?.highlights;
56
- const filenameBlock = file
57
- ? `<div class="code-filename">${file}</div>\n`
58
- : '';
59
- const highlightAttr = lines
60
- ? ` data-lines="${lines}"`
61
- : '';
62
- return `${filenameBlock}<pre><code class="language-${lang}"${highlightAttr}>${token.text}</code></pre>`;
63
- }
64
- }
65
- //# sourceMappingURL=CodeBlockProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeBlockProcessor.js","sourceRoot":"","sources":["../../../src/Process/Processors/CodeBlockProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAe7D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAEjD,IAAoB,SAAS;QACzB,OAAO;YACH,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,OAAO;YACd,QAAQ,CAAqB,KAAqB;gBAC9C,OAAO,iBAAiB,CAAC,MAAM,CAAC,KAAwB,CAAC,CAAC;YAC9D,CAAC;SACJ,CAAC;IACN,CAAC;IAEe,UAAU,CAAC,KAAqB;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACtC,kBAAkB,CAAC,MAAM,CAAC,KAAwB,CAAC,CAAC;IACxD,CAAC;CAEJ;AAED,MAAM,kBAAkB;IAEb,MAAM,CAAC,MAAM,CAAC,KAAsB;QACvC,MAAM,KAAK,GAAG,CAAC,kDAAkD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAEvB,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;QAE7C,KAAK,CAAC,IAAI,GAAG;YACT,IAAI;YACJ,QAAQ;YACR,UAAU;SACb,CAAC;QAEF,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,uCAAuC;IAC9D,CAAC;CAEJ;AAED,MAAM,iBAAiB;IAEZ,MAAM,CAAC,MAAM,CAAC,KAAsB;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,WAAW,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;QAErC,MAAM,aAAa,GAAG,IAAI;YACtB,CAAC,CAAC,8BAA8B,IAAI,UAAU;YAC9C,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,aAAa,GAAG,KAAK;YACvB,CAAC,CAAC,gBAAgB,KAAK,GAAG;YAC1B,CAAC,CAAC,EAAE,CAAC;QAET,OAAO,GAAG,aAAa,8BAA8B,IAAI,IAAI,aAAa,IAAI,KAAK,CAAC,IAAI,eAAe,CAAC;IAC5G,CAAC;CAEJ"}
@@ -1,9 +0,0 @@
1
- import type { MarkedExtension, TokenizerAndRendererExtension, Tokens } from 'marked';
2
- /**
3
- * Represents a processor that can handle a specific type of Markdown token.
4
- */
5
- export interface IProcessor extends Pick<MarkedExtension, 'extensions' | 'walkTokens'> {
6
- get extension(): TokenizerAndRendererExtension;
7
- walkTokens?(token: Tokens.Generic): void;
8
- }
9
- //# sourceMappingURL=IProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IProcessor.d.ts","sourceRoot":"","sources":["../../../../src/Process/Processors/Interfaces/IProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrF;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,YAAY,CAAC;IAIlF,IAAI,SAAS,IAAI,6BAA6B,CAAC;IAM/C,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAI5C"}
@@ -1,3 +0,0 @@
1
- // #region Imports
2
- export {};
3
- //# sourceMappingURL=IProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IProcessor.js","sourceRoot":"","sources":["../../../../src/Process/Processors/Interfaces/IProcessor.ts"],"names":[],"mappings":"AAAA,kBAAkB"}
@@ -1,49 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- import type { TokenizerAndRendererExtension, Tokens } from 'marked';
3
- type SplitVariant = 'primary' | 'secondary' | 'tertiary' | 'info' | 'warning' | 'danger' | 'error' | 'success' | 'highlight' | 'neutral';
4
- export interface ISplitToken extends Tokens.Generic {
5
- type: 'split';
6
- raw: string;
7
- left?: ISplitColumnToken;
8
- right?: ISplitColumnToken;
9
- tokens?: Array<Tokens.Generic>;
10
- }
11
- export interface ISplitColumnToken extends Tokens.Generic {
12
- type: 'splitColumn';
13
- raw: string;
14
- title: string;
15
- tokens: Array<Tokens.Generic>;
16
- variant?: SplitVariant;
17
- }
18
- /**
19
- * A processor that transforms `:::split` blocks into a two-column layout.
20
- * Each column may include a heading, a list, and an optional variant like `[!INFO]`.
21
- *
22
- * Supported variants: `primary`, `secondary`, `tertiary`, `info`, `warning`, `danger`, `error`, `success`, `highlight`, `neutral`.
23
- *
24
- * @example
25
- * ```markdown
26
- * ::: split
27
- * ::: left
28
- * [!INFO]
29
- * ### Advantages
30
- * - Easy integration
31
- * - Markdown based
32
- * ::: end-left
33
- *
34
- * ::: right
35
- * [!ERROR]
36
- * ### Disadvantages
37
- * - Requires a custom parser
38
- * - Not standardized
39
- * ::: end-right
40
- * ::: end-split
41
- * ```
42
- *
43
- * @public
44
- */
45
- export declare class SplitProcessor extends BaseProcessor {
46
- get extension(): TokenizerAndRendererExtension;
47
- }
48
- export {};
49
- //# sourceMappingURL=SplitProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SplitProcessor.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/SplitProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAA+B,6BAA6B,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhH,KAAK,YAAY,GAAK,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAQ3I,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,OAAO;IAC/C,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAkB,SAAQ,MAAM,CAAC,OAAO;IACrD,IAAI,EAAE,aAAa,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAE7C,IAAoB,SAAS,IAAI,6BAA6B,CAc7D;CAEJ"}
@@ -1,123 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- const KNOWN_VARIANTS = new Set([
3
- 'primary', 'secondary', 'tertiary',
4
- 'info', 'warning', 'danger', 'error',
5
- 'success', 'highlight', 'neutral'
6
- ]);
7
- /**
8
- * A processor that transforms `:::split` blocks into a two-column layout.
9
- * Each column may include a heading, a list, and an optional variant like `[!INFO]`.
10
- *
11
- * Supported variants: `primary`, `secondary`, `tertiary`, `info`, `warning`, `danger`, `error`, `success`, `highlight`, `neutral`.
12
- *
13
- * @example
14
- * ```markdown
15
- * ::: split
16
- * ::: left
17
- * [!INFO]
18
- * ### Advantages
19
- * - Easy integration
20
- * - Markdown based
21
- * ::: end-left
22
- *
23
- * ::: right
24
- * [!ERROR]
25
- * ### Disadvantages
26
- * - Requires a custom parser
27
- * - Not standardized
28
- * ::: end-right
29
- * ::: end-split
30
- * ```
31
- *
32
- * @public
33
- */
34
- export class SplitProcessor extends BaseProcessor {
35
- get extension() {
36
- return {
37
- name: 'split',
38
- level: 'block',
39
- start(src) {
40
- return (/^::: split/).exec(src)?.index;
41
- },
42
- tokenizer(src) {
43
- return SplitTokenizer.tokenize(src, this.lexer);
44
- },
45
- renderer(token) {
46
- return SplitRenderer.render(token, this.parser);
47
- }
48
- };
49
- }
50
- }
51
- /**
52
- * Tokenizer for the `:::split` block syntax.
53
- */
54
- class SplitTokenizer {
55
- static tokenize(src, lexer) {
56
- const match = (/^::: split\n([\s\S]+?)\n::: end-split/m).exec(src);
57
- if (!match) {
58
- return undefined;
59
- }
60
- return {
61
- type: 'split',
62
- raw: match[0],
63
- left: this.parseSection(match[1], 'left', lexer),
64
- right: this.parseSection(match[1], 'right', lexer)
65
- };
66
- }
67
- static parseSection(content, side, lexer) {
68
- const regex = new RegExp(`::: ${side}\\n([\\s\\S]+?)\\n::: end-${side}`, 'm');
69
- const sectionMatch = regex.exec(content);
70
- if (!sectionMatch) {
71
- return undefined;
72
- }
73
- const lines = sectionMatch[1].trim().split('\n');
74
- let variant = undefined;
75
- const variantMatch = (/^\[\!(\w+)\]/).exec(lines[0]);
76
- if (variantMatch) {
77
- const v = variantMatch[1].toLowerCase();
78
- if (KNOWN_VARIANTS.has(v)) {
79
- variant = v;
80
- }
81
- lines[0] = ''; // remove variant line
82
- }
83
- const contentLines = lines.filter(Boolean);
84
- const hasHeading = (/^#+\s/).test(contentLines[0]);
85
- const title = hasHeading ? contentLines[0].replace(/^#+\s*/, '') : '';
86
- const listStart = hasHeading ? 1 : 0;
87
- const xxx = contentLines
88
- .slice(listStart)
89
- .join('\n')
90
- .trim();
91
- const tokens = lexer.inlineTokens(xxx);
92
- return {
93
- type: 'splitColumn',
94
- raw: sectionMatch[0],
95
- title: title,
96
- tokens: tokens,
97
- variant: variant
98
- };
99
- }
100
- }
101
- /**
102
- * Renders the `split` token into two-column HTML layout.
103
- */
104
- class SplitRenderer {
105
- static render(token, parser) {
106
- const left = SplitRenderer.renderColumn(token.left, 'left', parser);
107
- const right = SplitRenderer.renderColumn(token.right, 'right', parser);
108
- return `<div class="split">${left}${right}</div>`;
109
- }
110
- static renderColumn(token, baseClass, parser) {
111
- if (!token) {
112
- return '';
113
- }
114
- const classes = [baseClass];
115
- if (token.variant) {
116
- classes.push(token.variant);
117
- }
118
- const heading = token.title ? `<h3>${token.title}</h3>` : '';
119
- const body = parser.parseInline(token.tokens);
120
- return `<div class="column ${classes.join(' ')}">${heading}${body}</div>`;
121
- }
122
- }
123
- //# sourceMappingURL=SplitProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SplitProcessor.js","sourceRoot":"","sources":["../../../src/Process/Processors/SplitProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- import type { Tokens, TokenizerAndRendererExtension } from 'marked';
3
- type TabVariant = 'primary' | 'secondary' | 'tertiary' | 'info' | 'warning' | 'danger' | 'error' | 'success' | 'highlight' | 'neutral';
4
- export interface ITabsToken extends Tokens.Generic {
5
- type: 'tabs';
6
- raw: string;
7
- tabs: Array<ITabToken>;
8
- }
9
- export interface ITabToken {
10
- id: string;
11
- title: string;
12
- content: string;
13
- variant?: TabVariant;
14
- }
15
- /**
16
- * A processor that transforms `:::tabs` blocks into tabbed layout structures.
17
- * Each tab may include a title, content, and an optional variant using `[!TYPE]`.
18
- *
19
- * Supported variants: `primary`, `secondary`, `tertiary`, `info`, `warning`, `danger`, `error`, `success`, `highlight`, `neutral`.
20
- *
21
- * @example
22
- * ```markdown
23
- * ::: tabs
24
- * ::: tab Tab 1
25
- * [!INFO]
26
- * Content for the first tab.
27
- * ::: end-tab
28
- *
29
- * ::: tab Tab 2
30
- * [!WARNING]
31
- * Content for the second tab.
32
- * ::: end-tab
33
- * ::: end-tabs
34
- * ```
35
- *
36
- * @public
37
- */
38
- export declare class TabProcessor extends BaseProcessor {
39
- get extension(): TokenizerAndRendererExtension;
40
- }
41
- export {};
42
- //# sourceMappingURL=TabProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabProcessor.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/TabProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAgB,MAAM,EAAE,6BAA6B,EAAE,MAAM,QAAQ,CAAC;AAElF,KAAK,UAAU,GAAK,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAQzI,MAAM,WAAW,UAAW,SAAQ,MAAM,CAAC,OAAO;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAE3C,IAAoB,SAAS,IAAI,6BAA6B,CAc7D;CAEJ"}
@@ -1,94 +0,0 @@
1
- import { BaseProcessor } from './Abstracts/BaseProcessor.js';
2
- const KNOWN_VARIANTS = new Set([
3
- 'primary', 'secondary', 'tertiary',
4
- 'info', 'warning', 'danger', 'error',
5
- 'success', 'highlight', 'neutral'
6
- ]);
7
- /**
8
- * A processor that transforms `:::tabs` blocks into tabbed layout structures.
9
- * Each tab may include a title, content, and an optional variant using `[!TYPE]`.
10
- *
11
- * Supported variants: `primary`, `secondary`, `tertiary`, `info`, `warning`, `danger`, `error`, `success`, `highlight`, `neutral`.
12
- *
13
- * @example
14
- * ```markdown
15
- * ::: tabs
16
- * ::: tab Tab 1
17
- * [!INFO]
18
- * Content for the first tab.
19
- * ::: end-tab
20
- *
21
- * ::: tab Tab 2
22
- * [!WARNING]
23
- * Content for the second tab.
24
- * ::: end-tab
25
- * ::: end-tabs
26
- * ```
27
- *
28
- * @public
29
- */
30
- export class TabProcessor extends BaseProcessor {
31
- get extension() {
32
- return {
33
- name: 'tabs',
34
- level: 'block',
35
- start(src) {
36
- return (/^::: tabs/).exec(src)?.index;
37
- },
38
- tokenizer(src) {
39
- return TabTokenizer.tokenize(src);
40
- },
41
- renderer(token) {
42
- return TabRenderer.render(token);
43
- }
44
- };
45
- }
46
- }
47
- class TabTokenizer {
48
- static tokenize(src) {
49
- const match = (/^::: tabs\n([\s\S]+?)\n::: end-tabs/m).exec(src);
50
- if (!match) {
51
- return undefined;
52
- }
53
- const tabRegex = /^::: tab (.+?)\n([\s\S]+?)\n::: end-tab/gm;
54
- const tabs = [];
55
- let tabMatch = null;
56
- let index = 0;
57
- while ((tabMatch = tabRegex.exec(match[1])) !== null) {
58
- const rawLines = tabMatch[2].trim().split('\n');
59
- let variant = undefined;
60
- const variantMatch = (/^\[\!(\w+)\]/).exec(rawLines[0]);
61
- if (variantMatch) {
62
- const v = variantMatch[1].toLowerCase();
63
- if (KNOWN_VARIANTS.has(v)) {
64
- variant = v;
65
- rawLines.shift(); // Remove variant line
66
- }
67
- }
68
- const content = rawLines.join('\n').trim();
69
- tabs.push({
70
- id: `tab-${index++}`,
71
- title: tabMatch[1].trim(),
72
- content,
73
- variant
74
- });
75
- }
76
- return {
77
- type: 'tabs',
78
- raw: match[0],
79
- tabs
80
- };
81
- }
82
- }
83
- class TabRenderer {
84
- static render(token) {
85
- const headers = token.tabs
86
- .map((tab) => `<li class="tab-item${tab.variant ? ` ${tab.variant}` : ''}" data-tab="${tab.id}">${tab.title}</li>`)
87
- .join('');
88
- const bodies = token.tabs
89
- .map((tab) => `<div class="tab-content${tab.variant ? ` ${tab.variant}` : ''}" id="${tab.id}">${tab.content}</div>`)
90
- .join('');
91
- return `<div class="tabs"><ul class="tab-list">${headers}</ul>${bodies}</div>`;
92
- }
93
- }
94
- //# sourceMappingURL=TabProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabProcessor.js","sourceRoot":"","sources":["../../../src/Process/Processors/TabProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { Tokens } from 'marked';
2
- export declare namespace TokenUtils {
3
- function setTokenMeta<T>(token: Tokens.Generic, meta: T): void;
4
- function getTokenMeta<T>(token: Tokens.Generic): T;
5
- }
6
- //# sourceMappingURL=Utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/Process/Processors/Utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIrC,yBAAiB,UAAU,CAAC;IAExB,SAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAEpE;IAED,SAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAExD;CAEJ"}
@@ -1,14 +0,0 @@
1
- // #region Imports
2
- // #endregion
3
- export var TokenUtils;
4
- (function (TokenUtils) {
5
- function setTokenMeta(token, meta) {
6
- Object.assign(token, { meta });
7
- }
8
- TokenUtils.setTokenMeta = setTokenMeta;
9
- function getTokenMeta(token) {
10
- return token.meta;
11
- }
12
- TokenUtils.getTokenMeta = getTokenMeta;
13
- })(TokenUtils || (TokenUtils = {}));
14
- //# sourceMappingURL=Utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../src/Process/Processors/Utils.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAIlB,aAAa;AAEb,MAAM,KAAW,UAAU,CAU1B;AAVD,WAAiB,UAAU;IAEvB,SAAgB,YAAY,CAAI,KAAqB,EAAE,IAAO;QAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAFe,uBAAY,eAE3B,CAAA;IAED,SAAgB,YAAY,CAAI,KAAqB;QACjD,OAAO,KAAK,CAAC,IAAS,CAAC;IAC3B,CAAC;IAFe,uBAAY,eAE3B,CAAA;AAEL,CAAC,EAVgB,UAAU,KAAV,UAAU,QAU1B"}