Files
url_tracker_tool/node_modules/focus-lock/dist/es2019/setFocus.js
Andrei 58f8093689 Rebrand from 'Redirect Intelligence v2' to 'URL Tracker Tool V2' throughout UI
- Updated all component headers and documentation
- Changed navbar and footer branding
- Updated homepage hero badge
- Modified page title in index.html
- Simplified footer text to 'Built with ❤️'
- Consistent V2 capitalization across all references
2025-08-19 19:12:23 +00:00

41 lines
1.3 KiB
JavaScript

import { focusMerge } from './focusMerge';
export const focusOn = (target, focusOptions) => {
if ('focus' in target) {
target.focus(focusOptions);
}
if ('contentWindow' in target && target.contentWindow) {
target.contentWindow.focus();
}
};
let guardCount = 0;
let lockDisabled = false;
/**
* Control focus at a given node.
* The last focused element will help to determine which element(first or last) should be focused.
*
* In principle is nothing more than a wrapper around {@link focusMerge} with autofocus
*
* HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus
*/
export const setFocus = (topNode, lastNode, options = {}) => {
const focusable = focusMerge(topNode, lastNode);
if (lockDisabled) {
return;
}
if (focusable) {
if (guardCount > 2) {
// tslint:disable-next-line:no-console
console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +
'See https://github.com/theKashey/focus-lock/#focus-fighting');
lockDisabled = true;
setTimeout(() => {
lockDisabled = false;
}, 1);
return;
}
guardCount++;
focusOn(focusable.node, options.focusOptions);
guardCount--;
}
};