@mulmocast/slide 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +113 -0
  2. package/lib/actions/bundle.js +14 -20
  3. package/lib/actions/bundle.js.map +1 -1
  4. package/lib/actions/common.d.ts +1 -1
  5. package/lib/actions/common.d.ts.map +1 -1
  6. package/lib/actions/common.js +26 -66
  7. package/lib/actions/common.js.map +1 -1
  8. package/lib/actions/movie.js +14 -20
  9. package/lib/actions/movie.js.map +1 -1
  10. package/lib/actions/preview.d.ts.map +1 -1
  11. package/lib/actions/preview.js +20 -56
  12. package/lib/actions/preview.js.map +1 -1
  13. package/lib/actions/upload.d.ts.map +1 -1
  14. package/lib/actions/upload.js +5 -44
  15. package/lib/actions/upload.js.map +1 -1
  16. package/lib/cli.js +104 -71
  17. package/lib/cli.js.map +1 -1
  18. package/lib/convert/markdown-plugins/directive.d.ts +17 -0
  19. package/lib/convert/markdown-plugins/directive.d.ts.map +1 -0
  20. package/lib/convert/markdown-plugins/directive.js +27 -0
  21. package/lib/convert/markdown-plugins/directive.js.map +1 -0
  22. package/lib/convert/markdown-plugins/index.d.ts +51 -0
  23. package/lib/convert/markdown-plugins/index.d.ts.map +1 -0
  24. package/lib/convert/markdown-plugins/index.js +105 -0
  25. package/lib/convert/markdown-plugins/index.js.map +1 -0
  26. package/lib/convert/markdown-plugins/layout.d.ts +91 -0
  27. package/lib/convert/markdown-plugins/layout.d.ts.map +1 -0
  28. package/lib/convert/markdown-plugins/layout.js +251 -0
  29. package/lib/convert/markdown-plugins/layout.js.map +1 -0
  30. package/lib/convert/markdown-plugins/mermaid.d.ts +10 -0
  31. package/lib/convert/markdown-plugins/mermaid.d.ts.map +1 -0
  32. package/lib/convert/markdown-plugins/mermaid.js +100 -0
  33. package/lib/convert/markdown-plugins/mermaid.js.map +1 -0
  34. package/lib/convert/markdown-plugins/types.d.ts +45 -0
  35. package/lib/convert/markdown-plugins/types.d.ts.map +1 -0
  36. package/lib/convert/markdown-plugins/types.js +8 -0
  37. package/lib/convert/markdown-plugins/types.js.map +1 -0
  38. package/lib/convert/markdown-transform.d.ts +42 -0
  39. package/lib/convert/markdown-transform.d.ts.map +1 -0
  40. package/lib/convert/markdown-transform.js +58 -0
  41. package/lib/convert/markdown-transform.js.map +1 -0
  42. package/lib/convert/markdown-utils-common.d.ts +21 -0
  43. package/lib/convert/markdown-utils-common.d.ts.map +1 -0
  44. package/lib/convert/markdown-utils-common.js +51 -0
  45. package/lib/convert/markdown-utils-common.js.map +1 -0
  46. package/lib/convert/markdown-utils.d.ts +34 -0
  47. package/lib/convert/markdown-utils.d.ts.map +1 -0
  48. package/lib/convert/markdown-utils.js +55 -0
  49. package/lib/convert/markdown-utils.js.map +1 -0
  50. package/lib/convert/markdown.d.ts +15 -0
  51. package/lib/convert/markdown.d.ts.map +1 -0
  52. package/lib/convert/markdown.js +149 -0
  53. package/lib/convert/markdown.js.map +1 -0
  54. package/lib/convert/marp.d.ts +5 -5
  55. package/lib/convert/marp.d.ts.map +1 -1
  56. package/lib/convert/marp.js +24 -96
  57. package/lib/convert/marp.js.map +1 -1
  58. package/lib/convert/movie.d.ts +1 -1
  59. package/lib/convert/movie.d.ts.map +1 -1
  60. package/lib/convert/movie.js +33 -65
  61. package/lib/convert/movie.js.map +1 -1
  62. package/lib/convert/movie_bundle.d.ts.map +1 -1
  63. package/lib/convert/movie_bundle.js +5 -44
  64. package/lib/convert/movie_bundle.js.map +1 -1
  65. package/lib/convert/pdf.d.ts +1 -1
  66. package/lib/convert/pdf.d.ts.map +1 -1
  67. package/lib/convert/pdf.js +18 -56
  68. package/lib/convert/pdf.js.map +1 -1
  69. package/lib/convert/pptx.d.ts +1 -1
  70. package/lib/convert/pptx.d.ts.map +1 -1
  71. package/lib/convert/pptx.js +31 -68
  72. package/lib/convert/pptx.js.map +1 -1
  73. package/lib/index.browser.d.ts +13 -0
  74. package/lib/index.browser.d.ts.map +1 -0
  75. package/lib/index.browser.js +13 -0
  76. package/lib/index.browser.js.map +1 -0
  77. package/lib/index.common.d.ts +17 -0
  78. package/lib/index.common.d.ts.map +1 -0
  79. package/lib/index.common.js +18 -0
  80. package/lib/index.common.js.map +1 -0
  81. package/lib/index.node.d.ts +11 -0
  82. package/lib/index.node.d.ts.map +1 -0
  83. package/lib/index.node.js +13 -0
  84. package/lib/index.node.js.map +1 -0
  85. package/lib/utils/audio-save.d.ts +7 -6
  86. package/lib/utils/audio-save.d.ts.map +1 -1
  87. package/lib/utils/audio-save.js +20 -71
  88. package/lib/utils/audio-save.js.map +1 -1
  89. package/lib/utils/bundle-server.js +6 -45
  90. package/lib/utils/bundle-server.js.map +1 -1
  91. package/lib/utils/dependencies.js +6 -43
  92. package/lib/utils/dependencies.js.map +1 -1
  93. package/lib/utils/lang-common.d.ts +10 -0
  94. package/lib/utils/lang-common.d.ts.map +1 -0
  95. package/lib/utils/lang-common.js +11 -0
  96. package/lib/utils/lang-common.js.map +1 -0
  97. package/lib/utils/lang.d.ts +3 -4
  98. package/lib/utils/lang.d.ts.map +1 -1
  99. package/lib/utils/lang.js +11 -21
  100. package/lib/utils/lang.js.map +1 -1
  101. package/lib/utils/llm.d.ts +1 -1
  102. package/lib/utils/llm.d.ts.map +1 -1
  103. package/lib/utils/llm.js +6 -46
  104. package/lib/utils/llm.js.map +1 -1
  105. package/lib/utils/pdf.d.ts +1 -1
  106. package/lib/utils/pdf.d.ts.map +1 -1
  107. package/lib/utils/pdf.js +13 -52
  108. package/lib/utils/pdf.js.map +1 -1
  109. package/lib/vue/main.js +4 -9
  110. package/lib/vue/main.js.map +1 -1
  111. package/package.json +28 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/convert/markdown-plugins/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,SAAS,GACT,WAAW,GACX,WAAW,GACX,WAAW,GACX,aAAa,GACb,SAAS,GACT,YAAY,GACZ;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC;IAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;CAClF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Markdown Plugin System Types
