@bendyline/squisq 1.2.1 → 1.3.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 (85) hide show
  1. package/dist/{Doc-Dwn5aHFC.d.ts → Doc-Ch4tc3vv.d.ts} +35 -4
  2. package/dist/__tests__/coverBlock.test.d.ts +2 -0
  3. package/dist/__tests__/coverBlock.test.d.ts.map +1 -0
  4. package/dist/__tests__/coverBlock.test.js +197 -0
  5. package/dist/__tests__/coverBlock.test.js.map +1 -0
  6. package/dist/__tests__/markdown.test.js +61 -0
  7. package/dist/__tests__/markdown.test.js.map +1 -1
  8. package/dist/__tests__/markdownToDoc.test.js +59 -0
  9. package/dist/__tests__/markdownToDoc.test.js.map +1 -1
  10. package/dist/__tests__/surface.test.d.ts +2 -0
  11. package/dist/__tests__/surface.test.d.ts.map +1 -0
  12. package/dist/__tests__/surface.test.js +57 -0
  13. package/dist/__tests__/surface.test.js.map +1 -0
  14. package/dist/{chunk-T6WBC3ND.js → chunk-6BAVXFYC.js} +137 -53
  15. package/dist/chunk-6BAVXFYC.js.map +1 -0
  16. package/dist/{chunk-QWVRN6I4.js → chunk-7GF6RDED.js} +3 -2
  17. package/dist/chunk-7GF6RDED.js.map +1 -0
  18. package/dist/{chunk-4CRBS35L.js → chunk-CYQHG27J.js} +7 -2
  19. package/dist/chunk-CYQHG27J.js.map +1 -0
  20. package/dist/{chunk-KEFWM2VC.js → chunk-F22AE6BY.js} +31 -2
  21. package/dist/chunk-F22AE6BY.js.map +1 -0
  22. package/dist/{chunk-TVPKD76V.js → chunk-FIQR4AJG.js} +50 -4
  23. package/dist/chunk-FIQR4AJG.js.map +1 -0
  24. package/dist/{chunk-NJLL5XYC.js → chunk-OASJKWO5.js} +76 -13
  25. package/dist/chunk-OASJKWO5.js.map +1 -0
  26. package/dist/doc/audioMapping.d.ts.map +1 -1
  27. package/dist/doc/audioMapping.js +41 -5
  28. package/dist/doc/audioMapping.js.map +1 -1
  29. package/dist/doc/markdownToDoc.d.ts +7 -0
  30. package/dist/doc/markdownToDoc.d.ts.map +1 -1
  31. package/dist/doc/markdownToDoc.js +49 -1
  32. package/dist/doc/markdownToDoc.js.map +1 -1
  33. package/dist/doc/templates/coverBlock.d.ts +2 -2
  34. package/dist/doc/templates/coverBlock.d.ts.map +1 -1
  35. package/dist/doc/templates/coverBlock.js +58 -33
  36. package/dist/doc/templates/coverBlock.js.map +1 -1
  37. package/dist/markdown/convert.d.ts.map +1 -1
  38. package/dist/markdown/convert.js +101 -11
  39. package/dist/markdown/convert.js.map +1 -1
  40. package/dist/markdown/index.d.ts +1 -1
  41. package/dist/markdown/index.d.ts.map +1 -1
  42. package/dist/markdown/index.js.map +1 -1
  43. package/dist/markdown/types.d.ts +19 -1
  44. package/dist/markdown/types.d.ts.map +1 -1
  45. package/dist/markdown/utils.d.ts.map +1 -1
  46. package/dist/markdown/utils.js +5 -1
  47. package/dist/markdown/utils.js.map +1 -1
  48. package/dist/schemas/Doc.d.ts +2 -2
  49. package/dist/schemas/Doc.d.ts.map +1 -1
  50. package/dist/schemas/Theme.d.ts +31 -0
  51. package/dist/schemas/Theme.d.ts.map +1 -1
  52. package/dist/schemas/Theme.js +35 -0
  53. package/dist/schemas/Theme.js.map +1 -1
  54. package/dist/schemas/themeLibrary.d.ts.map +1 -1
  55. package/dist/schemas/themeLibrary.js +68 -2
  56. package/dist/schemas/themeLibrary.js.map +1 -1
  57. package/dist/storage/ContentContainer.d.ts.map +1 -1
  58. package/dist/storage/ContentContainer.js +10 -1
  59. package/dist/storage/ContentContainer.js.map +1 -1
  60. package/dist/story/index.d.ts +13 -6
  61. package/dist/story/index.js +3 -3
  62. package/dist/{themeLibrary-DLJtGh8-.d.ts → themeLibrary-CEo2D4b6.d.ts} +1 -1
  63. package/dist/{types-DYAzisMG.d.ts → types-CkNttVSF.d.ts} +20 -2
  64. package/package.json +1 -1
  65. package/src/__tests__/coverBlock.test.ts +234 -0
  66. package/src/__tests__/markdown.test.ts +66 -0
  67. package/src/__tests__/markdownToDoc.test.ts +80 -0
  68. package/src/__tests__/surface.test.ts +68 -0
  69. package/src/doc/audioMapping.ts +43 -5
  70. package/src/doc/markdownToDoc.ts +74 -3
  71. package/src/doc/templates/coverBlock.ts +77 -47
  72. package/src/markdown/convert.ts +104 -11
  73. package/src/markdown/index.ts +1 -0
  74. package/src/markdown/types.ts +21 -1
  75. package/src/markdown/utils.ts +5 -1
  76. package/src/schemas/Doc.ts +2 -2
  77. package/src/schemas/Theme.ts +62 -0
  78. package/src/schemas/themeLibrary.ts +74 -2
  79. package/src/storage/ContentContainer.ts +9 -1
  80. package/dist/chunk-4CRBS35L.js.map +0 -1
  81. package/dist/chunk-KEFWM2VC.js.map +0 -1
  82. package/dist/chunk-NJLL5XYC.js.map +0 -1
  83. package/dist/chunk-QWVRN6I4.js.map +0 -1
  84. package/dist/chunk-T6WBC3ND.js.map +0 -1
  85. package/dist/chunk-TVPKD76V.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/markdown/parse.ts","../src/markdown/htmlParse.ts","../src/markdown/convert.ts","../src/markdown/stringify.ts"],"sourcesContent":["/**\n * Markdown → JSON Parser\n *\n * Parses a markdown string into a MarkdownDocument JSON structure\n * using the unified/remark ecosystem with GFM, math, and directive extensions.\n */\n\nimport { unified } from 'unified';\nimport remarkParse from 'remark-parse';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport remarkDirective from 'remark-directive';\nimport remarkFrontmatter from 'remark-frontmatter';\nimport type { MarkdownDocument, ParseOptions } from './types.js';\nimport { fromMdast } from './convert.js';\nimport { parseFrontmatter } from './utils.js';\n\n// Cache the default processor (all extensions enabled) to avoid rebuilding on every call.\nlet defaultProcessor: any;\n\n/**\n * Parse a markdown string into a MarkdownDocument.\n *\n * All extensions (GFM, math, directives) are enabled by default.\n * Use the `options` parameter to disable specific extensions.\n *\n * @param markdown - The markdown source text\n * @param options - Parser options (extensions, HTML parsing)\n * @returns A MarkdownDocument representing the parsed markdown\n *\n * @example\n * ```ts\n * const doc = parseMarkdown('# Hello\\n\\nWorld **bold** and *italic*');\n * // doc.type === 'document'\n * // doc.children[0].type === 'heading'\n * // doc.children[1].type === 'paragraph'\n * ```\n */\nexport function parseMarkdown(markdown: string, options?: ParseOptions): MarkdownDocument {\n // Use cached default processor when all extensions are enabled (the common case).\n const useDefaults =\n !options ||\n (options.gfm !== false &&\n options.math !== false &&\n options.directive !== false &&\n options.frontmatter !== false);\n\n let processor: any;\n\n if (useDefaults) {\n if (!defaultProcessor) {\n defaultProcessor = unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkMath)\n .use(remarkDirective)\n .use(remarkFrontmatter, ['yaml']);\n }\n processor = defaultProcessor;\n } else {\n // Build a custom processor with requested extensions.\n // unified's .use() chaining changes the generic signature each time,\n // making strict typing impractical — use a widened Processor type.\n processor = unified().use(remarkParse);\n\n if (options?.gfm !== false) {\n processor = processor.use(remarkGfm);\n }\n if (options?.math !== false) {\n processor = processor.use(remarkMath);\n }\n if (options?.directive !== false) {\n processor = processor.use(remarkDirective);\n }\n if (options?.frontmatter !== false) {\n processor = processor.use(remarkFrontmatter, ['yaml']);\n }\n }\n\n // Parse markdown → mdast tree (result is an mdast Root node)\n const mdastTree = processor.parse(markdown) as {\n type: string;\n children?: Array<{ type: string; value?: string }>;\n };\n\n // Convert mdast → MarkdownDocument\n const doc = fromMdast(mdastTree as Parameters<typeof fromMdast>[0], {\n parseHtml: options?.parseHtml,\n });\n\n // Extract YAML frontmatter if present\n if (options?.frontmatter !== false) {\n const yamlNode = mdastTree.children?.find((n) => n.type === 'yaml');\n if (yamlNode?.value) {\n const fm = parseFrontmatter(yamlNode.value);\n if (fm && Object.keys(fm).length > 0) {\n doc.frontmatter = fm;\n }\n }\n }\n\n return doc;\n}\n","/**\n * HTML ↔ HtmlNode Conversion\n *\n * Parses raw HTML strings into the squisq HtmlNode tree representation\n * using hast-util-from-html (parse5-backed), and serializes HtmlNode trees\n * back to HTML strings with a lightweight custom serializer.\n */\n\nimport { fromHtml } from 'hast-util-from-html';\nimport type { HtmlNode } from './types.js';\n\n// ============================================\n// Hast → HtmlNode conversion\n// ============================================\n\n/**\n * Mapping from hast DOM-style property names to HTML attribute names.\n * Only includes names where the property and attribute differ.\n */\nconst HAST_PROP_TO_ATTR: Record<string, string> = {\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n acceptCharset: 'accept-charset',\n};\n\n/** HTML void elements that are self-closing. */\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\n/**\n * Convert a hast property name to an HTML attribute name.\n */\nfunction propertyToAttribute(prop: string): string {\n if (HAST_PROP_TO_ATTR[prop]) return HAST_PROP_TO_ATTR[prop];\n\n // data-* attributes: dataFooBar → data-foo-bar\n if (prop.length > 4 && prop.startsWith('data') && prop[4] >= 'A' && prop[4] <= 'Z') {\n return (\n 'data-' +\n prop\n .slice(4)\n .replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())\n .replace(/^-/, '')\n );\n }\n\n // aria-* attributes: ariaLabel → aria-label\n if (prop.length > 4 && prop.startsWith('aria') && prop[4] >= 'A' && prop[4] <= 'Z') {\n return (\n 'aria-' +\n prop\n .slice(4)\n .replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())\n .replace(/^-/, '')\n );\n }\n\n // Most HTML attributes are lowercase (tabIndex → tabindex, readOnly → readonly, etc.)\n return prop.toLowerCase();\n}\n\n/**\n * Convert hast element properties to a flat HTML attribute map.\n */\nfunction convertHastProperties(properties: Record<string, unknown>): Record<string, string> {\n const attrs: Record<string, string> = {};\n for (const [key, value] of Object.entries(properties)) {\n if (value === false || value === undefined || value === null) continue;\n\n const attrName = propertyToAttribute(key);\n\n if (value === true) {\n attrs[attrName] = '';\n } else if (Array.isArray(value)) {\n attrs[attrName] = value.join(' ');\n } else {\n attrs[attrName] = String(value);\n }\n }\n return attrs;\n}\n\n/**\n * Recursively convert hast child nodes to HtmlNode[].\n */\nfunction hastChildrenToNodes(children: unknown[]): HtmlNode[] {\n const result: HtmlNode[] = [];\n for (const child of children) {\n const node = hastNodeToHtmlNode(child as Record<string, unknown>);\n if (node) result.push(node);\n }\n return result;\n}\n\n/**\n * Convert a single hast node to an HtmlNode.\n */\nfunction hastNodeToHtmlNode(node: Record<string, unknown>): HtmlNode | null {\n switch (node.type) {\n case 'element': {\n const tagName = node.tagName as string;\n const properties = (node.properties ?? {}) as Record<string, unknown>;\n const children = (node.children ?? []) as unknown[];\n return {\n type: 'htmlElement',\n tagName,\n attributes: convertHastProperties(properties),\n children: hastChildrenToNodes(children),\n selfClosing: VOID_ELEMENTS.has(tagName) && children.length === 0,\n };\n }\n case 'text':\n return {\n type: 'htmlText',\n value: node.value as string,\n };\n case 'comment':\n return {\n type: 'htmlComment',\n value: node.value as string,\n };\n case 'doctype':\n // Doctype nodes are rare in markdown HTML; skip them\n return null;\n default:\n return null;\n }\n}\n\n// ============================================\n// Public API\n// ============================================\n\n/**\n * Parse a raw HTML string into an HtmlNode[] tree.\n *\n * Uses the HTML5 parsing algorithm (via parse5) for correct handling of\n * self-closing tags, optional end tags, entity decoding, etc.\n *\n * @param html - Raw HTML string to parse\n * @returns Array of top-level HtmlNode elements\n */\nexport function parseHtmlToNodes(html: string): HtmlNode[] {\n if (!html || !html.trim()) return [];\n\n try {\n const tree = fromHtml(html, { fragment: true });\n return hastChildrenToNodes(tree.children as unknown[]);\n } catch {\n // If parsing fails, return the raw text as a single text node\n return [{ type: 'htmlText', value: html }];\n }\n}\n\n/**\n * Escape special characters in HTML attribute values.\n */\nfunction escapeHtmlAttr(value: string): string {\n return value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\n/**\n * Serialize an HtmlNode back to an HTML string.\n */\nfunction stringifyNode(node: HtmlNode): string {\n switch (node.type) {\n case 'htmlElement': {\n const attrs = Object.entries(node.attributes)\n .map(([k, v]) => (v === '' ? k : `${k}=\"${escapeHtmlAttr(v)}\"`))\n .join(' ');\n const open = attrs ? `<${node.tagName} ${attrs}>` : `<${node.tagName}>`;\n\n if (node.selfClosing) return open;\n\n const inner = node.children.map(stringifyNode).join('');\n return `${open}${inner}</${node.tagName}>`;\n }\n case 'htmlText':\n return node.value;\n case 'htmlComment':\n return `<!--${node.value}-->`;\n }\n}\n\n/**\n * Serialize an HtmlNode[] tree back to an HTML string.\n *\n * @param nodes - Array of HtmlNode elements to serialize\n * @returns HTML string\n */\nexport function stringifyHtmlNodes(nodes: HtmlNode[]): string {\n return nodes.map(stringifyNode).join('');\n}\n","/**\n * mdast ↔ Squisq Markdown Node Conversion\n *\n * Converts between the remark/mdast AST format and the squisq\n * MarkdownDocument JSON format. This is the bridge layer that allows\n * us to use the battle-tested unified/remark ecosystem for parsing\n * and serialization while exposing our own clean, well-typed interfaces.\n *\n * The conversion is designed for perfect round-tripping:\n * toMdast(fromMdast(tree)) should produce an equivalent mdast tree.\n */\n\nimport type {\n MarkdownDocument,\n MarkdownBlockNode,\n MarkdownInlineNode,\n MarkdownListItem,\n MarkdownTableRow,\n MarkdownTableCell,\n MarkdownSourcePosition,\n HeadingTemplateAnnotation,\n MarkdownHeading,\n} from './types.js';\nimport { parseHtmlToNodes } from './htmlParse.js';\n\n// ============================================\n// Generic mdast node shape\n// ============================================\n\n/**\n * Minimal interface for mdast/unist nodes.\n * Using a generic shape avoids hard dependency on @types/mdast\n * and handles extension nodes (GFM, math, directive) uniformly.\n */\ninterface MdastPosition {\n start: { line: number; column: number; offset?: number };\n end: { line: number; column: number; offset?: number };\n}\n\ninterface MdastNode {\n type: string;\n position?: MdastPosition;\n children?: MdastNode[];\n value?: string;\n depth?: number;\n ordered?: boolean | null;\n start?: number | null;\n spread?: boolean | null;\n checked?: boolean | null;\n lang?: string | null;\n meta?: string | null;\n url?: string;\n title?: string | null;\n alt?: string;\n identifier?: string;\n label?: string;\n referenceType?: string;\n align?: (string | null)[];\n name?: string;\n attributes?: Record<string, string>;\n data?: Record<string, unknown>;\n}\n\n// ============================================\n// Position conversion\n// ============================================\n\nfunction convertPosition(pos?: MdastPosition): MarkdownSourcePosition | undefined {\n if (!pos) return undefined;\n return {\n start: {\n line: pos.start.line,\n column: pos.start.column,\n ...(pos.start.offset != null ? { offset: pos.start.offset } : {}),\n },\n end: {\n line: pos.end.line,\n column: pos.end.column,\n ...(pos.end.offset != null ? { offset: pos.end.offset } : {}),\n },\n };\n}\n\nfunction toMdastPosition(pos: MarkdownSourcePosition): MdastPosition {\n return {\n start: {\n line: pos.start.line,\n column: pos.start.column,\n ...(pos.start.offset != null ? { offset: pos.start.offset } : {}),\n },\n end: {\n line: pos.end.line,\n column: pos.end.column,\n ...(pos.end.offset != null ? { offset: pos.end.offset } : {}),\n },\n };\n}\n\n/** Conditionally include position in node. */\nfunction posField(\n pos?: MarkdownSourcePosition,\n): { position: MarkdownSourcePosition } | Record<string, never> {\n return pos ? { position: pos } : {};\n}\n\nfunction mdastPosField(\n pos?: MarkdownSourcePosition,\n): { position: MdastPosition } | Record<string, never> {\n return pos ? { position: toMdastPosition(pos) } : {};\n}\n\n// ============================================\n// mdast → Squisq (fromMdast)\n// ============================================\n\n/**\n * Extract plain text content from an mdast node tree.\n * Used for directive labels.\n */\nfunction extractText(node: MdastNode): string {\n if (node.value != null) return node.value;\n if (node.children) {\n return node.children.map(extractText).join('');\n }\n return '';\n}\n\n// ============================================\n// Template annotation helpers\n// ============================================\n\n/**\n * Regex matching a trailing `{[templateName key=value …]}` annotation.\n * Captures the content between `{[` and `]}`.\n */\nconst TEMPLATE_ANNOTATION_RE = /\\s*\\{\\[([^\\]]+)\\]\\}\\s*$/;\n\n/**\n * Extract a `{[templateName key=value …]}` annotation from a heading's\n * inline children. Mutates the children array in-place: strips the\n * annotation text from the last text node (or removes the node entirely).\n *\n * @returns The parsed annotation, or null if none found.\n */\nfunction extractTemplateAnnotation(\n children: MarkdownInlineNode[],\n): HeadingTemplateAnnotation | null {\n // Walk backwards to find the last text node\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (child.type === 'text') {\n const match = child.value.match(TEMPLATE_ANNOTATION_RE);\n if (match) {\n const inner = match[1].trim();\n const annotation = parseAnnotationTokens(inner);\n\n // Strip the matched portion from the text\n const stripped = child.value.slice(0, match.index!).replace(/\\s+$/, '');\n if (stripped) {\n (child as { value: string }).value = stripped;\n } else {\n // Remove the now-empty text node\n children.splice(i, 1);\n }\n return annotation;\n }\n // Only check the last text node (trailing position)\n break;\n }\n // If the last child isn't a text node, there's no annotation\n break;\n }\n return null;\n}\n\n/**\n * Parse the inner content of a `{[…]}` annotation into template + params.\n *\n * Input: `\"chart colorScheme=blue size=large\"`\n * Output: `{ template: 'chart', params: { colorScheme: 'blue', size: 'large' } }`\n */\nfunction parseAnnotationTokens(inner: string): HeadingTemplateAnnotation {\n const tokens = inner.split(/\\s+/);\n const params: Record<string, string> = {};\n\n // If the first token contains '=', there's no template name —\n // the annotation is purely key-value (e.g., `{[audio=intro.mp3]}`).\n const firstIsParam = tokens[0].indexOf('=') > 0;\n const template = firstIsParam ? undefined : tokens[0];\n const startIdx = firstIsParam ? 0 : 1;\n\n for (let i = startIdx; i < tokens.length; i++) {\n const eqIdx = tokens[i].indexOf('=');\n if (eqIdx > 0) {\n params[tokens[i].slice(0, eqIdx)] = tokens[i].slice(eqIdx + 1);\n }\n }\n\n const result: HeadingTemplateAnnotation = {};\n if (template) {\n result.template = template;\n }\n if (Object.keys(params).length > 0) {\n result.params = params;\n }\n return result;\n}\n\n/**\n * Serialize a HeadingTemplateAnnotation back to `{[templateName key=value …]}` text.\n */\nfunction serializeTemplateAnnotation(annotation: HeadingTemplateAnnotation): string {\n const parts: string[] = [];\n if (annotation.template) {\n parts.push(annotation.template);\n }\n if (annotation.params) {\n for (const [key, value] of Object.entries(annotation.params)) {\n parts.push(`${key}=${value}`);\n }\n }\n return `{[${parts.join(' ')}]}`;\n}\n\n/**\n * Convert an mdast Root node to a MarkdownDocument.\n *\n * @param root - The mdast root node (from remark-parse)\n * @param options - Conversion options\n * @returns A MarkdownDocument\n */\nexport function fromMdast(root: MdastNode, options?: { parseHtml?: boolean }): MarkdownDocument {\n const doParseHtml = options?.parseHtml !== false;\n return {\n type: 'document',\n children: convertBlockChildren(root.children ?? [], doParseHtml),\n ...posField(convertPosition(root.position)),\n };\n}\n\nfunction convertBlockChildren(children: MdastNode[], parseHtml: boolean): MarkdownBlockNode[] {\n const result: MarkdownBlockNode[] = [];\n for (const child of children) {\n const node = convertBlockNode(child, parseHtml);\n if (node) result.push(node);\n }\n return result;\n}\n\nfunction convertInlineChildren(children: MdastNode[], parseHtml: boolean): MarkdownInlineNode[] {\n const result: MarkdownInlineNode[] = [];\n for (const child of children) {\n const node = convertInlineNode(child, parseHtml);\n if (node) result.push(node);\n }\n return coalesceMentions(result);\n}\n\n/**\n * Post-process an inline-children list to collapse `text('@') + link(scheme:id)`\n * pairs into a single `mention` node. The wire format `@[Display](scheme:id)`\n * comes back from remark as two adjacent nodes — we merge them so consumers\n * see a single atomic mention. A plain link whose URL doesn't have `scheme:id`\n * shape, or that isn't immediately preceded by `@`, is left alone so ordinary\n * links keep working.\n */\nfunction coalesceMentions(inlines: MarkdownInlineNode[]): MarkdownInlineNode[] {\n const out: MarkdownInlineNode[] = [];\n for (const cur of inlines) {\n const prev = out[out.length - 1];\n if (\n cur.type === 'link' &&\n typeof cur.url === 'string' &&\n prev &&\n prev.type === 'text' &&\n prev.value.endsWith('@')\n ) {\n const schemeMatch = cur.url.match(/^([a-z][a-z0-9+.-]*):(.+)$/i);\n if (schemeMatch && schemeMatch[1] && schemeMatch[2]) {\n const targetKind = schemeMatch[1];\n const targetId = schemeMatch[2];\n const displayName = extractInlineText(cur.children);\n if (prev.value === '@') {\n out.pop();\n } else {\n prev.value = prev.value.slice(0, -1);\n }\n out.push({\n type: 'mention',\n targetKind,\n targetId,\n displayName,\n ...(cur.position ? { position: cur.position } : {}),\n });\n continue;\n }\n }\n out.push(cur);\n }\n return out;\n}\n\n/** Plain-text of an inline children list — used to pull the display name\n * out of a mention link's children. */\nfunction extractInlineText(nodes: MarkdownInlineNode[]): string {\n let out = '';\n for (const n of nodes) {\n if (n.type === 'text' || n.type === 'inlineCode') out += n.value;\n else if ('children' in n && Array.isArray(n.children)) {\n out += extractInlineText(n.children as MarkdownInlineNode[]);\n }\n }\n return out;\n}\n\nfunction convertBlockNode(node: MdastNode, parseHtml: boolean): MarkdownBlockNode | null {\n const pos = convertPosition(node.position);\n\n switch (node.type) {\n case 'heading': {\n const headingChildren = convertInlineChildren(node.children ?? [], parseHtml);\n const annotation = extractTemplateAnnotation(headingChildren);\n const result: MarkdownHeading = {\n type: 'heading',\n depth: (node.depth ?? 1) as 1 | 2 | 3 | 4 | 5 | 6,\n children: headingChildren,\n ...posField(pos),\n };\n if (annotation) {\n result.templateAnnotation = annotation;\n }\n return result;\n }\n\n case 'paragraph':\n return {\n type: 'paragraph',\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'blockquote':\n return {\n type: 'blockquote',\n children: convertBlockChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'list':\n return {\n type: 'list',\n ordered: node.ordered ?? false,\n ...(node.start != null ? { start: node.start } : {}),\n ...(node.spread != null ? { spread: node.spread } : {}),\n children: (node.children ?? []).map((item) => convertListItem(item, parseHtml)),\n ...posField(pos),\n };\n\n case 'code':\n return {\n type: 'code',\n ...(node.lang != null ? { lang: node.lang } : {}),\n ...(node.meta != null ? { meta: node.meta } : {}),\n value: node.value ?? '',\n ...posField(pos),\n };\n\n case 'thematicBreak':\n return {\n type: 'thematicBreak',\n ...posField(pos),\n };\n\n case 'table':\n return {\n type: 'table',\n ...(node.align\n ? { align: node.align.map((a) => a as 'left' | 'right' | 'center' | null) }\n : {}),\n children: (node.children ?? []).map((row, i) => convertTableRow(row, i === 0, parseHtml)),\n ...posField(pos),\n };\n\n case 'html':\n return {\n type: 'htmlBlock',\n rawHtml: node.value ?? '',\n htmlChildren: parseHtml ? parseHtmlToNodes(node.value ?? '') : [],\n ...posField(pos),\n };\n\n case 'math':\n return {\n type: 'math',\n value: node.value ?? '',\n ...(node.meta != null ? { meta: node.meta } : {}),\n ...posField(pos),\n };\n\n case 'definition':\n return {\n type: 'definition',\n identifier: node.identifier ?? '',\n ...(node.label != null ? { label: node.label } : {}),\n url: node.url ?? '',\n ...(node.title != null ? { title: node.title } : {}),\n ...posField(pos),\n };\n\n case 'footnoteDefinition':\n return {\n type: 'footnoteDefinition',\n identifier: node.identifier ?? '',\n ...(node.label != null ? { label: node.label } : {}),\n children: convertBlockChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'containerDirective': {\n const allChildren = node.children ?? [];\n let label: string | undefined;\n let contentChildren = allChildren;\n\n // Extract directive label (first paragraph with directiveLabel flag)\n if (\n allChildren.length > 0 &&\n allChildren[0].type === 'paragraph' &&\n allChildren[0].data?.directiveLabel === true\n ) {\n label = extractText(allChildren[0]);\n contentChildren = allChildren.slice(1);\n }\n\n return {\n type: 'containerDirective',\n name: node.name ?? '',\n ...(label ? { label } : {}),\n ...(node.attributes && Object.keys(node.attributes).length > 0\n ? { attributes: node.attributes }\n : {}),\n children: convertBlockChildren(contentChildren, parseHtml),\n ...posField(pos),\n };\n }\n\n case 'leafDirective':\n return {\n type: 'leafDirective',\n name: node.name ?? '',\n ...(node.attributes && Object.keys(node.attributes).length > 0\n ? { attributes: node.attributes }\n : {}),\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'yaml':\n // YAML frontmatter nodes are handled separately in parse.ts — skip silently\n return null;\n\n default:\n // Unknown block node — skip with a warning\n if (typeof console !== 'undefined') {\n console.warn(`[squisq/markdown] Unknown mdast block node type: \"${node.type}\"`);\n }\n return null;\n }\n}\n\nfunction convertListItem(node: MdastNode, parseHtml: boolean): MarkdownListItem {\n const pos = convertPosition(node.position);\n return {\n type: 'listItem',\n ...(node.checked != null ? { checked: node.checked } : {}),\n ...(node.spread != null ? { spread: node.spread } : {}),\n children: convertBlockChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n}\n\nfunction convertTableRow(node: MdastNode, isHeader: boolean, parseHtml: boolean): MarkdownTableRow {\n const pos = convertPosition(node.position);\n return {\n type: 'tableRow',\n children: (node.children ?? []).map((cell) => convertTableCell(cell, isHeader, parseHtml)),\n ...posField(pos),\n };\n}\n\nfunction convertTableCell(\n node: MdastNode,\n isHeader: boolean,\n parseHtml: boolean,\n): MarkdownTableCell {\n const pos = convertPosition(node.position);\n return {\n type: 'tableCell',\n ...(isHeader ? { isHeader: true } : {}),\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n}\n\nfunction convertInlineNode(node: MdastNode, parseHtml: boolean): MarkdownInlineNode | null {\n const pos = convertPosition(node.position);\n\n switch (node.type) {\n case 'text':\n return {\n type: 'text',\n value: node.value ?? '',\n ...posField(pos),\n };\n\n case 'emphasis':\n return {\n type: 'emphasis',\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'strong':\n return {\n type: 'strong',\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'delete':\n return {\n type: 'delete',\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'inlineCode':\n return {\n type: 'inlineCode',\n value: node.value ?? '',\n ...posField(pos),\n };\n\n case 'link':\n return {\n type: 'link',\n url: node.url ?? '',\n ...(node.title != null ? { title: node.title } : {}),\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'image':\n return {\n type: 'image',\n url: node.url ?? '',\n ...(node.alt != null ? { alt: node.alt } : {}),\n ...(node.title != null ? { title: node.title } : {}),\n ...posField(pos),\n };\n\n case 'break':\n return {\n type: 'break',\n ...posField(pos),\n };\n\n case 'html':\n return {\n type: 'htmlInline',\n rawHtml: node.value ?? '',\n htmlChildren: parseHtml ? parseHtmlToNodes(node.value ?? '') : [],\n ...posField(pos),\n };\n\n case 'inlineMath':\n return {\n type: 'inlineMath',\n value: node.value ?? '',\n ...posField(pos),\n };\n\n case 'footnoteReference':\n return {\n type: 'footnoteReference',\n identifier: node.identifier ?? '',\n ...(node.label != null ? { label: node.label } : {}),\n ...posField(pos),\n };\n\n case 'linkReference':\n return {\n type: 'linkReference',\n identifier: node.identifier ?? '',\n ...(node.label != null ? { label: node.label } : {}),\n referenceType: (node.referenceType ?? 'full') as 'full' | 'collapsed' | 'shortcut',\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n case 'imageReference':\n return {\n type: 'imageReference',\n identifier: node.identifier ?? '',\n ...(node.label != null ? { label: node.label } : {}),\n referenceType: (node.referenceType ?? 'full') as 'full' | 'collapsed' | 'shortcut',\n ...(node.alt != null ? { alt: node.alt } : {}),\n ...posField(pos),\n };\n\n case 'textDirective':\n return {\n type: 'textDirective',\n name: node.name ?? '',\n ...(node.attributes && Object.keys(node.attributes).length > 0\n ? { attributes: node.attributes }\n : {}),\n children: convertInlineChildren(node.children ?? [], parseHtml),\n ...posField(pos),\n };\n\n default:\n if (typeof console !== 'undefined') {\n console.warn(`[squisq/markdown] Unknown mdast inline node type: \"${node.type}\"`);\n }\n return null;\n }\n}\n\n// ============================================\n// Squisq → mdast (toMdast)\n// ============================================\n\n/**\n * Convert a MarkdownDocument back to an mdast Root node.\n *\n * @param doc - A MarkdownDocument\n * @returns An mdast Root node suitable for remark-stringify\n */\nexport function toMdast(doc: MarkdownDocument): MdastNode {\n return {\n type: 'root',\n children: doc.children.map((n) => blockToMdast(n)),\n ...mdastPosField(doc.position),\n };\n}\n\nfunction blockToMdast(node: MarkdownBlockNode): MdastNode {\n switch (node.type) {\n case 'heading': {\n const mdastChildren = inlineChildrenToMdast(node.children);\n if (node.templateAnnotation) {\n const suffix = serializeTemplateAnnotation(node.templateAnnotation);\n // Append to last text node, or create a new one\n const lastChild = mdastChildren[mdastChildren.length - 1];\n if (lastChild && lastChild.type === 'text') {\n lastChild.value = (lastChild.value ?? '') + ' ' + suffix;\n } else {\n mdastChildren.push({ type: 'text', value: ' ' + suffix });\n }\n }\n return {\n type: 'heading',\n depth: node.depth,\n children: mdastChildren,\n ...mdastPosField(node.position),\n };\n }\n\n case 'paragraph':\n return {\n type: 'paragraph',\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'blockquote':\n return {\n type: 'blockquote',\n children: node.children.map(blockToMdast),\n ...mdastPosField(node.position),\n };\n\n case 'list':\n return {\n type: 'list',\n ordered: node.ordered,\n ...(node.start != null ? { start: node.start } : {}),\n ...(node.spread != null ? { spread: node.spread } : {}),\n children: node.children.map(listItemToMdast),\n ...mdastPosField(node.position),\n };\n\n case 'code':\n return {\n type: 'code',\n ...(node.lang != null ? { lang: node.lang } : {}),\n ...(node.meta != null ? { meta: node.meta } : {}),\n value: node.value,\n ...mdastPosField(node.position),\n };\n\n case 'thematicBreak':\n return {\n type: 'thematicBreak',\n ...mdastPosField(node.position),\n };\n\n case 'table':\n return {\n type: 'table',\n ...(node.align ? { align: node.align } : {}),\n children: node.children.map(tableRowToMdast),\n ...mdastPosField(node.position),\n };\n\n case 'htmlBlock':\n return {\n type: 'html',\n value: node.rawHtml,\n ...mdastPosField(node.position),\n };\n\n case 'math':\n return {\n type: 'math',\n value: node.value,\n ...(node.meta != null ? { meta: node.meta } : {}),\n ...mdastPosField(node.position),\n };\n\n case 'definition':\n return {\n type: 'definition',\n identifier: node.identifier,\n ...(node.label != null ? { label: node.label } : {}),\n url: node.url,\n ...(node.title != null ? { title: node.title } : {}),\n ...mdastPosField(node.position),\n };\n\n case 'footnoteDefinition':\n return {\n type: 'footnoteDefinition',\n identifier: node.identifier,\n ...(node.label != null ? { label: node.label } : {}),\n children: node.children.map(blockToMdast),\n ...mdastPosField(node.position),\n };\n\n case 'containerDirective': {\n const children: MdastNode[] = [];\n\n // Reinject label as first paragraph with directiveLabel flag\n if (node.label) {\n children.push({\n type: 'paragraph',\n data: { directiveLabel: true },\n children: [{ type: 'text', value: node.label }],\n });\n }\n\n children.push(...node.children.map(blockToMdast));\n\n return {\n type: 'containerDirective',\n name: node.name,\n ...(node.attributes ? { attributes: node.attributes } : {}),\n children,\n ...mdastPosField(node.position),\n };\n }\n\n case 'leafDirective':\n return {\n type: 'leafDirective',\n name: node.name,\n ...(node.attributes ? { attributes: node.attributes } : {}),\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'definitionList':\n // Definition lists don't map to standard mdast.\n // Convert to HTML as fallback.\n return {\n type: 'html',\n value: definitionListToHtml(node),\n ...mdastPosField(node.position),\n };\n\n default:\n return { type: 'html', value: '' };\n }\n}\n\nfunction listItemToMdast(item: MarkdownListItem): MdastNode {\n return {\n type: 'listItem',\n ...(item.checked != null ? { checked: item.checked } : {}),\n ...(item.spread != null ? { spread: item.spread } : {}),\n children: item.children.map(blockToMdast),\n ...mdastPosField(item.position),\n };\n}\n\nfunction tableRowToMdast(row: MarkdownTableRow): MdastNode {\n return {\n type: 'tableRow',\n children: row.children.map(tableCellToMdast),\n ...mdastPosField(row.position),\n };\n}\n\nfunction tableCellToMdast(cell: MarkdownTableCell): MdastNode {\n return {\n type: 'tableCell',\n children: inlineChildrenToMdast(cell.children),\n ...mdastPosField(cell.position),\n };\n}\n\n/**\n * Serialize an array of inline nodes to mdast, flat-mapping the result so\n * a single `mention` expands to two mdast nodes (`text('@')` + `link`).\n * Use in place of `.map(inlineToMdast)` wherever we walk a children array.\n */\nfunction inlineChildrenToMdast(nodes: MarkdownInlineNode[]): MdastNode[] {\n const out: MdastNode[] = [];\n for (const n of nodes) {\n if (n.type === 'mention') {\n out.push({ type: 'text', value: '@' });\n out.push({\n type: 'link',\n url: `${n.targetKind}:${n.targetId}`,\n children: [{ type: 'text', value: n.displayName }],\n ...mdastPosField(n.position),\n });\n } else {\n out.push(inlineToMdast(n));\n }\n }\n return out;\n}\n\nfunction inlineToMdast(node: MarkdownInlineNode): MdastNode {\n switch (node.type) {\n case 'text':\n return {\n type: 'text',\n value: node.value,\n ...mdastPosField(node.position),\n };\n\n case 'emphasis':\n return {\n type: 'emphasis',\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'strong':\n return {\n type: 'strong',\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'delete':\n return {\n type: 'delete',\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'inlineCode':\n return {\n type: 'inlineCode',\n value: node.value,\n ...mdastPosField(node.position),\n };\n\n case 'link':\n return {\n type: 'link',\n url: node.url,\n ...(node.title != null ? { title: node.title } : {}),\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'image':\n return {\n type: 'image',\n url: node.url,\n ...(node.alt != null ? { alt: node.alt } : {}),\n ...(node.title != null ? { title: node.title } : {}),\n ...mdastPosField(node.position),\n };\n\n case 'break':\n return {\n type: 'break',\n ...mdastPosField(node.position),\n };\n\n case 'htmlInline':\n return {\n type: 'html',\n value: node.rawHtml,\n ...mdastPosField(node.position),\n };\n\n case 'inlineMath':\n return {\n type: 'inlineMath',\n value: node.value,\n ...mdastPosField(node.position),\n };\n\n case 'footnoteReference':\n return {\n type: 'footnoteReference',\n identifier: node.identifier,\n ...(node.label != null ? { label: node.label } : {}),\n ...mdastPosField(node.position),\n };\n\n case 'linkReference':\n return {\n type: 'linkReference',\n identifier: node.identifier,\n ...(node.label != null ? { label: node.label } : {}),\n referenceType: node.referenceType,\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'imageReference':\n return {\n type: 'imageReference',\n identifier: node.identifier,\n ...(node.label != null ? { label: node.label } : {}),\n referenceType: node.referenceType,\n ...(node.alt != null ? { alt: node.alt } : {}),\n ...mdastPosField(node.position),\n };\n\n case 'textDirective':\n return {\n type: 'textDirective',\n name: node.name,\n ...(node.attributes ? { attributes: node.attributes } : {}),\n children: inlineChildrenToMdast(node.children),\n ...mdastPosField(node.position),\n };\n\n case 'mention':\n // Fallback: when `inlineToMdast` is called directly (not via\n // `inlineChildrenToMdast`), collapse the mention to just the link\n // form. The `@` prefix is lost, but the id+name still round-trip.\n // Normal call sites go through `inlineChildrenToMdast` and get\n // the proper text('@') + link pair.\n return {\n type: 'link',\n url: `${node.targetKind}:${node.targetId}`,\n children: [{ type: 'text', value: node.displayName }],\n ...mdastPosField(node.position),\n };\n\n default:\n return { type: 'text', value: '' };\n }\n}\n\n// ============================================\n// Helpers\n// ============================================\n\n/**\n * Convert a MarkdownDefinitionList to an HTML <dl> string.\n * Fallback for serialization since mdast doesn't support definition lists.\n */\nfunction definitionListToHtml(list: {\n children: Array<{ type: string; children?: unknown[] }>;\n}): string {\n let html = '<dl>\\n';\n for (const child of list.children) {\n if (child.type === 'definitionTerm') {\n // Extract plain text from inline children\n const text = (child.children as Array<{ value?: string; children?: unknown[] }>)\n .map((c) => c.value ?? '')\n .join('');\n html += ` <dt>${text}</dt>\\n`;\n } else if (child.type === 'definitionDescription') {\n html += ` <dd>...</dd>\\n`;\n }\n }\n html += '</dl>';\n return html;\n}\n","/**\n * JSON → Markdown Serializer\n *\n * Converts a MarkdownDocument JSON structure back to a markdown string\n * using the unified/remark ecosystem with GFM, math, and directive extensions.\n */\n\nimport { unified } from 'unified';\nimport remarkStringify from 'remark-stringify';\nimport remarkGfm from 'remark-gfm';\nimport remarkMath from 'remark-math';\nimport remarkDirective from 'remark-directive';\nimport type { MarkdownDocument, StringifyOptions } from './types.js';\nimport { toMdast } from './convert.js';\n\n// Cache the default processor (all extensions, default formatting) to avoid rebuilding on every call.\nlet defaultProcessor: any;\n\n/**\n * Serialize a MarkdownDocument back to a markdown string.\n *\n * All extensions (GFM, math, directives) are enabled by default.\n * Use the `options` parameter to control formatting and disable extensions.\n *\n * @param doc - The MarkdownDocument to serialize\n * @param options - Serialization options (formatting, extensions)\n * @returns A markdown string\n *\n * @example\n * ```ts\n * const doc: MarkdownDocument = {\n * type: 'document',\n * children: [\n * { type: 'heading', depth: 1, children: [{ type: 'text', value: 'Hello' }] },\n * { type: 'paragraph', children: [{ type: 'text', value: 'World' }] },\n * ],\n * };\n * const md = stringifyMarkdown(doc);\n * // '# Hello\\n\\nWorld\\n'\n * ```\n */\nexport function stringifyMarkdown(doc: MarkdownDocument, options?: StringifyOptions): string {\n // Convert MarkdownDocument → mdast tree\n const mdastTree = toMdast(doc);\n\n // Use cached default processor when all extensions and default formatting are used.\n const useDefaults =\n !options ||\n (options.gfm !== false &&\n options.math !== false &&\n options.directive !== false &&\n !options.bullet &&\n !options.bulletOrdered &&\n !options.emphasis &&\n !options.strong &&\n !options.rule &&\n !options.fence &&\n options.setext == null);\n\n let processor: any;\n\n if (useDefaults) {\n if (!defaultProcessor) {\n defaultProcessor = unified()\n .use(remarkGfm)\n .use(remarkMath)\n .use(remarkDirective)\n .use(remarkStringify, {\n bullet: '-',\n bulletOrdered: '.',\n emphasis: '*',\n strong: '*',\n rule: '-',\n fence: '`',\n setext: false,\n });\n }\n processor = defaultProcessor;\n } else {\n // Build a custom processor with requested options.\n // unified's .use() chaining changes the generic signature each time,\n // making strict typing impractical — use a widened Processor type.\n processor = unified();\n\n if (options?.gfm !== false) {\n processor = processor.use(remarkGfm);\n }\n if (options?.math !== false) {\n processor = processor.use(remarkMath);\n }\n if (options?.directive !== false) {\n processor = processor.use(remarkDirective);\n }\n\n processor = processor.use(remarkStringify, {\n bullet: options?.bullet ?? '-',\n bulletOrdered: options?.bulletOrdered ?? '.',\n emphasis: options?.emphasis ?? '*',\n strong: options?.strong ?? '*',\n rule: options?.rule ?? '-',\n fence: options?.fence ?? '`',\n setext: options?.setext ?? false,\n });\n }\n\n // Stringify mdast → markdown string\n const result = processor.stringify(mdastTree) as string;\n\n // remark-stringify escapes `[` in text nodes (to prevent link syntax),\n // which turns `{[template]}` into `{\\[template]}`. Unescape our annotation syntax.\n const cleaned = result.replace(/\\{\\\\\\[([^\\]]+)\\]\\}/g, '{[$1]}');\n\n // Prepend YAML frontmatter if present\n if (doc.frontmatter && Object.keys(doc.frontmatter).length > 0) {\n const yamlLines = Object.entries(doc.frontmatter).map(\n ([k, v]) => `${k}: ${typeof v === 'string' ? v : JSON.stringify(v)}`,\n );\n return `---\\n${yamlLines.join('\\n')}\\n---\\n\\n${cleaned}`;\n }\n\n return cleaned;\n}\n"],"mappings":"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","names":["unified","remarkGfm","remarkMath","remarkDirective","defaultProcessor","unified","remarkGfm","remarkMath","remarkDirective"]}
