function _array_like_to_array(arr, len) {
    if (len == null || len > arr.length) len = arr.length;
    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
    return arr2;
}
function _array_without_holes(arr) {
    if (Array.isArray(arr)) return _array_like_to_array(arr);
}
function _iterable_to_array(iter) {
    if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
function _non_iterable_spread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _to_consumable_array(arr) {
    return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
}
function _unsupported_iterable_to_array(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _array_like_to_array(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(n);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
// 常量定义
var EMPTY_LINE_DISTANCE_THRESHOLD = 4; // 两个元素之间的行距阈值
var EMPTY_LINE_CALCULATION_OFFSET = 2; // 计算空行数量时的偏移量
var EMPTY_LINE_DIVISOR = 2; // 计算空行数量的除数
/**
 * 根据行间距添加空行元素（纯函数版本）
 * @param els - 目标元素数组
 * @param preNode - 前一个节点
 * @param currentElement - 当前处理的元素
 * @param top - 是否为顶级解析
 * @returns 返回添加了空行元素的新数组
 */ export var addEmptyLinesIfNeeded = function addEmptyLinesIfNeeded(els, preNode, currentElement, top) {
    var _currentElement_position, _preNode_position;
    if (!preNode || !top) {
        return els;
    }
    var distance = (((_currentElement_position = currentElement.position) === null || _currentElement_position === void 0 ? void 0 : _currentElement_position.start.line) || 0) - (((_preNode_position = preNode.position) === null || _preNode_position === void 0 ? void 0 : _preNode_position.end.line) || 0);
    if (distance < EMPTY_LINE_DISTANCE_THRESHOLD) {
        return els;
    }
    var lines = Math.floor((distance - EMPTY_LINE_CALCULATION_OFFSET) / EMPTY_LINE_DIVISOR);
    var emptyLines = Array.from({
        length: lines
    }, function() {
        return {
            type: 'paragraph',
            children: [
                {
                    text: ''
                }
            ]
        };
    });
    return _to_consumable_array(els).concat(_to_consumable_array(emptyLines));
};
