@fluentui/react-tree 9.0.0-beta.28 → 9.0.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/CHANGELOG.json +70 -1
  2. package/CHANGELOG.md +20 -2
  3. package/dist/index.d.ts +9 -4
  4. package/lib/components/FlatTree/useFlatTreeNavigation.js +22 -25
  5. package/lib/components/FlatTree/useFlatTreeNavigation.js.map +1 -1
  6. package/lib/components/FlatTree/useFlatTreeStyles.styles.js +3 -13
  7. package/lib/components/FlatTree/useFlatTreeStyles.styles.js.map +1 -1
  8. package/lib/components/FlatTree/useHeadlessFlatTree.js +30 -13
  9. package/lib/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  10. package/lib/components/Tree/Tree.types.js.map +1 -1
  11. package/lib/components/Tree/useTree.js +16 -3
  12. package/lib/components/Tree/useTree.js.map +1 -1
  13. package/lib/components/Tree/useTreeNavigation.js +7 -14
  14. package/lib/components/Tree/useTreeNavigation.js.map +1 -1
  15. package/lib/components/Tree/useTreeStyles.styles.js +4 -10
  16. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -1
  17. package/lib/components/TreeItem/useTreeItem.js +12 -5
  18. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  19. package/lib/components/TreeItem/useTreeItemContextValues.js +2 -1
  20. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  21. package/lib/components/TreeItemLayout/useTreeItemLayout.js +2 -3
  22. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  23. package/lib/contexts/treeContext.js.map +1 -1
  24. package/lib/contexts/treeItemContext.js +4 -2
  25. package/lib/contexts/treeItemContext.js.map +1 -1
  26. package/lib/hooks/useRootTree.js +14 -11
  27. package/lib/hooks/useRootTree.js.map +1 -1
  28. package/lib/hooks/useRovingTabIndexes.js +8 -28
  29. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  30. package/lib/hooks/useSubtree.js +3 -3
  31. package/lib/hooks/useSubtree.js.map +1 -1
  32. package/lib/{hooks/useHTMLElementWalker.js → utils/createHTMLElementWalker.js} +0 -15
  33. package/lib/utils/createHTMLElementWalker.js.map +1 -0
  34. package/lib/utils/createHeadlessTree.js +85 -62
  35. package/lib/utils/createHeadlessTree.js.map +1 -1
  36. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  37. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js +21 -24
  38. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js.map +1 -1
  39. package/lib-commonjs/components/FlatTree/useFlatTreeStyles.styles.js +2 -19
  40. package/lib-commonjs/components/FlatTree/useFlatTreeStyles.styles.js.map +1 -1
  41. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js +29 -12
  42. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  43. package/lib-commonjs/components/Tree/useTree.js +16 -3
  44. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  45. package/lib-commonjs/components/Tree/useTreeNavigation.js +7 -14
  46. package/lib-commonjs/components/Tree/useTreeNavigation.js.map +1 -1
  47. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +3 -15
  48. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -1
  49. package/lib-commonjs/components/TreeItem/useTreeItem.js +11 -4
  50. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  51. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +2 -1
  52. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  53. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +2 -3
  54. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  55. package/lib-commonjs/contexts/treeItemContext.js +4 -2
  56. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  57. package/lib-commonjs/hooks/useRootTree.js +11 -8
  58. package/lib-commonjs/hooks/useRootTree.js.map +1 -1
  59. package/lib-commonjs/hooks/useRovingTabIndexes.js +8 -28
  60. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  61. package/lib-commonjs/hooks/useSubtree.js.map +1 -1
  62. package/lib-commonjs/{hooks/useHTMLElementWalker.js → utils/createHTMLElementWalker.js} +3 -25
  63. package/lib-commonjs/utils/createHTMLElementWalker.js.map +1 -0
  64. package/lib-commonjs/utils/createHeadlessTree.js +86 -63
  65. package/lib-commonjs/utils/createHeadlessTree.js.map +1 -1
  66. package/package.json +8 -8
  67. package/lib/hooks/useHTMLElementWalker.js.map +0 -1
  68. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["useRootTree.js"],"sourcesContent":["import { getNativeElementProps, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createOpenItems } from '../utils/createOpenItems';\nimport { createCheckedItems } from '../utils/createCheckedItems';\nimport { treeDataTypes } from '../utils/tokens';\n/**\n * Create the state required to render the root level BaseTree.\n *\n * @param props - props from this instance of BaseTree\n * @param ref - reference to root HTMLElement of BaseTree\n */ export function useRootTree(props, ref) {\n warnIfNoProperPropsRootTree(props);\n const { appearance ='subtle' , size ='medium' , selectionMode ='none' } = props;\n const openItems = React.useMemo(()=>createOpenItems(props.openItems), [\n props.openItems\n ]);\n const checkedItems = React.useMemo(()=>createCheckedItems(props.checkedItems), [\n props.checkedItems\n ]);\n const requestOpenChange = (data)=>{\n var _props_onOpenChange;\n return (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);\n };\n const requestCheckedChange = (data)=>{\n var _props_onCheckedChange;\n return (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, data.event, data);\n };\n const requestNavigation = (data)=>{\n var _props_onNavigation_unstable;\n (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);\n if (data.type === treeDataTypes.ArrowDown || data.type === treeDataTypes.ArrowUp) {\n data.event.preventDefault();\n }\n };\n const requestTreeResponse = useEventCallback((request)=>{\n switch(request.type){\n case treeDataTypes.Click:\n case treeDataTypes.ExpandIconClick:\n {\n return ReactDOM.unstable_batchedUpdates(()=>{\n requestOpenChange({\n ...request,\n open: request.itemType === 'branch' && !openItems.has(request.value)\n });\n requestNavigation({\n ...request,\n type: treeDataTypes.Click\n });\n });\n }\n case treeDataTypes.ArrowRight:\n {\n if (request.itemType === 'leaf') {\n return;\n }\n const open = openItems.has(request.value);\n if (!open) {\n return requestOpenChange({\n ...request,\n open: true\n });\n }\n return requestNavigation(request);\n }\n case treeDataTypes.Enter:\n {\n const open = openItems.has(request.value);\n return requestOpenChange({\n ...request,\n open: request.itemType === 'branch' && !open\n });\n }\n case treeDataTypes.ArrowLeft:\n {\n const open = openItems.has(request.value);\n if (open && request.itemType === 'branch') {\n return requestOpenChange({\n ...request,\n open: false,\n type: treeDataTypes.ArrowLeft\n });\n }\n return requestNavigation({\n ...request,\n type: treeDataTypes.ArrowLeft\n });\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.TypeAhead:\n return requestNavigation({\n ...request,\n target: request.event.currentTarget\n });\n case treeDataTypes.Change:\n {\n const previousCheckedValue = checkedItems.get(request.value);\n return requestCheckedChange({\n ...request,\n selectionMode: selectionMode,\n checked: previousCheckedValue === 'mixed' ? true : !previousCheckedValue\n });\n }\n }\n });\n return {\n components: {\n root: 'div'\n },\n selectionMode,\n open: true,\n appearance,\n size,\n level: 1,\n openItems,\n checkedItems,\n requestTreeResponse,\n root: getNativeElementProps('div', {\n ref,\n role: 'baseTree',\n 'aria-multiselectable': selectionMode === 'multiselect' ? true : undefined,\n ...props\n })\n };\n}\nfunction warnIfNoProperPropsRootTree(props) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn('BaseTree must have either a `aria-label` or `aria-labelledby` property defined');\n }\n }\n}\n"],"names":["useRootTree","props","ref","warnIfNoProperPropsRootTree","appearance","size","selectionMode","openItems","React","useMemo","createOpenItems","checkedItems","createCheckedItems","requestOpenChange","data","_props_onOpenChange","onOpenChange","call","event","requestCheckedChange","_props_onCheckedChange","onCheckedChange","requestNavigation","_props_onNavigation_unstable","onNavigation_unstable","type","treeDataTypes","ArrowDown","ArrowUp","preventDefault","requestTreeResponse","useEventCallback","request","Click","ExpandIconClick","ReactDOM","unstable_batchedUpdates","open","itemType","has","value","ArrowRight","Enter","ArrowLeft","End","Home","TypeAhead","target","currentTarget","Change","previousCheckedValue","get","checked","components","root","level","getNativeElementProps","role","undefined","process","env","NODE_ENV","console","warn"],"mappings":"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"}
