{"version":3,"file":"blobToPng.mjs","names":[],"sources":["../../src/utils/blobToPng.ts"],"sourcesContent":["/**\n * Convert image blob to PNG format.\n * Clipboard API only supports image/png and image/svg+xml.\n * WebP, JPEG and other formats need to be converted for clipboard copy.\n */\nexport const blobToPng = (blob: Blob): Promise<Blob> =>\n  new Promise((resolve, reject) => {\n    const img = new Image();\n    const url = URL.createObjectURL(blob);\n\n    img.onload = () => {\n      URL.revokeObjectURL(url);\n      const canvas = document.createElement('canvas');\n      canvas.width = img.naturalWidth;\n      canvas.height = img.naturalHeight;\n      const ctx = canvas.getContext('2d');\n      if (!ctx) {\n        reject(new Error('Canvas context not available'));\n        return;\n      }\n      ctx.drawImage(img, 0, 0);\n      canvas.toBlob(\n        (pngBlob) => {\n          if (pngBlob) {\n            resolve(pngBlob);\n          } else {\n            reject(new Error('Failed to convert to PNG'));\n          }\n        },\n        'image/png',\n        1,\n      );\n    };\n\n    img.onerror = () => {\n      URL.revokeObjectURL(url);\n      reject(new Error('Failed to load image'));\n    };\n\n    img.src = url;\n  });\n\nconst CLIPBOARD_SUPPORTED_TYPES = ['image/png', 'image/svg+xml'] as const;\n\nexport const getClipboardBlob = async (\n  blob: Blob,\n): Promise<{ 'image/png': Blob } | { 'image/svg+xml': Blob }> => {\n  const type = (blob.type || '').toLowerCase();\n\n  if (type === 'image/png' || type === 'image/svg+xml') {\n    return { [type]: blob } as { 'image/png': Blob } | { 'image/svg+xml': Blob };\n  }\n\n  const pngBlob = await blobToPng(blob);\n  return { 'image/png': pngBlob };\n};\n"],"mappings":";;;;;;AAKA,MAAa,aAAa,SACxB,IAAI,SAAS,SAAS,WAAW;CAC/B,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,MAAM,IAAI,gBAAgB,KAAK;AAErC,KAAI,eAAe;AACjB,MAAI,gBAAgB,IAAI;EACxB,MAAM,SAAS,SAAS,cAAc,SAAS;AAC/C,SAAO,QAAQ,IAAI;AACnB,SAAO,SAAS,IAAI;EACpB,MAAM,MAAM,OAAO,WAAW,KAAK;AACnC,MAAI,CAAC,KAAK;AACR,0BAAO,IAAI,MAAM,+BAA+B,CAAC;AACjD;;AAEF,MAAI,UAAU,KAAK,GAAG,EAAE;AACxB,SAAO,QACJ,YAAY;AACX,OAAI,QACF,SAAQ,QAAQ;OAEhB,wBAAO,IAAI,MAAM,2BAA2B,CAAC;KAGjD,aACA,EACD;;AAGH,KAAI,gBAAgB;AAClB,MAAI,gBAAgB,IAAI;AACxB,yBAAO,IAAI,MAAM,uBAAuB,CAAC;;AAG3C,KAAI,MAAM;EACV;AAIJ,MAAa,mBAAmB,OAC9B,SAC+D;CAC/D,MAAM,QAAQ,KAAK,QAAQ,IAAI,aAAa;AAE5C,KAAI,SAAS,eAAe,SAAS,gBACnC,QAAO,GAAG,OAAO,MAAM;CAGzB,MAAM,UAAU,MAAM,UAAU,KAAK;AACrC,QAAO,EAAE,aAAa,SAAS"}