import { tabbable, isFocusable } from 'tabbable';
import { getOwnerGlobalObject } from '../../lib/globalObject.js';
import { isInstanceOf } from '../../lib/isInstanceOf.js';
import { isElement } from '../../lib/utils.js';
/**
 * Поиск всех элементов, у которых tabindex > -1, в переданном родителе
 * или на всей странице
 * @param {Element|Document|null} [parent=document] - Родительский элемент,
 * внутри которого осуществляется поиск.
 * @return {FocusableElement[]} - Массив найденных элементов
 */
export var getTabbableElements = function (parent) {
    if (!isElement(parent)) {
        return [];
    }
    if (!parent || !parent.children.length || !isInstanceOf(parent, getOwnerGlobalObject(parent).Element)) {
        return [];
    }
    return tabbable(parent);
};
/**
 * Поиск ближайшего фокусируемого элемента среди переданного и его родителей
 * @param {HTMLElement} current - Текущий элемент
 * @return {HTMLElement|null} - Найденный элемент или null
 *
 */
export var getClosestFocusableElement = function (current) {
    if (!current) {
        return null;
    }
    return isFocusable(current) ? current : getClosestFocusableElement(current.parentElement);
};
//# sourceMappingURL=tabbableHelpers.js.map