1
+ {"version":3,"sources":["useRootTree.js"],"sourcesContent":["import { getNativeElementProps, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createOpenItems } from '../utils/createOpenItems';\nimport { createCheckedItems } from '../utils/createCheckedItems';\nimport { treeDataTypes } from '../utils/tokens';\n/**\n * Create the state required to render the root level tree.\n *\n * @param props - props from this instance of tree\n * @param ref - reference to root HTMLElement of tree\n */ export function useRootTree(props, ref) {\n warnIfNoProperPropsRootTree(props);\n const { appearance ='subtle' , size ='medium' , selectionMode ='none' } = props;\n const openItems = React.useMemo(()=>createOpenItems(props.openItems), [\n props.openItems\n ]);\n const checkedItems = React.useMemo(()=>createCheckedItems(props.checkedItems), [\n props.checkedItems\n ]);\n const requestOpenChange = (data)=>{\n var _props_onOpenChange;\n return (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);\n };\n const requestCheckedChange = (data)=>{\n var _props_onCheckedChange;\n return (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, data.event, data);\n };\n const requestNavigation = (data)=>{\n var _props_onNavigation_unstable;\n (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);\n if (data.type === treeDataTypes.ArrowDown || data.type === treeDataTypes.ArrowUp) {\n data.event.preventDefault();\n }\n };\n const requestTreeResponse = useEventCallback((request)=>{\n switch(request.type){\n case treeDataTypes.Click:\n case treeDataTypes.ExpandIconClick:\n {\n return ReactDOM.unstable_batchedUpdates(()=>{\n requestOpenChange({\n ...request,\n open: request.itemType === 'branch' && !openItems.has(request.value),\n openItems: openItems.dangerouslyGetInternalSet_unstable()\n });\n requestNavigation({\n ...request,\n type: treeDataTypes.Click\n });\n });\n }\n case treeDataTypes.ArrowRight:\n {\n if (request.itemType === 'leaf') {\n return;\n }\n const open = openItems.has(request.value);\n if (!open) {\n return requestOpenChange({\n ...request,\n open: true,\n openItems: openItems.dangerouslyGetInternalSet_unstable()\n });\n }\n return requestNavigation(request);\n }\n case treeDataTypes.Enter:\n {\n const open = openItems.has(request.value);\n return requestOpenChange({\n ...request,\n open: request.itemType === 'branch' && !open,\n openItems: openItems.dangerouslyGetInternalSet_unstable()\n });\n }\n case treeDataTypes.ArrowLeft:\n {\n const open = openItems.has(request.value);\n if (open && request.itemType === 'branch') {\n return requestOpenChange({\n ...request,\n open: false,\n type: treeDataTypes.ArrowLeft,\n openItems: openItems.dangerouslyGetInternalSet_unstable()\n });\n }\n return requestNavigation({\n ...request,\n type: treeDataTypes.ArrowLeft\n });\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.TypeAhead:\n return requestNavigation({\n ...request,\n target: request.event.currentTarget\n });\n case treeDataTypes.Change:\n {\n return requestCheckedChange({\n ...request,\n selectionMode: selectionMode,\n checkedItems: checkedItems.dangerouslyGetInternalMap_unstable()\n });\n }\n }\n });\n return {\n components: {\n root: 'div'\n },\n selectionMode,\n open: true,\n appearance,\n size,\n level: 1,\n openItems,\n checkedItems,\n requestTreeResponse,\n root: getNativeElementProps('div', {\n ref,\n role: 'tree',\n 'aria-multiselectable': selectionMode === 'multiselect' ? true : undefined,\n ...props\n })\n };\n}\nfunction warnIfNoProperPropsRootTree(props) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');\n }\n }\n}\n"],"names":["useRootTree","props","ref","warnIfNoProperPropsRootTree","appearance","size","selectionMode","openItems","React","useMemo","createOpenItems","checkedItems","createCheckedItems","requestOpenChange","data","_props_onOpenChange","onOpenChange","call","event","requestCheckedChange","_props_onCheckedChange","onCheckedChange","requestNavigation","_props_onNavigation_unstable","onNavigation_unstable","type","treeDataTypes","ArrowDown","ArrowUp","preventDefault","requestTreeResponse","useEventCallback","request","Click","ExpandIconClick","ReactDOM","unstable_batchedUpdates","open","itemType","has","value","dangerouslyGetInternalSet_unstable","ArrowRight","Enter","ArrowLeft","End","Home","TypeAhead","target","currentTarget","Change","dangerouslyGetInternalMap_unstable","components","root","level","getNativeElementProps","role","undefined","process","env","NODE_ENV","console","warn"],"mappings":"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"}
@@ -7,32 +7,15 @@ Object.defineProperty(exports, "useRovingTabIndex", {
7
7
  get: ()=>useRovingTabIndex
8
8
  });
9
9
  const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
- const _reactUtilities = require("@fluentui/react-utilities");
11
10
  const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
