"use strict";exports.__esModule = true;exports.getTabbableElements = exports.getClosestFocusableElement = void 0;
var _tabbable = require("tabbable");
var _globalObject = require("@skbkontur/global-object");


var _isInstanceOf = require("../../lib/isInstanceOf");

/**
 * Поиск всех элементов, у которых tabindex > -1, в переданном родителе
 * или на всей странице
 * @param {Element|Document|null} [parent=document] - Родительский элемент,
 * внутри которого осуществляется поиск.
 * @return {FocusableElement[]} - Массив найденных элементов
 */

var getTabbableElements = exports.getTabbableElements = function getTabbableElements(
parent)
{if (parent === void 0) {parent = _globalObject.globalObject.document;}
  if (!parent || !parent.children.length || !(0, _isInstanceOf.isInstanceOf)(parent, _globalObject.globalObject.Element)) {
    return [];
  }
  return (0, _tabbable.tabbable)(parent);
};

/**
 * Поиск ближайшего фокусируемого элемента среди переданного и его родителей
 * @param {HTMLElement} current - Текущий элемент
 * @return {HTMLElement|null} - Найденный элемент или null
 *
 */

var getClosestFocusableElement = exports.getClosestFocusableElement = function getClosestFocusableElement(current) {
  if (!current) {
    return null;
  }

  return (0, _tabbable.isFocusable)(current) ? current : getClosestFocusableElement(current.parentElement);
};