in src/focus.service.ts [346:369]
private getFocusableElement(
direction: Direction,
root: HTMLElement,
refRect: ClientRect,
ignore: Set<HTMLElement>,
): HTMLElement | null {
let nextFocusableEl = this.findNextFocusable(direction, root, refRect, ignore);
if (!nextFocusableEl) {
return null;
}
const directive = this.registry.find(nextFocusableEl);
if (directive && directive.arcFocusInside) {
const elementInside = this.getFocusableElement(direction, nextFocusableEl, refRect, ignore);
// get focusable again if no focusable elements inside the current element
nextFocusableEl =
elementInside ||
this.getFocusableElement(direction, root, refRect, ignore.add(nextFocusableEl));
}
return nextFocusableEl;
}