@@ -1 +1 @@
1
- {"version":3,"file":"audioMapping.d.ts","sourceRoot":"","sources":["../../src/doc/audioMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAwC,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAqCvE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYhE;AAyLD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAqD7F"}
1
+ {"version":3,"file":"audioMapping.d.ts","sourceRoot":"","sources":["../../src/doc/audioMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAwC,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAqCvE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYhE;AA+ND;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAqD7F"}
@@ -105,21 +105,57 @@ function flattenForAudio(blocks) {
105
105
  return result;
106
106
  }
107
107
  // ── Core Functions ───────────────────────────────────────────────────
108
+ /**
109
+ * Parse a consolidated timing.json (version 2) which contains all section
110
+ * timing data in a single file.
111
+ */
112
+ function parseConsolidatedTiming(data) {
113
+ try {
114
+ const text = new TextDecoder().decode(data);
115
+ const parsed = JSON.parse(text);
116
+ if (parsed && parsed.version === 2 && parsed.sections) {
117
+ return parsed.sections;
118
+ }
119
+ return null;
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ }
108
125
  /**
109
126
  * Discover all MP3 files in a container and load their timing data.
127
+ * Checks for a consolidated timing.json first, then falls back to per-file .timing.json.
110
128
  */
111
129
  async function discoverMp3s(container) {
112
130
  const files = await container.listFiles();
113
131
  const mp3Files = files.filter((f) => f.path.endsWith('.mp3'));
114
132
  const results = [];
133
+ // Try to load consolidated timing.json
134
+ let consolidatedSections = null;
135
+ const consolidatedData = await container.readFile('timing.json');
136
+ if (consolidatedData) {
137
+ consolidatedSections = parseConsolidatedTiming(consolidatedData);
138
+ }
115
139
  for (const file of mp3Files) {
116
140
  const filename = file.path.split('/').pop() ?? file.path;
117
141
  let timing = null;
118
- // Try to load timing.json
119
- const timingPath = `${file.path}.timing.json`;
120
- const timingData = await container.readFile(timingPath);
121
- if (timingData) {
122
- timing = parseTimingJson(timingData);
142
+ // Try consolidated timing first: match section name from filename
143
+ if (consolidatedSections) {
144
+ const mp3Base = filename.replace(/\.mp3$/, '');
145
+ for (const [sectionName, sectionTiming] of Object.entries(consolidatedSections)) {
146
+ if (mp3Base.endsWith(`-${sectionName}`)) {
147
+ timing = sectionTiming;
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ // Fall back to per-file .timing.json
153
+ if (!timing) {
154
+ const timingPath = `${file.path}.timing.json`;
155
+ const timingData = await container.readFile(timingPath);
156
+ if (timingData) {
157
+ timing = parseTimingJson(timingData);
158
+ }
123
159
  }
124
160
  results.push({ path: file.path, filename, timing });
125
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"audioMapping.js","sourceRoot":"","sources":["../../src/doc/audioMapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audioMapping.js","sourceRoot":"","sources":["../../src/doc/audioMapping.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,13 @@ export interface MarkdownToDocOptions {
35
35
  defaultDuration?: number;
36
36
  /** Custom ID generator. Receives the heading node and its index. */
37
37
  generateId?: (heading: MarkdownHeading, index: number) => string;
38
+ /**
39
+ * Whether to auto-generate a cover startBlock from the first H1 heading.
40
+ * When true (default), a StartBlockConfig is created using the first H1's
41
+ * text as the title. If the document contains an image, the first image
42
+ * is used as the hero. Set to false to suppress automatic cover generation.
43
+ */
44
+ generateCoverBlock?: boolean;
38
45
  }
39
46
  /**
40
47
  * Convert a MarkdownDocument into a Doc with a heading-driven Block hierarchy.
@@ -1 +1 @@
1
- {"version":3,"file":"markdownToDoc.d.ts","sourceRoot":"","sources":["../../src/doc/markdownToDoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAA+B,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAqB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQjG;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAClE;AAiDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,GAAG,CAuKhG;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAStD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAElD"}
1
+ {"version":3,"file":"markdownToDoc.d.ts","sourceRoot":"","sources":["../../src/doc/markdownToDoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAiD,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAQ9B;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAEjE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAiDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,GAAG,CAiLhG;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAStD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAElD"}
@@ -212,7 +212,7 @@ export function markdownToDoc(markdownDoc, options) {
212
212
  currentTime += block.duration;
213
213
  }
214
214
  const captions = phrases.length > 0 ? { phrases, generatedAt: new Date().toISOString(), version: 1 } : undefined;
215
- return {
215
+ const doc = {
216
216
  articleId,
217
217
  duration: currentTime,
218
218
  blocks: rootBlocks,
@@ -222,6 +222,14 @@ export function markdownToDoc(markdownDoc, options) {
222
222
  ...(captions ? { captions } : {}),
223
223
  ...(markdownDoc.frontmatter ? { frontmatter: markdownDoc.frontmatter } : {}),
224
224
  };
225
+ // Auto-generate cover startBlock from the first H1 heading
226
+ if (options?.generateCoverBlock ?? true) {
227
+ const coverConfig = buildStartBlock(markdownDoc, rootBlocks);
228
+ if (coverConfig) {
229
+ doc.startBlock = coverConfig;
230
+ }
231
+ }
232
+ return doc;
225
233
  }
226
234
  // ============================================
227
235
  // Utilities
@@ -347,4 +355,44 @@ function splitIntoSentences(text) {
347
355
  }
348
356
  return merged;
349
357
  }
358
+ /**
359
+ * Walk a MarkdownNode tree depth-first to find the first image node.
360
+ * Returns the MarkdownImage or undefined if none found.
361
+ */
362
+ function findFirstImage(node) {
363
+ if (node.type === 'image')
364
+ return node;
365
+ if ('children' in node && Array.isArray(node.children)) {
366
+ for (const child of node.children) {
367
+ const found = findFirstImage(child);
368
+ if (found)
369
+ return found;
370
+ }
371
+ }
372
+ return undefined;
373
+ }
374
+ /**
375
+ * Build a StartBlockConfig from the document's first H1 heading and optional
376
+ * first image. Returns undefined if the document has no H1 heading.
377
+ */
378
+ function buildStartBlock(markdownDoc, rootBlocks) {
379
+ // Find the first H1 block — it provides the cover title
380
+ const firstH1 = rootBlocks.find((b) => b.sourceHeading?.depth === 1);
381
+ if (!firstH1)
382
+ return undefined;
383
+ const title = firstH1.title ?? extractPlainText(firstH1.sourceHeading);
384
+ if (!title)
385
+ return undefined;
386
+ // Look for the first paragraph immediately after the H1 to use as subtitle
387
+ const subtitle = firstH1.contents?.[0]?.type === 'paragraph' ? extractPlainText(firstH1.contents[0]) : undefined;
388
+ // Scan the whole document for the first image to use as the hero
389
+ const firstImage = findFirstImage(markdownDoc);
390
+ const config = {
391
+ title,
392
+ ...(subtitle ? { subtitle } : {}),
393
+ ...(firstImage ? { heroSrc: firstImage.url, heroAlt: firstImage.alt ?? title } : {}),
394
+ ambientMotion: 'zoomIn',
395
+ };
396
+ return config;
397
+ }
350
398
  //# sourceMappingURL=markdownToDoc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdownToDoc.js","sourceRoot":"","sources":["../../src/doc/markdownToDoc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdownToDoc.js","sourceRoot":"","sources":["../../src/doc/markdownToDoc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AA+B/D,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C;;;GAGG;AACH,MAAM,gBAAgB,GAAG,WAAW,CAAC;AACrC,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAErC,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,CACL,IAAI;SACD,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,oDAAoD;SAClF,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,0CAA0C;SACvE,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,4BAA4B;SAC/D,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,IAAI,gCAAgC;QACvE,OAAO,CACR,CAAC,CAAC,4BAA4B;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvC,OAAO,CAAC,OAAwB,EAAE,MAAc,EAAU,EAAE;QAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAE1B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,OAAO,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,kBAAkB;AAClB,+CAA+C;AAE/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,WAA6B,EAAE,OAA8B;IACzF,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,cAAc,CAAC;IACvD,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,eAAe,CAAC;IACpE,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,CAAC;IAE9D,MAAM,UAAU,GAAY,EAAE,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,iFAAiF;IACjF,uDAAuD;IACvD,MAAM,KAAK,GAA2C,EAAE,CAAC;IAEzD,0EAA0E;IAC1E,mEAAmE;IACnE,IAAI,eAAe,GAAwB,EAAE,CAAC;IAC9C,IAAI,YAAY,GAAiB,IAAI,CAAC;IAEtC,SAAS,aAAa;QACpB,IAAI,YAAY,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,YAAY,CAAC,QAAQ,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC9E,eAAe,GAAG,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,SAAS,SAAS,CAAC,OAA+B;QAChD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAEtE,0EAA0E;QAC1E,MAAM,UAAU,GAAG,OAAO,EAAE,kBAAkB,CAAC;QAC/C,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEjF,uEAAuE;QACvE,0EAA0E;QAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9D,MAAM,KAAK,GAAU;YACnB,EAAE;YACF,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE,CAAC;YACf,QAAQ;YACR,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,CAAC;QAEF,kEAAkE;QAClE,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC;QAC9C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAuB,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAE5B,qDAAqD;YACrD,aAAa,EAAE,CAAC;YAEhB,wCAAwC;YACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;YAEpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,6DAA6D;gBAC7D,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;oBAChD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChC,CAAC;gBAED,oDAAoD;gBACpD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,gDAAgD;gBAChD,oEAAoE;gBACpE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;oBAClE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,mDAAmD;oBACnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,0CAA0C;oBAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ;wBAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;oBAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,YAAY,GAAG,QAAQ,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,iDAAiD;YACjD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,qDAAqD;gBACrD,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,aAAa,EAAE,CAAC;IAEhB,gEAAgE;IAChE,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtF,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,+DAA+D;IAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,mDAAmD;IAC1E,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,8DAA8D;IAC9D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC;QACnC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC;QAE9B,yDAAyD;QACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1C,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;wBAClB,SAAS,EAAE,WAAW,GAAG,CAAC,GAAG,eAAe;wBAC5C,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe;wBAChD,YAAY,EAAE,CAAC;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAElG,MAAM,GAAG,GAAQ;QACf,SAAS;QACT,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE;YACL,QAAQ,EAAE,EAAE;SACb;QACD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC;IAEF,2DAA2D;IAC3D,IAAI,OAAO,EAAE,kBAAkB,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+CAA+C;AAC/C,YAAY;AACZ,+CAA+C;AAE/C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAe;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,OAAO,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,+CAA+C;AAC/C,mBAAmB;AACnB,+CAA+C;AAE/C;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAY;IACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9D,iEAAiE;IACjE,gEAAgE;IAChE,OAAO,KAAK,CAAC,QAAQ;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,sEAAsE;IACtE,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/B,8CAA8C;IAC9C,MAAM,UAAU,GAAG,eAAe,CAAC;IACnC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI;aACnB,KAAK,CAAC,UAAU,CAAC;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,4CAA4C;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACpC,8DAA8D;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,0BAA0B,CAAC;YAC5C,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;YACnB,IAAI,QAAQ,GAAG,QAAQ,CAAC;YACxB,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBACzC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;oBACpB,QAAQ,GAAG,IAAI,CAAC;oBAChB,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,MAAM,GAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,IAAkB;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAqB,CAAC;IACxD,IAAI,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,IAAiC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrF,KAAK,MAAM,KAAK,IAAK,IAAqC,CAAC,QAAQ,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,WAA6B,EAC7B,UAAmB;IAEnB,wDAAwD;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC,aAAc,CAAC,CAAC;IACxE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,2EAA2E;IAC3E,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElG,iEAAiE;IACjE,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAqB;QAC/B,KAAK;QACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,aAAa,EAAE,QAAQ;KACxB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -20,8 +20,8 @@ import type { StartBlockConfig } from '../../schemas/Doc.js';
20
20
  * Input for coverBlock template - matches StartBlockConfig
21
21
  */
22
22
  export interface CoverBlockInput {
23
- /** Path to hero image */
24
- heroSrc: string;
23
+ /** Path to hero image (omit for theme-driven background) */
24
+ heroSrc?: string;
25
25
  /** Alt text for the hero image */
26
26
  heroAlt?: string;
27
27
  /** Title to display over the hero */
@@ -1 +1 @@
1
- {"version":3,"file":"coverBlock.d.ts","sourceRoot":"","sources":["../../../src/doc/templates/coverBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9D,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE,CAwFpF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAUhF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE,CAG5F"}
1
+ {"version":3,"file":"coverBlock.d.ts","sourceRoot":"","sources":["../../../src/doc/templates/coverBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9D,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE,CAsHpF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAUhF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,GAAG,KAAK,EAAE,CAG5F"}
@@ -22,14 +22,14 @@ import { mapAmbientMotion } from './accentImage.js';
22
22
  export function coverBlock(input, context) {
23
23
  const { heroSrc, heroAlt, title, subtitle, ambientMotion, heroCredit, heroLicense } = input;
24
24
  const { theme, layout } = context;
25
- // Scale font sizes for viewport - use larger sizes for the cover
26
- const titleFontSize = scaledFontSize(96, context, true);
27
- const subtitleFontSize = scaledFontSize(36, context, false);
28
- // Determine Ken Burns animation
29
- const imageAnimation = mapAmbientMotion(ambientMotion);
30
- const layers = [
31
- // Full-screen hero image
32
- {
25
+ // Scale font sizes for viewport - cover titles are larger than regular title blocks
26
+ const titleFontSize = scaledFontSize(120, context, true);
27
+ const subtitleFontSize = scaledFontSize(40, context, false);
28
+ const layers = [];
29
+ if (heroSrc) {
30
+ // Hero image path: full-screen image with gradient overlay for text readability
31
+ const imageAnimation = mapAmbientMotion(ambientMotion);
32
+ layers.push({
33
33
  type: 'image',
34
34
  id: 'cover-hero',
35
35
  content: {
@@ -41,9 +41,7 @@ export function coverBlock(input, context) {
41
41
  },
42
42
  position: { x: 0, y: 0, width: '100%', height: '100%' },
43
43
  animation: imageAnimation,
44
- },
45
- // Gradient overlay for text readability - from bottom
46
- {
44
+ }, {
47
45
  type: 'shape',
48
46
  id: 'cover-gradient',
49
47
  content: {
@@ -51,32 +49,59 @@ export function coverBlock(input, context) {
51
49
  fill: 'linear-gradient(0deg, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.4) 40%, rgba(0,0,0,0.1) 70%, transparent 100%)',
52
50
  },
53
51
  position: { x: 0, y: 0, width: '100%', height: '100%' },
54
- },
55
- // Title - positioned lower in the frame to work with hero composition
56
- {
57
- type: 'text',
58
- id: 'cover-title',
52
+ });
53
+ }
54
+ else {
55
+ // No hero image: use a rich theme-driven background with radial gradient
56
+ layers.push({
57
+ type: 'shape',
58
+ id: 'cover-bg',
59
59
  content: {
60
- text: title,
61
- style: {
62
- fontSize: titleFontSize,
63
- fontFamily: getThemeFont(context, 'title'),
64
- fontWeight: 'bold',
65
- color: theme.colors.text,
66
- textAlign: 'center',
67
- shadow: true,
68
- },
60
+ shape: 'rect',
61
+ fill: `radial-gradient(ellipse at 50% 40%, ${theme.colors.primary} 0%, ${theme.colors.background} 100%)`,
62
+ },
63
+ position: { x: 0, y: 0, width: '100%', height: '100%' },
64
+ });
65
+ // Subtle decorative accent line below title
66
+ layers.push({
67
+ type: 'shape',
68
+ id: 'cover-accent',
69
+ content: {
70
+ shape: 'rect',
71
+ fill: 'rgba(255, 255, 255, 0.2)',
69
72
  },
70
73
  position: {
71
- x: '50%',
72
- y: subtitle ? '70%' : '75%',
73
- anchor: 'center',
74
- width: layout.maxTextWidth,
74
+ x: '35%',
75
+ y: subtitle ? '42%' : '58%',
76
+ width: '30%',
77
+ height: '2px',
78
+ },
79
+ });
80
+ }
81
+ // Title - positioned lower when over hero, centered when over solid background
82
+ layers.push({
83
+ type: 'text',
84
+ id: 'cover-title',
85
+ content: {
86
+ text: title,
87
+ style: {
88
+ fontSize: titleFontSize,
89
+ fontFamily: getThemeFont(context, 'title'),
90
+ fontWeight: 'bold',
91
+ color: theme.colors.text,
92
+ textAlign: 'center',
93
+ shadow: true,
75
94
  },
76
- // No animation delay - shown immediately at rest
77
- animation: { type: 'fadeIn', duration: 0.8 },
78
95
  },
79
- ];
96
+ position: {
97
+ x: '50%',
98
+ y: heroSrc ? (subtitle ? '70%' : '75%') : subtitle ? layout.primaryY : '50%',
99
+ anchor: 'center',
100
+ width: layout.maxTextWidth,
101
+ },
102
+ // No animation delay - shown immediately at rest
103
+ animation: { type: 'fadeIn', duration: 0.8 },
104
+ });
80
105
  // Add subtitle if provided
81
106
  if (subtitle) {
82
107
  layers.push({
@@ -94,7 +119,7 @@ export function coverBlock(input, context) {
94
119
  },
95
120
  position: {
96
121
  x: '50%',
97
- y: '82%',
122
+ y: heroSrc ? '82%' : layout.secondaryY,
98
123
  anchor: 'center',
99
124
  width: layout.maxTextWidth,
100
125
  },
@@ -1 +1 @@
1
- {"version":3,"file":"coverBlock.js","sourceRoot":"","sources":["../../../src/doc/templates/coverBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverBlock.js","sourceRoot":"","sources":["../../../src/doc/templates/coverBlock.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/markdown/convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,gBAAgB,EASjB,MAAM,YAAY,CAAC;AAOpB;;;;GAIG;AACH,UAAU,aAAa;IACrB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAmKD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAO9F;AAiVD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,CAMxD"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/markdown/convert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,gBAAgB,EASjB,MAAM,YAAY,CAAC;AAOpB;;;;GAIG;AACH,UAAU,aAAa;IACrB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAmKD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,gBAAgB,CAO9F;AA0YD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,CAMxD"}