27 lines
917 B
TypeScript
Raw Normal View History

2021-12-29 17:10:28 -08:00
import { Mindmap } from "../..";
import Exporter from "./Exporter";
class SVGExporter implements Exporter {
svgElement: Element;
constructor(mindmap: Mindmap, svgElement: Element) {
this.svgElement = svgElement;
}
2021-12-31 01:18:21 -08:00
export(): Promise<string> {
2021-12-29 17:10:28 -08:00
// Replace all images for in-line images ...
const imagesElements: HTMLCollection = this.svgElement.getElementsByTagName('image');
2021-12-31 01:18:21 -08:00
let svgTxt:string = new XMLSerializer().serializeToString(this.svgElement);
2021-12-29 17:10:28 -08:00
2021-12-30 15:03:59 -08:00
// Are namespace declared ?. Otherwise, force the declaration ...
2021-12-31 01:18:21 -08:00
if(svgTxt.indexOf('xmlns:xlink=')!==-1){
svgTxt.replace('<svg ', '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ')
2021-12-30 15:03:59 -08:00
}
2021-12-31 01:18:21 -08:00
const blob = new Blob([svgTxt], { type: 'image/svg+xml' });
const result = URL.createObjectURL(blob);
return Promise.resolve(result);
2021-12-29 17:10:28 -08:00
}
}
export default SVGExporter;