{"version":3,"sources":["../node_modules/modern-screenshot/dist/index.mjs","../src/utils/screenshot.ts"],"names":["changeJpegDpi","uint8Array","dpi","_P","_H","_Y","_S","pngDataTable","createPngDataTable","crcTable","n","c","k","calcCrc","searchStartOfPhys","length","i","changePngDpi","overwritepHYs","physChunk","crc","crcChunk","startingIndex","chunkLength","finalHeader","b64PhysSignature1","b64PhysSignature2","b64PhysSignature3","detectPhysChunkFromDataUrl","dataUrl","b64index","PREFIX","IN_BROWSER","SUPPORT_WEB_WORKER","SUPPORT_ATOB","SUPPORT_BTOA","USER_AGENT","IN_CHROME","IN_SAFARI","IN_FIREFOX","isContext","value","isCssFontFaceRule","rule","isCSSImportRule","isLayerBlockRule","isElementNode","node","isSVGElementNode","isSVGImageElementNode","isSVGUseElementNode","isHTMLElementNode","isCommentNode","isTextNode","isImageElement","isVideoElement","isCanvasElement","isTextareaElement","isInputElement","isStyleElement","isScriptElement","isSelectElement","isSlotElement","isIFrameElement","consoleWarn","args","supportWebp","ownerDocument","canvas","isDataUrl","url","resolveUrl","baseUrl","doc","getDocument","base","a","target","XMLNS","createSvg","width","height","svg","svgToDataUrl","removeControlCharacter","xhtml","readBlob","blob","type","resolve","reject","reader","blobToDataUrl","createImage","img","loadMedia","media","options","timeout","userOnError","onWarn","timer","removeEventListeners","onResolve","currentSrc","onLoadeddata","onError","error","onLoad","waitUntilLoad","selectors","el","uuid","counter","random","splitFontFamily","fontFamily","val","uid","createLogger","debug","prefix","label","getDefaultRequestInit","bypassingCache","orCreateContext","createContext","scale","workerUrl","workerNumber","features","ownerWindow","requests","context","createStyleElement","worker","event","result","key","resolveBoundingBox","style","cssText","box","imageToCanvas","image","log","drawImageCount","drawImageInterval","loaded","context2d","createCanvas","drawImage","backgroundColor","max","cloneCanvas","dataURL","cloned","ctx","clonedCtx","cloneIframe","iframe","cloneNode","cloneImage","cloneVideo","video","canPlay","cloneElement","getSandBox","sandbox","ignoredStyles","includedAttributes","getDefaultStyle","pseudoElement","defaultComputedStyles","nodeName","isSvgNode","attributes","name","sandboxWindow","sandboxDocument","root","computedStyle","styles","len","getDiffStyle","defaultStyle","includeStyleProperties","diffStyle","prefixs","prefixTree","applyTo","priority","subIndex","map","copyCssStyles","isRoot","currentParentNodeStyle","clonedStyle","_","copyInputValue","pseudoClasses","scrollbarPseudoClasses","copyPseudoClass","copyScrollbar","addWordToFontFamilies","svgStyleElement","svgStyles","currentNodeStyle","copyBy","pseudoClass","content","klasses","cloneStyle","err","allClasses","excludeParentNodes","appendChildNode","child","childCloned","restoreScrollPosition","cloneChildNodes","firstChild","nodes","chlidCloned","scrollTop","scrollLeft","transform","matrix","b","d","applyCssStyleWithOptions","NORMAL_ATTRIBUTE_RE","fontFamilies","onCloneEachNode","cloned2","names","overflow","textTransform","families","addWordToFontFamilies2","word","family","text","destroyContext","baseFetch","responseType","requestInit","controller","response","contextFetch","rawUrl","requestType","imageDom","acceptOfImage","fetchFn","placeholderImage","font","workers","request","canFontMinify","fontTexts","needFontMinify","baseFetchOptions","replaceCssUrlToDataUrl","isImage","hasCssUrl","parseCssUrls","toRE","URL_RE","raw","quotation","escaped","properties","embedCssStyleImage","property","newValue","embedImageElement","originalSrc","embedSvgUse","svgDefsElement","href","svgUrl","id","query","definition","res","svgData","embedNode","tasks","embedWebFont","clone","fontCssTexts","filterPreferredFormat","styleSheets","styleSheet","cssRule","index","importIndex","replacedCssText","parseCss","cssRules","sheet","unwrapCssLayers","cssText2","COMMENTS_RE","KEYFRAMES_RE","source","matches","IMPORT_RE","UNIFIED_RE","URL_WITH_FORMAT_RE","FONT_SRC_RE","str","preferredFormat","match","src","format","rules","out","domToForeignObjectSvg","progress","autoDestruct","onCloneNode","onEmbedNode","onCreateForeignObjectSvg","allCssText","count","current","runTask","task","createForeignObjectSvg","foreignObject","domToCanvas","domToDataUrl","quality","body","headerLength","b64Index","stringHeader","restOfData","headerBytes","finalArray","base64Header","domToJpeg","MAX_SIZE_BYTES","captureScreenshot","vv","viewportWidth","viewportHeight","scrollX","scrollY","transformStyle"],"mappings":"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","file":"screenshot-KDHUL63V.mjs","sourcesContent":["function changeJpegDpi(uint8Array, dpi) {\n  uint8Array[13] = 1;\n  uint8Array[14] = dpi >> 8;\n  uint8Array[15] = dpi & 255;\n  uint8Array[16] = dpi >> 8;\n  uint8Array[17] = dpi & 255;\n  return uint8Array;\n}\n\nconst _P = \"p\".charCodeAt(0);\nconst _H = \"H\".charCodeAt(0);\nconst _Y = \"Y\".charCodeAt(0);\nconst _S = \"s\".charCodeAt(0);\nlet pngDataTable;\nfunction createPngDataTable() {\n  const crcTable = new Int32Array(256);\n  for (let n = 0; n < 256; n++) {\n    let c = n;\n    for (let k = 0; k < 8; k++) {\n      c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;\n    }\n    crcTable[n] = c;\n  }\n  return crcTable;\n}\nfunction calcCrc(uint8Array) {\n  let c = -1;\n  if (!pngDataTable)\n    pngDataTable = createPngDataTable();\n  for (let n = 0; n < uint8Array.length; n++) {\n    c = pngDataTable[(c ^ uint8Array[n]) & 255] ^ c >>> 8;\n  }\n  return c ^ -1;\n}\nfunction searchStartOfPhys(uint8Array) {\n  const length = uint8Array.length - 1;\n  for (let i = length; i >= 4; i--) {\n    if (uint8Array[i - 4] === 9 && uint8Array[i - 3] === _P && uint8Array[i - 2] === _H && uint8Array[i - 1] === _Y && uint8Array[i] === _S) {\n      return i - 3;\n    }\n  }\n  return 0;\n}\nfunction changePngDpi(uint8Array, dpi, overwritepHYs = false) {\n  const physChunk = new Uint8Array(13);\n  dpi *= 39.3701;\n  physChunk[0] = _P;\n  physChunk[1] = _H;\n  physChunk[2] = _Y;\n  physChunk[3] = _S;\n  physChunk[4] = dpi >>> 24;\n  physChunk[5] = dpi >>> 16;\n  physChunk[6] = dpi >>> 8;\n  physChunk[7] = dpi & 255;\n  physChunk[8] = physChunk[4];\n  physChunk[9] = physChunk[5];\n  physChunk[10] = physChunk[6];\n  physChunk[11] = physChunk[7];\n  physChunk[12] = 1;\n  const crc = calcCrc(physChunk);\n  const crcChunk = new Uint8Array(4);\n  crcChunk[0] = crc >>> 24;\n  crcChunk[1] = crc >>> 16;\n  crcChunk[2] = crc >>> 8;\n  crcChunk[3] = crc & 255;\n  if (overwritepHYs) {\n    const startingIndex = searchStartOfPhys(uint8Array);\n    uint8Array.set(physChunk, startingIndex);\n    uint8Array.set(crcChunk, startingIndex + 13);\n    return uint8Array;\n  } else {\n    const chunkLength = new Uint8Array(4);\n    chunkLength[0] = 0;\n    chunkLength[1] = 0;\n    chunkLength[2] = 0;\n    chunkLength[3] = 9;\n    const finalHeader = new Uint8Array(54);\n    finalHeader.set(uint8Array, 0);\n    finalHeader.set(chunkLength, 33);\n    finalHeader.set(physChunk, 37);\n    finalHeader.set(crcChunk, 50);\n    return finalHeader;\n  }\n}\nconst b64PhysSignature1 = \"AAlwSFlz\";\nconst b64PhysSignature2 = \"AAAJcEhZ\";\nconst b64PhysSignature3 = \"AAAACXBI\";\nfunction detectPhysChunkFromDataUrl(dataUrl) {\n  let b64index = dataUrl.indexOf(b64PhysSignature1);\n  if (b64index === -1) {\n    b64index = dataUrl.indexOf(b64PhysSignature2);\n  }\n  if (b64index === -1) {\n    b64index = dataUrl.indexOf(b64PhysSignature3);\n  }\n  return b64index;\n}\n\nconst PREFIX = \"[modern-screenshot]\";\nconst IN_BROWSER = typeof window !== \"undefined\";\nconst SUPPORT_WEB_WORKER = IN_BROWSER && \"Worker\" in window;\nconst SUPPORT_ATOB = IN_BROWSER && \"atob\" in window;\nconst SUPPORT_BTOA = IN_BROWSER && \"btoa\" in window;\nconst USER_AGENT = IN_BROWSER ? window.navigator?.userAgent : \"\";\nconst IN_CHROME = USER_AGENT.includes(\"Chrome\");\nconst IN_SAFARI = USER_AGENT.includes(\"AppleWebKit\") && !IN_CHROME;\nconst IN_FIREFOX = USER_AGENT.includes(\"Firefox\");\nconst isContext = (value) => value && \"__CONTEXT__\" in value;\nconst isCssFontFaceRule = (rule) => rule.constructor.name === \"CSSFontFaceRule\";\nconst isCSSImportRule = (rule) => rule.constructor.name === \"CSSImportRule\";\nconst isLayerBlockRule = (rule) => rule.constructor.name === \"CSSLayerBlockRule\";\nconst isElementNode = (node) => node.nodeType === 1;\nconst isSVGElementNode = (node) => typeof node.className === \"object\";\nconst isSVGImageElementNode = (node) => node.tagName === \"image\";\nconst isSVGUseElementNode = (node) => node.tagName === \"use\";\nconst isHTMLElementNode = (node) => isElementNode(node) && typeof node.style !== \"undefined\" && !isSVGElementNode(node);\nconst isCommentNode = (node) => node.nodeType === 8;\nconst isTextNode = (node) => node.nodeType === 3;\nconst isImageElement = (node) => node.tagName === \"IMG\";\nconst isVideoElement = (node) => node.tagName === \"VIDEO\";\nconst isCanvasElement = (node) => node.tagName === \"CANVAS\";\nconst isTextareaElement = (node) => node.tagName === \"TEXTAREA\";\nconst isInputElement = (node) => node.tagName === \"INPUT\";\nconst isStyleElement = (node) => node.tagName === \"STYLE\";\nconst isScriptElement = (node) => node.tagName === \"SCRIPT\";\nconst isSelectElement = (node) => node.tagName === \"SELECT\";\nconst isSlotElement = (node) => node.tagName === \"SLOT\";\nconst isIFrameElement = (node) => node.tagName === \"IFRAME\";\nconst consoleWarn = (...args) => console.warn(PREFIX, ...args);\nfunction supportWebp(ownerDocument) {\n  const canvas = ownerDocument?.createElement?.(\"canvas\");\n  if (canvas) {\n    canvas.height = canvas.width = 1;\n  }\n  return Boolean(canvas) && \"toDataURL\" in canvas && Boolean(canvas.toDataURL(\"image/webp\").includes(\"image/webp\"));\n}\nconst isDataUrl = (url) => url.startsWith(\"data:\");\nfunction resolveUrl(url, baseUrl) {\n  if (url.match(/^[a-z]+:\\/\\//i))\n    return url;\n  if (IN_BROWSER && url.match(/^\\/\\//))\n    return window.location.protocol + url;\n  if (url.match(/^[a-z]+:/i))\n    return url;\n  if (!IN_BROWSER)\n    return url;\n  const doc = getDocument().implementation.createHTMLDocument();\n  const base = doc.createElement(\"base\");\n  const a = doc.createElement(\"a\");\n  doc.head.appendChild(base);\n  doc.body.appendChild(a);\n  if (baseUrl)\n    base.href = baseUrl;\n  a.href = url;\n  return a.href;\n}\nfunction getDocument(target) {\n  return (target && isElementNode(target) ? target?.ownerDocument : target) ?? window.document;\n}\nconst XMLNS = \"http://www.w3.org/2000/svg\";\nfunction createSvg(width, height, ownerDocument) {\n  const svg = getDocument(ownerDocument).createElementNS(XMLNS, \"svg\");\n  svg.setAttributeNS(null, \"width\", width.toString());\n  svg.setAttributeNS(null, \"height\", height.toString());\n  svg.setAttributeNS(null, \"viewBox\", `0 0 ${width} ${height}`);\n  return svg;\n}\nfunction svgToDataUrl(svg, removeControlCharacter) {\n  let xhtml = new XMLSerializer().serializeToString(svg);\n  if (removeControlCharacter) {\n    xhtml = xhtml.replace(/[\\u0000-\\u0008\\v\\f\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE\\uFFFF]/gu, \"\");\n  }\n  return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(xhtml)}`;\n}\nasync function canvasToBlob(canvas, type = \"image/png\", quality = 1) {\n  try {\n    return await new Promise((resolve, reject) => {\n      canvas.toBlob((blob) => {\n        if (blob) {\n          resolve(blob);\n        } else {\n          reject(new Error(\"Blob is null\"));\n        }\n      }, type, quality);\n    });\n  } catch (error) {\n    if (SUPPORT_ATOB) {\n      return dataUrlToBlob(canvas.toDataURL(type, quality));\n    }\n    throw error;\n  }\n}\nfunction dataUrlToBlob(dataUrl) {\n  const [header, base64] = dataUrl.split(\",\");\n  const type = header.match(/data:(.+);/)?.[1] ?? void 0;\n  const decoded = window.atob(base64);\n  const length = decoded.length;\n  const buffer = new Uint8Array(length);\n  for (let i = 0; i < length; i += 1) {\n    buffer[i] = decoded.charCodeAt(i);\n  }\n  return new Blob([buffer], { type });\n}\nfunction readBlob(blob, type) {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onload = () => resolve(reader.result);\n    reader.onerror = () => reject(reader.error);\n    reader.onabort = () => reject(new Error(`Failed read blob to ${type}`));\n    if (type === \"dataUrl\") {\n      reader.readAsDataURL(blob);\n    } else if (type === \"arrayBuffer\") {\n      reader.readAsArrayBuffer(blob);\n    }\n  });\n}\nconst blobToDataUrl = (blob) => readBlob(blob, \"dataUrl\");\nconst blobToArrayBuffer = (blob) => readBlob(blob, \"arrayBuffer\");\nfunction createImage(url, ownerDocument) {\n  const img = getDocument(ownerDocument).createElement(\"img\");\n  img.decoding = \"sync\";\n  img.loading = \"eager\";\n  img.src = url;\n  return img;\n}\nfunction loadMedia(media, options) {\n  return new Promise((resolve) => {\n    const { timeout, ownerDocument, onError: userOnError, onWarn } = options ?? {};\n    const node = typeof media === \"string\" ? createImage(media, getDocument(ownerDocument)) : media;\n    let timer = null;\n    let removeEventListeners = null;\n    function onResolve() {\n      resolve(node);\n      timer && clearTimeout(timer);\n      removeEventListeners?.();\n    }\n    if (timeout) {\n      timer = setTimeout(onResolve, timeout);\n    }\n    if (isVideoElement(node)) {\n      const currentSrc = node.currentSrc || node.src;\n      if (!currentSrc) {\n        if (node.poster) {\n          return loadMedia(node.poster, options).then(resolve);\n        }\n        return onResolve();\n      }\n      if (node.readyState >= 2) {\n        return onResolve();\n      }\n      const onLoadeddata = onResolve;\n      const onError = (error) => {\n        onWarn?.(\n          \"Failed video load\",\n          currentSrc,\n          error\n        );\n        userOnError?.(error);\n        onResolve();\n      };\n      removeEventListeners = () => {\n        node.removeEventListener(\"loadeddata\", onLoadeddata);\n        node.removeEventListener(\"error\", onError);\n      };\n      node.addEventListener(\"loadeddata\", onLoadeddata, { once: true });\n      node.addEventListener(\"error\", onError, { once: true });\n    } else {\n      const currentSrc = isSVGImageElementNode(node) ? node.href.baseVal : node.currentSrc || node.src;\n      if (!currentSrc) {\n        return onResolve();\n      }\n      const onLoad = async () => {\n        if (isImageElement(node) && \"decode\" in node) {\n          try {\n            await node.decode();\n          } catch (error) {\n            onWarn?.(\n              \"Failed to decode image, trying to render anyway\",\n              node.dataset.originalSrc || currentSrc,\n              error\n            );\n          }\n        }\n        onResolve();\n      };\n      const onError = (error) => {\n        onWarn?.(\n          \"Failed image load\",\n          node.dataset.originalSrc || currentSrc,\n          error\n        );\n        onResolve();\n      };\n      if (isImageElement(node) && node.complete) {\n        return onLoad();\n      }\n      removeEventListeners = () => {\n        node.removeEventListener(\"load\", onLoad);\n        node.removeEventListener(\"error\", onError);\n      };\n      node.addEventListener(\"load\", onLoad, { once: true });\n      node.addEventListener(\"error\", onError, { once: true });\n    }\n  });\n}\nasync function waitUntilLoad(node, options) {\n  if (isHTMLElementNode(node)) {\n    if (isImageElement(node) || isVideoElement(node)) {\n      await loadMedia(node, options);\n    } else {\n      await Promise.all(\n        [\"img\", \"video\"].flatMap((selectors) => {\n          return Array.from(node.querySelectorAll(selectors)).map((el) => loadMedia(el, options));\n        })\n      );\n    }\n  }\n}\nconst uuid = /* @__PURE__ */ function uuid2() {\n  let counter = 0;\n  const random = () => `0000${(Math.random() * 36 ** 4 << 0).toString(36)}`.slice(-4);\n  return () => {\n    counter += 1;\n    return `u${random()}${counter}`;\n  };\n}();\nfunction splitFontFamily(fontFamily) {\n  return fontFamily?.split(\",\").map((val) => val.trim().replace(/\"|'/g, \"\").toLowerCase()).filter(Boolean);\n}\n\nlet uid = 0;\nfunction createLogger(debug) {\n  const prefix = `${PREFIX}[#${uid}]`;\n  uid++;\n  return {\n    // eslint-disable-next-line no-console\n    time: (label) => debug && console.time(`${prefix} ${label}`),\n    // eslint-disable-next-line no-console\n    timeEnd: (label) => debug && console.timeEnd(`${prefix} ${label}`),\n    warn: (...args) => debug && consoleWarn(...args)\n  };\n}\n\nfunction getDefaultRequestInit(bypassingCache) {\n  return {\n    cache: bypassingCache ? \"no-cache\" : \"force-cache\"\n  };\n}\n\nasync function orCreateContext(node, options) {\n  return isContext(node) ? node : createContext(node, { ...options, autoDestruct: true });\n}\nasync function createContext(node, options) {\n  const { scale = 1, workerUrl, workerNumber = 1 } = options || {};\n  const debug = Boolean(options?.debug);\n  const features = options?.features ?? true;\n  const ownerDocument = node.ownerDocument ?? (IN_BROWSER ? window.document : void 0);\n  const ownerWindow = node.ownerDocument?.defaultView ?? (IN_BROWSER ? window : void 0);\n  const requests = /* @__PURE__ */ new Map();\n  const context = {\n    // Options\n    width: 0,\n    height: 0,\n    quality: 1,\n    type: \"image/png\",\n    scale,\n    backgroundColor: null,\n    style: null,\n    filter: null,\n    maximumCanvasSize: 0,\n    timeout: 3e4,\n    progress: null,\n    debug,\n    fetch: {\n      requestInit: getDefaultRequestInit(options?.fetch?.bypassingCache),\n      placeholderImage: \"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",\n      bypassingCache: false,\n      ...options?.fetch\n    },\n    fetchFn: null,\n    font: {},\n    drawImageInterval: 100,\n    workerUrl: null,\n    workerNumber,\n    onCloneEachNode: null,\n    onCloneNode: null,\n    onEmbedNode: null,\n    onCreateForeignObjectSvg: null,\n    includeStyleProperties: null,\n    autoDestruct: false,\n    ...options,\n    // InternalContext\n    __CONTEXT__: true,\n    log: createLogger(debug),\n    node,\n    ownerDocument,\n    ownerWindow,\n    dpi: scale === 1 ? null : 96 * scale,\n    svgStyleElement: createStyleElement(ownerDocument),\n    svgDefsElement: ownerDocument?.createElementNS(XMLNS, \"defs\"),\n    svgStyles: /* @__PURE__ */ new Map(),\n    defaultComputedStyles: /* @__PURE__ */ new Map(),\n    workers: [\n      ...Array.from({\n        length: SUPPORT_WEB_WORKER && workerUrl && workerNumber ? workerNumber : 0\n      })\n    ].map(() => {\n      try {\n        const worker = new Worker(workerUrl);\n        worker.onmessage = async (event) => {\n          const { url, result } = event.data;\n          if (result) {\n            requests.get(url)?.resolve?.(result);\n          } else {\n            requests.get(url)?.reject?.(new Error(`Error receiving message from worker: ${url}`));\n          }\n        };\n        worker.onmessageerror = (event) => {\n          const { url } = event.data;\n          requests.get(url)?.reject?.(new Error(`Error receiving message from worker: ${url}`));\n        };\n        return worker;\n      } catch (error) {\n        context.log.warn(\"Failed to new Worker\", error);\n        return null;\n      }\n    }).filter(Boolean),\n    fontFamilies: /* @__PURE__ */ new Map(),\n    fontCssTexts: /* @__PURE__ */ new Map(),\n    acceptOfImage: `${[\n      supportWebp(ownerDocument) && \"image/webp\",\n      \"image/svg+xml\",\n      \"image/*\",\n      \"*/*\"\n    ].filter(Boolean).join(\",\")};q=0.8`,\n    requests,\n    drawImageCount: 0,\n    tasks: [],\n    features,\n    isEnable: (key) => {\n      if (key === \"restoreScrollPosition\") {\n        return typeof features === \"boolean\" ? false : features[key] ?? false;\n      }\n      if (typeof features === \"boolean\") {\n        return features;\n      }\n      return features[key] ?? true;\n    },\n    shadowRoots: []\n  };\n  context.log.time(\"wait until load\");\n  await waitUntilLoad(node, { timeout: context.timeout, onWarn: context.log.warn });\n  context.log.timeEnd(\"wait until load\");\n  const { width, height } = resolveBoundingBox(node, context);\n  context.width = width;\n  context.height = height;\n  return context;\n}\nfunction createStyleElement(ownerDocument) {\n  if (!ownerDocument)\n    return void 0;\n  const style = ownerDocument.createElement(\"style\");\n  const cssText = style.ownerDocument.createTextNode(`\n.______background-clip--text {\n  background-clip: text;\n  -webkit-background-clip: text;\n}\n`);\n  style.appendChild(cssText);\n  return style;\n}\nfunction resolveBoundingBox(node, context) {\n  let { width, height } = context;\n  if (isElementNode(node) && (!width || !height)) {\n    const box = node.getBoundingClientRect();\n    width = width || box.width || Number(node.getAttribute(\"width\")) || 0;\n    height = height || box.height || Number(node.getAttribute(\"height\")) || 0;\n  }\n  return { width, height };\n}\n\nasync function imageToCanvas(image, context) {\n  const {\n    log,\n    timeout,\n    drawImageCount,\n    drawImageInterval\n  } = context;\n  log.time(\"image to canvas\");\n  const loaded = await loadMedia(image, { timeout, onWarn: context.log.warn });\n  const { canvas, context2d } = createCanvas(image.ownerDocument, context);\n  const drawImage = () => {\n    try {\n      context2d?.drawImage(loaded, 0, 0, canvas.width, canvas.height);\n    } catch (error) {\n      context.log.warn(\"Failed to drawImage\", error);\n    }\n  };\n  drawImage();\n  if (context.isEnable(\"fixSvgXmlDecode\")) {\n    for (let i = 0; i < drawImageCount; i++) {\n      await new Promise((resolve) => {\n        setTimeout(() => {\n          context2d?.clearRect(0, 0, canvas.width, canvas.height);\n          drawImage();\n          resolve();\n        }, i + drawImageInterval);\n      });\n    }\n  }\n  context.drawImageCount = 0;\n  log.timeEnd(\"image to canvas\");\n  return canvas;\n}\nfunction createCanvas(ownerDocument, context) {\n  const { width, height, scale, backgroundColor, maximumCanvasSize: max } = context;\n  const canvas = ownerDocument.createElement(\"canvas\");\n  canvas.width = Math.floor(width * scale);\n  canvas.height = Math.floor(height * scale);\n  canvas.style.width = `${width}px`;\n  canvas.style.height = `${height}px`;\n  if (max) {\n    if (canvas.width > max || canvas.height > max) {\n      if (canvas.width > max && canvas.height > max) {\n        if (canvas.width > canvas.height) {\n          canvas.height *= max / canvas.width;\n          canvas.width = max;\n        } else {\n          canvas.width *= max / canvas.height;\n          canvas.height = max;\n        }\n      } else if (canvas.width > max) {\n        canvas.height *= max / canvas.width;\n        canvas.width = max;\n      } else {\n        canvas.width *= max / canvas.height;\n        canvas.height = max;\n      }\n    }\n  }\n  const context2d = canvas.getContext(\"2d\");\n  if (context2d && backgroundColor) {\n    context2d.fillStyle = backgroundColor;\n    context2d.fillRect(0, 0, canvas.width, canvas.height);\n  }\n  return { canvas, context2d };\n}\n\nfunction cloneCanvas(canvas, context) {\n  if (canvas.ownerDocument) {\n    try {\n      const dataURL = canvas.toDataURL();\n      if (dataURL !== \"data:,\") {\n        return createImage(dataURL, canvas.ownerDocument);\n      }\n    } catch (error) {\n      context.log.warn(\"Failed to clone canvas\", error);\n    }\n  }\n  const cloned = canvas.cloneNode(false);\n  const ctx = canvas.getContext(\"2d\");\n  const clonedCtx = cloned.getContext(\"2d\");\n  try {\n    if (ctx && clonedCtx) {\n      clonedCtx.putImageData(\n        ctx.getImageData(0, 0, canvas.width, canvas.height),\n        0,\n        0\n      );\n    }\n    return cloned;\n  } catch (error) {\n    context.log.warn(\"Failed to clone canvas\", error);\n  }\n  return cloned;\n}\n\nfunction cloneIframe(iframe, context) {\n  try {\n    if (iframe?.contentDocument?.body) {\n      return cloneNode(iframe.contentDocument.body, context);\n    }\n  } catch (error) {\n    context.log.warn(\"Failed to clone iframe\", error);\n  }\n  return iframe.cloneNode(false);\n}\n\nfunction cloneImage(image) {\n  const cloned = image.cloneNode(false);\n  if (image.currentSrc && image.currentSrc !== image.src) {\n    cloned.src = image.currentSrc;\n    cloned.srcset = \"\";\n  }\n  if (cloned.loading === \"lazy\") {\n    cloned.loading = \"eager\";\n  }\n  return cloned;\n}\n\nasync function cloneVideo(video, context) {\n  if (video.ownerDocument && !video.currentSrc && video.poster) {\n    return createImage(video.poster, video.ownerDocument);\n  }\n  const cloned = video.cloneNode(false);\n  cloned.crossOrigin = \"anonymous\";\n  if (video.currentSrc && video.currentSrc !== video.src) {\n    cloned.src = video.currentSrc;\n  }\n  const ownerDocument = cloned.ownerDocument;\n  if (ownerDocument) {\n    let canPlay = true;\n    await loadMedia(cloned, { onError: () => canPlay = false, onWarn: context.log.warn });\n    if (!canPlay) {\n      if (video.poster) {\n        return createImage(video.poster, video.ownerDocument);\n      }\n      return cloned;\n    }\n    cloned.currentTime = video.currentTime;\n    await new Promise((resolve) => {\n      cloned.addEventListener(\"seeked\", resolve, { once: true });\n    });\n    const canvas = ownerDocument.createElement(\"canvas\");\n    canvas.width = video.offsetWidth;\n    canvas.height = video.offsetHeight;\n    try {\n      const ctx = canvas.getContext(\"2d\");\n      if (ctx)\n        ctx.drawImage(cloned, 0, 0, canvas.width, canvas.height);\n    } catch (error) {\n      context.log.warn(\"Failed to clone video\", error);\n      if (video.poster) {\n        return createImage(video.poster, video.ownerDocument);\n      }\n      return cloned;\n    }\n    return cloneCanvas(canvas, context);\n  }\n  return cloned;\n}\n\nfunction cloneElement(node, context) {\n  if (isCanvasElement(node)) {\n    return cloneCanvas(node, context);\n  }\n  if (isIFrameElement(node)) {\n    return cloneIframe(node, context);\n  }\n  if (isImageElement(node)) {\n    return cloneImage(node);\n  }\n  if (isVideoElement(node)) {\n    return cloneVideo(node, context);\n  }\n  return node.cloneNode(false);\n}\n\nfunction getSandBox(context) {\n  let sandbox = context.sandbox;\n  if (!sandbox) {\n    const { ownerDocument } = context;\n    try {\n      if (ownerDocument) {\n        sandbox = ownerDocument.createElement(\"iframe\");\n        sandbox.id = `__SANDBOX__${uuid()}`;\n        sandbox.width = \"0\";\n        sandbox.height = \"0\";\n        sandbox.style.visibility = \"hidden\";\n        sandbox.style.position = \"fixed\";\n        ownerDocument.body.appendChild(sandbox);\n        sandbox.srcdoc = '<!DOCTYPE html><meta charset=\"UTF-8\"><title></title><body>';\n        context.sandbox = sandbox;\n      }\n    } catch (error) {\n      context.log.warn(\"Failed to getSandBox\", error);\n    }\n  }\n  return sandbox;\n}\n\nconst ignoredStyles = [\n  \"width\",\n  \"height\",\n  \"-webkit-text-fill-color\"\n];\nconst includedAttributes = [\n  \"stroke\",\n  \"fill\"\n];\nfunction getDefaultStyle(node, pseudoElement, context) {\n  const { defaultComputedStyles } = context;\n  const nodeName = node.nodeName.toLowerCase();\n  const isSvgNode = isSVGElementNode(node) && nodeName !== \"svg\";\n  const attributes = isSvgNode ? includedAttributes.map((name) => [name, node.getAttribute(name)]).filter(([, value]) => value !== null) : [];\n  const key = [\n    isSvgNode && \"svg\",\n    nodeName,\n    attributes.map((name, value) => `${name}=${value}`).join(\",\"),\n    pseudoElement\n  ].filter(Boolean).join(\":\");\n  if (defaultComputedStyles.has(key))\n    return defaultComputedStyles.get(key);\n  const sandbox = getSandBox(context);\n  const sandboxWindow = sandbox?.contentWindow;\n  if (!sandboxWindow)\n    return /* @__PURE__ */ new Map();\n  const sandboxDocument = sandboxWindow?.document;\n  let root;\n  let el;\n  if (isSvgNode) {\n    root = sandboxDocument.createElementNS(XMLNS, \"svg\");\n    el = root.ownerDocument.createElementNS(root.namespaceURI, nodeName);\n    attributes.forEach(([name, value]) => {\n      el.setAttributeNS(null, name, value);\n    });\n    root.appendChild(el);\n  } else {\n    root = el = sandboxDocument.createElement(nodeName);\n  }\n  el.textContent = \" \";\n  sandboxDocument.body.appendChild(root);\n  const computedStyle = sandboxWindow.getComputedStyle(el, pseudoElement);\n  const styles = /* @__PURE__ */ new Map();\n  for (let len = computedStyle.length, i = 0; i < len; i++) {\n    const name = computedStyle.item(i);\n    if (ignoredStyles.includes(name))\n      continue;\n    styles.set(name, computedStyle.getPropertyValue(name));\n  }\n  sandboxDocument.body.removeChild(root);\n  defaultComputedStyles.set(key, styles);\n  return styles;\n}\n\nfunction getDiffStyle(style, defaultStyle, includeStyleProperties) {\n  const diffStyle = /* @__PURE__ */ new Map();\n  const prefixs = [];\n  const prefixTree = /* @__PURE__ */ new Map();\n  if (includeStyleProperties) {\n    for (const name of includeStyleProperties) {\n      applyTo(name);\n    }\n  } else {\n    for (let len = style.length, i = 0; i < len; i++) {\n      const name = style.item(i);\n      applyTo(name);\n    }\n  }\n  for (let len = prefixs.length, i = 0; i < len; i++) {\n    prefixTree.get(prefixs[i])?.forEach((value, name) => diffStyle.set(name, value));\n  }\n  function applyTo(name) {\n    const value = style.getPropertyValue(name);\n    const priority = style.getPropertyPriority(name);\n    const subIndex = name.lastIndexOf(\"-\");\n    const prefix = subIndex > -1 ? name.substring(0, subIndex) : void 0;\n    if (prefix) {\n      let map = prefixTree.get(prefix);\n      if (!map) {\n        map = /* @__PURE__ */ new Map();\n        prefixTree.set(prefix, map);\n      }\n      map.set(name, [value, priority]);\n    }\n    if (defaultStyle.get(name) === value && !priority)\n      return;\n    if (prefix) {\n      prefixs.push(prefix);\n    } else {\n      diffStyle.set(name, [value, priority]);\n    }\n  }\n  return diffStyle;\n}\n\nfunction copyCssStyles(node, cloned, isRoot, context) {\n  const { ownerWindow, includeStyleProperties, currentParentNodeStyle } = context;\n  const clonedStyle = cloned.style;\n  const computedStyle = ownerWindow.getComputedStyle(node);\n  const defaultStyle = getDefaultStyle(node, null, context);\n  currentParentNodeStyle?.forEach((_, key) => {\n    defaultStyle.delete(key);\n  });\n  const style = getDiffStyle(computedStyle, defaultStyle, includeStyleProperties);\n  style.delete(\"transition-property\");\n  style.delete(\"all\");\n  style.delete(\"d\");\n  style.delete(\"content\");\n  if (isRoot) {\n    style.delete(\"margin-top\");\n    style.delete(\"margin-right\");\n    style.delete(\"margin-bottom\");\n    style.delete(\"margin-left\");\n    style.delete(\"margin-block-start\");\n    style.delete(\"margin-block-end\");\n    style.delete(\"margin-inline-start\");\n    style.delete(\"margin-inline-end\");\n    style.set(\"box-sizing\", [\"border-box\", \"\"]);\n  }\n  if (style.get(\"background-clip\")?.[0] === \"text\") {\n    cloned.classList.add(\"______background-clip--text\");\n  }\n  if (IN_CHROME) {\n    if (!style.has(\"font-kerning\"))\n      style.set(\"font-kerning\", [\"normal\", \"\"]);\n    if ((style.get(\"overflow-x\")?.[0] === \"hidden\" || style.get(\"overflow-y\")?.[0] === \"hidden\") && style.get(\"text-overflow\")?.[0] === \"ellipsis\" && node.scrollWidth === node.clientWidth) {\n      style.set(\"text-overflow\", [\"clip\", \"\"]);\n    }\n  }\n  for (let len = clonedStyle.length, i = 0; i < len; i++) {\n    clonedStyle.removeProperty(clonedStyle.item(i));\n  }\n  style.forEach(([value, priority], name) => {\n    clonedStyle.setProperty(name, value, priority);\n  });\n  return style;\n}\n\nfunction copyInputValue(node, cloned) {\n  if (isTextareaElement(node) || isInputElement(node) || isSelectElement(node)) {\n    cloned.setAttribute(\"value\", node.value);\n  }\n}\n\nconst pseudoClasses = [\n  \"::before\",\n  \"::after\"\n  // '::placeholder', TODO\n];\nconst scrollbarPseudoClasses = [\n  \"::-webkit-scrollbar\",\n  \"::-webkit-scrollbar-button\",\n  // '::-webkit-scrollbar:horizontal', TODO\n  \"::-webkit-scrollbar-thumb\",\n  \"::-webkit-scrollbar-track\",\n  \"::-webkit-scrollbar-track-piece\",\n  // '::-webkit-scrollbar:vertical', TODO\n  \"::-webkit-scrollbar-corner\",\n  \"::-webkit-resizer\"\n];\nfunction copyPseudoClass(node, cloned, copyScrollbar, context, addWordToFontFamilies) {\n  const { ownerWindow, svgStyleElement, svgStyles, currentNodeStyle } = context;\n  if (!svgStyleElement || !ownerWindow)\n    return;\n  function copyBy(pseudoClass) {\n    const computedStyle = ownerWindow.getComputedStyle(node, pseudoClass);\n    let content = computedStyle.getPropertyValue(\"content\");\n    if (!content || content === \"none\")\n      return;\n    addWordToFontFamilies?.(content);\n    content = content.replace(/(')|(\")|(counter\\(.+\\))/g, \"\");\n    const klasses = [uuid()];\n    const defaultStyle = getDefaultStyle(node, pseudoClass, context);\n    currentNodeStyle?.forEach((_, key) => {\n      defaultStyle.delete(key);\n    });\n    const style = getDiffStyle(computedStyle, defaultStyle, context.includeStyleProperties);\n    style.delete(\"content\");\n    style.delete(\"-webkit-locale\");\n    if (style.get(\"background-clip\")?.[0] === \"text\") {\n      cloned.classList.add(\"______background-clip--text\");\n    }\n    const cloneStyle = [\n      `content: '${content}';`\n    ];\n    style.forEach(([value, priority], name) => {\n      cloneStyle.push(`${name}: ${value}${priority ? \" !important\" : \"\"};`);\n    });\n    if (cloneStyle.length === 1)\n      return;\n    try {\n      cloned.className = [cloned.className, ...klasses].join(\" \");\n    } catch (err) {\n      context.log.warn(\"Failed to copyPseudoClass\", err);\n      return;\n    }\n    const cssText = cloneStyle.join(\"\\n  \");\n    let allClasses = svgStyles.get(cssText);\n    if (!allClasses) {\n      allClasses = [];\n      svgStyles.set(cssText, allClasses);\n    }\n    allClasses.push(`.${klasses[0]}${pseudoClass}`);\n  }\n  pseudoClasses.forEach(copyBy);\n  if (copyScrollbar)\n    scrollbarPseudoClasses.forEach(copyBy);\n}\n\nconst excludeParentNodes = /* @__PURE__ */ new Set([\n  \"symbol\"\n  // test/fixtures/svg.symbol.html\n]);\nasync function appendChildNode(node, cloned, child, context, addWordToFontFamilies) {\n  if (isElementNode(child) && (isStyleElement(child) || isScriptElement(child)))\n    return;\n  if (context.filter && !context.filter(child))\n    return;\n  if (excludeParentNodes.has(cloned.nodeName) || excludeParentNodes.has(child.nodeName)) {\n    context.currentParentNodeStyle = void 0;\n  } else {\n    context.currentParentNodeStyle = context.currentNodeStyle;\n  }\n  const childCloned = await cloneNode(child, context, false, addWordToFontFamilies);\n  if (context.isEnable(\"restoreScrollPosition\")) {\n    restoreScrollPosition(node, childCloned);\n  }\n  cloned.appendChild(childCloned);\n}\nasync function cloneChildNodes(node, cloned, context, addWordToFontFamilies) {\n  let firstChild = node.firstChild;\n  if (isElementNode(node)) {\n    if (node.shadowRoot) {\n      firstChild = node.shadowRoot?.firstChild;\n      context.shadowRoots.push(node.shadowRoot);\n    }\n  }\n  for (let child = firstChild; child; child = child.nextSibling) {\n    if (isCommentNode(child))\n      continue;\n    if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === \"function\") {\n      const nodes = child.assignedNodes();\n      for (let i = 0; i < nodes.length; i++) {\n        await appendChildNode(node, cloned, nodes[i], context, addWordToFontFamilies);\n      }\n    } else {\n      await appendChildNode(node, cloned, child, context, addWordToFontFamilies);\n    }\n  }\n}\nfunction restoreScrollPosition(node, chlidCloned) {\n  if (!isHTMLElementNode(node) || !isHTMLElementNode(chlidCloned))\n    return;\n  const { scrollTop, scrollLeft } = node;\n  if (!scrollTop && !scrollLeft) {\n    return;\n  }\n  const { transform } = chlidCloned.style;\n  const matrix = new DOMMatrix(transform);\n  const { a, b, c, d } = matrix;\n  matrix.a = 1;\n  matrix.b = 0;\n  matrix.c = 0;\n  matrix.d = 1;\n  matrix.translateSelf(-scrollLeft, -scrollTop);\n  matrix.a = a;\n  matrix.b = b;\n  matrix.c = c;\n  matrix.d = d;\n  chlidCloned.style.transform = matrix.toString();\n}\nfunction applyCssStyleWithOptions(cloned, context) {\n  const { backgroundColor, width, height, style: styles } = context;\n  const clonedStyle = cloned.style;\n  if (backgroundColor)\n    clonedStyle.setProperty(\"background-color\", backgroundColor, \"important\");\n  if (width)\n    clonedStyle.setProperty(\"width\", `${width}px`, \"important\");\n  if (height)\n    clonedStyle.setProperty(\"height\", `${height}px`, \"important\");\n  if (styles) {\n    for (const name in styles) clonedStyle[name] = styles[name];\n  }\n}\nconst NORMAL_ATTRIBUTE_RE = /^[\\w-:]+$/;\nasync function cloneNode(node, context, isRoot = false, addWordToFontFamilies) {\n  const { ownerDocument, ownerWindow, fontFamilies, onCloneEachNode } = context;\n  if (ownerDocument && isTextNode(node)) {\n    if (addWordToFontFamilies && /\\S/.test(node.data)) {\n      addWordToFontFamilies(node.data);\n    }\n    return ownerDocument.createTextNode(node.data);\n  }\n  if (ownerDocument && ownerWindow && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n    const cloned2 = await cloneElement(node, context);\n    if (context.isEnable(\"removeAbnormalAttributes\")) {\n      const names = cloned2.getAttributeNames();\n      for (let len = names.length, i = 0; i < len; i++) {\n        const name = names[i];\n        if (!NORMAL_ATTRIBUTE_RE.test(name)) {\n          cloned2.removeAttribute(name);\n        }\n      }\n    }\n    const style = context.currentNodeStyle = copyCssStyles(node, cloned2, isRoot, context);\n    if (isRoot)\n      applyCssStyleWithOptions(cloned2, context);\n    let copyScrollbar = false;\n    if (context.isEnable(\"copyScrollbar\")) {\n      const overflow = [\n        style.get(\"overflow-x\")?.[0],\n        style.get(\"overflow-y\")?.[0]\n      ];\n      copyScrollbar = overflow.includes(\"scroll\") || (overflow.includes(\"auto\") || overflow.includes(\"overlay\")) && (node.scrollHeight > node.clientHeight || node.scrollWidth > node.clientWidth);\n    }\n    const textTransform = style.get(\"text-transform\")?.[0];\n    const families = splitFontFamily(style.get(\"font-family\")?.[0]);\n    const addWordToFontFamilies2 = families ? (word) => {\n      if (textTransform === \"uppercase\") {\n        word = word.toUpperCase();\n      } else if (textTransform === \"lowercase\") {\n        word = word.toLowerCase();\n      } else if (textTransform === \"capitalize\") {\n        word = word[0].toUpperCase() + word.substring(1);\n      }\n      families.forEach((family) => {\n        let fontFamily = fontFamilies.get(family);\n        if (!fontFamily) {\n          fontFamilies.set(family, fontFamily = /* @__PURE__ */ new Set());\n        }\n        word.split(\"\").forEach((text) => fontFamily.add(text));\n      });\n    } : void 0;\n    copyPseudoClass(\n      node,\n      cloned2,\n      copyScrollbar,\n      context,\n      addWordToFontFamilies2\n    );\n    copyInputValue(node, cloned2);\n    if (!isVideoElement(node)) {\n      await cloneChildNodes(\n        node,\n        cloned2,\n        context,\n        addWordToFontFamilies2\n      );\n    }\n    await onCloneEachNode?.(cloned2);\n    return cloned2;\n  }\n  const cloned = node.cloneNode(false);\n  await cloneChildNodes(node, cloned, context);\n  await onCloneEachNode?.(cloned);\n  return cloned;\n}\n\nfunction destroyContext(context) {\n  context.ownerDocument = void 0;\n  context.ownerWindow = void 0;\n  context.svgStyleElement = void 0;\n  context.svgDefsElement = void 0;\n  context.svgStyles.clear();\n  context.defaultComputedStyles.clear();\n  if (context.sandbox) {\n    try {\n      context.sandbox.remove();\n    } catch (err) {\n      context.log.warn(\"Failed to destroyContext\", err);\n    }\n    context.sandbox = void 0;\n  }\n  context.workers = [];\n  context.fontFamilies.clear();\n  context.fontCssTexts.clear();\n  context.requests.clear();\n  context.tasks = [];\n  context.shadowRoots = [];\n}\n\nfunction baseFetch(options) {\n  const { url, timeout, responseType, ...requestInit } = options;\n  const controller = new AbortController();\n  const timer = timeout ? setTimeout(() => controller.abort(), timeout) : void 0;\n  return fetch(url, { signal: controller.signal, ...requestInit }).then((response) => {\n    if (!response.ok) {\n      throw new Error(\"Failed fetch, not 2xx response\", { cause: response });\n    }\n    switch (responseType) {\n      case \"arrayBuffer\":\n        return response.arrayBuffer();\n      case \"dataUrl\":\n        return response.blob().then(blobToDataUrl);\n      case \"text\":\n      default:\n        return response.text();\n    }\n  }).finally(() => clearTimeout(timer));\n}\nfunction contextFetch(context, options) {\n  const { url: rawUrl, requestType = \"text\", responseType = \"text\", imageDom } = options;\n  let url = rawUrl;\n  const {\n    timeout,\n    acceptOfImage,\n    requests,\n    fetchFn,\n    fetch: {\n      requestInit,\n      bypassingCache,\n      placeholderImage\n    },\n    font,\n    workers,\n    fontFamilies\n  } = context;\n  if (requestType === \"image\" && (IN_SAFARI || IN_FIREFOX)) {\n    context.drawImageCount++;\n  }\n  let request = requests.get(rawUrl);\n  if (!request) {\n    if (bypassingCache) {\n      if (bypassingCache instanceof RegExp && bypassingCache.test(url)) {\n        url += (/\\?/.test(url) ? \"&\" : \"?\") + (/* @__PURE__ */ new Date()).getTime();\n      }\n    }\n    const canFontMinify = requestType.startsWith(\"font\") && font && font.minify;\n    const fontTexts = /* @__PURE__ */ new Set();\n    if (canFontMinify) {\n      const families = requestType.split(\";\")[1].split(\",\");\n      families.forEach((family) => {\n        if (!fontFamilies.has(family))\n          return;\n        fontFamilies.get(family).forEach((text) => fontTexts.add(text));\n      });\n    }\n    const needFontMinify = canFontMinify && fontTexts.size;\n    const baseFetchOptions = {\n      url,\n      timeout,\n      responseType: needFontMinify ? \"arrayBuffer\" : responseType,\n      headers: requestType === \"image\" ? { accept: acceptOfImage } : void 0,\n      ...requestInit\n    };\n    request = {\n      type: requestType,\n      resolve: void 0,\n      reject: void 0,\n      response: null\n    };\n    request.response = (async () => {\n      if (fetchFn && requestType === \"image\") {\n        const result = await fetchFn(rawUrl);\n        if (result)\n          return result;\n      }\n      if (!IN_SAFARI && rawUrl.startsWith(\"http\") && workers.length) {\n        return new Promise((resolve, reject) => {\n          const worker = workers[requests.size & workers.length - 1];\n          worker.postMessage({ rawUrl, ...baseFetchOptions });\n          request.resolve = resolve;\n          request.reject = reject;\n        });\n      }\n      return baseFetch(baseFetchOptions);\n    })().catch((error) => {\n      requests.delete(rawUrl);\n      if (requestType === \"image\" && placeholderImage) {\n        context.log.warn(\"Failed to fetch image base64, trying to use placeholder image\", url);\n        return typeof placeholderImage === \"string\" ? placeholderImage : placeholderImage(imageDom);\n      }\n      throw error;\n    });\n    requests.set(rawUrl, request);\n  }\n  return request.response;\n}\n\nasync function replaceCssUrlToDataUrl(cssText, baseUrl, context, isImage) {\n  if (!hasCssUrl(cssText))\n    return cssText;\n  for (const [rawUrl, url] of parseCssUrls(cssText, baseUrl)) {\n    try {\n      const dataUrl = await contextFetch(\n        context,\n        {\n          url,\n          requestType: isImage ? \"image\" : \"text\",\n          responseType: \"dataUrl\"\n        }\n      );\n      cssText = cssText.replace(toRE(rawUrl), `$1${dataUrl}$3`);\n    } catch (error) {\n      context.log.warn(\"Failed to fetch css data url\", rawUrl, error);\n    }\n  }\n  return cssText;\n}\nfunction hasCssUrl(cssText) {\n  return /url\\((['\"]?)([^'\"]+?)\\1\\)/.test(cssText);\n}\nconst URL_RE = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nfunction parseCssUrls(cssText, baseUrl) {\n  const result = [];\n  cssText.replace(URL_RE, (raw, quotation, url) => {\n    result.push([url, resolveUrl(url, baseUrl)]);\n    return raw;\n  });\n  return result.filter(([url]) => !isDataUrl(url));\n}\nfunction toRE(url) {\n  const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n  return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, \"g\");\n}\n\nconst properties = [\n  \"background-image\",\n  \"border-image-source\",\n  \"-webkit-border-image\",\n  \"-webkit-mask-image\",\n  \"list-style-image\"\n];\nfunction embedCssStyleImage(style, context) {\n  return properties.map((property) => {\n    const value = style.getPropertyValue(property);\n    if (!value || value === \"none\") {\n      return null;\n    }\n    if (IN_SAFARI || IN_FIREFOX) {\n      context.drawImageCount++;\n    }\n    return replaceCssUrlToDataUrl(value, null, context, true).then((newValue) => {\n      if (!newValue || value === newValue)\n        return;\n      style.setProperty(\n        property,\n        newValue,\n        style.getPropertyPriority(property)\n      );\n    });\n  }).filter(Boolean);\n}\n\nfunction embedImageElement(cloned, context) {\n  if (isImageElement(cloned)) {\n    const originalSrc = cloned.currentSrc || cloned.src;\n    if (!isDataUrl(originalSrc)) {\n      return [\n        contextFetch(context, {\n          url: originalSrc,\n          imageDom: cloned,\n          requestType: \"image\",\n          responseType: \"dataUrl\"\n        }).then((url) => {\n          if (!url)\n            return;\n          cloned.srcset = \"\";\n          cloned.dataset.originalSrc = originalSrc;\n          cloned.src = url || \"\";\n        })\n      ];\n    }\n    if (IN_SAFARI || IN_FIREFOX) {\n      context.drawImageCount++;\n    }\n  } else if (isSVGElementNode(cloned) && !isDataUrl(cloned.href.baseVal)) {\n    const originalSrc = cloned.href.baseVal;\n    return [\n      contextFetch(context, {\n        url: originalSrc,\n        imageDom: cloned,\n        requestType: \"image\",\n        responseType: \"dataUrl\"\n      }).then((url) => {\n        if (!url)\n          return;\n        cloned.dataset.originalSrc = originalSrc;\n        cloned.href.baseVal = url || \"\";\n      })\n    ];\n  }\n  return [];\n}\n\nfunction embedSvgUse(cloned, context) {\n  const { ownerDocument, svgDefsElement } = context;\n  const href = cloned.getAttribute(\"href\") ?? cloned.getAttribute(\"xlink:href\");\n  if (!href)\n    return [];\n  const [svgUrl, id] = href.split(\"#\");\n  if (id) {\n    const query = `#${id}`;\n    const definition = context.shadowRoots.reduce(\n      (res, root) => {\n        return res ?? root.querySelector(`svg ${query}`);\n      },\n      ownerDocument?.querySelector(`svg ${query}`)\n    );\n    if (svgUrl) {\n      cloned.setAttribute(\"href\", query);\n    }\n    if (svgDefsElement?.querySelector(query))\n      return [];\n    if (definition) {\n      svgDefsElement?.appendChild(definition.cloneNode(true));\n      return [];\n    } else if (svgUrl) {\n      return [\n        contextFetch(context, {\n          url: svgUrl,\n          responseType: \"text\"\n        }).then((svgData) => {\n          svgDefsElement?.insertAdjacentHTML(\"beforeend\", svgData);\n        })\n      ];\n    }\n  }\n  return [];\n}\n\nfunction embedNode(cloned, context) {\n  const { tasks } = context;\n  if (isElementNode(cloned)) {\n    if (isImageElement(cloned) || isSVGImageElementNode(cloned)) {\n      tasks.push(...embedImageElement(cloned, context));\n    }\n    if (isSVGUseElementNode(cloned)) {\n      tasks.push(...embedSvgUse(cloned, context));\n    }\n  }\n  if (isHTMLElementNode(cloned)) {\n    tasks.push(...embedCssStyleImage(cloned.style, context));\n  }\n  cloned.childNodes.forEach((child) => {\n    embedNode(child, context);\n  });\n}\n\nasync function embedWebFont(clone, context) {\n  const {\n    ownerDocument,\n    svgStyleElement,\n    fontFamilies,\n    fontCssTexts,\n    tasks,\n    font\n  } = context;\n  if (!ownerDocument || !svgStyleElement || !fontFamilies.size) {\n    return;\n  }\n  if (font && font.cssText) {\n    const cssText = filterPreferredFormat(font.cssText, context);\n    svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText}\n`));\n  } else {\n    const styleSheets = Array.from(ownerDocument.styleSheets).filter((styleSheet) => {\n      try {\n        return \"cssRules\" in styleSheet && Boolean(styleSheet.cssRules.length);\n      } catch (error) {\n        context.log.warn(`Error while reading CSS rules from ${styleSheet.href}`, error);\n        return false;\n      }\n    });\n    await Promise.all(\n      styleSheets.flatMap((styleSheet) => {\n        return Array.from(styleSheet.cssRules).map(async (cssRule, index) => {\n          if (isCSSImportRule(cssRule)) {\n            let importIndex = index + 1;\n            const baseUrl = cssRule.href;\n            let cssText = \"\";\n            try {\n              cssText = await contextFetch(context, {\n                url: baseUrl,\n                requestType: \"text\",\n                responseType: \"text\"\n              });\n            } catch (error) {\n              context.log.warn(`Error fetch remote css import from ${baseUrl}`, error);\n            }\n            const replacedCssText = cssText.replace(\n              URL_RE,\n              (raw, quotation, url) => raw.replace(url, resolveUrl(url, baseUrl))\n            );\n            for (const rule of parseCss(replacedCssText)) {\n              try {\n                styleSheet.insertRule(\n                  rule,\n                  rule.startsWith(\"@import\") ? importIndex += 1 : styleSheet.cssRules.length\n                );\n              } catch (error) {\n                context.log.warn(\"Error inserting rule from remote css import\", { rule, error });\n              }\n            }\n          }\n        });\n      })\n    );\n    const cssRules = [];\n    styleSheets.forEach((sheet) => {\n      unwrapCssLayers(sheet.cssRules, cssRules);\n    });\n    cssRules.filter((cssRule) => isCssFontFaceRule(cssRule) && hasCssUrl(cssRule.style.getPropertyValue(\"src\")) && splitFontFamily(cssRule.style.getPropertyValue(\"font-family\"))?.some((val) => fontFamilies.has(val))).forEach((value) => {\n      const rule = value;\n      const cssText = fontCssTexts.get(rule.cssText);\n      if (cssText) {\n        svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText}\n`));\n      } else {\n        tasks.push(\n          replaceCssUrlToDataUrl(\n            rule.cssText,\n            rule.parentStyleSheet ? rule.parentStyleSheet.href : null,\n            context\n          ).then((cssText2) => {\n            cssText2 = filterPreferredFormat(cssText2, context);\n            fontCssTexts.set(rule.cssText, cssText2);\n            svgStyleElement.appendChild(ownerDocument.createTextNode(`${cssText2}\n`));\n          })\n        );\n      }\n    });\n  }\n}\nconst COMMENTS_RE = /(\\/\\*[\\s\\S]*?\\*\\/)/g;\nconst KEYFRAMES_RE = /((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})/gi;\nfunction parseCss(source) {\n  if (source == null)\n    return [];\n  const result = [];\n  let cssText = source.replace(COMMENTS_RE, \"\");\n  while (true) {\n    const matches = KEYFRAMES_RE.exec(cssText);\n    if (!matches)\n      break;\n    result.push(matches[0]);\n  }\n  cssText = cssText.replace(KEYFRAMES_RE, \"\");\n  const IMPORT_RE = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n  const UNIFIED_RE = new RegExp(\n    // eslint-disable-next-line\n    \"((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})\",\n    \"gi\"\n  );\n  while (true) {\n    let matches = IMPORT_RE.exec(cssText);\n    if (!matches) {\n      matches = UNIFIED_RE.exec(cssText);\n      if (!matches) {\n        break;\n      } else {\n        IMPORT_RE.lastIndex = UNIFIED_RE.lastIndex;\n      }\n    } else {\n      UNIFIED_RE.lastIndex = IMPORT_RE.lastIndex;\n    }\n    result.push(matches[0]);\n  }\n  return result;\n}\nconst URL_WITH_FORMAT_RE = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_RE = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction filterPreferredFormat(str, context) {\n  const { font } = context;\n  const preferredFormat = font ? font?.preferredFormat : void 0;\n  return preferredFormat ? str.replace(FONT_SRC_RE, (match) => {\n    while (true) {\n      const [src, , format] = URL_WITH_FORMAT_RE.exec(match) || [];\n      if (!format)\n        return \"\";\n      if (format === preferredFormat)\n        return `src: ${src};`;\n    }\n  }) : str;\n}\nfunction unwrapCssLayers(rules, out = []) {\n  for (const rule of Array.from(rules)) {\n    if (isLayerBlockRule(rule)) {\n      out.push(...unwrapCssLayers(rule.cssRules));\n    } else if (\"cssRules\" in rule) {\n      unwrapCssLayers(rule.cssRules, out);\n    } else {\n      out.push(rule);\n    }\n  }\n  return out;\n}\n\nasync function domToForeignObjectSvg(node, options) {\n  const context = await orCreateContext(node, options);\n  if (isElementNode(context.node) && isSVGElementNode(context.node))\n    return context.node;\n  const {\n    ownerDocument,\n    log,\n    tasks,\n    svgStyleElement,\n    svgDefsElement,\n    svgStyles,\n    font,\n    progress,\n    autoDestruct,\n    onCloneNode,\n    onEmbedNode,\n    onCreateForeignObjectSvg\n  } = context;\n  log.time(\"clone node\");\n  const clone = await cloneNode(context.node, context, true);\n  if (svgStyleElement && ownerDocument) {\n    let allCssText = \"\";\n    svgStyles.forEach((klasses, cssText) => {\n      allCssText += `${klasses.join(\",\\n\")} {\n  ${cssText}\n}\n`;\n    });\n    svgStyleElement.appendChild(ownerDocument.createTextNode(allCssText));\n  }\n  log.timeEnd(\"clone node\");\n  await onCloneNode?.(clone);\n  if (font !== false && isElementNode(clone)) {\n    log.time(\"embed web font\");\n    await embedWebFont(clone, context);\n    log.timeEnd(\"embed web font\");\n  }\n  log.time(\"embed node\");\n  embedNode(clone, context);\n  const count = tasks.length;\n  let current = 0;\n  const runTask = async () => {\n    while (true) {\n      const task = tasks.pop();\n      if (!task)\n        break;\n      try {\n        await task;\n      } catch (error) {\n        context.log.warn(\"Failed to run task\", error);\n      }\n      progress?.(++current, count);\n    }\n  };\n  progress?.(current, count);\n  await Promise.all([...Array.from({ length: 4 })].map(runTask));\n  log.timeEnd(\"embed node\");\n  await onEmbedNode?.(clone);\n  const svg = createForeignObjectSvg(clone, context);\n  svgDefsElement && svg.insertBefore(svgDefsElement, svg.children[0]);\n  svgStyleElement && svg.insertBefore(svgStyleElement, svg.children[0]);\n  autoDestruct && destroyContext(context);\n  await onCreateForeignObjectSvg?.(svg);\n  return svg;\n}\nfunction createForeignObjectSvg(clone, context) {\n  const { width, height } = context;\n  const svg = createSvg(width, height, clone.ownerDocument);\n  const foreignObject = svg.ownerDocument.createElementNS(svg.namespaceURI, \"foreignObject\");\n  foreignObject.setAttributeNS(null, \"x\", \"0%\");\n  foreignObject.setAttributeNS(null, \"y\", \"0%\");\n  foreignObject.setAttributeNS(null, \"width\", \"100%\");\n  foreignObject.setAttributeNS(null, \"height\", \"100%\");\n  foreignObject.append(clone);\n  svg.appendChild(foreignObject);\n  return svg;\n}\n\nasync function domToCanvas(node, options) {\n  const context = await orCreateContext(node, options);\n  const svg = await domToForeignObjectSvg(context);\n  const dataUrl = svgToDataUrl(svg, context.isEnable(\"removeControlCharacter\"));\n  if (!context.autoDestruct) {\n    context.svgStyleElement = createStyleElement(context.ownerDocument);\n    context.svgDefsElement = context.ownerDocument?.createElementNS(XMLNS, \"defs\");\n    context.svgStyles.clear();\n  }\n  const image = createImage(dataUrl, svg.ownerDocument);\n  return await imageToCanvas(image, context);\n}\n\nasync function domToBlob(node, options) {\n  const context = await orCreateContext(node, options);\n  const { log, type, quality, dpi } = context;\n  const canvas = await domToCanvas(context);\n  log.time(\"canvas to blob\");\n  const blob = await canvasToBlob(canvas, type, quality);\n  if ([\"image/png\", \"image/jpeg\"].includes(type) && dpi) {\n    const arrayBuffer = await blobToArrayBuffer(blob.slice(0, 33));\n    let uint8Array = new Uint8Array(arrayBuffer);\n    if (type === \"image/png\") {\n      uint8Array = changePngDpi(uint8Array, dpi);\n    } else if (type === \"image/jpeg\") {\n      uint8Array = changeJpegDpi(uint8Array, dpi);\n    }\n    log.timeEnd(\"canvas to blob\");\n    return new Blob([uint8Array, blob.slice(33)], { type });\n  }\n  log.timeEnd(\"canvas to blob\");\n  return blob;\n}\n\nasync function domToDataUrl(node, options) {\n  const context = await orCreateContext(node, options);\n  const { log, quality, type, dpi } = context;\n  const canvas = await domToCanvas(context);\n  log.time(\"canvas to data url\");\n  let dataUrl = canvas.toDataURL(type, quality);\n  if ([\"image/png\", \"image/jpeg\"].includes(type) && dpi && SUPPORT_ATOB && SUPPORT_BTOA) {\n    const [format, body] = dataUrl.split(\",\");\n    let headerLength = 0;\n    let overwritepHYs = false;\n    if (type === \"image/png\") {\n      const b64Index = detectPhysChunkFromDataUrl(body);\n      if (b64Index >= 0) {\n        headerLength = Math.ceil((b64Index + 28) / 3) * 4;\n        overwritepHYs = true;\n      } else {\n        headerLength = 33 / 3 * 4;\n      }\n    } else if (type === \"image/jpeg\") {\n      headerLength = 18 / 3 * 4;\n    }\n    const stringHeader = body.substring(0, headerLength);\n    const restOfData = body.substring(headerLength);\n    const headerBytes = window.atob(stringHeader);\n    const uint8Array = new Uint8Array(headerBytes.length);\n    for (let i = 0; i < uint8Array.length; i++) {\n      uint8Array[i] = headerBytes.charCodeAt(i);\n    }\n    const finalArray = type === \"image/png\" ? changePngDpi(uint8Array, dpi, overwritepHYs) : changeJpegDpi(uint8Array, dpi);\n    const base64Header = window.btoa(String.fromCharCode(...finalArray));\n    dataUrl = [format, \",\", base64Header, restOfData].join(\"\");\n  }\n  log.timeEnd(\"canvas to data url\");\n  return dataUrl;\n}\n\nasync function domToSvg(node, options) {\n  const context = await orCreateContext(node, options);\n  const { width, height, ownerDocument } = context;\n  const dataUrl = await domToDataUrl(context);\n  const svg = createSvg(width, height, ownerDocument);\n  const svgImage = svg.ownerDocument.createElementNS(svg.namespaceURI, \"image\");\n  svgImage.setAttributeNS(null, \"href\", dataUrl);\n  svgImage.setAttributeNS(null, \"height\", \"100%\");\n  svgImage.setAttributeNS(null, \"width\", \"100%\");\n  svg.appendChild(svgImage);\n  return svgToDataUrl(svg, context.isEnable(\"removeControlCharacter\"));\n}\n\nasync function domToImage(node, options) {\n  const context = await orCreateContext(node, options);\n  const { ownerDocument, width, height, scale, type } = context;\n  const url = type === \"image/svg+xml\" ? await domToSvg(context) : await domToDataUrl(context);\n  const image = createImage(url, ownerDocument);\n  image.width = Math.floor(width * scale);\n  image.height = Math.floor(height * scale);\n  image.style.width = `${width}px`;\n  image.style.height = `${height}px`;\n  return image;\n}\n\nasync function domToJpeg(node, options) {\n  return domToDataUrl(\n    await orCreateContext(node, { ...options, type: \"image/jpeg\" })\n  );\n}\n\nasync function domToPixel(node, options) {\n  const context = await orCreateContext(node, options);\n  const canvas = await domToCanvas(context);\n  return canvas.getContext(\"2d\").getImageData(0, 0, canvas.width, canvas.height).data;\n}\n\nasync function domToPng(node, options) {\n  return domToDataUrl(\n    await orCreateContext(node, { ...options, type: \"image/png\" })\n  );\n}\n\nasync function domToWebp(node, options) {\n  return domToDataUrl(\n    await orCreateContext(node, { ...options, type: \"image/webp\" })\n  );\n}\n\nexport { createContext, destroyContext, domToBlob, domToCanvas, domToDataUrl, domToForeignObjectSvg, domToImage, domToJpeg, domToPixel, domToPng, domToSvg, domToWebp, loadMedia, waitUntilLoad };\n","import { domToJpeg } from 'modern-screenshot';\n\nconst MAX_SIZE_BYTES = 2 * 1024 * 1024; // 2MB\n\n/**\n * Capture a screenshot of the current viewport.\n *\n * The previous implementation passed width/height of the viewport but captured\n * `document.body` from its origin, so any user scrolled below the fold got a\n * picture of the top of the page, not what they were actually looking at.\n * Applying a negative transform equal to the current scroll offset shifts the\n * cloned DOM so that the visible viewport renders at the canvas origin.\n *\n * The transform is applied via `modern-screenshot`'s `style` option, which\n * Object.assigns onto the cloned root. `transform-origin: top left` prevents\n * any implicit centring of the translate.\n *\n * Known limitations:\n *  - `position: fixed` / `position: sticky` elements that live off-screen\n *    in document coordinates (e.g. a pinned header) will shift with the\n *    transform and can render out of frame. The capture is \"what the\n *    viewport would look like if it behaved like a normal block flow\".\n *  - Custom scroll containers (a div with `overflow: auto`) are not\n *    reflected — only the top-level window scroll is applied.\n *  - Cross-origin iframes cannot be captured by any DOM-to-image\n *    library (browser security).\n *\n * Returns a base64 JPEG data URL or null if capture fails.\n */\nexport async function captureScreenshot(): Promise<string | null> {\n  try {\n    // Prefer visualViewport when available — on iOS Safari `window.scrollY`\n    // lags the actual scroll position while the URL bar animates, and the\n    // visual viewport's `pageTop` / `pageLeft` give the user-perceived\n    // scroll offset. Desktop browsers expose visualViewport too, so this\n    // is safe as a default.\n    const vv = window.visualViewport;\n    const viewportWidth = Math.max(1, Math.floor(vv?.width ?? window.innerWidth));\n    const viewportHeight = Math.max(1, Math.floor(vv?.height ?? window.innerHeight));\n    const scrollX = Math.max(0, Math.round(vv?.pageLeft ?? window.scrollX));\n    const scrollY = Math.max(0, Math.round(vv?.pageTop ?? window.scrollY));\n\n    const transformStyle = {\n      transform: `translate(-${scrollX}px, -${scrollY}px)`,\n      transformOrigin: 'top left',\n    } as const;\n\n    let dataUrl = await domToJpeg(document.documentElement, {\n      scale: 1,\n      quality: 0.7,\n      width: viewportWidth,\n      height: viewportHeight,\n      style: transformStyle,\n    });\n\n    // Retry at lower quality / scale when the first pass exceeds the 2MB cap.\n    // Keep the same scroll-offset transform so the second pass still captures\n    // what the user is actually looking at.\n    if (dataUrl.length > MAX_SIZE_BYTES) {\n      dataUrl = await domToJpeg(document.documentElement, {\n        scale: 0.5,\n        quality: 0.5,\n        width: viewportWidth,\n        height: viewportHeight,\n        style: transformStyle,\n      });\n    }\n\n    return dataUrl;\n  } catch {\n    return null;\n  }\n}\n"]}