'use strict';

function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }

var isSupportWebp = _interopDefault(require('./isSupportWebp'));
var isNum = _interopDefault(require('./isNum'));

/**
 * 格式化图片地址（设置宽、高、缩放、裁剪、webp）
 * @param {*} url
 * @param {*} options.w 宽
 * @param {*} options.h 高
 * @param {*} options.e 优先缩放的边，0：长边优先；1：短边优先； 2：强制缩放，默认为0
 * @param {*} options.c 图片自动裁剪，1表示进行自动裁剪
 * @param {*} options.q 图片清晰度，默认不加，为80%，某些特殊场景如广告需要使用原清晰度则填100
 * @param {*} options.s 该参数只对gif图有效，表示取gif图第一帧
 * @param {*} options.webp 默认支持webp则使用，false则强制不转webp
 *
 * @see https://info.bilibili.co/pages/viewpage.action?pageId=59399366
 */
function formatImg(url, options) {
  if (!url || !~url.indexOf('/bfs/')) return url;
  var ret = url.match(/(.*\.(jpg|jpeg|gif|png))(\?.*)?/);
  if (!ret) return url;
  var ext = ret[2];
  var src = ret[1];

  // 图片后参数 比如视频动态图
  var args = ret[3] || '';

  var _Object$assign = Object.assign({}, options || {}),
      _Object$assign$w = _Object$assign.w,
      w = _Object$assign$w === void 0 ? 0 : _Object$assign$w,
      _Object$assign$h = _Object$assign.h,
      h = _Object$assign$h === void 0 ? 0 : _Object$assign$h,
      e = _Object$assign.e,
      _Object$assign$c = _Object$assign.c,
      c = _Object$assign$c === void 0 ? 1 : _Object$assign$c,
      q = _Object$assign.q,
      s = _Object$assign.s,
      _Object$assign$webp = _Object$assign.webp,
      webp = _Object$assign$webp === void 0 ? true : _Object$assign$webp;

  w = Math.abs(Math.round(w));
  h = Math.abs(Math.round(h));
  if (w > 4096 || h > 4096) return url;
  var params = [];
  if (w) params.push("".concat(w, "w"));
  if (h) params.push("".concat(h, "h"));
  if (isNum(e)) params.push("".concat(e, "e"));
  if (isNum(c)) params.push("".concat(c, "c"));
  if (isNum(q)) params.push("".concat(q, "q"));
  if (isNum(s)) params.push('1s');
  var base = "".concat(src, "@").concat(params.join('_'));
  if (w) if (webp && isSupportWebp()) return "".concat(base, ".webp").concat(args);
  return "".concat(base).concat(args ? ".".concat(ext).concat(args) : '');
}

module.exports = formatImg;
