@bendyline/squisq-formats 1.2.3 → 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 (65) hide show
  1. package/dist/__tests__/html.test.js +78 -4
  2. package/dist/__tests__/html.test.js.map +1 -1
  3. package/dist/__tests__/pdfExport.test.js +1 -1
  4. package/dist/__tests__/pdfExport.test.js.map +1 -1
  5. package/dist/__tests__/plainHtml.test.d.ts +5 -0
  6. package/dist/__tests__/plainHtml.test.d.ts.map +1 -0
  7. package/dist/__tests__/plainHtml.test.js +327 -0
  8. package/dist/__tests__/plainHtml.test.js.map +1 -0
  9. package/dist/__tests__/plainHtmlBundle.test.d.ts +11 -0
  10. package/dist/__tests__/plainHtmlBundle.test.d.ts.map +1 -0
  11. package/dist/__tests__/plainHtmlBundle.test.js +210 -0
  12. package/dist/__tests__/plainHtmlBundle.test.js.map +1 -0
  13. package/dist/chunk-33YRFXZZ.js +1187 -0
  14. package/dist/chunk-33YRFXZZ.js.map +1 -0
  15. package/dist/{chunk-EUQQYBZZ.js → chunk-ERZ627GR.js} +4 -4
  16. package/dist/chunk-ERZ627GR.js.map +1 -0
  17. package/dist/{chunk-MEZF76JA.js → chunk-UDS45KUJ.js} +68 -25
  18. package/dist/chunk-UDS45KUJ.js.map +1 -0
  19. package/dist/{chunk-NGWHV77G.js → chunk-VN2KEOYB.js} +7 -6
  20. package/dist/chunk-VN2KEOYB.js.map +1 -0
  21. package/dist/docx/export.d.ts.map +1 -1
  22. package/dist/docx/export.js +153 -22
  23. package/dist/docx/export.js.map +1 -1
  24. package/dist/epub/export.js +3 -3
  25. package/dist/epub/export.js.map +1 -1
  26. package/dist/html/docsHtmlBundle.d.ts +53 -0
  27. package/dist/html/docsHtmlBundle.d.ts.map +1 -0
  28. package/dist/html/docsHtmlBundle.js +299 -0
  29. package/dist/html/docsHtmlBundle.js.map +1 -0
  30. package/dist/html/htmlTemplate.d.ts.map +1 -1
  31. package/dist/html/htmlTemplate.js +43 -0
  32. package/dist/html/htmlTemplate.js.map +1 -1
  33. package/dist/html/index.d.ts +6 -0
  34. package/dist/html/index.d.ts.map +1 -1
  35. package/dist/html/index.js +31 -3
  36. package/dist/html/index.js.map +1 -1
  37. package/dist/html/plainHtml.d.ts +79 -0
  38. package/dist/html/plainHtml.d.ts.map +1 -0
  39. package/dist/html/plainHtml.js +614 -0
  40. package/dist/html/plainHtml.js.map +1 -0
  41. package/dist/html/plainHtmlBundle.d.ts +93 -0
  42. package/dist/html/plainHtmlBundle.d.ts.map +1 -0
  43. package/dist/html/plainHtmlBundle.js +357 -0
  44. package/dist/html/plainHtmlBundle.js.map +1 -0
  45. package/dist/pptx/export.d.ts.map +1 -1
  46. package/dist/pptx/export.js +10 -8
  47. package/dist/pptx/export.js.map +1 -1
  48. package/package.json +3 -2
  49. package/src/__tests__/html.test.ts +82 -4
  50. package/src/__tests__/pdfExport.test.ts +1 -1
  51. package/src/__tests__/plainHtml.test.ts +372 -0
  52. package/src/__tests__/plainHtmlBundle.test.ts +235 -0
  53. package/src/docx/export.ts +163 -22
  54. package/src/epub/export.ts +3 -3
  55. package/src/html/docsHtmlBundle.ts +369 -0
  56. package/src/html/htmlTemplate.ts +40 -0
  57. package/src/html/index.ts +32 -3
  58. package/src/html/plainHtml.ts +736 -0
  59. package/src/html/plainHtmlBundle.ts +419 -0
  60. package/src/pptx/export.ts +10 -9
  61. package/dist/chunk-EUQQYBZZ.js.map +0 -1
  62. package/dist/chunk-MEZF76JA.js.map +0 -1
  63. package/dist/chunk-NGWHV77G.js.map +0 -1
  64. package/dist/chunk-UM5V2XZG.js +0 -242
  65. package/dist/chunk-UM5V2XZG.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pptx/export.ts","../src/pptx/styles.ts","../src/pptx/templates.ts","../src/pptx/index.ts"],"sourcesContent":["/**\n * PPTX Export\n *\n * Converts a squisq MarkdownDocument (or Doc) into a .pptx file\n * by generating PresentationML + DrawingML XML and assembling the\n * OOXML package.\n *\n * Slide segmentation: each H1 or H2 heading starts a new slide.\n * The heading becomes the slide title; content below becomes the body.\n *\n * Supports:\n * - Theme-based styling (background, text colors, fonts from squisq themes)\n * - Image embedding (pass images as ArrayBuffers via options)\n * - Inline formatting (bold, italic, strikethrough, code, links)\n * - Lists, code blocks, blockquotes, tables, math\n *\n * No third-party pptx library — all XML is generated directly using\n * the shared ooxml/ infrastructure.\n *\n * @example\n * ```ts\n * import { parseMarkdown } from '@bendyline/squisq/markdown';\n * import { markdownDocToPptx } from '@bendyline/squisq-formats/pptx';\n *\n * const md = parseMarkdown('# Slide 1\\n\\nHello world\\n\\n## Slide 2\\n\\nMore content');\n * const blob = await markdownDocToPptx(md, { themeId: 'documentary' });\n * ```\n */\n\nimport type { Doc } from '@bendyline/squisq/schemas';\nimport { resolveTheme, resolveFontFamily } from '@bendyline/squisq/schemas';\nimport type { Theme } from '@bendyline/squisq/schemas';\nimport { docToMarkdown } from '@bendyline/squisq/doc';\nimport type {\n MarkdownDocument,\n MarkdownBlockNode,\n MarkdownInlineNode,\n MarkdownHeading,\n MarkdownParagraph,\n MarkdownBlockquote,\n MarkdownList,\n MarkdownListItem,\n MarkdownCodeBlock,\n MarkdownTable,\n MarkdownTableRow,\n MarkdownHtmlBlock,\n MarkdownMathBlock,\n MarkdownLink,\n MarkdownImage,\n} from '@bendyline/squisq/markdown';\nimport { readFrontmatterThemeId } from '@bendyline/squisq/markdown';\n\nimport { createPackage } from '../ooxml/writer.js';\nimport { xmlDeclaration, escapeXml } from '../ooxml/xmlUtils.js';\nimport {\n NS_PML,\n NS_DRAWINGML,\n NS_R,\n REL_OFFICE_DOCUMENT,\n REL_SLIDE,\n REL_SLIDE_LAYOUT,\n REL_SLIDE_MASTER,\n REL_THEME,\n REL_HYPERLINK,\n REL_IMAGE,\n CONTENT_TYPE_PPTX_PRESENTATION,\n CONTENT_TYPE_PPTX_SLIDE,\n CONTENT_TYPE_PPTX_SLIDE_LAYOUT,\n CONTENT_TYPE_PPTX_SLIDE_MASTER,\n CONTENT_TYPE_PPTX_THEME,\n} from '../ooxml/namespaces.js';\nimport {\n DEFAULT_FONT,\n DEFAULT_TITLE_FONT,\n DEFAULT_CODE_FONT,\n DEFAULT_TITLE_SIZE,\n DEFAULT_CODE_SIZE,\n HYPERLINK_COLOR,\n TITLE_LEFT,\n TITLE_TOP,\n TITLE_WIDTH,\n TITLE_HEIGHT,\n BODY_LEFT,\n BODY_TOP,\n BODY_WIDTH,\n BODY_HEIGHT,\n} from './styles.js';\nimport {\n buildPresentationXml,\n buildSlideMasterXml,\n buildSlideLayoutXml,\n buildThemeXml,\n} from './templates.js';\n\n// ============================================\n// Public API\n// ============================================\n\n/**\n * Options for PPTX export.\n */\nexport interface PptxExportOptions {\n /** Presentation title (appears in core properties) */\n title?: string;\n /** Presentation author */\n author?: string;\n /** Presentation description */\n description?: string;\n /**\n * Which heading depth triggers a new slide.\n * - `'h1'` — only H1 headings start slides\n * - `'h2'` — H1 and H2 headings start slides (default)\n * - `'heading'` — any heading (H1–H6) starts a slide\n */\n slideBreak?: 'h1' | 'h2' | 'heading';\n /** Default body font family. Default: \"Calibri\" */\n defaultFont?: string;\n /** Default body font size in points. Default: 18 */\n defaultFontSize?: number;\n /**\n * Squisq theme ID to apply (e.g., 'documentary', 'cinematic', 'bold').\n * Controls slide background, text colors, and fonts.\n * Falls back to the document's frontmatter `themeId` if not set here.\n */\n themeId?: string;\n /**\n * Image data keyed by the path/URL used in markdown.\n * When provided, images are embedded as picture shapes instead of\n * showing `[Image: alt]` placeholders.\n */\n images?: Map<string, ArrayBuffer>;\n}\n\n/**\n * Convert a MarkdownDocument to a .pptx ArrayBuffer.\n */\nexport async function markdownDocToPptx(\n doc: MarkdownDocument,\n options: PptxExportOptions = {},\n): Promise<ArrayBuffer> {\n // Resolve theme from options or frontmatter. The frontmatter lookup\n // accepts the editor's canonical `squisq-theme` key as well as the\n // shorter legacy `themeId` / `theme` aliases — see\n // `readFrontmatterThemeId` for the precedence.\n const themeId = options.themeId ?? readFrontmatterThemeId(doc.frontmatter);\n const style = resolveSlideStyle(themeId, options);\n\n const slides = segmentIntoSlides(doc.children, options.slideBreak ?? 'h2');\n\n // Ensure at least one slide\n if (slides.length === 0) {\n slides.push({ bodyNodes: [] });\n }\n\n const slideXmls: string[] = [];\n const slideContexts: SlideContext[] = [];\n\n for (let i = 0; i < slides.length; i++) {\n const ctx = new SlideContext(style, options.images, i);\n const xml = buildSlideXml(slides[i], ctx);\n slideXmls.push(xml);\n slideContexts.push(ctx);\n }\n\n return buildPptxPackage(slideXmls, slideContexts, options);\n}\n\n/**\n * Convert a squisq Doc to a .pptx ArrayBuffer.\n *\n * Convenience wrapper: Doc -> MarkdownDocument -> PPTX.\n */\nexport async function docToPptx(doc: Doc, options: PptxExportOptions = {}): Promise<ArrayBuffer> {\n const markdownDoc = docToMarkdown(doc);\n // Carry themeId from Doc if not set in options\n if (!options.themeId && doc.themeId) {\n options = { ...options, themeId: doc.themeId };\n }\n return markdownDocToPptx(markdownDoc, options);\n}\n\n// ============================================\n// Resolved Style\n// ============================================\n\n/** Resolved visual style for slides, derived from a Theme or defaults. */\ninterface SlideStyle {\n background: string; // hex without #\n text: string;\n titleColor: string;\n mutedColor: string;\n titleFont: string;\n bodyFont: string;\n codeFont: string;\n codeColor: string;\n hasTheme: boolean;\n}\n\nfunction resolveSlideStyle(themeId: string | undefined, options: PptxExportOptions): SlideStyle {\n if (!themeId) {\n return {\n background: 'FFFFFF',\n text: '333333',\n titleColor: '333333',\n mutedColor: '666666',\n titleFont: options.defaultFont ?? DEFAULT_TITLE_FONT,\n bodyFont: options.defaultFont ?? DEFAULT_FONT,\n codeFont: DEFAULT_CODE_FONT,\n codeColor: '333333',\n hasTheme: false,\n };\n }\n\n const theme: Theme = resolveTheme(themeId);\n const c = theme.colors;\n\n return {\n background: stripHash(c.background),\n text: stripHash(c.text),\n titleColor: stripHash(c.highlight || c.secondary || c.text),\n mutedColor: stripHash(c.textMuted || c.text),\n titleFont: resolveFontFamily(theme.typography?.titleFont, DEFAULT_TITLE_FONT),\n bodyFont: resolveFontFamily(theme.typography?.bodyFont, options.defaultFont || DEFAULT_FONT),\n codeFont: resolveFontFamily(theme.typography?.monoFont, DEFAULT_CODE_FONT),\n codeColor: stripHash(c.textMuted || c.text),\n hasTheme: true,\n };\n}\n\nfunction stripHash(color: string): string {\n return color.startsWith('#') ? color.slice(1) : color;\n}\n\n// ============================================\n// Slide Segmentation\n// ============================================\n\ninterface SlideData {\n title?: string;\n titleDepth?: number;\n bodyNodes: MarkdownBlockNode[];\n}\n\nfunction segmentIntoSlides(\n children: MarkdownBlockNode[],\n slideBreak: 'h1' | 'h2' | 'heading',\n): SlideData[] {\n const maxDepth = slideBreak === 'h1' ? 1 : slideBreak === 'h2' ? 2 : 6;\n const slides: SlideData[] = [];\n let current: SlideData | undefined;\n\n for (const node of children) {\n if (node.type === 'heading' && node.depth <= maxDepth) {\n if (current) slides.push(current);\n current = {\n title: extractPlainText(node.children),\n titleDepth: node.depth,\n bodyNodes: [],\n };\n } else {\n if (!current) {\n current = { bodyNodes: [] };\n }\n current.bodyNodes.push(node);\n }\n }\n\n if (current) slides.push(current);\n return slides;\n}\n\nfunction extractPlainText(nodes: MarkdownInlineNode[]): string {\n const parts: string[] = [];\n for (const node of nodes) {\n switch (node.type) {\n case 'text':\n parts.push(node.value);\n break;\n case 'inlineCode':\n parts.push(node.value);\n break;\n case 'strong':\n case 'emphasis':\n case 'delete':\n parts.push(extractPlainText(node.children));\n break;\n case 'link':\n parts.push(extractPlainText(node.children));\n break;\n case 'image':\n parts.push(node.alt ?? '');\n break;\n case 'inlineMath':\n parts.push(node.value);\n break;\n default:\n break;\n }\n }\n return parts.join('');\n}\n\n// ============================================\n// Slide Context\n// ============================================\n\ninterface EmbeddedImage {\n relId: string;\n mediaPath: string; // e.g. ppt/media/image_s0_1.png\n data: ArrayBuffer;\n contentType: string;\n alt: string;\n}\n\nclass SlideContext {\n private nextRelId = 1;\n\n readonly relationships: Array<{\n id: string;\n type: string;\n target: string;\n targetMode?: 'External';\n }> = [];\n\n readonly style: SlideStyle;\n readonly images: Map<string, ArrayBuffer> | undefined;\n readonly slideIndex: number;\n readonly embeddedImages: EmbeddedImage[] = [];\n private nextShapeId = 4; // 1=group, 2=title, 3=body\n\n constructor(style: SlideStyle, images: Map<string, ArrayBuffer> | undefined, slideIndex: number) {\n this.style = style;\n this.images = images;\n this.slideIndex = slideIndex;\n }\n\n allocRelId(): string {\n return `rId${this.nextRelId++ + 1}`;\n }\n\n allocShapeId(): number {\n return this.nextShapeId++;\n }\n\n addHyperlink(url: string): string {\n const id = this.allocRelId();\n this.relationships.push({\n id,\n type: REL_HYPERLINK,\n target: url,\n targetMode: 'External',\n });\n return id;\n }\n\n /** Register an embedded image and return its relationship ID */\n addImage(src: string, data: ArrayBuffer, alt: string): string {\n const relId = this.allocRelId();\n const ext = inferExtension(src);\n const contentType = inferMimeType(ext);\n const imgIndex = this.embeddedImages.length + 1;\n const mediaPath = `ppt/media/image_s${this.slideIndex}_${imgIndex}.${ext}`;\n\n this.embeddedImages.push({ relId, mediaPath, data, contentType, alt });\n this.relationships.push({\n id: relId,\n type: REL_IMAGE,\n target: `../media/image_s${this.slideIndex}_${imgIndex}.${ext}`,\n });\n\n return relId;\n }\n}\n\n// ============================================\n// Slide XML Generation\n// ============================================\n\nfunction buildSlideXml(slide: SlideData, ctx: SlideContext): string {\n const shapes: string[] = [];\n\n shapes.push(\n `<p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>` + `<p:grpSpPr/>`,\n );\n\n if (slide.title) {\n shapes.push(buildTitleShape(slide.title, ctx.style));\n }\n\n // Convert body blocks and collect any image-only paragraphs\n const bodyParas = convertBodyBlocks(slide.bodyNodes, ctx);\n const hasImages = ctx.embeddedImages.length > 0;\n const hasText = bodyParas.length > 0;\n\n if (hasText && hasImages) {\n // Split: text in top half of body area, images below\n const textHeight = Math.round(BODY_HEIGHT * 0.45);\n const imgTop = BODY_TOP + textHeight + 91440; // 0.1\" gap\n const imgHeight = BODY_HEIGHT - textHeight - 91440;\n shapes.push(buildBodyShapeCustom(bodyParas, BODY_TOP, textHeight, ctx.style));\n shapes.push(\n buildImageShape(\n ctx.embeddedImages[0],\n ctx.allocShapeId(),\n BODY_LEFT,\n imgTop,\n BODY_WIDTH,\n imgHeight,\n ),\n );\n } else if (hasImages && !hasText) {\n // Full content area for image\n shapes.push(\n buildImageShape(\n ctx.embeddedImages[0],\n ctx.allocShapeId(),\n BODY_LEFT,\n BODY_TOP,\n BODY_WIDTH,\n BODY_HEIGHT,\n ),\n );\n } else {\n // Text only (or empty)\n shapes.push(\n buildBodyShapeCustom(\n bodyParas || `<a:p><a:endParaRPr lang=\"en-US\"/></a:p>`,\n BODY_TOP,\n BODY_HEIGHT,\n ctx.style,\n ),\n );\n }\n\n // Additional images beyond the first get placed as extra shapes\n for (let i = 1; i < ctx.embeddedImages.length; i++) {\n shapes.push(\n buildImageShape(\n ctx.embeddedImages[i],\n ctx.allocShapeId(),\n BODY_LEFT,\n BODY_TOP,\n BODY_WIDTH,\n BODY_HEIGHT,\n ),\n );\n }\n\n // Build background\n const bgXml = ctx.style.hasTheme\n ? `<p:bg><p:bgPr><a:solidFill><a:srgbClr val=\"${ctx.style.background}\"/></a:solidFill><a:effectLst/></p:bgPr></p:bg>`\n : '';\n\n return (\n xmlDeclaration() +\n `<p:sld xmlns:a=\"${NS_DRAWINGML}\" xmlns:r=\"${NS_R}\" xmlns:p=\"${NS_PML}\">` +\n `<p:cSld>` +\n bgXml +\n `<p:spTree>` +\n shapes.join('') +\n `</p:spTree>` +\n `</p:cSld>` +\n `</p:sld>`\n );\n}\n\nfunction buildTitleShape(title: string, style: SlideStyle): string {\n return (\n `<p:sp>` +\n `<p:nvSpPr>` +\n `<p:cNvPr id=\"2\" name=\"Title\"/>` +\n `<p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr>` +\n `<p:nvPr><p:ph type=\"title\"/></p:nvPr>` +\n `</p:nvSpPr>` +\n `<p:spPr>` +\n `<a:xfrm><a:off x=\"${TITLE_LEFT}\" y=\"${TITLE_TOP}\"/>` +\n `<a:ext cx=\"${TITLE_WIDTH}\" cy=\"${TITLE_HEIGHT}\"/></a:xfrm>` +\n `</p:spPr>` +\n `<p:txBody>` +\n `<a:bodyPr/>` +\n `<a:lstStyle/>` +\n `<a:p>` +\n `<a:r>` +\n `<a:rPr lang=\"en-US\" sz=\"${DEFAULT_TITLE_SIZE}\" dirty=\"0\">` +\n `<a:solidFill><a:srgbClr val=\"${style.titleColor}\"/></a:solidFill>` +\n `<a:latin typeface=\"${escapeXml(style.titleFont)}\"/>` +\n `</a:rPr>` +\n `<a:t>${escapeXml(title)}</a:t>` +\n `</a:r>` +\n `</a:p>` +\n `</p:txBody>` +\n `</p:sp>`\n );\n}\n\nfunction buildBodyShapeCustom(\n bodyContent: string,\n top: number,\n height: number,\n style: SlideStyle,\n): string {\n // Set default text color for the body via defRPr\n const defRPr = style.hasTheme\n ? `<a:defRPr><a:solidFill><a:srgbClr val=\"${style.text}\"/></a:solidFill><a:latin typeface=\"${escapeXml(style.bodyFont)}\"/></a:defRPr>`\n : '';\n\n return (\n `<p:sp>` +\n `<p:nvSpPr>` +\n `<p:cNvPr id=\"3\" name=\"Content\"/>` +\n `<p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr>` +\n `<p:nvPr><p:ph idx=\"1\"/></p:nvPr>` +\n `</p:nvSpPr>` +\n `<p:spPr>` +\n `<a:xfrm><a:off x=\"${BODY_LEFT}\" y=\"${top}\"/>` +\n `<a:ext cx=\"${BODY_WIDTH}\" cy=\"${height}\"/></a:xfrm>` +\n `</p:spPr>` +\n `<p:txBody>` +\n `<a:bodyPr/>` +\n `<a:lstStyle>` +\n `<a:lvl1pPr>${defRPr}</a:lvl1pPr>` +\n `</a:lstStyle>` +\n bodyContent +\n `</p:txBody>` +\n `</p:sp>`\n );\n}\n\nfunction buildImageShape(\n img: EmbeddedImage,\n shapeId: number,\n left: number,\n top: number,\n maxWidth: number,\n maxHeight: number,\n): string {\n return (\n `<p:pic>` +\n `<p:nvPicPr>` +\n `<p:cNvPr id=\"${shapeId}\" name=\"${escapeXml(img.alt || 'Picture')}\"/>` +\n `<p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr>` +\n `<p:nvPr/>` +\n `</p:nvPicPr>` +\n `<p:blipFill>` +\n `<a:blip r:embed=\"${img.relId}\"/>` +\n `<a:stretch><a:fillRect/></a:stretch>` +\n `</p:blipFill>` +\n `<p:spPr>` +\n `<a:xfrm><a:off x=\"${left}\" y=\"${top}\"/>` +\n `<a:ext cx=\"${maxWidth}\" cy=\"${maxHeight}\"/></a:xfrm>` +\n `<a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>` +\n `</p:spPr>` +\n `</p:pic>`\n );\n}\n\n// ============================================\n// Block Conversion (Markdown -> DrawingML paragraphs)\n// ============================================\n\nfunction convertBodyBlocks(nodes: MarkdownBlockNode[], ctx: SlideContext): string {\n const parts: string[] = [];\n for (const node of nodes) {\n parts.push(convertBlock(node, ctx, 0));\n }\n return parts.join('');\n}\n\nfunction convertBlock(node: MarkdownBlockNode, ctx: SlideContext, listDepth: number): string {\n switch (node.type) {\n case 'heading':\n return convertHeading(node, ctx);\n case 'paragraph':\n return convertParagraph(node, ctx);\n case 'blockquote':\n return convertBlockquote(node, ctx);\n case 'list':\n return convertList(node, ctx, listDepth);\n case 'code':\n return convertCodeBlock(node, ctx);\n case 'table':\n return convertTable(node, ctx);\n case 'thematicBreak':\n return convertThematicBreak(ctx);\n case 'htmlBlock':\n return convertHtmlBlock(node, ctx);\n case 'math':\n return convertMathBlock(node);\n default:\n return '';\n }\n}\n\nfunction convertHeading(node: MarkdownHeading, ctx: SlideContext): string {\n const size = headingSizeForDepth(node.depth);\n const runs = convertInlines(node.children, ctx, { bold: true });\n return (\n `<a:p>` +\n `<a:pPr>` +\n `<a:spcBef><a:spcPts val=\"600\"/></a:spcBef>` +\n `<a:defRPr sz=\"${size}\" b=\"1\">` +\n `<a:solidFill><a:srgbClr val=\"${ctx.style.titleColor}\"/></a:solidFill>` +\n `<a:latin typeface=\"${escapeXml(ctx.style.titleFont)}\"/>` +\n `</a:defRPr>` +\n `</a:pPr>` +\n runs +\n `</a:p>`\n );\n}\n\nfunction headingSizeForDepth(depth: number): number {\n const sizes: Record<number, number> = { 1: 3200, 2: 2800, 3: 2400, 4: 2000, 5: 1800, 6: 1800 };\n return sizes[depth] ?? 1800;\n}\n\n/**\n * Check if a paragraph contains only a single image (no surrounding text).\n */\nfunction isImageOnlyParagraph(node: MarkdownParagraph): MarkdownImage | null {\n if (node.children.length === 1 && node.children[0].type === 'image') {\n return node.children[0];\n }\n return null;\n}\n\nfunction convertParagraph(node: MarkdownParagraph, ctx: SlideContext): string {\n // If paragraph is just an image and we have the data, embed it as a shape\n const soloImage = isImageOnlyParagraph(node);\n if (soloImage && ctx.images) {\n const data = ctx.images.get(soloImage.url);\n if (data) {\n ctx.addImage(soloImage.url, data, soloImage.alt || '');\n return ''; // Image will be rendered as a p:pic shape, not inline text\n }\n }\n\n const runs = convertInlines(node.children, ctx);\n return `<a:p>${runs}</a:p>`;\n}\n\nfunction convertBlockquote(node: MarkdownBlockquote, ctx: SlideContext): string {\n const parts: string[] = [];\n for (const child of node.children) {\n if (child.type === 'paragraph') {\n const runs = convertInlines(child.children, ctx, { italic: true });\n parts.push(\n `<a:p>` +\n `<a:pPr marL=\"457200\">` +\n `<a:spcBef><a:spcPts val=\"200\"/></a:spcBef>` +\n `</a:pPr>` +\n runs +\n `</a:p>`,\n );\n } else {\n parts.push(convertBlock(child, ctx, 0));\n }\n }\n return parts.join('');\n}\n\nfunction convertList(node: MarkdownList, ctx: SlideContext, depth: number): string {\n const parts: string[] = [];\n for (const item of node.children) {\n parts.push(convertListItem(item, ctx, node.ordered ?? false, depth));\n }\n return parts.join('');\n}\n\nfunction convertListItem(\n item: MarkdownListItem,\n ctx: SlideContext,\n ordered: boolean,\n depth: number,\n): string {\n const parts: string[] = [];\n for (const child of item.children) {\n if (child.type === 'paragraph') {\n const runs = convertInlines(child.children, ctx);\n const bullet = ordered ? `<a:buAutoNum type=\"arabicPeriod\"/>` : `<a:buChar char=\"\\u2022\"/>`;\n const indent = 457200 * (depth + 1);\n parts.push(\n `<a:p>` +\n `<a:pPr lvl=\"${depth}\" marL=\"${indent}\" indent=\"-228600\">` +\n bullet +\n `</a:pPr>` +\n runs +\n `</a:p>`,\n );\n } else if (child.type === 'list') {\n parts.push(convertList(child, ctx, depth + 1));\n } else {\n parts.push(convertBlock(child, ctx, depth));\n }\n }\n return parts.join('');\n}\n\nfunction convertCodeBlock(node: MarkdownCodeBlock, ctx: SlideContext): string {\n const lines = node.value.split('\\n');\n const parts: string[] = [];\n for (const line of lines) {\n parts.push(\n `<a:p>` +\n `<a:r>` +\n `<a:rPr lang=\"en-US\" sz=\"${DEFAULT_CODE_SIZE}\" dirty=\"0\">` +\n `<a:latin typeface=\"${escapeXml(ctx.style.codeFont)}\"/>` +\n `<a:solidFill><a:srgbClr val=\"${ctx.style.codeColor}\"/></a:solidFill>` +\n `</a:rPr>` +\n `<a:t>${escapeXml(line || ' ')}</a:t>` +\n `</a:r>` +\n `</a:p>`,\n );\n }\n return parts.join('');\n}\n\nfunction convertTable(node: MarkdownTable, ctx: SlideContext): string {\n const parts: string[] = [];\n for (let ri = 0; ri < node.children.length; ri++) {\n const row = node.children[ri];\n parts.push(convertTableRow(row, ctx, ri === 0));\n }\n return parts.join('');\n}\n\nfunction convertTableRow(row: MarkdownTableRow, ctx: SlideContext, isHeader: boolean): string {\n const cells: string[] = [];\n for (const cell of row.children) {\n cells.push(extractPlainText(cell.children));\n }\n const text = cells.join(' | ');\n const format: InlineFormat = isHeader ? { bold: true } : {};\n return `<a:p>${makeRun(text, format, ctx.style)}</a:p>`;\n}\n\nfunction convertThematicBreak(ctx: SlideContext): string {\n return `<a:p><a:pPr><a:spcAft><a:spcPts val=\"1200\"/></a:spcAft></a:pPr><a:r><a:rPr lang=\"en-US\" sz=\"400\"><a:solidFill><a:srgbClr val=\"${ctx.style.mutedColor}\"/></a:solidFill></a:rPr><a:t>———</a:t></a:r></a:p>`;\n}\n\nfunction convertHtmlBlock(node: MarkdownHtmlBlock, ctx: SlideContext): string {\n const text = stripHtmlTags(node.rawHtml).trim();\n if (!text) return '';\n return `<a:p>${makeRun(text, {}, ctx.style)}</a:p>`;\n}\n\nfunction convertMathBlock(node: MarkdownMathBlock): string {\n return (\n `<a:p>` +\n `<a:pPr algn=\"ctr\"/>` +\n `<a:r>` +\n `<a:rPr lang=\"en-US\" i=\"1\">` +\n `<a:latin typeface=\"Cambria Math\"/>` +\n `</a:rPr>` +\n `<a:t>${escapeXml(node.value)}</a:t>` +\n `</a:r>` +\n `</a:p>`\n );\n}\n\n// ============================================\n// Inline Conversion (DrawingML runs)\n// ============================================\n\ninterface InlineFormat {\n bold?: boolean;\n italic?: boolean;\n strike?: boolean;\n code?: boolean;\n}\n\nfunction convertInlines(\n nodes: MarkdownInlineNode[],\n ctx: SlideContext,\n format: InlineFormat = {},\n): string {\n const parts: string[] = [];\n for (const node of nodes) {\n parts.push(convertInline(node, ctx, format));\n }\n return parts.join('');\n}\n\nfunction convertInline(node: MarkdownInlineNode, ctx: SlideContext, format: InlineFormat): string {\n switch (node.type) {\n case 'text':\n return makeRun(node.value, format, ctx.style);\n case 'strong':\n return convertInlines(node.children, ctx, { ...format, bold: true });\n case 'emphasis':\n return convertInlines(node.children, ctx, { ...format, italic: true });\n case 'delete':\n return convertInlines(node.children, ctx, { ...format, strike: true });\n case 'inlineCode':\n return makeRun(node.value, { ...format, code: true }, ctx.style);\n case 'link':\n return convertLink(node, ctx, format);\n case 'image':\n return convertImage(node, format, ctx);\n case 'break':\n return `<a:br/>`;\n case 'htmlInline':\n return makeRun(stripHtmlTags(node.rawHtml), format, ctx.style);\n case 'inlineMath':\n return makeRun(node.value, { ...format, code: true }, ctx.style);\n default:\n return '';\n }\n}\n\nfunction makeRun(text: string, format: InlineFormat, style: SlideStyle): string {\n if (!text) return '';\n\n const rPrParts: string[] = [`lang=\"en-US\"`, `dirty=\"0\"`];\n\n if (format.bold) rPrParts.push(`b=\"1\"`);\n if (format.italic) rPrParts.push(`i=\"1\"`);\n if (format.strike) rPrParts.push(`strike=\"sngStrike\"`);\n\n let innerParts = '';\n\n if (format.code) {\n innerParts += `<a:latin typeface=\"${escapeXml(style.codeFont)}\"/>`;\n innerParts += `<a:solidFill><a:srgbClr val=\"${style.codeColor}\"/></a:solidFill>`;\n rPrParts.push(`sz=\"${DEFAULT_CODE_SIZE}\"`);\n } else if (style.hasTheme) {\n innerParts += `<a:solidFill><a:srgbClr val=\"${style.text}\"/></a:solidFill>`;\n }\n\n return (\n `<a:r>` +\n `<a:rPr ${rPrParts.join(' ')}>${innerParts}</a:rPr>` +\n `<a:t>${escapeXml(text)}</a:t>` +\n `</a:r>`\n );\n}\n\nfunction convertLink(node: MarkdownLink, ctx: SlideContext, format: InlineFormat): string {\n const rId = ctx.addHyperlink(node.url);\n const parts: string[] = [];\n\n for (const child of node.children) {\n if (child.type === 'text') {\n parts.push(makeHyperlinkRun(child.value, rId, format));\n } else {\n parts.push(convertInline(child, ctx, format));\n }\n }\n\n return parts.join('');\n}\n\nfunction makeHyperlinkRun(text: string, rId: string, format: InlineFormat): string {\n if (!text) return '';\n\n const rPrParts: string[] = [`lang=\"en-US\"`, `dirty=\"0\"`];\n if (format.bold) rPrParts.push(`b=\"1\"`);\n if (format.italic) rPrParts.push(`i=\"1\"`);\n\n return (\n `<a:r>` +\n `<a:rPr ${rPrParts.join(' ')}>` +\n `<a:solidFill><a:srgbClr val=\"${HYPERLINK_COLOR}\"/></a:solidFill>` +\n `<a:hlinkClick r:id=\"${rId}\"/>` +\n `</a:rPr>` +\n `<a:t>${escapeXml(text)}</a:t>` +\n `</a:r>`\n );\n}\n\nfunction convertImage(node: MarkdownImage, format: InlineFormat, ctx: SlideContext): string {\n // For inline images (not image-only paragraphs), try to embed\n if (ctx.images) {\n const data = ctx.images.get(node.url);\n if (data) {\n // Register for rendering as a shape; return empty text\n ctx.addImage(node.url, data, node.alt || '');\n return '';\n }\n }\n // Fallback: placeholder text\n const alt = node.alt || node.url;\n return makeRun(`[Image: ${alt}]`, { ...format, italic: true }, ctx.style);\n}\n\n// ============================================\n// Package Assembly\n// ============================================\n\nasync function buildPptxPackage(\n slideXmls: string[],\n slideContexts: SlideContext[],\n options: PptxExportOptions,\n): Promise<ArrayBuffer> {\n const pkg = createPackage();\n const slideCount = slideXmls.length;\n\n const slideMasterRelId = 'rId100';\n const themeRelId = 'rId101';\n const slideRelIds: string[] = [];\n\n for (let i = 0; i < slideCount; i++) {\n slideRelIds.push(`rId${i + 1}`);\n }\n\n // --- ppt/presentation.xml ---\n const presentationXml = buildPresentationXml(\n slideCount,\n slideRelIds,\n slideMasterRelId,\n themeRelId,\n );\n pkg.addPart('ppt/presentation.xml', presentationXml, CONTENT_TYPE_PPTX_PRESENTATION);\n\n // --- Slides ---\n for (let i = 0; i < slideCount; i++) {\n const slidePath = `ppt/slides/slide${i + 1}.xml`;\n pkg.addPart(slidePath, slideXmls[i], CONTENT_TYPE_PPTX_SLIDE);\n\n pkg.addRelationship(slidePath, {\n id: 'rId1',\n type: REL_SLIDE_LAYOUT,\n target: '../slideLayouts/slideLayout1.xml',\n });\n\n // Per-slide relationships (hyperlinks + images)\n const ctx = slideContexts[i];\n for (const rel of ctx.relationships) {\n pkg.addRelationship(slidePath, {\n id: rel.id,\n type: rel.type,\n target: rel.target,\n ...(rel.targetMode ? { targetMode: rel.targetMode } : {}),\n });\n }\n\n // Embed image binary parts\n for (const img of ctx.embeddedImages) {\n pkg.addBinaryPart(img.mediaPath, img.data, img.contentType);\n }\n }\n\n // --- Slide layout ---\n const layoutMasterRelId = 'rId1';\n const slideLayoutXml = buildSlideLayoutXml(layoutMasterRelId);\n pkg.addPart('ppt/slideLayouts/slideLayout1.xml', slideLayoutXml, CONTENT_TYPE_PPTX_SLIDE_LAYOUT);\n pkg.addRelationship('ppt/slideLayouts/slideLayout1.xml', {\n id: layoutMasterRelId,\n type: REL_SLIDE_MASTER,\n target: '../slideMasters/slideMaster1.xml',\n });\n\n // --- Slide master ---\n const masterLayoutRelId = 'rId1';\n const masterThemeRelId = 'rId2';\n const slideMasterXml = buildSlideMasterXml(masterLayoutRelId);\n pkg.addPart('ppt/slideMasters/slideMaster1.xml', slideMasterXml, CONTENT_TYPE_PPTX_SLIDE_MASTER);\n pkg.addRelationship('ppt/slideMasters/slideMaster1.xml', {\n id: masterLayoutRelId,\n type: REL_SLIDE_LAYOUT,\n target: '../slideLayouts/slideLayout1.xml',\n });\n pkg.addRelationship('ppt/slideMasters/slideMaster1.xml', {\n id: masterThemeRelId,\n type: REL_THEME,\n target: '../theme/theme1.xml',\n });\n\n // --- Theme ---\n const themeXml = buildThemeXml();\n pkg.addPart('ppt/theme/theme1.xml', themeXml, CONTENT_TYPE_PPTX_THEME);\n\n // --- Root relationship ---\n pkg.addRelationship('', {\n id: 'rId1',\n type: REL_OFFICE_DOCUMENT,\n target: 'ppt/presentation.xml',\n });\n\n // --- Presentation relationships ---\n for (let i = 0; i < slideCount; i++) {\n pkg.addRelationship('ppt/presentation.xml', {\n id: slideRelIds[i],\n type: REL_SLIDE,\n target: `slides/slide${i + 1}.xml`,\n });\n }\n pkg.addRelationship('ppt/presentation.xml', {\n id: slideMasterRelId,\n type: REL_SLIDE_MASTER,\n target: 'slideMasters/slideMaster1.xml',\n });\n pkg.addRelationship('ppt/presentation.xml', {\n id: themeRelId,\n type: REL_THEME,\n target: 'theme/theme1.xml',\n });\n\n // --- Core properties ---\n if (options.title || options.author || options.description) {\n pkg.setCoreProperties({\n title: options.title,\n creator: options.author,\n description: options.description,\n created: new Date().toISOString(),\n modified: new Date().toISOString(),\n });\n }\n\n return pkg.toArrayBuffer();\n}\n\n// ============================================\n// Helpers\n// ============================================\n\nfunction stripHtmlTags(html: string): string {\n return html.replace(/<[^>]*>/g, '');\n}\n\nfunction inferExtension(path: string): string {\n const dot = path.lastIndexOf('.');\n if (dot === -1) return 'png';\n const ext = path\n .substring(dot + 1)\n .toLowerCase()\n .split('?')[0];\n return ext || 'png';\n}\n\nfunction inferMimeType(ext: string): string {\n const mimeTypes: Record<string, string> = {\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n png: 'image/png',\n gif: 'image/gif',\n webp: 'image/webp',\n svg: 'image/svg+xml',\n bmp: 'image/bmp',\n avif: 'image/avif',\n };\n return mimeTypes[ext] || 'image/png';\n}\n","/**\n * PPTX Constants & Style Definitions\n *\n * Shared constants for PPTX export: slide dimensions, text box positioning,\n * font sizes, and unit conversion helpers. All dimensions are in EMU\n * (English Metric Units) unless otherwise noted.\n *\n * 1 inch = 914400 EMU\n * 1 point = 12700 EMU\n * Font sizes in PPTX are in hundredths of a point (centi-points).\n */\n\n// ============================================\n// Slide Dimensions (EMU)\n// ============================================\n\n/** Widescreen slide width: 10 inches */\nexport const SLIDE_WIDTH = 9144000;\n\n/** Widescreen slide height: 7.5 inches */\nexport const SLIDE_HEIGHT = 6858000;\n\n// ============================================\n// Title Shape Positioning (EMU)\n// ============================================\n\n/** Title shape left offset: 0.5 inches */\nexport const TITLE_LEFT = 457200;\n\n/** Title shape top offset: 0.3 inches */\nexport const TITLE_TOP = 274638;\n\n/** Title shape width: 9 inches */\nexport const TITLE_WIDTH = 8229600;\n\n/** Title shape height: 1.25 inches */\nexport const TITLE_HEIGHT = 1143000;\n\n// ============================================\n// Body Shape Positioning (EMU)\n// ============================================\n\n/** Body shape left offset: 0.5 inches */\nexport const BODY_LEFT = 457200;\n\n/** Body shape top offset: 1.75 inches */\nexport const BODY_TOP = 1600200;\n\n/** Body shape width: 9 inches */\nexport const BODY_WIDTH = 8229600;\n\n/** Body shape height: 4.95 inches */\nexport const BODY_HEIGHT = 4525963;\n\n// ============================================\n// Default Fonts & Sizes\n// ============================================\n\n/** Default font for body text */\nexport const DEFAULT_FONT = 'Calibri';\n\n/** Default font for titles */\nexport const DEFAULT_TITLE_FONT = 'Calibri Light';\n\n/** Default font for code blocks */\nexport const DEFAULT_CODE_FONT = 'Consolas';\n\n/** Default title font size in centi-points (44pt) */\nexport const DEFAULT_TITLE_SIZE = 4400;\n\n/** Default body font size in centi-points (18pt) */\nexport const DEFAULT_BODY_SIZE = 1800;\n\n/** Default code font size in centi-points (14pt) */\nexport const DEFAULT_CODE_SIZE = 1400;\n\n/** Hyperlink color (standard blue) */\nexport const HYPERLINK_COLOR = '0563C1';\n\n// ============================================\n// Unit Helpers\n// ============================================\n\n/**\n * Convert inches to EMUs.\n */\nexport function inchesToEmu(inches: number): number {\n return Math.round(inches * 914400);\n}\n\n/**\n * Convert points to centi-points (PPTX font size unit).\n */\nexport function pointsToCentiPoints(points: number): number {\n return Math.round(points * 100);\n}\n","/**\n * PPTX Boilerplate Templates\n *\n * Minimal but valid XML templates for the required PPTX support parts:\n * slide master, slide layout, and theme. These are semi-static — they\n * don't change per-document but are required for PowerPoint to open the file.\n */\n\nimport { xmlDeclaration } from '../ooxml/xmlUtils.js';\nimport { NS_PML, NS_DRAWINGML, NS_R } from '../ooxml/namespaces.js';\nimport {\n SLIDE_WIDTH,\n SLIDE_HEIGHT,\n TITLE_LEFT,\n TITLE_TOP,\n TITLE_WIDTH,\n TITLE_HEIGHT,\n BODY_LEFT,\n BODY_TOP,\n BODY_WIDTH,\n BODY_HEIGHT,\n} from './styles.js';\n\n/**\n * Build presentation.xml — the root document listing all slides.\n */\nexport function buildPresentationXml(\n slideCount: number,\n slideRelIds: string[],\n slideMasterRelId: string,\n _themeRelId: string,\n): string {\n const sldIdList: string[] = [];\n for (let i = 0; i < slideCount; i++) {\n // Slide IDs start at 256 (PowerPoint convention)\n sldIdList.push(`<p:sldId id=\"${256 + i}\" r:id=\"${slideRelIds[i]}\"/>`);\n }\n\n return (\n xmlDeclaration() +\n `<p:presentation xmlns:a=\"${NS_DRAWINGML}\" xmlns:r=\"${NS_R}\" xmlns:p=\"${NS_PML}\"` +\n ` saveSubsetFonts=\"1\">` +\n `<p:sldMasterIdLst>` +\n `<p:sldMasterId id=\"2147483648\" r:id=\"${slideMasterRelId}\"/>` +\n `</p:sldMasterIdLst>` +\n `<p:sldIdLst>${sldIdList.join('')}</p:sldIdLst>` +\n `<p:sldSz cx=\"${SLIDE_WIDTH}\" cy=\"${SLIDE_HEIGHT}\" type=\"screen4x3\"/>` +\n `<p:notesSz cx=\"${SLIDE_HEIGHT}\" cy=\"${SLIDE_WIDTH}\"/>` +\n `</p:presentation>`\n );\n}\n\n/**\n * Build a minimal slide master (slideMaster1.xml).\n */\nexport function buildSlideMasterXml(layoutRelId: string): string {\n return (\n xmlDeclaration() +\n `<p:sldMaster xmlns:a=\"${NS_DRAWINGML}\" xmlns:r=\"${NS_R}\" xmlns:p=\"${NS_PML}\">` +\n `<p:cSld>` +\n `<p:bg>` +\n `<p:bgRef idx=\"1001\">` +\n `<a:schemeClr val=\"bg1\"/>` +\n `</p:bgRef>` +\n `</p:bg>` +\n `<p:spTree>` +\n `<p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>` +\n `<p:grpSpPr/>` +\n `</p:spTree>` +\n `</p:cSld>` +\n `<p:clrMap bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\"` +\n ` accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\"` +\n ` accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"/>` +\n `<p:sldLayoutIdLst>` +\n `<p:sldLayoutId id=\"2147483649\" r:id=\"${layoutRelId}\"/>` +\n `</p:sldLayoutIdLst>` +\n `</p:sldMaster>`\n );\n}\n\n/**\n * Build a minimal slide layout (slideLayout1.xml) — title + content.\n */\nexport function buildSlideLayoutXml(_masterRelId: string): string {\n return (\n xmlDeclaration() +\n `<p:sldLayout xmlns:a=\"${NS_DRAWINGML}\" xmlns:r=\"${NS_R}\" xmlns:p=\"${NS_PML}\"` +\n ` type=\"obj\" preserve=\"1\">` +\n `<p:cSld name=\"Title and Content\">` +\n `<p:spTree>` +\n `<p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>` +\n `<p:grpSpPr/>` +\n // Title placeholder\n `<p:sp>` +\n `<p:nvSpPr>` +\n `<p:cNvPr id=\"2\" name=\"Title 1\"/>` +\n `<p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr>` +\n `<p:nvPr><p:ph type=\"title\"/></p:nvPr>` +\n `</p:nvSpPr>` +\n `<p:spPr>` +\n `<a:xfrm><a:off x=\"${TITLE_LEFT}\" y=\"${TITLE_TOP}\"/>` +\n `<a:ext cx=\"${TITLE_WIDTH}\" cy=\"${TITLE_HEIGHT}\"/></a:xfrm>` +\n `</p:spPr>` +\n `<p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody>` +\n `</p:sp>` +\n // Content placeholder\n `<p:sp>` +\n `<p:nvSpPr>` +\n `<p:cNvPr id=\"3\" name=\"Content 2\"/>` +\n `<p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr>` +\n `<p:nvPr><p:ph idx=\"1\"/></p:nvPr>` +\n `</p:nvSpPr>` +\n `<p:spPr>` +\n `<a:xfrm><a:off x=\"${BODY_LEFT}\" y=\"${BODY_TOP}\"/>` +\n `<a:ext cx=\"${BODY_WIDTH}\" cy=\"${BODY_HEIGHT}\"/></a:xfrm>` +\n `</p:spPr>` +\n `<p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody>` +\n `</p:sp>` +\n `</p:spTree>` +\n `</p:cSld>` +\n `</p:sldLayout>`\n );\n}\n\n/**\n * Build a minimal DrawingML theme (theme1.xml).\n */\nexport function buildThemeXml(): string {\n return (\n xmlDeclaration() +\n `<a:theme xmlns:a=\"${NS_DRAWINGML}\" name=\"Office Theme\">` +\n `<a:themeElements>` +\n // Color scheme\n `<a:clrScheme name=\"Office\">` +\n `<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>` +\n `<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>` +\n `<a:dk2><a:srgbClr val=\"44546A\"/></a:dk2>` +\n `<a:lt2><a:srgbClr val=\"E7E6E6\"/></a:lt2>` +\n `<a:accent1><a:srgbClr val=\"4472C4\"/></a:accent1>` +\n `<a:accent2><a:srgbClr val=\"ED7D31\"/></a:accent2>` +\n `<a:accent3><a:srgbClr val=\"A5A5A5\"/></a:accent3>` +\n `<a:accent4><a:srgbClr val=\"FFC000\"/></a:accent4>` +\n `<a:accent5><a:srgbClr val=\"5B9BD5\"/></a:accent5>` +\n `<a:accent6><a:srgbClr val=\"70AD47\"/></a:accent6>` +\n `<a:hlink><a:srgbClr val=\"0563C1\"/></a:hlink>` +\n `<a:folHlink><a:srgbClr val=\"954F72\"/></a:folHlink>` +\n `</a:clrScheme>` +\n // Font scheme\n `<a:fontScheme name=\"Office\">` +\n `<a:majorFont>` +\n `<a:latin typeface=\"Calibri Light\"/>` +\n `<a:ea typeface=\"\"/>` +\n `<a:cs typeface=\"\"/>` +\n `</a:majorFont>` +\n `<a:minorFont>` +\n `<a:latin typeface=\"Calibri\"/>` +\n `<a:ea typeface=\"\"/>` +\n `<a:cs typeface=\"\"/>` +\n `</a:minorFont>` +\n `</a:fontScheme>` +\n // Format scheme (minimal)\n `<a:fmtScheme name=\"Office\">` +\n `<a:fillStyleLst>` +\n `<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>` +\n `<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>` +\n `<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>` +\n `</a:fillStyleLst>` +\n `<a:lnStyleLst>` +\n `<a:ln w=\"6350\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill></a:ln>` +\n `<a:ln w=\"6350\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill></a:ln>` +\n `<a:ln w=\"6350\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill></a:ln>` +\n `</a:lnStyleLst>` +\n `<a:effectStyleLst>` +\n `<a:effectStyle><a:effectLst/></a:effectStyle>` +\n `<a:effectStyle><a:effectLst/></a:effectStyle>` +\n `<a:effectStyle><a:effectLst/></a:effectStyle>` +\n `</a:effectStyleLst>` +\n `<a:bgFillStyleLst>` +\n `<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>` +\n `<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>` +\n `<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>` +\n `</a:bgFillStyleLst>` +\n `</a:fmtScheme>` +\n `</a:themeElements>` +\n `</a:theme>`\n );\n}\n","/**\n * @bendyline/squisq-formats PPTX Module\n *\n * PowerPoint .pptx export support using PresentationML (`<p:presentation>`,\n * `<p:sld>`) via the shared ooxml/ infrastructure.\n *\n * Slide segmentation: each H1/H2 heading starts a new slide by default.\n * Inline formatting (bold, italic, code, links) is preserved as DrawingML runs.\n *\n * Import is not yet implemented.\n *\n * @example\n * ```ts\n * import { markdownDocToPptx } from '@bendyline/squisq-formats/pptx';\n * ```\n */\n\n// Export\nexport { markdownDocToPptx, docToPptx } from './export.js';\nexport type { PptxExportOptions } from './export.js';\n\n// Import (stubs — not yet implemented)\nimport type { MarkdownDocument } from '@bendyline/squisq/markdown';\nimport type { Doc } from '@bendyline/squisq/schemas';\n\n/**\n * Options for PPTX import (placeholder).\n */\nexport interface PptxImportOptions {\n /** Whether to extract embedded images as data URIs */\n extractImages?: boolean;\n}\n\n/**\n * Convert a .pptx file to a MarkdownDocument.\n *\n * @throws Error — PPTX import is not yet implemented\n */\nexport async function pptxToMarkdownDoc(\n _data: ArrayBuffer | Blob,\n _options?: PptxImportOptions,\n): Promise<MarkdownDocument> {\n throw new Error('PPTX import is not yet implemented');\n}\n\n/**\n * Convert a .pptx file to a squisq Doc.\n *\n * @throws Error — PPTX import is not yet implemented\n */\nexport async function pptxToDoc(\n _data: ArrayBuffer | Blob,\n _options?: PptxImportOptions,\n): Promise<Doc> {\n throw new Error('PPTX import is not yet implemented');\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/docx/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAS,MAAM,2BAA2B,CAAC;AAG5D,OAAO,KAAK,EACV,gBAAgB,EAkBjB,MAAM,4BAA4B,CAAC;AAuCpC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAItB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAG/F"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/docx/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAS,MAAM,2BAA2B,CAAC;AAG5D,OAAO,KAAK,EACV,gBAAgB,EAkBjB,MAAM,4BAA4B,CAAC;AAwCpC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAG/F"}
