{"version":3,"file":"html-to-svg.modern.mjs","sources":["../src/utils/dom-walk.js","../src/utils/dom-get-zindex.js","../src/utils/range-get-client-rects.js","../src/utils/dom-get-text-fragments.js","../src/utils/parse-transform.js","../src/utils/array-last.js","../src/utils/dom-render-svg.js","../src/renderers/canvas.js","../src/renderers/image.js","../src/renderers/div.js","../src/renderers/span.js","../src/renderers/svg.js","../src/renderers/text.js","../src/index.js"],"sourcesContent":["async function walk (element, callback, { sort = () => 1 } = {}, depth = 0, index = 0) {\n  await callback(element, depth, index)\n\n  const children = Array.from(element.children).sort(sort)\n  for (let index = 0; index < children.length; index++) {\n    await walk(children[index], callback, { sort }, depth + 1, index)\n  }\n}\n\nexport default walk\n","export default el => {\n  const zindex = window.getComputedStyle(el).getPropertyValue('z-index')\n  return zindex === 'auto' ? 0 : parseInt(zindex ?? 0)\n}\n","/* global DocumentFragment */\n\n// Return Range.clientRects with their corresponding DocumentFragment\nexport default function (node, text = node.innerText || node.textContent) {\n  const range = document.createRange()\n\n  const rects = []\n  for (let i = 0; i < node.length; i++) {\n    range.setStart(node, 0)\n    range.setEnd(node, (i + 1))\n\n    const clientRects = range.getClientRects()\n\n    const index = clientRects.length - 1\n    rects[index] = rects[index] ?? { text: '' }\n    rects[index].rect = clientRects[index]\n    rects[index].text += text.charAt(i)\n  }\n\n  return rects.map(rect => {\n    rect.fragment = new DocumentFragment()\n    rect.fragment.textContent = rect.text\n    return rect\n  })\n}\n","/* global Node */\nimport getClientRects from './range-get-client-rects'\n\nexport default function (element) {\n  if (!element) return\n  if (!element.innerText) return\n  if (!element.childNodes.length) return\n\n  let fragments = []\n\n  for (const node of element.childNodes) {\n    if (node.nodeType !== Node.TEXT_NODE) continue\n    if (!node.textContent.length) continue\n\n    // Text interface does not provide a .innerText method, which would be\n    // more appropriate than textContent as it skips non-rendered whitespaces\n    // Splitting white-space leading Text trick the browser to recompute\n    // the layout itself, dealing with implicit space between adjacent nodes\n    if (/^\\s/.test(node.textContent)) node.splitText(1)\n\n    fragments = fragments.concat(getClientRects(node))\n  }\n\n  return fragments\n}\n","import * as Transform from 'transformation-matrix'\n\nexport default function (value) {\n  if (!value || value === 'none' || value === '') return null\n\n  const matrix = Transform.fromString(value)\n  const { translate, scale, rotation } = Transform.decomposeTSR(matrix)\n\n  return {\n    raw: value,\n    translate,\n    scale,\n    rotation,\n    toSVGTransform: ({ x = 0, y = 0, origin = [0, 0] } = {}) => {\n      const cx = x + origin[0]\n      const cy = y + origin[1]\n\n      return Transform.toString(\n        Transform.compose(\n          Transform.translate(translate?.tx ?? 0, translate?.ty ?? 0),\n          Transform.scale(scale?.sx ?? 1, scale?.sy ?? scale?.sx ?? 1, cx, cy),\n          Transform.rotate(rotation?.angle ?? 0, cx, cy)\n        )\n      )\n    }\n  }\n}\n","export default arr => arr[arr.length - 1]\n","export default function (name, props = {}, parent, children = []) {\n  const NS = 'http://www.w3.org/2000/svg'\n\n  const element = document.createElementNS(NS, name)\n  if (name === 'svg') element.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', NS)\n  for (const key in props) {\n    if (props[key] === null || props[key] === undefined) continue\n    element.setAttribute(key, props[key])\n  }\n\n  if (parent) parent.appendChild(element)\n\n  for (const child of children ?? []) element.appendChild(child)\n  return element\n}\n","import $ from '../utils/dom-render-svg'\n\nexport default ({\n  debug,\n  fonts\n}) => async (element, { x, y, width, height, style }) => $('image', {\n  x,\n  y,\n  width,\n  height,\n  href: element.toDataURL('image/png')\n})\n","import $ from '../utils/dom-render-svg'\n\nexport default ({\n  debug,\n  fonts\n}) => async (element, { x, y, width, height, style }) => {\n  if (!width || !height) return\n  if (!element.src) return\n\n  return $('image', {\n    x,\n    y,\n    width,\n    height,\n    href: element.src\n  })\n}\n","// TODO[refactor] split into smaller functions\n\nimport $ from '../utils/dom-render-svg'\nimport { parse as parseGradient } from 'gradient-parser'\nimport { uid } from 'uid'\n\nimport ImageRenderer from './image'\n\nconst kebabToCamel = s => s.replace(/-./g, x => x[1].toUpperCase())\n\nfunction isTransparent (color) {\n  if (!color || color === 'none' || color === 'transparent') return true\n\n  if (color.startsWith('rgba')) {\n    const rgba = color.match(/[\\d.]+/g)\n    if (rgba[3] === '0') return true\n  }\n\n  return false\n}\n\nfunction parseBorders (s) {\n  let borders = null\n\n  for (const dir of ['top', 'right', 'bottom', 'left']) {\n    const color = s.getPropertyValue(`border-${dir}-color`)\n    const width = parseInt(s.getPropertyValue(`border-${dir}-width`))\n    const style = s.getPropertyValue(`border-${dir}-style`)\n\n    // Skip invisible\n    if (isTransparent(color)) continue\n    if (!width || isNaN(width)) continue\n    if (style === 'none' || style === 'hidden') continue\n\n    borders ??= {}\n    borders[dir] = { color, width, style }\n  }\n\n  return borders\n}\n\nasync function getImageSize (url) {\n  return new Promise(resolve => {\n    const image = new Image()\n    image.onload = () => resolve({ width: image.width, height: image.height })\n    image.src = url\n  })\n}\n\nexport default ({\n  debug,\n  fonts\n}) => async (element, { x, y, width, height, style, defs }) => {\n  if (!width || !height) return\n\n  const backgroundColor = style.getPropertyValue('background-color')\n  const backgroundImage = style.getPropertyValue('background-image') ?? 'none'\n  const boxShadow = style.getPropertyValue('box-shadow') ?? 'none'\n  const borderRadius = parseInt(style.getPropertyValue('border-radius')) ?? null\n  const borders = parseBorders(style)\n\n  // Skip visually empty blocks\n  if (isTransparent(backgroundColor) && isTransparent(backgroundImage) && !borders) return\n\n  // Render initial rect\n  const g = $('g')\n  const rect = $('rect', {\n    x,\n    y,\n    width,\n    height,\n    fill: backgroundColor,\n    rx: borderRadius\n  }, g)\n\n  // Render background-image\n  if (!isTransparent(backgroundImage)) {\n    const url = (backgroundImage.match(/url\\(\"?(.*?)\"?\\)/) ?? [])[1]\n\n    // Render background-image\n    if (url) {\n      const backgroundSize = style.getPropertyValue('background-size')\n      const renderImage = ImageRenderer({ debug, fonts })\n      // TODO handle background-size\n      // TODO handle background-repeat\n      const size = await getImageSize(url)\n      const image = await renderImage({ src: url }, {\n        x,\n        y,\n        width: Math.max(width, size.width),\n        height: Math.max(height, size.height)\n      })\n      const clipPath = $('clipPath', { id: 'clip_' + uid() }, defs, [$('rect', { x, y, width, height })])\n      image.setAttribute('clip-path', `url(#${clipPath.id})`)\n      g.appendChild(image)\n    } else {\n      // TODO handle multiple gradients\n      const {\n        colorStops,\n        orientation,\n        type\n      } = parseGradient(backgroundImage)?.[0] ?? {}\n\n      // TODO handle repeating gradients type, SEE https://github.com/rafaelcaricio/gradient-parser?tab=readme-ov-file#ast\n      const gradient = $(kebabToCamel(type), {\n        id: 'gradient_' + uid(),\n        gradientUnits: 'objectBoundingBox', // Allow specifying rotation center in %\n        gradientTransform: orientation\n          ? (() => {\n              switch (orientation.type) {\n                case 'angular': return `rotate(${270 + parseFloat(orientation.value)}, 0.5, 0.5)`\n                case 'directional': {\n                  switch (orientation.value) {\n                    case 'top': return 'rotate(270, 0.5, 0.5)'\n                    case 'right': return null\n                    case 'bottom': return 'rotate(90, 0.5, 0.5)'\n                    case 'left': return 'rotate(180, 0.5, 0.5)'\n                  }\n                }\n              }\n            })()\n          : 'rotate(90, 0.5, 0.5)'\n      }, defs)\n\n      // Add color stops\n      for (let index = 0; index < colorStops.length; index++) {\n        const colorStop = colorStops[index]\n        const stop = $('stop', {\n          offset: colorStop.length\n            // TODO handle colorStop.length.type other than '%'\n            ? +colorStop.length.value / 100\n            : index / (colorStops.length - 1),\n          'stop-color': `${colorStop.type}(${colorStop.value})`\n        })\n\n        gradient.appendChild(stop)\n      }\n\n      rect.setAttribute('fill', `url(#${gradient.id})`)\n    }\n  }\n\n  // Render box shadow\n  if (boxShadow !== 'none') {\n    const filter = $('filter', { id: 'filter_' + uid() }, defs)\n    // This assumes browser consistency of the CSSStyleDeclaration.getPropertyValue returned string\n    const REGEX_SHADOW_DECLARATION = /rgba?\\(([\\d.]{1,3}(,\\s)?){3,4}\\)\\s(-?(\\d+)px\\s?){4}/g\n    const REGEX_SHADOW_DECLARATION_PARSER = /(rgba?\\((?:[\\d.]{1,3}(?:,\\s)?){3,4}\\))\\s(-?[\\d.]+)px\\s(-?[\\d.]+)px\\s(-?[\\d.]+)px\\s(-?[\\d.]+)px/\n\n    for (const shadowString of boxShadow.match(REGEX_SHADOW_DECLARATION) ?? []) {\n      let [\n        ,\n        color,\n        offx,\n        offy,\n        blur,\n        spread\n      ] = shadowString.match(REGEX_SHADOW_DECLARATION_PARSER)\n\n      offx = parseInt(offx)\n      offy = parseInt(offy)\n      spread = parseInt(spread)\n\n      filter.appendChild($('feGaussianBlur', { stdDeviation: blur / 2 }))\n\n      const shadow = $('rect', {\n        x: x + offx - spread,\n        y: y + offy - spread,\n        width: width + spread * 2,\n        height: height + spread * 2,\n        fill: color,\n        rx: borderRadius,\n        filter: `url(#${filter.id})`\n      })\n\n      g.prepend(shadow)\n    }\n  }\n\n  // Render border\n  if (!borderRadius) {\n    for (const [dir, border] of Object.entries(borders ?? {})) {\n      const geom = {}\n      switch (dir) {\n        case 'top':\n          geom.x1 = x\n          geom.x2 = x + width\n          geom.y1 = geom.y2 = y + parseInt(border.width) / 2\n          break\n\n        case 'right':\n          geom.x1 = geom.x2 = x + width - parseInt(border.width) / 2\n          geom.y1 = y\n          geom.y2 = y + height\n          break\n\n        case 'bottom':\n          geom.x1 = x\n          geom.x2 = x + width\n          geom.y1 = geom.y2 = y + height - parseInt(border.width) / 2\n          break\n\n        case 'left':\n          geom.x1 = geom.x2 = x + parseInt(border.width) / 2\n          geom.y1 = y\n          geom.y2 = y + height\n          break\n      }\n\n      $('line', {\n        ...geom,\n        stroke: border.color,\n        'stroke-width': border.width,\n        ...(() => {\n          switch (border.style) {\n            case 'dotted': return {\n              'stroke-dasharray': [0, border.width * 2].join(' '),\n              'stroke-dashoffset': 1,\n              'stroke-linejoin': 'round',\n              'stroke-linecap': 'round'\n            }\n\n            case 'dashed': return {\n              // https://developer.mozilla.org/en-US/docs/Web/CSS/border-style#dashed\n              'stroke-dasharray': [border.width * 2, 4].join(' ')\n            }\n\n            default: return {}\n          }\n        })()\n      }, g)\n    }\n  } else if (borders?.top) {\n    // Handle border-radius by drawing the whole border as a standard stroke\n    // TODO handle border-radius for specific border-dir.\n    // For now, we use borders.top as a placeholder for all borders\n    rect.setAttribute('stroke', borders.top.color)\n    rect.setAttribute('stroke-width', borders.top.width)\n\n    // Draw border from center\n    rect.setAttribute('rx', borderRadius - borders.top.width / 2)\n    rect.setAttribute('x', x + borders.top.width / 2)\n    rect.setAttribute('y', y + borders.top.width / 2)\n    rect.setAttribute('width', width - borders.top.width)\n    rect.setAttribute('height', height - borders.top.width)\n  }\n\n  return g\n}\n","import $ from '../utils/dom-render-svg'\nimport getTextFragments from '../utils/dom-get-text-fragments'\n\nimport DivRenderer from './div'\n\nconst SpanRenderer = ({ debug, fonts }) => async (element, { x, y, width, height, style, viewBox }, options) => {\n  const g = $('g', null)\n\n  // Render every child node as a span\n  const renderSpan = SpanRenderer({ debug, fonts })\n  for (const node of element.childNodes) {\n    g.appendChild(await renderSpan(node, { x, y, width, height, style, viewBox }, options))\n  }\n\n  // Render every text fragment using the div renderer (background etc)\n  const renderDiv = DivRenderer({ debug, fonts })\n  for (const { rect } of getTextFragments(element) ?? []) {\n    const rendered = await renderDiv(element, {\n      x: rect.x - viewBox.x,\n      y: rect.y - viewBox.y,\n      width: rect.width,\n      height: rect.height,\n      style,\n      viewBox\n    }, options)\n\n    if (rendered) g.appendChild(rendered)\n  }\n\n  return g\n}\n\nexport default SpanRenderer\n","/* global FileReader, XMLSerializer, btoa, XMLHttpRequest */\nimport $ from '../utils/dom-render-svg'\n\nexport default ({ cache }) => async (element, { x, y, width, height, style }, {\n  rasterizeNestedSVG = true\n} = {}) => {\n  // Convert all image to dataURL to maximizime compatibility\n  for (const image of element.querySelectorAll('image[href]')) {\n    const src = image.getAttribute('href')\n\n    if (!cache.has(src)) {\n      // Fetch blob from image src\n      const blob = await new Promise(resolve => {\n        const request = new XMLHttpRequest()\n        request.open('GET', src, true)\n        request.responseType = 'blob'\n        request.onload = () => resolve(request.response)\n        request.send()\n      })\n\n      // Convert blob to dataURL using the FileReader API\n      const dataURL = await new Promise(resolve => {\n        const reader = new FileReader()\n        reader.onload = e => resolve(e.target.result)\n        reader.readAsDataURL(blob)\n      })\n\n      // Cache dataURL\n      cache.set(src, dataURL)\n    }\n\n    image.setAttribute('href', cache.get(src))\n  }\n\n  return rasterizeNestedSVG\n    ? $('image', {\n      x,\n      y,\n      width,\n      height,\n      href: 'data:image/svg+xml;base64,' + btoa(new XMLSerializer().serializeToString(element))\n    })\n    : (() => {\n        const svg = $('svg', {\n          x,\n          y,\n          width,\n          height,\n          viewbox: `0 0 ${width} ${height}`\n        })\n\n        svg.innerHTML = element.innerHTML\n        return svg\n      })()\n}\n","// TODO text-decoration\n\nimport $ from '../utils/dom-render-svg'\n\nconst matchFont = s => ({ family, style = 'normal', weight = '400' } = {}) =>\n  family === (s.getPropertyValue('font-family') ?? '').replace(/['\"]/g, '') &&\n    style === (s.getPropertyValue('font-style') ?? 'normal') &&\n    weight === (s.getPropertyValue('font-weight') ?? '400')\n\nexport default ({ debug, fonts }) => async (string, { x, y, width, height, style }, {\n  splitText = false\n}) => {\n  if (!string) return\n\n  const g = $('g', { class: 'text-fragment' })\n\n  // Find font\n  const font = fonts.find(matchFont(style))\n  if (!font) throw new Error(`Cannot find font '${style.getPropertyValue('font-family')} ${style.getPropertyValue('font-style')} ${style.getPropertyValue('font-weight')}'`)\n\n  // Extract font metrics\n  const { unitsPerEm } = font.opentype\n  const ascender = font.opentype.tables.hhea.ascender\n  const descender = font.opentype.tables.hhea.descender\n\n  // Extract CSS props\n  const letterSpacing = style.getPropertyValue('letter-spacing')\n  const fontSize = parseFloat(style.getPropertyValue('font-size'))\n\n  // Compute metrics\n  const lineBox = (ascender - descender) / unitsPerEm\n  const leading = (fontSize * lineBox) - Math.abs(descender / unitsPerEm) * fontSize\n\n  // Render various metrics for debug\n  line('start', 0, { orientation: 'vertical', stroke: 'red' })\n  line('end', width, { orientation: 'vertical', stroke: 'red' })\n  line('leading', leading, { stroke: '#4b96ff' })\n\n  if (letterSpacing !== 'normal' || splitText) {\n    const ls = letterSpacing === 'normal' ? 0 : parseFloat(letterSpacing)\n\n    // Render letter by letter in case of non-default letter-spacing or explicit split\n    for (const c of string) {\n      if (!c.match(/\\s/)) { // Do not render spaces\n        $('path', {\n          d: font.opentype.getPath(c, x, y + leading, fontSize).toPathData(3),\n          fill: style.getPropertyValue('color')\n        }, g)\n      }\n\n      x += font.opentype.getAdvanceWidth(c, fontSize) + ls\n    }\n  } else {\n    // Render string\n    $('path', {\n      d: font.opentype.getPath(string, x, y + leading, fontSize, {\n        features: {\n          // TODO extract from CSS props\n          liga: true,\n          rlig: true\n        }\n      }).toPathData(3),\n      fill: style.getPropertyValue('color')\n    }, g)\n  }\n\n  return g\n\n  function line (title, v, { orientation = 'horizontal', stroke = 'black' } = {}) {\n    return debug && $('line', {\n      title,\n      'data-value': v,\n      x1: orientation === 'horizontal' ? x : x + v,\n      x2: orientation === 'horizontal' ? x + width : x + v,\n      y1: orientation === 'horizontal' ? y + v : y,\n      y2: orientation === 'horizontal' ? y + v : y + height,\n      stroke,\n      class: 'debug'\n    }, g)\n  }\n}\n","import { load as loadOpentypeFont } from 'opentype.js'\nimport { uid } from 'uid'\n\nimport walk from './utils/dom-walk'\nimport getZIndex from './utils/dom-get-zindex'\nimport getTextFragments from './utils/dom-get-text-fragments'\nimport parseTransform from './utils/parse-transform'\nimport lastOf from './utils/array-last'\n\nimport $ from './utils/dom-render-svg'\nimport * as RENDERERS from './renderers'\n\nexport default function ({\n  debug = false,\n  ignore = '',\n  fonts = []\n} = {}) {\n  const cache = new Map()\n  const detransformed = new Map()\n\n  // Init curried renderers\n  const renderers = {}\n  for (const k in RENDERERS) {\n    renderers[k] = RENDERERS[k]({ debug, fonts, cache })\n  }\n\n  // Restore all removed transformation if any\n  const cleanup = () => {\n    for (const [element, transform] of detransformed) {\n      element.style.transform = transform\n      detransformed.delete(element)\n    }\n  }\n\n  return {\n    get cache () { return cache },\n    cleanup,\n\n    // Preload all fonts before resolving\n    preload: async function () {\n      for (const font of fonts) {\n        if (font.opentype) continue\n        font.opentype = await new Promise(resolve => {\n          loadOpentypeFont(font.url, (error, font) => {\n            if (error) throw error\n            resolve(font)\n          })\n        })\n      }\n    },\n\n    // Clear cache and delete all resources\n    destroy: function () {\n      cache.clear()\n      cleanup()\n      for (const font of fonts) delete font.opentype\n    },\n\n    // Render the HTML container as a shadow SVG\n    render: async function (root, options = {}, transform) {\n      cleanup()\n      const viewBox = root.getBoundingClientRect()\n\n      // Create the SVG container\n      const svg = $('svg', {\n        viewBox: `0 0 ${viewBox.width} ${viewBox.height}`,\n        width: viewBox.width,\n        height: viewBox.height,\n        preserveAspectRatio: 'none'\n      })\n\n      const defs = $('defs', null, svg)\n\n      // Set context to root SVG.\n      // Context will change during walk push/pop\n      const Context = (() => {\n        const stack = [svg]\n        const pop = () => stack.length > 0 && stack.pop()\n        const push = () => stack.push($('g', null, lastOf(stack)))\n        return {\n          pop,\n          push,\n          get current () { return lastOf(stack) },\n          apply: depth => {\n            const deltaDepth = depth - (stack.length - 1)\n            for (let i = 0; i < -deltaDepth; i++) pop()\n            for (let i = 0; i < deltaDepth; i++) push()\n          }\n        }\n      })()\n\n      // Render every children\n      await walk(root, async (element, depth, index) => {\n        if (ignore && element !== root && element.matches(ignore)) return\n        Context.apply(depth)\n\n        // Extract geometric and style data from element\n        const style = window.getComputedStyle(element)\n        const matrix = element !== root && parseTransform(style.getPropertyValue('transform'))\n        const opacity = style.getPropertyValue('opacity')\n        const mixBlendMode = style.getPropertyValue('mix-blend-mode')\n        const clipPath = style.getPropertyValue('clip-path')\n        const overflow = style.getPropertyValue('overflow')\n\n        // Temporarily remove transformation to simplify coordinates calc\n        if (matrix) {\n          // WARNING this will cause issues with concurent renderings:\n          // <renderer>#cleanup is called before to ensure purity\n          detransformed.set(element, element.style.transform)\n          element.style.transform = 'none'\n        }\n\n        const { x, y, width, height } = element.getBoundingClientRect()\n\n        // Create a new context\n        if (\n          +opacity !== 1 ||\n          matrix ||\n          mixBlendMode !== 'normal' ||\n          overflow === 'hidden' ||\n          clipPath !== 'none'\n        ) Context.push()\n\n        // Handle opacity\n        if (+opacity !== 1) {\n          Context.current.setAttribute('opacity', opacity)\n        }\n\n        // Handle mix-blend-mode\n        if (mixBlendMode !== 'normal') {\n          Context.current.style.mixBlendMode = mixBlendMode\n        }\n\n        // Handle transformation\n        if (matrix) {\n          Context.current.setAttribute('transform', matrix.toSVGTransform({\n            x: x - viewBox.x,\n            y: y - viewBox.y,\n            origin: style.getPropertyValue('transform-origin')\n              .split(' ')\n              .map(v => parseFloat(v))\n          }))\n        }\n\n        // Handle overflow: hidden\n        if (overflow === 'hidden') {\n          const clipPath = $('clipPath', { id: 'clip_' + uid() }, defs, [\n            $('rect', {\n              x: x - viewBox.x,\n              y: y - viewBox.y,\n              width,\n              height\n            })\n          ])\n\n          Context.current.setAttribute('clip-path', `url(#${clipPath.id})`)\n        }\n\n        // Handle CSS clip-path property\n        if (clipPath !== 'none') {\n          // WARNING: CSS clip-path implementation is not done yet on arnaudjuracek/svg-to-pdf\n          Context.current.setAttribute('style', `clip-path: ${clipPath.replace(/\"/g, \"'\")}`)\n        }\n\n        // Render element\n        const render = renderers[element.tagName] ?? renderers.div\n        let rendered = await render(element, {\n          x: x - viewBox.x,\n          y: y - viewBox.y,\n          width,\n          height,\n          style,\n          viewBox,\n          defs\n        }, options)\n\n        if (transform) rendered = await transform(element, rendered)\n        if (rendered) Context.current.appendChild(rendered)\n\n        // Render text nodes inside the element\n        const g = $('g', { class: 'text' })\n        for (const { rect, fragment } of getTextFragments(element) ?? []) {\n          try {\n            let text = await renderers.text(fragment.textContent.trimEnd(), {\n              x: rect.x - viewBox.x,\n              y: rect.y - viewBox.y,\n              width: rect.width,\n              height: rect.height,\n              style\n            }, options)\n\n            if (transform) text = await transform(element, text)\n            if (text) g.appendChild(text)\n          } catch (error) {\n            // TODO[improve] error handling\n            console.warn(new Error(`Rendering failed for the following text: '${fragment.textContent}'`, { cause: error }))\n            console.warn(error)\n          }\n        }\n\n        if (g.children.length) Context.current.appendChild(g)\n      }, {\n        sort: (a, b) => {\n          a.zIndex ??= getZIndex(a)\n          b.zIndex ??= getZIndex(b)\n          return a.zIndex - b.zIndex\n        }\n      })\n\n      cleanup()\n      return svg\n    }\n  }\n}\n"],"names":["walk","element","callback","sort","depth","index","children","Array","from","length","el","zindex","window","getComputedStyle","getPropertyValue","parseInt","node","text","innerText","textContent","range","document","createRange","rects","i","_rects$index","setStart","setEnd","clientRects","getClientRects","rect","charAt","map","fragment","DocumentFragment","childNodes","fragments","nodeType","Node","TEXT_NODE","test","splitText","concat","value","matrix","Transform","fromString","translate","scale","rotation","decomposeTSR","raw","toSVGTransform","x","y","origin","_translate$tx","_translate$ty","_scale$sx","_ref","_scale$sy","_rotation$angle","cx","cy","toString","compose","tx","ty","sx","sy","rotate","angle","arr","name","props","parent","NS","createElementNS","setAttributeNS","key","undefined","setAttribute","appendChild","child","debug","fonts","width","height","style","$","href","toDataURL","src","kebabToCamel","s","replace","toUpperCase","isTransparent","color","startsWith","rgba","match","parseBorders","borders","dir","_borders","isNaN","getImageSize","url","Promise","resolve","image","Image","onload","defs","_style$getPropertyVal","_style$getPropertyVal2","_parseInt","backgroundColor","backgroundImage","boxShadow","borderRadius","g","fill","rx","_backgroundImage$matc","renderImage","ImageRenderer","size","Math","max","clipPath","id","uid","_parseGradient$","_parseGradient","colorStops","orientation","type","parseGradient","gradient","gradientUnits","gradientTransform","parseFloat","colorStop","stop","offset","filter","REGEX_SHADOW_DECLARATION","REGEX_SHADOW_DECLARATION_PARSER","shadowString","_boxShadow$match","offx","offy","blur","spread","stdDeviation","shadow","prepend","border","Object","entries","geom","x1","x2","y1","y2","_extends","stroke","join","top","SpanRenderer","viewBox","options","renderSpan","renderDiv","DivRenderer","_getTextFragments","getTextFragments","rendered","cache","rasterizeNestedSVG","querySelectorAll","getAttribute","has","blob","request","XMLHttpRequest","open","responseType","response","send","dataURL","reader","FileReader","e","target","result","readAsDataURL","set","get","btoa","XMLSerializer","serializeToString","svg","viewbox","innerHTML","matchFont","family","weight","_s$getPropertyValue","_s$getPropertyValue2","_s$getPropertyValue3","string","class","font","find","Error","unitsPerEm","opentype","ascender","tables","hhea","descender","letterSpacing","fontSize","lineBox","leading","abs","line","ls","c","d","getPath","toPathData","getAdvanceWidth","features","liga","rlig","title","v","ignore","Map","detransformed","renderers","k","RENDERERS","cleanup","transform","delete","preload","loadOpentypeFont","error","destroy","clear","render","root","getBoundingClientRect","preserveAspectRatio","Context","stack","pop","push","lastOf","current","apply","deltaDepth","_renderers$element$ta","matches","parseTransform","opacity","mixBlendMode","overflow","split","tagName","div","trimEnd","console","warn","cause","a","b","_a$zIndex","_b$zIndex","zIndex","getZIndex"],"mappings":"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"}