"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ALL_DATE_OPTIONS = exports.DYNAMIC_OPTION_VALUES = exports.DATE_RANGE_OPTION = exports.DATE_SHORTCUT_OPTIONS = void 0;
exports.isDynamicOption = isDynamicOption;
exports.getDateFilterValueType = getDateFilterValueType;
exports.getDateShortcutValue = getDateShortcutValue;
exports.isDateShortcut = isDateShortcut;
exports.getDateShortcutLabel = getDateShortcutLabel;
exports.extractDateShortcutNaturalLanguage = extractDateShortcutNaturalLanguage;
const i18n_1 = __importDefault(require("../../../locales/i18n.js"));
/**
 * 日期快捷选项常量定义
 * value 值使用 label 值（中文），用于自然语言处理
 */
exports.DATE_SHORTCUT_OPTIONS = [
    { label: i18n_1.default.get({ id: 'Today', dm: '今天' }), value: '今天' },
    { label: i18n_1.default.get({ id: 'Tomorrow', dm: '明天' }), value: '明天' },
    { label: i18n_1.default.get({ id: 'Yesterday', dm: '昨天' }), value: '昨天' },
    { label: i18n_1.default.get({ id: 'ThisWeek', dm: '本周' }), value: '本周' },
    { label: i18n_1.default.get({ id: 'LastWeek', dm: '上周' }), value: '上周' },
    { label: i18n_1.default.get({ id: 'NextWeek', dm: '下周' }), value: '下周' },
    { label: i18n_1.default.get({ id: 'ThisMonth', dm: '本月' }), value: '本月' },
    { label: i18n_1.default.get({ id: 'LastMonth', dm: '上个月' }), value: '上个月' },
    { label: i18n_1.default.get({ id: 'NextMonth', dm: '下个月' }), value: '下个月' },
    { label: i18n_1.default.get({ id: 'ThisYear', dm: '今年' }), value: '今年' },
    { label: i18n_1.default.get({ id: 'LastYear', dm: '去年' }), value: '去年' },
    { label: i18n_1.default.get({ id: 'NextYear', dm: '明年' }), value: '明年' },
    {
        label: i18n_1.default.get({ id: 'StartDateToEndDate', dm: '开始日期至结束日期' }),
        value: '开始日期至结束日期',
    },
];
/** 自定义日期范围选项的 value 前缀（与快捷选项中的「开始日期至结束日期」一致） */
exports.DATE_RANGE_OPTION = i18n_1.default.get({
    id: 'StartDateToEndDate',
    dm: '开始日期至结束日期',
});
/** 动态日期选项 value（未来/过去），带天数输入 */
exports.DYNAMIC_OPTION_VALUES = [
    i18n_1.default.get({ id: 'Future', dm: '未来' }),
    i18n_1.default.get({ id: 'Past', dm: '过去' }),
];
/** 日期筛选下拉完整选项 = 静态快捷项 + 动态项（未来/过去） */
exports.ALL_DATE_OPTIONS = [
    ...exports.DATE_SHORTCUT_OPTIONS,
    { label: i18n_1.default.get({ id: 'Future', dm: '未来' }), value: '未来' },
    { label: i18n_1.default.get({ id: 'Past', dm: '过去' }), value: '过去' },
];
/** 是否为动态日期选项（未来/过去） */
function isDynamicOption(value) {
    return exports.DYNAMIC_OPTION_VALUES.includes(value);
}
/** 根据 value 字符串判断类型（用于分支处理） */
function getDateFilterValueType(value) {
    if (!value)
        return 'empty';
    if (value.startsWith(`${exports.DATE_RANGE_OPTION}:`))
        return 'dateRange';
    if (value.startsWith('未来:') || value.startsWith('过去:'))
        return 'dynamic';
    if (exports.DATE_SHORTCUT_OPTIONS.some((o) => o.value === value))
        return 'shortcut';
    return 'empty';
}
/** 从自然语言获取快捷选项值（如 "今天" → "今天"、"本周" → "本周"），不匹配返回 undefined */
function getDateShortcutValue(naturalLanguage) {
    const trimmed = naturalLanguage === null || naturalLanguage === void 0 ? void 0 : naturalLanguage.trim();
    if (!trimmed)
        return undefined;
    const exact = exports.DATE_SHORTCUT_OPTIONS.find((o) => o.label === trimmed || o.value === trimmed);
    return exact === null || exact === void 0 ? void 0 : exact.value;
}
/** 判断是否为日期快捷选项（今天/本周等） */
function isDateShortcut(value) {
    return !!value && exports.DATE_SHORTCUT_OPTIONS.some((o) => o.value === value);
}
/** 获取日期快捷选项的显示标签，不匹配则返回原值 */
function getDateShortcutLabel(value) {
    var _a, _b;
    return value ? ((_b = (_a = exports.DATE_SHORTCUT_OPTIONS.find((o) => o.value === value)) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : value) : '';
}
/** 从字段值（可能为数组）中提取快捷选项的显示文案，非快捷选项返回 undefined */
function extractDateShortcutNaturalLanguage(value) {
    if (value == null)
        return undefined;
    const first = Array.isArray(value) ? value[0] : value;
    if (typeof first !== 'string' || !isDateShortcut(first))
        return undefined;
    return getDateShortcutLabel(first);
}
