{"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,MAAM;CACtB,MAAM,MAAM,IAAI,gBAAgB,IAAI;CAEpC,IAAI,eAAe;EACjB,IAAI,gBAAgB,GAAG;EACvB,MAAM,SAAS,SAAS,cAAc,QAAQ;EAC9C,OAAO,QAAQ,IAAI;EACnB,OAAO,SAAS,IAAI;EACpB,MAAM,MAAM,OAAO,WAAW,IAAI;EAClC,IAAI,CAAC,KAAK;GACR,uBAAO,IAAI,MAAM,8BAA8B,CAAC;GAChD;EACF;EACA,IAAI,UAAU,KAAK,GAAG,CAAC;EACvB,OAAO,QACJ,YAAY;GACX,IAAI,SACF,QAAQ,OAAO;QAEf,uBAAO,IAAI,MAAM,0BAA0B,CAAC;EAEhD,GACA,aACA,CACF;CACF;CAEA,IAAI,gBAAgB;EAClB,IAAI,gBAAgB,GAAG;EACvB,uBAAO,IAAI,MAAM,sBAAsB,CAAC;CAC1C;CAEA,IAAI,MAAM;AACZ,CAAC;AAIH,MAAa,mBAAmB,OAC9B,SAC+D;CAC/D,MAAM,QAAQ,KAAK,QAAQ,GAAA,CAAI,YAAY;CAE3C,IAAI,SAAS,eAAe,SAAS,iBACnC,OAAO,GAAG,OAAO,KAAK;CAIxB,OAAO,EAAE,aAAa,MADA,UAAU,IAAI,EACN;AAChC"}