Outlook_Addin_LLM/node_modules/@fluentui/react-tabster/lib-commonjs/hooks/useKeyboardNavAttribute.js

45 lines
1.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useKeyboardNavAttribute", {
enumerable: true,
get: function() {
return useKeyboardNavAttribute;
}
});
const _keyborg = require("keyborg");
const _react = require("react");
const _constants = require("../focus/constants");
const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
function useKeyboardNavAttribute() {
const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
const keyborg = (0, _react.useMemo)(()=>targetDocument && (0, _keyborg.createKeyborg)(targetDocument.defaultView), [
targetDocument
]);
const ref = (0, _react.useRef)(null);
(0, _react.useEffect)(()=>{
if (keyborg) {
setBooleanAttribute(ref, _constants.KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());
const cb = (next)=>{
setBooleanAttribute(ref, _constants.KEYBOARD_NAV_ATTRIBUTE, next);
};
keyborg.subscribe(cb);
return ()=>keyborg.unsubscribe(cb);
}
}, [
keyborg
]);
return ref;
}
function setBooleanAttribute(elementRef, attribute, value) {
if (!elementRef.current) {
return;
}
if (value) {
elementRef.current.setAttribute(attribute, '');
} else {
elementRef.current.removeAttribute(attribute);
}
}