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