Outlook_Addin_LLM/node_modules/@fluentui/react-tree/lib/utils/createHTMLElementWalker.js

68 lines
2.5 KiB
JavaScript

import { isHTMLElement } from '@fluentui/react-utilities';
export function createHTMLElementWalker(root, targetDocument, filter = ()=>NodeFilter.FILTER_ACCEPT) {
let temporaryFilter;
const treeWalker = targetDocument.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
acceptNode (node) {
if (!isHTMLElement(node)) {
return NodeFilter.FILTER_REJECT;
}
const filterResult = filter(node);
var _temporaryFilter;
return filterResult === NodeFilter.FILTER_ACCEPT ? (_temporaryFilter = temporaryFilter === null || temporaryFilter === void 0 ? void 0 : temporaryFilter(node)) !== null && _temporaryFilter !== void 0 ? _temporaryFilter : filterResult : filterResult;
}
});
return {
get root () {
return treeWalker.root;
},
get currentElement () {
return treeWalker.currentNode;
},
set currentElement (element){
treeWalker.currentNode = element;
},
firstChild: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.firstChild();
temporaryFilter = undefined;
return result;
},
lastChild: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.lastChild();
temporaryFilter = undefined;
return result;
},
nextElement: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.nextNode();
temporaryFilter = undefined;
return result;
},
nextSibling: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.nextSibling();
temporaryFilter = undefined;
return result;
},
parentElement: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.parentNode();
temporaryFilter = undefined;
return result;
},
previousElement: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.previousNode();
temporaryFilter = undefined;
return result;
},
previousSibling: (localFilter)=>{
temporaryFilter = localFilter;
const result = treeWalker.previousSibling();
temporaryFilter = undefined;
return result;
}
};
}