12
- const _useHTMLElementWalker = require("./useHTMLElementWalker");
13
11
  function useRovingTabIndex(filter) {
14
12
  const currentElementRef = _react.useRef();
15
- const [walkerRef, rootRef] = (0, _useHTMLElementWalker.useHTMLElementWalkerRef)(filter);
16
- const rootRefCallback = (element)=>{
17
- if (!element) {
18
- return;
19
- }
20
- reset();
21
- };
22
- function reset() {
23
- if (!walkerRef.current) {
24
- return;
25
- }
26
- const walker = walkerRef.current;
13
+ const initialize = _react.useCallback((walker)=>{
27
14
  walker.currentElement = walker.root;
28
15
  let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);
29
16
  walker.currentElement = walker.root;
30
17
  tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();
31
18
  if (!tabbableChild) {
32
- if (process.env.NODE_ENV === 'development') {
33
- // eslint-disable-next-line no-console
34
- console.warn('useRovingTabIndexes: internal error, no tabbable element was found');
35
- }
36
19
  return;
37
20
  }
38
21
  tabbableChild.tabIndex = 0;
@@ -41,8 +24,8 @@ function useRovingTabIndex(filter) {
41
24
  while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){
42
25
  nextElement.tabIndex = -1;
43
26
  }
44
- }
45
- function rove(nextElement) {
27
+ }, []);
28
+ const rove = _react.useCallback((nextElement)=>{
46
29
  if (!currentElementRef.current) {
47
30
  return;
48
31
  }
@@ -50,12 +33,9 @@ function useRovingTabIndex(filter) {
50
33
  nextElement.tabIndex = 0;
51
34
  nextElement.focus();
52
35
  currentElementRef.current = nextElement;
53
- }
54
- return [
55
- {
56
- rove,
57
- reset
58
- },
59
- (0, _reactUtilities.useMergedRefs)(rootRef, rootRefCallback)
60
- ];
36
+ }, []);
37
+ return {
38
+ rove,
39
+ initialize
40
+ };
61
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["useRovingTabIndexes.js"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useHTMLElementWalkerRef } from './useHTMLElementWalker';\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */ export function useRovingTabIndex(filter) {\n const currentElementRef = React.useRef();\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(filter);\n const rootRefCallback = (element)=>{\n if (!element) {\n return;\n }\n reset();\n };\n function reset() {\n if (!walkerRef.current) {\n return;\n }\n const walker = walkerRef.current;\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n walker.currentElement = walker.root;\n tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();\n if (!tabbableChild) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('useRovingTabIndexes: internal error, no tabbable element was found');\n }\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement = null;\n while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){\n nextElement.tabIndex = -1;\n }\n }\n function rove(nextElement) {\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }\n return [\n {\n rove,\n reset\n },\n useMergedRefs(rootRef, rootRefCallback)\n ];\n}\n"],"names":["useRovingTabIndex","filter","currentElementRef","React","useRef","walkerRef","rootRef","useHTMLElementWalkerRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus","useMergedRefs"],"mappings":";;;;+BAKoBA;;aAAAA;;;gCALU;6DACP;sCACiB;AAG7B,SAASA,kBAAkBC,MAAM,EAAE;IAC1C,MAAMC,oBAAoBC,OAAMC,MAAM;IACtC,MAAM,CAACC,WAAWC,QAAQ,GAAGC,IAAAA,6CAAuB,EAACN;IACrD,MAAMO,kBAAkB,CAACC,UAAU;QAC/B,IAAI,CAACA,SAAS;YACV;QACJ,CAAC;QACDC;IACJ;IACA,SAASA,QAAQ;QACb,IAAI,CAACL,UAAUM,OAAO,EAAE;YACpB;QACJ,CAAC;QACD,MAAMC,SAASP,UAAUM,OAAO;QAChCC,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnC,IAAIC,gBAAgBH,OAAOI,UAAU,CAAC,CAACP,UAAUA,QAAQQ,QAAQ,KAAK,IAAIC,WAAWC,aAAa,GAAGD,WAAWE,WAAW;QAC3HR,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnCC,kBAAkB,IAAI,IAAIA,kBAAkB,KAAK,IAAIA,gBAAgBA,gBAAgBH,OAAOI,UAAU,EAAE;QACxG,IAAI,CAACD,eAAe;YAChB,IAAIM,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;gBACxC,sCAAsC;gBACtCC,QAAQC,IAAI,CAAC;YACjB,CAAC;YACD;QACJ,CAAC;QACDV,cAAcE,QAAQ,GAAG;QACzBf,kBAAkBS,OAAO,GAAGI;QAC5B,IAAIW,cAAc,IAAI;QACtB,MAAM,AAACA,CAAAA,cAAcd,OAAOc,WAAW,EAAC,KAAMA,gBAAgBX,cAAc;YACxEW,YAAYT,QAAQ,GAAG,CAAC;QAC5B;IACJ;IACA,SAASU,KAAKD,WAAW,EAAE;QACvB,IAAI,CAACxB,kBAAkBS,OAAO,EAAE;YAC5B;QACJ,CAAC;QACDT,kBAAkBS,OAAO,CAACM,QAAQ,GAAG,CAAC;QACtCS,YAAYT,QAAQ,GAAG;QACvBS,YAAYE,KAAK;QACjB1B,kBAAkBS,OAAO,GAAGe;IAChC;IACA,OAAO;QACH;YACIC;YACAjB;QACJ;QACAmB,IAAAA,6BAAa,EAACvB,SAASE;KAC1B;AACL"}
1
+ {"version":3,"sources":["useRovingTabIndexes.js"],"sourcesContent":["import * as React from 'react';\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */ export function useRovingTabIndex(filter) {\n const currentElementRef = React.useRef();\n const initialize = React.useCallback((walker)=>{\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n walker.currentElement = walker.root;\n tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();\n if (!tabbableChild) {\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement = null;\n while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){\n nextElement.tabIndex = -1;\n }\n }, []);\n const rove = React.useCallback((nextElement)=>{\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }, []);\n return {\n rove,\n initialize\n };\n}\n"],"names":["useRovingTabIndex","filter","currentElementRef","React","useRef","initialize","useCallback","walker","currentElement","root","tabbableChild","firstChild","element","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","current","nextElement","rove","focus"],"mappings":";;;;+BAGoBA;;aAAAA;;;6DAHG;AAGZ,SAASA,kBAAkBC,MAAM,EAAE;IAC1C,MAAMC,oBAAoBC,OAAMC,MAAM;IACtC,MAAMC,aAAaF,OAAMG,WAAW,CAAC,CAACC,SAAS;QAC3CA,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnC,IAAIC,gBAAgBH,OAAOI,UAAU,CAAC,CAACC,UAAUA,QAAQC,QAAQ,KAAK,IAAIC,WAAWC,aAAa,GAAGD,WAAWE,WAAW;QAC3HT,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnCC,kBAAkB,IAAI,IAAIA,kBAAkB,KAAK,IAAIA,gBAAgBA,gBAAgBH,OAAOI,UAAU,EAAE;QACxG,IAAI,CAACD,eAAe;YAChB;QACJ,CAAC;QACDA,cAAcG,QAAQ,GAAG;QACzBX,kBAAkBe,OAAO,GAAGP;QAC5B,IAAIQ,cAAc,IAAI;QACtB,MAAM,AAACA,CAAAA,cAAcX,OAAOW,WAAW,EAAC,KAAMA,gBAAgBR,cAAc;YACxEQ,YAAYL,QAAQ,GAAG,CAAC;QAC5B;IACJ,GAAG,EAAE;IACL,MAAMM,OAAOhB,OAAMG,WAAW,CAAC,CAACY,cAAc;QAC1C,IAAI,CAAChB,kBAAkBe,OAAO,EAAE;YAC5B;QACJ,CAAC;QACDf,kBAAkBe,OAAO,CAACJ,QAAQ,GAAG,CAAC;QACtCK,YAAYL,QAAQ,GAAG;QACvBK,YAAYE,KAAK;QACjBlB,kBAAkBe,OAAO,GAAGC;IAChC,GAAG,EAAE;IACL,OAAO;QACHC;QACAd;IACJ;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["useSubtree.js"],"sourcesContent":["import * as React from 'react';\nimport { useTreeContext_unstable, useTreeItemContext_unstable } from '../contexts/index';\nimport { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';\n/**\n * Create the state required to render a sub-level BaseTree.\n *\n * @param props - props from this instance of BaseTree\n * @param ref - reference to root HTMLElement of BaseTree\n */ export function useSubtree(props, ref) {\n const contextAppearance = useTreeContext_unstable((ctx)=>ctx.appearance);\n const contextSize = useTreeContext_unstable((ctx)=>ctx.size);\n const subtreeRef = useTreeItemContext_unstable((ctx)=>ctx.subtreeRef);\n const value = useTreeItemContext_unstable((ctx)=>ctx.value);\n const { appearance =contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle' , size =contextSize !== null && contextSize !== void 0 ? contextSize : 'medium' } = props;\n const parentLevel = useTreeContext_unstable((ctx)=>ctx.level);\n const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);\n const openItems = useTreeContext_unstable((ctx)=>ctx.openItems);\n const checkedItems = useTreeContext_unstable((ctx)=>ctx.checkedItems);\n const requestTreeResponse = useTreeContext_unstable((ctx)=>ctx.requestTreeResponse);\n const open = openItems.has(value);\n return {\n open,\n components: {\n root: 'div'\n },\n appearance,\n size,\n selectionMode,\n level: parentLevel + 1,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(ref, subtreeRef),\n role: 'group',\n ...props\n }),\n openItems,\n checkedItems,\n requestTreeResponse\n };\n}\n"],"names":["useSubtree","props","ref","contextAppearance","useTreeContext_unstable","ctx","appearance","contextSize","size","subtreeRef","useTreeItemContext_unstable","value","parentLevel","level","selectionMode","openItems","checkedItems","requestTreeResponse","open","has","components","root","getNativeElementProps","useMergedRefs","role"],"mappings":";;;;+BAQoBA;;aAAAA;;;6DARG;uBAC8C;gCAChB;AAM1C,SAASA,WAAWC,KAAK,EAAEC,GAAG,EAAE;IACvC,MAAMC,oBAAoBC,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIC,UAAU;IACvE,MAAMC,cAAcH,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIG,IAAI;IAC3D,MAAMC,aAAaC,IAAAA,kCAA2B,EAAC,CAACL,MAAMA,IAAII,UAAU;IACpE,MAAME,QAAQD,IAAAA,kCAA2B,EAAC,CAACL,MAAMA,IAAIM,KAAK;IAC1D,MAAM,EAAEL,YAAYH,sBAAsB,IAAI,IAAIA,sBAAsB,KAAK,IAAIA,oBAAoB,QAAQ,CAAA,EAAGK,MAAMD,gBAAgB,IAAI,IAAIA,gBAAgB,KAAK,IAAIA,cAAc,QAAQ,CAAA,EAAG,GAAGN;IACnM,MAAMW,cAAcR,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIQ,KAAK;IAC5D,MAAMC,gBAAgBV,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIS,aAAa;IACtE,MAAMC,YAAYX,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIU,SAAS;IAC9D,MAAMC,eAAeZ,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIW,YAAY;IACpE,MAAMC,sBAAsBb,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIY,mBAAmB;IAClF,MAAMC,OAAOH,UAAUI,GAAG,CAACR;IAC3B,OAAO;QACHO;QACAE,YAAY;YACRC,MAAM;QACV;QACAf;QACAE;QACAM;QACAD,OAAOD,cAAc;QACrBS,MAAMC,IAAAA,qCAAqB,EAAC,OAAO;YAC/BpB,KAAKqB,IAAAA,6BAAa,EAACrB,KAAKO;YACxBe,MAAM;YACN,GAAGvB,KAAK;QACZ;QACAc;QACAC;QACAC;IACJ;AACJ"}
1
+ {"version":3,"sources":["useSubtree.js"],"sourcesContent":["import * as React from 'react';\nimport { useTreeContext_unstable, useTreeItemContext_unstable } from '../contexts/index';\nimport { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';\n/**\n * Create the state required to render a sub-level tree.\n *\n * @param props - props from this instance of tree\n * @param ref - reference to root HTMLElement of tree\n */ export function useSubtree(props, ref) {\n const contextAppearance = useTreeContext_unstable((ctx)=>ctx.appearance);\n const contextSize = useTreeContext_unstable((ctx)=>ctx.size);\n const subtreeRef = useTreeItemContext_unstable((ctx)=>ctx.subtreeRef);\n const value = useTreeItemContext_unstable((ctx)=>ctx.value);\n const { appearance =contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle' , size =contextSize !== null && contextSize !== void 0 ? contextSize : 'medium' } = props;\n const parentLevel = useTreeContext_unstable((ctx)=>ctx.level);\n const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);\n const openItems = useTreeContext_unstable((ctx)=>ctx.openItems);\n const checkedItems = useTreeContext_unstable((ctx)=>ctx.checkedItems);\n const requestTreeResponse = useTreeContext_unstable((ctx)=>ctx.requestTreeResponse);\n const open = openItems.has(value);\n return {\n open,\n components: {\n root: 'div'\n },\n appearance,\n size,\n selectionMode,\n level: parentLevel + 1,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(ref, subtreeRef),\n role: 'group',\n ...props\n }),\n openItems,\n checkedItems,\n requestTreeResponse\n };\n}\n"],"names":["useSubtree","props","ref","contextAppearance","useTreeContext_unstable","ctx","appearance","contextSize","size","subtreeRef","useTreeItemContext_unstable","value","parentLevel","level","selectionMode","openItems","checkedItems","requestTreeResponse","open","has","components","root","getNativeElementProps","useMergedRefs","role"],"mappings":";;;;+BAQoBA;;aAAAA;;;6DARG;uBAC8C;gCAChB;AAM1C,SAASA,WAAWC,KAAK,EAAEC,GAAG,EAAE;IACvC,MAAMC,oBAAoBC,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIC,UAAU;IACvE,MAAMC,cAAcH,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIG,IAAI;IAC3D,MAAMC,aAAaC,IAAAA,kCAA2B,EAAC,CAACL,MAAMA,IAAII,UAAU;IACpE,MAAME,QAAQD,IAAAA,kCAA2B,EAAC,CAACL,MAAMA,IAAIM,KAAK;IAC1D,MAAM,EAAEL,YAAYH,sBAAsB,IAAI,IAAIA,sBAAsB,KAAK,IAAIA,oBAAoB,QAAQ,CAAA,EAAGK,MAAMD,gBAAgB,IAAI,IAAIA,gBAAgB,KAAK,IAAIA,cAAc,QAAQ,CAAA,EAAG,GAAGN;IACnM,MAAMW,cAAcR,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIQ,KAAK;IAC5D,MAAMC,gBAAgBV,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIS,aAAa;IACtE,MAAMC,YAAYX,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIU,SAAS;IAC9D,MAAMC,eAAeZ,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIW,YAAY;IACpE,MAAMC,sBAAsBb,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIY,mBAAmB;IAClF,MAAMC,OAAOH,UAAUI,GAAG,CAACR;IAC3B,OAAO;QACHO;QACAE,YAAY;YACRC,MAAM;QACV;QACAf;QACAE;QACAM;QACAD,OAAOD,cAAc;QACrBS,MAAMC,IAAAA,qCAAqB,EAAC,OAAO;YAC/BpB,KAAKqB,IAAAA,6BAAa,EAACrB,KAAKO;YACxBe,MAAM;YACN,GAAGvB,KAAK;QACZ;QACAc;QACAC;QACAC;IACJ;AACJ"}
@@ -2,19 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- createHTMLElementWalker: ()=>createHTMLElementWalker,
13
- useHTMLElementWalkerRef: ()=>useHTMLElementWalkerRef
5
+ Object.defineProperty(exports, "createHTMLElementWalker", {
6
+ enumerable: true,
7
+ get: ()=>createHTMLElementWalker
14
8
  });
