Files
slava.home/main_plugin/dgrm/diagram/dgrm-png.js

31 lines
1.1 KiB
JavaScript
Executable File

import { CanvasSmbl } from '../infrastructure/canvas-smbl.js';
/**
* @param {CanvasElement} canvas
* @param {any} serializedData
* @param {function(Blob):void} callBack
*/
export function fileSaveSvg(canvas, serializedData, callBack) {
const svgVirtual = /** @type {SVGSVGElement} */(canvas.ownerSVGElement.cloneNode(true));
svgVirtual.style.backgroundImage = null;
svgVirtual.querySelectorAll('.select, .highlight').forEach(el => el.classList.remove('select', 'highlight'));
const nonSvgElems = svgVirtual.getElementsByTagName('foreignObject');
while (nonSvgElems[0]) { nonSvgElems[0].parentNode.removeChild(nonSvgElems[0]); }
/* svgVirtual.querySelectorAll('g.hovertrack.shtxt.ta-1').forEach(group => {
group.querySelectorAll('text, tspan').forEach(el => console.log(el));
}); */
const svgStr = new XMLSerializer().serializeToString(svgVirtual);
const blob = new Blob([svgStr], { type: 'image/svg+xml;charset=utf-8' });
callBack(blob);
}
/** @typedef { {x:number, y:number} } Point */
/** @typedef { import('../infrastructure/canvas-smbl.js').CanvasElement } CanvasElement */