"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
Object.defineProperty(exports, "scopeTab", {
    enumerable: true,
    get: function() {
        return scopeTab;
    }
});
var _tabbable = require("./tabbable");
var scopeTab = function scopeTab(node, event, activeFocusTrap) {
    var tabbable = (0, _tabbable.findTabbableDescendants)(node);
    if (!tabbable.length) {
        event.preventDefault();
        return;
    }
    // смотрим, является ли элемент крайним - первый или последним
    var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];
    var leavingFinalTabbable = finalTabbable === document.activeElement || node === document.activeElement;
    // если не является, то передаем обработку таба самому браузеру
    if (!leavingFinalTabbable || !activeFocusTrap) {
        return;
    }
    // иначе зацкливаемся
    event.preventDefault();
    var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];
    if (target) {
        target.focus();
    }
};