15
- const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
16
9
  const _reactUtilities = require("@fluentui/react-utilities");
17
- const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
18
10
  function createHTMLElementWalker(root, filter = ()=>NodeFilter.FILTER_ACCEPT) {
19
11
  let temporaryFilter;
20
12
  const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
@@ -81,17 +73,3 @@ function createHTMLElementWalker(root, filter = ()=>NodeFilter.FILTER_ACCEPT) {
81
73
  }
82
74
  };
83
75
  }
84
- const useHTMLElementWalkerRef = (filter)=>{
85
- const walkerRef = _react.useRef();
86
- const rootRefCallback = (element1)=>{
87
- if (!element1) {
88
- walkerRef.current = undefined;
89
- return;
90
- }
91
- walkerRef.current = createHTMLElementWalker(element1, filter);
92
- };
93
- return [
94
- walkerRef,
95
- rootRefCallback
96
- ];
97
- };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["createHTMLElementWalker.js"],"sourcesContent":["import { isHTMLElement } from '@fluentui/react-utilities';\nexport function createHTMLElementWalker(root, filter = ()=>NodeFilter.FILTER_ACCEPT) {\n let temporaryFilter;\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode (node) {\n if (!isHTMLElement(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n const filterResult = filter(node);\n var _temporaryFilter;\n return filterResult === NodeFilter.FILTER_ACCEPT ? (_temporaryFilter = temporaryFilter === null || temporaryFilter === void 0 ? void 0 : temporaryFilter(node)) !== null && _temporaryFilter !== void 0 ? _temporaryFilter : filterResult : filterResult;\n }\n });\n return {\n get root () {\n return treeWalker.root;\n },\n get currentElement () {\n return treeWalker.currentNode;\n },\n set currentElement (element){\n treeWalker.currentNode = element;\n },\n firstChild: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.firstChild();\n temporaryFilter = undefined;\n return result;\n },\n lastChild: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.lastChild();\n temporaryFilter = undefined;\n return result;\n },\n nextElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.nextNode();\n temporaryFilter = undefined;\n return result;\n },\n nextSibling: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.nextSibling();\n temporaryFilter = undefined;\n return result;\n },\n parentElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.parentNode();\n temporaryFilter = undefined;\n return result;\n },\n previousElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.previousNode();\n temporaryFilter = undefined;\n return result;\n },\n previousSibling: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.previousSibling();\n temporaryFilter = undefined;\n return result;\n }\n };\n}\n"],"names":["createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","isHTMLElement","FILTER_REJECT","filterResult","_temporaryFilter","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling"],"mappings":";;;;+BACgBA;;aAAAA;;gCADc;AACvB,SAASA,wBAAwBC,IAAI,EAAEC,SAAS,IAAIC,WAAWC,aAAa,EAAE;IACjF,IAAIC;IACJ,MAAMC,aAAaC,SAASC,gBAAgB,CAACP,MAAME,WAAWM,YAAY,EAAE;QACxEC,YAAYC,IAAI,EAAE;YACd,IAAI,CAACC,IAAAA,6BAAa,EAACD,OAAO;gBACtB,OAAOR,WAAWU,aAAa;YACnC,CAAC;YACD,MAAMC,eAAeZ,OAAOS;YAC5B,IAAII;YACJ,OAAOD,iBAAiBX,WAAWC,aAAa,GAAG,AAACW,CAAAA,mBAAmBV,oBAAoB,IAAI,IAAIA,oBAAoB,KAAK,IAAI,KAAK,IAAIA,gBAAgBM,KAAK,AAAD,MAAO,IAAI,IAAII,qBAAqB,KAAK,IAAIA,mBAAmBD,YAAY,GAAGA,YAAY;QAC5P;IACJ;IACA,OAAO;QACH,IAAIb,QAAQ;YACR,OAAOK,WAAWL,IAAI;QAC1B;QACA,IAAIe,kBAAkB;YAClB,OAAOV,WAAWW,WAAW;QACjC;QACA,IAAID,gBAAgBE,QAAQ;YACxBZ,WAAWW,WAAW,GAAGC;QAC7B;QACAC,YAAY,CAACC,cAAc;YACvBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWa,UAAU;YACpCd,kBAAkBiB;YAClB,OAAOD;QACX;QACAE,WAAW,CAACH,cAAc;YACtBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWiB,SAAS;YACnClB,kBAAkBiB;YAClB,OAAOD;QACX;QACAG,aAAa,CAACJ,cAAc;YACxBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWmB,QAAQ;YAClCpB,kBAAkBiB;YAClB,OAAOD;QACX;QACAK,aAAa,CAACN,cAAc;YACxBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWoB,WAAW;YACrCrB,kBAAkBiB;YAClB,OAAOD;QACX;QACAM,eAAe,CAACP,cAAc;YAC1Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWsB,UAAU;YACpCvB,kBAAkBiB;YAClB,OAAOD;QACX;QACAQ,iBAAiB,CAACT,cAAc;YAC5Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWwB,YAAY;YACtCzB,kBAAkBiB;YAClB,OAAOD;QACX;QACAU,iBAAiB,CAACX,cAAc;YAC5Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWyB,eAAe;YACzC1B,kBAAkBiB;YAClB,OAAOD;QACX;IACJ;AACJ"}
@@ -13,9 +13,9 @@ function _export(target, all) {
13
13
  }
14
14
  _export(exports, {
15
15
  createHeadlessTree: ()=>createHeadlessTree,
16
- virtualTreeRootId: ()=>virtualTreeRootId
16
+ headlessTreeRootId: ()=>headlessTreeRootId
17
17
  });
