focusManager 
The focus manager create a context to manage focusable elements inside a root. You can use the focus manager to retrieve all focusable elements inside the node or to make the first/last child to grab the focus. Other helper method could be added in the future.
Example 
import { focusManager } from '@chialab/loock';
const root = document.querySelector('dialog');
const manager = focusManager(root);
manager.focusFirst();Options 
Options can be passed as second argument of the focusManager function in order to configure the child elements that should be considered as focusable.
include 
A list of selectors of tabbable elements to include in the context.
const manager = focusManager(root, {
    include: 'input, button',
});Default list:
a[href]area[href]buttoninputselecttextareavideo[controls]audio[controls]embediframesummary[contenteditable][tabindex]
exclude 
A list of selectors of elements to exclude from the context.
const manager = focusManager(root, {
    include: 'input, button',
    exclude: '[disabled]',
});Default list:
[tabindex="-1"][disabled][hidden][aria-hidden="true"][aria-disabled="true"][inert]details:not([open]) *:not(summary)
elements 
An array of nodes or a function that returns an array of nodes to use as tabbable elements. It takes precedence over include and exclude options.
const manager = focusManager(root, {
    elements: () => Array.from(root.querySelectorAll('input, button')),
});Methods 
focusFirst() 
Focus the first child element.
focusLast() 
Focus the last child element.
findFocusable() 
Find all focusable elements inside the root.