{"version":3,"file":"image-fit.cjs","sources":["../../../src/utils/image-fit.js"],"sourcesContent":["/**\n * 图片适配工具函数\n * 根据 fit 参数计算图片的实际显示尺寸和位置\n */\n\n/**\n * 计算图片适配后的尺寸和位置\n * @param {Object} options - 选项\n * @param {number} options.imageWidth - 图片原始宽度\n * @param {number} options.imageHeight - 图片原始高度\n * @param {number} options.containerWidth - 容器宽度\n * @param {number} options.containerHeight - 容器高度\n * @param {string} options.fit - 适配模式：'cover', 'contain', 'fill', 'none'\n * @returns {Object} { width, height, x, y } 适配后的尺寸和位置（相对于容器中心）\n */\nexport function calculateImageFit({ imageWidth, imageHeight, containerWidth, containerHeight, fit = 'cover' }) {\n  const imageAspectRatio = imageWidth / imageHeight;\n  const containerAspectRatio = containerWidth / containerHeight;\n  \n  let width = containerWidth;\n  let height = containerHeight;\n  let x = 0;\n  let y = 0;\n  \n  switch (fit) {\n    case 'cover':\n      // 覆盖：保持宽高比，完全填满容器，超出部分被裁剪\n      // 选择较大的缩放比例，确保完全覆盖容器\n      if (imageAspectRatio > containerAspectRatio) {\n        // 图片更宽 → 以高度为基准（左右溢出裁剪）\n        height = containerHeight;\n        width = containerHeight * imageAspectRatio;\n      } else {\n        // 容器更宽或相等 → 以宽度为基准（上下溢出裁剪）\n        width = containerWidth;\n        height = containerWidth / imageAspectRatio;\n      }\n      break;\n\n    case 'contain':\n      // 包含：保持宽高比，完整显示，可能会有空白\n      if (containerAspectRatio > imageAspectRatio) {\n        // 容器更宽，以高度为准\n        height = containerHeight;\n        width = containerHeight * imageAspectRatio;\n      } else {\n        // 容器更高，以宽度为准\n        width = containerWidth;\n        height = containerWidth / imageAspectRatio;\n      }\n      break;\n      \n    case 'fill':\n    case 'stretch':\n      // 填充：拉伸填满容器，不保持宽高比\n      width = containerWidth;\n      height = containerHeight;\n      break;\n      \n    case 'none':\n    case 'scale-down':\n      // 不缩放或缩小：使用原始尺寸或缩小到适合容器\n      if (fit === 'scale-down') {\n        // 只在图片大于容器时缩小\n        if (imageWidth > containerWidth || imageHeight > containerHeight) {\n          if (containerAspectRatio > imageAspectRatio) {\n            height = containerHeight;\n            width = containerHeight * imageAspectRatio;\n          } else {\n            width = containerWidth;\n            height = containerWidth / imageAspectRatio;\n          }\n        } else {\n          width = imageWidth;\n          height = imageHeight;\n        }\n      } else {\n        // none: 使用原始尺寸\n        width = imageWidth;\n        height = imageHeight;\n      }\n      break;\n      \n    default:\n      // 默认使用 cover\n      if (containerAspectRatio > imageAspectRatio) {\n        height = containerHeight;\n        width = containerHeight * imageAspectRatio;\n      } else {\n        width = containerWidth;\n        height = containerWidth / imageAspectRatio;\n      }\n  }\n  \n  return {\n    width,\n    height,\n    x: 0, // 相对于容器中心，x 偏移为 0（由 anchor 控制）\n    y: 0, // 相对于容器中心，y 偏移为 0（由 anchor 控制）\n  };\n}\n\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,EAAE,EAAE;AAC/G,EAAE,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW;AACnD,EAAE,MAAM,oBAAoB,GAAG,cAAc,GAAG,eAAe;AAC/D;AACA,EAAE,IAAI,KAAK,GAAG,cAAc;AAC5B,EAAE,IAAI,MAAM,GAAG,eAAe;AAG9B;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,KAAK,OAAO;AAChB;AACA;AACA,MAAM,IAAI,gBAAgB,GAAG,oBAAoB,EAAE;AACnD;AACA,QAAQ,MAAM,GAAG,eAAe;AAChC,QAAQ,KAAK,GAAG,eAAe,GAAG,gBAAgB;AAClD,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,KAAK,GAAG,cAAc;AAC9B,QAAQ,MAAM,GAAG,cAAc,GAAG,gBAAgB;AAClD,MAAM;AACN,MAAM;;AAEN,IAAI,KAAK,SAAS;AAClB;AACA,MAAM,IAAI,oBAAoB,GAAG,gBAAgB,EAAE;AACnD;AACA,QAAQ,MAAM,GAAG,eAAe;AAChC,QAAQ,KAAK,GAAG,eAAe,GAAG,gBAAgB;AAClD,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,KAAK,GAAG,cAAc;AAC9B,QAAQ,MAAM,GAAG,cAAc,GAAG,gBAAgB;AAClD,MAAM;AACN,MAAM;AACN;AACA,IAAI,KAAK,MAAM;AACf,IAAI,KAAK,SAAS;AAClB;AACA,MAAM,KAAK,GAAG,cAAc;AAC5B,MAAM,MAAM,GAAG,eAAe;AAC9B,MAAM;AACN;AACA,IAAI,KAAK,MAAM;AACf,IAAI,KAAK,YAAY;AACrB;AACA,MAAM,IAAI,GAAG,KAAK,YAAY,EAAE;AAChC;AACA,QAAQ,IAAI,UAAU,GAAG,cAAc,IAAI,WAAW,GAAG,eAAe,EAAE;AAC1E,UAAU,IAAI,oBAAoB,GAAG,gBAAgB,EAAE;AACvD,YAAY,MAAM,GAAG,eAAe;AACpC,YAAY,KAAK,GAAG,eAAe,GAAG,gBAAgB;AACtD,UAAU,CAAC,MAAM;AACjB,YAAY,KAAK,GAAG,cAAc;AAClC,YAAY,MAAM,GAAG,cAAc,GAAG,gBAAgB;AACtD,UAAU;AACV,QAAQ,CAAC,MAAM;AACf,UAAU,KAAK,GAAG,UAAU;AAC5B,UAAU,MAAM,GAAG,WAAW;AAC9B,QAAQ;AACR,MAAM,CAAC,MAAM;AACb;AACA,QAAQ,KAAK,GAAG,UAAU;AAC1B,QAAQ,MAAM,GAAG,WAAW;AAC5B,MAAM;AACN,MAAM;AACN;AACA,IAAI;AACJ;AACA,MAAM,IAAI,oBAAoB,GAAG,gBAAgB,EAAE;AACnD,QAAQ,MAAM,GAAG,eAAe;AAChC,QAAQ,KAAK,GAAG,eAAe,GAAG,gBAAgB;AAClD,MAAM,CAAC,MAAM;AACb,QAAQ,KAAK,GAAG,cAAc;AAC9B,QAAQ,MAAM,GAAG,cAAc,GAAG,gBAAgB;AAClD,MAAM;AACN;AACA;AACA,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE,CAAC;AACR,GAAG;AACH;;;;"}