{"version":3,"sources":["../src/pipeline/convert.ts","../src/pipeline/batch.ts"],"names":["getEncoder","decode","toCanvas"],"mappings":";;;;;;;AAmBA,eAAsB,OAAA,CACpB,MACA,OAAA,EACwB;AACxB,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,YAAW,GAAI,OAAA;AAGhD,EAAA,MAAM,OAAA,GAAU,MAAMA,4BAAA,CAAW,MAAM,CAAA;AAGvC,EAAA,MAAM,MAAA,GAAS,MAAMC,wBAAA,CAAO,IAAI,CAAA;AAGhC,EAAA,MAAM,MAAA,GAASC,0BAAA,CAAS,MAAA,EAAQ,OAAA,CAAQ,MAAM,UAAU,CAAA;AAGxD,EAAA,MAAM,SAAA,GAAY,OAAA,IAAW,IAAA,GAAO,EAAE,SAAQ,GAAI,MAAA;AAClD,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,SAAS,CAAA;AAGnD,EAAA,MAAM,YAAA,GAAgB,KAAc,IAAA,IAAQ,OAAA;AAC5C,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AACpD,EAAA,MAAM,WAAW,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAK,GAAG,CAAA,CAAA;AAEhD,EAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,EAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AAEtB,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,EAAQ,QAAQ,IAAA,CAAK,GAAA;AAAA,IACrB,IAAA,EAAM,QAAQ,IAAA,CAAK,IAAA;AAAA,IACnB,MAAM,IAAA,CAAK;AAAA,GACb;AACF;;;ACpCA,eAAsB,YAAA,CACpB,OACA,OAAA,EAC0B;AAC1B,EAAA,MAAM,EAAE,WAAA,GAAc,CAAA,EAAG,UAAA,EAAY,GAAG,aAAY,GAAI,OAAA;AACxD,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AACpB,EAAA,MAAM,OAAA,GAA2B,IAAI,KAAA,CAAM,KAAK,CAAA;AAChD,EAAA,IAAI,SAAA,GAAY,CAAA;AAGhB,EAAA,MAAM,KAAA,GAAQ,MAAM,GAAA,CAAI,CAAC,MAAM,KAAA,MAAW,EAAE,IAAA,EAAM,KAAA,EAAM,CAAE,CAAA;AAC1D,EAAA,MAAM,UAA2B,EAAC;AAElC,EAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,IAAI,WAAA,EAAa,KAAK,GAAG,CAAA,EAAA,EAAK;AACrD,IAAA,OAAA,CAAQ,IAAA,CAAK,cAAc,CAAA;AAAA,EAC7B;AAEA,EAAA,eAAe,YAAA,GAA8B;AAC3C,IAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACvB,MAAA,MAAM,IAAA,GAAO,MAAM,KAAA,EAAM;AACzB,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,WAAW,CAAA;AACnD,MAAA,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AACtB,MAAA,SAAA,EAAA;AAEA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,MAAM,QAAA,GAA0B;AAAA,UAC9B,SAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACX;AACA,QAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,CAAQ,IAAI,OAAO,CAAA;AACzB,EAAA,OAAO,OAAA;AACT","file":"chunk-ST2FOTAA.cjs","sourcesContent":["import type { ConvertOptions, ConvertResult } from '../types.js';\n\nimport { decode } from '../decode/decode.js';\nimport { toCanvas } from '../transform/index.js';\nimport { getEncoder } from '../encode/router.js';\n\n/**\n * Convert a HEIC/HEIF file to any supported format.\n *\n * Full pipeline: HEIC file → decode (WASM) → transform (Canvas) → encode → Blob\n *\n * @example\n * ```typescript\n * import { convert } from 'heiccon';\n *\n * const result = await convert(heicFile, { format: 'jpg', quality: 85 });\n * // result.blob — ready to download or display\n * ```\n */\nexport async function convert(\n  file: Blob,\n  options: ConvertOptions,\n): Promise<ConvertResult> {\n  const { format, quality, resize: resizeOpts } = options;\n\n  // 1. Load encoder (lazy, cached)\n  const encoder = await getEncoder(format);\n\n  // 2. Decode HEIC → ImageBitmap\n  const bitmap = await decode(file);\n\n  // 3. Transform: ImageBitmap → Canvas (resize + alpha compositing)\n  const canvas = toCanvas(bitmap, encoder.meta, resizeOpts);\n\n  // 4. Encode: Canvas → Blob\n  const encodeOpt = quality != null ? { quality } : undefined;\n  const blob = await encoder.encode(canvas, encodeOpt);\n\n  // 5. Build filename\n  const originalName = (file as File).name ?? 'image';\n  const baseName = originalName.replace(/\\.[^.]+$/, '');\n  const filename = `${baseName}.${encoder.meta.ext}`;\n\n  const width = canvas.width;\n  const height = canvas.height;\n\n  return {\n    blob,\n    filename,\n    width,\n    height,\n    format: encoder.meta.key,\n    mime: encoder.meta.mime,\n    size: blob.size,\n  };\n}\n","import type { BatchOptions, BatchProgress, ConvertResult } from '../types.js';\n\nimport { convert } from './convert.js';\n\n/**\n * Convert multiple HEIC/HEIF files in parallel with concurrency control.\n *\n * @example\n * ```typescript\n * import { convertBatch } from 'heiccon';\n *\n * const results = await convertBatch(heicFiles, {\n *   format: 'jpg',\n *   quality: 85,\n *   concurrency: 4,\n *   onProgress: ({ completed, total }) => console.log(`${completed}/${total}`),\n * });\n * ```\n */\nexport async function convertBatch(\n  files: Blob[],\n  options: BatchOptions,\n): Promise<ConvertResult[]> {\n  const { concurrency = 4, onProgress, ...convertOpts } = options;\n  const total = files.length;\n  const results: ConvertResult[] = new Array(total);\n  let completed = 0;\n\n  // Process files with concurrency limit\n  const queue = files.map((file, index) => ({ file, index }));\n  const workers: Promise<void>[] = [];\n\n  for (let i = 0; i < Math.min(concurrency, total); i++) {\n    workers.push(processQueue());\n  }\n\n  async function processQueue(): Promise<void> {\n    while (queue.length > 0) {\n      const item = queue.shift();\n      if (!item) break;\n\n      const result = await convert(item.file, convertOpts);\n      results[item.index] = result;\n      completed++;\n\n      if (onProgress) {\n        const progress: BatchProgress = {\n          completed,\n          total,\n          current: result,\n        };\n        onProgress(progress);\n      }\n    }\n  }\n\n  await Promise.all(workers);\n  return results;\n}\n"]}