18
- function createHeadlessTree(virtualTreeItemProps) {
18
+ function createHeadlessTree(initialProps = []) {
19
19
  const root = createHeadlessTreeRootItem();
20
20
  const itemsPerValue = new Map([
21
21
  [
@@ -23,70 +23,92 @@ function createHeadlessTree(virtualTreeItemProps) {
23
23
  root
24
24
  ]
25
25
  ]);
26
- const items = [];
27
- for(let index = 0; index < virtualTreeItemProps.length; index++){
28
- const { parentValue =virtualTreeRootId , ...treeItemProps } = virtualTreeItemProps[index];
29
- const nextItemProps = virtualTreeItemProps[index + 1];
30
- const currentParent = itemsPerValue.get(parentValue);
31
- if (!currentParent) {
32
- if (process.env.NODE_ENV === 'development') {
33
- // eslint-disable-next-line no-console
34
- console.error(`useHeadlessTree: item ${virtualTreeItemProps[index].value} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`);
35
- }
36
- break;
37
- }
38
- var _treeItemProps_itemType;
39
- const itemType = (_treeItemProps_itemType = treeItemProps.itemType) !== null && _treeItemProps_itemType !== void 0 ? _treeItemProps_itemType : treeItemProps.value === undefined || (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentValue) !== treeItemProps.value ? 'leaf' : 'branch';
40
- var _currentParent_level;
41
- const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;
42
- const virtualTreeItem = {
43
- value: treeItemProps.value,
44
- getTreeItemProps: ()=>({
45
- ...treeItemProps,
46
- 'aria-level': currentLevel,
47
- 'aria-posinset': currentChildrenSize,
48
- 'aria-setsize': currentParent.childrenValues.length,
49
- itemType
50
- }),
51
- level: currentLevel,
52
- parentValue,
53
- childrenValues: [],
54
- index: -1
55
- };
56
- const currentChildrenSize = currentParent.childrenValues.push(virtualTreeItem.value);
57
- itemsPerValue.set(virtualTreeItem.value, virtualTreeItem);
58
- items.push(virtualTreeItem);
59
- }
60
26
  var _itemsPerValue_get_parentValue, _itemsPerValue_get;
61
- const virtualTreeItems = {
27
+ const headlessTree = {
62
28
  root,
63
- size: items.length,
64
- getByIndex: (index)=>items[index],
29
+ get size () {
30
+ return itemsPerValue.size;
31
+ },
65
32
  getParent: (key)=>{
66
33
  var _itemsPerValue_get1;
67
34
  return (_itemsPerValue_get = itemsPerValue.get((_itemsPerValue_get_parentValue = (_itemsPerValue_get1 = itemsPerValue.get(key)) === null || _itemsPerValue_get1 === void 0 ? void 0 : _itemsPerValue_get1.parentValue) !== null && _itemsPerValue_get_parentValue !== void 0 ? _itemsPerValue_get_parentValue : root.value)) !== null && _itemsPerValue_get !== void 0 ? _itemsPerValue_get : root;
68
35
  },
69
36
  get: (key)=>itemsPerValue.get(key),
70
- subtree: (key)=>HeadlessTreeSubtreeGenerator(key, virtualTreeItems),
71
- children: (key)=>HeadlessTreeChildrenGenerator(key, virtualTreeItems),
72
- ancestors: (key)=>HeadlessTreeAncestorsGenerator(key, virtualTreeItems),
73
- visibleItems: (openItems)=>HeadlessTreeVisibleItemsGenerator(openItems, virtualTreeItems)
37
+ has: (key)=>itemsPerValue.has(key),
38
+ add (props) {
39
+ const { parentValue =headlessTreeRootId , ...propsWithoutParentValue } = props;
40
+ const parentItem = itemsPerValue.get(parentValue);
41
+ if (!parentItem) {
42
+ if (process.env.NODE_ENV === 'development') {
43
+ // eslint-disable-next-line no-console
44
+ console.error(`HeadlessTree: item ${props.value} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized, parents should come before children`);
45
+ }
46
+ return;
47
+ }
48
+ parentItem.itemType = 'branch';
49
+ const item = {
50
+ value: props.value,
51
+ getTreeItemProps: ()=>({
52
+ ...propsWithoutParentValue,
53
+ 'aria-level': item.level,
54
+ 'aria-posinset': item.position,
55
+ 'aria-setsize': parentItem.childrenValues.length,
56
+ itemType: item.itemType
57
+ }),
58
+ itemType: 'leaf',
59
+ level: parentItem.level + 1,
60
+ parentValue,
61
+ childrenValues: [],
62
+ index: -1,
63
+ position: parentItem.childrenValues.push(props.value)
64
+ };
65
+ itemsPerValue.set(item.value, item);
66
+ },
67
+ // TODO: eventually it would be nice to have this method exported for the user to modify
68
+ // the internal state of the virtual tree
69
+ // remove(value) {
70
+ // const itemToBeRemoved = itemsPerValue.get(value);
71
+ // if (!itemToBeRemoved) {
72
+ // return;
73
+ // }
74
+ // const parentItem = headlessTree.getParent(value);
75
+ // parentItem.childrenValues.splice(itemToBeRemoved.position, 1);
76
+ // itemsPerValue.delete(value);
77
+ // if (parentItem.childrenValues.length === 0) {
78
+ // parentItem.itemType = 'leaf';
79
+ // }
80
+ // for (let index = itemToBeRemoved.position; index < parentItem.childrenValues.length; index++) {
81
+ // const child = itemsPerValue.get(parentItem.childrenValues[index]);
82
+ // if (child) {
83
+ // child.position = index + 1;
84
+ // }
85
+ // }
86
+ // for (const descendant of HeadlessTreeSubtreeGenerator(value, headlessTree)) {
87
+ // itemsPerValue.delete(descendant.value);
88
+ // }
89
+ // },
90
+ subtree: (key)=>HeadlessTreeSubtreeGenerator(key, headlessTree),
91
+ children: (key)=>HeadlessTreeChildrenGenerator(key, headlessTree),
92
+ ancestors: (key)=>HeadlessTreeAncestorsGenerator(key, headlessTree),
93
+ visibleItems: (openItems)=>HeadlessTreeVisibleItemsGenerator(openItems, headlessTree)
74
94
  };
75
- return virtualTreeItems;
95
+ initialProps.forEach(headlessTree.add);
96
+ return headlessTree;
76
97
  }
77
- const virtualTreeRootId = '__fuiHeadlessTreeRoot';
98
+ const headlessTreeRootId = '__fuiHeadlessTreeRoot';
78
99
  function createHeadlessTreeRootItem() {
79
100
  return {
80
101
  parentValue: undefined,
81
- value: virtualTreeRootId,
102
+ value: headlessTreeRootId,
103
+ itemType: 'branch',
82
104
  getTreeItemProps: ()=>{
83
105
  if (process.env.NODE_ENV !== 'production') {
84
106
  // eslint-disable-next-line no-console
85
- console.error('useHeadlessTree: internal error, trying to access treeitem props from invalid root element');
107
+ console.error('HeadlessTree: internal error, trying to access treeitem props from invalid root element');
86
108
  }
87
109
  return {
88
- id: virtualTreeRootId,
89
- value: virtualTreeRootId,
110
+ id: headlessTreeRootId,
111
+ value: headlessTreeRootId,
90
112
  'aria-setsize': -1,
91
113
  'aria-level': -1,
92
114
  'aria-posinset': -1,
@@ -97,7 +119,14 @@ function createHeadlessTreeRootItem() {
97
119
  get index () {
98
120
  if (process.env.NODE_ENV !== 'production') {
99
121
  // eslint-disable-next-line no-console
100
- console.error('useHeadlessTree: internal error, trying to access treeitem props from invalid root element');
122
+ console.error('HeadlessTree: internal error, trying to access treeitem props from invalid root element');
123
+ }
124
+ return -1;
125
+ },
126
+ get position () {
127
+ if (process.env.NODE_ENV !== 'production') {
128
+ // eslint-disable-next-line no-console
129
+ console.error('HeadlessTree: internal error, trying to access treeitem props from invalid root element');
101
130
  }
102
131
  return -1;
103
132
  },
@@ -111,14 +140,11 @@ function createHeadlessTreeRootItem() {
111
140
  function* HeadlessTreeSubtreeGenerator(key, virtualTreeItems) {
112
141
  const item = virtualTreeItems.get(key);
113
142
  if (!item || item.childrenValues.length === 0) {
114
- return [];
143
+ return;
115
144
  }
116
- let counter = item.childrenValues.length;
117
- let index = item.index;
118
- while(counter > 0){
119
- const children = virtualTreeItems.getByIndex(++index);
120
- yield children;
121
- counter += children.childrenValues.length - 1;
145
+ for (const childValue of item.childrenValues){
146
+ yield virtualTreeItems.get(childValue);
147
+ yield* HeadlessTreeSubtreeGenerator(childValue, virtualTreeItems);
122
148
  }
123
149
  }
124
150
  /**
@@ -150,14 +176,11 @@ function* HeadlessTreeAncestorsGenerator(key, virtualTreeItems) {
150
176
  * @param openItems the open items of the tree
151
177
  */ // eslint-disable-next-line @typescript-eslint/naming-convention
152
178
  function* HeadlessTreeVisibleItemsGenerator(openItems, virtualTreeItems) {
153
- for(let index = 0, visibleIndex = 0; index < virtualTreeItems.size; index++){
154
- const item = virtualTreeItems.getByIndex(index);
179
+ let index = 0;
180
+ for (const item of HeadlessTreeSubtreeGenerator(virtualTreeItems.root.value, virtualTreeItems)){
155
181
  if (isItemVisible(item, openItems, virtualTreeItems)) {
156
- item.index = visibleIndex++;
182
+ item.index = index++;
157
183
  yield item;
158
- } else {
159
- // Jump the amount of children the current item has, since those items will also be hidden
160
- index += item.childrenValues.length;
161
184
  }
162
185
  }
163
186
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["createHeadlessTree.js"],"sourcesContent":["/**\n * creates a list of virtual tree items\n * and provides a map to access each item by id\n */ export function createHeadlessTree(virtualTreeItemProps) {\n const root = createHeadlessTreeRootItem();\n const itemsPerValue = new Map([\n [\n root.value,\n root\n ]\n ]);\n const items = [];\n for(let index = 0; index < virtualTreeItemProps.length; index++){\n const { parentValue =virtualTreeRootId , ...treeItemProps } = virtualTreeItemProps[index];\n const nextItemProps = virtualTreeItemProps[index + 1];\n const currentParent = itemsPerValue.get(parentValue);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(`useHeadlessTree: item ${virtualTreeItemProps[index].value} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`);\n }\n break;\n }\n var _treeItemProps_itemType;\n const itemType = (_treeItemProps_itemType = treeItemProps.itemType) !== null && _treeItemProps_itemType !== void 0 ? _treeItemProps_itemType : treeItemProps.value === undefined || (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentValue) !== treeItemProps.value ? 'leaf' : 'branch';\n var _currentParent_level;\n const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;\n const virtualTreeItem = {\n value: treeItemProps.value,\n getTreeItemProps: ()=>({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenValues.length,\n itemType\n }),\n level: currentLevel,\n parentValue,\n childrenValues: [],\n index: -1\n };\n const currentChildrenSize = currentParent.childrenValues.push(virtualTreeItem.value);\n itemsPerValue.set(virtualTreeItem.value, virtualTreeItem);\n items.push(virtualTreeItem);\n }\n var _itemsPerValue_get_parentValue, _itemsPerValue_get;\n const virtualTreeItems = {\n root,\n size: items.length,\n getByIndex: (index)=>items[index],\n getParent: (key)=>{\n var _itemsPerValue_get1;\n return (_itemsPerValue_get = itemsPerValue.get((_itemsPerValue_get_parentValue = (_itemsPerValue_get1 = itemsPerValue.get(key)) === null || _itemsPerValue_get1 === void 0 ? void 0 : _itemsPerValue_get1.parentValue) !== null && _itemsPerValue_get_parentValue !== void 0 ? _itemsPerValue_get_parentValue : root.value)) !== null && _itemsPerValue_get !== void 0 ? _itemsPerValue_get : root;\n },\n get: (key)=>itemsPerValue.get(key),\n subtree: (key)=>HeadlessTreeSubtreeGenerator(key, virtualTreeItems),\n children: (key)=>HeadlessTreeChildrenGenerator(key, virtualTreeItems),\n ancestors: (key)=>HeadlessTreeAncestorsGenerator(key, virtualTreeItems),\n visibleItems: (openItems)=>HeadlessTreeVisibleItemsGenerator(openItems, virtualTreeItems)\n };\n return virtualTreeItems;\n}\nexport const virtualTreeRootId = '__fuiHeadlessTreeRoot';\nfunction createHeadlessTreeRootItem() {\n return {\n parentValue: undefined,\n value: virtualTreeRootId,\n getTreeItemProps: ()=>{\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useHeadlessTree: internal error, trying to access treeitem props from invalid root element');\n }\n return {\n id: virtualTreeRootId,\n value: virtualTreeRootId,\n 'aria-setsize': -1,\n 'aria-level': -1,\n 'aria-posinset': -1,\n itemType: 'branch'\n };\n },\n childrenValues: [],\n get index () {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useHeadlessTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0\n };\n}\n/**\n * Generator that returns all subtree of a given virtual tree item\n * @param key the key of the item to get the subtree from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeSubtreeGenerator(key, virtualTreeItems) {\n const item = virtualTreeItems.get(key);\n if (!item || item.childrenValues.length === 0) {\n return [];\n }\n let counter = item.childrenValues.length;\n let index = item.index;\n while(counter > 0){\n const children = virtualTreeItems.getByIndex(++index);\n yield children;\n counter += children.childrenValues.length - 1;\n }\n}\n/**\n * Generator that returns all children of a given virtual tree item\n * @param key the key of the item to get the children from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeChildrenGenerator(key, virtualTreeItems) {\n const item = virtualTreeItems.get(key);\n if (!item || item.childrenValues.length === 0) {\n return;\n }\n for (const childValue of item.childrenValues){\n yield virtualTreeItems.get(childValue);\n }\n}\n/**\n * Generator that returns all ancestors of a given virtual tree item\n * @param key the key of the item to get the children from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeAncestorsGenerator(key, virtualTreeItems) {\n let parent = virtualTreeItems.getParent(key);\n while(parent !== virtualTreeItems.root){\n yield parent;\n parent = virtualTreeItems.getParent(parent.value);\n }\n}\n/**\n * Generator that returns all visible items of a given virtual tree\n * @param openItems the open items of the tree\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeVisibleItemsGenerator(openItems, virtualTreeItems) {\n for(let index = 0, visibleIndex = 0; index < virtualTreeItems.size; index++){\n const item = virtualTreeItems.getByIndex(index);\n if (isItemVisible(item, openItems, virtualTreeItems)) {\n item.index = visibleIndex++;\n yield item;\n } else {\n // Jump the amount of children the current item has, since those items will also be hidden\n index += item.childrenValues.length;\n }\n }\n}\nfunction isItemVisible(item, openItems, virtualTreeItems) {\n if (item.level === 1) {\n return true;\n }\n while(item.parentValue && item.parentValue !== virtualTreeItems.root.value){\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = virtualTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"names":["createHeadlessTree","virtualTreeRootId","virtualTreeItemProps","root","createHeadlessTreeRootItem","itemsPerValue","Map","value","items","index","length","parentValue","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","_treeItemProps_itemType","itemType","undefined","_currentParent_level","currentLevel","level","virtualTreeItem","getTreeItemProps","currentChildrenSize","childrenValues","push","set","_itemsPerValue_get_parentValue","_itemsPerValue_get","virtualTreeItems","size","getByIndex","getParent","key","_itemsPerValue_get1","subtree","HeadlessTreeSubtreeGenerator","children","HeadlessTreeChildrenGenerator","ancestors","HeadlessTreeAncestorsGenerator","visibleItems","openItems","HeadlessTreeVisibleItemsGenerator","id","item","counter","childValue","parent","visibleIndex","isItemVisible","has"],"mappings":"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"}
1
+ {"version":3,"sources":["createHeadlessTree.js"],"sourcesContent":["/**\n * creates a list of virtual tree items\n * and provides a map to access each item by id\n */ export function createHeadlessTree(initialProps = []) {\n const root = createHeadlessTreeRootItem();\n const itemsPerValue = new Map([\n [\n root.value,\n root\n ]\n ]);\n var _itemsPerValue_get_parentValue, _itemsPerValue_get;\n const headlessTree = {\n root,\n get size () {\n return itemsPerValue.size;\n },\n getParent: (key)=>{\n var _itemsPerValue_get1;\n return (_itemsPerValue_get = itemsPerValue.get((_itemsPerValue_get_parentValue = (_itemsPerValue_get1 = itemsPerValue.get(key)) === null || _itemsPerValue_get1 === void 0 ? void 0 : _itemsPerValue_get1.parentValue) !== null && _itemsPerValue_get_parentValue !== void 0 ? _itemsPerValue_get_parentValue : root.value)) !== null && _itemsPerValue_get !== void 0 ? _itemsPerValue_get : root;\n },\n get: (key)=>itemsPerValue.get(key),\n has: (key)=>itemsPerValue.has(key),\n add (props) {\n const { parentValue =headlessTreeRootId , ...propsWithoutParentValue } = props;\n const parentItem = itemsPerValue.get(parentValue);\n if (!parentItem) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(`HeadlessTree: item ${props.value} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized, parents should come before children`);\n }\n return;\n }\n parentItem.itemType = 'branch';\n const item = {\n value: props.value,\n getTreeItemProps: ()=>({\n ...propsWithoutParentValue,\n 'aria-level': item.level,\n 'aria-posinset': item.position,\n 'aria-setsize': parentItem.childrenValues.length,\n itemType: item.itemType\n }),\n itemType: 'leaf',\n level: parentItem.level + 1,\n parentValue,\n childrenValues: [],\n index: -1,\n position: parentItem.childrenValues.push(props.value)\n };\n itemsPerValue.set(item.value, item);\n },\n // TODO: eventually it would be nice to have this method exported for the user to modify\n // the internal state of the virtual tree\n // remove(value) {\n // const itemToBeRemoved = itemsPerValue.get(value);\n // if (!itemToBeRemoved) {\n // return;\n // }\n // const parentItem = headlessTree.getParent(value);\n // parentItem.childrenValues.splice(itemToBeRemoved.position, 1);\n // itemsPerValue.delete(value);\n // if (parentItem.childrenValues.length === 0) {\n // parentItem.itemType = 'leaf';\n // }\n // for (let index = itemToBeRemoved.position; index < parentItem.childrenValues.length; index++) {\n // const child = itemsPerValue.get(parentItem.childrenValues[index]);\n // if (child) {\n // child.position = index + 1;\n // }\n // }\n // for (const descendant of HeadlessTreeSubtreeGenerator(value, headlessTree)) {\n // itemsPerValue.delete(descendant.value);\n // }\n // },\n subtree: (key)=>HeadlessTreeSubtreeGenerator(key, headlessTree),\n children: (key)=>HeadlessTreeChildrenGenerator(key, headlessTree),\n ancestors: (key)=>HeadlessTreeAncestorsGenerator(key, headlessTree),\n visibleItems: (openItems)=>HeadlessTreeVisibleItemsGenerator(openItems, headlessTree)\n };\n initialProps.forEach(headlessTree.add);\n return headlessTree;\n}\nexport const headlessTreeRootId = '__fuiHeadlessTreeRoot';\nfunction createHeadlessTreeRootItem() {\n return {\n parentValue: undefined,\n value: headlessTreeRootId,\n itemType: 'branch',\n getTreeItemProps: ()=>{\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('HeadlessTree: internal error, trying to access treeitem props from invalid root element');\n }\n return {\n id: headlessTreeRootId,\n value: headlessTreeRootId,\n 'aria-setsize': -1,\n 'aria-level': -1,\n 'aria-posinset': -1,\n itemType: 'branch'\n };\n },\n childrenValues: [],\n get index () {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('HeadlessTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n get position () {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('HeadlessTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0\n };\n}\n/**\n * Generator that returns all subtree of a given virtual tree item\n * @param key the key of the item to get the subtree from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeSubtreeGenerator(key, virtualTreeItems) {\n const item = virtualTreeItems.get(key);\n if (!item || item.childrenValues.length === 0) {\n return;\n }\n for (const childValue of item.childrenValues){\n yield virtualTreeItems.get(childValue);\n yield* HeadlessTreeSubtreeGenerator(childValue, virtualTreeItems);\n }\n}\n/**\n * Generator that returns all children of a given virtual tree item\n * @param key the key of the item to get the children from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeChildrenGenerator(key, virtualTreeItems) {\n const item = virtualTreeItems.get(key);\n if (!item || item.childrenValues.length === 0) {\n return;\n }\n for (const childValue of item.childrenValues){\n yield virtualTreeItems.get(childValue);\n }\n}\n/**\n * Generator that returns all ancestors of a given virtual tree item\n * @param key the key of the item to get the children from\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeAncestorsGenerator(key, virtualTreeItems) {\n let parent = virtualTreeItems.getParent(key);\n while(parent !== virtualTreeItems.root){\n yield parent;\n parent = virtualTreeItems.getParent(parent.value);\n }\n}\n/**\n * Generator that returns all visible items of a given virtual tree\n * @param openItems the open items of the tree\n */ // eslint-disable-next-line @typescript-eslint/naming-convention\nfunction* HeadlessTreeVisibleItemsGenerator(openItems, virtualTreeItems) {\n let index = 0;\n for (const item of HeadlessTreeSubtreeGenerator(virtualTreeItems.root.value, virtualTreeItems)){\n if (isItemVisible(item, openItems, virtualTreeItems)) {\n item.index = index++;\n yield item;\n }\n }\n}\nfunction isItemVisible(item, openItems, virtualTreeItems) {\n if (item.level === 1) {\n return true;\n }\n while(item.parentValue && item.parentValue !== virtualTreeItems.root.value){\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = virtualTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"names":["createHeadlessTree","headlessTreeRootId","initialProps","root","createHeadlessTreeRootItem","itemsPerValue","Map","value","_itemsPerValue_get_parentValue","_itemsPerValue_get","headlessTree","size","getParent","key","_itemsPerValue_get1","get","parentValue","has","add","props","propsWithoutParentValue","parentItem","process","env","NODE_ENV","console","error","itemType","item","getTreeItemProps","level","position","childrenValues","length","index","push","set","subtree","HeadlessTreeSubtreeGenerator","children","HeadlessTreeChildrenGenerator","ancestors","HeadlessTreeAncestorsGenerator","visibleItems","openItems","HeadlessTreeVisibleItemsGenerator","forEach","undefined","id","virtualTreeItems","childValue","parent","isItemVisible"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-tree",
3
- "version": "9.0.0-beta.28",
3
+ "version": "9.0.0-beta.29",
4
4
  "description": "React components for building web experiences",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -38,15 +38,15 @@
38
38
  "dependencies": {
39
39
  "@fluentui/keyboard-keys": "^9.0.3",
40
40
  "@fluentui/react-aria": "^9.3.27",
41
- "@fluentui/react-avatar": "^9.5.15",
42
- "@fluentui/react-button": "^9.3.25",
43
- "@fluentui/react-checkbox": "^9.1.26",
41
+ "@fluentui/react-avatar": "^9.5.16",
42
+ "@fluentui/react-button": "^9.3.26",
43
+ "@fluentui/react-checkbox": "^9.1.27",
44
44
  "@fluentui/react-context-selector": "^9.1.26",
45
45
  "@fluentui/react-icons": "^2.0.207",
46
- "@fluentui/react-portal": "^9.3.3",
47
- "@fluentui/react-radio": "^9.1.26",
48
- "@fluentui/react-shared-contexts": "^9.6.0",
49
- "@fluentui/react-tabster": "^9.11.0",
46
+ "@fluentui/react-portal": "^9.3.4",
47
+ "@fluentui/react-radio": "^9.1.27",
48
+ "@fluentui/react-shared-contexts": "^9.7.0",
49
+ "@fluentui/react-tabster": "^9.11.1",
50
50
  "@fluentui/react-theme": "^9.1.9",
51
51
  "@fluentui/react-utilities": "^9.10.1",
52
52
  "@fluentui/react-jsx-runtime": "9.0.0-alpha.12",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useHTMLElementWalker.ts"],"sourcesContent":["import { isHTMLElement } from '@fluentui/react-utilities';\nimport * as React from 'react';\n\nexport interface HTMLElementWalker {\n readonly root: HTMLElement;\n currentElement: HTMLElement;\n firstChild(filter?: HTMLElementFilter): HTMLElement | null;\n lastChild(filter?: HTMLElementFilter): HTMLElement | null;\n nextElement(filter?: HTMLElementFilter): HTMLElement | null;\n nextSibling(filter?: HTMLElementFilter): HTMLElement | null;\n parentElement(filter?: HTMLElementFilter): HTMLElement | null;\n previousElement(filter?: HTMLElementFilter): HTMLElement | null;\n previousSibling(filter?: HTMLElementFilter): HTMLElement | null;\n}\n\nexport type HTMLElementFilter = (element: HTMLElement) => number;\n\nexport function createHTMLElementWalker(\n root: HTMLElement,\n filter: HTMLElementFilter = () => NodeFilter.FILTER_ACCEPT,\n): HTMLElementWalker {\n let temporaryFilter: HTMLElementFilter | undefined;\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node) {\n if (!isHTMLElement(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n const filterResult = filter(node);\n return filterResult === NodeFilter.FILTER_ACCEPT ? temporaryFilter?.(node) ?? filterResult : filterResult;\n },\n });\n return {\n get root() {\n return treeWalker.root as HTMLElement;\n },\n get currentElement() {\n return treeWalker.currentNode as HTMLElement;\n },\n set currentElement(element) {\n treeWalker.currentNode = element;\n },\n firstChild: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.firstChild() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n lastChild: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.lastChild() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n nextElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.nextNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n nextSibling: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.nextSibling() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n parentElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.parentNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n previousElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.previousNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n previousSibling: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.previousSibling() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n };\n}\n\nexport const useHTMLElementWalkerRef = (filter?: HTMLElementFilter) => {\n const walkerRef = React.useRef<HTMLElementWalker>();\n\n const rootRefCallback = (element?: HTMLElement) => {\n if (!element) {\n walkerRef.current = undefined;\n return;\n }\n walkerRef.current = createHTMLElementWalker(element, filter);\n };\n return [walkerRef as React.RefObject<HTMLElementWalker>, rootRefCallback as React.Ref<HTMLElement>] as const;\n};\n"],"names":["isHTMLElement","React","createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","FILTER_REJECT","filterResult","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","useHTMLElementWalkerRef","walkerRef","useRef","rootRefCallback","current"],"mappings":"AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,YAAYC,WAAW,QAAQ;AAgB/B,OAAO,SAASC,wBACdC,IAAiB,EACjBC,SAA4B,IAAMC,WAAWC,aAAa,EACvC;IACnB,IAAIC;IACJ,MAAMC,aAAaC,SAASC,gBAAgB,CAACP,MAAME,WAAWM,YAAY,EAAE;QAC1EC,YAAWC,IAAU,EAAE;YACrB,IAAI,CAACb,cAAca,OAAO;gBACxB,OAAOR,WAAWS,aAAa;YACjC,CAAC;YACD,MAAMC,eAAeX,OAAOS;gBACuBN;YAAnD,OAAOQ,iBAAiBV,WAAWC,aAAa,GAAGC,CAAAA,mBAAAA,4BAAAA,6BAAAA,KAAAA,IAAAA,gBAAkBM,mBAAlBN,8BAAAA,mBAA2BQ,YAAY,GAAGA,YAAY;QAC3G;IACF;IACA,OAAO;QACL,IAAIZ,QAAO;YACT,OAAOK,WAAWL,IAAI;QACxB;QACA,IAAIa,kBAAiB;YACnB,OAAOR,WAAWS,WAAW;QAC/B;QACA,IAAID,gBAAeE,QAAS;YAC1BV,WAAWS,WAAW,GAAGC;QAC3B;QACAC,YAAYC,CAAAA,cAAe;YACzBb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWW,UAAU;YACpCZ,kBAAkBe;YAClB,OAAOD;QACT;QACAE,WAAWH,CAAAA,cAAe;YACxBb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWe,SAAS;YACnChB,kBAAkBe;YAClB,OAAOD;QACT;QACAG,aAAaJ,CAAAA,cAAe;YAC1Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWiB,QAAQ;YAClClB,kBAAkBe;YAClB,OAAOD;QACT;QACAK,aAAaN,CAAAA,cAAe;YAC1Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWkB,WAAW;YACrCnB,kBAAkBe;YAClB,OAAOD;QACT;QACAM,eAAeP,CAAAA,cAAe;YAC5Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWoB,UAAU;YACpCrB,kBAAkBe;YAClB,OAAOD;QACT;QACAQ,iBAAiBT,CAAAA,cAAe;YAC9Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWsB,YAAY;YACtCvB,kBAAkBe;YAClB,OAAOD;QACT;QACAU,iBAAiBX,CAAAA,cAAe;YAC9Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWuB,eAAe;YACzCxB,kBAAkBe;YAClB,OAAOD;QACT;IACF;AACF,CAAC;AAED,OAAO,MAAMW,0BAA0B,CAAC5B,SAA+B;IACrE,MAAM6B,YAAYhC,MAAMiC,MAAM;IAE9B,MAAMC,kBAAkB,CAACjB,WAA0B;QACjD,IAAI,CAACA,UAAS;YACZe,UAAUG,OAAO,GAAGd;YACpB;QACF,CAAC;QACDW,UAAUG,OAAO,GAAGlC,wBAAwBgB,UAASd;IACvD;IACA,OAAO;QAAC6B;QAAiDE;KAA0C;AACrG,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["useHTMLElementWalker.js"],"sourcesContent":["import { isHTMLElement } from '@fluentui/react-utilities';\nimport * as React from 'react';\nexport function createHTMLElementWalker(root, filter = ()=>NodeFilter.FILTER_ACCEPT) {\n let temporaryFilter;\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode (node) {\n if (!isHTMLElement(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n const filterResult = filter(node);\n var _temporaryFilter;\n return filterResult === NodeFilter.FILTER_ACCEPT ? (_temporaryFilter = temporaryFilter === null || temporaryFilter === void 0 ? void 0 : temporaryFilter(node)) !== null && _temporaryFilter !== void 0 ? _temporaryFilter : filterResult : filterResult;\n }\n });\n return {\n get root () {\n return treeWalker.root;\n },\n get currentElement () {\n return treeWalker.currentNode;\n },\n set currentElement (element){\n treeWalker.currentNode = element;\n },\n firstChild: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.firstChild();\n temporaryFilter = undefined;\n return result;\n },\n lastChild: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.lastChild();\n temporaryFilter = undefined;\n return result;\n },\n nextElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.nextNode();\n temporaryFilter = undefined;\n return result;\n },\n nextSibling: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.nextSibling();\n temporaryFilter = undefined;\n return result;\n },\n parentElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.parentNode();\n temporaryFilter = undefined;\n return result;\n },\n previousElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.previousNode();\n temporaryFilter = undefined;\n return result;\n },\n previousSibling: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.previousSibling();\n temporaryFilter = undefined;\n return result;\n }\n };\n}\nexport const useHTMLElementWalkerRef = (filter)=>{\n const walkerRef = React.useRef();\n const rootRefCallback = (element1)=>{\n if (!element1) {\n walkerRef.current = undefined;\n return;\n }\n walkerRef.current = createHTMLElementWalker(element1, filter);\n };\n return [\n walkerRef,\n rootRefCallback\n ];\n};\n"],"names":["createHTMLElementWalker","useHTMLElementWalkerRef","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","isHTMLElement","FILTER_REJECT","filterResult","_temporaryFilter","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","walkerRef","React","useRef","rootRefCallback","element1","current"],"mappings":";;;;;;;;;;;IAEgBA,uBAAuB,MAAvBA;IAkEHC,uBAAuB,MAAvBA;;;gCApEiB;6DACP;AAChB,SAASD,wBAAwBE,IAAI,EAAEC,SAAS,IAAIC,WAAWC,aAAa,EAAE;IACjF,IAAIC;IACJ,MAAMC,aAAaC,SAASC,gBAAgB,CAACP,MAAME,WAAWM,YAAY,EAAE;QACxEC,YAAYC,IAAI,EAAE;YACd,IAAI,CAACC,IAAAA,6BAAa,EAACD,OAAO;gBACtB,OAAOR,WAAWU,aAAa;YACnC,CAAC;YACD,MAAMC,eAAeZ,OAAOS;YAC5B,IAAII;YACJ,OAAOD,iBAAiBX,WAAWC,aAAa,GAAG,AAACW,CAAAA,mBAAmBV,oBAAoB,IAAI,IAAIA,oBAAoB,KAAK,IAAI,KAAK,IAAIA,gBAAgBM,KAAK,AAAD,MAAO,IAAI,IAAII,qBAAqB,KAAK,IAAIA,mBAAmBD,YAAY,GAAGA,YAAY;QAC5P;IACJ;IACA,OAAO;QACH,IAAIb,QAAQ;YACR,OAAOK,WAAWL,IAAI;QAC1B;QACA,IAAIe,kBAAkB;YAClB,OAAOV,WAAWW,WAAW;QACjC;QACA,IAAID,gBAAgBE,QAAQ;YACxBZ,WAAWW,WAAW,GAAGC;QAC7B;QACAC,YAAY,CAACC,cAAc;YACvBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWa,UAAU;YACpCd,kBAAkBiB;YAClB,OAAOD;QACX;QACAE,WAAW,CAACH,cAAc;YACtBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWiB,SAAS;YACnClB,kBAAkBiB;YAClB,OAAOD;QACX;QACAG,aAAa,CAACJ,cAAc;YACxBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWmB,QAAQ;YAClCpB,kBAAkBiB;YAClB,OAAOD;QACX;QACAK,aAAa,CAACN,cAAc;YACxBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWoB,WAAW;YACrCrB,kBAAkBiB;YAClB,OAAOD;QACX;QACAM,eAAe,CAACP,cAAc;YAC1Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWsB,UAAU;YACpCvB,kBAAkBiB;YAClB,OAAOD;QACX;QACAQ,iBAAiB,CAACT,cAAc;YAC5Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWwB,YAAY;YACtCzB,kBAAkBiB;YAClB,OAAOD;QACX;QACAU,iBAAiB,CAACX,cAAc;YAC5Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWyB,eAAe;YACzC1B,kBAAkBiB;YAClB,OAAOD;QACX;IACJ;AACJ;AACO,MAAMrB,0BAA0B,CAACE,SAAS;IAC7C,MAAM8B,YAAYC,OAAMC,MAAM;IAC9B,MAAMC,kBAAkB,CAACC,WAAW;QAChC,IAAI,CAACA,UAAU;YACXJ,UAAUK,OAAO,GAAGf;YACpB;QACJ,CAAC;QACDU,UAAUK,OAAO,GAAGtC,wBAAwBqC,UAAUlC;IAC1D;IACA,OAAO;QACH8B;QACAG;KACH;AACL"}