@@ -16,8 +16,9 @@
16
16
  * const blob = await markdownDocToDocx(md);
17
17
  * ```
18
18
  */
19
- import { resolveTheme } from '@bendyline/squisq/schemas';
19
+ import { resolveTheme, resolveFontFamily } from '@bendyline/squisq/schemas';
20
20
  import { docToMarkdown } from '@bendyline/squisq/doc';
21
+ import { readFrontmatterThemeId } from '@bendyline/squisq/markdown';
21
22
  import { createPackage } from '../ooxml/writer.js';
22
23
  import { xmlDeclaration, escapeXml } from '../ooxml/xmlUtils.js';
23
24
  import { NS_WML, NS_R, NS_MC, REL_OFFICE_DOCUMENT, REL_STYLES, REL_NUMBERING, REL_SETTINGS, REL_FONT_TABLE, REL_HYPERLINK, REL_IMAGE, REL_FOOTNOTES, CONTENT_TYPE_DOCX_DOCUMENT, CONTENT_TYPE_DOCX_STYLES, CONTENT_TYPE_DOCX_NUMBERING, CONTENT_TYPE_DOCX_SETTINGS, CONTENT_TYPE_DOCX_FONT_TABLE, CONTENT_TYPE_DOCX_FOOTNOTES, } from '../ooxml/namespaces.js';
@@ -30,9 +31,16 @@ import { DEPTH_TO_STYLE_ID, HEADING_FONT_SIZES, DEFAULT_FONT, DEFAULT_HEADING_FO
30
31
  * @returns An ArrayBuffer containing the .docx file
31
32
  */
32
33
  export async function markdownDocToDocx(doc, options = {}) {
33
- const ctx = new ExportContext(options);
34
+ // Mirror the PPTX export: fall back to the doc's frontmatter themeId
35
+ // when the caller didn't pass one explicitly. Lets the editor's
36
+ // `squisq-theme: …` frontmatter flow straight through without each
37
+ // host wiring its own resolution.
38
+ const resolvedOptions = options.themeId !== undefined
39
+ ? options
40
+ : { ...options, themeId: readFrontmatterThemeId(doc.frontmatter) };
41
+ const ctx = new ExportContext(resolvedOptions);
34
42
  const bodyXml = convertBlocks(doc.children, ctx);
35
- return buildDocxPackage(bodyXml, ctx, options);
43
+ return buildDocxPackage(bodyXml, ctx, resolvedOptions);
36
44
  }
37
45
  /**
38
46
  * Convert a squisq Doc to a .docx Blob.
@@ -77,14 +85,29 @@ class ExportContext {
77
85
  let themeFont;
78
86
  let themeTitleFont;
79
87
  let themeHeadingColor;
88
+ let themeBodyColor;
89
+ let themeMutedColor;
90
+ let themeBackgroundColor;
80
91
  if (options.themeId) {
81
92
  const theme = resolveTheme(options.themeId);
82
- themeFont = theme.typography?.bodyFontFamily;
83
- themeTitleFont = theme.typography?.titleFontFamily;
84
- if (theme.colors?.primary) {
85
- const c = theme.colors.primary;
86
- themeHeadingColor = c.startsWith('#') ? c.slice(1) : c;
87
- }
93
+ // Theme fonts arrive as CSS stacks (e.g. `"Oswald", Impact,
94
+ // "Arial Black", sans-serif`). Word's `w:ascii` attribute is a
95
+ // single font name — passing the whole stack is treated as a
96
+ // bogus literal name and Word falls through to Calibri. Take the
97
+ // first concrete name from the stack so Word can resolve it (or
98
+ // gracefully fall back to its own default if the font isn't
99
+ // installed on the reader's machine).
100
+ themeFont = firstFontFromStack(resolveFontFamily(theme.typography?.bodyFont, ''));
101
+ themeTitleFont = firstFontFromStack(resolveFontFamily(theme.typography?.titleFont, ''));
102
+ const stripHash = (c) => (c.startsWith('#') ? c.slice(1) : c);
103
+ if (theme.colors?.primary)
104
+ themeHeadingColor = stripHash(theme.colors.primary);
105
+ if (theme.colors?.text)
106
+ themeBodyColor = stripHash(theme.colors.text);
107
+ if (theme.colors?.textMuted)
108
+ themeMutedColor = stripHash(theme.colors.textMuted);
109
+ if (theme.colors?.background)
110
+ themeBackgroundColor = stripHash(theme.colors.background);
88
111
  }
