diff --git a/src/public/app/services/content_renderer.js b/src/public/app/services/content_renderer.js index 6d090bc36..9d7285503 100644 --- a/src/public/app/services/content_renderer.js +++ b/src/public/app/services/content_renderer.js @@ -34,7 +34,7 @@ async function getRenderedContent(entity, options = {}) { else if (type === 'code') { await renderCode(entity, $renderedContent); } - else if (type === 'image' || type === 'canvas') { + else if (['image', 'canvas', 'mindMap'].includes(type)) { renderImage(entity, $renderedContent, options); } else if (!options.tooltip && ['file', 'pdf', 'audio', 'video'].includes(type)) { diff --git a/src/public/app/widgets/type_widgets/mind_map.js b/src/public/app/widgets/type_widgets/mind_map.js index bf7b89ad5..36fd884e8 100644 --- a/src/public/app/widgets/type_widgets/mind_map.js +++ b/src/public/app/widgets/type_widgets/mind_map.js @@ -83,8 +83,18 @@ export default class MindMapWidget extends TypeWidget { return; } + const svgContent = await this.mind.exportSvg().text(); return { - content: mind.getDataString() + content: mind.getDataString(), + attachments: [ + { + role: "image", + title: "mindmap-export.svg", + mime: "image/svg+xml", + content: svgContent, + position: 0 + } + ] }; } diff --git a/src/routes/api/image.ts b/src/routes/api/image.ts index 14167de70..f6db84ca7 100644 --- a/src/routes/api/image.ts +++ b/src/routes/api/image.ts @@ -25,7 +25,7 @@ function returnImageInt(image: BNote | BRevision | null, res: Response) { if (!image) { res.set('Content-Type', 'image/png'); return res.send(fs.readFileSync(`${RESOURCE_DIR}/db/image-deleted.png`)); - } else if (!["image", "canvas", "mermaid"].includes(image.type)) { + } else if (![ "image", "canvas", "mermaid", "mindMap" ].includes(image.type)) { return res.sendStatus(400); } @@ -33,6 +33,8 @@ function returnImageInt(image: BNote | BRevision | null, res: Response) { renderSvgAttachment(image, res, 'canvas-export.svg'); } else if (image.type === 'mermaid') { renderSvgAttachment(image, res, 'mermaid-export.svg'); + } else if (image.type === "mindMap") { + renderSvgAttachment(image, res, 'mindmap-export.svg'); } else { res.set('Content-Type', image.mime); res.set("Cache-Control", "no-cache, no-store, must-revalidate");