function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
import dayjs from 'dayjs';

/**
 * 将 dayjs / 字符串格式化为 YYYY-MM-DD。
 *
 * @example
 * formatMultiDayBoundary(dayjs('2026-05-01')); // '2026-05-01'
 */
export function formatMultiDayBoundary(value) {
  if (value == null || value === '') return '';
  var d = dayjs(value);
  return d.isValid() ? d.format('YYYY-MM-DD') : String(value);
}

/**
 * cacheItem 上是否已有与当前日期区间一致的报价（跳过重复请求）。
 *
 * @example
 * hasMatchingMultiDayQuotationOnCacheItem({ _extend: { multiDayPrices: { '2026-05-01': {} }, start_date: '2026-05-01', end_date: '2026-05-02' } });
 */
export function hasMatchingMultiDayQuotationOnCacheItem(cacheItem) {
  var _ext$start_date, _ext$end_date;
  var ext = cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem._extend;
  if (!(ext !== null && ext !== void 0 && ext.multiDayPrices) || _typeof(ext.multiDayPrices) !== 'object') {
    return false;
  }
  var keys = Object.keys(ext.multiDayPrices);
  if (!keys.length) return false;
  var start = formatMultiDayBoundary((_ext$start_date = ext.start_date) !== null && _ext$start_date !== void 0 ? _ext$start_date : ext.startDate);
  var end = formatMultiDayBoundary((_ext$end_date = ext.end_date) !== null && _ext$end_date !== void 0 ? _ext$end_date : ext.endDate);
  if (!start || !end) {
    return keys.length > 0;
  }
  return keys.includes(start);
}

/**
 * 跨日商品是否已完成报价展开（含子预约 items 或按日 multiDayPrices）。
 *
 * @example
 * isMultiDayQuotationExpanded({ _extend: { items: [{ _id: 'd1' }] } }); // true
 */
export function isMultiDayQuotationExpanded(cacheItem) {
  var _cacheItem$_extend;
  if (Array.isArray(cacheItem === null || cacheItem === void 0 || (_cacheItem$_extend = cacheItem._extend) === null || _cacheItem$_extend === void 0 ? void 0 : _cacheItem$_extend.items) && cacheItem._extend.items.length > 0) {
    return true;
  }
  return hasMatchingMultiDayQuotationOnCacheItem(cacheItem);
}