{"version":3,"sources":["../src/transform/canvas.ts"],"names":[],"mappings":";;;AAOA,IAAM,8BAA6B,CAAA,MAAM;AACvC,EAAA,IAAI;AACF,IAAA,OAAO,OAAO,iBAAA,KAAsB,WAAA,IAAe,IAAA,YAAgB,iBAAA;AAAA,EACrE,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF,CAAA,GAAG;AAGI,SAAS,YAAA,CAAa,OAAe,MAAA,EAA2B;AACrE,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,OAAO,IAAI,eAAA,CAAgB,KAAA,EAAO,MAAM,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AACzC,EAAA,CAAA,CAAE,KAAA,GAAQ,KAAA;AACV,EAAA,CAAA,CAAE,MAAA,GAAS,MAAA;AACX,EAAA,OAAO,CAAA;AACT;AAMO,SAAS,YAAA,CACd,MAAA,EACA,IAAA,EACA,OAAA,EACe;AAEf,EAAA,IAAI,eAAA,IAAmB,MAAA,IAAU,OAAO,MAAA,CAAO,kBAAkB,UAAA,EAAY;AAC3E,IAAA,MAAM,IAAA,GAA2B,EAAE,IAAA,EAAK;AACxC,IAAA,IAAI,OAAA,KAAY,MAAA,EAAW,IAAA,CAAK,OAAA,GAAU,OAAA;AAC1C,IAAA,OAAO,MAAA,CAAO,cAAc,IAAI,CAAA;AAAA,EAClC;AAGA,EAAA,OAAO,IAAI,OAAA,CAAc,CAAC,OAAA,EAAS,MAAA,KAAW;AAC5C,IAAC,MAAA,CAA6B,MAAA;AAAA,MAC5B,CAAC,IAAA,KAAU,IAAA,GAAO,OAAA,CAAQ,IAAI,CAAA,GAAI,MAAA,CAAO,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,gBAAA,CAAkB,CAAC,CAAA;AAAA,MAC7E,IAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAC,CAAA;AACH","file":"chunk-5STQPEJH.cjs","sourcesContent":["/**\n * Canvas abstraction: works in both main thread (HTMLCanvasElement)\n * and Web Worker (OffscreenCanvas).\n */\n\ntype AnyCanvas = HTMLCanvasElement | OffscreenCanvas;\n\nconst isWorkerEnv = /*@__PURE__*/ (() => {\n  try {\n    return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n  } catch {\n    return false;\n  }\n})();\n\n/** Create a Canvas of the given dimensions (auto-detects Worker vs main thread) */\nexport function createCanvas(width: number, height: number): AnyCanvas {\n  if (isWorkerEnv) {\n    return new OffscreenCanvas(width, height);\n  }\n  const c = document.createElement('canvas');\n  c.width = width;\n  c.height = height;\n  return c;\n}\n\n/**\n * Convert a Canvas to a Blob. Handles both HTMLCanvasElement.toBlob()\n * and OffscreenCanvas.convertToBlob() transparently.\n */\nexport function canvasToBlob(\n  canvas: AnyCanvas,\n  type: string,\n  quality?: number,\n): Promise<Blob> {\n  // OffscreenCanvas (Worker context)\n  if ('convertToBlob' in canvas && typeof canvas.convertToBlob === 'function') {\n    const opts: ImageEncodeOptions = { type };\n    if (quality !== undefined) opts.quality = quality;\n    return canvas.convertToBlob(opts);\n  }\n\n  // HTMLCanvasElement (main thread)\n  return new Promise<Blob>((resolve, reject) => {\n    (canvas as HTMLCanvasElement).toBlob(\n      (blob) => (blob ? resolve(blob) : reject(new Error(`${type} encoding failed`))),\n      type,\n      quality,\n    );\n  });\n}\n"]}