import { debugInfo } from "../../../../Utils/debugUtils";
// 常量定义
var INLINE_MATH_SUFFIX_PATTERN = '(?:%|[kKmMbB]|千|万|亿|兆|万亿|百万|亿万)?';
var INLINE_MATH_CURRENCY_PATTERN = new RegExp("^[+-]?\\d{1,3}(?:,\\d{3})*(?:\\.\\d+)?".concat(INLINE_MATH_SUFFIX_PATTERN, "$"));
var INLINE_MATH_SIMPLE_NUMBER_PATTERN = new RegExp("^[+-]?\\d+(?:\\.\\d+)?".concat(INLINE_MATH_SUFFIX_PATTERN, "$"));
/**
 * 判断是否应该将内联数学公式作为文本处理
 */ export var shouldTreatInlineMathAsText = function(rawValue) {
    var trimmedValue = rawValue.trim();
    if (!trimmedValue) {
        return true;
    }
    if (/[=^_\\{}]/.test(trimmedValue)) {
        return false;
    }
    return INLINE_MATH_CURRENCY_PATTERN.test(trimmedValue) || INLINE_MATH_SIMPLE_NUMBER_PATTERN.test(trimmedValue);
};
/**
 * 处理内联数学公式
 * @param currentElement - 当前处理的内联数学公式元素
 * @returns 返回格式化的内联KaTeX节点对象
 */ export var handleInlineMath = function(currentElement) {
    debugInfo('handleInlineMath - 处理内联数学公式', {
        value: currentElement === null || currentElement === void 0 ? void 0 : currentElement.value
    });
    var inlineMathValue = typeof (currentElement === null || currentElement === void 0 ? void 0 : currentElement.value) === 'string' ? currentElement.value : '';
    var treatAsText = shouldTreatInlineMathAsText(inlineMathValue);
    debugInfo('handleInlineMath - 判断结果', {
        treatAsText: treatAsText,
        value: inlineMathValue
    });
    if (treatAsText) {
        var result = {
            type: 'paragraph',
            children: [
                {
                    text: "$".concat(inlineMathValue, "$")
                }
            ]
        };
        debugInfo('handleInlineMath - 作为文本处理', {
            type: result.type
        });
        return result;
    }
    var result1 = {
        type: 'inline-katex',
        children: [
            {
                text: inlineMathValue
            }
        ]
    };
    debugInfo('handleInlineMath - 作为内联公式处理', {
        type: result1.type
    });
    return result1;
};
/**
 * 处理数学公式块
 * @param currentElement - 当前处理的数学公式块元素
 * @returns 返回格式化的KaTeX块节点对象
 */ export var handleMath = function(currentElement) {
    var _currentElement_value;
    debugInfo('handleMath - 处理数学公式块', {
        valueLength: (_currentElement_value = currentElement.value) === null || _currentElement_value === void 0 ? void 0 : _currentElement_value.length
    });
    var result = {
        type: 'katex',
        language: 'latex',
        katex: true,
        value: currentElement.value,
        children: [
            {
                text: ''
            }
        ]
    };
    debugInfo('handleMath - 数学公式块处理完成', {
        type: result.type,
        language: result.language,
        katex: result.katex
    });
    return result;
};
