import type { Context } from '../context' import type { Options } from '../options' import { orCreateContext } from '../create-context' import { createSvg, svgToDataUrl } from '../utils' import { domToDataUrl } from './dom-to-data-url' export async function domToSvg(node: T, options?: Options): Promise export async function domToSvg(context: Context): Promise export async function domToSvg(node: any, options?: any): Promise { const context = await orCreateContext(node, options) const { width, height, ownerDocument } = context const dataUrl = await domToDataUrl(context) const svg = createSvg(width, height, ownerDocument) const svgImage = svg.ownerDocument.createElementNS(svg.namespaceURI, 'image') svgImage.setAttributeNS(null, 'href', dataUrl) svgImage.setAttributeNS(null, 'height', '100%') svgImage.setAttributeNS(null, 'width', '100%') svg.appendChild(svgImage) return svgToDataUrl(svg, context.isEnable('removeControlCharacter')) }