3
+ *
4
+ * Built-in plugins for markdown conversion.
5
+ * HTML rendering is done by mulmocast, not here.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/convert/markdown-plugins/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Markdown to MulmoScript Pure Transform
3
+ *
4
+ * Browser-safe pure functions for converting markdown strings to MulmoScript JSON.
5
+ * No Node.js dependencies (no fs, path, process, franc).
6
+ */
7
+ import type { MulmoBeat } from "mulmocast";
8
+ import type { SupportedLang } from "../utils/lang-common.js";
9
+ import type { SeparatorMode } from "./markdown-plugins/types.js";
10
+ export interface MarkdownToMulmoScriptOptions {
11
+ lang?: SupportedLang;
12
+ separator?: SeparatorMode;
13
+ mermaid?: boolean;
14
+ directive?: boolean;
15
+ layout?: boolean;
16
+ style?: string;
17
+ }
18
+ export interface MulmoScriptData {
19
+ $mulmocast: {
20
+ version: string;
21
+ credit: string;
22
+ };
23
+ lang: SupportedLang;
24
+ beats: Partial<MulmoBeat>[];
25
+ }
26
+ export declare function slideToBeat(markdown: string, note: string, beat: Partial<MulmoBeat> | null, style?: string): Partial<MulmoBeat>;
27
+ export declare function slidesToMulmoScript(slides: {
28
+ markdown: string;
29
+ note: string;
30
+ beat: Partial<MulmoBeat> | null;
31
+ }[], lang: SupportedLang, style?: string): MulmoScriptData;
32
+ /**
33
+ * Convert markdown string to MulmoScript JSON (pure function, browser-safe).
34
+ *
35
+ * Unlike `convertMarkdown()`, this function:
36
+ * - Takes a markdown string (not a file path)
37
+ * - Does not perform file I/O
38
+ * - Does not call LLM for narration generation
39
+ * - Does not auto-detect language (requires explicit `lang` option, defaults to "en")
40
+ */
41
+ export declare function markdownToMulmoScript(content: string, options?: MarkdownToMulmoScriptOptions): MulmoScriptData;
42
+ //# sourceMappingURL=markdown-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-transform.d.ts","sourceRoot":"","sources":["../../src/convert/markdown-transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIjE,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;CAC7B;AAMD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,EAC/B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,CAYpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;CAAE,EAAE,EAC7E,IAAI,EAAE,aAAa,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,eAAe,CAMjB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,4BAA4B,GACrC,eAAe,CAiBjB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Markdown to MulmoScript Pure Transform
3
+ *
4
+ * Browser-safe pure functions for converting markdown strings to MulmoScript JSON.
5
+ * No Node.js dependencies (no fs, path, process, franc).
6
+ */
7
+ import { splitIntoSlides, processMarkdown } from "./markdown-plugins/index.js";
8
+ import { extractNotesFromSlide, extractMarkdownFromSlide } from "./markdown-utils-common.js";
9
+ // ============================================================================
10
+ // Beat Generation
11
+ // ============================================================================
12
+ export function slideToBeat(markdown, note, beat, style) {
13
+ if (beat?.image) {
14
+ return { text: ("text" in beat ? beat.text : undefined) || note, image: beat.image };
15
+ }
16
+ const markdownLines = extractMarkdownFromSlide(markdown);
17
+ return {
18
+ text: note,
19
+ image: style
20
+ ? { type: "markdown", markdown: markdownLines, style }
21
+ : { type: "markdown", markdown: markdownLines },
22
+ };
23
+ }
24
+ export function slidesToMulmoScript(slides, lang, style) {
25
+ return {
26
+ $mulmocast: { version: "1.1", credit: "closing" },
27
+ lang,
28
+ beats: slides.map((slide) => slideToBeat(slide.markdown, slide.note, slide.beat, style)),
29
+ };
30
+ }
31
+ // ============================================================================
32
+ // Main Pure Transform
33
+ // ============================================================================
34
+ /**
35
+ * Convert markdown string to MulmoScript JSON (pure function, browser-safe).
36
+ *
37
+ * Unlike `convertMarkdown()`, this function:
38
+ * - Takes a markdown string (not a file path)
39
+ * - Does not perform file I/O
40
+ * - Does not call LLM for narration generation
41
+ * - Does not auto-detect language (requires explicit `lang` option, defaults to "en")
42
+ */
43
+ export function markdownToMulmoScript(content, options) {
44
+ const separator = options?.separator ?? "horizontal-rule";
45
+ const lang = options?.lang ?? "en";
46
+ const rawSlides = splitIntoSlides(content, separator);
47
+ const slides = processMarkdown(rawSlides, {
48
+ mermaid: options?.mermaid,
49
+ directive: options?.directive,
50
+ layout: options?.layout,
51
+ }).map(({ markdown, beat }) => ({
52
+ markdown,
53
+ beat,
54
+ note: extractNotesFromSlide(markdown),
55
+ }));
56
+ return slidesToMulmoScript(slides, lang, options?.style);
57
+ }
58
+ //# sourceMappingURL=markdown-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-transform.js","sourceRoot":"","sources":["../../src/convert/markdown-transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAiB7F,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,IAAY,EACZ,IAA+B,EAC/B,KAAc;IAEd,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACvF,CAAC;IAED,MAAM,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAK;YACV,CAAC,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;YAC/D,CAAC,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAA6E,EAC7E,IAAmB,EACnB,KAAc;IAEd,OAAO;QACL,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;QACjD,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACzF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAe,EACf,OAAsC;IAEtC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,iBAAiB,CAAC;IAC1D,MAAM,IAAI,GAAkB,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IAElD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE;QACxC,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;KACxB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,QAAQ;QACR,IAAI;QACJ,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC;KACtC,CAAC,CAAC,CAAC;IAEJ,OAAO,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Markdown Converter Utilities (browser-safe)
3
+ *
4
+ * Pure functions for markdown processing with no Node.js dependencies.
5
+ */
6
+ /**
7
+ * Patterns to exclude from speaker notes
8
+ * Common code comments that should not be treated as narration
9
+ * Requires colon after keyword to avoid false positives (e.g., "Note 1" is OK)
10
+ */
11
+ export declare const EXCLUDED_NOTE_PATTERNS: RegExp[];
12
+ /**
13
+ * Extract speaker notes from HTML comments in a slide
14
+ * Excludes directive-like comments and common code comments (TODO, FIXME, etc.)
15
+ */
16
+ export declare function extractNotesFromSlide(slideContent: string): string;
17
+ /**
18
+ * Extract markdown content from a slide (removes HTML comments)
19
+ */
20
+ export declare function extractMarkdownFromSlide(slideContent: string): string[];
21
+ //# sourceMappingURL=markdown-utils-common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-utils-common.d.ts","sourceRoot":"","sources":["../../src/convert/markdown-utils-common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAUlC,CAAC;AASF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOlE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvE"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Markdown Converter Utilities (browser-safe)
3
+ *
4
+ * Pure functions for markdown processing with no Node.js dependencies.
5
+ */
6
+ // ============================================================================
7
+ // Constants
8
+ // ============================================================================
9
+ /**
10
+ * Patterns to exclude from speaker notes
11
+ * Common code comments that should not be treated as narration
12
+ * Requires colon after keyword to avoid false positives (e.g., "Note 1" is OK)
13
+ */
14
+ export const EXCLUDED_NOTE_PATTERNS = [
15
+ /^TODO:/i,
16
+ /^FIXME:/i,
17
+ /^HACK:/i,
18
+ /^XXX:/i,
19
+ /^NOTE:/i,
20
+ /^BUG:/i,
21
+ /^WARN(ING)?:/i,
22
+ /^DEPRECATED:/i,
23
+ /^REVIEW:/i,
24
+ ];
25
+ // ============================================================================
26
+ // Speaker Notes Extraction
27
+ // ============================================================================
28
+ const isExcludedComment = (comment) => EXCLUDED_NOTE_PATTERNS.some((pattern) => pattern.test(comment));
29
+ /**
30
+ * Extract speaker notes from HTML comments in a slide
31
+ * Excludes directive-like comments and common code comments (TODO, FIXME, etc.)
32
+ */
33
+ export function extractNotesFromSlide(slideContent) {
34
+ const commentRegex = /<!--\s*([\s\S]*?)\s*-->/g;
35
+ return [...slideContent.matchAll(commentRegex)]
36
+ .map((m) => m[1].trim())
37
+ .filter((comment) => comment.length > 0)
38
+ .filter((comment) => !isExcludedComment(comment))
39
+ .join("\n");
40
+ }
41
+ /**
42
+ * Extract markdown content from a slide (removes HTML comments)
43
+ */
44
+ export function extractMarkdownFromSlide(slideContent) {
45
+ const slideWithoutNotes = slideContent.replace(/<!--\s*[\s\S]*?\s*-->/g, "");
46
+ return slideWithoutNotes
47
+ .split("\n")
48
+ .map((line) => line.trim())
49
+ .filter((line) => line.length > 0);
50
+ }
51
+ //# sourceMappingURL=markdown-utils-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-utils-common.js","sourceRoot":"","sources":["../../src/convert/markdown-utils-common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,eAAe;IACf,eAAe;IACf,WAAW;CACZ,CAAC;AAEF,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAW,EAAE,CACrD,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAChD,OAAO,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACvB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SACvC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SAChD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,YAAoB;IAC3D,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC7E,OAAO,iBAAiB;SACrB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Markdown Converter Utilities
3
+ *
4
+ * Types, constants, and helper functions for markdown conversion.
5
+ */
6
+ import { type MulmoBeat } from "mulmocast";
7
+ import type { SupportedLang } from "../utils/lang.js";
8
+ import type { SeparatorMode } from "./markdown-plugins/index.js";
9
+ export { EXCLUDED_NOTE_PATTERNS, extractNotesFromSlide, extractMarkdownFromSlide, } from "./markdown-utils-common.js";
10
+ export interface Slide {
11
+ markdown: string;
12
+ beat: Partial<MulmoBeat> | null;
13
+ note: string;
14
+ }
15
+ export interface ConvertMarkdownOptions {
16
+ inputPath: string;
17
+ outputDir?: string;
18
+ lang?: SupportedLang;
19
+ generateText?: boolean;
20
+ separator?: SeparatorMode;
21
+ mermaid?: boolean;
22
+ directive?: boolean;
23
+ layout?: boolean;
24
+ style?: string;
25
+ }
26
+ export interface ConvertMarkdownResult {
27
+ mulmoScriptPath: string;
28
+ slideCount: number;
29
+ }
30
+ export declare const SEPARATOR_CHOICES: readonly ["horizontal-rule", "heading", "heading-1", "heading-2", "heading-3", "blank-lines", "comment", "page-break"];
31
+ export declare function readMarkdownFile(inputPath: string): string;
32
+ export declare function setupOutputDirectory(basename: string, customOutputDir?: string): string;
33
+ export declare function writeMulmoScript(outputFolder: string, data: unknown): string;
34
+ //# sourceMappingURL=markdown-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-utils.d.ts","sourceRoot":"","sources":["../../src/convert/markdown-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAMpC,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,eAAO,MAAM,iBAAiB,wHASpB,CAAC;AAMX,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAQvF;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAW5E"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Markdown Converter Utilities
3
+ *
4
+ * Types, constants, and helper functions for markdown conversion.
5
+ */
6
+ import * as fs from "fs";
7
+ import * as path from "path";
8
+ import { mulmoScriptSchema } from "mulmocast";
9
+ // Re-export browser-safe utilities
10
+ export { EXCLUDED_NOTE_PATTERNS, extractNotesFromSlide, extractMarkdownFromSlide, } from "./markdown-utils-common.js";
11
+ // ============================================================================
12
+ // Constants
13
+ // ============================================================================
14
+ export const SEPARATOR_CHOICES = [
15
+ "horizontal-rule",
16
+ "heading",
17
+ "heading-1",
18
+ "heading-2",
19
+ "heading-3",
20
+ "blank-lines",
21
+ "comment",
22
+ "page-break",
23
+ ];
24
+ // ============================================================================
25
+ // File I/O
26
+ // ============================================================================
27
+ export function readMarkdownFile(inputPath) {
28
+ const resolvedPath = path.resolve(inputPath);
29
+ if (!fs.existsSync(resolvedPath)) {
30
+ throw new Error(`File not found: ${resolvedPath}`);
31
+ }
32
+ if (!resolvedPath.endsWith(".md")) {
33
+ throw new Error("Input file must be a .md (Markdown) file");
34
+ }
35
+ return fs.readFileSync(resolvedPath, "utf-8");
36
+ }
37
+ export function setupOutputDirectory(basename, customOutputDir) {
38
+ const outputFolder = customOutputDir || path.join(process.cwd(), "scripts", basename);
39
+ if (!fs.existsSync(outputFolder)) {
40
+ fs.mkdirSync(outputFolder, { recursive: true });
41
+ }
42
+ return outputFolder;
43
+ }
44
+ export function writeMulmoScript(outputFolder, data) {
45
+ const result = mulmoScriptSchema.safeParse(data);
46
+ if (!result.success) {
47
+ console.error("MulmoScript validation failed:");
48
+ console.error(result.error.format());
49
+ throw new Error("Invalid MulmoScript generated");
50
+ }
51
+ const scriptPath = path.join(outputFolder, "mulmo_script.json");
52
+ fs.writeFileSync(scriptPath, JSON.stringify(result.data, null, 2), "utf-8");
53
+ return scriptPath;
54
+ }
55
+ //# sourceMappingURL=markdown-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-utils.js","sourceRoot":"","sources":["../../src/convert/markdown-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAkB,MAAM,WAAW,CAAC;AAI9D,mCAAmC;AACnC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AA6BpC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,iBAAiB;IACjB,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;IACb,SAAS;IACT,YAAY;CACJ,CAAC;AAEX,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,eAAwB;IAC7E,MAAM,YAAY,GAAG,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEtF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,IAAa;IAClE,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAChE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Markdown to MulmoScript converter
4
+ *
5
+ * Converts plain markdown files to MulmoScript format.
6
+ * Supports multiple separator modes and plugin system.
7
+ */
8
+ import { type ConvertMarkdownOptions, type ConvertMarkdownResult, extractNotesFromSlide, extractMarkdownFromSlide } from "./markdown-utils.js";
9
+ export type { ConvertMarkdownOptions, ConvertMarkdownResult };
10
+ export { extractNotesFromSlide, extractMarkdownFromSlide };
11
+ /**
12
+ * Convert markdown file to MulmoScript
13
+ */
14
+ export declare function convertMarkdown(options: ConvertMarkdownOptions): Promise<ConvertMarkdownResult>;
15
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/convert/markdown.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAQH,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE1B,qBAAqB,EACrB,wBAAwB,EAIzB,MAAM,qBAAqB,CAAC;AAI7B,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;AAE3D;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA2EhC"}
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Markdown to MulmoScript converter
4
+ *
5
+ * Converts plain markdown files to MulmoScript format.
6
+ * Supports multiple separator modes and plugin system.
7
+ */
8
+ import * as path from "path";
9
+ import yargs from "yargs";
10
+ import { hideBin } from "yargs/helpers";
11
+ import { resolveLang, langOption } from "../utils/lang.js";
12
+ import { generateTextFromMarkdown } from "../utils/llm.js";
13
+ import { splitIntoSlides, processMarkdown } from "./markdown-plugins/index.js";
14
+ import { SEPARATOR_CHOICES, extractNotesFromSlide, extractMarkdownFromSlide, readMarkdownFile, setupOutputDirectory, writeMulmoScript, } from "./markdown-utils.js";
15
+ import { slidesToMulmoScript } from "./markdown-transform.js";
16
+ export { extractNotesFromSlide, extractMarkdownFromSlide };
17
+ /**
18
+ * Convert markdown file to MulmoScript
19
+ */
20
+ export async function convertMarkdown(options) {
21
+ const inputPath = path.resolve(options.inputPath);
22
+ const separator = options.separator ?? "horizontal-rule";
23
+ console.log("Starting Markdown to MulmoScript conversion...\n");
24
+ console.log(`Input file: ${inputPath}`);
25
+ console.log(`Separator: ${typeof separator === "string" ? separator : "custom pattern"}`);
26
+ // Setup
27
+ const basename = path.basename(inputPath, ".md");
28
+ const outputFolder = setupOutputDirectory(basename, options.outputDir);
29
+ console.log(`Output directory: ${outputFolder}`);
30
+ // Read and split into slides
31
+ const content = readMarkdownFile(inputPath);
32
+ const rawSlides = splitIntoSlides(content, separator);
33
+ console.log(`Found ${rawSlides.length} slides`);
34
+ // Log enabled plugins
35
+ const enabledPlugins = [
36
+ options.mermaid && "mermaid",
37
+ options.directive && "directive",
38
+ options.layout && "layout",
39
+ ].filter(Boolean);
40
+ if (enabledPlugins.length > 0) {
41
+ console.log(`Applying plugins: ${enabledPlugins.join(", ")}`);
42
+ }
43
+ // Process slides: apply plugins and extract notes
44
+ const slides = processMarkdown(rawSlides, {
45
+ mermaid: options.mermaid,
46
+ directive: options.directive,
47
+ layout: options.layout,
48
+ }).map(({ markdown, beat }) => ({
49
+ markdown,
50
+ beat,
51
+ note: extractNotesFromSlide(markdown),
52
+ }));
53
+ // Resolve language
54
+ const lang = resolveLang(options.lang, slides.map((slide) => slide.note));
55
+ // Generate narration text with LLM if requested
56
+ if (options.generateText) {
57
+ console.log("Generating narration text with LLM...");
58
+ const slideData = slides.map((slide, index) => ({
59
+ index,
60
+ markdown: extractMarkdownFromSlide(slide.markdown),
61
+ existingText: slide.note,
62
+ }));
63
+ const generatedTexts = await generateTextFromMarkdown({
64
+ slides: slideData,
65
+ lang,
66
+ title: basename,
67
+ });
68
+ generatedTexts.forEach((generated) => {
69
+ slides[generated.index].note = generated.text;
70
+ });
71
+ console.log(`Generated text for ${generatedTexts.length} slides`);
72
+ }
73
+ // Generate and write MulmoScript
74
+ console.log("Generating MulmoScript JSON...");
75
+ const mulmoScript = slidesToMulmoScript(slides, lang, options.style);
76
+ const mulmoScriptPath = writeMulmoScript(outputFolder, mulmoScript);
77
+ console.log(`✓ Created ${mulmoScriptPath}`);
78
+ console.log(`\n✓ Successfully converted ${slides.length} slides to MulmoScript`);
79
+ return { mulmoScriptPath, slideCount: slides.length };
80
+ }
81
+ // ============================================================================
82
+ // CLI
83
+ // ============================================================================
84
+ async function main() {
85
+ const argv = await yargs(hideBin(process.argv))
86
+ .usage("Usage: $0 <markdown-file.md> [options]")
87
+ .command("$0 <file>", "Convert Markdown to MulmoScript", (yargs) => {
88
+ return yargs.positional("file", {
89
+ describe: "Markdown file to convert",
90
+ type: "string",
91
+ demandOption: true,
92
+ });
93
+ })
94
+ .options({
95
+ ...langOption,
96
+ g: {
97
+ alias: "generate-text",
98
+ type: "boolean",
99
+ description: "Generate narration text using LLM",
100
+ default: false,
101
+ },
102
+ s: {
103
+ alias: "separator",
104
+ type: "string",
105
+ description: "Slide separator mode",
106
+ choices: SEPARATOR_CHOICES,
107
+ default: "horizontal-rule",
108
+ },
109
+ mermaid: {
110
+ type: "boolean",
111
+ description: "Convert mermaid code blocks to mermaid beat type",
112
+ default: false,
113
+ },
114
+ directive: {
115
+ type: "boolean",
116
+ description: "Remove Marp-style directives (<!-- _class: ... -->)",
117
+ default: false,
118
+ },
119
+ layout: {
120
+ type: "boolean",
121
+ description: "Auto-detect layout based on content (row-2, 2x2)",
122
+ default: false,
123
+ },
124
+ style: {
125
+ type: "string",
126
+ description: "Markdown slide style (e.g., corporate-blue, finance-green)",
127
+ },
128
+ })
129
+ .help()
130
+ .parse();
131
+ await convertMarkdown({
132
+ inputPath: argv.file,
133
+ lang: argv.l,
134
+ generateText: argv.g,
135
+ separator: argv.s,
136
+ mermaid: argv.mermaid,
137
+ directive: argv.directive,
138
+ layout: argv.layout,
139
+ style: argv.style,
140
+ });
141
+ }
142
+ const isDirectRun = process.argv[1]?.endsWith("markdown.ts") || process.argv[1]?.endsWith("markdown.js");
143
+ if (isDirectRun) {
144
+ main().catch((error) => {
145
+ console.error("\n✗ Error:", error instanceof Error ? error.message : String(error));
146
+ process.exit(1);
147
+ });
148
+ }
149
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/convert/markdown.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env tsx
2
- import { type SupportedLang } from "../utils/lang";
2
+ import { type SupportedLang } from "../utils/lang.js";
3
+ import { extractNotesFromSlide, extractMarkdownFromSlide } from "./markdown-utils-common.js";
4
+ export { extractNotesFromSlide, extractMarkdownFromSlide };
3
5
  export interface ConvertMarpOptions {
4
6
  inputPath: string;
5
7
  outputDir?: string;
@@ -14,9 +16,7 @@ export interface ConvertMarpResult {
14
16
  slideCount: number;
15
17
  }
16
18
  export declare function parseSlides(content: string): string[];
17
- export declare function extractNotesFromSlide(slideContent: string): string;
18
- export declare function extractNotesFromSlides(slides: string[]): string[];
19
- export declare function extractMarkdownFromSlide(slideContent: string): string[];
20
- export declare function extractMarkdownFromSlides(slides: string[]): string[][];
19
+ export declare const extractNotesFromSlides: (slides: string[]) => string[];
20
+ export declare const extractMarkdownFromSlides: (slides: string[]) => string[][];
21
21
  export declare function convertMarp(options: ConvertMarpOptions): Promise<ConvertMarpResult>;
22
22
  //# sourceMappingURL=marp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"marp.d.ts","sourceRoot":"","sources":["../../src/convert/marp.ts"],"names":[],"mappings":";AAWA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD;AAGD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIlE;AAGD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CASjE;AAGD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAWvE;AAGD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAQtE;AAyMD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8FzF"}
1
+ {"version":3,"file":"marp.d.ts","sourceRoot":"","sources":["../../src/convert/marp.ts"],"names":[],"mappings":";AAWA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG7F,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD;AAED,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,EAAE,KAAG,MAAM,EAC7B,CAAC;AAEpC,eAAO,MAAM,yBAAyB,GAAI,QAAQ,MAAM,EAAE,KAAG,MAAM,EAAE,EAC/B,CAAC;AAyMvC,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8FzF"}