89
112
  this.font = options.defaultFont ?? themeFont ?? DEFAULT_FONT;
90
113
  this.headingFont = themeTitleFont ?? this.font;
@@ -92,6 +115,9 @@ class ExportContext {
92
115
  ? options.defaultFontSize * 2
93
116
  : DEFAULT_FONT_SIZE_HALF_POINTS;
94
117
  this.headingColor = themeHeadingColor;
118
+ this.bodyColor = themeBodyColor;
119
+ this.mutedColor = themeMutedColor;
120
+ this.backgroundColor = themeBackgroundColor;
95
121
  this.resolvedImages = options.images ?? new Map();
96
122
  }
97
123
  /** Allocate a new relationship ID */
@@ -140,6 +166,44 @@ class ExportContext {
140
166
  return id;
141
167
  }
142
168
  }
169
+ /**
170
+ * Pull the first concrete font name out of a CSS-style stack.
171
+ *
172
+ * `resolveFontFamily` returns CSS values like `"Oswald", Impact,
173
+ * "Arial Black", sans-serif`. Word's `w:ascii` / `w:hAnsi` attributes
174
+ * expect a single font name — feeding the whole stack causes Word to
175
+ * fall back to its default font instead of any of the named faces.
176
+ * We pick the first non-generic name (skipping `sans-serif`, `serif`,
177
+ * `monospace`, etc.) and strip the surrounding quotes that CSS lets
178
+ * you wrap multi-word family names in.
179
+ */
180
+ function firstFontFromStack(stack) {
181
+ if (!stack)
182
+ return '';
183
+ const generics = new Set([
184
+ 'sans-serif',
185
+ 'serif',
186
+ 'monospace',
187
+ 'system-ui',
188
+ 'cursive',
189
+ 'fantasy',
190
+ 'ui-serif',
191
+ 'ui-sans-serif',
192
+ 'ui-monospace',
193
+ 'ui-rounded',
194
+ 'inherit',
195
+ 'initial',
196
+ ]);
197
+ for (const raw of stack.split(',')) {
198
+ const name = raw.trim().replace(/^["']|["']$/g, '');
199
+ if (!name)
200
+ continue;
201
+ if (generics.has(name.toLowerCase()))
202
+ continue;
203
+ return name;
204
+ }
205
+ return '';
206
+ }
143
207
  // ============================================
144
208
  // Block Conversion
145
209
  // ============================================
@@ -183,15 +247,31 @@ function convertHeading(node, ctx) {
183
247
  return `<w:p>` + `<w:pPr><w:pStyle w:val="${styleId}"/></w:pPr>` + runs + `</w:p>`;
184
248
  }
185
249
  function convertParagraph(node, ctx) {
186
- const runs = convertInlines(node.children, ctx);
250
+ // Force body color on every run rather than relying on `Normal` /
251
+ // `rPrDefault` style inheritance — see InlineFormat.color comment.
252
+ // Headings render via `convertHeading` and skip this path so the
253
+ // heading style's own color wins.
254
+ const runs = convertInlines(node.children, ctx, bodyFormat(ctx));
187
255
  return `<w:p>${runs}</w:p>`;
188
256
  }
257
+ /** Default inline format for body-text contexts (paragraphs, list items,
258
+ * blockquote bodies, table cells). Carries the theme body color so runs
259
+ * render in the right color regardless of style-resolution quirks. */
260
+ function bodyFormat(ctx) {
261
+ return ctx.bodyColor ? { color: ctx.bodyColor } : {};
262
+ }
189
263
  function convertBlockquote(node, ctx) {
190
264
  // Render each child block as a paragraph with Quote style
191
265
  const parts = [];
192
266
  for (const child of node.children) {
193
267
  if (child.type === 'paragraph') {
194
- const runs = convertInlines(child.children, ctx);
268
+ // Use the theme's muted color when set (Quote style already
269
+ // declares it but explicit run-level color survives Word's
270
+ // style overrides — see InlineFormat.color comment).
271
+ const quoteFormat = ctx.mutedColor
272
+ ? { color: ctx.mutedColor }
273
+ : bodyFormat(ctx);
274
+ const runs = convertInlines(child.children, ctx, quoteFormat);
195
275
  parts.push(`<w:p>` +
196
276
  `<w:pPr><w:pStyle w:val="Quote"/>` +
197
277
  `<w:ind w:left="${pointsToTwips(36)}"/>` +
@@ -219,7 +299,7 @@ function convertListItem(item, ctx, numId, depth) {
219
299
  const parts = [];
220
300
  for (const child of item.children) {
221
301
  if (child.type === 'paragraph') {
222
- const runs = convertInlines(child.children, ctx);
302
+ const runs = convertInlines(child.children, ctx, bodyFormat(ctx));
223
303
  parts.push(`<w:p>` +
224
304
  `<w:pPr>` +
225
305
  `<w:pStyle w:val="ListParagraph"/>` +
@@ -297,7 +377,7 @@ function convertTableRow(row, ctx, isHeader, align) {
297
377
  return `<w:tr>${trPr}${cells.join('')}</w:tr>`;
298
378
  }
299
379
  function convertTableCell(cell, ctx, isHeader, align) {
300
- const runs = convertInlines(cell.children, ctx);
380
+ const runs = convertInlines(cell.children, ctx, bodyFormat(ctx));
301
381
  const rPr = isHeader ? '<w:rPr><w:b/></w:rPr>' : '';
302
382
  const jcMap = { left: 'left', center: 'center', right: 'right' };
303
383
  const jc = align ? `<w:jc w:val="${jcMap[align]}"/>` : '';
@@ -334,7 +414,7 @@ function convertFootnoteDefinition(node, ctx) {
334
414
  const bodyParts = [];
335
415
  for (const child of node.children) {
336
416
  if (child.type === 'paragraph') {
337
- const runs = convertInlines(child.children, ctx);
417
+ const runs = convertInlines(child.children, ctx, bodyFormat(ctx));
338
418
  bodyParts.push(`<w:p>${runs}</w:p>`);
339
419
  }
340
420
  }
@@ -391,6 +471,8 @@ function makeRun(text, format) {
391
471
  rPrParts.push('<w:i/>');
392
472
  if (format.strike)
393
473
  rPrParts.push('<w:strike/>');
474
+ if (format.color)
475
+ rPrParts.push(`<w:color w:val="${format.color}"/>`);
394
476
  if (format.code) {
395
477
  rPrParts.push(`<w:rFonts w:ascii="${DEFAULT_CODE_FONT}" w:hAnsi="${DEFAULT_CODE_FONT}"/>`, `<w:sz w:val="${DEFAULT_CODE_FONT_SIZE}"/>`);
396
478
  }
@@ -555,13 +637,16 @@ async function buildDocxPackage(bodyXml, ctx, options) {
555
637
  const fontTableRelId = `rId${relCounter++}`;
556
638
  const footnotesRelId = `rId${relCounter++}`;
557
639
  // --- word/document.xml ---
558
- const documentXml = buildDocumentXml(bodyXml);
640
+ const documentXml = buildDocumentXml(bodyXml, ctx.backgroundColor);
559
641
  pkg.addPart('word/document.xml', documentXml, CONTENT_TYPE_DOCX_DOCUMENT);
560
642
  // --- word/styles.xml ---
561
643
  const stylesXml = buildStylesXml(options, ctx);
562
644
  pkg.addPart('word/styles.xml', stylesXml, CONTENT_TYPE_DOCX_STYLES);
563
645
  // --- word/settings.xml ---
564
- const settingsXml = buildSettingsXml();
646
+ // `displayBackgroundShape` is what makes Word actually paint the
647
+ // `<w:background>` element from document.xml on screen + print.
648
+ // Without it the bg color is in the file but invisible.
649
+ const settingsXml = buildSettingsXml(ctx.backgroundColor !== undefined);
565
650
  pkg.addPart('word/settings.xml', settingsXml, CONTENT_TYPE_DOCX_SETTINGS);
566
651
  // --- word/fontTable.xml ---
567
652
  const fontTableXml = buildFontTableXml(options);
@@ -640,7 +725,11 @@ async function buildDocxPackage(bodyXml, ctx, options) {
640
725
  // ============================================
641
726
  // XML Part Generators
642
727
  // ============================================
643
- function buildDocumentXml(bodyXml) {
728
+ function buildDocumentXml(bodyXml, backgroundColor) {
729
+ // `<w:background>` must be the FIRST child of `<w:document>` per the
730
+ // WordprocessingML schema. Word also requires `<w:displayBackgroundShape/>`
731
+ // in settings.xml before the bg actually paints (see buildSettingsXml).
732
+ const backgroundEl = backgroundColor ? `<w:background w:color="${backgroundColor}"/>` : '';
644
733
  return (xmlDeclaration() +
645
734
  `<w:document` +
646
735
  ` xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"` +
@@ -653,6 +742,7 @@ function buildDocumentXml(bodyXml) {
653
742
  ` xmlns:w10="urn:schemas-microsoft-com:office:word"` +
654
743
  ` xmlns:w="${NS_WML}"` +
655
744
  ` xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">` +
745
+ backgroundEl +
656
746
  `<w:body>` +
657
747
  bodyXml +
658
748
  `<w:sectPr>` +
@@ -666,30 +756,45 @@ function buildDocumentXml(bodyXml) {
666
756
  function buildStylesXml(options, ctx) {
667
757
  const font = ctx.font;
668
758
  const headingFont = ctx.headingFont;
759
+ // Body color from the theme's `text`. We set it on BOTH the
760
+ // `<w:rPrDefault>` (for any rogue run that doesn't inherit Normal) and
761
+ // on the `Normal` style itself. Setting it only on rPrDefault was
762
+ // experimentally insufficient — Word's resolved formatting in Print
763
+ // Layout view ignored the docDefault color for direct-typed body
764
+ // paragraphs even though headings (with explicit rPr) honored their
765
+ // own color. Setting it on Normal puts the color one level higher in
766
+ // the precedence chain (paragraph-style > docDefaults) so it sticks.
767
+ const bodyColorXml = ctx.bodyColor ? `<w:color w:val="${ctx.bodyColor}"/>` : '';
768
+ const quoteColor = ctx.mutedColor ?? '404040';
669
769
  return (xmlDeclaration() +
670
770
  `<w:styles xmlns:w="${NS_WML}">` +
671
771
  // Default run properties
672
772
  `<w:docDefaults>` +
673
773
  `<w:rPrDefault><w:rPr>` +
674
774
  `<w:rFonts w:ascii="${escapeXml(font)}" w:hAnsi="${escapeXml(font)}" w:eastAsia="${escapeXml(font)}" w:cs="${escapeXml(font)}"/>` +
775
+ bodyColorXml +
675
776
  `<w:sz w:val="${DEFAULT_FONT_SIZE_HALF_POINTS}"/>` +
676
777
  `<w:szCs w:val="${DEFAULT_FONT_SIZE_HALF_POINTS}"/>` +
677
778
  `</w:rPr></w:rPrDefault>` +
678
779
  `<w:pPrDefault/>` +
679
780
  `</w:docDefaults>` +
680
- // Normal style
781
+ // Normal style — carries the body color explicitly so direct-typed
782
+ // body paragraphs render in the theme's text color in every Word
783
+ // view (not just Web Layout).
681
784
  `<w:style w:type="paragraph" w:default="1" w:styleId="Normal">` +
682
785
  `<w:name w:val="Normal"/>` +
683
786
  `<w:qFormat/>` +
787
+ (bodyColorXml ? `<w:rPr>${bodyColorXml}</w:rPr>` : '') +
684
788
  `</w:style>` +
685
789
  // Heading styles
686
790
  buildHeadingStyles(headingFont, ctx.headingColor) +
687
- // Quote style
791
+ // Quote style — muted text color from theme.textMuted (falls back
792
+ // to a neutral grey when no theme is supplied).
688
793
  `<w:style w:type="paragraph" w:styleId="Quote">` +
689
794
  `<w:name w:val="Quote"/>` +
690
795
  `<w:basedOn w:val="Normal"/>` +
691
796
  `<w:pPr><w:ind w:left="720"/></w:pPr>` +
692
- `<w:rPr><w:i/><w:color w:val="404040"/></w:rPr>` +
797
+ `<w:rPr><w:i/><w:color w:val="${quoteColor}"/></w:rPr>` +
693
798
  `</w:style>` +
694
799
  // Code style
695
800
  `<w:style w:type="paragraph" w:styleId="Code">` +
@@ -756,11 +861,31 @@ function buildHeadingStyles(headingFont, headingColor) {
756
861
  }
757
862
  return result;
758
863
  }
759
- function buildSettingsXml() {
864
+ function buildSettingsXml(displayBackground) {
865
+ // `<w:compat>` with `compatibilityMode=15` is what tells Word "this
866
+ // is a Word 2016+ .docx, render with modern features." Without it,
867
+ // Word opens the file in Compatibility Mode and silently disables
868
+ // newer behaviors — including page-background rendering in Print
869
+ // Layout view and several default style precedence rules. The other
870
+ // compatSetting flags match what Word 2016+ writes by default.
871
+ const compatXml = `<w:compat>` +
872
+ `<w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="15"/>` +
873
+ `<w:compatSetting w:name="overrideTableStyleFontSizeAndJustification" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>` +
874
+ `<w:compatSetting w:name="enableOpenTypeFeatures" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>` +
875
+ `<w:compatSetting w:name="doNotFlipMirrorIndents" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>` +
876
+ `<w:compatSetting w:name="differentiateMultirowTableHeaders" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>` +
877
+ `</w:compat>`;
878
+ // Element order inside `<w:settings>` matters — ECMA-376 defines a
879
+ // strict sequence (`displayBackgroundShape` → `defaultTabStop` →
880
+ // `characterSpacingControl` → … → `compat`). Word silently drops
881
+ // out-of-order children, which is why `<w:background>` looks correct
882
+ // in the file but doesn't paint when opened.
760
883
  return (xmlDeclaration() +
761
884
  `<w:settings xmlns:w="${NS_WML}">` +
885
+ (displayBackground ? `<w:displayBackgroundShape/>` : '') +
762
886
  `<w:defaultTabStop w:val="720"/>` +
763
887
  `<w:characterSpacingControl w:val="doNotCompress"/>` +
888
+ compatXml +
764
889
  `</w:settings>`);
765
890
  }
766
891
  function buildFontTableXml(options) {
@@ -811,7 +936,13 @@ function buildNumberingXml(ctx) {
811
936
  `<w:lvlText w:val="${bullet}"/>` +
812
937
  `<w:lvlJc w:val="left"/>` +
813
938
  `<w:pPr><w:ind w:left="${720 * (lvl + 1)}" w:hanging="360"/></w:pPr>` +
814
- `<w:rPr><w:rFonts w:ascii="Symbol" w:hAnsi="Symbol"/></w:rPr>` +
939
+ // Bullet glyph renders in the document's body font, not
940
+ // Word's legacy `Symbol` font. `Symbol` only maps codes
941
+ // 0x20-0xFF to Greek/math glyphs, so the Unicode bullets
942
+ // we use (U+2022, U+25E6, U+25AA) come out as "tofu"
943
+ // empty boxes when forced into Symbol. Every modern OS
944
+ // font has these codepoints, so omitting the font
945
+ // override gets a real bullet.
815
946
  `</w:lvl>`);
816
947
  }
817
948
  }
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/docx/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/docx/export.ts"],"names":[],"mappings":"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"}